; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x41a3c0 */ | #include | ; (fcn) method.void_bsl::vector_BloombergLP::balb::Choice1__bsl::allocator_BloombergLP::balb::Choice1___::privateInsert_BloombergLP::balb.Choice1_const__BloombergLP::balb::Choice1_const__BloombergLP::balb::Choice1_const__BloombergLP::balb::Choice1_const__std () | int64_t method_void_bsl::vector_BloombergLP::balb::Choice1_bsl::allocator_BloombergLP::balb::Choice1_::privateInsert_BloombergLP::balb_Choice1_const_BloombergLP::balb::Choice1_const_BloombergLP::balb::Choice1_const_BloombergLP::balb::Choice1_const_std (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::balb::Choice1 const*, BloombergLP::balb::Choice1 const*, BloombergLP::balb::Choice1 const*, std::__1::forward_iterator_tag const&) */ 0x0041a3c0 push rbp | 0x0041a3c1 push r15 | 0x0041a3c3 push r14 | 0x0041a3c5 push r13 | 0x0041a3c7 push r12 | 0x0041a3c9 push rbx | 0x0041a3ca sub rsp, 0x38 | 0x0041a3ce mov r15, rcx | r15 = rcx; 0x0041a3d1 mov r12, rdx | r12 = rdx; 0x0041a3d4 mov r8, rsi | r8 = rsi; 0x0041a3d7 movabs rdx, 0xaaaaaaaaaaaaaaa | rdx = 0xaaaaaaaaaaaaaaa; 0x0041a3e1 sub rcx, r12 | rcx -= r12; 0x0041a3e4 mov rbx, rcx | rbx = rcx; 0x0041a3e7 sar rbx, 3 | rbx >>= 3; 0x0041a3eb movabs rax, 0xaaaaaaaaaaaaaaab | rax = 0xaaaaaaaaaaaaaaab; 0x0041a3f5 imul rbx, rax | rbx *= rax; 0x0041a3f9 mov rsi, qword [rdi + 8] | rsi = *((rdi + 8)); 0x0041a3fd mov rbp, rsi | 0x0041a400 sub rbp, qword [rdi] | rbp -= *(rdi); 0x0041a403 sar rbp, 3 | rbp >>= 3; 0x0041a407 imul rbp, rax | rbp *= rax; 0x0041a40b mov rax, rdx | rax = rdx; 0x0041a40e sub rax, rbp | rax -= rbp; 0x0041a411 cmp rbx, rax | | if (rbx <= rax) { 0x0041a414 ja 0x41a528 | 0x0041a41a mov r14, rdi | r14 = rdi; 0x0041a41d lea r13, [rdi + 8] | r13 = rdi + 8; 0x0041a421 add rbp, rbx | rbp += rbx; 0x0041a424 mov rax, qword [rdi + 0x10] | rax = *((rdi + 0x10)); 0x0041a428 cmp rbp, rax | | if (rbp > rax) { 0x0041a42b jbe 0x41a4dc | 0x0041a431 mov qword [rsp + 0x20], r13 | *((rsp + 0x20)) = r13; 0x0041a436 mov qword [rsp + 0x28], r8 | *((rsp + 0x28)) = r8; 0x0041a43b mov rdi, rbp | 0x0041a43e mov rsi, rax | 0x0041a441 call 0x42acc0 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rbp, rax, rdx); 0x0041a446 mov r13, rax | r13 = rax; 0x0041a449 mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x0041a44d xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0041a450 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0041a454 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0041a45d mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x0041a462 lea rax, [rax*8] | rax = rax*8; 0x0041a46a lea rsi, [rax + rax*2] | rsi = rax * 3; 0x0041a46e mov rax, qword [rdi] | rax = *(rdi); 0x0041a471 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0041a474 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0041a479 mov qword [rsp], rax | *(rsp) = rax; 0x0041a47d mov qword [rsp + 0x10], r13 | *((rsp + 0x10)) = r13; 0x0041a482 mov rdx, qword [r14] | 0x0041a485 mov r8, qword [r14 + 8] | 0x0041a489 mov rcx, qword [r14 + 0x18] | rcx = *((r14 + 0x18)); 0x0041a48d mov qword [rsp + 0x30], rcx | *((rsp + 0x30)) = rcx; 0x0041a492 sub rsp, 8 | 0x0041a496 lea r10, [rsp + 0x38] | r10 = rsp + 0x38; 0x0041a49b mov rdi, rax | 0x0041a49e mov rsi, qword [rsp + 0x28] | 0x0041a4a3 mov rcx, qword [rsp + 0x30] | 0x0041a4a8 mov r9, r12 | 0x0041a4ab push r10 | 0x0041a4ad push rbx | 0x0041a4ae push r15 | 0x0041a4b0 call 0x41a550 | voidBloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndInsert,BloombergLP::balb::Choice1const*>(bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer*,bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer,BloombergLP::balb::Choice1const*,BloombergLP::balb::Choice1const*,unsigned long,bsl::allocator) (rax, *((rsp + 0x28)), *(r14), *((rsp + 0x30)), *((r14 + 8)), r12); 0x0041a4b5 add rsp, 0x20 | 0x0041a4b9 lea rax, [rbp + rbp*2] | rax = rbp + rbp*2; 0x0041a4be shl rax, 3 | rax <<= 3; 0x0041a4c2 add qword [rsp + 8], rax | *((rsp + 8)) += rax; 0x0041a4c7 mov rsi, rsp | 0x0041a4ca mov rdi, r14 | 0x0041a4cd call 0x42acf0 | bsl::Vector_Util::swap(void*,void*) (r14, rsp); 0x0041a4d2 mov rdi, rsp | 0x0041a4d5 call 0x414be0 | bsl::vector>::~vector() (rsp); 0x0041a4da jmp 0x41a519 | | } else { 0x0041a4dc test rcx, rcx | | if (rcx != 0) { 0x0041a4df je 0x41a50d | 0x0041a4e1 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x0041a4e5 mov qword [rsp], rax | *(rsp) = rax; 0x0041a4e9 sub rsp, 8 | 0x0041a4ed lea r9, [rsp + 8] | r9 = rsp + 8; 0x0041a4f2 mov rdi, r8 | 0x0041a4f5 mov rdx, r12 | 0x0041a4f8 mov rcx, r15 | 0x0041a4fb mov r8, rbx | 0x0041a4fe push 0 | 0x0041a500 call 0x41a680 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::insert>(BloombergLP::balb::Choice1*,BloombergLP::balb::Choice1*,BloombergLP::balb::Choice1const*,BloombergLP::balb::Choice1const*,unsigned long,bsl::allocator,BloombergLP::bslmf::MetaInt<1>*) (r8, rsi, r12, r15, rbx); 0x0041a505 add rsp, 0x10 | 0x0041a509 mov rsi, qword [r13] | rsi = *(r13); | } 0x0041a50d lea rax, [rbx + rbx*2] | rax = rbx * 3; 0x0041a511 lea rax, [rsi + rax*8] | rax = rsi + rax*8; 0x0041a515 mov qword [r13], rax | *(r13) = rax; | } 0x0041a519 add rsp, 0x38 | 0x0041a51d pop rbx | 0x0041a51e pop r12 | 0x0041a520 pop r13 | 0x0041a522 pop r14 | 0x0041a524 pop r15 | 0x0041a526 pop rbp | 0x0041a527 ret | return rax; | } 0x0041a528 mov edi, 0x447e9b | 0x0041a52d call 0x420f10 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("vector<...>::insert(pos,first,last): vector too long"); | }