; assembly | /* r2dec pseudo code output */ | /* ball_record.t/assume @ 0x412c10 */ | #include | ; (fcn) method.BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue__bsl::allocator_BloombergLP::ball::UserFieldValue___.emplace_back_double__double_ () | int64_t method_BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue_bsl::allocator_BloombergLP::ball::UserFieldValue_emplace_back_double_double_ (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_28h; | int64_t var_30h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::ball::UserFieldValue& bsl::vector >::emplace_back(double&) */ 0x00412c10 push rbp | 0x00412c11 push r15 | 0x00412c13 push r14 | 0x00412c15 push r13 | 0x00412c17 push r12 | 0x00412c19 push rbx | 0x00412c1a sub rsp, 0x38 | 0x00412c1e mov r15, rsi | r15 = rsi; 0x00412c21 mov rbp, rdi | 0x00412c24 mov rbx, qword [rdi + 8] | rbx = *((rdi + 8)); 0x00412c28 mov rsi, qword [rdi + 0x10] | rsi = *((rdi + 0x10)); 0x00412c2c mov rdi, rbx | rdi = rbx; 0x00412c2f sub rdi, qword [rbp] | rdi -= *(rbp); 0x00412c33 sar rdi, 6 | rdi >>= 6; 0x00412c37 cmp rsi, rdi | | if (rsi > rdi) { 0x00412c3a jbe 0x412c95 | 0x00412c3c mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x00412c40 movsd xmm0, qword [r15] | xmm0 = *(r15); 0x00412c45 mov dword [rbx + 0x30], 2 | *((rbx + 0x30)) = 2; 0x00412c4c test rax, rax | | if (rax == 0) { 0x00412c4f jne 0x412c6e | 0x00412c51 mov rax, qword [rip + 0x26f278] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00412c58 test rax, rax | | if (rax != 0) { 0x00412c5b jne 0x412c6e | goto label_1; | } 0x00412c5d movsd qword [rsp + 8], xmm0 | *((rsp + 8)) = xmm0; 0x00412c63 call 0x424c00 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00412c68 movsd xmm0, qword [rsp + 8] | xmm0 = *((rsp + 8)); | } | label_1: 0x00412c6e mov qword [rbx + 0x38], rax | *((rbx + 0x38)) = rax; 0x00412c72 movsd qword [rbx], xmm0 | *(rbx) = xmm0; 0x00412c76 mov rax, qword [rbp + 8] | rax = *((rbp + 8)); 0x00412c7a add rax, 0x40 | rax += 0x40; 0x00412c7e mov qword [rbp + 8], rax | *((rbp + 8)) = rax; | label_0: 0x00412c82 add rax, 0xffffffffffffffc0 | rax += 0xffffffffffffffc0; 0x00412c86 add rsp, 0x38 | 0x00412c8a pop rbx | 0x00412c8b pop r12 | 0x00412c8d pop r13 | 0x00412c8f pop r14 | 0x00412c91 pop r15 | 0x00412c93 pop rbp | 0x00412c94 ret | return rax; | } 0x00412c95 inc rdi | rdi++; 0x00412c98 movabs rdx, 0x3ffffffffffffff | rdx = 0x3ffffffffffffff; 0x00412ca2 call 0x430810 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rdi, rsi, rdx); 0x00412ca7 mov r12, rax | r12 = rax; 0x00412caa mov rdi, qword [rbp + 0x18] | rdi = *((rbp + 0x18)); 0x00412cae xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00412cb1 movaps xmmword [rsp + 0x10], xmm0 | *((rsp + 0x10)) = xmm0; 0x00412cb6 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x00412cbf mov qword [rsp + 0x28], rdi | *((rsp + 0x28)) = rdi; 0x00412cc4 mov rsi, rax | rsi = rax; 0x00412cc7 shl rsi, 6 | rsi <<= 6; 0x00412ccb mov rax, qword [rdi] | rax = *(rdi); 0x00412cce call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00412cd1 mov r14, rax | r14 = rax; 0x00412cd4 mov r13, rax | r13 = rax; 0x00412cd7 mov qword [rsp + 0x18], r14 | *((rsp + 0x18)) = r14; 0x00412cdc mov qword [rsp + 0x10], r14 | *((rsp + 0x10)) = r14; 0x00412ce1 mov qword [rsp + 0x20], r12 | *((rsp + 0x20)) = r12; 0x00412ce6 mov r12, qword [rbp + 8] | r12 = *((rbp + 8)); 0x00412cea sub r12, qword [rbp] | r12 -= *(rbp); 0x00412cee mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x00412cf2 movsd xmm0, qword [r15] | xmm0 = *(r15); 0x00412cf7 mov dword [r14 + r12 + 0x30], 2 | *((r14 + r12 + 0x30)) = 2; 0x00412d00 test rax, rax | | if (rax == 0) { 0x00412d03 jne 0x412d22 | 0x00412d05 movsd qword [rsp + 8], xmm0 | *((rsp + 8)) = xmm0; 0x00412d0b mov rax, qword [rip + 0x26f1be] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00412d12 test rax, rax | | if (rax == 0) { 0x00412d15 jne 0x412d1c | 0x00412d17 call 0x424c00 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00412d1c movsd xmm0, qword [rsp + 8] | xmm0 = *((rsp + 8)); | } 0x00412d22 add r14, r12 | r14 += r12; 0x00412d25 sar r12, 6 | r12 >>= 6; 0x00412d29 shl r12, 6 | r12 <<= 6; 0x00412d2d mov qword [r13 + r12 + 0x38], rax | *((r13 + r12 + 0x38)) = rax; 0x00412d32 movsd qword [r14], xmm0 | *(r14) = xmm0; 0x00412d37 mov rdi, qword [rsp + 0x10] | 0x00412d3c mov r15, qword [rbp] | r15 = *(rbp); 0x00412d40 mov r12, qword [rbp + 8] | r12 = *((rbp + 8)); 0x00412d44 mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x00412d48 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x00412d4d lea rcx, [rsp + 0x30] | 0x00412d52 mov rsi, r15 | 0x00412d55 mov rdx, r12 | 0x00412d58 xor r8d, r8d | r8d = 0; 0x00412d5b call 0x412910 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (*((rsp + 0x10)), r15, r12, rsp + 0x30); 0x00412d60 cmp r15, r12 | | if (r15 == r12) { 0x00412d63 je 0x412d76 | goto label_2; | } | do { 0x00412d65 mov rdi, r15 | 0x00412d68 call 0x412ba0 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (r15, rsi); 0x00412d6d add r15, 0x40 | r15 += 0x40; 0x00412d71 cmp r12, r15 | 0x00412d74 jne 0x412d65 | | } while (r12 != r15); | label_2: 0x00412d76 mov rax, qword [rbp] | rax = *(rbp); 0x00412d7a mov qword [rbp + 8], rax | *((rbp + 8)) = rax; 0x00412d7e add r14, 0x40 | r14 += 0x40; 0x00412d82 mov qword [rsp + 0x18], r14 | *((rsp + 0x18)) = r14; 0x00412d87 lea rsi, [rsp + 0x10] | 0x00412d8c mov rdi, rbp | 0x00412d8f call 0x430840 | bsl::Vector_Util::swap(void*,void*) (rbp, rsp + 0x10); 0x00412d94 mov r14, qword [rsp + 0x10] | r14 = *((rsp + 0x10)); 0x00412d99 test r14, r14 | | if (r14 == 0) { 0x00412d9c je 0x412dcc | goto label_3; | } 0x00412d9e mov rbx, qword [rsp + 0x18] | rbx = *((rsp + 0x18)); 0x00412da3 cmp r14, rbx | | if (r14 == rbx) { 0x00412da6 je 0x412dbe | goto label_4; | } | do { 0x00412da8 mov rdi, r14 | 0x00412dab call 0x412ba0 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (r14, rsi); 0x00412db0 add r14, 0x40 | r14 += 0x40; 0x00412db4 cmp rbx, r14 | 0x00412db7 jne 0x412da8 | | } while (rbx != r14); 0x00412db9 mov r14, qword [rsp + 0x10] | r14 = *((rsp + 0x10)); | label_4: 0x00412dbe mov rdi, qword [rsp + 0x28] | rdi = *((rsp + 0x28)); 0x00412dc3 mov rax, qword [rdi] | rax = *(rdi); 0x00412dc6 mov rsi, r14 | rsi = r14; 0x00412dc9 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_3: 0x00412dcc mov rax, qword [rbp + 8] | rax = *((rbp + 8)); 0x00412dd0 jmp 0x412c82 | goto label_0; | }