; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4ca190 */ | #include | ; (fcn) method.void_bsl::vector_BloombergLP::s_baltst::Choice1__bsl::allocator_BloombergLP::s_baltst::Choice1___::privateInsert_BloombergLP::s_baltst.Choice1_const__BloombergLP::s_baltst::Choice1_const__BloombergLP::s_baltst::Choice1_const__BloombergLP::s_bal () | int64_t method_void_bsl::vector_BloombergLP::s_baltst::Choice1_bsl::allocator_BloombergLP::s_baltst::Choice1_::privateInsert_BloombergLP::s_baltst_Choice1_const_BloombergLP::s_baltst::Choice1_const_BloombergLP::s_baltst::Choice1_const_BloombergLP::s_bal (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h_2; | int64_t var_70h; | int64_t var_78h; | int64_t var_80h; | int64_t var_20h_2; | int64_t var_28h_2; | int64_t var_30h_2; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void bsl::vector >::privateInsert(BloombergLP::s_baltst::Choice1 const*, BloombergLP::s_baltst::Choice1 const*, BloombergLP::s_baltst::Choice1 const*, std::__1::forward_iterator_tag const&) */ 0x004ca190 push rbp | 0x004ca191 push r15 | 0x004ca193 push r14 | 0x004ca195 push r13 | 0x004ca197 push r12 | 0x004ca199 push rbx | 0x004ca19a sub rsp, 0x38 | 0x004ca19e mov r15, rcx | r15 = rcx; 0x004ca1a1 mov r12, rdx | r12 = rdx; 0x004ca1a4 mov r8, rsi | r8 = rsi; 0x004ca1a7 movabs rdx, 0xaaaaaaaaaaaaaaa | rdx = 0xaaaaaaaaaaaaaaa; 0x004ca1b1 sub rcx, r12 | rcx -= r12; 0x004ca1b4 mov rbx, rcx | rbx = rcx; 0x004ca1b7 sar rbx, 3 | rbx >>= 3; 0x004ca1bb movabs rax, 0xaaaaaaaaaaaaaaab | rax = 0xaaaaaaaaaaaaaaab; 0x004ca1c5 imul rbx, rax | rbx *= rax; 0x004ca1c9 mov rsi, qword [rdi + 8] | rsi = *((rdi + 8)); 0x004ca1cd mov rbp, rsi | 0x004ca1d0 sub rbp, qword [rdi] | rbp -= *(rdi); 0x004ca1d3 sar rbp, 3 | rbp >>= 3; 0x004ca1d7 imul rbp, rax | rbp *= rax; 0x004ca1db mov rax, rdx | rax = rdx; 0x004ca1de sub rax, rbp | rax -= rbp; 0x004ca1e1 cmp rbx, rax | | if (rbx <= rax) { 0x004ca1e4 ja 0x4ca2f8 | 0x004ca1ea mov r14, rdi | r14 = rdi; 0x004ca1ed lea r13, [rdi + 8] | r13 = rdi + 8; 0x004ca1f1 add rbp, rbx | rbp += rbx; 0x004ca1f4 mov rax, qword [rdi + 0x10] | rax = *((rdi + 0x10)); 0x004ca1f8 cmp rbp, rax | | if (rbp > rax) { 0x004ca1fb jbe 0x4ca2ac | 0x004ca201 mov qword [rsp + 0x20], r13 | *((rsp + 0x20)) = r13; 0x004ca206 mov qword [rsp + 0x28], r8 | *((rsp + 0x28)) = r8; 0x004ca20b mov rdi, rbp | 0x004ca20e mov rsi, rax | 0x004ca211 call 0x523400 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rbp, rax, rdx); 0x004ca216 mov r13, rax | r13 = rax; 0x004ca219 mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x004ca21d xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004ca220 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x004ca224 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004ca22d mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x004ca232 lea rax, [rax*8] | rax = rax*8; 0x004ca23a lea rsi, [rax + rax*2] | rsi = rax * 3; 0x004ca23e mov rax, qword [rdi] | rax = *(rdi); 0x004ca241 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004ca244 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004ca249 mov qword [rsp], rax | *(rsp) = rax; 0x004ca24d mov qword [rsp + 0x10], r13 | *((rsp + 0x10)) = r13; 0x004ca252 mov rdx, qword [r14] | 0x004ca255 mov r8, qword [r14 + 8] | 0x004ca259 mov rcx, qword [r14 + 0x18] | rcx = *((r14 + 0x18)); 0x004ca25d mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x004ca262 sub rsp, 8 | 0x004ca266 lea r10, [rsp + 0x38] | r10 = rsp + 0x38; 0x004ca26b mov rdi, rax | 0x004ca26e mov rsi, qword [rsp + 0x28] | 0x004ca273 mov rcx, qword [rsp + 0x30] | 0x004ca278 mov r9, r12 | 0x004ca27b push r10 | 0x004ca27d push rbx | 0x004ca27e push r15 | 0x004ca280 call 0x4ca320 | voidBloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndInsert,BloombergLP::s_baltst::Choice1const*>(bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer*,bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer,BloombergLP::s_baltst::Choice1const*,BloombergLP::s_baltst::Choice1const*,unsigned long,bsl::allocator) (rax, *((rsp + 0x28)), *(r14), *((rsp + 0x30)), *((r14 + 8)), r12); 0x004ca285 add rsp, 0x20 | 0x004ca289 lea rax, [rbp + rbp*2] | rax = rbp + rbp*2; 0x004ca28e shl rax, 3 | rax <<= 3; 0x004ca292 add qword [rsp + 8], rax | *((rsp + 8)) += rax; 0x004ca297 mov rsi, rsp | 0x004ca29a mov rdi, r14 | 0x004ca29d call 0x523430 | bsl::Vector_Util::swap(void*,void*) (r14, rsp); 0x004ca2a2 mov rdi, rsp | 0x004ca2a5 call 0x4c56b0 | bsl::vector>::~vector() (rsp); 0x004ca2aa jmp 0x4ca2e9 | | } else { 0x004ca2ac test rcx, rcx | | if (rcx != 0) { 0x004ca2af je 0x4ca2dd | 0x004ca2b1 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x004ca2b5 mov qword [rsp], rax | *(rsp) = rax; 0x004ca2b9 sub rsp, 8 | 0x004ca2bd lea r9, [rsp + 8] | r9 = rsp + 8; 0x004ca2c2 mov rdi, r8 | 0x004ca2c5 mov rdx, r12 | 0x004ca2c8 mov rcx, r15 | 0x004ca2cb mov r8, rbx | 0x004ca2ce push 0 | 0x004ca2d0 call 0x4ca450 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::insert>(BloombergLP::s_baltst::Choice1*,BloombergLP::s_baltst::Choice1*,BloombergLP::s_baltst::Choice1const*,BloombergLP::s_baltst::Choice1const*,unsigned long,bsl::allocator,BloombergLP::bslmf::MetaInt<1>*) (r8, rsi, r12, r15, rbx); 0x004ca2d5 add rsp, 0x10 | 0x004ca2d9 mov rsi, qword [r13] | rsi = *(r13); | } 0x004ca2dd lea rax, [rbx + rbx*2] | rax = rbx * 3; 0x004ca2e1 lea rax, [rsi + rax*8] | rax = rsi + rax*8; 0x004ca2e5 mov qword [r13], rax | *(r13) = rax; | } 0x004ca2e9 add rsp, 0x38 | 0x004ca2ed pop rbx | 0x004ca2ee pop r12 | 0x004ca2f0 pop r13 | 0x004ca2f2 pop r14 | 0x004ca2f4 pop r15 | 0x004ca2f6 pop rbp | 0x004ca2f7 ret | return rax; | } 0x004ca2f8 mov edi, 0x54f45d | 0x004ca2fd call 0x519650 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("vector<...>::insert(pos,first,last): vector too long"); | }