; assembly | /* r2dec pseudo code output */ | /* bdlt_defaulttimetablecache.t/none @ 0x40a760 */ | #include | ; (fcn) method.void_BloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndEmplace_bsl::allocator_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day_____BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt.Timetable_Day_ () | int64_t method_void_BloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndEmplace_bsl::allocator_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt_Timetable_Day_ (int64_t arg_90h, int64_t arg6, int64_t arg5, uint32_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | uint32_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_20h; | int64_t var_28h; | int64_t var_30h; | int64_t var_38h; | int64_t var_40h; | uint32_t var_48h; | uint32_t var_50h; | r9 = arg6; | r8 = arg5; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* void BloombergLP::bslalg::ArrayPrimitives::destructiveMoveAndEmplace >, BloombergLP::bdlc::CompactedArray_CountedValue >(bsl::allocator_traits > >::pointer, bsl::allocator_traits > >::pointer*, bsl::allocator_traits > >::pointer, bsl::allocator_traits > >::pointer, bsl::allocator_traits > >::pointer, bsl::allocator >, BloombergLP::bdlc::CompactedArray_CountedValue&&) */ 0x0040a760 push rbp | 0x0040a761 push r15 | 0x0040a763 push r14 | 0x0040a765 push r13 | 0x0040a767 push r12 | 0x0040a769 push rbx | 0x0040a76a sub rsp, 0x58 | 0x0040a76e mov rbp, r8 | 0x0040a771 mov r14, rdx | r14 = rdx; 0x0040a774 mov r15, rdi | r15 = rdi; 0x0040a777 mov r12, qword [rsp + 0x90] | r12 = *((rsp + 0x90)); 0x0040a77f mov qword [rsp + 0x28], rsi | *((rsp + 0x28)) = rsi; 0x0040a784 mov qword [rsi], r8 | *(rsi) = r8; 0x0040a787 mov rdx, rcx | rdx = rcx; 0x0040a78a sub rdx, r14 | rdx -= r14; 0x0040a78d mov rax, rdx | rax = rdx; 0x0040a790 sar rax, 4 | rax >>= 4; 0x0040a794 movabs rbx, 0xaaaaaaaaaaaaaaab | rbx = 0xaaaaaaaaaaaaaaab; 0x0040a79e imul rbx, rax | rbx *= rax; 0x0040a7a2 lea r13, [rdi + rdx] | r13 = rdi + rdx; 0x0040a7a6 mov qword [rsp + 0x20], r9 | *((rsp + 0x20)) = r9; 0x0040a7ab mov rax, qword [r9] | rax = *(r9); 0x0040a7ae mov rsi, qword [r12 + 0x28] | rsi = *((r12 + 0x28)); 0x0040a7b3 mov qword [rdi + rdx + 0x28], rsi | *((rdi + rdx + 0x28)) = rsi; 0x0040a7b8 mov esi, dword [r12] | esi = *(r12); 0x0040a7bc mov qword [rsp + 0x50], rdx | *((rsp + 0x50)) = rdx; 0x0040a7c1 mov dword [rdi + rdx], esi | *((rdi + rdx)) = esi; 0x0040a7c4 test rax, rax | 0x0040a7c7 mov qword [rsp + 8], rcx | *((rsp + 8)) = rcx; | if (rax == 0) { 0x0040a7cc jne 0x40a7e4 | 0x0040a7ce mov rax, qword [rip + 0x269623] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040a7d5 test rax, rax | | if (rax == 0) { 0x0040a7d8 jne 0x40a7df | 0x0040a7da call 0x418350 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0040a7df mov rcx, qword [rsp + 8] | rcx = *((rsp + 8)); | } 0x0040a7e4 add r12, 8 | r12 += 8; 0x0040a7e8 lea rbx, [rbx + rbx*2] | rbx *= 3; 0x0040a7ec shl rbx, 4 | rbx <<= 4; 0x0040a7f0 lea rdi, [r15 + rbx + 8] | 0x0040a7f5 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0040a7fa lea rdx, [rsp + 0x10] | 0x0040a7ff mov rsi, r12 | 0x0040a802 mov r12, rcx | r12 = rcx; 0x0040a805 call 0x409130 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r15 + rbx + 8, r12, rsp + 0x10); 0x0040a80a lea rax, [r13 + 0x30] | rax = r13 + 0x30; 0x0040a80e cmp r12, rbp | 0x0040a811 mov r12, rax | r12 = rax; | if (r12 == rbp) { 0x0040a814 je 0x40a8de | goto label_2; | } 0x0040a81a mov qword [rsp + 0x30], rbx | *((rsp + 0x30)) = rbx; 0x0040a81f mov qword [rsp + 0x40], r14 | *((rsp + 0x40)) = r14; 0x0040a824 mov qword [rsp + 0x18], r12 | *((rsp + 0x18)) = r12; 0x0040a829 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0040a82e mov r14, qword [rax] | r14 = *(rax); 0x0040a831 mov qword [rsp + 0x38], rbp | *((rsp + 0x38)) = rbp; 0x0040a836 mov rbx, qword [rsp + 8] | rbx = *((rsp + 8)); 0x0040a83b sub rbp, rbx | rbp -= rbx; 0x0040a83e mov qword [rsp + 0x48], rbp | *((rsp + 0x48)) = rbp; 0x0040a843 xor ebp, ebp | ebp = 0; 0x0040a845 xor r12d, r12d | r12d = 0; 0x0040a848 nop dword [rax + rax] | | do { 0x0040a850 mov rax, qword [rbx + r12 + 0x28] | rax = *((rbx + r12 + 0x28)); 0x0040a855 mov qword [r13 + r12 + 0x58], rax | *((r13 + r12 + 0x58)) = rax; 0x0040a85a mov eax, dword [rbx + r12] | eax = *((rbx + r12)); 0x0040a85e mov dword [r13 + r12 + 0x30], eax | *((r13 + r12 + 0x30)) = eax; 0x0040a863 mov rax, r14 | rax = r14; 0x0040a866 test r14, r14 | | if (r14 == 0) { 0x0040a869 jne 0x40a880 | 0x0040a86b mov rax, qword [rip + 0x269586] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040a872 test rax, rax | | if (rax != 0) { 0x0040a875 jne 0x40a880 | goto label_3; | } 0x0040a877 call 0x418350 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0040a87c nop dword [rax] | | } | label_3: 0x0040a880 lea rsi, [rbx + r12 + 8] | 0x0040a885 lea rdi, [r13 + r12 + 0x38] | 0x0040a88a mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0040a88f lea rdx, [rsp + 0x10] | 0x0040a894 call 0x409130 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r13 + r12 + 0x38, rbx + r12 + 8, rsp + 0x10); 0x0040a899 add r12, 0x30 | r12 += 0x30; 0x0040a89d dec rbp | rbp--; 0x0040a8a0 cmp qword [rsp + 0x48], r12 | 0x0040a8a5 jne 0x40a850 | | } while (*((rsp + 0x48)) != r12); 0x0040a8a7 mov r12, qword [rsp + 0x18] | r12 = *((rsp + 0x18)); 0x0040a8ac mov r14, qword [rsp + 0x40] | r14 = *((rsp + 0x40)); 0x0040a8b1 mov rbp, qword [rsp + 0x38] | rbp = *((rsp + 0x38)); 0x0040a8b6 jmp 0x40a8c9 | | while (rsi == 0) { | label_0: 0x0040a8c0 add rbx, 0x30 | rbx += 0x30; 0x0040a8c4 cmp rbp, rbx | | if (rbp == rbx) { 0x0040a8c7 je 0x40a8de | goto label_2; | } 0x0040a8c9 mov rsi, qword [rbx + 8] | rsi = *((rbx + 8)); 0x0040a8cd test rsi, rsi | 0x0040a8d0 je 0x40a8c0 | | } 0x0040a8d2 mov rdi, qword [rbx + 0x20] | rdi = *((rbx + 0x20)); 0x0040a8d6 mov rax, qword [rdi] | rax = *(rdi); 0x0040a8d9 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040a8dc jmp 0x40a8c0 | goto label_0; | label_2: 0x0040a8de mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x0040a8e3 mov rcx, qword [rsp + 0x28] | rcx = *((rsp + 0x28)); 0x0040a8e8 mov qword [rcx], rax | *(rcx) = rax; 0x0040a8eb cmp r14, rax | | if (r14 == rax) { 0x0040a8ee je 0x40a990 | goto label_4; | } 0x0040a8f4 sub rbp, qword [rsp + 8] | rbp -= *((rsp + 8)); 0x0040a8f9 add r12, rbp | r12 += rbp; 0x0040a8fc mov qword [rsp + 0x18], r12 | *((rsp + 0x18)) = r12; 0x0040a901 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x0040a906 mov rbx, qword [rax] | rbx = *(rax); 0x0040a909 xor ebp, ebp | ebp = 0; 0x0040a90b lea r12, [rsp + 0x10] | r12 = rsp + 0x10; | do { 0x0040a910 mov rax, qword [r14 + rbp + 0x28] | rax = *((r14 + rbp + 0x28)); 0x0040a915 mov qword [r15 + rbp + 0x28], rax | *((r15 + rbp + 0x28)) = rax; 0x0040a91a mov eax, dword [r14 + rbp] | eax = *((r14 + rbp)); 0x0040a91e mov dword [r15 + rbp], eax | *((r15 + rbp)) = eax; 0x0040a922 mov rax, rbx | rax = rbx; 0x0040a925 test rbx, rbx | | if (rbx == 0) { 0x0040a928 jne 0x40a940 | 0x0040a92a mov rax, qword [rip + 0x2694c7] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040a931 test rax, rax | | if (rax != 0) { 0x0040a934 jne 0x40a940 | goto label_5; | } 0x0040a936 call 0x418350 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0040a93b nop dword [rax + rax] | | } | label_5: 0x0040a940 lea rsi, [r14 + rbp + 8] | 0x0040a945 lea rdi, [r15 + rbp + 8] | 0x0040a94a mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x0040a94f mov rdx, r12 | 0x0040a952 call 0x409130 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r15 + rbp + 8, r14 + rbp + 8, r12); 0x0040a957 add rbp, 0x30 | rbp += 0x30; 0x0040a95b cmp qword [rsp + 0x50], rbp | 0x0040a960 jne 0x40a910 | | } while (*((rsp + 0x50)) != rbp); 0x0040a962 mov rbx, r14 | rbx = r14; 0x0040a965 jmp 0x40a97b | | while (rsi == 0) { | label_1: 0x0040a970 add rbx, 0x30 | rbx += 0x30; 0x0040a974 cmp qword [rsp + 8], rbx | | if (*((rsp + 8)) == rbx) { 0x0040a979 je 0x40a990 | goto label_4; | } 0x0040a97b mov rsi, qword [rbx + 8] | rsi = *((rbx + 8)); 0x0040a97f test rsi, rsi | 0x0040a982 je 0x40a970 | | } 0x0040a984 mov rdi, qword [rbx + 0x20] | rdi = *((rbx + 0x20)); 0x0040a988 mov rax, qword [rdi] | rax = *(rdi); 0x0040a98b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040a98e jmp 0x40a970 | goto label_1; | label_4: 0x0040a990 mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x0040a995 mov qword [rax], r14 | *(rax) = r14; 0x0040a998 add rsp, 0x58 | 0x0040a99c pop rbx | 0x0040a99d pop r12 | 0x0040a99f pop r13 | 0x0040a9a1 pop r14 | 0x0040a9a3 pop r15 | 0x0040a9a5 pop rbp | 0x0040a9a6 ret | return rax; | }