; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x472940 */ | #include | ; (fcn) method.int_BloombergLP::balb::Sequence3::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | uint64_t method_int_BloombergLP::balb::Sequence3::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::Sequence3::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x00472940 push r15 | 0x00472942 push r14 | 0x00472944 push rbx | 0x00472945 sub rsp, 0x50 | 0x00472949 mov r15, rsi | r15 = rsi; 0x0047294c mov r14, rdi | r14 = rdi; 0x0047294f mov rsi, qword [rsi] | rsi = *(rsi); 0x00472952 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00472956 mov rcx, qword [rip + 0xdb5eb] | rcx = *(str.element1); 0x0047295d movsxd rdi, dword [rip + 0xdb5ec] | rdi = *(0x0054df50); 0x00472964 mov r9d, dword [rip + 0xdb5f5] | r9d = .comment; 0x0047296b mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x0047296f mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x00472973 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472978 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047297d mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472982 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00472987 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047298c mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472991 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00472996 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047299a mov rcx, qword [r14 + 0x98] | rcx = *((r14 + 0x98)); 0x004729a1 cmp rcx, qword [r14 + 0x90] | | if (rcx == *((r14 + 0x90))) { 0x004729a8 jne 0x4729b0 | 0x004729aa cmp byte [rbx + 0x18], 0 | | if (*((rbx + 0x18)) == 0) { 0x004729ae je 0x4729ee | goto label_0; | } | } 0x004729b0 lea r8, [r14 + 0x90] | 0x004729b7 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x004729bc lea rcx, [rsp + 0x28] | 0x004729c1 movzx eax, al | eax = (int32_t) al; 0x004729c4 lea rdi, [rsp + 0xf] | 0x004729c9 push rax | 0x004729ca push rbx | 0x004729cb call 0x472cc0 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember>>(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,bsl::vector>const&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool) (rsp + 0xf, rsi, rdx, rsp + 0x28, r14 + 0x90, r9); 0x004729d0 add rsp, 0x10 | 0x004729d4 test eax, eax | | if (eax == 0) { 0x004729d6 jne 0x472c25 | 0x004729dc mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x004729e1 mov rsi, qword [r15] | rsi = *(r15); 0x004729e4 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x004729e8 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x004729ec xor eax, eax | eax = 0; | label_0: 0x004729ee mov rcx, qword [rip + 0xdb57b] | rcx = *(str.element2); 0x004729f5 movsxd rdi, dword [rip + 0xdb57c] | rdi = *(0x0054df78); 0x004729fc mov r9d, dword [rip + 0xdb585] | r9d = *(0x0054df88); 0x00472a03 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472a08 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00472a0d mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472a12 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00472a17 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00472a1c mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472a21 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00472a26 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00472a2a mov rcx, qword [r14 + 8] | rcx = *((r14 + 8)); 0x00472a2e cmp rcx, qword [r14] | | if (rcx == *(r14)) { 0x00472a31 jne 0x472a39 | 0x00472a33 cmp byte [rbx + 0x18], 0 | | if (*((rbx + 0x18)) == 0) { 0x00472a37 je 0x472a73 | goto label_1; | } | } 0x00472a39 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00472a3e lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00472a43 movzx eax, al | eax = (int32_t) al; 0x00472a46 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00472a4b mov r8, r14 | r8 = r14; 0x00472a4e push rax | 0x00472a4f push rbx | 0x00472a50 call 0x473090 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS3_12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS9_ISB_EEEEEEiPbPNS0_9FormatterEPNS6_13basic_ostreamIcS8_EERKNS6_17basic_string_viewIcS8_EERKT_iRKNS0_14EncoderOpt (); 0x00472a55 add rsp, 0x10 | 0x00472a59 test eax, eax | | if (eax != 0) { 0x00472a5b jne 0x472c25 | goto label_2; | } 0x00472a61 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00472a66 mov rsi, qword [r15] | rsi = *(r15); 0x00472a69 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00472a6d mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00472a71 xor eax, eax | eax = 0; | label_1: 0x00472a73 mov rcx, qword [rip + 0xdb51e] | rcx = *(str.element3); 0x00472a7a movsxd rdi, dword [rip + 0xdb51f] | rdi = *(0x0054dfa0); 0x00472a81 mov r9d, dword [rip + 0xdb528] | r9d = *(0x0054dfb0); 0x00472a88 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472a8d mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00472a92 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472a97 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00472a9c mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00472aa1 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472aa6 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00472aab mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00472aaf cmp byte [r14 + 0xb1], 0 | | if (*((r14 + 0xb1)) == 0) { 0x00472ab7 jne 0x472abf | 0x00472ab9 cmp byte [rbx + 0x19], 0 | | if (*((rbx + 0x19)) == 0) { 0x00472abd je 0x472afa | goto label_3; | } | } 0x00472abf lea r8, [r14 + 0xb0] | r8 = r14 + 0xb0; 0x00472ac6 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00472acb movzx eax, al | eax = (int32_t) al; 0x00472ace lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00472ad3 push rax | 0x00472ad4 push rbx | 0x00472ad5 call 0x473350 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIbEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x00472ada add rsp, 0x10 | 0x00472ade test eax, eax | | if (eax != 0) { 0x00472ae0 jne 0x472c25 | goto label_2; | } 0x00472ae6 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x00472aeb je 0x472af3 | 0x00472aed mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x00472af1 jmp 0x472afa | | } else { 0x00472af3 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00472af8 xor eax, eax | eax = 0; | } | label_3: 0x00472afa mov rsi, qword [r15] | rsi = *(r15); 0x00472afd mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00472b01 mov rcx, qword [rip + 0xdb4b8] | rcx = *(str.element4); 0x00472b08 movsxd rdi, dword [rip + 0xdb4b9] | rdi = *(0x0054dfc8); 0x00472b0f mov r9d, dword [rip + 0xdb4c2] | r9d = *(0x0054dfd8); 0x00472b16 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00472b1a mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472b1f mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00472b24 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472b29 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00472b2e mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00472b33 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472b38 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00472b3d mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00472b41 cmp byte [r14 + 0x50], 0 | | if (*((r14 + 0x50)) == 0) { 0x00472b46 jne 0x472b4e | 0x00472b48 cmp byte [rbx + 0x19], 0 | | if (*((rbx + 0x19)) == 0) { 0x00472b4c je 0x472b7e | goto label_4; | } | } 0x00472b4e lea r8, [r14 + 0x20] | r8 = r14 + 0x20; 0x00472b52 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00472b57 movzx eax, al | eax = (int32_t) al; 0x00472b5a lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00472b5f push rax | 0x00472b60 push rbx | 0x00472b61 call 0x473580 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIN3bsl12basic_stringIcNSt3_111char_traitsIcEENS5_9allocatorIcEEEEEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNS7_13basic_ostreamIcS9_EERKNS7_17basic_ (); 0x00472b66 add rsp, 0x10 | 0x00472b6a test eax, eax | | if (eax != 0) { 0x00472b6c jne 0x472c25 | goto label_2; | } 0x00472b72 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x00472b77 jne 0x472b7e | 0x00472b79 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; | } | label_4: 0x00472b7e lea rsi, [r14 + 0x60] | 0x00472b82 mov edx, 0x54dfe0 | 0x00472b87 mov rdi, r15 | 0x00472b8a call 0x472c30 | eax = intBloombergLP::baljsn::Encoder_AttributeVisitor::operator(),BloombergLP::bdlat_AttributeInfo>(BloombergLP::bdlb::NullableAllocatedValueconst&,BloombergLP::bdlat_AttributeInfoconst&) (r15, r14 + 0x60, 0x54dfe0); 0x00472b8f test eax, eax | | if (eax != 0) { 0x00472b91 jne 0x472c25 | goto label_2; | } 0x00472b97 mov rsi, qword [r15] | rsi = *(r15); 0x00472b9a mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00472b9e mov rax, qword [rip + 0xdb46b] | rax = *(str.element6); 0x00472ba5 movsxd rcx, dword [rip + 0xdb46c] | rcx = *(0x0054e018); 0x00472bac mov r9d, dword [rip + 0xdb475] | r9d = *(0x0054e028); 0x00472bb3 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00472bb7 mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); 0x00472bbb mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472bc0 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00472bc5 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472bca mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00472bcf mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00472bd4 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472bd9 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00472bde mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00472be3 mov rcx, qword [r14 + 0x78] | rcx = *((r14 + 0x78)); 0x00472be7 xor eax, eax | eax = 0; 0x00472be9 cmp rcx, qword [r14 + 0x70] | | if (rcx == *((r14 + 0x70))) { 0x00472bed jne 0x472bf5 | 0x00472bef cmp byte [rbx + 0x18], 0 | | if (*((rbx + 0x18)) == 0) { 0x00472bf3 je 0x472c25 | goto label_2; | } | } 0x00472bf5 add r14, 0x70 | r14 += 0x70; 0x00472bf9 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00472bfe lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00472c03 movzx eax, dil | eax = (int32_t) dil; 0x00472c07 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00472c0c mov r8, r14 | r8 = r14; 0x00472c0f push rax | 0x00472c10 push rbx | 0x00472c11 call 0x475160 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_4balb10Enumerated5ValueEEENS3_9allocatorISA_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSH_11char_traitsIcEEEERKNSH_17basic_string_viewIcSK_EERKT (); 0x00472c16 add rsp, 0x10 | 0x00472c1a test eax, eax | | if (eax != 0) { 0x00472c1c jne 0x472c25 | goto label_2; | } 0x00472c1e mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00472c23 xor eax, eax | eax = 0; | } | label_2: 0x00472c25 add rsp, 0x50 | 0x00472c29 pop rbx | 0x00472c2a pop r14 | 0x00472c2c pop r15 | 0x00472c2e ret | return rax; | }