; assembly | /* r2dec pseudo code output */ | /* ball_record.t/assume @ 0x413100 */ | #include | ; (fcn) method.BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue__bsl::allocator_BloombergLP::ball::UserFieldValue___::emplace_back_BloombergLP::bdlt.DatetimeTz_const__BloombergLP::bdlt::DatetimeTz_const_ () | int64_t method_BloombergLP::ball::UserFieldValue_bsl::vector_BloombergLP::ball::UserFieldValue_bsl::allocator_BloombergLP::ball::UserFieldValue_::emplace_back_BloombergLP::bdlt_DatetimeTz_const_BloombergLP::bdlt::DatetimeTz_const_ (int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | char * var_20h; | char * var_28h; | int64_t var_30h; | char * var_38h; | int64_t var_40h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::ball::UserFieldValue& bsl::vector >::emplace_back(BloombergLP::bdlt::DatetimeTz const&) */ 0x00413100 push rbp | 0x00413101 push r15 | 0x00413103 push r14 | 0x00413105 push r13 | 0x00413107 push r12 | 0x00413109 push rbx | 0x0041310a sub rsp, 0x48 | 0x0041310e mov r14, rsi | r14 = rsi; 0x00413111 mov rbp, rdi | 0x00413114 mov rbx, qword [rdi + 8] | rbx = *((rdi + 8)); 0x00413118 mov rsi, qword [rdi + 0x10] | rsi = *((rdi + 0x10)); 0x0041311c mov rdi, rbx | rdi = rbx; 0x0041311f sub rdi, qword [rbp] | rdi -= *(rbp); 0x00413123 sar rdi, 6 | rdi >>= 6; 0x00413127 cmp rsi, rdi | | if (rsi > rdi) { 0x0041312a jbe 0x413189 | 0x0041312c mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x00413130 mov dword [rbx + 0x30], 4 | *((rbx + 0x30)) = 4; 0x00413137 test rax, rax | | if (rax == 0) { 0x0041313a jne 0x41314d | 0x0041313c mov rax, qword [rip + 0x26ed8d] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00413143 test rax, rax | | if (rax != 0) { 0x00413146 jne 0x41314d | goto label_3; | } 0x00413148 call 0x424c00 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_3: 0x0041314d mov qword [rbx + 0x38], rax | *((rbx + 0x38)) = rax; 0x00413151 mov rax, qword [r14] | rax = *(r14); 0x00413154 mov qword [rbx], rax | *(rbx) = rax; 0x00413157 test rax, rax | | if (rax >= 0) { 0x0041315a jns 0x4132c7 | goto label_4; | } | label_1: 0x00413160 mov qword [rbx], rax | *(rbx) = rax; 0x00413163 mov eax, dword [r14 + 8] | eax = *((r14 + 8)); 0x00413167 mov dword [rbx + 8], eax | *((rbx + 8)) = eax; 0x0041316a mov rax, qword [rbp + 8] | rax = *((rbp + 8)); 0x0041316e add rax, 0x40 | rax += 0x40; 0x00413172 mov qword [rbp + 8], rax | *((rbp + 8)) = rax; | label_0: 0x00413176 add rax, 0xffffffffffffffc0 | rax += 0xffffffffffffffc0; 0x0041317a add rsp, 0x48 | 0x0041317e pop rbx | 0x0041317f pop r12 | 0x00413181 pop r13 | 0x00413183 pop r14 | 0x00413185 pop r15 | 0x00413187 pop rbp | 0x00413188 ret | return rax; | } 0x00413189 inc rdi | rdi++; 0x0041318c movabs rdx, 0x3ffffffffffffff | rdx = 0x3ffffffffffffff; 0x00413196 call 0x430810 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rdi, rsi, rdx); 0x0041319b mov r12, rax | r12 = rax; 0x0041319e mov rdi, qword [rbp + 0x18] | rdi = *((rbp + 0x18)); 0x004131a2 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004131a5 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x004131a9 mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x004131b2 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x004131b7 mov rsi, rax | rsi = rax; 0x004131ba shl rsi, 6 | rsi <<= 6; 0x004131be mov rax, qword [rdi] | rax = *(rdi); 0x004131c1 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x004131c4 mov r15, rax | r15 = rax; 0x004131c7 mov r13, rax | r13 = rax; 0x004131ca mov qword [rsp + 8], r15 | *((rsp + 8)) = r15; 0x004131cf mov qword [rsp], r15 | *(rsp) = r15; 0x004131d3 mov qword [rsp + 0x10], r12 | *((rsp + 0x10)) = r12; 0x004131d8 mov r12, qword [rbp + 8] | r12 = *((rbp + 8)); 0x004131dc mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x004131e0 sub r12, qword [rbp] | r12 -= *(rbp); 0x004131e4 mov dword [r15 + r12 + 0x30], 4 | *((r15 + r12 + 0x30)) = 4; 0x004131ed test rax, rax | | if (rax == 0) { 0x004131f0 jne 0x413203 | 0x004131f2 mov rax, qword [rip + 0x26ecd7] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004131f9 test rax, rax | | if (rax != 0) { 0x004131fc jne 0x413203 | goto label_5; | } 0x004131fe call 0x424c00 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_5: 0x00413203 add r15, r12 | r15 += r12; 0x00413206 sar r12, 6 | r12 >>= 6; 0x0041320a shl r12, 6 | r12 <<= 6; 0x0041320e mov qword [r13 + r12 + 0x38], rax | *((r13 + r12 + 0x38)) = rax; 0x00413213 mov rax, qword [r14] | rax = *(r14); 0x00413216 mov qword [r15], rax | *(r15) = rax; 0x00413219 test rax, rax | | if (rax >= 0) { 0x0041321c jns 0x413339 | goto label_6; | } | label_2: 0x00413222 mov qword [r15], rax | *(r15) = rax; 0x00413225 mov eax, dword [r14 + 8] | eax = *((r14 + 8)); 0x00413229 mov dword [r13 + r12 + 8], eax | *((r13 + r12 + 8)) = eax; 0x0041322e mov rdi, qword [rsp] | 0x00413232 mov r14, qword [rbp] | r14 = *(rbp); 0x00413236 mov r12, qword [rbp + 8] | r12 = *((rbp + 8)); 0x0041323a mov rax, qword [rbp + 0x18] | rax = *((rbp + 0x18)); 0x0041323e mov qword [rsp + 0x20], rax | *((rsp + 0x20)) = rax; 0x00413243 lea rcx, [rsp + 0x20] | 0x00413248 mov rsi, r14 | 0x0041324b mov rdx, r12 | 0x0041324e xor r8d, r8d | r8d = 0; 0x00413251 call 0x412910 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (*(rsp), r14, r12, rsp + 0x20); 0x00413256 cmp r14, r12 | | if (r14 == r12) { 0x00413259 je 0x41326c | goto label_7; | } | do { 0x0041325b mov rdi, r14 | 0x0041325e call 0x412ba0 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (r14, rsi); 0x00413263 add r14, 0x40 | r14 += 0x40; 0x00413267 cmp r12, r14 | 0x0041326a jne 0x41325b | | } while (r12 != r14); | label_7: 0x0041326c mov rax, qword [rbp] | rax = *(rbp); 0x00413270 mov qword [rbp + 8], rax | *((rbp + 8)) = rax; 0x00413274 add r15, 0x40 | r15 += 0x40; 0x00413278 mov qword [rsp + 8], r15 | *((rsp + 8)) = r15; 0x0041327d mov rsi, rsp | 0x00413280 mov rdi, rbp | 0x00413283 call 0x430840 | bsl::Vector_Util::swap(void*,void*) (rbp, rsp); 0x00413288 mov r14, qword [rsp] | r14 = *(rsp); 0x0041328c test r14, r14 | | if (r14 == 0) { 0x0041328f je 0x4132be | goto label_8; | } 0x00413291 mov rbx, qword [rsp + 8] | rbx = *((rsp + 8)); 0x00413296 cmp r14, rbx | | if (r14 == rbx) { 0x00413299 je 0x4132b0 | goto label_9; | } | do { 0x0041329b mov rdi, r14 | 0x0041329e call 0x412ba0 | BloombergLP::bdlb::VariantImp,bsl::allocator>,BloombergLP::bdlt::DatetimeTz,bsl::vector>>>::reset() (r14, rsi); 0x004132a3 add r14, 0x40 | r14 += 0x40; 0x004132a7 cmp rbx, r14 | 0x004132aa jne 0x41329b | | } while (rbx != r14); 0x004132ac mov r14, qword [rsp] | r14 = *(rsp); | label_9: 0x004132b0 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x004132b5 mov rax, qword [rdi] | rax = *(rdi); 0x004132b8 mov rsi, r14 | rsi = r14; 0x004132bb call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_8: 0x004132be mov rax, qword [rbp + 8] | rax = *((rbp + 8)); 0x004132c2 jmp 0x413176 | goto label_0; | label_4: 0x004132c7 mov edi, 0x681eb0 | 0x004132cc call 0x425ff0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x004132d1 mov qword [rsp + 0x20], 0x44bbbe | *((rsp + 0x20)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x004132da mov qword [rsp + 0x28], 0x44bbf4 | *((rsp + 0x28)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x004132e3 mov dword [rsp + 0x30], 0x466 | *((rsp + 0x30)) = 0x466; 0x004132eb mov qword [rsp + 0x38], 0x464402 | *((rsp + 0x38)) = "R-INV"; 0x004132f4 mov dword [rsp + 0x40], eax | *((rsp + 0x40)) = eax; 0x004132f8 lea rdi, [rsp + 0x20] | rdi = rsp + 0x20; 0x004132fd call 0x426010 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00413302 mov rax, qword [rbx] | rax = *(rbx); 0x00413305 mov rcx, rax | rcx = *(rbx); 0x00413308 shr rcx, 0x20 | rcx >>= 0x20; 0x0041330c shl rax, 0x25 | rax <<= 0x25; 0x00413310 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x0041331a add rdx, rax | rdx += rax; 0x0041331d imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x00413324 movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x0041332e or rax, rdx | rax |= rdx; 0x00413331 or rax, rcx | rax |= rcx; 0x00413334 jmp 0x413160 | goto label_1; | label_6: 0x00413339 mov edi, 0x681eb0 | 0x0041333e call 0x425ff0 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x00413343 mov qword [rsp + 0x20], 0x44bbbe | *((rsp + 0x20)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x0041334c mov qword [rsp + 0x28], 0x44bbf4 | *((rsp + 0x28)) = "/home/parsa/experiments/assumptions/crush/ccm-assume/groups/bdl/bdlt/bdlt_datetime.h"; 0x00413355 mov dword [rsp + 0x30], 0x466 | *((rsp + 0x30)) = 0x466; 0x0041335d mov qword [rsp + 0x38], 0x464402 | *((rsp + 0x38)) = "R-INV"; 0x00413366 mov dword [rsp + 0x40], eax | *((rsp + 0x40)) = eax; 0x0041336a lea rdi, [rsp + 0x20] | rdi = rsp + 0x20; 0x0041336f call 0x426010 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x00413374 mov rax, qword [r15] | rax = *(r15); 0x00413377 mov rcx, rax | rcx = *(r15); 0x0041337a shr rcx, 0x20 | rcx >>= 0x20; 0x0041337e shl rax, 0x25 | rax <<= 0x25; 0x00413382 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x0041338c add rdx, rax | rdx += rax; 0x0041338f imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x00413396 movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x004133a0 or rax, rdx | rax |= rdx; 0x004133a3 or rax, rcx | rax |= rcx; 0x004133a6 jmp 0x413222 | goto label_2; | }