; assembly | /* r2dec pseudo code output */ | /* bdlcc_skiplist.t/assume @ 0x5bc3b0 */ | #include | ; (fcn) method.BloombergLP::bdlcc::SkipList_BloombergLP::bdlt::Datetime__bsl.function_void______::allocateNode_int__BloombergLP::bdlt::Datetime_const__bsl::function_void_____const_ () | uint64_t method_BloombergLP::bdlcc::SkipList_BloombergLP::bdlt::Datetime_bsl_function_void_::allocateNode_int_BloombergLP::bdlt::Datetime_const_bsl::function_void_const_ (int64_t arg4, int64_t arg3, uint32_t arg2, char * arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlcc::SkipList >::allocateNode(int, BloombergLP::bdlt::Datetime const&, bsl::function const&) */ 0x005bc3b0 push rbp | 0x005bc3b1 push r15 | 0x005bc3b3 push r14 | 0x005bc3b5 push r13 | 0x005bc3b7 push r12 | 0x005bc3b9 push rbx | 0x005bc3ba push rax | 0x005bc3bb mov r15, rcx | r15 = rcx; 0x005bc3be mov r13, rdx | r13 = rdx; 0x005bc3c1 mov rbp, rdi | 0x005bc3c4 mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x005bc3c7 lea ecx, [rax + 1] | ecx = rax + 1; 0x005bc3ca cmp eax, esi | | if (eax < esi) { 0x005bc3cc cmovl esi, ecx | esi = ecx; | } 0x005bc3cf mov rdi, qword [rdi + 0x50] | 0x005bc3d3 call 0x64a060 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rdi + 0x50)), rsi); 0x005bc3d8 mov r12, rax | r12 = rax; 0x005bc3db mov rbx, rax | rbx = rax; 0x005bc3de mov r14, qword [rbp + 0x50] | r14 = *((rbp + 0x50)); 0x005bc3e2 mov rax, qword [rbp + 0x58] | rax = *((rbp + 0x58)); 0x005bc3e6 test rax, rax | | if (rax == 0) { 0x005bc3e9 jne 0x5bc3fc | 0x005bc3eb mov rax, qword [rip + 0x35e74e] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x005bc3f2 test rax, rax | | if (rax != 0) { 0x005bc3f5 jne 0x5bc3fc | goto label_0; | } 0x005bc3f7 call 0x64e700 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x005bc3fc mov rcx, qword [r13] | rcx = *(r13); 0x005bc400 mov qword [rbx + 0x60], rcx | *((rbx + 0x60)) = rcx; 0x005bc404 test rax, rax | | if (rax == 0) { 0x005bc407 jne 0x5bc41a | 0x005bc409 mov rax, qword [rip + 0x35e730] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x005bc410 test rax, rax | | if (rax != 0) { 0x005bc413 jne 0x5bc41a | goto label_1; | } 0x005bc415 call 0x64e700 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x005bc41a mov qword [rbx + 0x40], rax | *((rbx + 0x40)) = rax; 0x005bc41e xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x005bc421 movups xmmword [rbx + 0x48], xmm0 | __asm ("movups xmmword [rbx + 0x48], xmm0"); 0x005bc425 add r12, 0x10 | r12 += 0x10; 0x005bc429 mov rdi, r12 | 0x005bc42c mov rsi, r15 | 0x005bc42f call 0x6516a0 | BloombergLP::bslstl::Function_Rep::copyInit(BloombergLP::bslstl::Function_Repconst&) (r12, r15); 0x005bc434 mov rdi, rbx | 0x005bc437 call 0x649be0 | BloombergLP::bdlcc::SkipList_Control::incrementRefCount() (rbx); 0x005bc43c mov qword [rbx + 0x68], 0 | *((rbx + 0x68)) = 0; 0x005bc444 mov rax, rbx | rax = rbx; 0x005bc447 add rsp, 8 | 0x005bc44b pop rbx | 0x005bc44c pop r12 | 0x005bc44e pop r13 | 0x005bc450 pop r14 | 0x005bc452 pop r15 | 0x005bc454 pop rbp | 0x005bc455 ret | return rax; | }