; assembly | /* r2dec pseudo code output */ | /* bdlt_defaulttimetablecache.t/none @ 0x409ac0 */ | #include | ; (fcn) method.bsl::vector_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day___bsl::allocator_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day_____.vector_bsl::vector_BloombergLP::bdlc::CompactedArray_ () | int64_t method_bsl::vector_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day_bsl::allocator_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day_vector_bsl::vector_BloombergLP::bdlc::CompactedArray_ (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* bsl::vector, bsl::allocator > >::vector(bsl::vector, bsl::allocator > > const&, bsl::allocator > const&) */ 0x00409ac0 push rbp | 0x00409ac1 push r15 | 0x00409ac3 push r14 | 0x00409ac5 push r13 | 0x00409ac7 push r12 | 0x00409ac9 push rbx | 0x00409aca sub rsp, 0x18 | 0x00409ace mov r15, rsi | r15 = rsi; 0x00409ad1 mov rbx, rdi | rbx = rdi; 0x00409ad4 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00409ad7 movups xmmword [rdi], xmm0 | __asm ("movups xmmword [rdi], xmm0"); 0x00409ada mov qword [rdi + 0x10], 0 | *((rdi + 0x10)) = 0; 0x00409ae2 mov rdi, qword [rdx] | rdi = *(rdx); 0x00409ae5 mov qword [rbx + 0x18], rdi | *((rbx + 0x18)) = rdi; 0x00409ae9 mov rsi, qword [rsi + 8] | rsi = *((rsi + 8)); 0x00409aed sub rsi, qword [r15] | rsi -= *(r15); | if (rsi == 0) { 0x00409af0 je 0x409bc3 | goto label_0; | } 0x00409af6 mov rax, rsi | rax = rsi; 0x00409af9 sar rax, 4 | rax >>= 4; 0x00409afd movabs rbp, 0xaaaaaaaaaaaaaaab | 0x00409b07 imul rbp, rax | rbp *= rax; 0x00409b0b mov rax, qword [rdi] | rax = *(rdi); 0x00409b0e call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00409b11 mov r13, rax | r13 = rax; 0x00409b14 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x00409b18 mov qword [rbx], rax | *(rbx) = rax; 0x00409b1b mov qword [rbx + 0x10], rbp | *((rbx + 0x10)) = rbp; 0x00409b1f mov rbp, qword [r15] | rbp = *(r15); 0x00409b22 mov r14, qword [r15 + 8] | r14 = *((r15 + 8)); 0x00409b26 cmp rbp, r14 | | if (rbp == r14) { 0x00409b29 je 0x409bb6 | goto label_1; | } 0x00409b2f mov qword [rsp + 8], r15 | *((rsp + 8)) = r15; 0x00409b34 mov qword [rsp], rbx | *(rsp) = rbx; 0x00409b38 mov r15, qword [rbx + 0x18] | r15 = *((rbx + 0x18)); 0x00409b3c sub r14, rbp | r14 -= rbp; 0x00409b3f xor ebx, ebx | ebx = 0; 0x00409b41 lea r12, [rsp + 0x10] | r12 = rsp + 0x10; 0x00409b46 nop word cs:[rax + rax] | | do { 0x00409b50 mov rax, qword [rbp + rbx + 0x28] | rax = *((rbp + rbx + 0x28)); 0x00409b55 mov qword [r13 + rbx + 0x28], rax | *((r13 + rbx + 0x28)) = rax; 0x00409b5a mov eax, dword [rbp + rbx] | eax = *((rbp + rbx)); 0x00409b5e mov dword [r13 + rbx], eax | *((r13 + rbx)) = eax; 0x00409b63 mov rax, r15 | rax = r15; 0x00409b66 test r15, r15 | | if (r15 == 0) { 0x00409b69 jne 0x409b80 | 0x00409b6b mov rax, qword [rip + 0x26a286] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00409b72 test rax, rax | | if (rax != 0) { 0x00409b75 jne 0x409b80 | goto label_2; | } 0x00409b77 call 0x418350 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00409b7c nop dword [rax] | | } | label_2: 0x00409b80 lea rsi, [rbp + rbx + 8] | 0x00409b85 lea rdi, [r13 + rbx + 8] | 0x00409b8a mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x00409b8f mov rdx, r12 | 0x00409b92 call 0x409130 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r13 + rbx + 8, rbp + rbx + 8, r12); 0x00409b97 add rbx, 0x30 | rbx += 0x30; 0x00409b9b cmp r14, rbx | 0x00409b9e jne 0x409b50 | | } while (r14 != rbx); 0x00409ba0 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x00409ba5 mov rbp, qword [rax] | rbp = *(rax); 0x00409ba8 mov rax, qword [rax + 8] | rax = *((rax + 8)); 0x00409bac mov rbx, qword [rsp] | rbx = *(rsp); 0x00409bb0 mov r13, qword [rbx + 8] | r13 = *((rbx + 8)); 0x00409bb4 jmp 0x409bb9 | goto label_3; | label_1: 0x00409bb6 mov rax, rbp | rax = rbp; | label_3: 0x00409bb9 sub rax, rbp | rax -= rbp; 0x00409bbc add rax, r13 | rax += r13; 0x00409bbf mov qword [rbx + 8], rax | *((rbx + 8)) = rax; | label_0: 0x00409bc3 add rsp, 0x18 | 0x00409bc7 pop rbx | 0x00409bc8 pop r12 | 0x00409bca pop r13 | 0x00409bcc pop r14 | 0x00409bce pop r15 | 0x00409bd0 pop rbp | 0x00409bd1 ret | return rax; | }