; assembly | /* r2dec pseudo code output */ | /* bdlt_defaulttimetablecache.t/none @ 0x40a010 */ | #include | ; (fcn) method.BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day__bsl::vector_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day___bsl::allocator_BloombergLP::bdlc::CompactedArray_CountedValue_Bloomberg () | int64_t method_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day_bsl::vector_BloombergLP::bdlc::CompactedArray_CountedValue_BloombergLP::bdlt::Timetable_Day_bsl::allocator_BloombergLP::bdlc::CompactedArray_CountedValue_Bloomberg (int64_t arg3, int64_t arg2, int64_t arg1) { | int64_t var_8h; | int64_t var_10h; | int64_t var_18h; | int64_t var_28h; | int64_t var_30h; | int64_t var_38h; | int64_t var_40h; | int64_t var_48h; | int64_t var_50h; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlc::CompactedArray_CountedValue& bsl::vector, bsl::allocator > >::emplace_back(BloombergLP::bdlt::Timetable_Day const&, unsigned long&) */ 0x0040a010 push rbp | 0x0040a011 push r15 | 0x0040a013 push r14 | 0x0040a015 push r13 | 0x0040a017 push r12 | 0x0040a019 push rbx | 0x0040a01a sub rsp, 0x58 | 0x0040a01e mov r12, rdx | r12 = rdx; 0x0040a021 mov r13, rsi | r13 = rsi; 0x0040a024 mov r15, rdi | r15 = rdi; 0x0040a027 mov rbx, qword [rdi + 8] | rbx = *((rdi + 8)); 0x0040a02b mov rsi, qword [rdi + 0x10] | rsi = *((rdi + 0x10)); 0x0040a02f mov rdi, rbx | rdi = rbx; 0x0040a032 sub rdi, qword [r15] | rdi -= *(r15); 0x0040a035 sar rdi, 4 | rdi >>= 4; 0x0040a039 movabs rbp, 0xaaaaaaaaaaaaaaab | 0x0040a043 imul rdi, rbp | rdi *= rbp; 0x0040a047 cmp rsi, rdi | | if (rsi > rdi) { 0x0040a04a jbe 0x40a0ad | 0x0040a04c mov rax, qword [r15 + 0x18] | rax = *((r15 + 0x18)); 0x0040a050 mov rcx, qword [r12] | rcx = *(r12); 0x0040a054 mov qword [rbx + 0x28], rcx | *((rbx + 0x28)) = rcx; 0x0040a058 mov ecx, dword [r13] | ecx = *(r13); 0x0040a05c mov dword [rbx], ecx | *(rbx) = ecx; 0x0040a05e test rax, rax | | if (rax == 0) { 0x0040a061 jne 0x40a074 | 0x0040a063 mov rax, qword [rip + 0x269d8e] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040a06a test rax, rax | | if (rax != 0) { 0x0040a06d jne 0x40a074 | goto label_3; | } 0x0040a06f call 0x418350 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_3: 0x0040a074 add r13, 8 | r13 += 8; 0x0040a078 add rbx, 8 | rbx += 8; 0x0040a07c mov qword [rsp], rax | *(rsp) = rax; 0x0040a080 mov rdx, rsp | 0x0040a083 mov rdi, rbx | 0x0040a086 mov rsi, r13 | 0x0040a089 call 0x409130 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (rbx, r13, rsp); 0x0040a08e mov rax, qword [r15 + 8] | rax = *((r15 + 8)); 0x0040a092 add rax, 0x30 | rax += 0x30; 0x0040a096 mov qword [r15 + 8], rax | *((r15 + 8)) = rax; | label_2: 0x0040a09a add rax, 0xffffffffffffffd0 | rax += 0xffffffffffffffd0; 0x0040a09e add rsp, 0x58 | 0x0040a0a2 pop rbx | 0x0040a0a3 pop r12 | 0x0040a0a5 pop r13 | 0x0040a0a7 pop r14 | 0x0040a0a9 pop r15 | 0x0040a0ab pop rbp | 0x0040a0ac ret | return rax; | } 0x0040a0ad inc rdi | rdi++; 0x0040a0b0 movabs rdx, 0x555555555555555 | rdx = 0x555555555555555; 0x0040a0ba call 0x425090 | rax = bsl::Vector_Util::computeNewCapacity(unsigned long,unsigned long,unsigned long) (rdi, rsi, rdx); 0x0040a0bf mov rbx, rax | rbx = rax; 0x0040a0c2 mov rdi, qword [r15 + 0x18] | rdi = *((r15 + 0x18)); 0x0040a0c6 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0040a0c9 movaps xmmword [rsp], xmm0 | *(rsp) = xmm0; 0x0040a0cd mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x0040a0d6 mov qword [rsp + 0x18], rdi | *((rsp + 0x18)) = rdi; 0x0040a0db shl rax, 4 | rax <<= 4; 0x0040a0df lea rsi, [rax + rax*2] | rsi = rax * 3; 0x0040a0e3 mov rax, qword [rdi] | rax = *(rdi); 0x0040a0e6 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x0040a0e9 mov r14, rax | r14 = rax; 0x0040a0ec mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x0040a0f1 mov qword [rsp], rax | *(rsp) = rax; 0x0040a0f5 mov qword [rsp + 0x10], rbx | *((rsp + 0x10)) = rbx; 0x0040a0fa mov rdx, qword [r15 + 8] | rdx = *((r15 + 8)); 0x0040a0fe mov rax, qword [r15 + 0x18] | rax = *((r15 + 0x18)); 0x0040a102 sub rdx, qword [r15] | rdx -= *(r15); 0x0040a105 mov rcx, qword [r12] | rcx = *(r12); 0x0040a109 mov qword [r14 + rdx + 0x28], rcx | *((r14 + rdx + 0x28)) = rcx; 0x0040a10e mov ecx, dword [r13] | ecx = *(r13); 0x0040a112 mov dword [r14 + rdx], ecx | *((r14 + rdx)) = ecx; 0x0040a116 test rax, rax | | if (rax == 0) { 0x0040a119 jne 0x40a132 | 0x0040a11b mov rax, qword [rip + 0x269cd6] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040a122 test rax, rax | | if (rax != 0) { 0x0040a125 jne 0x40a132 | goto label_4; | } 0x0040a127 mov rbx, rdx | rbx = rdx; 0x0040a12a call 0x418350 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0040a12f mov rdx, rbx | rdx = rbx; | } | label_4: 0x0040a132 mov qword [rsp + 0x38], rdx | *((rsp + 0x38)) = rdx; 0x0040a137 mov rcx, rdx | rcx = rdx; 0x0040a13a sar rcx, 4 | rcx >>= 4; 0x0040a13e imul rcx, rbp | rcx *= rbp; 0x0040a142 add r13, 8 | r13 += 8; 0x0040a146 lea rbx, [rcx + rcx*2] | rbx = rcx * 3; 0x0040a14a shl rbx, 4 | rbx <<= 4; 0x0040a14e lea r12, [r14 + rbx + 8] | r12 = r14 + rbx + 8; 0x0040a153 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x0040a158 lea rdx, [rsp + 0x30] | 0x0040a15d mov rdi, r12 | 0x0040a160 mov rsi, r13 | 0x0040a163 call 0x409130 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (r12, r13, rsp + 0x30); 0x0040a168 mov rbp, qword [r15] | rbp = *(r15); 0x0040a16b mov rax, qword [r15 + 8] | rax = *((r15 + 8)); 0x0040a16f cmp rbp, rax | | if (rbp == rax) { 0x0040a172 je 0x40a21f | goto label_5; | } 0x0040a178 mov qword [rsp + 0x48], r12 | *((rsp + 0x48)) = r12; 0x0040a17d mov qword [rsp + 0x40], rbx | *((rsp + 0x40)) = rbx; 0x0040a182 mov qword [rsp + 0x28], r14 | *((rsp + 0x28)) = r14; 0x0040a187 mov rbx, qword [rsp] | rbx = *(rsp); 0x0040a18b mov r14, rax | r14 = rax; 0x0040a18e mov r13, qword [r15 + 0x18] | r13 = *((r15 + 0x18)); 0x0040a192 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x0040a197 sub r14, rbp | r14 -= rbp; 0x0040a19a xor r12d, r12d | r12d = 0; | do { 0x0040a19d mov rax, qword [rbp + r12 + 0x28] | rax = *((rbp + r12 + 0x28)); 0x0040a1a2 mov qword [rbx + r12 + 0x28], rax | *((rbx + r12 + 0x28)) = rax; 0x0040a1a7 mov eax, dword [rbp + r12] | eax = *((rbp + r12)); 0x0040a1ac mov dword [rbx + r12], eax | *((rbx + r12)) = eax; 0x0040a1b0 mov rax, r13 | rax = r13; 0x0040a1b3 test r13, r13 | | if (r13 == 0) { 0x0040a1b6 jne 0x40a1c9 | 0x0040a1b8 mov rax, qword [rip + 0x269c39] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040a1bf test rax, rax | | if (rax != 0) { 0x0040a1c2 jne 0x40a1c9 | goto label_6; | } 0x0040a1c4 call 0x418350 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_6: 0x0040a1c9 lea rsi, [rbp + r12 + 8] | 0x0040a1ce lea rdi, [rbx + r12 + 8] | 0x0040a1d3 mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x0040a1d8 lea rdx, [rsp + 0x30] | 0x0040a1dd call 0x409130 | bsl::vector>::vector(bsl::vector>const&,bsl::allocatorconst&) (rbx + r12 + 8, rbp + r12 + 8, rsp + 0x30); 0x0040a1e2 add r12, 0x30 | r12 += 0x30; 0x0040a1e6 cmp r14, r12 | 0x0040a1e9 jne 0x40a19d | | } while (r14 != r12); 0x0040a1eb mov r14, qword [rsp + 0x28] | r14 = *((rsp + 0x28)); 0x0040a1f0 mov r12, qword [rsp + 0x38] | r12 = *((rsp + 0x38)); 0x0040a1f5 mov rbx, qword [rsp + 0x50] | rbx = *((rsp + 0x50)); 0x0040a1fa jmp 0x40a205 | | while (rsi == 0) { | label_0: 0x0040a1fc add rbp, 0x30 | rbp += 0x30; 0x0040a200 cmp rbx, rbp | | if (rbx == rbp) { 0x0040a203 je 0x40a21a | goto label_7; | } 0x0040a205 mov rsi, qword [rbp + 8] | rsi = *((rbp + 8)); 0x0040a209 test rsi, rsi | 0x0040a20c je 0x40a1fc | | } 0x0040a20e mov rdi, qword [rbp + 0x20] | rdi = *((rbp + 0x20)); 0x0040a212 mov rax, qword [rdi] | rax = *(rdi); 0x0040a215 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040a218 jmp 0x40a1fc | goto label_0; | label_7: 0x0040a21a mov rbp, qword [r15] | rbp = *(r15); 0x0040a21d jmp 0x40a224 | goto label_8; | label_5: 0x0040a21f mov r12, qword [rsp + 0x38] | r12 = *((rsp + 0x38)); | label_8: 0x0040a224 add r14, r12 | r14 += r12; 0x0040a227 mov qword [r15 + 8], rbp | *((r15 + 8)) = rbp; 0x0040a22b add r14, 0x30 | r14 += 0x30; 0x0040a22f mov qword [rsp + 8], r14 | *((rsp + 8)) = r14; 0x0040a234 mov rsi, rsp | 0x0040a237 mov rdi, r15 | 0x0040a23a call 0x4250c0 | bsl::Vector_Util::swap(void*,void*) (r15, rsp); 0x0040a23f mov rbx, qword [rsp] | rbx = *(rsp); 0x0040a243 test rbx, rbx | | if (rbx == 0) { 0x0040a246 je 0x40a284 | goto label_9; | } 0x0040a248 mov rbp, qword [rsp + 8] | rbp = *((rsp + 8)); 0x0040a24d cmp rbx, rbp | | if (rbx != rbp) { 0x0040a250 jne 0x40a25d | goto label_10; | } 0x0040a252 jmp 0x40a276 | goto label_11; | do { | label_1: 0x0040a254 add rbx, 0x30 | rbx += 0x30; 0x0040a258 cmp rbp, rbx | | if (rbp == rbx) { 0x0040a25b je 0x40a272 | goto label_12; | } | label_10: 0x0040a25d mov rsi, qword [rbx + 8] | rsi = *((rbx + 8)); 0x0040a261 test rsi, rsi | 0x0040a264 je 0x40a254 | | } while (rsi == 0); 0x0040a266 mov rdi, qword [rbx + 0x20] | rdi = *((rbx + 0x20)); 0x0040a26a mov rax, qword [rdi] | rax = *(rdi); 0x0040a26d call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x0040a270 jmp 0x40a254 | goto label_1; | label_12: 0x0040a272 mov rbx, qword [rsp] | rbx = *(rsp); | label_11: 0x0040a276 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0040a27b mov rax, qword [rdi] | rax = *(rdi); 0x0040a27e mov rsi, rbx | rsi = rbx; 0x0040a281 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_9: 0x0040a284 mov rax, qword [r15 + 8] | rax = *((r15 + 8)); 0x0040a288 jmp 0x40a09a | goto label_2; | }