; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/assume @ 0x41a350 */ | #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; | int64_t var_38h; | int64_t var_40h; | 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&) */ 0x0041a350 push rbp | 0x0041a351 push r15 | 0x0041a353 push r14 | 0x0041a355 push r13 | 0x0041a357 push r12 | 0x0041a359 push rbx | 0x0041a35a sub rsp, 0x48 | 0x0041a35e mov r12, rdx | r12 = rdx; 0x0041a361 mov r8, rsi | r8 = rsi; 0x0041a364 mov r14, rdi | r14 = rdi; 0x0041a367 movabs rdx, 0xaaaaaaaaaaaaaaa | rdx = 0xaaaaaaaaaaaaaaa; 0x0041a371 mov rdi, rcx | rdi = rcx; 0x0041a374 sub rdi, r12 | rdi -= r12; 0x0041a377 mov rbx, rdi | rbx = rdi; 0x0041a37a sar rbx, 3 | rbx >>= 3; 0x0041a37e movabs rax, 0xaaaaaaaaaaaaaaab | rax = 0xaaaaaaaaaaaaaaab; 0x0041a388 imul rbx, rax | rbx *= rax; 0x0041a38c mov rsi, qword [r14 + 8] | rsi = *((r14 + 8)); 0x0041a390 mov rbp, rsi | 0x0041a393 sub rbp, qword [r14] | rbp -= *(r14); 0x0041a396 sar rbp, 3 | rbp >>= 3; 0x0041a39a imul rbp, rax | rbp *= rax; 0x0041a39e mov rax, rdx | rax = rdx; 0x0041a3a1 sub rax, rbp | rax -= rbp; 0x0041a3a4 cmp rbx, rax | | if (rbx <= rax) { 0x0041a3a7 ja 0x41a4e6 | 0x0041a3ad lea r15, [r14 + 8] | r15 = r14 + 8; 0x0041a3b1 add rbp, rbx | rbp += rbx; 0x0041a3b4 mov rax, qword [r14 + 0x10] | rax = *((r14 + 0x10)); 0x0041a3b8 cmp rbp, rax | | if (rbp > rax) { 0x0041a3bb jbe 0x41a49f | 0x0041a3c1 mov qword [rsp + 0x28], r15 | *((rsp + 0x28)) = r15; 0x0041a3c6 mov qword [rsp + 0x30], r8 | *((rsp + 0x30)) = r8; 0x0041a3cb mov qword [rsp + 0x38], rcx | *((rsp + 0x38)) = rcx; 0x0041a3d0 mov rdi, rbp | 0x0041a3d3 mov rsi, rax | 0x0041a3d6 call 0x42abc0 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rbp, rax, rdx); 0x0041a3db mov r15, rax | r15 = rax; 0x0041a3de mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x0041a3e2 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0041a3e5 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0041a3e9 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0041a3f2 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x0041a3f7 lea rax, [rax*8] | rax = rax*8; 0x0041a3ff lea rsi, [rax + rax*2] | rsi = rax * 3; 0x0041a403 mov rax, qword [rdi] | rax = *(rdi); 0x0041a406 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0041a409 mov r13, rax | r13 = rax; 0x0041a40c mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0041a411 mov qword [rsp], rax | *(rsp) = rax; 0x0041a415 mov qword [rsp + 0x10], r15 | *((rsp + 0x10)) = r15; 0x0041a41a mov rdx, qword [r14] | 0x0041a41d mov r8, qword [r14 + 8] | 0x0041a421 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x0041a425 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0041a42a sub rsp, 8 | 0x0041a42e lea rax, [rsp + 0x48] | rax = rsp + 0x48; 0x0041a433 mov rdi, r13 | 0x0041a436 mov rsi, qword [rsp + 0x30] | 0x0041a43b mov rcx, qword [rsp + 0x38] | 0x0041a440 mov r9, r12 | 0x0041a443 push rax | 0x0041a444 push rbx | 0x0041a445 push qword [rsp + 0x50] | 0x0041a449 call 0x41a540 | 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) (r13, *((rsp + 0x30)), *(r14), *((rsp + 0x38)), *((r14 + 8)), r12); 0x0041a44e add rsp, 0x20 | 0x0041a452 lea rax, [rbp + rbp*2] | rax = rbp + rbp*2; 0x0041a457 lea rax, [r13 + rax*8] | rax = r13 + rax*8; 0x0041a45c mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0041a461 mov rsi, rsp | 0x0041a464 mov rdi, r14 | 0x0041a467 call 0x42abf0 | bsl::Vector_Util::swap(void*,void*) (r14, rsp); 0x0041a46c mov rdi, qword [rsp] | rdi = *(rsp); 0x0041a470 test rdi, rdi | | if (rdi == 0) { 0x0041a473 je 0x41a4d7 | goto label_0; | } 0x0041a475 mov rsi, qword [rsp + 8] | 0x0041a47a mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x0041a47f mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x0041a484 lea rdx, [rsp + 0x20] | rdx = rsp + 0x20; 0x0041a489 call 0x419cc0 | voidBloombergLP::bslalg::ArrayDestructionPrimitives::destroy>(BloombergLP::balb::Choice1*,BloombergLP::balb::Choice1*,bsl::allocator,bsl::integral_constant) (rdi, *((rsp + 8))); 0x0041a48e mov rsi, qword [rsp] | rsi = *(rsp); 0x0041a492 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0041a497 mov rax, qword [rdi] | rax = *(rdi); 0x0041a49a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041a49d jmp 0x41a4d7 | | } else { 0x0041a49f test rdi, rdi | | if (rdi != 0) { 0x0041a4a2 je 0x41a4cc | 0x0041a4a4 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x0041a4a8 mov qword [rsp], rax | *(rsp) = rax; 0x0041a4ac sub rsp, 8 | 0x0041a4b0 lea r9, [rsp + 8] | r9 = rsp + 8; 0x0041a4b5 mov rdi, r8 | 0x0041a4b8 mov rdx, r12 | 0x0041a4bb mov r8, rbx | 0x0041a4be push 0 | 0x0041a4c0 call 0x41a670 | 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, rcx, rbx); 0x0041a4c5 add rsp, 0x10 | 0x0041a4c9 mov rsi, qword [r15] | rsi = *(r15); | } 0x0041a4cc lea rax, [rbx + rbx*2] | rax = rbx * 3; 0x0041a4d0 lea rax, [rsi + rax*8] | rax = rsi + rax*8; 0x0041a4d4 mov qword [r15], rax | *(r15) = rax; | } | label_0: 0x0041a4d7 add rsp, 0x48 | 0x0041a4db pop rbx | 0x0041a4dc pop r12 | 0x0041a4de pop r13 | 0x0041a4e0 pop r14 | 0x0041a4e2 pop r15 | 0x0041a4e4 pop rbp | 0x0041a4e5 ret | return rax; | } 0x0041a4e6 mov edi, 0x44862d | 0x0041a4eb call 0x420e10 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("vector<...>::insert(pos,first,last): vector too long"); | }