; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x479e60 */ | #include | ; (fcn) method.int_BloombergLP::s_baltst::Sequence3::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | uint64_t method_int_BloombergLP::s_baltst::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::s_baltst::Sequence3::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x00479e60 push rbp | 0x00479e61 push r14 | 0x00479e63 push rbx | 0x00479e64 sub rsp, 0x50 | 0x00479e68 mov rbx, rsi | rbx = rsi; 0x00479e6b mov r14, rdi | r14 = rdi; 0x00479e6e mov rsi, qword [rsi] | rsi = *(rsi); 0x00479e71 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00479e75 mov rcx, qword [rip + 0x1cf63c] | rcx = *(str.element1); 0x00479e7c movsxd rdi, dword [rip + 0x1cf63d] | rdi = *(0x006494c0); 0x00479e83 mov r9d, dword [rip + 0x1cf646] | r9d = .comment; 0x00479e8a mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x00479e8e mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); 0x00479e91 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00479e96 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00479e9b mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00479ea0 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00479ea5 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00479eaa mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00479eaf mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x00479eb4 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00479eb8 mov rcx, qword [r14 + 0x98] | rcx = *((r14 + 0x98)); 0x00479ebf cmp rcx, qword [r14 + 0x90] | | if (rcx == *((r14 + 0x90))) { 0x00479ec6 jne 0x479ece | 0x00479ec8 cmp byte [rbp + 0x18], 0 | | if (*((rbp + 0x18)) == 0) { 0x00479ecc je 0x479f0b | goto label_0; | } | } 0x00479ece lea r8, [r14 + 0x90] | r8 = r14 + 0x90; 0x00479ed5 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00479eda lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00479edf movzx eax, al | eax = (int32_t) al; 0x00479ee2 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00479ee7 push rax | 0x00479ee8 push rbp | 0x00479ee9 call 0x47a1e0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_8s_baltst10Enumerated5ValueENS3_9allocatorIS7_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSE_11char_traitsIcEEEERKNSE_17basic_string_viewIcSH_EERKT_iRKNS0_14EncoderOptio (); 0x00479eee add rsp, 0x10 | 0x00479ef2 test eax, eax | | if (eax == 0) { 0x00479ef4 jne 0x47a142 | 0x00479efa mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00479efe mov rsi, qword [rbx] | rsi = *(rbx); 0x00479f01 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00479f05 mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x00479f09 xor eax, eax | eax = 0; | label_0: 0x00479f0b mov rcx, qword [rip + 0x1cf5ce] | rcx = *(str.element2); 0x00479f12 movsxd rdi, dword [rip + 0x1cf5cf] | rdi = *(0x006494e8); 0x00479f19 mov r9d, dword [rip + 0x1cf5d8] | r9d = *(0x006494f8); 0x00479f20 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00479f25 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00479f2a mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00479f2f mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00479f34 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00479f39 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00479f3e mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x00479f43 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00479f47 mov rcx, qword [r14 + 8] | rcx = *((r14 + 8)); 0x00479f4b cmp rcx, qword [r14] | | if (rcx == *(r14)) { 0x00479f4e jne 0x479f56 | 0x00479f50 cmp byte [rbp + 0x18], 0 | | if (*((rbp + 0x18)) == 0) { 0x00479f54 je 0x479f8f | goto label_1; | } | } 0x00479f56 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00479f5b lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00479f60 movzx eax, al | eax = (int32_t) al; 0x00479f63 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00479f68 mov r8, r14 | r8 = r14; 0x00479f6b push rax | 0x00479f6c push rbp | 0x00479f6d call 0x4731d0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS3_12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS9_ISB_EEEEEEiPbPNS0_9FormatterEPNS6_13basic_ostreamIcS8_EERKNS6_17basic_string_viewIcS8_EERKT_iRKNS0_14EncoderOpt (); 0x00479f72 add rsp, 0x10 | 0x00479f76 test eax, eax | | if (eax != 0) { 0x00479f78 jne 0x47a142 | goto label_2; | } 0x00479f7e mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00479f82 mov rsi, qword [rbx] | rsi = *(rbx); 0x00479f85 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00479f89 mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x00479f8d xor eax, eax | eax = 0; | label_1: 0x00479f8f mov rcx, qword [rip + 0x1cf572] | rcx = *(str.element3); 0x00479f96 movsxd rdi, dword [rip + 0x1cf573] | rdi = *(0x00649510); 0x00479f9d mov r9d, dword [rip + 0x1cf57c] | r9d = *(0x00649520); 0x00479fa4 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00479fa9 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00479fae mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00479fb3 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00479fb8 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00479fbd mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00479fc2 mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x00479fc7 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00479fcb cmp byte [r14 + 0xb1], 0 | | if (*((r14 + 0xb1)) == 0) { 0x00479fd3 jne 0x479fdb | 0x00479fd5 cmp byte [rbp + 0x19], 0 | | if (*((rbp + 0x19)) == 0) { 0x00479fd9 je 0x47a014 | goto label_3; | } | } 0x00479fdb lea r8, [r14 + 0xb0] | r8 = r14 + 0xb0; 0x00479fe2 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00479fe7 movzx eax, al | eax = (int32_t) al; 0x00479fea lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00479fef push rax | 0x00479ff0 push rbp | 0x00479ff1 call 0x473490 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIbEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x00479ff6 add rsp, 0x10 | 0x00479ffa test eax, eax | | if (eax != 0) { 0x00479ffc jne 0x47a142 | goto label_2; | } 0x0047a002 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x0047a007 je 0x47a00e | 0x0047a009 mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); 0x0047a00c jmp 0x47a014 | | } else { 0x0047a00e mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x0047a012 xor eax, eax | eax = 0; | } | label_3: 0x0047a014 mov rsi, qword [rbx] | rsi = *(rbx); 0x0047a017 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x0047a01b mov rcx, qword [rip + 0x1cf50e] | rcx = *(str.element4); 0x0047a022 movsxd rdi, dword [rip + 0x1cf50f] | rdi = *(0x00649538); 0x0047a029 mov r9d, dword [rip + 0x1cf518] | r9d = *(0x00649548); 0x0047a030 mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x0047a034 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047a039 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047a03e mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047a043 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047a048 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047a04d mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047a052 mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x0047a057 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047a05b cmp byte [r14 + 0x50], 0 | | if (*((r14 + 0x50)) == 0) { 0x0047a060 jne 0x47a068 | 0x0047a062 cmp byte [rbp + 0x19], 0 | | if (*((rbp + 0x19)) == 0) { 0x0047a066 je 0x47a097 | goto label_4; | } | } 0x0047a068 lea r8, [r14 + 0x20] | r8 = r14 + 0x20; 0x0047a06c lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047a071 movzx eax, al | eax = (int32_t) al; 0x0047a074 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0047a079 push rax | 0x0047a07a push rbp | 0x0047a07b call 0x4736c0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIN3bsl12basic_stringIcNSt3_111char_traitsIcEENS5_9allocatorIcEEEEEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNS7_13basic_ostreamIcS9_EERKNS7_17basic_ (); 0x0047a080 add rsp, 0x10 | 0x0047a084 test eax, eax | | if (eax != 0) { 0x0047a086 jne 0x47a142 | goto label_2; | } 0x0047a08c cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x0047a091 jne 0x47a097 | 0x0047a093 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; | } | label_4: 0x0047a097 lea rsi, [r14 + 0x60] | 0x0047a09b mov edx, 0x649550 | 0x0047a0a0 mov rdi, rbx | 0x0047a0a3 call 0x47a150 | eax = intBloombergLP::baljsn::Encoder_AttributeVisitor::operator(),BloombergLP::bdlat_AttributeInfo>(BloombergLP::bdlb::NullableAllocatedValueconst&,BloombergLP::bdlat_AttributeInfoconst&) (rbx, r14 + 0x60, 0x649550); 0x0047a0a8 test eax, eax | | if (eax != 0) { 0x0047a0aa jne 0x47a142 | goto label_2; | } 0x0047a0b0 mov rsi, qword [rbx] | rsi = *(rbx); 0x0047a0b3 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x0047a0b7 mov rcx, qword [rip + 0x1cf4c2] | rcx = *(str.element6); 0x0047a0be movsxd rbp, dword [rip + 0x1cf4c3] | rbp = *(0x00649588); 0x0047a0c5 mov r9d, dword [rip + 0x1cf4cc] | r9d = *(0x00649598); 0x0047a0cc mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x0047a0d0 mov dil, byte [rbx + 0x18] | dil = *((rbx + 0x18)); 0x0047a0d4 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047a0d9 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047a0de mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047a0e3 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047a0e8 mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x0047a0ed mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047a0f2 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0047a0f7 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047a0fc mov rcx, qword [r14 + 0x78] | rcx = *((r14 + 0x78)); 0x0047a100 xor ebp, ebp | ebp = 0; 0x0047a102 cmp rcx, qword [r14 + 0x70] | | if (rcx == *((r14 + 0x70))) { 0x0047a106 jne 0x47a10e | 0x0047a108 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x0047a10c je 0x47a140 | goto label_5; | } | } 0x0047a10e add r14, 0x70 | r14 += 0x70; 0x0047a112 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047a117 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047a11c movzx r10d, dil | r10d = (int32_t) dil; 0x0047a120 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047a125 mov r8, r14 | r8 = r14; 0x0047a128 push r10 | 0x0047a12a push rax | 0x0047a12b call 0x47b080 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_8s_baltst10Enumerated5ValueEEENS3_9allocatorISA_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSH_11char_traitsIcEEEERKNSH_17basic_string_viewIcSK_E (); 0x0047a130 add rsp, 0x10 | 0x0047a134 test eax, eax | | if (eax != 0) { 0x0047a136 je 0x47a13c | 0x0047a138 mov ebp, eax | 0x0047a13a jmp 0x47a140 | | } else { 0x0047a13c mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; | } | label_5: 0x0047a140 mov eax, ebp | eax = ebp; | } | label_2: 0x0047a142 add rsp, 0x50 | 0x0047a146 pop rbx | 0x0047a147 pop r14 | 0x0047a149 pop rbp | 0x0047a14a ret | return rax; | }