; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x41b870 */ | #include | ; (fcn) method.void_bsl::vector_BloombergLP::balb::Choice3__bsl::allocator_BloombergLP::balb::Choice3___::privateInsert_BloombergLP::balb.Choice3_const__BloombergLP::balb::Choice3_const__BloombergLP::balb::Choice3_const__BloombergLP::balb::Choice3_const__std () | int64_t method_void_bsl::vector_BloombergLP::balb::Choice3_bsl::allocator_BloombergLP::balb::Choice3_::privateInsert_BloombergLP::balb_Choice3_const_BloombergLP::balb::Choice3_const_BloombergLP::balb::Choice3_const_BloombergLP::balb::Choice3_const_std (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | int64_t var_8h_2; | int64_t var_60h; | int64_t var_10h_2; | int64_t var_30h; | int64_t var_38h; | int64_t var_40h; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void bsl::vector >::privateInsert(BloombergLP::balb::Choice3 const*, BloombergLP::balb::Choice3 const*, BloombergLP::balb::Choice3 const*, std::__1::forward_iterator_tag const&) */ 0x0041b870 push rbp | 0x0041b871 push r15 | 0x0041b873 push r14 | 0x0041b875 push r13 | 0x0041b877 push r12 | 0x0041b879 push rbx | 0x0041b87a sub rsp, 0x48 | 0x0041b87e mov r12, rdx | r12 = rdx; 0x0041b881 mov r8, rsi | r8 = rsi; 0x0041b884 mov r14, rdi | r14 = rdi; 0x0041b887 movabs rdx, 0xaaaaaaaaaaaaaa | rdx = 0xaaaaaaaaaaaaaa; 0x0041b891 mov rdi, rcx | rdi = rcx; 0x0041b894 sub rdi, r12 | rdi -= r12; 0x0041b897 mov rbx, rdi | rbx = rdi; 0x0041b89a sar rbx, 7 | rbx >>= 7; 0x0041b89e movabs rax, 0xaaaaaaaaaaaaaaab | rax = 0xaaaaaaaaaaaaaaab; 0x0041b8a8 imul rbx, rax | rbx *= rax; 0x0041b8ac mov rsi, qword [r14 + 8] | rsi = *((r14 + 8)); 0x0041b8b0 mov r13, rsi | r13 = *((r14 + 8)); 0x0041b8b3 sub r13, qword [r14] | r13 -= *(r14); 0x0041b8b6 sar r13, 7 | r13 >>= 7; 0x0041b8ba imul r13, rax | r13 *= rax; 0x0041b8be mov rax, rdx | rax = rdx; 0x0041b8c1 sub rax, r13 | rax -= r13; 0x0041b8c4 cmp rbx, rax | | if (rbx > rax) { 0x0041b8c7 ja 0x41ba66 | goto label_2; | } 0x0041b8cd lea rbp, [r14 + 8] | rbp = r14 + 8; 0x0041b8d1 add r13, rbx | r13 += rbx; 0x0041b8d4 mov rax, qword [r14 + 0x10] | rax = *((r14 + 0x10)); 0x0041b8d8 cmp r13, rax | | if (r13 <= rax) { 0x0041b8db jbe 0x41ba06 | goto label_3; | } 0x0041b8e1 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x0041b8e6 mov qword [rsp + 0x30], r8 | *((rsp + 0x30)) = r8; 0x0041b8eb mov qword [rsp + 0x38], rcx | *((rsp + 0x38)) = rcx; 0x0041b8f0 mov rdi, r13 | 0x0041b8f3 mov rsi, rax | 0x0041b8f6 call 0x42acc0 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (r13, rax, rdx); 0x0041b8fb mov r15, rax | r15 = rax; 0x0041b8fe mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x0041b902 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0041b905 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0041b909 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0041b912 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x0041b917 shl rax, 7 | rax <<= 7; 0x0041b91b lea rsi, [rax + rax*2] | rsi = rax * 3; 0x0041b91f mov rax, qword [rdi] | rax = *(rdi); 0x0041b922 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0041b925 mov rbp, rax | 0x0041b928 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0041b92d mov qword [rsp], rax | *(rsp) = rax; 0x0041b931 mov qword [rsp + 0x10], r15 | *((rsp + 0x10)) = r15; 0x0041b936 mov rdx, qword [r14] | 0x0041b939 mov r8, qword [r14 + 8] | 0x0041b93d mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x0041b941 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x0041b946 sub rsp, 8 | 0x0041b94a lea rax, [rsp + 0x48] | rax = rsp + 0x48; 0x0041b94f mov rdi, rbp | 0x0041b952 mov rsi, qword [rsp + 0x30] | 0x0041b957 mov rcx, qword [rsp + 0x38] | 0x0041b95c mov r9, r12 | 0x0041b95f push rax | 0x0041b960 push rbx | 0x0041b961 push qword [rsp + 0x50] | 0x0041b965 call 0x41bb10 | voidBloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndInsert,BloombergLP::balb::Choice3const*>(bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer*,bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer,bsl::allocator_traits>::pointer,BloombergLP::balb::Choice3const*,BloombergLP::balb::Choice3const*,unsigned long,bsl::allocator) (rbp, *((rsp + 0x30)), *(r14), *((rsp + 0x38)), *((r14 + 8)), r12); 0x0041b96a add rsp, 0x20 | 0x0041b96e lea rax, [r13 + r13*2] | rax = r13 * 3; 0x0041b973 shl rax, 7 | rax <<= 7; 0x0041b977 add rbp, rax | rbp += rax; 0x0041b97a mov qword [rsp + 8], rbp | *((rsp + 8)) = rbp; 0x0041b97f mov rsi, rsp | 0x0041b982 mov rdi, r14 | 0x0041b985 call 0x42acf0 | bsl::Vector_Util::swap(void*,void*) (r14, rsp); 0x0041b98a mov rbx, qword [rsp] | rbx = *(rsp); 0x0041b98e test rbx, rbx | | if (rbx == 0) { 0x0041b991 je 0x41ba57 | goto label_4; | } 0x0041b997 mov rbp, qword [rsp + 8] | rbp = *((rsp + 8)); 0x0041b99c cmp rbx, rbp | | if (rbx != rbp) { 0x0041b99f jne 0x41b9ce | goto label_5; | } 0x0041b9a1 jmp 0x41ba49 | goto label_6; | label_1: 0x0041b9b0 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; | do { | label_0: 0x0041b9b8 mov dword [rbx + 0x170], 0xffffffff | *((rbx + 0x170)) = 0xffffffff; 0x0041b9c2 add rbx, 0x180 | rbx += 0x180; 0x0041b9c9 cmp rbp, rbx | | if (rbp == rbx) { 0x0041b9cc je 0x41ba45 | goto label_7; | } | label_5: 0x0041b9ce mov eax, dword [rbx + 0x170] | eax = *((rbx + 0x170)); 0x0041b9d4 cmp eax, 2 | | if (eax == 2) { 0x0041b9d7 je 0x41b9f0 | goto label_8; | } 0x0041b9d9 test eax, eax | 0x0041b9db jne 0x41b9b8 | | } while (eax != 0); 0x0041b9dd mov rdi, rbx | 0x0041b9e0 call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (rbx); 0x0041b9e5 jmp 0x41b9b8 | goto label_0; | label_8: 0x0041b9f0 cmp qword [rbx + 0x20], 0x17 | | if (*((rbx + 0x20)) == 0x17) { 0x0041b9f5 je 0x41b9b0 | goto label_1; | } 0x0041b9f7 mov rsi, qword [rbx] | rsi = *(rbx); 0x0041b9fa mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x0041b9fe mov rax, qword [rdi] | rax = *(rdi); 0x0041ba01 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0041ba04 jmp 0x41b9b0 | goto label_1; | label_3: 0x0041ba06 test rdi, rdi | | if (rdi != 0) { 0x0041ba09 je 0x41ba34 | 0x0041ba0b mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x0041ba0f mov qword [rsp], rax | *(rsp) = rax; 0x0041ba13 sub rsp, 8 | 0x0041ba17 lea r9, [rsp + 8] | r9 = rsp + 8; 0x0041ba1c mov rdi, r8 | 0x0041ba1f mov rdx, r12 | 0x0041ba22 mov r8, rbx | 0x0041ba25 push 0 | 0x0041ba27 call 0x41bc50 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::insert>(BloombergLP::balb::Choice3*,BloombergLP::balb::Choice3*,BloombergLP::balb::Choice3const*,BloombergLP::balb::Choice3const*,unsigned long,bsl::allocator,BloombergLP::bslmf::MetaInt<1>*) (r8, rsi, r12, rcx, rbx); 0x0041ba2c add rsp, 0x10 | 0x0041ba30 mov rsi, qword [rbp] | rsi = *(rbp); | } 0x0041ba34 lea rax, [rbx + rbx*2] | rax = rbx * 3; 0x0041ba38 shl rax, 7 | rax <<= 7; 0x0041ba3c add rax, rsi | rax += rsi; 0x0041ba3f mov qword [rbp], rax | *(rbp) = rax; 0x0041ba43 jmp 0x41ba57 | goto label_4; | label_7: 0x0041ba45 mov rbx, qword [rsp] | rbx = *(rsp); | label_6: 0x0041ba49 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0041ba4e mov rax, qword [rdi] | rax = *(rdi); 0x0041ba51 mov rsi, rbx | rsi = rbx; 0x0041ba54 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_4: 0x0041ba57 add rsp, 0x48 | 0x0041ba5b pop rbx | 0x0041ba5c pop r12 | 0x0041ba5e pop r13 | 0x0041ba60 pop r14 | 0x0041ba62 pop r15 | 0x0041ba64 pop rbp | 0x0041ba65 ret | return rax; | label_2: 0x0041ba66 mov edi, 0x447e9b | 0x0041ba6b call 0x420f10 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("vector<...>::insert(pos,first,last): vector too long"); | }