; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x47d1c0 */ | #include | ; (fcn) method.int_BloombergLP::s_baltst::Sequence2::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | int64_t method_int_BloombergLP::s_baltst::Sequence2::accessAttributes_BloombergLP::baljsn_Encoder_AttributeVisitor_BloombergLP::baljsn::Encoder_AttributeVisitor_const (int64_t arg2, int64_t arg1) { | int64_t var_fh; | uint32_t var_10h; | int64_t var_18h; | int64_t var_20h; | int64_t var_28h; | int64_t var_30h; | int64_t var_38h; | int64_t var_40h; | int64_t var_48h; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::s_baltst::Sequence2::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x0047d1c0 push rbp | 0x0047d1c1 push r15 | 0x0047d1c3 push r14 | 0x0047d1c5 push r12 | 0x0047d1c7 push rbx | 0x0047d1c8 sub rsp, 0x50 | 0x0047d1cc mov r12, rsi | r12 = rsi; 0x0047d1cf mov r14, rdi | r14 = rdi; 0x0047d1d2 mov rsi, qword [rsi] | rsi = *(rsi); 0x0047d1d5 mov rdx, qword [r12 + 8] | rdx = *((r12 + 8)); 0x0047d1da mov rax, qword [rip + 0x1cc1a7] | rax = *(str.element1); 0x0047d1e1 movsxd rdi, dword [rip + 0x1cc1a8] | rdi = *(0x00649390); 0x0047d1e8 mov r9d, dword [rip + 0x1cc1b1] | r9d = *(0x006493a0); 0x0047d1ef mov rbp, qword [r12 + 0x10] | rbp = *((r12 + 0x10)); 0x0047d1f4 movzx ebx, byte [r12 + 0x18] | ebx = *((r12 + 0x18)); 0x0047d1fa mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d1ff mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d204 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d209 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047d20e mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0047d213 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047d218 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d21d mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x0047d222 mov byte [rsp + 0x48], bl | *((rsp + 0x48)) = bl; 0x0047d226 lea r8, [r14 + 0x88] | r8 = r14 + 0x88; 0x0047d22d lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0047d232 push rbx | 0x0047d233 push rbp | 0x0047d234 call 0x464a80 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS_18bdlat_TypeCategory6SimpleEEEiPbPNS0_9FormatterEPNS5_13basic_ostreamIcS7_EERKNS5_17basic_string_viewIcS7_EERKT_iRKNS0_14Enc (); 0x0047d239 add rsp, 0x10 | 0x0047d23d test eax, eax | | if (eax == 0) { 0x0047d23f jne 0x47d252 | 0x0047d241 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x0047d246 jne 0x47d252 | 0x0047d248 mov byte [r12 + 0x18], 0 | *((r12 + 0x18)) = 0; 0x0047d24e xor eax, eax | eax = 0; 0x0047d250 jmp 0x47d25f | | } | } else { 0x0047d252 test eax, eax | | if (eax != 0) { 0x0047d254 jne 0x47d597 | goto label_0; | } 0x0047d25a mov al, byte [r12 + 0x18] | al = *((r12 + 0x18)); | } 0x0047d25f lea rdi, [r14 + 0xb8] | 0x0047d266 movups xmm0, xmmword [r12] | __asm ("movups xmm0, xmmword [r12]"); 0x0047d26b mov rcx, qword [rip + 0x1cc13e] | rcx = *(str.element2); 0x0047d272 movsxd rdx, dword [rip + 0x1cc13f] | rdx = *(0x006493b8); 0x0047d279 mov esi, dword [rip + 0x1cc149] | esi = *(0x006493c8); 0x0047d27f mov rbp, qword [r12 + 0x10] | rbp = *((r12 + 0x10)); 0x0047d284 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d289 movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x0047d28e mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047d293 mov qword [rsp + 0x30], rdx | *((rsp + 0x30)) = rdx; 0x0047d298 mov dword [rsp + 0x38], esi | *((rsp + 0x38)) = esi; 0x0047d29c mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x0047d2a1 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047d2a5 lea rsi, [rsp + 0x10] | 0x0047d2aa call 0x477540 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(unsignedchar const&,BloombergLP::baljsn::Encoder_AttributeDispatcher&) (r14 + 0xb8, rsp + 0x10); 0x0047d2af test eax, eax | | if (eax == 0) { 0x0047d2b1 jne 0x47d2c4 | 0x0047d2b3 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x0047d2b8 jne 0x47d2c4 | 0x0047d2ba mov byte [r12 + 0x18], 0 | *((r12 + 0x18)) = 0; 0x0047d2c0 xor eax, eax | eax = 0; 0x0047d2c2 jmp 0x47d2d1 | | } | } else { 0x0047d2c4 test eax, eax | | if (eax != 0) { 0x0047d2c6 jne 0x47d597 | goto label_0; | } 0x0047d2cc mov al, byte [r12 + 0x18] | al = *((r12 + 0x18)); | } 0x0047d2d1 lea r8, [r14 + 0x40] | 0x0047d2d5 mov rsi, qword [r12] | 0x0047d2d9 mov rdx, qword [r12 + 8] | 0x0047d2de mov rdi, qword [rip + 0x1cc0f3] | rdi = *(str.element3); 0x0047d2e5 movsxd rbp, dword [rip + 0x1cc0f4] | rbp = *(0x006493e0); 0x0047d2ec mov r9d, dword [rip + 0x1cc0fd] | 0x0047d2f3 mov rbx, qword [r12 + 0x10] | rbx = *((r12 + 0x10)); 0x0047d2f8 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d2fd mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d302 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d307 lea rcx, [rsp + 0x28] | 0x0047d30c mov qword [rsp + 0x28], rdi | *((rsp + 0x28)) = rdi; 0x0047d311 mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x0047d316 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d31b mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x0047d320 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047d324 movzx eax, al | eax = (int32_t) al; 0x0047d327 lea rdi, [rsp + 0x10] | 0x0047d32c push rax | 0x0047d32d push rbx | 0x0047d32e call 0x47d5b0 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,BloombergLP::bdlt::DatetimeTzconst&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool,BloombergLP::bdlat_TypeCategory::Simple) (rsp + 0x10, *(r12), *((r12 + 8)), rsp + 0x28, r14 + 0x40, *(0x006493f0)); 0x0047d333 add rsp, 0x10 | 0x0047d337 test eax, eax | | if (eax == 0) { 0x0047d339 jne 0x47d34c | 0x0047d33b cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x0047d340 jne 0x47d34c | 0x0047d342 mov byte [r12 + 0x18], 0 | *((r12 + 0x18)) = 0; 0x0047d348 xor eax, eax | eax = 0; 0x0047d34a jmp 0x47d359 | | } | } else { 0x0047d34c test eax, eax | | if (eax != 0) { 0x0047d34e jne 0x47d597 | goto label_0; | } 0x0047d354 mov al, byte [r12 + 0x18] | al = *((r12 + 0x18)); | } 0x0047d359 mov rsi, qword [r12] | rsi = *(r12); 0x0047d35d mov rdx, qword [r12 + 8] | rdx = *((r12 + 8)); 0x0047d362 mov rcx, qword [rip + 0x1cc097] | rcx = *(str.element4); 0x0047d369 movsxd rdi, dword [rip + 0x1cc098] | rdi = *(0x00649408); 0x0047d370 mov r9d, dword [rip + 0x1cc0a1] | r9d = .comment; 0x0047d377 mov rbp, qword [r12 + 0x10] | rbp = *((r12 + 0x10)); 0x0047d37c mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d381 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d386 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d38b mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047d390 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047d395 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d39a mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x0047d39f mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047d3a3 cmp byte [r14 + 0x78], 0 | | if (*((r14 + 0x78)) == 0) { 0x0047d3a8 jne 0x47d3b0 | 0x0047d3aa cmp byte [rbp + 0x19], 0 | | if (*((rbp + 0x19)) == 0) { 0x0047d3ae je 0x47d3ea | goto label_1; | } | } 0x0047d3b0 lea r8, [r14 + 0x60] | 0x0047d3b4 lea rcx, [rsp + 0x28] | 0x0047d3b9 movzx eax, al | eax = (int32_t) al; 0x0047d3bc lea rdi, [rsp + 0x10] | 0x0047d3c1 push rax | 0x0047d3c2 push rbp | 0x0047d3c3 call 0x47d720 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember,BloombergLP::bdlat_TypeCategory::NullableValue>(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,BloombergLP::bdlb::NullableValueconst&,int) (rsp + 0x10, rsi, rdx, rsp + 0x28, r14 + 0x60, r9); 0x0047d3c8 add rsp, 0x10 | 0x0047d3cc test eax, eax | | if (eax == 0) { 0x0047d3ce jne 0x47d597 | 0x0047d3d4 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x0047d3d9 je 0x47d3e2 | 0x0047d3db mov al, byte [r12 + 0x18] | al = *((r12 + 0x18)); 0x0047d3e0 jmp 0x47d3ea | | } else { 0x0047d3e2 mov byte [r12 + 0x18], 0 | *((r12 + 0x18)) = 0; 0x0047d3e8 xor eax, eax | eax = 0; | } | label_1: 0x0047d3ea mov rsi, qword [r12] | rsi = *(r12); 0x0047d3ee mov rdx, qword [r12 + 8] | rdx = *((r12 + 8)); 0x0047d3f3 mov rcx, qword [rip + 0x1cc02e] | rcx = *(str.element5); 0x0047d3fa movsxd rdi, dword [rip + 0x1cc02f] | rdi = *(0x00649430); 0x0047d401 mov r9d, dword [rip + 0x1cc038] | r9d = .comment; 0x0047d408 mov rbp, qword [r12 + 0x10] | rbp = *((r12 + 0x10)); 0x0047d40d mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d412 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d417 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d41c mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047d421 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047d426 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d42b mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x0047d430 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047d434 cmp byte [r14 + 0x58], 0 | | if (*((r14 + 0x58)) == 0) { 0x0047d439 jne 0x47d441 | 0x0047d43b cmp byte [rbp + 0x19], 0 | | if (*((rbp + 0x19)) == 0) { 0x0047d43f je 0x47d47b | goto label_2; | } | } 0x0047d441 lea r8, [r14 + 0x50] | r8 = r14 + 0x50; 0x0047d445 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047d44a movzx eax, al | eax = (int32_t) al; 0x0047d44d lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0047d452 push rax | 0x0047d453 push rbp | 0x0047d454 call 0x47d890 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIdEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x0047d459 add rsp, 0x10 | 0x0047d45d test eax, eax | | if (eax != 0) { 0x0047d45f jne 0x47d597 | goto label_0; | } 0x0047d465 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x0047d46a je 0x47d473 | 0x0047d46c mov al, byte [r12 + 0x18] | al = *((r12 + 0x18)); 0x0047d471 jmp 0x47d47b | | } else { 0x0047d473 mov byte [r12 + 0x18], 0 | *((r12 + 0x18)) = 0; 0x0047d479 xor eax, eax | eax = 0; | } | label_2: 0x0047d47b mov rsi, qword [r12] | rsi = *(r12); 0x0047d47f mov rdx, qword [r12 + 8] | rdx = *((r12 + 8)); 0x0047d484 mov rcx, qword [rip + 0x1cbfc5] | rcx = *(str.element6); 0x0047d48b movsxd rdi, dword [rip + 0x1cbfc6] | rdi = *(0x00649458); 0x0047d492 mov r9d, dword [rip + 0x1cbfcf] | r9d = *(0x00649468); 0x0047d499 mov rbp, qword [r12 + 0x10] | rbp = *((r12 + 0x10)); 0x0047d49e mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d4a3 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d4a8 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d4ad mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047d4b2 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047d4b7 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d4bc mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x0047d4c1 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047d4c5 mov rcx, qword [r14 + 8] | rcx = *((r14 + 8)); 0x0047d4c9 cmp rcx, qword [r14] | | if (rcx == *(r14)) { 0x0047d4cc jne 0x47d4d4 | 0x0047d4ce cmp byte [rbp + 0x18], 0 | | if (*((rbp + 0x18)) == 0) { 0x0047d4d2 je 0x47d512 | goto label_3; | } | } 0x0047d4d4 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047d4d9 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047d4de movzx eax, al | eax = (int32_t) al; 0x0047d4e1 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047d4e6 mov r8, r14 | r8 = r14; 0x0047d4e9 push rax | 0x0047d4ea push rbp | 0x0047d4eb call 0x47da00 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS3_12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEEEENSB_ISE_EEEEEEiPbPNS0_9FormatterEPNS8_13basic_ostreamIcSA_EERKNS8_17basic_string_viewIcSA (); 0x0047d4f0 add rsp, 0x10 | 0x0047d4f4 test eax, eax | | if (eax != 0) { 0x0047d4f6 jne 0x47d597 | goto label_0; | } 0x0047d4fc mov byte [r12 + 0x18], 0 | *((r12 + 0x18)) = 0; 0x0047d502 mov rsi, qword [r12] | rsi = *(r12); 0x0047d506 mov rdx, qword [r12 + 8] | rdx = *((r12 + 8)); 0x0047d50b mov rbp, qword [r12 + 0x10] | rbp = *((r12 + 0x10)); 0x0047d510 xor eax, eax | eax = 0; | label_3: 0x0047d512 mov rcx, qword [rip + 0x1cbf5f] | rcx = *(str.element7); 0x0047d519 movsxd rdi, dword [rip + 0x1cbf60] | rdi = *(0x00649480); 0x0047d520 mov r9d, dword [rip + 0x1cbf69] | r9d = *(0x00649490); 0x0047d527 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d52c mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d531 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d536 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047d53b mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047d540 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d545 mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x0047d54a mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047d54e mov rcx, qword [r14 + 0x28] | rcx = *((r14 + 0x28)); 0x0047d552 xor r15d, r15d | r15d = 0; 0x0047d555 cmp rcx, qword [r14 + 0x20] | | if (rcx == *((r14 + 0x20))) { 0x0047d559 jne 0x47d561 | 0x0047d55b cmp byte [rbp + 0x18], 0 | | if (*((rbp + 0x18)) == 0) { 0x0047d55f je 0x47d594 | goto label_4; | } | } 0x0047d561 add r14, 0x20 | r14 += 0x20; 0x0047d565 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047d56a lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047d56f movzx eax, al | eax = (int32_t) al; 0x0047d572 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047d577 mov r8, r14 | r8 = r14; 0x0047d57a push rax | 0x0047d57b push rbp | 0x0047d57c call 0x47dc60 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_8s_baltst12CustomStringEEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT (); 0x0047d581 add rsp, 0x10 | 0x0047d585 test eax, eax | | if (eax != 0) { 0x0047d587 je 0x47d58e | 0x0047d589 mov r15d, eax | r15d = eax; 0x0047d58c jmp 0x47d594 | | } else { 0x0047d58e mov byte [r12 + 0x18], 0 | *((r12 + 0x18)) = 0; | } | label_4: 0x0047d594 mov eax, r15d | eax = r15d; | } | label_0: 0x0047d597 add rsp, 0x50 | 0x0047d59b pop rbx | 0x0047d59c pop r12 | 0x0047d59e pop r14 | 0x0047d5a0 pop r15 | 0x0047d5a2 pop rbp | 0x0047d5a3 ret | return rax; | }