; assembly | /* r2dec pseudo code output */ | /* baljsn_decoder.t/none @ 0x478ec0 */ | #include | ; (fcn) method.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_______.addCharac () | uint64_t method_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_addCharac (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_ch; | int64_t var_10h; | int64_t var_f8h; | int64_t var_100h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balxml::Decoder_PushParserContext, bsl::allocator >, BloombergLP::balxml::Base64Parser, bsl::allocator > > >::addCharacters(char const*, unsigned long, BloombergLP::balxml::Decoder*) */ 0x00478ec0 push rbp | 0x00478ec1 push r15 | 0x00478ec3 push r14 | 0x00478ec5 push rbx | 0x00478ec6 sub rsp, 0x108 | 0x00478ecd mov r14, rcx | r14 = rcx; 0x00478ed0 mov rbx, rsi | rbx = rsi; 0x00478ed3 lea r9, [rdx + rsi] | 0x00478ed7 mov rsi, qword [rdi + 0x30] | 0x00478edb add rdi, 0x18 | rdi += 0x18; 0x00478edf mov dword [rsp], 0xffffffff | *(rsp) = 0xffffffff; 0x00478ee6 lea rdx, [rsp + 0x10] | 0x00478eeb lea rcx, [rsp + 0xc] | 0x00478ef0 mov r8, rbx | 0x00478ef3 call 0x4790a0 | eax = intBloombergLP::bdlde::Base64Decoder::convert,bsl::allocator>>,char const*>(std::_1::back_insert_iterator,bsl::allocator>>,int*,int*,char const*,char const*,int) (rdi, *((rdi + 0x30)), rsp + 0x10, rsp + 0xc, rbx, rdx + rsi); 0x00478ef8 mov ebp, eax | 0x00478efa test eax, eax | | if (eax < 0) { 0x00478efc jns 0x478f8a | 0x00478f02 mov rsi, qword [r14 + 0x2d0] | 0x00478f09 lea r15, [rsp + 0x10] | r15 = rsp + 0x10; 0x00478f0e mov rdi, r15 | 0x00478f11 call 0x418ba0 | BloombergLP::balxml::Decoder::MemOutStream::MemOutStream(BloombergLP::bslma::Allocator*) (r15, *((r14 + 0x2d0))); 0x00478f16 mov dword [rsp + 0xf8], 2 | *((rsp + 0xf8)) = 2; 0x00478f21 mov qword [rsp + 0x100], r14 | *((rsp + 0x100)) = r14; 0x00478f29 mov esi, 0x61346f | 0x00478f2e mov edx, 0x10 | 0x00478f33 mov rdi, r15 | 0x00478f36 call 0x417b80 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r15, "Unable to push \", 0x10); 0x00478f3b mov r14, rax | r14 = rax; 0x00478f3e mov rdi, rbx | 0x00478f41 call 0x405eb0 | rax = strlen (rbx); 0x00478f46 mov rdi, r14 | 0x00478f49 mov rsi, rbx | 0x00478f4c mov rdx, rax | 0x00478f4f call 0x417b80 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r14, rbx, rax); 0x00478f54 mov esi, 0x613391 | 0x00478f59 mov edx, 0x22 | 0x00478f5e mov rdi, rax | 0x00478f61 call 0x417b80 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, "\" when parsing list or binary type", 0x22); 0x00478f66 mov esi, 0x61337c | 0x00478f6b mov edx, 2 | 0x00478f70 mov rdi, rax | 0x00478f73 call 0x417b80 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x61337c, 2); 0x00478f78 mov rdi, rax | rdi = rax; 0x00478f7b call 0x406230 | std::_1::basic_ostream>::flush() (); 0x00478f80 lea rdi, [rsp + 0x10] | 0x00478f85 call 0x478a10 | BloombergLP::balxml::Decoder_ErrorLogger::~Decoder_ErrorLogger() (rsp + 0x10); | } 0x00478f8a sar ebp, 0x1f | ebp >>= 0x1f; 0x00478f8d mov eax, ebp | eax = ebp; 0x00478f8f add rsp, 0x108 | 0x00478f96 pop rbx | 0x00478f97 pop r14 | 0x00478f99 pop r15 | 0x00478f9b pop rbp | 0x00478f9c ret | return rax; | }