; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x4c5960 */ | #include | ; (fcn) method.bsl::vector_BloombergLP::s_baltst::Choice3__bsl::allocator_BloombergLP::s_baltst::Choice3___.vector_bsl::vector_BloombergLP::s_baltst::Choice3__bsl::allocator_BloombergLP::s_baltst::Choice3_____bsl::allocator_BloombergLP::s_baltst::Choice3__cons () | int64_t method_bsl::vector_BloombergLP::s_baltst::Choice3_bsl::allocator_BloombergLP::s_baltst::Choice3_vector_bsl::vector_BloombergLP::s_baltst::Choice3_bsl::allocator_BloombergLP::s_baltst::Choice3_bsl::allocator_BloombergLP::s_baltst::Choice3_cons (int64_t arg3, uint32_t arg2, int64_t arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* bsl::vector >::vector(bsl::vector >&&, bsl::allocator const&) */ 0x004c5960 push r15 | 0x004c5962 push r14 | 0x004c5964 push r12 | 0x004c5966 push rbx | 0x004c5967 push rax | 0x004c5968 mov rbx, rsi | rbx = rsi; 0x004c596b mov r14, rdi | r14 = rdi; 0x004c596e xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004c5971 movups xmmword [rdi], xmm0 | __asm ("movups xmmword [rdi], xmm0"); 0x004c5974 mov qword [rdi + 0x10], 0 | *((rdi + 0x10)) = 0; 0x004c597c mov rdi, qword [rdx] | rdi = *(rdx); 0x004c597f mov qword [r14 + 0x18], rdi | *((r14 + 0x18)) = rdi; 0x004c5983 cmp rdi, qword [rsi + 0x18] | | if (rdi != *((rsi + 0x18))) { 0x004c5987 jne 0x4c59b6 | goto label_1; | } 0x004c5989 mov rax, qword [rbx] | rax = *(rbx); 0x004c598c mov qword [r14], rax | *(r14) = rax; 0x004c598f mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x004c5993 mov qword [r14 + 8], rax | *((r14 + 8)) = rax; 0x004c5997 mov rax, qword [rbx + 0x10] | rax = *((rbx + 0x10)); 0x004c599b mov qword [r14 + 0x10], rax | *((r14 + 0x10)) = rax; 0x004c599f movups xmmword [rbx], xmm0 | __asm ("movups xmmword [rbx], xmm0"); 0x004c59a2 mov qword [rbx + 0x10], 0 | *((rbx + 0x10)) = 0; | do { | label_0: 0x004c59aa add rsp, 8 | 0x004c59ae pop rbx | 0x004c59af pop r12 | 0x004c59b1 pop r14 | 0x004c59b3 pop r15 | 0x004c59b5 ret | return rax; | label_1: 0x004c59b6 mov rsi, qword [rbx + 8] | rsi = *((rbx + 8)); 0x004c59ba sub rsi, qword [rbx] | rsi -= *(rbx); 0x004c59bd je 0x4c59aa | | } while (rsi == 0); 0x004c59bf mov rax, rsi | rax = rsi; 0x004c59c2 sar rax, 7 | rax >>= 7; 0x004c59c6 movabs r12, 0xaaaaaaaaaaaaaaab | r12 = 0xaaaaaaaaaaaaaaab; 0x004c59d0 imul r12, rax | r12 *= rax; 0x004c59d4 mov rax, qword [rdi] | rax = *(rdi); 0x004c59d7 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004c59da mov r15, rax | r15 = rax; 0x004c59dd mov qword [r14 + 8], rax | *((r14 + 8)) = rax; 0x004c59e1 mov qword [r14], rax | *(r14) = rax; 0x004c59e4 mov qword [r14 + 0x10], r12 | *((r14 + 0x10)) = r12; 0x004c59e8 mov rsi, qword [rbx] | 0x004c59eb mov rdx, qword [rbx + 8] | 0x004c59ef mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x004c59f3 mov qword [rsp], rax | *(rsp) = rax; 0x004c59f7 mov rcx, rsp | 0x004c59fa mov rdi, r15 | 0x004c59fd xor r8d, r8d | r8d = 0; 0x004c5a00 call 0x4c9ef0 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveConstruct>(BloombergLP::s_baltst::Choice3*,BloombergLP::s_baltst::Choice3*,BloombergLP::s_baltst::Choice3*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (r15, *(rbx), *((rbx + 8)), rsp); 0x004c5a05 mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x004c5a09 sub rax, qword [rbx] | rax -= *(rbx); 0x004c5a0c add qword [r14 + 8], rax | *((r14 + 8)) += rax; 0x004c5a10 jmp 0x4c59aa | goto label_0; | }