; assembly | /* r2dec pseudo code output */ | /* baljsn_decoder.t/assume @ 0x479b90 */ | #include | ; (fcn) method.BloombergLP::balxml::Decoder_PushParserContext_bsl::vector_char__bsl::allocator_char_____BloombergLP::balxml::Base64Parser_bsl::vector_char__bsl::allocator_char_______.addCharacters_char_const__unsigned_long__BloombergLP::balxml::Decoder_ () | uint64_t method_BloombergLP::balxml::Decoder_PushParserContext_bsl::vector_char_bsl::allocator_char_BloombergLP::balxml::Base64Parser_bsl::vector_char_bsl::allocator_char_addCharacters_char_const_unsigned_long_BloombergLP::balxml::Decoder_ (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_14h; | int64_t var_18h; | int64_t var_100h; | int64_t var_108h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::balxml::Decoder_PushParserContext >, BloombergLP::balxml::Base64Parser > > >::addCharacters(char const*, unsigned long, BloombergLP::balxml::Decoder*) */ 0x00479b90 push r15 | 0x00479b92 push r14 | 0x00479b94 push rbx | 0x00479b95 sub rsp, 0x110 | 0x00479b9c mov r14, rcx | r14 = rcx; 0x00479b9f mov rbx, rsi | rbx = rsi; 0x00479ba2 lea r9, [rdx + rsi] | 0x00479ba6 mov rsi, qword [rdi + 0x30] | 0x00479baa add rdi, 0x18 | rdi += 0x18; 0x00479bae mov dword [rsp], 0xffffffff | *(rsp) = 0xffffffff; 0x00479bb5 lea rdx, [rsp + 0x18] | 0x00479bba lea rcx, [rsp + 0x14] | 0x00479bbf mov r8, rbx | 0x00479bc2 call 0x479d70 | eax = intBloombergLP::bdlde::Base64Decoder::convert>>,char const*>(std::_1::back_insert_iterator>>,int*,int*,char const*,char const*,int) (rdi, *((rdi + 0x30)), rsp + 0x18, rsp + 0x14, rbx, rdx + rsi); 0x00479bc7 test eax, eax | | if (eax >= 0) { 0x00479bc9 js 0x479bd2 | 0x00479bcb xor eax, eax | eax = 0; 0x00479bcd jmp 0x479c5f | | } else { 0x00479bd2 mov rsi, qword [r14 + 0x2d0] | 0x00479bd9 lea r15, [rsp + 0x18] | r15 = rsp + 0x18; 0x00479bde mov rdi, r15 | 0x00479be1 call 0x418b40 | BloombergLP::balxml::Decoder::MemOutStream::MemOutStream(BloombergLP::bslma::Allocator*) (r15, *((r14 + 0x2d0))); 0x00479be6 mov dword [rsp + 0x100], 2 | *((rsp + 0x100)) = 2; 0x00479bf1 mov qword [rsp + 0x108], r14 | *((rsp + 0x108)) = r14; 0x00479bf9 mov esi, 0x612d05 | 0x00479bfe mov edx, 0x10 | 0x00479c03 mov rdi, r15 | 0x00479c06 call 0x417b30 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r15, "Unable to push \", 0x10); 0x00479c0b mov r14, rax | r14 = rax; 0x00479c0e mov rdi, rbx | 0x00479c11 call 0x405eb0 | rax = strlen (rbx); 0x00479c16 mov rdi, r14 | 0x00479c19 mov rsi, rbx | 0x00479c1c mov rdx, rax | 0x00479c1f call 0x417b30 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r14, rbx, rax); 0x00479c24 mov esi, 0x612c27 | 0x00479c29 mov edx, 0x22 | 0x00479c2e mov rdi, rax | 0x00479c31 call 0x417b30 | 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); 0x00479c36 mov esi, 0x612c12 | 0x00479c3b mov edx, 2 | 0x00479c40 mov rdi, rax | 0x00479c43 call 0x417b30 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x612c12, 2); 0x00479c48 mov rdi, rax | rdi = rax; 0x00479c4b call 0x406230 | std::_1::basic_ostream>::flush() (); 0x00479c50 lea rdi, [rsp + 0x18] | 0x00479c55 call 0x4788d0 | BloombergLP::balxml::Decoder_ErrorLogger::~Decoder_ErrorLogger() (rsp + 0x18); 0x00479c5a mov eax, 0xffffffff | eax = 0xffffffff; | } 0x00479c5f add rsp, 0x110 | 0x00479c66 pop rbx | 0x00479c67 pop r14 | 0x00479c69 pop r15 | 0x00479c6b ret | return rax; | }