; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x476660 */ | #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 */ 0x00476660 push rbp | 0x00476661 push r14 | 0x00476663 push rbx | 0x00476664 sub rsp, 0x50 | 0x00476668 mov rbx, rsi | rbx = rsi; 0x0047666b mov r14, rdi | r14 = rdi; 0x0047666e mov rsi, qword [rsi] | rsi = *(rsi); 0x00476671 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476675 mov rcx, qword [rip + 0x1d337c] | rcx = *(str.element1); 0x0047667c movsxd rdi, dword [rip + 0x1d337d] | rdi = *(0x00649a00); 0x00476683 mov r9d, dword [rip + 0x1d3386] | r9d = *(0x00649a10); 0x0047668a mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x0047668e mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); 0x00476691 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476696 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047669b mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x004766a0 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x004766a5 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x004766aa mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x004766af mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x004766b4 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x004766b8 cmp byte [r14 + 0x16e], 0 | | if (*((r14 + 0x16e)) == 0) { 0x004766c0 jne 0x4766c8 | 0x004766c2 cmp byte [rbp + 0x19], 0 | | if (*((rbp + 0x19)) == 0) { 0x004766c6 je 0x476701 | goto label_0; | } | } 0x004766c8 lea r8, [r14 + 0x16d] | r8 = r14 + 0x16d; 0x004766cf lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x004766d4 movzx eax, al | eax = (int32_t) al; 0x004766d7 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x004766dc push rax | 0x004766dd push rbp | 0x004766de call 0x476e60 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIhEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x004766e3 add rsp, 0x10 | 0x004766e7 test eax, eax | | if (eax == 0) { 0x004766e9 jne 0x476e54 | 0x004766ef cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x004766f4 je 0x4766fb | 0x004766f6 mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); 0x004766f9 jmp 0x476701 | | } else { 0x004766fb mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x004766ff xor eax, eax | eax = 0; | } | label_0: 0x00476701 mov rsi, qword [rbx] | rsi = *(rbx); 0x00476704 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476708 mov rcx, qword [rip + 0x1d3311] | rcx = *(str.element2); 0x0047670f movsxd rdi, dword [rip + 0x1d3312] | rdi = *(0x00649a28); 0x00476716 mov r9d, dword [rip + 0x1d331b] | r9d = *(0x00649a38); 0x0047671d mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x00476721 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476726 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x0047672b mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476730 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476735 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x0047673a mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x0047673f mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x00476744 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00476748 cmp byte [r14 + 0xd0], 0 | | if (*((r14 + 0xd0)) == 0) { 0x00476750 jne 0x476758 | 0x00476752 cmp byte [rbp + 0x19], 0 | | if (*((rbp + 0x19)) == 0) { 0x00476756 je 0x476791 | goto label_1; | } | } 0x00476758 lea r8, [r14 + 0xa0] | r8 = r14 + 0xa0; 0x0047675f lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476764 movzx eax, al | eax = (int32_t) al; 0x00476767 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x0047676c push rax | 0x0047676d push rbp | 0x0047676e call 0x477070 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueINS_8s_baltst12CustomStringEEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSD_11char_traitsIcEEEERKNSD_17basic_string_viewIcSG_E (); 0x00476773 add rsp, 0x10 | 0x00476777 test eax, eax | | if (eax != 0) { 0x00476779 jne 0x476e54 | goto label_2; | } 0x0047677f cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x00476784 je 0x47678b | 0x00476786 mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); 0x00476789 jmp 0x476791 | | } else { 0x0047678b mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x0047678f xor eax, eax | eax = 0; | } | label_1: 0x00476791 mov rsi, qword [rbx] | rsi = *(rbx); 0x00476794 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476798 mov rcx, qword [rip + 0x1d32a9] | rcx = *(str.element3); 0x0047679f movsxd rdi, dword [rip + 0x1d32aa] | rdi = *(0x00649a50); 0x004767a6 mov r9d, dword [rip + 0x1d32b3] | r9d = *(0x00649a60); 0x004767ad mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x004767b1 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004767b6 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x004767bb mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x004767c0 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x004767c5 mov qword [rsp + 0x30], rdi | *((rsp + 0x30)) = rdi; 0x004767ca mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x004767cf mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x004767d4 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x004767d8 cmp byte [r14 + 0x164], 0 | | if (*((r14 + 0x164)) == 0) { 0x004767e0 jne 0x4767e8 | 0x004767e2 cmp byte [rbp + 0x19], 0 | | if (*((rbp + 0x19)) == 0) { 0x004767e6 je 0x476821 | goto label_3; | } | } 0x004767e8 lea r8, [r14 + 0x160] | r8 = r14 + 0x160; 0x004767ef lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x004767f4 movzx eax, al | eax = (int32_t) al; 0x004767f7 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x004767fc push rax | 0x004767fd push rbp | 0x004767fe call 0x4772b0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueINS_8s_baltst9CustomIntEEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSD_11char_traitsIcEEEERKNSD_17basic_string_viewIcSG_EERKT (); 0x00476803 add rsp, 0x10 | 0x00476807 test eax, eax | | if (eax != 0) { 0x00476809 jne 0x476e54 | goto label_2; | } 0x0047680f cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x00476814 je 0x47681b | 0x00476816 mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); 0x00476819 jmp 0x476821 | | } else { 0x0047681b mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x0047681f xor eax, eax | eax = 0; | } | label_3: 0x00476821 lea rdi, [r14 + 0x110] | 0x00476828 movups xmm0, xmmword [rbx] | __asm ("movups xmm0, xmmword [rbx]"); 0x0047682b mov rcx, qword [rip + 0x1d323e] | rcx = *(str.element4); 0x00476832 movsxd rdx, dword [rip + 0x1d323f] | rdx = *(0x00649a78); 0x00476839 mov esi, dword [rip + 0x1d3249] | esi = *(0x00649a88); 0x0047683f mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x00476843 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476848 movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x0047684d mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476852 mov qword [rsp + 0x30], rdx | *((rsp + 0x30)) = rdx; 0x00476857 mov dword [rsp + 0x38], esi | *((rsp + 0x38)) = esi; 0x0047685b mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x00476860 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00476864 lea rsi, [rsp + 0x10] | 0x00476869 call 0x4774c0 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(unsignedintconst&,BloombergLP::baljsn::Encoder_AttributeDispatcher&) (r14 + 0x110, rsp + 0x10); 0x0047686e test eax, eax | | if (eax == 0) { 0x00476870 jne 0x476881 | 0x00476872 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x00476877 jne 0x476881 | 0x00476879 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x0047687d xor eax, eax | eax = 0; 0x0047687f jmp 0x47688c | | } | } else { 0x00476881 test eax, eax | | if (eax != 0) { 0x00476883 jne 0x476e54 | goto label_2; | } 0x00476889 mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); | } 0x0047688c lea rdi, [r14 + 0x16c] | 0x00476893 movups xmm0, xmmword [rbx] | __asm ("movups xmm0, xmmword [rbx]"); 0x00476896 mov rcx, qword [rip + 0x1d31fb] | rcx = *(str.element5); 0x0047689d movsxd rdx, dword [rip + 0x1d31fc] | rdx = *(0x00649aa0); 0x004768a4 mov esi, dword [rip + 0x1d3206] | esi = *(0x00649ab0); 0x004768aa mov rbp, qword [rbx + 0x10] | rbp = *((rbx + 0x10)); 0x004768ae mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004768b3 movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x004768b8 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x004768bd mov qword [rsp + 0x30], rdx | *((rsp + 0x30)) = rdx; 0x004768c2 mov dword [rsp + 0x38], esi | *((rsp + 0x38)) = esi; 0x004768c6 mov qword [rsp + 0x40], rbp | *((rsp + 0x40)) = rbp; 0x004768cb mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x004768cf lea rsi, [rsp + 0x10] | 0x004768d4 call 0x477540 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(unsignedchar const&,BloombergLP::baljsn::Encoder_AttributeDispatcher&) (r14 + 0x16c, rsp + 0x10); 0x004768d9 test eax, eax | | if (eax == 0) { 0x004768db jne 0x4768ec | 0x004768dd cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x004768e2 jne 0x4768ec | 0x004768e4 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x004768e8 xor edi, edi | edi = 0; 0x004768ea jmp 0x4768f8 | | } | } else { 0x004768ec test eax, eax | | if (eax != 0) { 0x004768ee jne 0x476e54 | goto label_2; | } 0x004768f4 mov dil, byte [rbx + 0x18] | dil = *((rbx + 0x18)); | } 0x004768f8 mov rsi, qword [rbx] | rsi = *(rbx); 0x004768fb mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x004768ff mov rcx, qword [rip + 0x1d31ba] | rcx = *(str.element6); 0x00476906 movsxd rbp, dword [rip + 0x1d31bb] | rbp = *(0x00649ac8); 0x0047690d mov r9d, dword [rip + 0x1d31c4] | r9d = *(0x00649ad8); 0x00476914 mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00476918 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0047691d mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476922 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476927 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x0047692c mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x00476931 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476936 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0047693b mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476940 mov rcx, qword [r14 + 0x120] | rcx = *((r14 + 0x120)); 0x00476947 cmp rcx, qword [r14 + 0x118] | | if (rcx == *((r14 + 0x118))) { 0x0047694e jne 0x476956 | 0x00476950 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00476954 je 0x476994 | goto label_4; | } | } 0x00476956 lea r8, [r14 + 0x118] | r8 = r14 + 0x118; 0x0047695d mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476962 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476967 movzx ebp, dil | ebp = (int32_t) dil; 0x0047696b lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00476970 push rbp | 0x00476971 push rax | 0x00476972 call 0x4775c0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_4bdlb13NullableValueINS_8s_baltst9CustomIntEEENS3_9allocatorIS9_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSG_11char_traitsIcEEEERKNSG_17basic_string_viewIcSJ_EERKT_iRK (); 0x00476977 add rsp, 0x10 | 0x0047697b test eax, eax | | if (eax != 0) { 0x0047697d jne 0x476e54 | goto label_2; | } 0x00476983 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00476987 mov rsi, qword [rbx] | rsi = *(rbx); 0x0047698a mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x0047698e mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00476992 xor edi, edi | edi = 0; | label_4: 0x00476994 mov rbp, qword [rip + 0x1d314d] | rbp = *(str.element7); 0x0047699b movsxd r8, dword [rip + 0x1d314e] | r8 = *(0x00649af0); 0x004769a2 mov r9d, dword [rip + 0x1d3157] | r9d = *(0x00649b00); 0x004769a9 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004769ae mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x004769b3 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x004769b8 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x004769bd mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x004769c2 mov qword [rsp + 0x30], r8 | *((rsp + 0x30)) = r8; 0x004769c7 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x004769cc mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x004769d1 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x004769d6 lea r8, [r14 + 0xe0] | r8 = r14 + 0xe0; 0x004769dd movzx ebp, dil | ebp = (int32_t) dil; 0x004769e1 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x004769e6 push rbp | 0x004769e7 push rax | 0x004769e8 call 0x464a80 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl12basic_stringIcNSt3_111char_traitsIcEENS3_9allocatorIcEEEENS_18bdlat_TypeCategory6SimpleEEEiPbPNS0_9FormatterEPNS5_13basic_ostreamIcS7_EERKNS5_17basic_string_viewIcS7_EERKT_iRKNS0_14Enc (); 0x004769ed add rsp, 0x10 | 0x004769f1 test eax, eax | | if (eax == 0) { 0x004769f3 jne 0x476a04 | 0x004769f5 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x004769fa jne 0x476a04 | 0x004769fc mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00476a00 xor eax, eax | eax = 0; 0x00476a02 jmp 0x476a0f | | } | } else { 0x00476a04 test eax, eax | | if (eax != 0) { 0x00476a06 jne 0x476e54 | goto label_2; | } 0x00476a0c mov al, byte [rbx + 0x18] | al = *((rbx + 0x18)); | } 0x00476a0f movups xmm0, xmmword [rbx] | __asm ("movups xmm0, xmmword [rbx]"); 0x00476a12 mov rcx, qword [rip + 0x1d30f7] | rcx = *(str.element8); 0x00476a19 movsxd rdx, dword [rip + 0x1d30f8] | rdx = *(0x00649b18); 0x00476a20 mov esi, dword [rip + 0x1d3102] | esi = *(0x00649b28); 0x00476a26 mov rdi, qword [rbx + 0x10] | rdi = *((rbx + 0x10)); 0x00476a2a mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476a2f movups xmmword [rsp + 0x18], xmm0 | __asm ("movups xmmword [rsp + 0x18], xmm0"); 0x00476a34 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476a39 mov qword [rsp + 0x30], rdx | *((rsp + 0x30)) = rdx; 0x00476a3e mov dword [rsp + 0x38], esi | *((rsp + 0x38)) = esi; 0x00476a42 mov qword [rsp + 0x40], rdi | *((rsp + 0x40)) = rdi; 0x00476a47 mov byte [rsp + 0x48], al | *((rsp + 0x48)) = al; 0x00476a4b lea rdi, [r14 + 0x168] | 0x00476a52 lea rsi, [rsp + 0x10] | 0x00476a57 call 0x464c00 | eax = intBloombergLP::bdlat_TypeCategoryUtil::accessByCategory(intconst&,BloombergLP::baljsn::Encoder_AttributeDispatcher&) (r14 + 0x168, rsp + 0x10); 0x00476a5c test eax, eax | | if (eax == 0) { 0x00476a5e jne 0x476a6f | 0x00476a60 cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) == 0) { 0x00476a65 jne 0x476a6f | 0x00476a67 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00476a6b xor edi, edi | edi = 0; 0x00476a6d jmp 0x476a7b | | } | } else { 0x00476a6f test eax, eax | | if (eax != 0) { 0x00476a71 jne 0x476e54 | goto label_2; | } 0x00476a77 mov dil, byte [rbx + 0x18] | dil = *((rbx + 0x18)); | } 0x00476a7b mov rsi, qword [rbx] | rsi = *(rbx); 0x00476a7e mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476a82 mov rcx, qword [rip + 0x1d30af] | rcx = *(str.element9); 0x00476a89 movsxd rbp, dword [rip + 0x1d30b0] | rbp = *(0x00649b40); 0x00476a90 mov r9d, dword [rip + 0x1d30b9] | r9d = *(0x00649b50); 0x00476a97 mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00476a9b mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476aa0 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476aa5 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476aaa mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476aaf mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x00476ab4 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476ab9 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00476abe mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476ac3 cmp byte [r14 + 0x15c], 0 | | if (*((r14 + 0x15c)) == 0) { 0x00476acb jne 0x476ad3 | 0x00476acd cmp byte [rax + 0x19], 0 | | if (*((rax + 0x19)) == 0) { 0x00476ad1 je 0x476b0e | goto label_5; | } | } 0x00476ad3 lea r8, [r14 + 0x158] | r8 = r14 + 0x158; 0x00476ada lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476adf movzx ebp, dil | ebp = (int32_t) dil; 0x00476ae3 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00476ae8 push rbp | 0x00476ae9 push rax | 0x00476aea call 0x477820 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberINS_4bdlb13NullableValueIjEENS_18bdlat_TypeCategory13NullableValueEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptio (); 0x00476aef add rsp, 0x10 | 0x00476af3 test eax, eax | | if (eax != 0) { 0x00476af5 jne 0x476e54 | goto label_2; | } 0x00476afb cmp byte [rsp + 0x10], 0 | | if (*((rsp + 0x10)) != 0) { 0x00476b00 je 0x476b08 | 0x00476b02 mov dil, byte [rbx + 0x18] | dil = *((rbx + 0x18)); 0x00476b06 jmp 0x476b0e | | } else { 0x00476b08 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00476b0c xor edi, edi | edi = 0; | } | label_5: 0x00476b0e mov rsi, qword [rbx] | rsi = *(rbx); 0x00476b11 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476b15 mov rcx, qword [rip + 0x1d3044] | rcx = *(str.element10); 0x00476b1c movsxd rbp, dword [rip + 0x1d3045] | rbp = *(0x00649b68); 0x00476b23 mov r9d, dword [rip + 0x1d304e] | r9d = *(0x00649b78); 0x00476b2a mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00476b2e mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476b33 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476b38 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476b3d mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476b42 mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x00476b47 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476b4c mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00476b51 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476b56 mov rcx, qword [r14 + 0x28] | rcx = *((r14 + 0x28)); 0x00476b5a cmp rcx, qword [r14 + 0x20] | | if (rcx == *((r14 + 0x20))) { 0x00476b5e jne 0x476b66 | 0x00476b60 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00476b64 je 0x476ba1 | goto label_6; | } | } 0x00476b66 lea r8, [r14 + 0x20] | r8 = r14 + 0x20; 0x00476b6a mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476b6f lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476b74 movzx ebp, dil | ebp = (int32_t) dil; 0x00476b78 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00476b7d push rbp | 0x00476b7e push rax | 0x00476b7f call 0x477a30 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorIhNS3_9allocatorIhEEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptionsEbNS_18bdlat_TypeCategory5Arra (); 0x00476b84 add rsp, 0x10 | 0x00476b88 test eax, eax | | if (eax != 0) { 0x00476b8a jne 0x476e54 | goto label_2; | } 0x00476b90 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00476b94 mov rsi, qword [rbx] | rsi = *(rbx); 0x00476b97 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476b9b mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00476b9f xor edi, edi | edi = 0; | label_6: 0x00476ba1 mov rcx, qword [rip + 0x1d2fe0] | rcx = *(str.element11); 0x00476ba8 movsxd rbp, dword [rip + 0x1d2fe1] | rbp = *(0x00649b90); 0x00476baf mov r9d, dword [rip + 0x1d2fea] | r9d = *(0x00649ba0); 0x00476bb6 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476bbb mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476bc0 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476bc5 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476bca mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x00476bcf mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476bd4 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00476bd9 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476bde mov rcx, qword [r14 + 0x88] | rcx = *((r14 + 0x88)); 0x00476be5 cmp rcx, qword [r14 + 0x80] | | if (rcx == *((r14 + 0x80))) { 0x00476bec jne 0x476bf4 | 0x00476bee cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00476bf2 je 0x476c32 | goto label_7; | } | } 0x00476bf4 lea r8, [r14 + 0x80] | 0x00476bfb mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476c00 lea rcx, [rsp + 0x28] | 0x00476c05 movzx ebp, dil | ebp = (int32_t) dil; 0x00476c09 lea rdi, [rsp + 0xf] | 0x00476c0e push rbp | 0x00476c0f push rax | 0x00476c10 call 0x477c80 | 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); 0x00476c15 add rsp, 0x10 | 0x00476c19 test eax, eax | | if (eax != 0) { 0x00476c1b jne 0x476e54 | goto label_2; | } 0x00476c21 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00476c25 mov rsi, qword [rbx] | rsi = *(rbx); 0x00476c28 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476c2c mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00476c30 xor edi, edi | edi = 0; | label_7: 0x00476c32 mov rcx, qword [rip + 0x1d2f77] | rcx = *(str.element12); 0x00476c39 movsxd rbp, dword [rip + 0x1d2f78] | rbp = *(0x00649bb8); 0x00476c40 mov r9d, dword [rip + 0x1d2f81] | r9d = *(0x00649bc8); 0x00476c47 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476c4c mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476c51 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476c56 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476c5b mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x00476c60 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476c65 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00476c6a mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476c6f mov rcx, qword [r14 + 8] | rcx = *((r14 + 8)); 0x00476c73 cmp rcx, qword [r14] | | if (rcx == *(r14)) { 0x00476c76 jne 0x476c7e | 0x00476c78 cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00476c7c je 0x476cb8 | goto label_8; | } | } 0x00476c7e mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476c83 lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476c88 movzx ebp, dil | ebp = (int32_t) dil; 0x00476c8c lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00476c91 mov r8, r14 | r8 = r14; 0x00476c94 push rbp | 0x00476c95 push rax | 0x00476c96 call 0x477f40 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorIjNS3_9allocatorIjEEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSB_11char_traitsIcEEEERKNSB_17basic_string_viewIcSE_EERKT_iRKNS0_14EncoderOptionsEbNS_18bdlat_TypeCategory5Arra (); 0x00476c9b add rsp, 0x10 | 0x00476c9f test eax, eax | | if (eax != 0) { 0x00476ca1 jne 0x476e54 | goto label_2; | } 0x00476ca7 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00476cab mov rsi, qword [rbx] | rsi = *(rbx); 0x00476cae mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476cb2 mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00476cb6 xor edi, edi | edi = 0; | label_8: 0x00476cb8 mov rcx, qword [rip + 0x1d2f19] | rcx = *(str.element13); 0x00476cbf movsxd rbp, dword [rip + 0x1d2f1a] | rbp = *(0x00649be0); 0x00476cc6 mov r9d, dword [rip + 0x1d2f23] | r9d = *(0x00649bf0); 0x00476ccd mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476cd2 mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476cd7 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476cdc mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476ce1 mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x00476ce6 mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476ceb mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00476cf0 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476cf5 mov rcx, qword [r14 + 0x68] | rcx = *((r14 + 0x68)); 0x00476cf9 cmp rcx, qword [r14 + 0x60] | | if (rcx == *((r14 + 0x60))) { 0x00476cfd jne 0x476d05 | 0x00476cff cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00476d03 je 0x476d40 | goto label_9; | } | } 0x00476d05 lea r8, [r14 + 0x60] | 0x00476d09 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476d0e lea rcx, [rsp + 0x28] | 0x00476d13 movzx ebp, dil | ebp = (int32_t) dil; 0x00476d17 lea rdi, [rsp + 0xf] | 0x00476d1c push rbp | 0x00476d1d push rax | 0x00476d1e call 0x478190 | 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); 0x00476d23 add rsp, 0x10 | 0x00476d27 test eax, eax | | if (eax != 0) { 0x00476d29 jne 0x476e54 | goto label_2; | } 0x00476d2f mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00476d33 mov rsi, qword [rbx] | rsi = *(rbx); 0x00476d36 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476d3a mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00476d3e xor edi, edi | edi = 0; | label_9: 0x00476d40 mov rcx, qword [rip + 0x1d2eb9] | rcx = *(str.element14); 0x00476d47 movsxd rbp, dword [rip + 0x1d2eba] | rbp = *(0x00649c08); 0x00476d4e mov r9d, dword [rip + 0x1d2ec3] | r9d = *(0x00649c18); 0x00476d55 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476d5a mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476d5f mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476d64 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476d69 mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x00476d6e mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476d73 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00476d78 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476d7d mov rcx, qword [r14 + 0x140] | rcx = *((r14 + 0x140)); 0x00476d84 cmp rcx, qword [r14 + 0x138] | | if (rcx == *((r14 + 0x138))) { 0x00476d8b jne 0x476d93 | 0x00476d8d cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00476d91 je 0x476dd1 | goto label_10; | } | } 0x00476d93 lea r8, [r14 + 0x138] | r8 = r14 + 0x138; 0x00476d9a mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476d9f lea rcx, [rsp + 0x28] | rcx = rsp + 0x28; 0x00476da4 movzx ebp, dil | ebp = (int32_t) dil; 0x00476da8 lea rdi, [rsp + 0xf] | rdi = rsp + 0xf; 0x00476dad push rbp | 0x00476dae push rax | 0x00476daf call 0x4783f0 | eax = _ZN11BloombergLP6baljsn22Encoder_EncodeImplUtil12encodeMemberIN3bsl6vectorINS_8s_baltst9CustomIntENS3_9allocatorIS6_EEEEEEiPbPNS0_9FormatterEPNSt3_113basic_ostreamIcNSD_11char_traitsIcEEEERKNSD_17basic_string_viewIcSG_EERKT_iRKNS0_14EncoderOptionsEbNS_1 (); 0x00476db4 add rsp, 0x10 | 0x00476db8 test eax, eax | | if (eax != 0) { 0x00476dba jne 0x476e54 | goto label_2; | } 0x00476dc0 mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; 0x00476dc4 mov rsi, qword [rbx] | rsi = *(rbx); 0x00476dc7 mov rdx, qword [rbx + 8] | rdx = *((rbx + 8)); 0x00476dcb mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x00476dcf xor edi, edi | edi = 0; | label_10: 0x00476dd1 mov rcx, qword [rip + 0x1d2e50] | rcx = *(str.element15); 0x00476dd8 movsxd rbp, dword [rip + 0x1d2e51] | rbp = *(0x00649c30); 0x00476ddf mov r9d, dword [rip + 0x1d2e5a] | r9d = *(0x00649c40); 0x00476de6 mov byte [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00476deb mov qword [rsp + 0x18], rsi | *((rsp + 0x18)) = rsi; 0x00476df0 mov qword [rsp + 0x20], rdx | *((rsp + 0x20)) = rdx; 0x00476df5 mov qword [rsp + 0x28], rcx | *((rsp + 0x28)) = rcx; 0x00476dfa mov qword [rsp + 0x30], rbp | *((rsp + 0x30)) = rbp; 0x00476dff mov dword [rsp + 0x38], r9d | *((rsp + 0x38)) = r9d; 0x00476e04 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00476e09 mov byte [rsp + 0x48], dil | *((rsp + 0x48)) = dil; 0x00476e0e mov rcx, qword [r14 + 0x48] | rcx = *((r14 + 0x48)); 0x00476e12 xor ebp, ebp | ebp = 0; 0x00476e14 cmp rcx, qword [r14 + 0x40] | | if (rcx == *((r14 + 0x40))) { 0x00476e18 jne 0x476e20 | 0x00476e1a cmp byte [rax + 0x18], 0 | | if (*((rax + 0x18)) == 0) { 0x00476e1e je 0x476e52 | goto label_11; | } | } 0x00476e20 add r14, 0x40 | r14 += 0x40; 0x00476e24 mov byte [rsp + 0xf], 0 | *((rsp + 0xf)) = 0; 0x00476e29 lea rcx, [rsp + 0x28] | 0x00476e2e movzx r10d, dil | r10d = (int32_t) dil; 0x00476e32 lea rdi, [rsp + 0xf] | 0x00476e37 mov r8, r14 | 0x00476e3a push r10 | 0x00476e3c push rax | 0x00476e3d call 0x478640 | 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); 0x00476e42 add rsp, 0x10 | 0x00476e46 test eax, eax | | if (eax != 0) { 0x00476e48 je 0x476e4e | 0x00476e4a mov ebp, eax | 0x00476e4c jmp 0x476e52 | | } else { 0x00476e4e mov byte [rbx + 0x18], 0 | *((rbx + 0x18)) = 0; | } | label_11: 0x00476e52 mov eax, ebp | eax = ebp; | } | label_2: 0x00476e54 add rsp, 0x50 | 0x00476e58 pop rbx | 0x00476e59 pop r14 | 0x00476e5b pop rbp | 0x00476e5c ret | return rax; | }