; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x473990 */ | #include | ; (fcn) method.int_BloombergLP::balb::Sequence5::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | uint64_t method_int_BloombergLP::balb::Sequence5::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::balb::Sequence5::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x00473990 push r15 | 0x00473992 push r14 | 0x00473994 push rbx | 0x00473995 sub rsp, 0x50 | 0x00473999 mov r15, rsi | r15 = rsi; 0x0047399c mov r14, rdi | r14 = rdi; 0x0047399f mov r8, qword [rdi + 0xc8] | 0x004739a6 mov rsi, qword [rsi] | rsi = *(rsi); 0x004739a9 mov rdx, qword [r15 + 8] | 0x004739ad mov r10, qword [rip + 0xda694] | r10 = *(str.element1); 0x004739b4 movsxd rdi, dword [rip + 0xda695] | rdi = *(0x0054e050); 0x004739bb mov r9d, dword [rip + 0xda69e] | 0x004739c2 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x004739c6 movzx eax, byte [r15 + 0x18] | eax = *((r15 + 0x18)); 0x004739cb mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004739d0 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x004739d5 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x004739da lea rcx, [rsp + 0x28] | 0x004739df mov qword [rsp + 0x28], r10 | *((rsp + 0x28)) = r10; 0x004739e4 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x004739e9 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x004739ee mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x004739f3 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x004739f7 lea rdi, [rsp + 0x10] | 0x004739fc push rax | 0x004739fd push rbx | 0x004739fe call 0x473d90 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,BloombergLP::balb::Sequence3const&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool,BloombergLP::bdlat_TypeCategory::Sequence) (rsp + 0x10, *(rsi), *((r15 + 8)), rsp + 0x28, *((rdi + 0xc8)), *(0x0054e060)); 0x00473a03 add rsp, 0x10 | 0x00473a07 test eax, eax | 0x00473a09 je 0x473a15 | | while (eax != 0) { | label_0: 0x00473a0b add rsp, 0x50 | 0x00473a0f pop rbx | 0x00473a10 pop r14 | 0x00473a12 pop r15 | 0x00473a14 ret | return eax; 0x00473a15 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x00473a1a je 0x473a22 | 0x00473a1c mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); 0x00473a20 jmp 0x473a29 | | } else { 0x00473a22 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473a27 xor edi, edi | edi = 0; | } 0x00473a29 mov rsi, qword [r15] | rsi = *(r15); 0x00473a2c mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473a30 mov rax, qword [rip + 0xda639] | rax = *(str.element2); 0x00473a37 movsxd rcx, dword [rip + 0xda63a] | rcx = *(0x0054e078); 0x00473a3e mov r9d, dword [rip + 0xda643] | r9d = *(0x0054e088); 0x00473a45 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00473a49 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00473a4e mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00473a53 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00473a58 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00473a5d mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00473a62 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00473a67 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00473a6c mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00473a71 mov rax, qword [r14 + 0x70] | rax = *((r14 + 0x70)); 0x00473a75 cmp rax, qword [r14 + 0x68] | | if (rax == *((r14 + 0x68))) { 0x00473a79 jne 0x473a82 | 0x00473a7b cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00473a80 je 0x473abf | goto label_1; | } | } 0x00473a82 lea r8, [r14 + 0x68] | 0x00473a86 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00473a8b lea rcx, [rsp + 0x28] | 0x00473a90 movzx eax, dil | eax = (int32_t) dil; 0x00473a94 lea rdi, [rsp + 0xf] | 0x00473a99 push rax | 0x00473a9a push r10 | 0x00473a9c call 0x473f00 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember,bsl::allocator>>>(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,bsl::vector,bsl::allocator>>const&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool) (rsp + 0xf, rsi, rdx, rsp + 0x28, r14 + 0x68, r9); 0x00473aa1 add rsp, 0x10 | 0x00473aa5 test eax, eax | 0x00473aa7 jne 0x473a0b | | } 0x00473aad mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473ab2 mov rsi, qword [r15] | rsi = *(r15); 0x00473ab5 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473ab9 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00473abd xor edi, edi | edi = 0; | label_1: 0x00473abf mov rax, qword [rip + 0xda5d2] | rax = *(str.element3); 0x00473ac6 movsxd rcx, dword [rip + 0xda5d3] | rcx = *(0x0054e0a0); 0x00473acd mov r9d, dword [rip + 0xda5dc] | r9d = *(0x0054e0b0); 0x00473ad4 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00473ad9 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00473ade mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00473ae3 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00473ae8 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00473aed mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00473af2 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00473af7 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00473afc mov rax, qword [r14 + 0x30] | rax = *((r14 + 0x30)); 0x00473b00 cmp rax, qword [r14 + 0x28] | | if (rax == *((r14 + 0x28))) { 0x00473b04 jne 0x473b0d | 0x00473b06 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00473b0b je 0x473b4a | goto label_2; | } | } 0x00473b0d lea r8, [r14 + 0x28] | 0x00473b11 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00473b16 lea rcx, [rsp + 0x28] | 0x00473b1b movzx eax, dil | eax = (int32_t) dil; 0x00473b1f lea rdi, [rsp + 0xf] | 0x00473b24 push rax | 0x00473b25 push r10 | 0x00473b27 call 0x474160 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember,bsl::allocator>>>(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,bsl::vector,bsl::allocator>>const&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool) (rsp + 0xf, rsi, rdx, rsp + 0x28, r14 + 0x28, r9); 0x00473b2c add rsp, 0x10 | 0x00473b30 test eax, eax | | if (eax != 0) { 0x00473b32 jne 0x473a0b | goto label_0; | } 0x00473b38 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473b3d mov rsi, qword [r15] | rsi = *(r15); 0x00473b40 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473b44 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00473b48 xor edi, edi | edi = 0; | label_2: 0x00473b4a mov rax, qword [rip + 0xda56f] | rax = *(str.element4); 0x00473b51 movsxd rcx, dword [rip + 0xda570] | rcx = *(0x0054e0c8); 0x00473b58 mov r9d, dword [rip + 0xda579] | r9d = *(0x0054e0d8); 0x00473b5f mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00473b64 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00473b69 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00473b6e mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00473b73 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00473b78 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00473b7d mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00473b82 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00473b87 mov rax, qword [r14 + 0x50] | rax = *((r14 + 0x50)); 0x00473b8b cmp rax, qword [r14 + 0x48] | | if (rax == *((r14 + 0x48))) { 0x00473b8f jne 0x473b98 | 0x00473b91 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00473b96 je 0x473bd5 | goto label_3; | } | } 0x00473b98 lea r8, [r14 + 0x48] | r8 = r14 + 0x48; 0x00473b9c mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00473ba1 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00473ba6 movzx eax, dil | eax = (int32_t) dil; 0x00473baa lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00473baf push rax | 0x00473bb0 push r10 | 0x00473bb2 call 0x474560 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS4_IcNS3_9allocatorIcEEEEEENS7_ISA_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRKNS0_14E (); 0x00473bb7 add rsp, 0x10 | 0x00473bbb test eax, eax | | if (eax != 0) { 0x00473bbd jne 0x473a0b | goto label_0; | } 0x00473bc3 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473bc8 mov rsi, qword [r15] | rsi = *(r15); 0x00473bcb mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473bcf mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00473bd3 xor edi, edi | edi = 0; | label_3: 0x00473bd5 mov rax, qword [rip + 0xda50c] | rax = *(str.element5); 0x00473bdc movsxd rcx, dword [rip + 0xda50d] | rcx = *(0x0054e0f0); 0x00473be3 mov r9d, dword [rip + 0xda516] | r9d = *(0x0054e100); 0x00473bea mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00473bef mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00473bf4 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00473bf9 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00473bfe mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00473c03 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00473c08 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00473c0d mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00473c12 mov rax, qword [r14 + 0x10] | rax = *((r14 + 0x10)); 0x00473c16 cmp rax, qword [r14 + 8] | | if (rax == *((r14 + 8))) { 0x00473c1a jne 0x473c23 | 0x00473c1c cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00473c21 je 0x473c60 | goto label_4; | } | } 0x00473c23 lea r8, [r14 + 8] | 0x00473c27 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00473c2c lea rcx, [rsp + 0x28] | 0x00473c31 movzx eax, dil | eax = (int32_t) dil; 0x00473c35 lea rdi, [rsp + 0xf] | 0x00473c3a push rax | 0x00473c3b push r10 | 0x00473c3d call 0x474810 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember,bsl::allocator>>>(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,bsl::vector,bsl::allocator>>const&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool) (rsp + 0xf, rsi, rdx, rsp + 0x28, r14 + 8, r9); 0x00473c42 add rsp, 0x10 | 0x00473c46 test eax, eax | | if (eax != 0) { 0x00473c48 jne 0x473a0b | goto label_0; | } 0x00473c4e mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473c53 mov rsi, qword [r15] | rsi = *(r15); 0x00473c56 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473c5a mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00473c5e xor edi, edi | edi = 0; | label_4: 0x00473c60 mov rax, qword [rip + 0xda4a9] | rax = *(str.element6); 0x00473c67 movsxd rcx, dword [rip + 0xda4aa] | rcx = *(0x0054e118); 0x00473c6e mov r9d, dword [rip + 0xda4b3] | r9d = *(0x0054e128); 0x00473c75 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00473c7a mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00473c7f mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00473c84 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00473c89 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00473c8e mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00473c93 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00473c98 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00473c9d mov rax, qword [r14 + 0x90] | rax = *((r14 + 0x90)); 0x00473ca4 cmp rax, qword [r14 + 0x88] | | if (rax == *((r14 + 0x88))) { 0x00473cab jne 0x473cb4 | 0x00473cad cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00473cb2 je 0x473cf4 | goto label_5; | } | } 0x00473cb4 lea r8, [r14 + 0x88] | r8 = r14 + 0x88; 0x00473cbb mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00473cc0 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00473cc5 movzx eax, dil | eax = (int32_t) dil; 0x00473cc9 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00473cce push rax | 0x00473ccf push r10 | 0x00473cd1 call 0x474a70 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_4bdlt10DatetimeTzEEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRKNS (); 0x00473cd6 add rsp, 0x10 | 0x00473cda test eax, eax | | if (eax != 0) { 0x00473cdc jne 0x473a0b | goto label_0; | } 0x00473ce2 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473ce7 mov rsi, qword [r15] | rsi = *(r15); 0x00473cea mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473cee mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00473cf2 xor edi, edi | edi = 0; | label_5: 0x00473cf4 mov rax, qword [rip + 0xda43d] | rax = *(str.element7); 0x00473cfb movsxd rcx, dword [rip + 0xda43e] | rcx = *(0x0054e140); 0x00473d02 mov r9d, dword [rip + 0xda447] | r9d = *(0x0054e150); 0x00473d09 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00473d0e mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00473d13 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00473d18 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00473d1d mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00473d22 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00473d27 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00473d2c mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00473d31 mov rcx, qword [r14 + 0xb0] | rcx = *((r14 + 0xb0)); 0x00473d38 xor eax, eax | eax = 0; 0x00473d3a cmp rcx, qword [r14 + 0xa8] | | if (rcx != *((r14 + 0xa8))) { 0x00473d41 jne 0x473d4e | goto label_6; | } 0x00473d43 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00473d48 je 0x473a0b | goto label_0; | } | label_6: 0x00473d4e add r14, 0xa8 | r14 += 0xa8; 0x00473d55 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00473d5a lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00473d5f movzx eax, dil | eax = (int32_t) dil; 0x00473d63 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00473d68 mov r8, r14 | r8 = r14; 0x00473d6b push rax | 0x00473d6c push r10 | 0x00473d6e call 0x474e50 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb22NullableAllocatedValueINS_4balb9Sequence3EEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERK (); 0x00473d73 add rsp, 0x10 | 0x00473d77 test eax, eax | | if (eax != 0) { 0x00473d79 jne 0x473a0b | goto label_0; | } 0x00473d7f mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473d84 xor eax, eax | eax = 0; 0x00473d86 jmp 0x473a0b | goto label_0; | }