; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x47d0b0 */ | #include | ; (fcn) method.int_BloombergLP::s_baltst::Sequence2::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | uint64_t method_int_BloombergLP::s_baltst::Sequence2::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::Sequence2::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x0047d0b0 push r15 | 0x0047d0b2 push r14 | 0x0047d0b4 push rbx | 0x0047d0b5 sub rsp, 0x50 | 0x0047d0b9 mov r15, rsi | r15 = rsi; 0x0047d0bc mov r14, rdi | r14 = rdi; 0x0047d0bf mov rsi, qword [rsi] | rsi = *(rsi); 0x0047d0c2 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047d0c6 mov r8, qword [rip + 0x1cc1bb] | r8 = *(str.element1); 0x0047d0cd movsxd rdi, dword [rip + 0x1cc1bc] | rdi = *(0x00649290); 0x0047d0d4 mov r9d, dword [rip + 0x1cc1c5] | r9d = *(0x006492a0); 0x0047d0db mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x0047d0df movzx eax, byte [r15 + 0x18] | eax = *((r15 + 0x18)); 0x0047d0e4 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d0e9 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d0ee mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d0f3 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047d0f8 mov qword [rsp + 0x28], r8 | *((rsp + 0x28)) = r8; 0x0047d0fd mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047d102 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d107 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x0047d10c mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047d110 lea r8, [r14 + 0x88] | r8 = r14 + 0x88; 0x0047d117 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0047d11c push rax | 0x0047d11d push rbx | 0x0047d11e call 0x464ad0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS_18bdlat_TypeCategory6SimpleEEEiPbPNS0_9FormatterEPNS5_13basic_ostreamIcS7_EERKNS5_17basic_string_viewIcS7_EERKT_iRKNS0_14Enc (); 0x0047d123 add rsp, 0x10 | 0x0047d127 test eax, eax | | if (eax == 0) { 0x0047d129 jne 0x47d13b | 0x0047d12b cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x0047d130 jne 0x47d13b | 0x0047d132 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047d137 xor eax, eax | eax = 0; 0x0047d139 jmp 0x47d147 | | } | } else { 0x0047d13b test eax, eax | | if (eax != 0) { 0x0047d13d jne 0x47d46c | goto label_0; | } 0x0047d143 mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); | } 0x0047d147 lea rdi, [r14 + 0xb8] | 0x0047d14e movups xmm0, xmmword [r15] | __asm ("movups xmm0, xmmword [r15]"); 0x0047d152 mov rcx, qword [rip + 0x1cc157] | rcx = *(str.element2); 0x0047d159 movsxd rdx, dword [rip + 0x1cc158] | rdx = *(0x006492b8); 0x0047d160 mov esi, dword [rip + 0x1cc162] | esi = *(0x006492c8); 0x0047d166 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x0047d16a mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d16f movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x0047d174 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047d179 mov qword [rsp + 0x30], rdx | *((rsp + 0x30)) = rdx; 0x0047d17e mov dword [rsp + 0x38], esi | *((rsp + 0x38)) = esi; 0x0047d182 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x0047d187 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047d18b lea rsi, [rsp + 0x10] | 0x0047d190 call 0x477420 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(unsignedchar const&,BloombergLP::baljsn::Encoder_AttributeDispatcher&) (r14 + 0xb8, rsp + 0x10); 0x0047d195 test eax, eax | | if (eax == 0) { 0x0047d197 jne 0x47d1aa | 0x0047d199 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x0047d19e jne 0x47d1aa | 0x0047d1a0 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047d1a5 xor r10d, r10d | r10d = 0; 0x0047d1a8 jmp 0x47d1b6 | | } | } else { 0x0047d1aa test eax, eax | | if (eax != 0) { 0x0047d1ac jne 0x47d46c | goto label_0; | } 0x0047d1b2 mov r10b, byte [r15 + 0x18] | r10b = *((r15 + 0x18)); | } 0x0047d1b6 lea r8, [r14 + 0x40] | 0x0047d1ba mov rsi, qword [r15] | 0x0047d1bd mov rdx, qword [r15 + 8] | 0x0047d1c1 mov rdi, qword [rip + 0x1cc110] | rdi = *(str.element3); 0x0047d1c8 movsxd rbx, dword [rip + 0x1cc111] | rbx = *(0x006492e0); 0x0047d1cf mov r9d, dword [rip + 0x1cc11a] | 0x0047d1d6 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047d1da mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d1df mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d1e4 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d1e9 lea rcx, [rsp + 0x28] | 0x0047d1ee mov qword [rsp + 0x28], rdi | *((rsp + 0x28)) = rdi; 0x0047d1f3 mov qword [rsp + 0x30], rbx | *((rsp + 0x30)) = rbx; 0x0047d1f8 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d1fd mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0047d202 mov byte [rsp + 0x48], r10b | *((rsp + 0x48)) = r10b; 0x0047d207 movzx ebx, r10b | ebx = (int32_t) r10b; 0x0047d20b lea rdi, [rsp + 0x10] | 0x0047d210 push rbx | 0x0047d211 push rax | 0x0047d212 call 0x47d480 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,BloombergLP::bdlt::DatetimeTzconst&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool,BloombergLP::bdlat_TypeCategory::Simple) (rsp + 0x10, *(r15), *((r15 + 8)), rsp + 0x28, r14 + 0x40, *(0x006492f0)); 0x0047d217 add rsp, 0x10 | 0x0047d21b test eax, eax | | if (eax == 0) { 0x0047d21d jne 0x47d22f | 0x0047d21f cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x0047d224 jne 0x47d22f | 0x0047d226 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047d22b xor edi, edi | edi = 0; 0x0047d22d jmp 0x47d23b | | } | } else { 0x0047d22f test eax, eax | | if (eax != 0) { 0x0047d231 jne 0x47d46c | goto label_0; | } 0x0047d237 mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); | } 0x0047d23b mov rsi, qword [r15] | rsi = *(r15); 0x0047d23e mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047d242 mov rcx, qword [rip + 0x1cc0b7] | rcx = *(str.element4); 0x0047d249 movsxd rbx, dword [rip + 0x1cc0b8] | rbx = *(0x00649308); 0x0047d250 mov r9d, dword [rip + 0x1cc0c1] | r9d = .comment; 0x0047d257 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047d25b mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d260 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d265 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d26a mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047d26f mov qword [rsp + 0x30], rbx | *((rsp + 0x30)) = rbx; 0x0047d274 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d279 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0047d27e mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047d283 cmp byte [r14 + 0x78], 0 | | if (*((r14 + 0x78)) == 0) { 0x0047d288 jne 0x47d290 | 0x0047d28a cmp byte [rax + 0x19], 0 | | if (*((rax + 0x19)) == 0) { 0x0047d28e je 0x47d2c9 | goto label_1; | } | } 0x0047d290 lea r8, [r14 + 0x60] | 0x0047d294 lea rcx, [rsp + 0x28] | 0x0047d299 movzx ebx, dil | ebx = (int32_t) dil; 0x0047d29d lea rdi, [rsp + 0x10] | 0x0047d2a2 push rbx | 0x0047d2a3 push rax | 0x0047d2a4 call 0x47d5f0 | 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 + 0x60, r9); 0x0047d2a9 add rsp, 0x10 | 0x0047d2ad test eax, eax | | if (eax == 0) { 0x0047d2af jne 0x47d46c | 0x0047d2b5 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x0047d2ba je 0x47d2c2 | 0x0047d2bc mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); 0x0047d2c0 jmp 0x47d2c9 | | } else { 0x0047d2c2 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047d2c7 xor edi, edi | edi = 0; | } | label_1: 0x0047d2c9 mov rsi, qword [r15] | rsi = *(r15); 0x0047d2cc mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047d2d0 mov rcx, qword [rip + 0x1cc051] | rcx = *(str.element5); 0x0047d2d7 movsxd rbx, dword [rip + 0x1cc052] | rbx = *(0x00649330); 0x0047d2de mov r9d, dword [rip + 0x1cc05b] | r9d = .comment; 0x0047d2e5 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047d2e9 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d2ee mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d2f3 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d2f8 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047d2fd mov qword [rsp + 0x30], rbx | *((rsp + 0x30)) = rbx; 0x0047d302 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d307 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0047d30c mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047d311 cmp byte [r14 + 0x58], 0 | | if (*((r14 + 0x58)) == 0) { 0x0047d316 jne 0x47d31e | 0x0047d318 cmp byte [rax + 0x19], 0 | | if (*((rax + 0x19)) == 0) { 0x0047d31c je 0x47d357 | goto label_2; | } | } 0x0047d31e lea r8, [r14 + 0x50] | r8 = r14 + 0x50; 0x0047d322 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047d327 movzx ebx, dil | ebx = (int32_t) dil; 0x0047d32b lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0047d330 push rbx | 0x0047d331 push rax | 0x0047d332 call 0x47d760 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIdEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x0047d337 add rsp, 0x10 | 0x0047d33b test eax, eax | | if (eax != 0) { 0x0047d33d jne 0x47d46c | goto label_0; | } 0x0047d343 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x0047d348 je 0x47d350 | 0x0047d34a mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); 0x0047d34e jmp 0x47d357 | | } else { 0x0047d350 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047d355 xor edi, edi | edi = 0; | } | label_2: 0x0047d357 mov rsi, qword [r15] | rsi = *(r15); 0x0047d35a mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047d35e mov rax, qword [rip + 0x1cbfeb] | rax = *(str.element6); 0x0047d365 movsxd rcx, dword [rip + 0x1cbfec] | rcx = *(0x00649358); 0x0047d36c mov r9d, dword [rip + 0x1cbff5] | r9d = *(0x00649368); 0x0047d373 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x0047d377 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d37c mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d381 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d386 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0047d38b mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0047d390 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d395 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x0047d39a mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047d39f mov rax, qword [r14 + 8] | rax = *((r14 + 8)); 0x0047d3a3 cmp rax, qword [r14] | | if (rax == *(r14)) { 0x0047d3a6 jne 0x47d3af | 0x0047d3a8 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x0047d3ad je 0x47d3eb | goto label_3; | } | } 0x0047d3af mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047d3b4 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047d3b9 movzx eax, dil | eax = (int32_t) dil; 0x0047d3bd lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047d3c2 mov r8, r14 | r8 = r14; 0x0047d3c5 push rax | 0x0047d3c6 push r10 | 0x0047d3c8 call 0x47d8d0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS3_12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEEEENSB_ISE_EEEEEEiPbPNS0_9FormatterEPNS8_13basic_ostreamIcSA_EERKNS8_17basic_string_viewIcSA (); 0x0047d3cd add rsp, 0x10 | 0x0047d3d1 test eax, eax | | if (eax != 0) { 0x0047d3d3 jne 0x47d46c | goto label_0; | } 0x0047d3d9 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047d3de mov rsi, qword [r15] | rsi = *(r15); 0x0047d3e1 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047d3e5 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x0047d3e9 xor edi, edi | edi = 0; | label_3: 0x0047d3eb mov rax, qword [rip + 0x1cbf86] | rax = *(str.element7); 0x0047d3f2 movsxd rcx, dword [rip + 0x1cbf87] | rcx = *(0x00649380); 0x0047d3f9 mov r9d, dword [rip + 0x1cbf90] | r9d = *(0x00649390); 0x0047d400 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047d405 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047d40a mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047d40f mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x0047d414 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0047d419 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047d41e mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x0047d423 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047d428 mov rcx, qword [r14 + 0x28] | rcx = *((r14 + 0x28)); 0x0047d42c xor eax, eax | eax = 0; 0x0047d42e cmp rcx, qword [r14 + 0x20] | | if (rcx == *((r14 + 0x20))) { 0x0047d432 jne 0x47d43b | 0x0047d434 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x0047d439 je 0x47d46c | goto label_0; | } | } 0x0047d43b add r14, 0x20 | r14 += 0x20; 0x0047d43f mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047d444 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047d449 movzx eax, dil | eax = (int32_t) dil; 0x0047d44d lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047d452 mov r8, r14 | r8 = r14; 0x0047d455 push rax | 0x0047d456 push r10 | 0x0047d458 call 0x47db30 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_8s_baltst12CustomStringEEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT (); 0x0047d45d add rsp, 0x10 | 0x0047d461 test eax, eax | | if (eax != 0) { 0x0047d463 jne 0x47d46c | goto label_0; | } 0x0047d465 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047d46a xor eax, eax | eax = 0; | } | label_0: 0x0047d46c add rsp, 0x50 | 0x0047d470 pop rbx | 0x0047d471 pop r14 | 0x0047d473 pop r15 | 0x0047d475 ret | return rax; | }