; assembly | /* r2dec pseudo code output */ | /* bdlcc_stripedunorderedmap.t/assume @ 0x585fe0 */ | #include | ; (fcn) method.BloombergLP::bslmt::ThroughputBenchmarkResult.ThroughputBenchmarkResult_int__bsl::vector_int__bsl::allocator_int____const__BloombergLP::bslma::Allocator_ () | uint64_t method_BloombergLP::bslmt::ThroughputBenchmarkResult_ThroughputBenchmarkResult_int_bsl::vector_int_bsl::allocator_int_const_BloombergLP::bslma::Allocator_ (int64_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; | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bslmt::ThroughputBenchmarkResult::ThroughputBenchmarkResult(int, bsl::vector > const&, BloombergLP::bslma::Allocator*) */ 0x00585fe0 push rbp | 0x00585fe1 push r15 | 0x00585fe3 push r14 | 0x00585fe5 push r13 | 0x00585fe7 push r12 | 0x00585fe9 push rbx | 0x00585fea sub rsp, 0x28 | 0x00585fee mov rbx, rdx | rbx = rdx; 0x00585ff1 mov r15d, esi | r15d = esi; 0x00585ff4 mov r14, rdi | r14 = rdi; 0x00585ff7 test rcx, rcx | | if (rcx == 0) { 0x00585ffa jne 0x586010 | 0x00585ffc mov rcx, qword [rip + 0x29d4dd] | rcx = BloombergLP::bslma::Default::s_defaultAllocator; 0x00586003 test rcx, rcx | | if (rcx != 0) { 0x00586006 jne 0x586010 | goto label_1; | } 0x00586008 call 0x582990 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0058600d mov rcx, rax | rcx = rax; | } | label_1: 0x00586010 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00586013 movups xmmword [r14], xmm0 | __asm ("movups xmmword [r14], xmm0"); 0x00586017 mov qword [r14 + 0x10], 0 | *((r14 + 0x10)) = 0; 0x0058601f mov qword [r14 + 0x18], rcx | *((r14 + 0x18)) = rcx; 0x00586023 mov r12, qword [rbx + 8] | r12 = *((rbx + 8)); 0x00586027 sub r12, qword [rbx] | r12 -= *(rbx); 0x0058602a mov esi, r15d | 0x0058602d mov rdi, r14 | 0x00586030 mov qword [rsp + 8], rsi | *((rsp + 8)) = rsi; 0x00586035 call 0x5871b0 | bsl::vector>,bsl::allocator>>>,bsl::allocator>,bsl::allocator>>>>>::resize(unsigned long) (r14, r15d); 0x0058603a shr r12, 2 | r12 >>= 2; 0x0058603e movsxd rax, r12d | rax = (int64_t) r12d; 0x00586041 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x00586046 mov r15d, eax | r15d = eax; 0x00586049 xor ebp, ebp | ebp = 0; 0x0058604b mov qword [rsp], r12 | *(rsp) = r12; 0x0058604f jmp 0x586076 | | while (r12d <= 0) { | label_0: 0x00586060 mov rbp, qword [rsp + 0x18] | rbp = *((rsp + 0x18)); 0x00586065 inc rbp | rbp++; 0x00586068 cmp rbp, qword [rsp + 8] | 0x0058606d mov r14, r13 | r14 = r13; 0x00586070 mov r12, qword [rsp] | r12 = *(rsp); | if (rbp == *((rsp + 8))) { 0x00586074 je 0x5860d3 | goto label_2; | } 0x00586076 mov qword [rsp + 0x18], rbp | *((rsp + 0x18)) = rbp; 0x0058607b shl rbp, 5 | rbp <<= 5; 0x0058607f mov r13, r14 | r13 = r14; 0x00586082 mov rdi, qword [r14] | 0x00586085 add rdi, rbp | rdi += rbp; 0x00586088 mov rsi, qword [rsp + 0x10] | 0x0058608d call 0x587670 | rax = bsl::vector>,bsl::allocator>>>::resize(unsigned long) (*(r14), *((rsp + 0x10))); 0x00586092 test r12d, r12d | 0x00586095 jle 0x586060 | | } 0x00586097 xor r14d, r14d | r14d = 0; 0x0058609a xor r12d, r12d | r12d = 0; 0x0058609d nop dword [rax] | | do { 0x005860a0 mov rax, qword [r13] | rax = *(r13); 0x005860a4 mov rdi, qword [rax + rbp] | 0x005860a8 add rdi, r14 | rdi += r14; 0x005860ab mov rax, qword [rbx] | rax = *(rbx); 0x005860ae movsxd rsi, dword [rax + r12*4] | rsi = *((rax + r12*4)); 0x005860b2 mov qword [rsp + 0x20], 0 | *((rsp + 0x20)) = 0; 0x005860bb lea rdx, [rsp + 0x20] | 0x005860c0 call 0x5a70d0 | bsl::vector>::resize(unsigned long,doubleconst&) (*((rax + rbp)), rsi, rsp + 0x20); 0x005860c5 inc r12 | r12++; 0x005860c8 add r14, 0x20 | r14 += 0x20; 0x005860cc cmp r15, r12 | 0x005860cf jne 0x5860a0 | | } while (r15 != r12); 0x005860d1 jmp 0x586060 | goto label_0; | label_2: 0x005860d3 add rsp, 0x28 | 0x005860d7 pop rbx | 0x005860d8 pop r12 | 0x005860da pop r13 | 0x005860dc pop r14 | 0x005860de pop r15 | 0x005860e0 pop rbp | 0x005860e1 ret | return rax; | }