; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x47a6f0 */ | #include | ; (fcn) method.int_BloombergLP::s_baltst::Sequence5::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | uint64_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_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::Sequence5::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x0047a6f0 push r15 | 0x0047a6f2 push r14 | 0x0047a6f4 push rbx | 0x0047a6f5 sub rsp, 0x50 | 0x0047a6f9 mov r15, rsi | r15 = rsi; 0x0047a6fc mov r14, rdi | r14 = rdi; 0x0047a6ff mov r8, qword [rdi + 0xc8] | 0x0047a706 mov rsi, qword [rsi] | rsi = *(rsi); 0x0047a709 mov rdx, qword [r15 + 8] | 0x0047a70d mov r10, qword [rip + 0x1cf0b4] | r10 = *(str.element1); 0x0047a714 movsxd rdi, dword [rip + 0x1cf0b5] | rdi = *(0x006497d0); 0x0047a71b mov r9d, dword [rip + 0x1cf0be] | 0x0047a722 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x0047a726 movzx eax, byte [r15 + 0x18] | eax = *((r15 + 0x18)); 0x0047a72b mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047a730 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047a735 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047a73a lea rcx, [rsp + 0x28] | 0x0047a73f mov qword [rsp + 0x28], r10 | *((rsp + 0x28)) = r10; 0x0047a744 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047a749 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047a74e mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x0047a753 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047a757 lea rdi, [rsp + 0x10] | 0x0047a75c push rax | 0x0047a75d push rbx | 0x0047a75e call 0x47aaf0 | 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 + 0x10, *(rsi), *((r15 + 8)), rsp + 0x28, *((rdi + 0xc8)), *(0x006497e0)); 0x0047a763 add rsp, 0x10 | 0x0047a767 test eax, eax | 0x0047a769 je 0x47a775 | | while (eax != 0) { | label_0: 0x0047a76b add rsp, 0x50 | 0x0047a76f pop rbx | 0x0047a770 pop r14 | 0x0047a772 pop r15 | 0x0047a774 ret | return eax; 0x0047a775 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x0047a77a je 0x47a782 | 0x0047a77c mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); 0x0047a780 jmp 0x47a789 | | } else { 0x0047a782 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047a787 xor edi, edi | edi = 0; | } 0x0047a789 mov rsi, qword [r15] | rsi = *(r15); 0x0047a78c mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047a790 mov rax, qword [rip + 0x1cf059] | rax = *(str.element2); 0x0047a797 movsxd rcx, dword [rip + 0x1cf05a] | rcx = *(0x006497f8); 0x0047a79e mov r9d, dword [rip + 0x1cf063] | r9d = *(0x00649808); 0x0047a7a5 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x0047a7a9 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047a7ae mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047a7b3 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047a7b8 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0047a7bd mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0047a7c2 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047a7c7 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x0047a7cc mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047a7d1 mov rax, qword [r14 + 0x70] | rax = *((r14 + 0x70)); 0x0047a7d5 cmp rax, qword [r14 + 0x68] | | if (rax == *((r14 + 0x68))) { 0x0047a7d9 jne 0x47a7e2 | 0x0047a7db cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x0047a7e0 je 0x47a81f | goto label_1; | } | } 0x0047a7e2 lea r8, [r14 + 0x68] | 0x0047a7e6 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047a7eb lea rcx, [rsp + 0x28] | 0x0047a7f0 movzx eax, dil | eax = (int32_t) dil; 0x0047a7f4 lea rdi, [rsp + 0xf] | 0x0047a7f9 push rax | 0x0047a7fa push r10 | 0x0047a7fc 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); 0x0047a801 add rsp, 0x10 | 0x0047a805 test eax, eax | 0x0047a807 jne 0x47a76b | | } 0x0047a80d mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047a812 mov rsi, qword [r15] | rsi = *(r15); 0x0047a815 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047a819 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x0047a81d xor edi, edi | edi = 0; | label_1: 0x0047a81f mov rax, qword [rip + 0x1ceff2] | rax = *(str.element3); 0x0047a826 movsxd rcx, dword [rip + 0x1ceff3] | rcx = *(0x00649820); 0x0047a82d mov r9d, dword [rip + 0x1ceffc] | r9d = *(0x00649830); 0x0047a834 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047a839 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047a83e mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047a843 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0047a848 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0047a84d mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047a852 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x0047a857 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047a85c mov rax, qword [r14 + 0x30] | rax = *((r14 + 0x30)); 0x0047a860 cmp rax, qword [r14 + 0x28] | | if (rax == *((r14 + 0x28))) { 0x0047a864 jne 0x47a86d | 0x0047a866 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x0047a86b je 0x47a8aa | goto label_2; | } | } 0x0047a86d lea r8, [r14 + 0x28] | 0x0047a871 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047a876 lea rcx, [rsp + 0x28] | 0x0047a87b movzx eax, dil | eax = (int32_t) dil; 0x0047a87f lea rdi, [rsp + 0xf] | 0x0047a884 push rax | 0x0047a885 push r10 | 0x0047a887 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); 0x0047a88c add rsp, 0x10 | 0x0047a890 test eax, eax | | if (eax != 0) { 0x0047a892 jne 0x47a76b | goto label_0; | } 0x0047a898 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047a89d mov rsi, qword [r15] | rsi = *(r15); 0x0047a8a0 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047a8a4 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x0047a8a8 xor edi, edi | edi = 0; | label_2: 0x0047a8aa mov rax, qword [rip + 0x1cef8f] | rax = *(str.element4); 0x0047a8b1 movsxd rcx, dword [rip + 0x1cef90] | rcx = *(0x00649848); 0x0047a8b8 mov r9d, dword [rip + 0x1cef99] | r9d = *(0x00649858); 0x0047a8bf mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047a8c4 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047a8c9 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047a8ce mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0047a8d3 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0047a8d8 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047a8dd mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x0047a8e2 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047a8e7 mov rax, qword [r14 + 0x50] | rax = *((r14 + 0x50)); 0x0047a8eb cmp rax, qword [r14 + 0x48] | | if (rax == *((r14 + 0x48))) { 0x0047a8ef jne 0x47a8f8 | 0x0047a8f1 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x0047a8f6 je 0x47a935 | goto label_3; | } | } 0x0047a8f8 lea r8, [r14 + 0x48] | r8 = r14 + 0x48; 0x0047a8fc mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047a901 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047a906 movzx eax, dil | eax = (int32_t) dil; 0x0047a90a lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047a90f push rax | 0x0047a910 push r10 | 0x0047a912 call 0x474560 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS4_IcNS3_9allocatorIcEEEEEENS7_ISA_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRKNS0_14E (); 0x0047a917 add rsp, 0x10 | 0x0047a91b test eax, eax | | if (eax != 0) { 0x0047a91d jne 0x47a76b | goto label_0; | } 0x0047a923 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047a928 mov rsi, qword [r15] | rsi = *(r15); 0x0047a92b mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047a92f mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x0047a933 xor edi, edi | edi = 0; | label_3: 0x0047a935 mov rax, qword [rip + 0x1cef2c] | rax = *(str.element5); 0x0047a93c movsxd rcx, dword [rip + 0x1cef2d] | rcx = *(0x00649870); 0x0047a943 mov r9d, dword [rip + 0x1cef36] | r9d = *(0x00649880); 0x0047a94a mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047a94f mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047a954 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047a959 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0047a95e mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0047a963 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047a968 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x0047a96d mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047a972 mov rax, qword [r14 + 0x10] | rax = *((r14 + 0x10)); 0x0047a976 cmp rax, qword [r14 + 8] | | if (rax == *((r14 + 8))) { 0x0047a97a jne 0x47a983 | 0x0047a97c cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x0047a981 je 0x47a9c0 | goto label_4; | } | } 0x0047a983 lea r8, [r14 + 8] | 0x0047a987 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047a98c lea rcx, [rsp + 0x28] | 0x0047a991 movzx eax, dil | eax = (int32_t) dil; 0x0047a995 lea rdi, [rsp + 0xf] | 0x0047a99a push rax | 0x0047a99b push r10 | 0x0047a99d 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); 0x0047a9a2 add rsp, 0x10 | 0x0047a9a6 test eax, eax | | if (eax != 0) { 0x0047a9a8 jne 0x47a76b | goto label_0; | } 0x0047a9ae mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047a9b3 mov rsi, qword [r15] | rsi = *(r15); 0x0047a9b6 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047a9ba mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x0047a9be xor edi, edi | edi = 0; | label_4: 0x0047a9c0 mov rax, qword [rip + 0x1ceec9] | rax = *(str.element6); 0x0047a9c7 movsxd rcx, dword [rip + 0x1ceeca] | rcx = *(0x00649898); 0x0047a9ce mov r9d, dword [rip + 0x1ceed3] | r9d = *(0x006498a8); 0x0047a9d5 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047a9da mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047a9df mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047a9e4 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0047a9e9 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0047a9ee mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047a9f3 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x0047a9f8 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047a9fd mov rax, qword [r14 + 0x90] | rax = *((r14 + 0x90)); 0x0047aa04 cmp rax, qword [r14 + 0x88] | | if (rax == *((r14 + 0x88))) { 0x0047aa0b jne 0x47aa14 | 0x0047aa0d cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x0047aa12 je 0x47aa54 | goto label_5; | } | } 0x0047aa14 lea r8, [r14 + 0x88] | r8 = r14 + 0x88; 0x0047aa1b mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047aa20 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047aa25 movzx eax, dil | eax = (int32_t) dil; 0x0047aa29 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047aa2e push rax | 0x0047aa2f push r10 | 0x0047aa31 call 0x474a70 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_4bdlt10DatetimeTzEEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRKNS (); 0x0047aa36 add rsp, 0x10 | 0x0047aa3a test eax, eax | | if (eax != 0) { 0x0047aa3c jne 0x47a76b | goto label_0; | } 0x0047aa42 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047aa47 mov rsi, qword [r15] | rsi = *(r15); 0x0047aa4a mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047aa4e mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x0047aa52 xor edi, edi | edi = 0; | label_5: 0x0047aa54 mov rax, qword [rip + 0x1cee5d] | rax = *(str.element7); 0x0047aa5b movsxd rcx, dword [rip + 0x1cee5e] | rcx = *(0x006498c0); 0x0047aa62 mov r9d, dword [rip + 0x1cee67] | r9d = *(0x006498d0); 0x0047aa69 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047aa6e mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047aa73 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047aa78 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0047aa7d mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0047aa82 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047aa87 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x0047aa8c mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047aa91 mov rcx, qword [r14 + 0xb0] | rcx = *((r14 + 0xb0)); 0x0047aa98 xor eax, eax | eax = 0; 0x0047aa9a cmp rcx, qword [r14 + 0xa8] | | if (rcx != *((r14 + 0xa8))) { 0x0047aaa1 jne 0x47aaae | goto label_6; | } 0x0047aaa3 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x0047aaa8 je 0x47a76b | goto label_0; | } | label_6: 0x0047aaae add r14, 0xa8 | r14 += 0xa8; 0x0047aab5 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047aaba lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047aabf movzx eax, dil | eax = (int32_t) dil; 0x0047aac3 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047aac8 mov r8, r14 | r8 = r14; 0x0047aacb push rax | 0x0047aacc push r10 | 0x0047aace call 0x47ac60 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb22NullableAllocatedValueINS_8s_baltst9Sequence3EEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_ (); 0x0047aad3 add rsp, 0x10 | 0x0047aad7 test eax, eax | | if (eax != 0) { 0x0047aad9 jne 0x47a76b | goto label_0; | } 0x0047aadf mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047aae4 xor eax, eax | eax = 0; 0x0047aae6 jmp 0x47a76b | goto label_0; | }