; assembly | /* r2dec pseudo code output */ | /* ball_record.t/none @ 0x4135a0 */ | #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; | int64_t var_28h; | char * var_30h; | char * var_38h; | int64_t var_40h; | char * var_48h; | int64_t var_50h; | rsi = arg2; | rdi = arg1; | /* BloombergLP::ball::UserFieldValue& bsl::vector >::emplace_back(BloombergLP::bdlt::DatetimeTz const&) */ 0x004135a0 push rbp | 0x004135a1 push r15 | 0x004135a3 push r14 | 0x004135a5 push r13 | 0x004135a7 push r12 | 0x004135a9 push rbx | 0x004135aa sub rsp, 0x58 | 0x004135ae mov r14, rsi | r14 = rsi; 0x004135b1 mov rbx, rdi | rbx = rdi; 0x004135b4 mov rbp, qword [rdi + 8] | rbp = *((rdi + 8)); 0x004135b8 mov rsi, qword [rdi + 0x10] | rsi = *((rdi + 0x10)); 0x004135bc mov rdi, rbp | rdi = rbp; 0x004135bf sub rdi, qword [rbx] | rdi -= *(rbx); 0x004135c2 sar rdi, 6 | rdi >>= 6; 0x004135c6 cmp rsi, rdi | | if (rsi > rdi) { 0x004135c9 jbe 0x41362a | 0x004135cb mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x004135cf mov dword [rbp + 0x30], 4 | *((rbp + 0x30)) = 4; 0x004135d6 test rax, rax | | if (rax == 0) { 0x004135d9 jne 0x4135ec | 0x004135db mov rax, qword [rip + 0x26f8ee] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004135e2 test rax, rax | | if (rax != 0) { 0x004135e5 jne 0x4135ec | goto label_8; | } 0x004135e7 call 0x425710 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_8: 0x004135ec mov qword [rbp + 0x38], rax | *((rbp + 0x38)) = rax; 0x004135f0 mov rax, qword [r14] | rax = *(r14); 0x004135f3 mov qword [rbp], rax | *(rbp) = rax; 0x004135f7 test rax, rax | | if (rax >= 0) { 0x004135fa jns 0x4137ef | goto label_9; | } | label_5: 0x00413600 mov qword [rbp], rax | *(rbp) = rax; 0x00413604 mov eax, dword [r14 + 8] | eax = *((r14 + 8)); 0x00413608 mov dword [rbp + 8], eax | *((rbp + 8)) = eax; 0x0041360b mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x0041360f add rax, 0x40 | rax += 0x40; 0x00413613 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; | label_6: 0x00413617 add rax, 0xffffffffffffffc0 | rax += 0xffffffffffffffc0; 0x0041361b add rsp, 0x58 | 0x0041361f pop rbx | 0x00413620 pop r12 | 0x00413622 pop r13 | 0x00413624 pop r14 | 0x00413626 pop r15 | 0x00413628 pop rbp | 0x00413629 ret | return rax; | } 0x0041362a inc rdi | rdi++; 0x0041362d movabs rdx, 0x3ffffffffffffff | rdx = 0x3ffffffffffffff; 0x00413637 call 0x431320 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rdi, rsi, rdx); 0x0041363c mov r12, rax | r12 = rax; 0x0041363f mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x00413643 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00413646 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0041364a mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00413653 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x00413658 mov rsi, rax | rsi = rax; 0x0041365b shl rsi, 6 | rsi <<= 6; 0x0041365f mov rax, qword [rdi] | rax = *(rdi); 0x00413662 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00413665 mov r15, rax | r15 = rax; 0x00413668 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0041366d mov qword [rsp], rax | *(rsp) = rax; 0x00413671 mov qword [rsp + 0x10], r12 | *((rsp + 0x10)) = r12; 0x00413676 mov rbp, qword [rbx + 8] | rbp = *((rbx + 8)); 0x0041367a mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x0041367e sub rbp, qword [rbx] | rbp -= *(rbx); 0x00413681 mov dword [r15 + rbp + 0x30], 4 | *((r15 + rbp + 0x30)) = 4; 0x0041368a test rax, rax | | if (rax == 0) { 0x0041368d jne 0x4136a0 | 0x0041368f mov rax, qword [rip + 0x26f83a] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00413696 test rax, rax | | if (rax != 0) { 0x00413699 jne 0x4136a0 | goto label_10; | } 0x0041369b call 0x425710 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_10: 0x004136a0 mov r13, rbp | r13 = rbp; 0x004136a3 sar r13, 6 | r13 >>= 6; 0x004136a7 lea rsi, [r15 + rbp] | rsi = r15 + rbp; 0x004136ab shl r13, 6 | r13 <<= 6; 0x004136af mov qword [r15 + r13 + 0x38], rax | *((r15 + r13 + 0x38)) = rax; 0x004136b4 mov rax, qword [r14] | rax = *(r14); 0x004136b7 mov qword [rsi], rax | *(rsi) = rax; 0x004136ba test rax, rax | | if (rax >= 0) { 0x004136bd jns 0x41387d | goto label_11; | } | label_7: 0x004136c3 lea rbp, [r15 + rbp + 0x30] | rbp = r15 + rbp + 0x30; 0x004136c8 mov qword [rsp + 0x28], rsi | *((rsp + 0x28)) = rsi; 0x004136cd mov qword [rsi], rax | *(rsi) = rax; 0x004136d0 mov eax, dword [r14 + 8] | eax = *((r14 + 8)); 0x004136d4 mov dword [r15 + r13 + 8], eax | *((r15 + r13 + 8)) = eax; 0x004136d9 mov rdi, qword [rsp] | 0x004136dd mov r14, qword [rbx] | r14 = *(rbx); 0x004136e0 mov r12, qword [rbx + 8] | r12 = *((rbx + 8)); 0x004136e4 mov rax, qword [rbx + 0x18] | rax = *((rbx + 0x18)); 0x004136e8 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x004136ed lea rcx, [rsp + 0x30] | 0x004136f2 mov rsi, r14 | 0x004136f5 mov rdx, r12 | 0x004136f8 xor r8d, r8d | r8d = 0; 0x004136fb call 0x412a70 | voidBloombergLP::bslalg::ArrayPrimitives_Imp::moveIfNoexcept>(BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,BloombergLP::ball::UserFieldValue*,bsl::allocator,BloombergLP::bslmf::MetaInt<0>*) (*(rsp), r14, r12, rsp + 0x30); 0x00413700 cmp r14, r12 | | if (r14 != r12) { 0x00413703 jne 0x41375a | goto label_12; | } | do { 0x00413705 mov rax, qword [rbx] | rax = *(rbx); 0x00413708 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x0041370c mov rbp, qword [rsp + 0x28] | rbp = *((rsp + 0x28)); 0x00413711 add rbp, 0x40 | rbp += 0x40; 0x00413715 mov qword [rsp + 8], rbp | *((rsp + 8)) = rbp; 0x0041371a mov rsi, rsp | 0x0041371d mov rdi, rbx | 0x00413720 call 0x431350 | bsl::Vector_Util::swap(void*,void*) (rbx, rsp); 0x00413725 mov r14, qword [rsp] | r14 = *(rsp); 0x00413729 test r14, r14 | | if (r14 == 0) { 0x0041372c je 0x413874 | goto label_13; | } 0x00413732 mov rbp, qword [rsp + 8] | rbp = *((rsp + 8)); 0x00413737 cmp r14, rbp | | if (r14 != rbp) { 0x0041373a jne 0x4137b3 | goto label_14; | } 0x0041373c jmp 0x413866 | goto label_15; | label_2: 0x00413741 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_1: 0x00413749 mov dword [r14 + 0x30], 0 | *((r14 + 0x30)) = 0; | label_0: 0x00413751 add r14, 0x40 | r14 += 0x40; 0x00413755 cmp r12, r14 | 0x00413758 je 0x413705 | | } while (r12 == r14); | label_12: 0x0041375a mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x0041375e test eax, eax | | if (eax == 0) { 0x00413760 je 0x413751 | goto label_0; | } 0x00413762 cmp eax, 5 | | if (eax == 5) { 0x00413765 je 0x413782 | goto label_16; | } 0x00413767 cmp eax, 3 | | if (eax != 3) { 0x0041376a jne 0x413749 | goto label_1; | } 0x0041376c cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) == 0x17) { 0x00413771 je 0x413741 | goto label_2; | } 0x00413773 mov rsi, qword [r14] | rsi = *(r14); 0x00413776 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0041377a mov rax, qword [rdi] | rax = *(rdi); 0x0041377d call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00413780 jmp 0x413741 | goto label_2; | label_16: 0x00413782 mov rsi, qword [r14] | rsi = *(r14); 0x00413785 test rsi, rsi | | if (rsi == 0) { 0x00413788 je 0x413749 | goto label_1; | } 0x0041378a mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x0041378e mov rax, qword [rdi] | rax = *(rdi); 0x00413791 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00413794 jmp 0x413749 | goto label_1; | label_4: 0x00413796 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_3: 0x0041379e mov dword [r14 + 0x30], 0 | *((r14 + 0x30)) = 0; | do { 0x004137a6 add r14, 0x40 | r14 += 0x40; 0x004137aa cmp rbp, r14 | | if (rbp == r14) { 0x004137ad je 0x413862 | goto label_17; | } | label_14: 0x004137b3 mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x004137b7 test eax, eax | 0x004137b9 je 0x4137a6 | | } while (eax == 0); 0x004137bb cmp eax, 5 | | if (eax == 5) { 0x004137be je 0x4137db | goto label_18; | } 0x004137c0 cmp eax, 3 | | if (eax != 3) { 0x004137c3 jne 0x41379e | goto label_3; | } 0x004137c5 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) == 0x17) { 0x004137ca je 0x413796 | goto label_4; | } 0x004137cc mov rsi, qword [r14] | rsi = *(r14); 0x004137cf mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004137d3 mov rax, qword [rdi] | rax = *(rdi); 0x004137d6 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004137d9 jmp 0x413796 | goto label_4; | label_18: 0x004137db mov rsi, qword [r14] | rsi = *(r14); 0x004137de test rsi, rsi | | if (rsi == 0) { 0x004137e1 je 0x41379e | goto label_3; | } 0x004137e3 mov rdi, qword [r14 + 0x18] | rdi = *((r14 + 0x18)); 0x004137e7 mov rax, qword [rdi] | rax = *(rdi); 0x004137ea call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004137ed jmp 0x41379e | goto label_3; | label_9: 0x004137ef mov edi, 0x682eb0 | 0x004137f4 call 0x426b00 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x004137f9 mov qword [rsp + 0x30], 0x44c69c | *((rsp + 0x30)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x00413802 mov qword [rsp + 0x38], 0x44c6d2 | *((rsp + 0x38)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x0041380b mov dword [rsp + 0x40], 0x466 | *((rsp + 0x40)) = 0x466; 0x00413813 mov qword [rsp + 0x48], 0x464ed2 | *((rsp + 0x48)) = "R-INV"; 0x0041381c mov dword [rsp + 0x50], eax | *((rsp + 0x50)) = eax; 0x00413820 lea rdi, [rsp + 0x30] | rdi = rsp + 0x30; 0x00413825 call 0x426b20 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x0041382a mov rax, qword [rbp] | rax = *(rbp); 0x0041382e mov rcx, rax | rcx = *(rbp); 0x00413831 shr rcx, 0x20 | rcx >>= 0x20; 0x00413835 shl rax, 0x25 | rax <<= 0x25; 0x00413839 movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x00413843 add rdx, rax | rdx += rax; 0x00413846 imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x0041384d movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x00413857 or rax, rdx | rax |= rdx; 0x0041385a or rax, rcx | rax |= rcx; 0x0041385d jmp 0x413600 | goto label_5; | label_17: 0x00413862 mov r14, qword [rsp] | r14 = *(rsp); | label_15: 0x00413866 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0041386b mov rax, qword [rdi] | rax = *(rdi); 0x0041386e mov rsi, r14 | rsi = r14; 0x00413871 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_13: 0x00413874 mov rax, qword [rbx + 8] | rax = *((rbx + 8)); 0x00413878 jmp 0x413617 | goto label_6; | label_11: 0x0041387d mov r12, rsi | r12 = rsi; 0x00413880 mov edi, 0x682eb0 | 0x00413885 call 0x426b00 | eax = BloombergLP::bsls::Review::updateCount(BloombergLP::bsls::Atomic_TypeTraits::Int*) (method.BloombergLP::bdlt::Datetime.validateAndTraceLogRepresentation___const::lambda__1::operator_____const::count); 0x0041388a mov qword [rsp + 0x30], 0x44c69c | *((rsp + 0x30)) = "detected invalid 'bdlt::Datetime'; see TEAM 579660115"; 0x00413893 mov qword [rsp + 0x38], 0x44c6d2 | *((rsp + 0x38)) = "/home/parsa/experiments/assumptions/crush/ccm-none/groups/bdl/bdlt/bdlt_datetime.h"; 0x0041389c mov dword [rsp + 0x40], 0x466 | *((rsp + 0x40)) = 0x466; 0x004138a4 mov qword [rsp + 0x48], 0x464ed2 | *((rsp + 0x48)) = "R-INV"; 0x004138ad mov dword [rsp + 0x50], eax | *((rsp + 0x50)) = eax; 0x004138b1 lea rdi, [rsp + 0x30] | rdi = rsp + 0x30; 0x004138b6 call 0x426b20 | BloombergLP::bsls::Review::invokeHandler(BloombergLP::bsls::ReviewViolationconst&) (); 0x004138bb mov rsi, r12 | rsi = r12; 0x004138be mov rax, qword [r12] | rax = *(r12); 0x004138c2 mov rcx, rax | rcx = *(r12); 0x004138c5 shr rcx, 0x20 | rcx >>= 0x20; 0x004138c9 shl rax, 0x25 | rax <<= 0x25; 0x004138cd movabs rdx, 0x7fffffe000000000 | rdx = 0x7fffffe000000000; 0x004138d7 add rdx, rax | rdx += rax; 0x004138da imul rcx, rcx, 0x3e8 | rcx *= 0x3e8; 0x004138e1 movabs rax, 0x8000000000000000 | rax = 0x8000000000000000; 0x004138eb or rax, rdx | rax |= rdx; 0x004138ee or rax, rcx | rax |= rcx; 0x004138f1 jmp 0x4136c3 | goto label_7; | }