; assembly | /* r2dec pseudo code output */ | /* baljsn_decoder.t/none @ 0x479cd0 */ | #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_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 >, BloombergLP::balxml::Base64Parser > > >::addCharacters(char const*, unsigned long, BloombergLP::balxml::Decoder*) */ 0x00479cd0 push rbp | 0x00479cd1 push r15 | 0x00479cd3 push r14 | 0x00479cd5 push rbx | 0x00479cd6 sub rsp, 0x108 | 0x00479cdd mov r14, rcx | r14 = rcx; 0x00479ce0 mov rbx, rsi | rbx = rsi; 0x00479ce3 lea r9, [rdx + rsi] | 0x00479ce7 mov rsi, qword [rdi + 0x30] | 0x00479ceb add rdi, 0x18 | rdi += 0x18; 0x00479cef mov dword [rsp], 0xffffffff | *(rsp) = 0xffffffff; 0x00479cf6 lea rdx, [rsp + 0x10] | 0x00479cfb lea rcx, [rsp + 0xc] | 0x00479d00 mov r8, rbx | 0x00479d03 call 0x479eb0 | eax = intBloombergLP::bdlde::Base64Decoder::convert>>,char const*>(std::_1::back_insert_iterator>>,int*,int*,char const*,char const*,int) (rdi, *((rdi + 0x30)), rsp + 0x10, rsp + 0xc, rbx, rdx + rsi); 0x00479d08 mov ebp, eax | 0x00479d0a test eax, eax | | if (eax < 0) { 0x00479d0c jns 0x479d9a | 0x00479d12 mov rsi, qword [r14 + 0x2d0] | 0x00479d19 lea r15, [rsp + 0x10] | r15 = rsp + 0x10; 0x00479d1e mov rdi, r15 | 0x00479d21 call 0x418ba0 | BloombergLP::balxml::Decoder::MemOutStream::MemOutStream(BloombergLP::bslma::Allocator*) (r15, *((r14 + 0x2d0))); 0x00479d26 mov dword [rsp + 0xf8], 2 | *((rsp + 0xf8)) = 2; 0x00479d31 mov qword [rsp + 0x100], r14 | *((rsp + 0x100)) = r14; 0x00479d39 mov esi, 0x61346f | 0x00479d3e mov edx, 0x10 | 0x00479d43 mov rdi, r15 | 0x00479d46 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); 0x00479d4b mov r14, rax | r14 = rax; 0x00479d4e mov rdi, rbx | 0x00479d51 call 0x405eb0 | rax = strlen (rbx); 0x00479d56 mov rdi, r14 | 0x00479d59 mov rsi, rbx | 0x00479d5c mov rdx, rax | 0x00479d5f call 0x417b80 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (r14, rbx, rax); 0x00479d64 mov esi, 0x613391 | 0x00479d69 mov edx, 0x22 | 0x00479d6e mov rdi, rax | 0x00479d71 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); 0x00479d76 mov esi, 0x61337c | 0x00479d7b mov edx, 2 | 0x00479d80 mov rdi, rax | 0x00479d83 call 0x417b80 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x61337c, 2); 0x00479d88 mov rdi, rax | rdi = rax; 0x00479d8b call 0x406230 | std::_1::basic_ostream>::flush() (); 0x00479d90 lea rdi, [rsp + 0x10] | 0x00479d95 call 0x478a10 | BloombergLP::balxml::Decoder_ErrorLogger::~Decoder_ErrorLogger() (rsp + 0x10); | } 0x00479d9a sar ebp, 0x1f | ebp >>= 0x1f; 0x00479d9d mov eax, ebp | eax = ebp; 0x00479d9f add rsp, 0x108 | 0x00479da6 pop rbx | 0x00479da7 pop r14 | 0x00479da9 pop r15 | 0x00479dab pop rbp | 0x00479dac ret | return rax; | }