; assembly | /* r2dec pseudo code output */ | /* ball_log.t/assume @ 0x498e90 */ | #include | ; (fcn) method.BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue__bsl::allocator_BloombergLP::ball::UserFieldValue___.emplace_back_long_long__long_long_ () | int64_t method_BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue_bsl::allocator_BloombergLP::ball::UserFieldValue_emplace_back_long_long_long_long_ (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::ball::UserFieldValue& bsl::vector >::emplace_back(long long&) */ 0x00498e90 push rbp | 0x00498e91 push r15 | 0x00498e93 push r14 | 0x00498e95 push r13 | 0x00498e97 push r12 | 0x00498e99 push rbx | 0x00498e9a sub rsp, 0x28 | 0x00498e9e mov r15, rsi | r15 = rsi; 0x00498ea1 mov r13, rdi | r13 = rdi; 0x00498ea4 mov rbx, qword [rdi + 8] | rbx = *((rdi + 8)); 0x00498ea8 mov rsi, qword [rdi + 0x10] | rsi = *((rdi + 0x10)); 0x00498eac mov rdi, rbx | rdi = rbx; 0x00498eaf sub rdi, qword [r13] | rdi -= *(r13); 0x00498eb3 sar rdi, 6 | rdi >>= 6; 0x00498eb7 cmp rsi, rdi | | if (rsi > rdi) { 0x00498eba jbe 0x498f06 | 0x00498ebc mov rax, qword [r13 + 0x18] | rax = *((r13 + 0x18)); 0x00498ec0 mov rbp, qword [r15] | rbp = *(r15); 0x00498ec3 mov dword [rbx + 0x30], 1 | *((rbx + 0x30)) = 1; 0x00498eca test rax, rax | | if (rax == 0) { 0x00498ecd jne 0x498ee0 | 0x00498ecf mov rax, qword [rip + 0x2daf2a] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00498ed6 test rax, rax | | if (rax != 0) { 0x00498ed9 jne 0x498ee0 | goto label_1; | } 0x00498edb call 0x4d9ed0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x00498ee0 mov qword [rbx + 0x38], rax | *((rbx + 0x38)) = rax; 0x00498ee4 mov qword [rbx], rbp | *(rbx) = rbp; 0x00498ee7 mov rax, qword [r13 + 8] | rax = *((r13 + 8)); 0x00498eeb add rax, 0x40 | rax += 0x40; 0x00498eef mov qword [r13 + 8], rax | *((r13 + 8)) = rax; | label_0: 0x00498ef3 add rax, 0xffffffffffffffc0 | rax += 0xffffffffffffffc0; 0x00498ef7 add rsp, 0x28 | 0x00498efb pop rbx | 0x00498efc pop r12 | 0x00498efe pop r13 | 0x00498f00 pop r14 | 0x00498f02 pop r15 | 0x00498f04 pop rbp | 0x00498f05 ret | return rax; | } 0x00498f06 inc rdi | rdi++; 0x00498f09 movabs rdx, 0x3ffffffffffffff | rdx = 0x3ffffffffffffff; 0x00498f13 call 0x4e8200 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rdi, rsi, rdx); 0x00498f18 mov r12, rax | r12 = rax; 0x00498f1b mov rdi, qword [r13 + 0x18] | rdi = *((r13 + 0x18)); 0x00498f1f xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00498f22 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x00498f26 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00498f2f mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x00498f34 mov rsi, rax | rsi = rax; 0x00498f37 shl rsi, 6 | rsi <<= 6; 0x00498f3b mov rax, qword [rdi] | rax = *(rdi); 0x00498f3e call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00498f41 mov r14, rax | r14 = rax; 0x00498f44 mov rbp, rax | 0x00498f47 mov qword [rsp + 8], r14 | *((rsp + 8)) = r14; 0x00498f4c mov qword [rsp], r14 | *(rsp) = r14; 0x00498f50 mov qword [rsp + 0x10], r12 | *((rsp + 0x10)) = r12; 0x00498f55 mov r12, qword [r13 + 8] | r12 = *((r13 + 8)); 0x00498f59 sub r12, qword [r13] | r12 -= *(r13); 0x00498f5d mov rax, qword [r13 + 0x18] | rax = *((r13 + 0x18)); 0x00498f61 mov rbx, qword [r15] | rbx = *(r15); 0x00498f64 mov dword [r14 + r12 + 0x30], 1 | *((r14 + r12 + 0x30)) = 1; 0x00498f6d test rax, rax | | if (rax == 0) { 0x00498f70 jne 0x498f83 | 0x00498f72 mov rax, qword [rip + 0x2dae87] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00498f79 test rax, rax | | if (rax != 0) { 0x00498f7c jne 0x498f83 | goto label_2; | } 0x00498f7e call 0x4d9ed0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_2: 0x00498f83 add r14, r12 | r14 += r12; 0x00498f86 sar r12, 6 | r12 >>= 6; 0x00498f8a shl r12, 6 | r12 <<= 6; 0x00498f8e mov qword [rbp + r12 + 0x38], rax | *((rbp + r12 + 0x38)) = rax; 0x00498f93 mov qword [r14], rbx | *(r14) = rbx; 0x00498f96 mov rdi, qword [rsp] | 0x00498f9a mov r15, qword [r13] | r15 = *(r13); 0x00498f9e mov r12, qword [r13 + 8] | r12 = *((r13 + 8)); 0x00498fa2 mov rax, qword [r13 + 0x18] | rax = *((r13 + 0x18)); 0x00498fa6 mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x00498fab lea rcx, [rsp + 0x20] | 0x00498fb0 mov rsi, r15 | 0x00498fb3 mov rdx, r12 | 0x00498fb6 xor r8d, r8d | r8d = 0; 0x00498fb9 call 0x498c00 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (*(rsp), r15, r12, rsp + 0x20); 0x00498fbe cmp r15, r12 | | if (r15 == r12) { 0x00498fc1 je 0x498fd4 | goto label_3; | } | do { 0x00498fc3 mov rdi, r15 | 0x00498fc6 call 0x498b90 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (r15, rsi, rdx, rcx, r8, r9); 0x00498fcb add r15, 0x40 | r15 += 0x40; 0x00498fcf cmp r12, r15 | 0x00498fd2 jne 0x498fc3 | | } while (r12 != r15); | label_3: 0x00498fd4 mov rax, qword [r13] | rax = *(r13); 0x00498fd8 mov qword [r13 + 8], rax | *((r13 + 8)) = rax; 0x00498fdc add r14, 0x40 | r14 += 0x40; 0x00498fe0 mov qword [rsp + 8], r14 | *((rsp + 8)) = r14; 0x00498fe5 mov rsi, rsp | 0x00498fe8 mov rdi, r13 | 0x00498feb call 0x4e8230 | bsl::Vector_Util::swap(void*,void*) (r13, rsp); 0x00498ff0 mov r14, qword [rsp] | r14 = *(rsp); 0x00498ff4 test r14, r14 | | if (r14 == 0) { 0x00498ff7 je 0x499026 | goto label_4; | } 0x00498ff9 mov rbx, qword [rsp + 8] | rbx = *((rsp + 8)); 0x00498ffe cmp r14, rbx | | if (r14 == rbx) { 0x00499001 je 0x499018 | goto label_5; | } | do { 0x00499003 mov rdi, r14 | 0x00499006 call 0x498b90 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (r14, rsi, rdx, rcx, r8, r9); 0x0049900b add r14, 0x40 | r14 += 0x40; 0x0049900f cmp rbx, r14 | 0x00499012 jne 0x499003 | | } while (rbx != r14); 0x00499014 mov r14, qword [rsp] | r14 = *(rsp); | label_5: 0x00499018 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0049901d mov rax, qword [rdi] | rax = *(rdi); 0x00499020 mov rsi, r14 | rsi = r14; 0x00499023 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_4: 0x00499026 mov rax, qword [r13 + 8] | rax = *((r13 + 8)); 0x0049902a jmp 0x498ef3 | goto label_0; | }