; assembly | /* r2dec pseudo code output */ | /* bdlcc_skiplist.t/none @ 0x649aa0 */ | #include | ; (fcn) method.BloombergLP::bdlcc::SkipList_BloombergLP::bsls::TimeInterval__bsl.function_void______::allocateNode_int__BloombergLP::bsls::TimeInterval_const__bsl::function_void_____const_ () | uint64_t method_BloombergLP::bdlcc::SkipList_BloombergLP::bsls::TimeInterval_bsl_function_void_::allocateNode_int_BloombergLP::bsls::TimeInterval_const_bsl::function_void_const_ (uint32_t arg4, int64_t arg3, uint32_t arg2, int64_t arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlcc::SkipList >::allocateNode(int, BloombergLP::bsls::TimeInterval const&, bsl::function const&) */ 0x00649aa0 push rbp | 0x00649aa1 push r15 | 0x00649aa3 push r14 | 0x00649aa5 push r13 | 0x00649aa7 push r12 | 0x00649aa9 push rbx | 0x00649aaa push rax | 0x00649aab mov r15, rcx | r15 = rcx; 0x00649aae mov r13, rdx | r13 = rdx; 0x00649ab1 mov rbp, rdi | 0x00649ab4 mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x00649ab7 lea ecx, [rax + 1] | ecx = rax + 1; 0x00649aba cmp eax, esi | | if (eax < esi) { 0x00649abc cmovl esi, ecx | esi = ecx; | } 0x00649abf mov rdi, qword [rdi + 0x50] | 0x00649ac3 call 0x64aa20 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rdi + 0x50)), rsi); 0x00649ac8 mov r12, rax | r12 = rax; 0x00649acb mov rbx, rax | rbx = rax; 0x00649ace mov r14, qword [rbp + 0x50] | r14 = *((rbp + 0x50)); 0x00649ad2 mov rax, qword [rbp + 0x58] | rax = *((rbp + 0x58)); 0x00649ad6 test rax, rax | | if (rax != 0) { 0x00649ad9 je 0x649ae6 | 0x00649adb movups xmm0, xmmword [r13] | __asm ("movups xmm0, xmmword [r13]"); 0x00649ae0 movups xmmword [rbx + 0x60], xmm0 | __asm ("movups xmmword [rbx + 0x60], xmm0"); 0x00649ae4 jmp 0x649b16 | | } else { 0x00649ae6 mov rax, qword [rip + 0x2d1053] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00649aed test rax, rax | | if (rax == 0) { 0x00649af0 jne 0x649af7 | 0x00649af2 call 0x64efc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00649af7 movups xmm0, xmmword [r13] | __asm ("movups xmm0, xmmword [r13]"); 0x00649afc movups xmmword [rbx + 0x60], xmm0 | __asm ("movups xmmword [rbx + 0x60], xmm0"); 0x00649b00 test rax, rax | | if (rax != 0) { 0x00649b03 jne 0x649b16 | goto label_0; | } 0x00649b05 mov rax, qword [rip + 0x2d1034] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00649b0c test rax, rax | | if (rax != 0) { 0x00649b0f jne 0x649b16 | goto label_0; | } 0x00649b11 call 0x64efc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x00649b16 mov qword [rbx + 0x40], rax | *((rbx + 0x40)) = rax; 0x00649b1a xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00649b1d movups xmmword [rbx + 0x48], xmm0 | __asm ("movups xmmword [rbx + 0x48], xmm0"); 0x00649b21 add r12, 0x10 | r12 += 0x10; 0x00649b25 mov rdi, r12 | 0x00649b28 mov rsi, r15 | 0x00649b2b call 0x651f80 | BloombergLP::bslstl::Function_Rep::copyInit(BloombergLP::bslstl::Function_Repconst&) (r12, r15); 0x00649b30 mov rdi, rbx | 0x00649b33 call 0x64a590 | BloombergLP::bdlcc::SkipList_Control::incrementRefCount() (rbx); 0x00649b38 mov qword [rbx + 0x70], 0 | *((rbx + 0x70)) = 0; 0x00649b40 mov rax, rbx | rax = rbx; 0x00649b43 add rsp, 8 | 0x00649b47 pop rbx | 0x00649b48 pop r12 | 0x00649b4a pop r13 | 0x00649b4c pop r14 | 0x00649b4e pop r15 | 0x00649b50 pop rbp | 0x00649b51 ret | return rax; | }