; assembly | /* r2dec pseudo code output */ | /* bdlcc_skiplist.t/assume @ 0x6490e0 */ | #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&) */ 0x006490e0 push rbp | 0x006490e1 push r15 | 0x006490e3 push r14 | 0x006490e5 push r13 | 0x006490e7 push r12 | 0x006490e9 push rbx | 0x006490ea push rax | 0x006490eb mov r15, rcx | r15 = rcx; 0x006490ee mov r13, rdx | r13 = rdx; 0x006490f1 mov rbp, rdi | 0x006490f4 mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x006490f7 lea ecx, [rax + 1] | ecx = rax + 1; 0x006490fa cmp eax, esi | | if (eax < esi) { 0x006490fc cmovl esi, ecx | esi = ecx; | } 0x006490ff mov rdi, qword [rdi + 0x50] | 0x00649103 call 0x64a060 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rdi + 0x50)), rsi); 0x00649108 mov r12, rax | r12 = rax; 0x0064910b mov rbx, rax | rbx = rax; 0x0064910e mov r14, qword [rbp + 0x50] | r14 = *((rbp + 0x50)); 0x00649112 mov rax, qword [rbp + 0x58] | rax = *((rbp + 0x58)); 0x00649116 test rax, rax | | if (rax == 0) { 0x00649119 jne 0x64912c | 0x0064911b mov rax, qword [rip + 0x2d1a1e] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00649122 test rax, rax | | if (rax != 0) { 0x00649125 jne 0x64912c | goto label_0; | } 0x00649127 call 0x64e700 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x0064912c movups xmm0, xmmword [r13] | __asm ("movups xmm0, xmmword [r13]"); 0x00649131 movups xmmword [rbx + 0x60], xmm0 | __asm ("movups xmmword [rbx + 0x60], xmm0"); 0x00649135 test rax, rax | | if (rax == 0) { 0x00649138 jne 0x64914b | 0x0064913a mov rax, qword [rip + 0x2d19ff] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00649141 test rax, rax | | if (rax != 0) { 0x00649144 jne 0x64914b | goto label_1; | } 0x00649146 call 0x64e700 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x0064914b mov qword [rbx + 0x40], rax | *((rbx + 0x40)) = rax; 0x0064914f xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00649152 movups xmmword [rbx + 0x48], xmm0 | __asm ("movups xmmword [rbx + 0x48], xmm0"); 0x00649156 add r12, 0x10 | r12 += 0x10; 0x0064915a mov rdi, r12 | 0x0064915d mov rsi, r15 | 0x00649160 call 0x6516a0 | BloombergLP::bslstl::Function_Rep::copyInit(BloombergLP::bslstl::Function_Repconst&) (r12, r15); 0x00649165 mov rdi, rbx | 0x00649168 call 0x649be0 | BloombergLP::bdlcc::SkipList_Control::incrementRefCount() (rbx); 0x0064916d mov qword [rbx + 0x70], 0 | *((rbx + 0x70)) = 0; 0x00649175 mov rax, rbx | rax = rbx; 0x00649178 add rsp, 8 | 0x0064917c pop rbx | 0x0064917d pop r12 | 0x0064917f pop r13 | 0x00649181 pop r14 | 0x00649183 pop r15 | 0x00649185 pop rbp | 0x00649186 ret | return rax; | }