; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x47a810 */ | #include | ; (fcn) method.int_BloombergLP::s_baltst::Sequence5::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | int64_t method_int_BloombergLP::s_baltst::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::s_baltst::Sequence5::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x0047a810 push rbp | 0x0047a811 push r15 | 0x0047a813 push r14 | 0x0047a815 push rbx | 0x0047a816 sub rsp, 0x48 | 0x0047a81a mov r15, rsi | r15 = rsi; 0x0047a81d mov r14, rdi | r14 = rdi; 0x0047a820 mov r8, qword [rdi + 0xc8] | 0x0047a827 mov rsi, qword [rsi] | rsi = *(rsi); 0x0047a82a mov rdx, qword [r15 + 8] | 0x0047a82e mov rax, qword [rip + 0x1cf093] | rax = *(str.element1); 0x0047a835 movsxd rdi, dword [rip + 0x1cf094] | rdi = *(0x006498d0); 0x0047a83c mov r9d, dword [rip + 0x1cf09d] | 0x0047a843 mov rbp, qword [r15 + 0x10] | rbp = *((r15 + 0x10)); 0x0047a847 movzx ebx, byte [r15 + 0x18] | ebx = *((r15 + 0x18)); 0x0047a84c mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0047a851 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x0047a856 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x0047a85b lea rcx, [rsp + 0x20] | 0x0047a860 mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x0047a865 mov qword [rsp + 0x28], rdi | *((rsp + 0x28)) = rdi; 0x0047a86a mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x0047a86f mov qword [rsp + 0x38], rbp | *((rsp + 0x38)) = rbp; 0x0047a874 mov byte [rsp + 0x40], bl | *((rsp + 0x40)) = bl; 0x0047a878 lea rdi, [rsp + 8] | 0x0047a87d push rbx | 0x0047a87e push rbp | 0x0047a87f call 0x47ac00 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,BloombergLP::s_baltst::Sequence3const&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool,BloombergLP::bdlat_TypeCategory::Sequence) (rsp + 8, *(rsi), *((r15 + 8)), rsp + 0x20, *((rdi + 0xc8)), *(0x006498e0)); 0x0047a884 add rsp, 0x10 | 0x0047a888 test eax, eax | 0x0047a88a je 0x47a897 | | while (eax != 0) { | label_0: 0x0047a88c add rsp, 0x48 | 0x0047a890 pop rbx | 0x0047a891 pop r14 | 0x0047a893 pop r15 | 0x0047a895 pop rbp | 0x0047a896 ret | return rax; 0x0047a897 cmp byte [rsp + 8], 0 | | if (*((rsp + 8)) != 0) { 0x0047a89c je 0x47a8a4 | 0x0047a89e mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); 0x0047a8a2 jmp 0x47a8ab | | } else { 0x0047a8a4 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047a8a9 xor edi, edi | edi = 0; | } 0x0047a8ab mov rsi, qword [r15] | rsi = *(r15); 0x0047a8ae mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047a8b2 mov rcx, qword [rip + 0x1cf037] | rcx = *(str.element2); 0x0047a8b9 movsxd rbp, dword [rip + 0x1cf038] | rbp = *(0x006498f8); 0x0047a8c0 mov r9d, dword [rip + 0x1cf041] | r9d = *(0x00649908); 0x0047a8c7 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047a8cb mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0047a8d0 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x0047a8d5 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x0047a8da mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0047a8df mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x0047a8e4 mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x0047a8e9 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0047a8ee mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x0047a8f3 mov rcx, qword [r14 + 0x70] | rcx = *((r14 + 0x70)); 0x0047a8f7 cmp rcx, qword [r14 + 0x68] | | if (rcx == *((r14 + 0x68))) { 0x0047a8fb jne 0x47a903 | 0x0047a8fd cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x0047a901 je 0x47a93f | goto label_1; | } | } 0x0047a903 lea r8, [r14 + 0x68] | 0x0047a907 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x0047a90c lea rcx, [rsp + 0x20] | 0x0047a911 movzx ebp, dil | ebp = (int32_t) dil; 0x0047a915 lea rdi, [rsp + 7] | 0x0047a91a push rbp | 0x0047a91b push rax | 0x0047a91c 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); 0x0047a921 add rsp, 0x10 | 0x0047a925 test eax, eax | 0x0047a927 jne 0x47a88c | | } 0x0047a92d mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047a932 mov rsi, qword [r15] | rsi = *(r15); 0x0047a935 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047a939 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047a93d xor edi, edi | edi = 0; | label_1: 0x0047a93f mov rcx, qword [rip + 0x1cefd2] | rcx = *(str.element3); 0x0047a946 movsxd rbp, dword [rip + 0x1cefd3] | rbp = *(0x00649920); 0x0047a94d mov r9d, dword [rip + 0x1cefdc] | r9d = *(0x00649930); 0x0047a954 mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0047a959 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x0047a95e mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x0047a963 mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0047a968 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x0047a96d mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x0047a972 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0047a977 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x0047a97c mov rcx, qword [r14 + 0x30] | rcx = *((r14 + 0x30)); 0x0047a980 cmp rcx, qword [r14 + 0x28] | | if (rcx == *((r14 + 0x28))) { 0x0047a984 jne 0x47a98c | 0x0047a986 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x0047a98a je 0x47a9c8 | goto label_2; | } | } 0x0047a98c lea r8, [r14 + 0x28] | 0x0047a990 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x0047a995 lea rcx, [rsp + 0x20] | 0x0047a99a movzx ebp, dil | ebp = (int32_t) dil; 0x0047a99e lea rdi, [rsp + 7] | 0x0047a9a3 push rbp | 0x0047a9a4 push rax | 0x0047a9a5 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); 0x0047a9aa add rsp, 0x10 | 0x0047a9ae test eax, eax | | if (eax != 0) { 0x0047a9b0 jne 0x47a88c | goto label_0; | } 0x0047a9b6 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047a9bb mov rsi, qword [r15] | rsi = *(r15); 0x0047a9be mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047a9c2 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047a9c6 xor edi, edi | edi = 0; | label_2: 0x0047a9c8 mov rcx, qword [rip + 0x1cef71] | rcx = *(str.element4); 0x0047a9cf movsxd rbp, dword [rip + 0x1cef72] | rbp = *(0x00649948); 0x0047a9d6 mov r9d, dword [rip + 0x1cef7b] | r9d = *(0x00649958); 0x0047a9dd mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0047a9e2 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x0047a9e7 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x0047a9ec mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0047a9f1 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x0047a9f6 mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x0047a9fb mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0047aa00 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x0047aa05 mov rcx, qword [r14 + 0x50] | rcx = *((r14 + 0x50)); 0x0047aa09 cmp rcx, qword [r14 + 0x48] | | if (rcx == *((r14 + 0x48))) { 0x0047aa0d jne 0x47aa15 | 0x0047aa0f cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x0047aa13 je 0x47aa51 | goto label_3; | } | } 0x0047aa15 lea r8, [r14 + 0x48] | r8 = r14 + 0x48; 0x0047aa19 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x0047aa1e lea rcx, [rsp + 0x20] | rcx = rsp + 0x20; 0x0047aa23 movzx ebp, dil | ebp = (int32_t) dil; 0x0047aa27 lea rdi, [rsp + 7] | rdi = rsp + 7; 0x0047aa2c push rbp | 0x0047aa2d push rax | 0x0047aa2e call 0x474690 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS4_IcNS3_9allocatorIcEEEEEENS7_ISA_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRKNS0_14E (); 0x0047aa33 add rsp, 0x10 | 0x0047aa37 test eax, eax | | if (eax != 0) { 0x0047aa39 jne 0x47a88c | goto label_0; | } 0x0047aa3f mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047aa44 mov rsi, qword [r15] | rsi = *(r15); 0x0047aa47 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047aa4b mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047aa4f xor edi, edi | edi = 0; | label_3: 0x0047aa51 mov rcx, qword [rip + 0x1cef10] | rcx = *(str.element5); 0x0047aa58 movsxd rbp, dword [rip + 0x1cef11] | rbp = *(0x00649970); 0x0047aa5f mov r9d, dword [rip + 0x1cef1a] | r9d = *(0x00649980); 0x0047aa66 mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0047aa6b mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x0047aa70 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x0047aa75 mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0047aa7a mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x0047aa7f mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x0047aa84 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0047aa89 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x0047aa8e mov rcx, qword [r14 + 0x10] | rcx = *((r14 + 0x10)); 0x0047aa92 cmp rcx, qword [r14 + 8] | | if (rcx == *((r14 + 8))) { 0x0047aa96 jne 0x47aa9e | 0x0047aa98 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x0047aa9c je 0x47aada | goto label_4; | } | } 0x0047aa9e lea r8, [r14 + 8] | 0x0047aaa2 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x0047aaa7 lea rcx, [rsp + 0x20] | 0x0047aaac movzx ebp, dil | ebp = (int32_t) dil; 0x0047aab0 lea rdi, [rsp + 7] | 0x0047aab5 push rbp | 0x0047aab6 push rax | 0x0047aab7 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); 0x0047aabc add rsp, 0x10 | 0x0047aac0 test eax, eax | | if (eax != 0) { 0x0047aac2 jne 0x47a88c | goto label_0; | } 0x0047aac8 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047aacd mov rsi, qword [r15] | rsi = *(r15); 0x0047aad0 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047aad4 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047aad8 xor edi, edi | edi = 0; | label_4: 0x0047aada mov rcx, qword [rip + 0x1ceeaf] | rcx = *(str.element6); 0x0047aae1 movsxd rbp, dword [rip + 0x1ceeb0] | rbp = *(0x00649998); 0x0047aae8 mov r9d, dword [rip + 0x1ceeb9] | r9d = *(0x006499a8); 0x0047aaef mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0047aaf4 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x0047aaf9 mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x0047aafe mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0047ab03 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x0047ab08 mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x0047ab0d mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0047ab12 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x0047ab17 mov rcx, qword [r14 + 0x90] | rcx = *((r14 + 0x90)); 0x0047ab1e cmp rcx, qword [r14 + 0x88] | | if (rcx == *((r14 + 0x88))) { 0x0047ab25 jne 0x47ab2d | 0x0047ab27 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x0047ab2b je 0x47ab6c | goto label_5; | } | } 0x0047ab2d lea r8, [r14 + 0x88] | r8 = r14 + 0x88; 0x0047ab34 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x0047ab39 lea rcx, [rsp + 0x20] | rcx = rsp + 0x20; 0x0047ab3e movzx ebp, dil | ebp = (int32_t) dil; 0x0047ab42 lea rdi, [rsp + 7] | rdi = rsp + 7; 0x0047ab47 push rbp | 0x0047ab48 push rax | 0x0047ab49 call 0x474ba0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_4bdlt10DatetimeTzEEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRKNS (); 0x0047ab4e add rsp, 0x10 | 0x0047ab52 test eax, eax | | if (eax != 0) { 0x0047ab54 jne 0x47a88c | goto label_0; | } 0x0047ab5a mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047ab5f mov rsi, qword [r15] | rsi = *(r15); 0x0047ab62 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047ab66 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047ab6a xor edi, edi | edi = 0; | label_5: 0x0047ab6c mov rcx, qword [rip + 0x1cee45] | rcx = *(str.element7); 0x0047ab73 movsxd rbp, dword [rip + 0x1cee46] | rbp = *(0x006499c0); 0x0047ab7a mov r9d, dword [rip + 0x1cee4f] | r9d = *(0x006499d0); 0x0047ab81 mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x0047ab86 mov qword [rsp + 0x10], rsi | *((rsp + 0x10)) = rsi; 0x0047ab8b mov qword [rsp + 0x18], rdx | *((rsp + 0x18)) = rdx; 0x0047ab90 mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x0047ab95 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x0047ab9a mov dword [rsp + 0x30], r9d | *((rsp + 0x30)) = r9d; 0x0047ab9f mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x0047aba4 mov byte [rsp + 0x40], dil | *((rsp + 0x40)) = dil; 0x0047aba9 mov rcx, qword [r14 + 0xb0] | rcx = *((r14 + 0xb0)); 0x0047abb0 xor ebp, ebp | ebp = 0; 0x0047abb2 cmp rcx, qword [r14 + 0xa8] | | if (rcx == *((r14 + 0xa8))) { 0x0047abb9 jne 0x47abc1 | 0x0047abbb cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x0047abbf je 0x47abf6 | goto label_6; | } | } 0x0047abc1 add r14, 0xa8 | r14 += 0xa8; 0x0047abc8 mov byte [rsp + 7], 0 | *((rsp + 7)) = 0; 0x0047abcd lea rcx, [rsp + 0x20] | rcx = rsp + 0x20; 0x0047abd2 movzx ebx, dil | ebx = (int32_t) dil; 0x0047abd6 lea rdi, [rsp + 7] | rdi = rsp + 7; 0x0047abdb mov r8, r14 | r8 = r14; 0x0047abde push rbx | 0x0047abdf push rax | 0x0047abe0 call 0x47ad70 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb22NullableAllocatedValueINS_8s_baltst9Sequence3EEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_ (); 0x0047abe5 add rsp, 0x10 | 0x0047abe9 test eax, eax | | if (eax != 0) { 0x0047abeb je 0x47abf1 | 0x0047abed mov ebp, eax | 0x0047abef jmp 0x47abf6 | | } else { 0x0047abf1 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; | } | label_6: 0x0047abf6 mov eax, ebp | eax = ebp; 0x0047abf8 jmp 0x47a88c | goto label_0; | }