; assembly | /* r2dec pseudo code output */ | /* balxml_hexparser.t/assume @ 0x403dd0 */ | #include | ; (fcn) sym.loadFromHexStream_bsl::vector_char__bsl::allocator_char_____std::__1::basic_istream_char__std::__1::char_traits_char____ () | int64_t loadFromHexStream_bsl::vector_char_bsl::allocator_char_std::_1::basic_istream_char_std::_1::char_traits_char_ (int64_t arg2, uint32_t arg1) { | uint32_t var_8h; | uint32_t var_10h; | rsi = arg2; | rdi = arg1; | /* loadFromHexStream(bsl::vector >*, std::__1::basic_istream >&) */ 0x00403dd0 sub rsp, 0x18 | 0x00403dd4 mov byte [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00403dd9 mov qword [rsp + 0x10], rdi | *((rsp + 0x10)) = rdi; 0x00403dde mov rax, qword [rdi] | rax = *(rdi); 0x00403de1 cmp qword [rdi + 8], rax | | if (*((rdi + 8)) != rax) { 0x00403de5 je 0x403deb | 0x00403de7 mov qword [rdi + 8], rax | *((rdi + 8)) = rax; | } 0x00403deb mov rax, qword [rsi] | rax = *(rsi); 0x00403dee mov rax, qword [rax - 0x18] | rax = *((rax - 0x18)); 0x00403df2 mov rsi, qword [rsi + rax + 0x28] | 0x00403df7 lea rdi, [rsp + 8] | 0x00403dfc xor edx, edx | 0x00403dfe call 0x408040 | eax = intBloombergLP::balxml::HexParser>>::pushCharacters>>(std::_1::istreambuf_iterator>,std::_1::istreambuf_iterator>) (rsp + 8, *((rsi + rax + 0x28)), 0); 0x00403e03 mov ecx, eax | ecx = eax; 0x00403e05 mov eax, 0xffffffff | eax = 0xffffffff; 0x00403e0a test ecx, ecx | | if (ecx != 0) { 0x00403e0c je 0x403e13 | 0x00403e0e add rsp, 0x18 | 0x00403e12 ret | return rax; | } 0x00403e13 xor eax, eax | eax = 0; 0x00403e15 cmp al, byte [rsp + 8] | 0x00403e19 sbb eax, eax | eax -= eax; 0x00403e1b add rsp, 0x18 | 0x00403e1f ret | return rax; | }