; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x4ca060 */ | #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; | int64_t var_38h; | int64_t var_40h; | 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&) */ 0x004ca060 push rbp | 0x004ca061 push r15 | 0x004ca063 push r14 | 0x004ca065 push r13 | 0x004ca067 push r12 | 0x004ca069 push rbx | 0x004ca06a sub rsp, 0x48 | 0x004ca06e mov r12, rdx | r12 = rdx; 0x004ca071 mov r8, rsi | r8 = rsi; 0x004ca074 mov r14, rdi | r14 = rdi; 0x004ca077 movabs rdx, 0xaaaaaaaaaaaaaaa | rdx = 0xaaaaaaaaaaaaaaa; 0x004ca081 mov rdi, rcx | rdi = rcx; 0x004ca084 sub rdi, r12 | rdi -= r12; 0x004ca087 mov rbx, rdi | rbx = rdi; 0x004ca08a sar rbx, 3 | rbx >>= 3; 0x004ca08e movabs rax, 0xaaaaaaaaaaaaaaab | rax = 0xaaaaaaaaaaaaaaab; 0x004ca098 imul rbx, rax | rbx *= rax; 0x004ca09c mov rsi, qword [r14 + 8] | rsi = *((r14 + 8)); 0x004ca0a0 mov rbp, rsi | 0x004ca0a3 sub rbp, qword [r14] | rbp -= *(r14); 0x004ca0a6 sar rbp, 3 | rbp >>= 3; 0x004ca0aa imul rbp, rax | rbp *= rax; 0x004ca0ae mov rax, rdx | rax = rdx; 0x004ca0b1 sub rax, rbp | rax -= rbp; 0x004ca0b4 cmp rbx, rax | | if (rbx <= rax) { 0x004ca0b7 ja 0x4ca1f6 | 0x004ca0bd lea r15, [r14 + 8] | r15 = r14 + 8; 0x004ca0c1 add rbp, rbx | rbp += rbx; 0x004ca0c4 mov rax, qword [r14 + 0x10] | rax = *((r14 + 0x10)); 0x004ca0c8 cmp rbp, rax | | if (rbp > rax) { 0x004ca0cb jbe 0x4ca1af | 0x004ca0d1 mov qword [rsp + 0x28], r15 | *((rsp + 0x28)) = r15; 0x004ca0d6 mov qword [rsp + 0x30], r8 | *((rsp + 0x30)) = r8; 0x004ca0db mov qword [rsp + 0x38], rcx | *((rsp + 0x38)) = rcx; 0x004ca0e0 mov rdi, rbp | 0x004ca0e3 mov rsi, rax | 0x004ca0e6 call 0x5227c0 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rbp, rax, rdx); 0x004ca0eb mov r15, rax | r15 = rax; 0x004ca0ee mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x004ca0f2 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004ca0f5 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x004ca0f9 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004ca102 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x004ca107 lea rax, [rax*8] | rax = rax*8; 0x004ca10f lea rsi, [rax + rax*2] | rsi = rax * 3; 0x004ca113 mov rax, qword [rdi] | rax = *(rdi); 0x004ca116 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004ca119 mov r13, rax | r13 = rax; 0x004ca11c mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004ca121 mov qword [rsp], rax | *(rsp) = rax; 0x004ca125 mov qword [rsp + 0x10], r15 | *((rsp + 0x10)) = r15; 0x004ca12a mov rdx, qword [r14] | 0x004ca12d mov r8, qword [r14 + 8] | 0x004ca131 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x004ca135 mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x004ca13a sub rsp, 8 | 0x004ca13e lea rax, [rsp + 0x48] | rax = rsp + 0x48; 0x004ca143 mov rdi, r13 | 0x004ca146 mov rsi, qword [rsp + 0x30] | 0x004ca14b mov rcx, qword [rsp + 0x38] | 0x004ca150 mov r9, r12 | 0x004ca153 push rax | 0x004ca154 push rbx | 0x004ca155 push qword [rsp + 0x50] | 0x004ca159 call 0x4ca250 | 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) (r13, *((rsp + 0x30)), *(r14), *((rsp + 0x38)), *((r14 + 8)), r12); 0x004ca15e add rsp, 0x20 | 0x004ca162 lea rax, [rbp + rbp*2] | rax = rbp + rbp*2; 0x004ca167 lea rax, [r13 + rax*8] | rax = r13 + rax*8; 0x004ca16c mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004ca171 mov rsi, rsp | 0x004ca174 mov rdi, r14 | 0x004ca177 call 0x5227f0 | bsl::Vector_Util::swap(void*,void*) (r14, rsp); 0x004ca17c mov rdi, qword [rsp] | rdi = *(rsp); 0x004ca180 test rdi, rdi | | if (rdi == 0) { 0x004ca183 je 0x4ca1e7 | goto label_0; | } 0x004ca185 mov rsi, qword [rsp + 8] | 0x004ca18a mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x004ca18f mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x004ca194 lea rdx, [rsp + 0x20] | rdx = rsp + 0x20; 0x004ca199 call 0x4c9aa0 | voidBloombergLP::bslalg::ArrayDestructionPrimitives::destroy>(BloombergLP::s_baltst::Choice1*,BloombergLP::s_baltst::Choice1*,bsl::allocator,bsl::integral_constant) (rdi, *((rsp + 8))); 0x004ca19e mov rsi, qword [rsp] | rsi = *(rsp); 0x004ca1a2 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x004ca1a7 mov rax, qword [rdi] | rax = *(rdi); 0x004ca1aa call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004ca1ad jmp 0x4ca1e7 | | } else { 0x004ca1af test rdi, rdi | | if (rdi != 0) { 0x004ca1b2 je 0x4ca1dc | 0x004ca1b4 mov rax, qword [r14 + 0x18] | rax = *((r14 + 0x18)); 0x004ca1b8 mov qword [rsp], rax | *(rsp) = rax; 0x004ca1bc sub rsp, 8 | 0x004ca1c0 lea r9, [rsp + 8] | r9 = rsp + 8; 0x004ca1c5 mov rdi, r8 | 0x004ca1c8 mov rdx, r12 | 0x004ca1cb mov r8, rbx | 0x004ca1ce push 0 | 0x004ca1d0 call 0x4ca380 | 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, rcx, rbx); 0x004ca1d5 add rsp, 0x10 | 0x004ca1d9 mov rsi, qword [r15] | rsi = *(r15); | } 0x004ca1dc lea rax, [rbx + rbx*2] | rax = rbx * 3; 0x004ca1e0 lea rax, [rsi + rax*8] | rax = rsi + rax*8; 0x004ca1e4 mov qword [r15], rax | *(r15) = rax; | } | label_0: 0x004ca1e7 add rsp, 0x48 | 0x004ca1eb pop rbx | 0x004ca1ec pop r12 | 0x004ca1ee pop r13 | 0x004ca1f0 pop r14 | 0x004ca1f2 pop r15 | 0x004ca1f4 pop rbp | 0x004ca1f5 ret | return rax; | } 0x004ca1f6 mov edi, 0x54efad | 0x004ca1fb call 0x518a10 | return BloombergLP::bslstl::StdExceptUtil::throwLengthError(char const*) ("vector<...>::insert(pos,first,last): vector too long"); | }