; assembly | /* r2dec pseudo code output */ | /* balber_berdecoder.t/none @ 0x442a10 */ | #include | ; (fcn) method.int_BloombergLP::balber::BerEncoder.encode_unsigned_long__std::__1::basic_streambuf_char__std::__1::char_traits_char_____unsigned_long_const_ () | int64_t method_int_BloombergLP::balber::BerEncoder_encode_unsigned_long_std::_1::basic_streambuf_char_std::_1::char_traits_char_unsigned_long_const_ (uint32_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* int BloombergLP::balber::BerEncoder::encode(std::__1::basic_streambuf >*, unsigned long const&) */ 0x00442a10 push rbp | 0x00442a11 push r15 | 0x00442a13 push r14 | 0x00442a15 push rbx | 0x00442a16 sub rsp, 0x28 | 0x00442a1a mov r15, rdx | r15 = rdx; 0x00442a1d mov r14, rsi | r14 = rsi; 0x00442a20 mov rbx, rdi | rbx = rdi; 0x00442a23 mov qword [rdi + 0x108], rsi | *((rdi + 0x108)) = rsi; 0x00442a2a mov dword [rdi + 0x100], 0 | *((rdi + 0x100)) = 0; 0x00442a34 mov rbp, qword [rdi + 0xf8] | rbp = *((rdi + 0xf8)); 0x00442a3b test rbp, rbp | | if (rbp != 0) { 0x00442a3e je 0x442a5d | 0x00442a40 mov rsi, qword [rbp + 0x30] | rsi = *((rbp + 0x30)); 0x00442a44 mov rdi, qword [rbp + 0x48] | rdi = *((rbp + 0x48)); 0x00442a48 mov rax, qword [rdi] | rax = *(rdi); 0x00442a4b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00442a4e xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00442a51 movups xmmword [rbp + 0x30], xmm0 | __asm ("movups xmmword [rbp + 0x30], xmm0"); 0x00442a55 mov qword [rbp + 0x40], 0 | *((rbp + 0x40)) = 0; | } 0x00442a5d mov dword [rbx + 0x110], 0 | *((rbx + 0x110)) = 0; 0x00442a67 cmp qword [rbx], 0 | | if (*(rbx) != 0) { 0x00442a6b je 0x442aa2 | 0x00442a6d mov qword [rsp], rbx | *(rsp) = rbx; 0x00442a71 mov dword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00442a79 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x00442a7e mov dword [rbx + 0x110], 1 | *((rbx + 0x110)) = 1; 0x00442a88 mov rdi, rsp | 0x00442a8b mov rsi, r15 | 0x00442a8e call 0x44db40 | eax = intBloombergLP::balber::BerEncoder_UniversalElementVisitor::operator()(unsigned longconst&) (rsp, r15); 0x00442a93 mov ebp, eax | 0x00442a95 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x00442a9a dec dword [rax + 0x110] | *((rax + 0x110))--; 0x00442aa0 jmp 0x442af2 | | } else { 0x00442aa2 lea rbp, [rsp + 0x18] | rbp = rsp + 0x18; 0x00442aa7 mov rdi, rbp | rdi = rbp; 0x00442aaa call 0x453210 | BloombergLP::balber::BerEncoderOptions::BerEncoderOptions() (); 0x00442aaf mov qword [rbx], rbp | *(rbx) = rbp; 0x00442ab2 mov qword [rsp], rbx | *(rsp) = rbx; 0x00442ab6 mov dword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x00442abe mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x00442ac3 inc dword [rbx + 0x110] | *((rbx + 0x110))++; 0x00442ac9 mov rdi, rsp | 0x00442acc mov rsi, r15 | 0x00442acf call 0x44db40 | eax = intBloombergLP::balber::BerEncoder_UniversalElementVisitor::operator()(unsigned longconst&) (rsp, r15); 0x00442ad4 mov ebp, eax | 0x00442ad6 mov qword [rbx], 0 | *(rbx) = 0; 0x00442add mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x00442ae2 dec dword [rax + 0x110] | *((rax + 0x110))--; 0x00442ae8 lea rdi, [rsp + 0x18] | rdi = rsp + 0x18; 0x00442aed call 0x453260 | BloombergLP::balber::BerEncoderOptions::~BerEncoderOptions() (); | } 0x00442af2 mov qword [rbx + 0x108], 0 | *((rbx + 0x108)) = 0; 0x00442afd mov rax, qword [r14] | rax = *(r14); 0x00442b00 mov rdi, r14 | rdi = r14; 0x00442b03 call qword [rax + 0x30] | uint64_t (*rax + 0x30)() (); 0x00442b06 mov eax, ebp | eax = ebp; 0x00442b08 add rsp, 0x28 | 0x00442b0c pop rbx | 0x00442b0d pop r14 | 0x00442b0f pop r15 | 0x00442b11 pop rbp | 0x00442b12 ret | return rax; | }