; assembly | /* r2dec pseudo code output */ | /* bdlcc_skiplist.t/none @ 0x5bc580 */ | #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&) */ 0x005bc580 push rbp | 0x005bc581 push r15 | 0x005bc583 push r14 | 0x005bc585 push r13 | 0x005bc587 push r12 | 0x005bc589 push rbx | 0x005bc58a push rax | 0x005bc58b mov r15, rcx | r15 = rcx; 0x005bc58e mov r13, rdx | r13 = rdx; 0x005bc591 mov rbp, rdi | 0x005bc594 mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x005bc597 lea ecx, [rax + 1] | ecx = rax + 1; 0x005bc59a cmp eax, esi | | if (eax < esi) { 0x005bc59c cmovl esi, ecx | esi = ecx; | } 0x005bc59f mov rdi, qword [rdi + 0x50] | 0x005bc5a3 call 0x64aa20 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rdi + 0x50)), rsi); 0x005bc5a8 mov r12, rax | r12 = rax; 0x005bc5ab mov rbx, rax | rbx = rax; 0x005bc5ae mov r14, qword [rbp + 0x50] | r14 = *((rbp + 0x50)); 0x005bc5b2 mov rax, qword [rbp + 0x58] | rax = *((rbp + 0x58)); 0x005bc5b6 test rax, rax | | if (rax != 0) { 0x005bc5b9 je 0x5bc5c5 | 0x005bc5bb mov rcx, qword [r13] | rcx = *(r13); 0x005bc5bf mov qword [rbx + 0x60], rcx | *((rbx + 0x60)) = rcx; 0x005bc5c3 jmp 0x5bc5f4 | | } else { 0x005bc5c5 mov rax, qword [rip + 0x35e574] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x005bc5cc test rax, rax | | if (rax == 0) { 0x005bc5cf jne 0x5bc5d6 | 0x005bc5d1 call 0x64efc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x005bc5d6 mov rcx, qword [r13] | rcx = *(r13); 0x005bc5da mov qword [rbx + 0x60], rcx | *((rbx + 0x60)) = rcx; 0x005bc5de test rax, rax | | if (rax != 0) { 0x005bc5e1 jne 0x5bc5f4 | goto label_0; | } 0x005bc5e3 mov rax, qword [rip + 0x35e556] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x005bc5ea test rax, rax | | if (rax != 0) { 0x005bc5ed jne 0x5bc5f4 | goto label_0; | } 0x005bc5ef call 0x64efc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x005bc5f4 mov qword [rbx + 0x40], rax | *((rbx + 0x40)) = rax; 0x005bc5f8 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x005bc5fb movups xmmword [rbx + 0x48], xmm0 | __asm ("movups xmmword [rbx + 0x48], xmm0"); 0x005bc5ff add r12, 0x10 | r12 += 0x10; 0x005bc603 mov rdi, r12 | 0x005bc606 mov rsi, r15 | 0x005bc609 call 0x651f80 | BloombergLP::bslstl::Function_Rep::copyInit(BloombergLP::bslstl::Function_Repconst&) (r12, r15); 0x005bc60e mov rdi, rbx | 0x005bc611 call 0x64a590 | BloombergLP::bdlcc::SkipList_Control::incrementRefCount() (rbx); 0x005bc616 mov qword [rbx + 0x68], 0 | *((rbx + 0x68)) = 0; 0x005bc61e mov rax, rbx | rax = rbx; 0x005bc621 add rsp, 8 | 0x005bc625 pop rbx | 0x005bc626 pop r12 | 0x005bc628 pop r13 | 0x005bc62a pop r14 | 0x005bc62c pop r15 | 0x005bc62e pop rbp | 0x005bc62f ret | return rax; | }