; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x475c00 */ | #include | ; (fcn) method.int_BloombergLP::s_baltst::Sequence1::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | uint64_t method_int_BloombergLP::s_baltst::Sequence1::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::Sequence1::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x00475c00 push r15 | 0x00475c02 push r14 | 0x00475c04 push rbx | 0x00475c05 sub rsp, 0x50 | 0x00475c09 mov r15, rsi | r15 = rsi; 0x00475c0c mov r14, rdi | r14 = rdi; 0x00475c0f mov rsi, qword [rsi] | rsi = *(rsi); 0x00475c12 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00475c16 mov rcx, qword [rip + 0x1d358b] | rcx = *(str.element1); 0x00475c1d movsxd rdi, dword [rip + 0x1d358c] | rdi = *(0x006491b0); 0x00475c24 mov r9d, dword [rip + 0x1d3595] | r9d = .comment; 0x00475c2b mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00475c2f mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x00475c33 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00475c38 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00475c3d mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00475c42 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00475c47 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00475c4c mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00475c51 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00475c56 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00475c5a cmp byte [r14 + 0x1e8], 0 | | if (*((r14 + 0x1e8)) == 0) { 0x00475c62 jne 0x475c6a | 0x00475c64 cmp byte [rbx + 0x19], 0 | | if (*((rbx + 0x19)) == 0) { 0x00475c68 je 0x475ca2 | goto label_0; | } | } 0x00475c6a lea r8, [r14 + 0x68] | 0x00475c6e lea rcx, [rsp + 0x28] | 0x00475c73 movzx eax, al | eax = (int32_t) al; 0x00475c76 lea rdi, [rsp + 0x10] | 0x00475c7b push rax | 0x00475c7c push rbx | 0x00475c7d call 0x475ee0 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember,BloombergLP::bdlat_TypeCategory::NullableValue>(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,BloombergLP::bdlb::NullableValueconst&,int) (rsp + 0x10, rsi, rdx, rsp + 0x28, r14 + 0x68, r9); 0x00475c82 add rsp, 0x10 | 0x00475c86 test eax, eax | | if (eax == 0) { 0x00475c88 jne 0x475ed1 | 0x00475c8e cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x00475c93 je 0x475c9b | 0x00475c95 mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x00475c99 jmp 0x475ca2 | | } else { 0x00475c9b mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00475ca0 xor eax, eax | eax = 0; | } | label_0: 0x00475ca2 mov rsi, qword [r15] | rsi = *(r15); 0x00475ca5 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00475ca9 mov rcx, qword [rip + 0x1d3520] | rcx = *(str.element2); 0x00475cb0 movsxd rdi, dword [rip + 0x1d3521] | rdi = *(0x006491d8); 0x00475cb7 mov r9d, dword [rip + 0x1d352a] | r9d = .comment; 0x00475cbe mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00475cc2 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00475cc7 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00475ccc mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00475cd1 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00475cd6 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00475cdb mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00475ce0 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00475ce5 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00475ce9 mov rcx, qword [r14 + 0x50] | rcx = *((r14 + 0x50)); 0x00475ced cmp rcx, qword [r14 + 0x48] | | if (rcx == *((r14 + 0x48))) { 0x00475cf1 jne 0x475d00 | 0x00475cf3 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00475cf8 jne 0x475d00 | 0x00475cfa mov r10b, byte [r15 + 0x18] | r10b = *((r15 + 0x18)); 0x00475cfe jmp 0x475d32 | | } | } else { 0x00475d00 lea r8, [r14 + 0x48] | r8 = r14 + 0x48; 0x00475d04 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00475d09 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00475d0e movzx eax, al | eax = (int32_t) al; 0x00475d11 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00475d16 push rax | 0x00475d17 push r10 | 0x00475d19 call 0x478800 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_8s_baltst7Choice1ENS3_9allocatorIS6_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSD_11char_traitsIcEEEERKNSD_17basic_string_viewIcSG_EERKT_iRKNS0_14EncoderOptionsEbNS_18b (); 0x00475d1e add rsp, 0x10 | 0x00475d22 test eax, eax | | if (eax != 0) { 0x00475d24 jne 0x475ed1 | goto label_1; | } 0x00475d2a mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00475d2f xor r10d, r10d | r10d = 0; | } 0x00475d32 mov r8, qword [r14 + 0x1f8] | 0x00475d39 mov rsi, qword [r15] | 0x00475d3c mov rdx, qword [r15 + 8] | 0x00475d40 mov rdi, qword [rip + 0x1d34b1] | rdi = *(str.element3); 0x00475d47 movsxd rbx, dword [rip + 0x1d34b2] | rbx = *(0x00649200); 0x00475d4e mov r9d, dword [rip + 0x1d34bb] | 0x00475d55 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x00475d59 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00475d5e mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00475d63 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00475d68 lea rcx, [rsp + 0x28] | 0x00475d6d mov qword [rsp + 0x28], rdi | *((rsp + 0x28)) = rdi; 0x00475d72 mov qword [rsp + 0x30], rbx | *((rsp + 0x30)) = rbx; 0x00475d77 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00475d7c mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00475d81 mov byte [rsp + 0x48], r10b | *((rsp + 0x48)) = r10b; 0x00475d86 movzx ebx, r10b | ebx = (int32_t) r10b; 0x00475d8a lea rdi, [rsp + 0x10] | 0x00475d8f push rbx | 0x00475d90 push rax | 0x00475d91 call 0x47c290 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,BloombergLP::s_baltst::Choice2const&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool,BloombergLP::bdlat_TypeCategory::Choice) (rsp + 0x10, *(r15), *((r15 + 8)), rsp + 0x28, *((r14 + 0x1f8)), *(0x00649210)); 0x00475d96 add rsp, 0x10 | 0x00475d9a test eax, eax | | if (eax == 0) { 0x00475d9c jne 0x475dae | 0x00475d9e cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x00475da3 jne 0x475dae | 0x00475da5 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00475daa xor edi, edi | edi = 0; 0x00475dac jmp 0x475dba | | } | } else { 0x00475dae test eax, eax | | if (eax != 0) { 0x00475db0 jne 0x475ed1 | goto label_1; | } 0x00475db6 mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); | } 0x00475dba mov rsi, qword [r15] | rsi = *(r15); 0x00475dbd mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00475dc1 mov rax, qword [rip + 0x1d3458] | rax = *(str.element4); 0x00475dc8 movsxd rcx, dword [rip + 0x1d3459] | rcx = *(0x00649228); 0x00475dcf mov r9d, dword [rip + 0x1d3462] | r9d = *(0x00649238); 0x00475dd6 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00475dda mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00475ddf mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00475de4 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00475de9 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00475dee mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00475df3 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00475df8 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00475dfd mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00475e02 mov rax, qword [r14 + 0x10] | rax = *((r14 + 0x10)); 0x00475e06 cmp rax, qword [r14 + 8] | | if (rax == *((r14 + 8))) { 0x00475e0a jne 0x475e13 | 0x00475e0c cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00475e11 je 0x475e50 | goto label_2; | } | } 0x00475e13 lea r8, [r14 + 8] | r8 = r14 + 8; 0x00475e17 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00475e1c lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00475e21 movzx eax, dil | eax = (int32_t) dil; 0x00475e25 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00475e2a push rax | 0x00475e2b push r10 | 0x00475e2d call 0x47c930 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_8s_baltst7Choice1EEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRKNS (); 0x00475e32 add rsp, 0x10 | 0x00475e36 test eax, eax | | if (eax != 0) { 0x00475e38 jne 0x475ed1 | goto label_1; | } 0x00475e3e mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00475e43 mov rsi, qword [r15] | rsi = *(r15); 0x00475e46 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00475e4a mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00475e4e xor edi, edi | edi = 0; | label_2: 0x00475e50 mov rax, qword [rip + 0x1d33f1] | rax = *(str.element5); 0x00475e57 movsxd rcx, dword [rip + 0x1d33f2] | rcx = *(0x00649250); 0x00475e5e mov r9d, dword [rip + 0x1d33fb] | r9d = .comment; 0x00475e65 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00475e6a mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00475e6f mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00475e74 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00475e79 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00475e7e mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00475e83 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00475e88 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00475e8d mov rcx, qword [r14 + 0x30] | rcx = *((r14 + 0x30)); 0x00475e91 xor eax, eax | eax = 0; 0x00475e93 cmp rcx, qword [r14 + 0x28] | | if (rcx == *((r14 + 0x28))) { 0x00475e97 jne 0x475ea0 | 0x00475e99 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00475e9e je 0x475ed1 | goto label_1; | } | } 0x00475ea0 add r14, 0x28 | r14 += 0x28; 0x00475ea4 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00475ea9 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00475eae movzx eax, dil | eax = (int32_t) dil; 0x00475eb2 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00475eb7 mov r8, r14 | r8 = r14; 0x00475eba push rax | 0x00475ebb push r10 | 0x00475ebd call 0x47cc90 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_8s_baltst7Choice3ENS3_9allocatorIS6_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSD_11char_traitsIcEEEERKNSD_17basic_string_viewIcSG_EERKT_iRKNS0_14EncoderOptionsEbNS_18b (); 0x00475ec2 add rsp, 0x10 | 0x00475ec6 test eax, eax | | if (eax != 0) { 0x00475ec8 jne 0x475ed1 | goto label_1; | } 0x00475eca mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00475ecf xor eax, eax | eax = 0; | } | label_1: 0x00475ed1 add rsp, 0x50 | 0x00475ed5 pop rbx | 0x00475ed6 pop r14 | 0x00475ed8 pop r15 | 0x00475eda ret | return rax; | }