; assembly | /* r2dec pseudo code output */ | /* baljsn_decoder.t/none @ 0x478730 */ | #include | ; (fcn) method.BloombergLP::balxml::Decoder_StdVectorCharContext.Decoder_StdVectorCharContext_bsl::vector_char__bsl::allocator_char_____int_ () | uint64_t method_BloombergLP::balxml::Decoder_StdVectorCharContext_Decoder_StdVectorCharContext_bsl::vector_char_bsl::allocator_char_int_ (int64_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balxml::Decoder_StdVectorCharContext::Decoder_StdVectorCharContext(bsl::vector >*, int) */ 0x00478730 push r14 | 0x00478732 push rbx | 0x00478733 push rax | 0x00478734 mov rbx, rdi | rbx = rdi; 0x00478737 mov qword [rdi], 0x61be00 | *(rdi) = vtable.BloombergLP::balxml::Decoder_StdVectorCharContext.0; 0x0047873e test edx, 0x100000 | | if ((edx & 0x100000) == 0) { 0x00478744 jne 0x47878d | 0x00478746 mov eax, edx | eax = edx; 0x00478748 and eax, 7 | eax &= 7; 0x0047874b cmp eax, 4 | | if (eax > 4) { 0x0047874e ja 0x4787ea | goto label_0; | } | /* switch table (5 cases) at 0x61bc58 */ 0x00478754 jmp qword [rax*8 + 0x61bc58] | 0x0047875b lea rax, [rbx + 0x10] | rax = rbx + 0x10; 0x0047875f mov qword [rbx + 0x10], 0x61c5c0 | *((rbx + 0x10)) = vtable.BloombergLP::balxml::Decoder_PushParserContext_bsl::vector_char__bsl::allocator_char_____BloombergLP::balxml::Base64Parser_bsl::vector_char__bsl::allocator_char_______.0; 0x00478767 mov dword [rbx + 0x18], edx | *((rbx + 0x18)) = edx; 0x0047876a mov qword [rbx + 0x20], rsi | *((rbx + 0x20)) = rsi; 0x0047876e mov rcx, qword [rip + 0x1a70db] | rcx = BloombergLP::bdlde::Base64Decoder::s_ignorableStrict_p; 0x00478775 mov qword [rbx + 0x28], rcx | *((rbx + 0x28)) = rcx; 0x00478779 mov byte [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; 0x0047877d xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00478780 movups xmmword [rbx + 0x34], xmm0 | __asm ("movups xmmword [rbx + 0x34], xmm0"); 0x00478784 mov dword [rbx + 0x44], 0 | *((rbx + 0x44)) = 0; 0x0047878b jmp 0x4787e3 | | } else { 0x0047878d lea r14, [rbx + 0x10] | r14 = rbx + 0x10; 0x00478791 mov qword [rbx + 0x10], 0x61c4e8 | *((rbx + 0x10)) = vtable.BloombergLP::balxml::Decoder_PushParserContext_bsl::vector_char__bsl::allocator_char_____BloombergLP::balxml::Decoder_ListParser_bsl::vector_char__bsl::allocator_char_______.0; 0x00478799 mov dword [rbx + 0x18], edx | *((rbx + 0x18)) = edx; 0x0047879c mov qword [rbx + 0x20], rsi | *((rbx + 0x20)) = rsi; 0x004787a0 lea rdi, [rbx + 0x30] | 0x004787a4 call 0x4796c0 | BloombergLP::balxml::Decoder_ListParser>>::Decoder_ListParser() (rbx + 0x30); 0x004787a9 mov qword [rbx + 0xc0], r14 | *((rbx + 0xc0)) = r14; 0x004787b0 jmp 0x4787ea | goto label_0; 0x004787b2 lea rax, [rbx + 0x10] | rax = rbx + 0x10; 0x004787b6 mov qword [rbx + 0x10], 0x61c690 | *((rbx + 0x10)) = vtable.BloombergLP::balxml::Decoder_PushParserContext_bsl::vector_char__bsl::allocator_char_____BloombergLP::balxml::HexParser_bsl::vector_char__bsl::allocator_char_______.0; 0x004787be mov dword [rbx + 0x18], edx | *((rbx + 0x18)) = edx; 0x004787c1 mov qword [rbx + 0x20], rsi | *((rbx + 0x20)) = rsi; 0x004787c5 mov byte [rbx + 0x28], 0 | *((rbx + 0x28)) = 0; 0x004787c9 mov qword [rbx + 0x30], 0 | *((rbx + 0x30)) = 0; 0x004787d1 jmp 0x4787e3 | goto label_1; 0x004787d3 lea rax, [rbx + 0x10] | rax = rbx + 0x10; 0x004787d7 mov qword [rbx + 0x10], 0x61c760 | *((rbx + 0x10)) = vtable.BloombergLP::balxml::Decoder_UTF8Context_bsl::vector_char__bsl::allocator_char_____.0; 0x004787df mov qword [rbx + 0x18], rsi | *((rbx + 0x18)) = rsi; | } | label_1: 0x004787e3 mov qword [rbx + 0xc0], rax | *((rbx + 0xc0)) = rax; | label_0: 0x004787ea add rsp, 8 | 0x004787ee pop rbx | 0x004787ef pop r14 | 0x004787f1 ret | return rax; | }