; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x479d40 */ | #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 */ 0x00479d40 push r15 | 0x00479d42 push r14 | 0x00479d44 push rbx | 0x00479d45 sub rsp, 0x50 | 0x00479d49 mov r15, rsi | r15 = rsi; 0x00479d4c mov r14, rdi | r14 = rdi; 0x00479d4f mov rsi, qword [rsi] | rsi = *(rsi); 0x00479d52 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00479d56 mov rcx, qword [rip + 0x1cf65b] | rcx = *(str.element1); 0x00479d5d movsxd rdi, dword [rip + 0x1cf65c] | rdi = *(0x006493c0); 0x00479d64 mov r9d, dword [rip + 0x1cf665] | r9d = .comment; 0x00479d6b mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00479d6f mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x00479d73 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00479d78 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00479d7d mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00479d82 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00479d87 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00479d8c mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00479d91 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00479d96 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00479d9a mov rcx, qword [r14 + 0x98] | rcx = *((r14 + 0x98)); 0x00479da1 cmp rcx, qword [r14 + 0x90] | | if (rcx == *((r14 + 0x90))) { 0x00479da8 jne 0x479db0 | 0x00479daa cmp byte [rbx + 0x18], 0 | | if (*((rbx + 0x18)) == 0) { 0x00479dae je 0x479dee | goto label_0; | } | } 0x00479db0 lea r8, [r14 + 0x90] | r8 = r14 + 0x90; 0x00479db7 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00479dbc lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00479dc1 movzx eax, al | eax = (int32_t) al; 0x00479dc4 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00479dc9 push rax | 0x00479dca push rbx | 0x00479dcb call 0x47a0c0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_8s_baltst10Enumerated5ValueENS3_9allocatorIS7_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSE_11char_traitsIcEEEERKNSE_17basic_string_viewIcSH_EERKT_iRKNS0_14EncoderOptio (); 0x00479dd0 add rsp, 0x10 | 0x00479dd4 test eax, eax | | if (eax == 0) { 0x00479dd6 jne 0x47a025 | 0x00479ddc mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00479de1 mov rsi, qword [r15] | rsi = *(r15); 0x00479de4 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00479de8 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00479dec xor eax, eax | eax = 0; | label_0: 0x00479dee mov rcx, qword [rip + 0x1cf5eb] | rcx = *(str.element2); 0x00479df5 movsxd rdi, dword [rip + 0x1cf5ec] | rdi = *(0x006493e8); 0x00479dfc mov r9d, dword [rip + 0x1cf5f5] | r9d = *(0x006493f8); 0x00479e03 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00479e08 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00479e0d mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00479e12 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00479e17 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00479e1c mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00479e21 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00479e26 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00479e2a mov rcx, qword [r14 + 8] | rcx = *((r14 + 8)); 0x00479e2e cmp rcx, qword [r14] | | if (rcx == *(r14)) { 0x00479e31 jne 0x479e39 | 0x00479e33 cmp byte [rbx + 0x18], 0 | | if (*((rbx + 0x18)) == 0) { 0x00479e37 je 0x479e73 | goto label_1; | } | } 0x00479e39 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00479e3e lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00479e43 movzx eax, al | eax = (int32_t) al; 0x00479e46 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00479e4b mov r8, r14 | r8 = r14; 0x00479e4e push rax | 0x00479e4f push rbx | 0x00479e50 call 0x473090 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS3_12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS9_ISB_EEEEEEiPbPNS0_9FormatterEPNS6_13basic_ostreamIcS8_EERKNS6_17basic_string_viewIcS8_EERKT_iRKNS0_14EncoderOpt (); 0x00479e55 add rsp, 0x10 | 0x00479e59 test eax, eax | | if (eax != 0) { 0x00479e5b jne 0x47a025 | goto label_2; | } 0x00479e61 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00479e66 mov rsi, qword [r15] | rsi = *(r15); 0x00479e69 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00479e6d mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00479e71 xor eax, eax | eax = 0; | label_1: 0x00479e73 mov rcx, qword [rip + 0x1cf58e] | rcx = *(str.element3); 0x00479e7a movsxd rdi, dword [rip + 0x1cf58f] | rdi = *(0x00649410); 0x00479e81 mov r9d, dword [rip + 0x1cf598] | r9d = *(0x00649420); 0x00479e88 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00479e8d mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00479e92 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00479e97 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00479e9c mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00479ea1 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00479ea6 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00479eab mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00479eaf cmp byte [r14 + 0xb1], 0 | | if (*((r14 + 0xb1)) == 0) { 0x00479eb7 jne 0x479ebf | 0x00479eb9 cmp byte [rbx + 0x19], 0 | | if (*((rbx + 0x19)) == 0) { 0x00479ebd je 0x479efa | goto label_3; | } | } 0x00479ebf lea r8, [r14 + 0xb0] | r8 = r14 + 0xb0; 0x00479ec6 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00479ecb movzx eax, al | eax = (int32_t) al; 0x00479ece lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00479ed3 push rax | 0x00479ed4 push rbx | 0x00479ed5 call 0x473350 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIbEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x00479eda add rsp, 0x10 | 0x00479ede test eax, eax | | if (eax != 0) { 0x00479ee0 jne 0x47a025 | goto label_2; | } 0x00479ee6 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x00479eeb je 0x479ef3 | 0x00479eed mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x00479ef1 jmp 0x479efa | | } else { 0x00479ef3 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00479ef8 xor eax, eax | eax = 0; | } | label_3: 0x00479efa mov rsi, qword [r15] | rsi = *(r15); 0x00479efd mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00479f01 mov rcx, qword [rip + 0x1cf528] | rcx = *(str.element4); 0x00479f08 movsxd rdi, dword [rip + 0x1cf529] | rdi = *(0x00649438); 0x00479f0f mov r9d, dword [rip + 0x1cf532] | r9d = *(0x00649448); 0x00479f16 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00479f1a mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00479f1f mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00479f24 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00479f29 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00479f2e mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00479f33 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00479f38 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00479f3d mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00479f41 cmp byte [r14 + 0x50], 0 | | if (*((r14 + 0x50)) == 0) { 0x00479f46 jne 0x479f4e | 0x00479f48 cmp byte [rbx + 0x19], 0 | | if (*((rbx + 0x19)) == 0) { 0x00479f4c je 0x479f7e | goto label_4; | } | } 0x00479f4e lea r8, [r14 + 0x20] | r8 = r14 + 0x20; 0x00479f52 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00479f57 movzx eax, al | eax = (int32_t) al; 0x00479f5a lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00479f5f push rax | 0x00479f60 push rbx | 0x00479f61 call 0x473580 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIN3bsl12basic_stringIcNSt3_111char_traitsIcEENS5_9allocatorIcEEEEEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNS7_13basic_ostreamIcS9_EERKNS7_17basic_ (); 0x00479f66 add rsp, 0x10 | 0x00479f6a test eax, eax | | if (eax != 0) { 0x00479f6c jne 0x47a025 | goto label_2; | } 0x00479f72 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x00479f77 jne 0x479f7e | 0x00479f79 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; | } | label_4: 0x00479f7e lea rsi, [r14 + 0x60] | 0x00479f82 mov edx, 0x649450 | 0x00479f87 mov rdi, r15 | 0x00479f8a call 0x47a030 | eax = intBloombergLP::baljsn::Encoder_AttributeVisitor::operator(),BloombergLP::bdlat_AttributeInfo>(BloombergLP::bdlb::NullableAllocatedValueconst&,BloombergLP::bdlat_AttributeInfoconst&) (r15, r14 + 0x60, 0x649450); 0x00479f8f test eax, eax | | if (eax != 0) { 0x00479f91 jne 0x47a025 | goto label_2; | } 0x00479f97 mov rsi, qword [r15] | rsi = *(r15); 0x00479f9a mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00479f9e mov rax, qword [rip + 0x1cf4db] | rax = *(str.element6); 0x00479fa5 movsxd rcx, dword [rip + 0x1cf4dc] | rcx = *(0x00649488); 0x00479fac mov r9d, dword [rip + 0x1cf4e5] | r9d = *(0x00649498); 0x00479fb3 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00479fb7 mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); 0x00479fbb mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00479fc0 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00479fc5 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00479fca mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00479fcf mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00479fd4 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00479fd9 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00479fde mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00479fe3 mov rcx, qword [r14 + 0x78] | rcx = *((r14 + 0x78)); 0x00479fe7 xor eax, eax | eax = 0; 0x00479fe9 cmp rcx, qword [r14 + 0x70] | | if (rcx == *((r14 + 0x70))) { 0x00479fed jne 0x479ff5 | 0x00479fef cmp byte [rbx + 0x18], 0 | | if (*((rbx + 0x18)) == 0) { 0x00479ff3 je 0x47a025 | goto label_2; | } | } 0x00479ff5 add r14, 0x70 | r14 += 0x70; 0x00479ff9 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00479ffe lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047a003 movzx eax, dil | eax = (int32_t) dil; 0x0047a007 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047a00c mov r8, r14 | r8 = r14; 0x0047a00f push rax | 0x0047a010 push rbx | 0x0047a011 call 0x47af70 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_8s_baltst10Enumerated5ValueEEENS3_9allocatorISA_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSH_11char_traitsIcEEEERKNSH_17basic_string_viewIcSK_E (); 0x0047a016 add rsp, 0x10 | 0x0047a01a test eax, eax | | if (eax != 0) { 0x0047a01c jne 0x47a025 | goto label_2; | } 0x0047a01e mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047a023 xor eax, eax | eax = 0; | } | label_2: 0x0047a025 add rsp, 0x50 | 0x0047a029 pop rbx | 0x0047a02a pop r14 | 0x0047a02c pop r15 | 0x0047a02e ret | return rax; | }