; assembly | /* r2dec pseudo code output */ | /* bdlt_defaulttimetablecache.t/assume @ 0x409aa0 */ | #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&) */ 0x00409aa0 push rbp | 0x00409aa1 push r15 | 0x00409aa3 push r14 | 0x00409aa5 push r13 | 0x00409aa7 push r12 | 0x00409aa9 push rbx | 0x00409aaa sub rsp, 0x18 | 0x00409aae mov r15, rsi | r15 = rsi; 0x00409ab1 mov rbx, rdi | rbx = rdi; 0x00409ab4 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00409ab7 movups xmmword [rdi], xmm0 | __asm ("movups xmmword [rdi], xmm0"); 0x00409aba mov qword [rdi + 0x10], 0 | *((rdi + 0x10)) = 0; 0x00409ac2 mov rdi, qword [rdx] | rdi = *(rdx); 0x00409ac5 mov qword [rbx + 0x18], rdi | *((rbx + 0x18)) = rdi; 0x00409ac9 mov rsi, qword [rsi + 8] | rsi = *((rsi + 8)); 0x00409acd sub rsi, qword [r15] | rsi -= *(r15); | if (rsi == 0) { 0x00409ad0 je 0x409b86 | goto label_0; | } 0x00409ad6 mov rax, rsi | rax = rsi; 0x00409ad9 sar rax, 4 | rax >>= 4; 0x00409add movabs rbp, 0xaaaaaaaaaaaaaaab | 0x00409ae7 imul rbp, rax | rbp *= rax; 0x00409aeb mov rax, qword [rdi] | rax = *(rdi); 0x00409aee call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00409af1 mov r13, rax | r13 = rax; 0x00409af4 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; 0x00409af8 mov qword [rbx], rax | *(rbx) = rax; 0x00409afb mov qword [rbx + 0x10], rbp | *((rbx + 0x10)) = rbp; 0x00409aff mov rbp, qword [r15] | rbp = *(r15); 0x00409b02 mov r14, qword [r15 + 8] | r14 = *((r15 + 8)); 0x00409b06 cmp rbp, r14 | | if (rbp == r14) { 0x00409b09 je 0x409b79 | goto label_1; | } 0x00409b0b mov qword [rsp + 8], r15 | *((rsp + 8)) = r15; 0x00409b10 mov qword [rsp], rbx | *(rsp) = rbx; 0x00409b14 mov r15, qword [rbx + 0x18] | r15 = *((rbx + 0x18)); 0x00409b18 sub r14, rbp | r14 -= rbp; 0x00409b1b xor ebx, ebx | ebx = 0; 0x00409b1d lea r12, [rsp + 0x10] | r12 = rsp + 0x10; 0x00409b22 nop word cs:[rax + rax] | 0x00409b2c nop dword [rax] | | do { 0x00409b30 mov rax, qword [rbp + rbx + 0x28] | rax = *((rbp + rbx + 0x28)); 0x00409b35 mov qword [r13 + rbx + 0x28], rax | *((r13 + rbx + 0x28)) = rax; 0x00409b3a mov eax, dword [rbp + rbx] | eax = *((rbp + rbx)); 0x00409b3e mov dword [r13 + rbx], eax | *((r13 + rbx)) = eax; 0x00409b43 lea rsi, [rbp + rbx + 8] | 0x00409b48 lea rdi, [r13 + rbx + 8] | 0x00409b4d mov qword [rsp + 0x10], r15 | *((rsp + 0x10)) = r15; 0x00409b52 mov rdx, r12 | 0x00409b55 call 0x409110 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r13 + rbx + 8, rbp + rbx + 8, r12); 0x00409b5a add rbx, 0x30 | rbx += 0x30; 0x00409b5e cmp r14, rbx | 0x00409b61 jne 0x409b30 | | } while (r14 != rbx); 0x00409b63 mov rax, qword [rsp + 8] | rax = *((rsp + 8)); 0x00409b68 mov rbp, qword [rax] | rbp = *(rax); 0x00409b6b mov rax, qword [rax + 8] | rax = *((rax + 8)); 0x00409b6f mov rbx, qword [rsp] | rbx = *(rsp); 0x00409b73 mov r13, qword [rbx + 8] | r13 = *((rbx + 8)); 0x00409b77 jmp 0x409b7c | goto label_2; | label_1: 0x00409b79 mov rax, rbp | rax = rbp; | label_2: 0x00409b7c sub rax, rbp | rax -= rbp; 0x00409b7f add rax, r13 | rax += r13; 0x00409b82 mov qword [rbx + 8], rax | *((rbx + 8)) = rax; | label_0: 0x00409b86 add rsp, 0x18 | 0x00409b8a pop rbx | 0x00409b8b pop r12 | 0x00409b8d pop r13 | 0x00409b8f pop r14 | 0x00409b91 pop r15 | 0x00409b93 pop rbp | 0x00409b94 ret | return rax; | }