; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x476520 */ | #include | ; (fcn) method.int_BloombergLP::s_baltst::Sequence6::accessAttributes_BloombergLP::baljsn.Encoder_AttributeVisitor__BloombergLP::baljsn::Encoder_AttributeVisitor__const () | uint64_t method_int_BloombergLP::s_baltst::Sequence6::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::Sequence6::accessAttributes(BloombergLP::baljsn::Encoder_AttributeVisitor&) const */ 0x00476520 push r15 | 0x00476522 push r14 | 0x00476524 push rbx | 0x00476525 sub rsp, 0x50 | 0x00476529 mov r15, rsi | r15 = rsi; 0x0047652c mov r14, rdi | r14 = rdi; 0x0047652f mov rsi, qword [rsi] | rsi = *(rsi); 0x00476532 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00476536 mov rcx, qword [rip + 0x1d33bb] | rcx = *(str.element1); 0x0047653d movsxd rdi, dword [rip + 0x1d33bc] | rdi = *(0x00649900); 0x00476544 mov r9d, dword [rip + 0x1d33c5] | r9d = *(0x00649910); 0x0047654b mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x0047654f mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x00476553 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476558 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047655d mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476562 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476567 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047656c mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476571 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00476576 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047657a cmp byte [r14 + 0x16e], 0 | | if (*((r14 + 0x16e)) == 0) { 0x00476582 jne 0x47658a | 0x00476584 cmp byte [rbx + 0x19], 0 | | if (*((rbx + 0x19)) == 0) { 0x00476588 je 0x4765c5 | goto label_0; | } | } 0x0047658a lea r8, [r14 + 0x16d] | r8 = r14 + 0x16d; 0x00476591 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476596 movzx eax, al | eax = (int32_t) al; 0x00476599 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0047659e push rax | 0x0047659f push rbx | 0x004765a0 call 0x476d40 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIhEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x004765a5 add rsp, 0x10 | 0x004765a9 test eax, eax | | if (eax == 0) { 0x004765ab jne 0x476d34 | 0x004765b1 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x004765b6 je 0x4765be | 0x004765b8 mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x004765bc jmp 0x4765c5 | | } else { 0x004765be mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x004765c3 xor eax, eax | eax = 0; | } | label_0: 0x004765c5 mov rsi, qword [r15] | rsi = *(r15); 0x004765c8 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x004765cc mov rcx, qword [rip + 0x1d334d] | rcx = *(str.element2); 0x004765d3 movsxd rdi, dword [rip + 0x1d334e] | rdi = *(0x00649928); 0x004765da mov r9d, dword [rip + 0x1d3357] | r9d = *(0x00649938); 0x004765e1 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x004765e5 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004765ea mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x004765ef mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x004765f4 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x004765f9 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x004765fe mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476603 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00476608 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047660c cmp byte [r14 + 0xd0], 0 | | if (*((r14 + 0xd0)) == 0) { 0x00476614 jne 0x47661c | 0x00476616 cmp byte [rbx + 0x19], 0 | | if (*((rbx + 0x19)) == 0) { 0x0047661a je 0x476657 | goto label_1; | } | } 0x0047661c lea r8, [r14 + 0xa0] | r8 = r14 + 0xa0; 0x00476623 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476628 movzx eax, al | eax = (int32_t) al; 0x0047662b lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00476630 push rax | 0x00476631 push rbx | 0x00476632 call 0x476f50 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueINS_8s_baltst12CustomStringEEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSD_11char_traitsIcEEEERKNSD_17basic_string_viewIcSG_E (); 0x00476637 add rsp, 0x10 | 0x0047663b test eax, eax | | if (eax != 0) { 0x0047663d jne 0x476d34 | goto label_2; | } 0x00476643 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x00476648 je 0x476650 | 0x0047664a mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x0047664e jmp 0x476657 | | } else { 0x00476650 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00476655 xor eax, eax | eax = 0; | } | label_1: 0x00476657 mov rsi, qword [r15] | rsi = *(r15); 0x0047665a mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047665e mov rcx, qword [rip + 0x1d32e3] | rcx = *(str.element3); 0x00476665 movsxd rdi, dword [rip + 0x1d32e4] | rdi = *(0x00649950); 0x0047666c mov r9d, dword [rip + 0x1d32ed] | r9d = *(0x00649960); 0x00476673 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x00476677 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047667c mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476681 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476686 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047668b mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x00476690 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476695 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x0047669a mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047669e cmp byte [r14 + 0x164], 0 | | if (*((r14 + 0x164)) == 0) { 0x004766a6 jne 0x4766ae | 0x004766a8 cmp byte [rbx + 0x19], 0 | | if (*((rbx + 0x19)) == 0) { 0x004766ac je 0x4766e9 | goto label_3; | } | } 0x004766ae lea r8, [r14 + 0x160] | r8 = r14 + 0x160; 0x004766b5 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x004766ba movzx eax, al | eax = (int32_t) al; 0x004766bd lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x004766c2 push rax | 0x004766c3 push rbx | 0x004766c4 call 0x477190 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueINS_8s_baltst9CustomIntEEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSD_11char_traitsIcEEEERKNSD_17basic_string_viewIcSG_EERKT (); 0x004766c9 add rsp, 0x10 | 0x004766cd test eax, eax | | if (eax != 0) { 0x004766cf jne 0x476d34 | goto label_2; | } 0x004766d5 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x004766da je 0x4766e2 | 0x004766dc mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); 0x004766e0 jmp 0x4766e9 | | } else { 0x004766e2 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x004766e7 xor eax, eax | eax = 0; | } | label_3: 0x004766e9 lea rdi, [r14 + 0x110] | 0x004766f0 movups xmm0, xmmword [r15] | __asm ("movups xmm0, xmmword [r15]"); 0x004766f4 mov rcx, qword [rip + 0x1d3275] | rcx = *(str.element4); 0x004766fb movsxd rdx, dword [rip + 0x1d3276] | rdx = *(0x00649978); 0x00476702 mov esi, dword [rip + 0x1d3280] | esi = *(0x00649988); 0x00476708 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x0047670c mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476711 movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x00476716 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047671b mov qword [rsp + 0x30], rdx | *((rsp + 0x30)) = rdx; 0x00476720 mov dword [rsp + 0x38], esi | *((rsp + 0x38)) = esi; 0x00476724 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00476729 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047672d lea rsi, [rsp + 0x10] | 0x00476732 call 0x4773a0 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(unsignedintconst&,BloombergLP::baljsn::Encoder_AttributeDispatcher&) (r14 + 0x110, rsp + 0x10); 0x00476737 test eax, eax | | if (eax == 0) { 0x00476739 jne 0x47674b | 0x0047673b cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x00476740 jne 0x47674b | 0x00476742 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00476747 xor eax, eax | eax = 0; 0x00476749 jmp 0x476757 | | } | } else { 0x0047674b test eax, eax | | if (eax != 0) { 0x0047674d jne 0x476d34 | goto label_2; | } 0x00476753 mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); | } 0x00476757 lea rdi, [r14 + 0x16c] | 0x0047675e movups xmm0, xmmword [r15] | __asm ("movups xmm0, xmmword [r15]"); 0x00476762 mov rcx, qword [rip + 0x1d322f] | rcx = *(str.element5); 0x00476769 movsxd rdx, dword [rip + 0x1d3230] | rdx = *(0x006499a0); 0x00476770 mov esi, dword [rip + 0x1d323a] | esi = *(0x006499b0); 0x00476776 mov rbx, qword [r15 + 0x10] | rbx = *((r15 + 0x10)); 0x0047677a mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047677f movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x00476784 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476789 mov qword [rsp + 0x30], rdx | *((rsp + 0x30)) = rdx; 0x0047678e mov dword [rsp + 0x38], esi | *((rsp + 0x38)) = esi; 0x00476792 mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x00476797 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047679b lea rsi, [rsp + 0x10] | 0x004767a0 call 0x477420 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(unsignedchar const&,BloombergLP::baljsn::Encoder_AttributeDispatcher&) (r14 + 0x16c, rsp + 0x10); 0x004767a5 test eax, eax | | if (eax == 0) { 0x004767a7 jne 0x4767b9 | 0x004767a9 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x004767ae jne 0x4767b9 | 0x004767b0 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x004767b5 xor edi, edi | edi = 0; 0x004767b7 jmp 0x4767c5 | | } | } else { 0x004767b9 test eax, eax | | if (eax != 0) { 0x004767bb jne 0x476d34 | goto label_2; | } 0x004767c1 mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); | } 0x004767c5 mov rsi, qword [r15] | rsi = *(r15); 0x004767c8 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x004767cc mov rcx, qword [rip + 0x1d31ed] | rcx = *(str.element6); 0x004767d3 movsxd rbx, dword [rip + 0x1d31ee] | rbx = *(0x006499c8); 0x004767da mov r9d, dword [rip + 0x1d31f7] | r9d = *(0x006499d8); 0x004767e1 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x004767e5 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004767ea mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x004767ef mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x004767f4 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x004767f9 mov qword [rsp + 0x30], rbx | *((rsp + 0x30)) = rbx; 0x004767fe mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476803 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00476808 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x0047680d mov rcx, qword [r14 + 0x120] | rcx = *((r14 + 0x120)); 0x00476814 cmp rcx, qword [r14 + 0x118] | | if (rcx == *((r14 + 0x118))) { 0x0047681b jne 0x476823 | 0x0047681d cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00476821 je 0x476862 | goto label_4; | } | } 0x00476823 lea r8, [r14 + 0x118] | r8 = r14 + 0x118; 0x0047682a mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x0047682f lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476834 movzx ebx, dil | ebx = (int32_t) dil; 0x00476838 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x0047683d push rbx | 0x0047683e push rax | 0x0047683f call 0x4774a0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_8s_baltst9CustomIntEEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRK (); 0x00476844 add rsp, 0x10 | 0x00476848 test eax, eax | | if (eax != 0) { 0x0047684a jne 0x476d34 | goto label_2; | } 0x00476850 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00476855 mov rsi, qword [r15] | rsi = *(r15); 0x00476858 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0047685c mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x00476860 xor edi, edi | edi = 0; | label_4: 0x00476862 mov rbx, qword [rip + 0x1d317f] | rbx = *(str.element7); 0x00476869 movsxd r8, dword [rip + 0x1d3180] | r8 = *(0x006499f0); 0x00476870 mov r9d, dword [rip + 0x1d3189] | r9d = *(0x00649a00); 0x00476877 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047687c mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476881 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476886 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x0047688b mov qword [rsp + 0x28], rbx | *((rsp + 0x28)) = rbx; 0x00476890 mov qword [rsp + 0x30], r8 | *((rsp + 0x30)) = r8; 0x00476895 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047689a mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0047689f mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x004768a4 lea r8, [r14 + 0xe0] | r8 = r14 + 0xe0; 0x004768ab movzx ebx, dil | ebx = (int32_t) dil; 0x004768af lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x004768b4 push rbx | 0x004768b5 push rax | 0x004768b6 call 0x464ad0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS_18bdlat_TypeCategory6SimpleEEEiPbPNS0_9FormatterEPNS5_13basic_ostreamIcS7_EERKNS5_17basic_string_viewIcS7_EERKT_iRKNS0_14Enc (); 0x004768bb add rsp, 0x10 | 0x004768bf test eax, eax | | if (eax == 0) { 0x004768c1 jne 0x4768d3 | 0x004768c3 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x004768c8 jne 0x4768d3 | 0x004768ca mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x004768cf xor eax, eax | eax = 0; 0x004768d1 jmp 0x4768df | | } | } else { 0x004768d3 test eax, eax | | if (eax != 0) { 0x004768d5 jne 0x476d34 | goto label_2; | } 0x004768db mov al, byte [r15 + 0x18] | al = *((r15 + 0x18)); | } 0x004768df movups xmm0, xmmword [r15] | __asm ("movups xmm0, xmmword [r15]"); 0x004768e3 mov rcx, qword [rip + 0x1d3126] | rcx = *(str.element8); 0x004768ea movsxd rdx, dword [rip + 0x1d3127] | rdx = *(0x00649a18); 0x004768f1 mov esi, dword [rip + 0x1d3131] | esi = *(0x00649a28); 0x004768f7 mov rdi, qword [r15 + 0x10] | rdi = *((r15 + 0x10)); 0x004768fb mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476900 movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x00476905 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047690a mov qword [rsp + 0x30], rdx | *((rsp + 0x30)) = rdx; 0x0047690f mov dword [rsp + 0x38], esi | *((rsp + 0x38)) = esi; 0x00476913 mov qword [rsp + 0x40], rdi | *((rsp + 0x40)) = rdi; 0x00476918 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x0047691c lea rdi, [r14 + 0x168] | 0x00476923 lea rsi, [rsp + 0x10] | 0x00476928 call 0x464c50 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(intconst&,BloombergLP::baljsn::Encoder_AttributeDispatcher&) (r14 + 0x168, rsp + 0x10); 0x0047692d test eax, eax | | if (eax == 0) { 0x0047692f jne 0x476941 | 0x00476931 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x00476936 jne 0x476941 | 0x00476938 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x0047693d xor edi, edi | edi = 0; 0x0047693f jmp 0x47694d | | } | } else { 0x00476941 test eax, eax | | if (eax != 0) { 0x00476943 jne 0x476d34 | goto label_2; | } 0x00476949 mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); | } 0x0047694d mov rsi, qword [r15] | rsi = *(r15); 0x00476950 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00476954 mov rcx, qword [rip + 0x1d30dd] | rcx = *(str.element9); 0x0047695b movsxd rbx, dword [rip + 0x1d30de] | rbx = *(0x00649a40); 0x00476962 mov r9d, dword [rip + 0x1d30e7] | r9d = *(0x00649a50); 0x00476969 mov rax, qword [r15 + 0x10] | rax = *((r15 + 0x10)); 0x0047696d mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476972 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476977 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x0047697c mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476981 mov qword [rsp + 0x30], rbx | *((rsp + 0x30)) = rbx; 0x00476986 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047698b mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00476990 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476995 cmp byte [r14 + 0x15c], 0 | | if (*((r14 + 0x15c)) == 0) { 0x0047699d jne 0x4769a5 | 0x0047699f cmp byte [rax + 0x19], 0 | | if (*((rax + 0x19)) == 0) { 0x004769a3 je 0x4769e1 | goto label_5; | } | } 0x004769a5 lea r8, [r14 + 0x158] | r8 = r14 + 0x158; 0x004769ac lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x004769b1 movzx ebx, dil | ebx = (int32_t) dil; 0x004769b5 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x004769ba push rbx | 0x004769bb push rax | 0x004769bc call 0x477700 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIjEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x004769c1 add rsp, 0x10 | 0x004769c5 test eax, eax | | if (eax != 0) { 0x004769c7 jne 0x476d34 | goto label_2; | } 0x004769cd cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x004769d2 je 0x4769da | 0x004769d4 mov dil, byte [r15 + 0x18] | dil = *((r15 + 0x18)); 0x004769d8 jmp 0x4769e1 | | } else { 0x004769da mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x004769df xor edi, edi | edi = 0; | } | label_5: 0x004769e1 mov rsi, qword [r15] | rsi = *(r15); 0x004769e4 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x004769e8 mov rax, qword [rip + 0x1d3071] | rax = *(str.element10); 0x004769ef movsxd rcx, dword [rip + 0x1d3072] | rcx = *(0x00649a68); 0x004769f6 mov r9d, dword [rip + 0x1d307b] | r9d = *(0x00649a78); 0x004769fd mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00476a01 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476a06 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476a0b mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476a10 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00476a15 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00476a1a mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476a1f mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00476a24 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476a29 mov rax, qword [r14 + 0x28] | rax = *((r14 + 0x28)); 0x00476a2d cmp rax, qword [r14 + 0x20] | | if (rax == *((r14 + 0x20))) { 0x00476a31 jne 0x476a3a | 0x00476a33 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00476a38 je 0x476a77 | goto label_6; | } | } 0x00476a3a lea r8, [r14 + 0x20] | r8 = r14 + 0x20; 0x00476a3e mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476a43 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476a48 movzx eax, dil | eax = (int32_t) dil; 0x00476a4c lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00476a51 push rax | 0x00476a52 push r10 | 0x00476a54 call 0x477910 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorIhNS3_9allocatorIhEEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptionsEbNS_18bdlat_TypeCategory5Arra (); 0x00476a59 add rsp, 0x10 | 0x00476a5d test eax, eax | | if (eax != 0) { 0x00476a5f jne 0x476d34 | goto label_2; | } 0x00476a65 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00476a6a mov rsi, qword [r15] | rsi = *(r15); 0x00476a6d mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00476a71 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00476a75 xor edi, edi | edi = 0; | label_6: 0x00476a77 mov rax, qword [rip + 0x1d300a] | rax = *(str.element11); 0x00476a7e movsxd rcx, dword [rip + 0x1d300b] | rcx = *(0x00649a90); 0x00476a85 mov r9d, dword [rip + 0x1d3014] | r9d = *(0x00649aa0); 0x00476a8c mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476a91 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476a96 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476a9b mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00476aa0 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00476aa5 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476aaa mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00476aaf mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476ab4 mov rax, qword [r14 + 0x88] | rax = *((r14 + 0x88)); 0x00476abb cmp rax, qword [r14 + 0x80] | | if (rax == *((r14 + 0x80))) { 0x00476ac2 jne 0x476acb | 0x00476ac4 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00476ac9 je 0x476b0b | goto label_7; | } | } 0x00476acb lea r8, [r14 + 0x80] | 0x00476ad2 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476ad7 lea rcx, [rsp + 0x28] | 0x00476adc movzx eax, dil | eax = (int32_t) dil; 0x00476ae0 lea rdi, [rsp + 0xf] | 0x00476ae5 push rax | 0x00476ae6 push r10 | 0x00476ae8 call 0x477b60 | 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 + 0x80, r9); 0x00476aed add rsp, 0x10 | 0x00476af1 test eax, eax | | if (eax != 0) { 0x00476af3 jne 0x476d34 | goto label_2; | } 0x00476af9 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00476afe mov rsi, qword [r15] | rsi = *(r15); 0x00476b01 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00476b05 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00476b09 xor edi, edi | edi = 0; | label_7: 0x00476b0b mov rax, qword [rip + 0x1d2f9e] | rax = *(str.element12); 0x00476b12 movsxd rcx, dword [rip + 0x1d2f9f] | rcx = *(0x00649ab8); 0x00476b19 mov r9d, dword [rip + 0x1d2fa8] | r9d = *(0x00649ac8); 0x00476b20 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476b25 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476b2a mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476b2f mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00476b34 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00476b39 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476b3e mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00476b43 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476b48 mov rax, qword [r14 + 8] | rax = *((r14 + 8)); 0x00476b4c cmp rax, qword [r14] | | if (rax == *(r14)) { 0x00476b4f jne 0x476b58 | 0x00476b51 cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00476b56 je 0x476b94 | goto label_8; | } | } 0x00476b58 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476b5d lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476b62 movzx eax, dil | eax = (int32_t) dil; 0x00476b66 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00476b6b mov r8, r14 | r8 = r14; 0x00476b6e push rax | 0x00476b6f push r10 | 0x00476b71 call 0x477e20 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorIjNS3_9allocatorIjEEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptionsEbNS_18bdlat_TypeCategory5Arra (); 0x00476b76 add rsp, 0x10 | 0x00476b7a test eax, eax | | if (eax != 0) { 0x00476b7c jne 0x476d34 | goto label_2; | } 0x00476b82 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00476b87 mov rsi, qword [r15] | rsi = *(r15); 0x00476b8a mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00476b8e mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00476b92 xor edi, edi | edi = 0; | label_8: 0x00476b94 mov rax, qword [rip + 0x1d2f3d] | rax = *(str.element13); 0x00476b9b movsxd rcx, dword [rip + 0x1d2f3e] | rcx = *(0x00649ae0); 0x00476ba2 mov r9d, dword [rip + 0x1d2f47] | r9d = *(0x00649af0); 0x00476ba9 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476bae mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476bb3 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476bb8 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00476bbd mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00476bc2 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476bc7 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00476bcc mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476bd1 mov rax, qword [r14 + 0x68] | rax = *((r14 + 0x68)); 0x00476bd5 cmp rax, qword [r14 + 0x60] | | if (rax == *((r14 + 0x60))) { 0x00476bd9 jne 0x476be2 | 0x00476bdb cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00476be0 je 0x476c1f | goto label_9; | } | } 0x00476be2 lea r8, [r14 + 0x60] | 0x00476be6 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476beb lea rcx, [rsp + 0x28] | 0x00476bf0 movzx eax, dil | eax = (int32_t) dil; 0x00476bf4 lea rdi, [rsp + 0xf] | 0x00476bf9 push rax | 0x00476bfa push r10 | 0x00476bfc call 0x478070 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember,bsl::allocator>>>(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,bsl::vector,bsl::allocator>>const&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool) (rsp + 0xf, rsi, rdx, rsp + 0x28, r14 + 0x60, r9); 0x00476c01 add rsp, 0x10 | 0x00476c05 test eax, eax | | if (eax != 0) { 0x00476c07 jne 0x476d34 | goto label_2; | } 0x00476c0d mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00476c12 mov rsi, qword [r15] | rsi = *(r15); 0x00476c15 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00476c19 mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00476c1d xor edi, edi | edi = 0; | label_9: 0x00476c1f mov rax, qword [rip + 0x1d2eda] | rax = *(str.element14); 0x00476c26 movsxd rcx, dword [rip + 0x1d2edb] | rcx = *(0x00649b08); 0x00476c2d mov r9d, dword [rip + 0x1d2ee4] | r9d = *(0x00649b18); 0x00476c34 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476c39 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476c3e mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476c43 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00476c48 mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00476c4d mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476c52 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00476c57 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476c5c mov rax, qword [r14 + 0x140] | rax = *((r14 + 0x140)); 0x00476c63 cmp rax, qword [r14 + 0x138] | | if (rax == *((r14 + 0x138))) { 0x00476c6a jne 0x476c73 | 0x00476c6c cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00476c71 je 0x476cb3 | goto label_10; | } | } 0x00476c73 lea r8, [r14 + 0x138] | r8 = r14 + 0x138; 0x00476c7a mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476c7f lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476c84 movzx eax, dil | eax = (int32_t) dil; 0x00476c88 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00476c8d push rax | 0x00476c8e push r10 | 0x00476c90 call 0x4782d0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_8s_baltst9CustomIntENS3_9allocatorIS6_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSD_11char_traitsIcEEEERKNSD_17basic_string_viewIcSG_EERKT_iRKNS0_14EncoderOptionsEbNS_1 (); 0x00476c95 add rsp, 0x10 | 0x00476c99 test eax, eax | | if (eax != 0) { 0x00476c9b jne 0x476d34 | goto label_2; | } 0x00476ca1 mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00476ca6 mov rsi, qword [r15] | rsi = *(r15); 0x00476ca9 mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x00476cad mov r10, qword [r15 + 0x10] | r10 = *((r15 + 0x10)); 0x00476cb1 xor edi, edi | edi = 0; | label_10: 0x00476cb3 mov rax, qword [rip + 0x1d2e6e] | rax = *(str.element15); 0x00476cba movsxd rcx, dword [rip + 0x1d2e6f] | rcx = *(0x00649b30); 0x00476cc1 mov r9d, dword [rip + 0x1d2e78] | r9d = *(0x00649b40); 0x00476cc8 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476ccd mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476cd2 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476cd7 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00476cdc mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x00476ce1 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476ce6 mov qword [rsp + 0x40], r10 | *((rsp + 0x40)) = r10; 0x00476ceb mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476cf0 mov rcx, qword [r14 + 0x48] | rcx = *((r14 + 0x48)); 0x00476cf4 xor eax, eax | eax = 0; 0x00476cf6 cmp rcx, qword [r14 + 0x40] | | if (rcx == *((r14 + 0x40))) { 0x00476cfa jne 0x476d03 | 0x00476cfc cmp byte [r10 + 0x18], 0 | | if (*((r10 + 0x18)) == 0) { 0x00476d01 je 0x476d34 | goto label_2; | } | } 0x00476d03 add r14, 0x40 | r14 += 0x40; 0x00476d07 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476d0c lea rcx, [rsp + 0x28] | 0x00476d11 movzx eax, dil | eax = (int32_t) dil; 0x00476d15 lea rdi, [rsp + 0xf] | 0x00476d1a mov r8, r14 | 0x00476d1d push rax | 0x00476d1e push r10 | 0x00476d20 call 0x478520 | eax = intBloombergLP::baljsn::Encoder_EncodeImplUtil::encodeMember,bsl::allocator>>>(bool*,BloombergLP::baljsn::Formatter*,std::_1::basic_ostream>*,std::_1::basic_string_view>const&,bsl::vector,bsl::allocator>>const&,int,BloombergLP::baljsn::EncoderOptionsconst&,bool) (rsp + 0xf, rsi, rdx, rsp + 0x28, r14, r9); 0x00476d25 add rsp, 0x10 | 0x00476d29 test eax, eax | | if (eax != 0) { 0x00476d2b jne 0x476d34 | goto label_2; | } 0x00476d2d mov byte [r15 + 0x18], 0 | *((r15 + 0x18)) = 0; 0x00476d32 xor eax, eax | eax = 0; | } | label_2: 0x00476d34 add rsp, 0x50 | 0x00476d38 pop rbx | 0x00476d39 pop r14 | 0x00476d3b pop r15 | 0x00476d3d ret | return rax; | }