; assembly | /* r2dec pseudo code output */ | /* balb_filecleanerutil.t/assume @ 0x40c400 */ | #include | ; (fcn) method.BloombergLP::bdlma::SequentialPool.SequentialPool_unsigned_long__unsigned_long__BloombergLP::bslma::Allocator_ () | int64_t method_BloombergLP::bdlma::SequentialPool_SequentialPool_unsigned_long_unsigned_long_BloombergLP::bslma::Allocator_ (int64_t arg4, uint32_t arg3, int64_t arg2, int64_t arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlma::SequentialPool::SequentialPool(unsigned long, unsigned long, BloombergLP::bslma::Allocator*) */ 0x0040c400 push r14 | 0x0040c402 push rbx | 0x0040c403 push rax | 0x0040c404 mov r8, rcx | r8 = rcx; 0x0040c407 mov r14, rsi | r14 = rsi; 0x0040c40a mov rbx, rdi | rbx = rdi; 0x0040c40d movabs rsi, 0xffffffffffffff | rsi = 0xffffffffffffff; 0x0040c417 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0040c41a movups xmmword [rdi], xmm0 | __asm ("movups xmmword [rdi], xmm0"); 0x0040c41d mov qword [rdi + 0x10], 0 | *((rdi + 0x10)) = 0; 0x0040c425 mov word [rdi + 0x18], 0x100f | *((rdi + 0x18)) = 0x100f; 0x0040c42b lea rcx, [rdi + 0x20] | rcx = rdi + 0x20; 0x0040c42f mov qword [rdi + 0x20], 0 | *((rdi + 0x20)) = 0; 0x0040c437 mov qword [rdi + 0x28], rcx | *((rdi + 0x28)) = rcx; 0x0040c43b lea rcx, [r14 - 1] | rcx = r14 - 1; 0x0040c43f mov rdi, rcx | rdi = rcx; 0x0040c442 or rdi, 1 | rdi |= 1; 0x0040c446 bsr rax, rdi | __asm ("bsr rax, rdi"); 0x0040c44a xor eax, 0x3f | eax ^= 0x3f; 0x0040c44d cmp rcx, 1 | 0x0040c451 adc eax, 0 | eax += 0; 0x0040c454 mov ecx, eax | ecx = eax; 0x0040c456 neg cl | cl = -cl; 0x0040c458 mov edi, 1 | edi = 1; 0x0040c45d shl rdi, cl | rdi <<= cl; 0x0040c460 test eax, eax | | if (eax != 0) { 0x0040c462 je 0x40c467 | 0x0040c464 add rsi, rdi | rsi += rdi; | } 0x0040c467 movabs rax, 0x7ffffffffffffffe | rax = 0x7ffffffffffffffe; 0x0040c471 and rdx, rax | rdx &= rax; 0x0040c474 lea rax, [rdx + 1] | rax = rdx + 1; 0x0040c478 bsr rax, rax | __asm ("bsr rax, rax"); 0x0040c47c xor eax, 0x3f | eax ^= 0x3f; 0x0040c47f cmp rdx, 1 | 0x0040c483 sbb ecx, ecx | ecx -= ecx; 0x0040c485 sub ecx, eax | ecx -= eax; 0x0040c487 mov rax, 0xffffffffffffffff | rax = 0xffffffffffffffff; 0x0040c48e shl rax, cl | rax <<= cl; 0x0040c491 movabs rcx, 0xff00000000000000 | rcx = 0xff00000000000000; 0x0040c49b or rcx, rsi | rcx |= rsi; 0x0040c49e or rcx, rax | rcx |= rax; 0x0040c4a1 mov qword [rbx + 0x1f0], rcx | *((rbx + 0x1f0)) = rcx; 0x0040c4a8 mov qword [rbx + 0x1f8], rcx | *((rbx + 0x1f8)) = rcx; 0x0040c4af movups xmmword [rbx + 0x200], xmm0 | __asm ("movups xmmword [rbx + 0x200], xmm0"); 0x0040c4b6 mov qword [rbx + 0x210], 0 | *((rbx + 0x210)) = 0; 0x0040c4c1 test r8, r8 | | if (r8 == 0) { 0x0040c4c4 jne 0x40c4da | 0x0040c4c6 mov r8, qword [rip + 0x261803] | r8 = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040c4cd test r8, r8 | | if (r8 != 0) { 0x0040c4d0 jne 0x40c4da | goto label_0; | } 0x0040c4d2 call 0x4171b0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0040c4d7 mov r8, rax | r8 = rax; | } | label_0: 0x0040c4da mov qword [rbx + 0x218], r8 | *((rbx + 0x218)) = r8; 0x0040c4e1 mov rdi, rbx | 0x0040c4e4 mov rsi, r14 | 0x0040c4e7 call 0x40bf00 | BloombergLP::bdlma::SequentialPool::reserveCapacity(unsigned long) (rbx, r14); 0x0040c4ec add rsp, 8 | 0x0040c4f0 pop rbx | 0x0040c4f1 pop r14 | 0x0040c4f3 ret | return rax; | }