; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x473ad0 */ | #include | ; (fcn) method.int_BloombergLP::balb::Sequence5::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | int64_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_7h; | uint32_t var_8h; | int64_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; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balb::Sequence5::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x00473ad0 push rbp | 0x00473ad1 push r15 | 0x00473ad3 push r14 | 0x00473ad5 push rbx | 0x00473ad6 sub rsp, 0x48 | 0x00473ada mov r15, rsi | r15 = rsi; 0x00473add mov r14, rdi | r14 = rdi; 0x00473ae0 mov r8, qword [rdi + 0xc8] | 0x00473ae7 mov rsi, qword [rsi] | rsi = *(rsi); 0x00473aea mov rdx, qword [r15 + 8] | 0x00473aee mov rax, qword [rip + 0xd9f43] | rax = *(str.element1); 0x00473af5 movsxd rdi, dword [rip + 0xd9f44] | rdi = *(0x0054da40); 0x00473afc mov r9d, dword [rip + 0xd9f4d] | 0x00473b03 mov rbp, qword [r15 + 0x10] | rbp = *((r15 + 0x10)); 0x00473b07 movzx ebx, byte [r15 + 0x18] | ebx = *((r15 + 0x18)); 0x00473b0c mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00473b11 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x00473b16 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x00473b1b lea rcx, [rsp + 0x20] | 0x00473b20 mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x00473b25 mov qword [rsp + 0x28], rdi | *((rsp + 0x28)) = rdi; 0x00473b2a mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x00473b2f mov qword [rsp + 0x38], rbp | *((rsp + 0x38)) = rbp; 0x00473b34 mov byte [rsp + 0x40], bl | *((rsp + 0x40)) = bl; 0x00473b38 lea rdi, [rsp + 8] | 0x00473b3d push rbx | 0x00473b3e push rbp | 0x00473b3f call 0x473ec0 | 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 + 8, *(rsi), *((r15 + 8)), rsp + 0x20, *((rdi + 0xc8)), *(0x0054da50)); 0x00473b44 add rsp, 0x10 | 0x00473b48 test eax, eax | 0x00473b4a je 0x473b57 | | while (eax != 0) { | label_0: 0x00473b4c add rsp, 0x48 | 0x00473b50 pop rbx | 0x00473b51 pop r14 | 0x00473b53 pop r15 | 0x00473b55 pop rbp | 0x00473b56 ret | return rax; 0x00473b57 cmp byte [rsp + 8], 0 | | if (*((rsp + 8)) != 0) { 0x00473b5c je 0x473b64 | 0x00473b5e mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); 0x00473b62 jmp 0x473b6b | | } else { 0x00473b64 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473b69 xor edi, edi | edi = 0; | } 0x00473b6b mov rsi, qword [r15] | rsi = *(r15); 0x00473b6e mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473b72 mov rcx, qword [rip + 0xd9ee7] | rcx = *(str.element2); 0x00473b79 movsxd rbp, dword [rip + 0xd9ee8] | rbp = *(0x0054da68); 0x00473b80 mov r9d, dword [rip + 0xd9ef1] | r9d = *(0x0054da78); 0x00473b87 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x00473b8b mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00473b90 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x00473b95 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x00473b9a mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x00473b9f mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x00473ba4 mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x00473ba9 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x00473bae mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x00473bb3 mov rcx, qword [r14 + 0x70] | rcx = *((r14 + 0x70)); 0x00473bb7 cmp rcx, qword [r14 + 0x68] | | if (rcx == *((r14 + 0x68))) { 0x00473bbb jne 0x473bc3 | 0x00473bbd cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00473bc1 je 0x473bff | goto label_1; | } | } 0x00473bc3 lea r8, [r14 + 0x68] | 0x00473bc7 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x00473bcc lea rcx, [rsp + 0x20] | 0x00473bd1 movzx ebp, dil | ebp = (int32_t) dil; 0x00473bd5 lea rdi, [rsp + 7] | 0x00473bda push rbp | 0x00473bdb push rax | 0x00473bdc call 0x474030 | 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 + 7, rsi, rdx, rsp + 0x20, r14 + 0x68, r9); 0x00473be1 add rsp, 0x10 | 0x00473be5 test eax, eax | 0x00473be7 jne 0x473b4c | | } 0x00473bed mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473bf2 mov rsi, qword [r15] | rsi = *(r15); 0x00473bf5 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473bf9 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x00473bfd xor edi, edi | edi = 0; | label_1: 0x00473bff mov rcx, qword [rip + 0xd9e82] | rcx = *(str.element3); 0x00473c06 movsxd rbp, dword [rip + 0xd9e83] | rbp = *(0x0054da90); 0x00473c0d mov r9d, dword [rip + 0xd9e8c] | r9d = *(0x0054daa0); 0x00473c14 mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00473c19 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x00473c1e mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x00473c23 mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x00473c28 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x00473c2d mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x00473c32 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x00473c37 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x00473c3c mov rcx, qword [r14 + 0x30] | rcx = *((r14 + 0x30)); 0x00473c40 cmp rcx, qword [r14 + 0x28] | | if (rcx == *((r14 + 0x28))) { 0x00473c44 jne 0x473c4c | 0x00473c46 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00473c4a je 0x473c88 | goto label_2; | } | } 0x00473c4c lea r8, [r14 + 0x28] | 0x00473c50 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x00473c55 lea rcx, [rsp + 0x20] | 0x00473c5a movzx ebp, dil | ebp = (int32_t) dil; 0x00473c5e lea rdi, [rsp + 7] | 0x00473c63 push rbp | 0x00473c64 push rax | 0x00473c65 call 0x474290 | 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 + 7, rsi, rdx, rsp + 0x20, r14 + 0x28, r9); 0x00473c6a add rsp, 0x10 | 0x00473c6e test eax, eax | | if (eax != 0) { 0x00473c70 jne 0x473b4c | goto label_0; | } 0x00473c76 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473c7b mov rsi, qword [r15] | rsi = *(r15); 0x00473c7e mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473c82 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x00473c86 xor edi, edi | edi = 0; | label_2: 0x00473c88 mov rcx, qword [rip + 0xd9e21] | rcx = *(str.element4); 0x00473c8f movsxd rbp, dword [rip + 0xd9e22] | rbp = *(0x0054dab8); 0x00473c96 mov r9d, dword [rip + 0xd9e2b] | r9d = *(0x0054dac8); 0x00473c9d mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00473ca2 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x00473ca7 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x00473cac mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x00473cb1 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x00473cb6 mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x00473cbb mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x00473cc0 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x00473cc5 mov rcx, qword [r14 + 0x50] | rcx = *((r14 + 0x50)); 0x00473cc9 cmp rcx, qword [r14 + 0x48] | | if (rcx == *((r14 + 0x48))) { 0x00473ccd jne 0x473cd5 | 0x00473ccf cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00473cd3 je 0x473d11 | goto label_3; | } | } 0x00473cd5 lea r8, [r14 + 0x48] | r8 = r14 + 0x48; 0x00473cd9 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x00473cde lea rcx, [rsp + 0x20] | rcx = rsp + 0x20; 0x00473ce3 movzx ebp, dil | ebp = (int32_t) dil; 0x00473ce7 lea rdi, [rsp + 7] | rdi = rsp + 7; 0x00473cec push rbp | 0x00473ced push rax | 0x00473cee call 0x474690 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS4_IcNS3_9allocatorIcEEEEEENS7_ISA_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRKNS0_14E (); 0x00473cf3 add rsp, 0x10 | 0x00473cf7 test eax, eax | | if (eax != 0) { 0x00473cf9 jne 0x473b4c | goto label_0; | } 0x00473cff mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473d04 mov rsi, qword [r15] | rsi = *(r15); 0x00473d07 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473d0b mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x00473d0f xor edi, edi | edi = 0; | label_3: 0x00473d11 mov rcx, qword [rip + 0xd9dc0] | rcx = *(str.element5); 0x00473d18 movsxd rbp, dword [rip + 0xd9dc1] | rbp = *(0x0054dae0); 0x00473d1f mov r9d, dword [rip + 0xd9dca] | r9d = *(0x0054daf0); 0x00473d26 mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00473d2b mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x00473d30 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x00473d35 mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x00473d3a mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x00473d3f mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x00473d44 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x00473d49 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x00473d4e mov rcx, qword [r14 + 0x10] | rcx = *((r14 + 0x10)); 0x00473d52 cmp rcx, qword [r14 + 8] | | if (rcx == *((r14 + 8))) { 0x00473d56 jne 0x473d5e | 0x00473d58 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00473d5c je 0x473d9a | goto label_4; | } | } 0x00473d5e lea r8, [r14 + 8] | 0x00473d62 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x00473d67 lea rcx, [rsp + 0x20] | 0x00473d6c movzx ebp, dil | ebp = (int32_t) dil; 0x00473d70 lea rdi, [rsp + 7] | 0x00473d75 push rbp | 0x00473d76 push rax | 0x00473d77 call 0x474940 | 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 + 7, rsi, rdx, rsp + 0x20, r14 + 8, r9); 0x00473d7c add rsp, 0x10 | 0x00473d80 test eax, eax | | if (eax != 0) { 0x00473d82 jne 0x473b4c | goto label_0; | } 0x00473d88 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473d8d mov rsi, qword [r15] | rsi = *(r15); 0x00473d90 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473d94 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x00473d98 xor edi, edi | edi = 0; | label_4: 0x00473d9a mov rcx, qword [rip + 0xd9d5f] | rcx = *(str.element6); 0x00473da1 movsxd rbp, dword [rip + 0xd9d60] | rbp = *(0x0054db08); 0x00473da8 mov r9d, dword [rip + 0xd9d69] | r9d = *(0x0054db18); 0x00473daf mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00473db4 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x00473db9 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x00473dbe mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x00473dc3 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x00473dc8 mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x00473dcd mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x00473dd2 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x00473dd7 mov rcx, qword [r14 + 0x90] | rcx = *((r14 + 0x90)); 0x00473dde cmp rcx, qword [r14 + 0x88] | | if (rcx == *((r14 + 0x88))) { 0x00473de5 jne 0x473ded | 0x00473de7 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00473deb je 0x473e2c | goto label_5; | } | } 0x00473ded lea r8, [r14 + 0x88] | r8 = r14 + 0x88; 0x00473df4 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x00473df9 lea rcx, [rsp + 0x20] | rcx = rsp + 0x20; 0x00473dfe movzx ebp, dil | ebp = (int32_t) dil; 0x00473e02 lea rdi, [rsp + 7] | rdi = rsp + 7; 0x00473e07 push rbp | 0x00473e08 push rax | 0x00473e09 call 0x474ba0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_4bdlt10DatetimeTzEEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRKNS (); 0x00473e0e add rsp, 0x10 | 0x00473e12 test eax, eax | | if (eax != 0) { 0x00473e14 jne 0x473b4c | goto label_0; | } 0x00473e1a mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00473e1f mov rsi, qword [r15] | rsi = *(r15); 0x00473e22 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00473e26 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x00473e2a xor edi, edi | edi = 0; | label_5: 0x00473e2c mov rcx, qword [rip + 0xd9cf5] | rcx = *(str.element7); 0x00473e33 movsxd rbp, dword [rip + 0xd9cf6] | rbp = *(0x0054db30); 0x00473e3a mov r9d, dword [rip + 0xd9cff] | r9d = *(0x0054db40); 0x00473e41 mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00473e46 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x00473e4b mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x00473e50 mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x00473e55 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x00473e5a mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x00473e5f mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x00473e64 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x00473e69 mov rcx, qword [r14 + 0xb0] | rcx = *((r14 + 0xb0)); 0x00473e70 xor ebp, ebp | ebp = 0; 0x00473e72 cmp rcx, qword [r14 + 0xa8] | | if (rcx == *((r14 + 0xa8))) { 0x00473e79 jne 0x473e81 | 0x00473e7b cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00473e7f je 0x473eb6 | goto label_6; | } | } 0x00473e81 add r14, 0xa8 | r14 += 0xa8; 0x00473e88 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x00473e8d lea rcx, [rsp + 0x20] | rcx = rsp + 0x20; 0x00473e92 movzx ebx, dil | ebx = (int32_t) dil; 0x00473e96 lea rdi, [rsp + 7] | rdi = rsp + 7; 0x00473e9b mov r8, r14 | r8 = r14; 0x00473e9e push rbx | 0x00473e9f push rax | 0x00473ea0 call 0x474f90 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb22NullableAllocatedValueINS_4balb9Sequence3EEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERK (); 0x00473ea5 add rsp, 0x10 | 0x00473ea9 test eax, eax | | if (eax != 0) { 0x00473eab je 0x473eb1 | 0x00473ead mov ebp, eax | 0x00473eaf jmp 0x473eb6 | | } else { 0x00473eb1 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; | } | label_6: 0x00473eb6 mov eax, ebp | eax = ebp; 0x00473eb8 jmp 0x473b4c | goto label_0; | }