; assembly | /* r2dec pseudo code output */ | /* baljsn_decoder.t/none @ 0x478630 */ | #include | ; (fcn) method.BloombergLP::balxml::Decoder_StdStringContext.Decoder_StdStringContext_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____int_ () | uint64_t method_BloombergLP::balxml::Decoder_StdStringContext_Decoder_StdStringContext_bsl::basic_string_char_std::_1::char_traits_char_bsl::allocator_char_int_ (int64_t arg3, int64_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balxml::Decoder_StdStringContext::Decoder_StdStringContext(bsl::basic_string, bsl::allocator >*, int) */ 0x00478630 mov qword [rdi], 0x61bdb8 | *(rdi) = vtable.BloombergLP::balxml::Decoder_StdStringContext.0; 0x00478637 mov eax, edx | eax = edx; 0x00478639 and eax, 7 | eax &= 7; 0x0047863c cmp eax, 4 | | if (eax <= 4) { 0x0047863f ja 0x4786af | | /* switch table (5 cases) at 0x61bc30 */ 0x00478641 jmp qword [rax*8 + 0x61bc30] | 0x00478648 lea rax, [rdi + 8] | rax = rdi + 8; 0x0047864c mov qword [rdi + 8], 0x61c238 | *((rdi + 8)) = vtable.BloombergLP::balxml::Decoder_UTF8Context_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____.0; 0x00478654 mov qword [rdi + 0x10], rsi | *((rdi + 0x10)) = rsi; 0x00478658 jmp 0x4786ab | goto label_0; 0x0047865a lea rax, [rdi + 8] | rax = rdi + 8; 0x0047865e mov qword [rdi + 8], 0x61c3f8 | *((rdi + 8)) = vtable.BloombergLP::balxml::Decoder_PushParserContext_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____BloombergLP::balxml::HexParser_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_______.0; 0x00478666 mov dword [rdi + 0x10], edx | *((rdi + 0x10)) = edx; 0x00478669 mov qword [rdi + 0x18], rsi | *((rdi + 0x18)) = rsi; 0x0047866d mov byte [rdi + 0x20], 0 | *((rdi + 0x20)) = 0; 0x00478671 mov qword [rdi + 0x28], 0 | *((rdi + 0x28)) = 0; 0x00478679 jmp 0x4786ab | goto label_0; 0x0047867b lea rax, [rdi + 8] | rax = rdi + 8; 0x0047867f mov qword [rdi + 8], 0x61c308 | *((rdi + 8)) = vtable.BloombergLP::balxml::Decoder_PushParserContext_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_____BloombergLP::balxml::Base64Parser_bsl::basic_string_char__std::__1::char_traits_char___bsl::allocator_char_______.0; 0x00478687 mov dword [rdi + 0x10], edx | *((rdi + 0x10)) = edx; 0x0047868a mov qword [rdi + 0x18], rsi | *((rdi + 0x18)) = rsi; 0x0047868e mov rcx, qword [rip + 0x1a71bb] | rcx = BloombergLP::bdlde::Base64Decoder::s_ignorableStrict_p; 0x00478695 mov qword [rdi + 0x20], rcx | *((rdi + 0x20)) = rcx; 0x00478699 mov byte [rdi + 0x28], 0 | *((rdi + 0x28)) = 0; 0x0047869d xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004786a0 movups xmmword [rdi + 0x2c], xmm0 | __asm ("movups xmmword [rdi + 0x2c], xmm0"); 0x004786a4 mov dword [rdi + 0x3c], 0 | *((rdi + 0x3c)) = 0; | label_0: 0x004786ab mov qword [rdi + 0x40], rax | *((rdi + 0x40)) = rax; | } 0x004786af ret | return rax; | }