; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x472a80 */ | #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 */ 0x00472a80 push rbp | 0x00472a81 push r14 | 0x00472a83 push rbx | 0x00472a84 sub rsp, 0x50 | 0x00472a88 mov rbx, rsi | rbx = rsi; 0x00472a8b mov r14, rdi | r14 = rdi; 0x00472a8e mov rsi, qword [rsi] | rsi = *(rsi); 0x00472a91 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00472a95 mov rcx, qword [rip + 0xdae9c] | rcx = *(str.element1); 0x00472a9c movsxd rdi, dword [rip + 0xdae9d] | rdi = *(0x0054d940); 0x00472aa3 mov r9d, dword [rip + 0xdaea6] | r9d = .comment; 0x00472aaa mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x00472aae mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); 0x00472ab1 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472ab6 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00472abb mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472ac0 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00472ac5 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00472aca mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472acf mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x00472ad4 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00472ad8 mov rcx, qword [r14 + 0x98] | rcx = *((r14 + 0x98)); 0x00472adf cmp rcx, qword [r14 + 0x90] | | if (rcx == *((r14 + 0x90))) { 0x00472ae6 jne 0x472aee | 0x00472ae8 cmp byte [rbp + 0x18], 0 | | if (*((rbp + 0x18)) == 0) { 0x00472aec je 0x472b2b | goto label_0; | } | } 0x00472aee lea r8, [r14 + 0x90] | 0x00472af5 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00472afa lea rcx, [rsp + 0x28] | 0x00472aff movzx eax, al | eax = (int32_t) al; 0x00472b02 lea rdi, [rsp + 0xf] | 0x00472b07 push rax | 0x00472b08 push rbp | 0x00472b09 call 0x472e00 | 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); 0x00472b0e add rsp, 0x10 | 0x00472b12 test eax, eax | | if (eax == 0) { 0x00472b14 jne 0x472d62 | 0x00472b1a mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00472b1e mov rsi, qword [rbx] | rsi = *(rbx); 0x00472b21 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00472b25 mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x00472b29 xor eax, eax | eax = 0; | label_0: 0x00472b2b mov rcx, qword [rip + 0xdae2e] | rcx = *(str.element2); 0x00472b32 movsxd rdi, dword [rip + 0xdae2f] | rdi = *(0x0054d968); 0x00472b39 mov r9d, dword [rip + 0xdae38] | r9d = *(0x0054d978); 0x00472b40 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472b45 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00472b4a mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472b4f mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00472b54 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00472b59 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472b5e mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x00472b63 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00472b67 mov rcx, qword [r14 + 8] | rcx = *((r14 + 8)); 0x00472b6b cmp rcx, qword [r14] | | if (rcx == *(r14)) { 0x00472b6e jne 0x472b76 | 0x00472b70 cmp byte [rbp + 0x18], 0 | | if (*((rbp + 0x18)) == 0) { 0x00472b74 je 0x472baf | goto label_1; | } | } 0x00472b76 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00472b7b lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00472b80 movzx eax, al | eax = (int32_t) al; 0x00472b83 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00472b88 mov r8, r14 | r8 = r14; 0x00472b8b push rax | 0x00472b8c push rbp | 0x00472b8d call 0x4731d0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS3_12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS9_ISB_EEEEEEiPbPNS0_9FormatterEPNS6_13basic_ostreamIcS8_EERKNS6_17basic_string_viewIcS8_EERKT_iRKNS0_14EncoderOpt (); 0x00472b92 add rsp, 0x10 | 0x00472b96 test eax, eax | | if (eax != 0) { 0x00472b98 jne 0x472d62 | goto label_2; | } 0x00472b9e mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00472ba2 mov rsi, qword [rbx] | rsi = *(rbx); 0x00472ba5 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00472ba9 mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x00472bad xor eax, eax | eax = 0; | label_1: 0x00472baf mov rcx, qword [rip + 0xdadd2] | rcx = *(str.element3); 0x00472bb6 movsxd rdi, dword [rip + 0xdadd3] | rdi = *(0x0054d990); 0x00472bbd mov r9d, dword [rip + 0xdaddc] | r9d = *(0x0054d9a0); 0x00472bc4 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472bc9 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00472bce mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472bd3 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00472bd8 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00472bdd mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472be2 mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x00472be7 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00472beb cmp byte [r14 + 0xb1], 0 | | if (*((r14 + 0xb1)) == 0) { 0x00472bf3 jne 0x472bfb | 0x00472bf5 cmp byte [rbp + 0x19], 0 | | if (*((rbp + 0x19)) == 0) { 0x00472bf9 je 0x472c34 | goto label_3; | } | } 0x00472bfb lea r8, [r14 + 0xb0] | r8 = r14 + 0xb0; 0x00472c02 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00472c07 movzx eax, al | eax = (int32_t) al; 0x00472c0a lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00472c0f push rax | 0x00472c10 push rbp | 0x00472c11 call 0x473490 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIbEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x00472c16 add rsp, 0x10 | 0x00472c1a test eax, eax | | if (eax != 0) { 0x00472c1c jne 0x472d62 | goto label_2; | } 0x00472c22 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x00472c27 je 0x472c2e | 0x00472c29 mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); 0x00472c2c jmp 0x472c34 | | } else { 0x00472c2e mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00472c32 xor eax, eax | eax = 0; | } | label_3: 0x00472c34 mov rsi, qword [rbx] | rsi = *(rbx); 0x00472c37 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00472c3b mov rcx, qword [rip + 0xdad6e] | rcx = *(str.element4); 0x00472c42 movsxd rdi, dword [rip + 0xdad6f] | rdi = *(0x0054d9b8); 0x00472c49 mov r9d, dword [rip + 0xdad78] | r9d = *(0x0054d9c8); 0x00472c50 mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x00472c54 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472c59 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00472c5e mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472c63 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00472c68 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00472c6d mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472c72 mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x00472c77 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00472c7b cmp byte [r14 + 0x50], 0 | | if (*((r14 + 0x50)) == 0) { 0x00472c80 jne 0x472c88 | 0x00472c82 cmp byte [rbp + 0x19], 0 | | if (*((rbp + 0x19)) == 0) { 0x00472c86 je 0x472cb7 | goto label_4; | } | } 0x00472c88 lea r8, [r14 + 0x20] | r8 = r14 + 0x20; 0x00472c8c lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00472c91 movzx eax, al | eax = (int32_t) al; 0x00472c94 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00472c99 push rax | 0x00472c9a push rbp | 0x00472c9b call 0x4736c0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIN3bsl12basic_stringIcNSt3_111char_traitsIcEENS5_9allocatorIcEEEEEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNS7_13basic_ostreamIcS9_EERKNS7_17basic_ (); 0x00472ca0 add rsp, 0x10 | 0x00472ca4 test eax, eax | | if (eax != 0) { 0x00472ca6 jne 0x472d62 | goto label_2; | } 0x00472cac cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x00472cb1 jne 0x472cb7 | 0x00472cb3 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; | } | label_4: 0x00472cb7 lea rsi, [r14 + 0x60] | 0x00472cbb mov edx, 0x54d9d0 | 0x00472cc0 mov rdi, rbx | 0x00472cc3 call 0x472d70 | eax = intBloombergLP::baljsn::Encoder_AttributeVisitor::operator(),BloombergLP::bdlat_AttributeInfo>(BloombergLP::bdlb::NullableAllocatedValueconst&,BloombergLP::bdlat_AttributeInfoconst&) (rbx, r14 + 0x60, 0x54d9d0); 0x00472cc8 test eax, eax | | if (eax != 0) { 0x00472cca jne 0x472d62 | goto label_2; | } 0x00472cd0 mov rsi, qword [rbx] | rsi = *(rbx); 0x00472cd3 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00472cd7 mov rcx, qword [rip + 0xdad22] | rcx = *(str.element6); 0x00472cde movsxd rbp, dword [rip + 0xdad23] | rbp = *(0x0054da08); 0x00472ce5 mov r9d, dword [rip + 0xdad2c] | r9d = *(0x0054da18); 0x00472cec mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00472cf0 mov dil, byte [rbx + 0x18] | dil = *((rbx + 0x18)); 0x00472cf4 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00472cf9 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00472cfe mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00472d03 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00472d08 mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x00472d0d mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00472d12 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00472d17 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00472d1c mov rcx, qword [r14 + 0x78] | rcx = *((r14 + 0x78)); 0x00472d20 xor ebp, ebp | ebp = 0; 0x00472d22 cmp rcx, qword [r14 + 0x70] | | if (rcx == *((r14 + 0x70))) { 0x00472d26 jne 0x472d2e | 0x00472d28 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00472d2c je 0x472d60 | goto label_5; | } | } 0x00472d2e add r14, 0x70 | r14 += 0x70; 0x00472d32 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00472d37 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00472d3c movzx r10d, dil | r10d = (int32_t) dil; 0x00472d40 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00472d45 mov r8, r14 | r8 = r14; 0x00472d48 push r10 | 0x00472d4a push rax | 0x00472d4b call 0x4752a0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_4balb10Enumerated5ValueEEENS3_9allocatorISA_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSH_11char_traitsIcEEEERKNSH_17basic_string_viewIcSK_EERKT (); 0x00472d50 add rsp, 0x10 | 0x00472d54 test eax, eax | | if (eax != 0) { 0x00472d56 je 0x472d5c | 0x00472d58 mov ebp, eax | 0x00472d5a jmp 0x472d60 | | } else { 0x00472d5c mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; | } | label_5: 0x00472d60 mov eax, ebp | eax = ebp; | } | label_2: 0x00472d62 add rsp, 0x50 | 0x00472d66 pop rbx | 0x00472d67 pop r14 | 0x00472d69 pop rbp | 0x00472d6a ret | return rax; | }