; assembly | /* r2dec pseudo code output */ | /* bdlcc_skiplist.t/none @ 0x64a650 */ | #include | ; (fcn) method.BloombergLP::bdlcc::SkipList_PoolManager.SkipList_PoolManager_int__int__BloombergLP::bslma::Allocator_ () | uint64_t method_BloombergLP::bdlcc::SkipList_PoolManager_SkipList_PoolManager_int_int_BloombergLP::bslma::Allocator_ (uint32_t arg4, int64_t arg3, int64_t arg2, uint32_t arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlcc::SkipList_PoolManager::SkipList_PoolManager(int*, int, BloombergLP::bslma::Allocator*) */ 0x0064a650 push rbp | 0x0064a651 push r15 | 0x0064a653 push r14 | 0x0064a655 push rbx | 0x0064a656 push rax | 0x0064a657 mov r15d, edx | r15d = edx; 0x0064a65a mov r14, rsi | r14 = rsi; 0x0064a65d mov rbx, rdi | rbx = rdi; 0x0064a660 mov qword [rdi], 0 | *(rdi) = 0; 0x0064a667 test rcx, rcx | | if (rcx == 0) { 0x0064a66a jne 0x64a680 | 0x0064a66c mov rcx, qword [rip + 0x2d04cd] | rcx = BloombergLP::bslma::Default::s_defaultAllocator; 0x0064a673 test rcx, rcx | | if (rcx != 0) { 0x0064a676 jne 0x64a680 | goto label_0; | } 0x0064a678 call 0x64efc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0064a67d mov rcx, rax | rcx = rax; | } | label_0: 0x0064a680 mov qword [rbx + 8], rcx | *((rbx + 8)) = rcx; 0x0064a684 lea rdi, [rbx + 0x10] | rdi = rbx + 0x10; 0x0064a688 xor ebp, ebp | ebp = 0; 0x0064a68a xor esi, esi | esi = 0; 0x0064a68c call 0x404cc0 | eax = pthread_mutex_init (); 0x0064a691 xor eax, eax | eax = 0; 0x0064a693 xchg qword [rbx + 0x38], rax | tmp_0 = rbx + 0x38; | rbx + 0x38 = rax; | rax = tmp_0; 0x0064a697 xor eax, eax | eax = 0; 0x0064a699 xchg qword [rbx + 0x50], rax | tmp_1 = rbx + 0x50; | rbx + 0x50 = rax; | rax = tmp_1; 0x0064a69d xor eax, eax | eax = 0; 0x0064a69f xchg qword [rbx + 0x68], rax | tmp_2 = rbx + 0x68; | rbx + 0x68 = rax; | rax = tmp_2; 0x0064a6a3 xor eax, eax | eax = 0; 0x0064a6a5 xchg qword [rbx + 0x80], rax | tmp_3 = rbx + 0x80; | rbx + 0x80 = rax; | rax = tmp_3; 0x0064a6ac xor eax, eax | eax = 0; 0x0064a6ae xchg qword [rbx + 0x98], rax | tmp_4 = rbx + 0x98; | rbx + 0x98 = rax; | rax = tmp_4; 0x0064a6b5 xor eax, eax | eax = 0; 0x0064a6b7 xchg qword [rbx + 0xb0], rax | tmp_5 = rbx + 0xb0; | rbx + 0xb0 = rax; | rax = tmp_5; 0x0064a6be xor eax, eax | eax = 0; 0x0064a6c0 xchg qword [rbx + 0xc8], rax | tmp_6 = rbx + 0xc8; | rbx + 0xc8 = rax; | rax = tmp_6; 0x0064a6c7 xor eax, eax | eax = 0; 0x0064a6c9 xchg qword [rbx + 0xe0], rax | tmp_7 = rbx + 0xe0; | rbx + 0xe0 = rax; | rax = tmp_7; 0x0064a6d0 xor eax, eax | eax = 0; 0x0064a6d2 xchg qword [rbx + 0xf8], rax | tmp_8 = rbx + 0xf8; | rbx + 0xf8 = rax; | rax = tmp_8; 0x0064a6d9 xor eax, eax | eax = 0; 0x0064a6db xchg qword [rbx + 0x110], rax | tmp_9 = rbx + 0x110; | rbx + 0x110 = rax; | rax = tmp_9; 0x0064a6e2 xor eax, eax | eax = 0; 0x0064a6e4 xchg qword [rbx + 0x128], rax | tmp_10 = rbx + 0x128; | rbx + 0x128 = rax; | rax = tmp_10; 0x0064a6eb xor eax, eax | eax = 0; 0x0064a6ed xchg qword [rbx + 0x140], rax | tmp_11 = rbx + 0x140; | rbx + 0x140 = rax; | rax = tmp_11; 0x0064a6f4 xor eax, eax | eax = 0; 0x0064a6f6 xchg qword [rbx + 0x158], rax | tmp_12 = rbx + 0x158; | rbx + 0x158 = rax; | rax = tmp_12; 0x0064a6fd xor eax, eax | eax = 0; 0x0064a6ff xchg qword [rbx + 0x170], rax | tmp_13 = rbx + 0x170; | rbx + 0x170 = rax; | rax = tmp_13; 0x0064a706 xor eax, eax | eax = 0; 0x0064a708 xchg qword [rbx + 0x188], rax | tmp_14 = rbx + 0x188; | rbx + 0x188 = rax; | rax = tmp_14; 0x0064a70f xor eax, eax | eax = 0; 0x0064a711 xchg qword [rbx + 0x1a0], rax | tmp_15 = rbx + 0x1a0; | rbx + 0x1a0 = rax; | rax = tmp_15; 0x0064a718 xor eax, eax | eax = 0; 0x0064a71a xchg qword [rbx + 0x1b8], rax | tmp_16 = rbx + 0x1b8; | rbx + 0x1b8 = rax; | rax = tmp_16; 0x0064a721 xor eax, eax | eax = 0; 0x0064a723 xchg qword [rbx + 0x1d0], rax | tmp_17 = rbx + 0x1d0; | rbx + 0x1d0 = rax; | rax = tmp_17; 0x0064a72a xor eax, eax | eax = 0; 0x0064a72c xchg qword [rbx + 0x1e8], rax | tmp_18 = rbx + 0x1e8; | rbx + 0x1e8 = rax; | rax = tmp_18; 0x0064a733 xor eax, eax | eax = 0; 0x0064a735 xchg qword [rbx + 0x200], rax | tmp_19 = rbx + 0x200; | rbx + 0x200 = rax; | rax = tmp_19; 0x0064a73c xor eax, eax | eax = 0; 0x0064a73e xchg qword [rbx + 0x218], rax | tmp_20 = rbx + 0x218; | rbx + 0x218 = rax; | rax = tmp_20; 0x0064a745 xor eax, eax | eax = 0; 0x0064a747 xchg qword [rbx + 0x230], rax | tmp_21 = rbx + 0x230; | rbx + 0x230 = rax; | rax = tmp_21; 0x0064a74e xor eax, eax | eax = 0; 0x0064a750 xchg qword [rbx + 0x248], rax | tmp_22 = rbx + 0x248; | rbx + 0x248 = rax; | rax = tmp_22; 0x0064a757 xor eax, eax | eax = 0; 0x0064a759 xchg qword [rbx + 0x260], rax | tmp_23 = rbx + 0x260; | rbx + 0x260 = rax; | rax = tmp_23; 0x0064a760 xor eax, eax | eax = 0; 0x0064a762 xchg qword [rbx + 0x278], rax | tmp_24 = rbx + 0x278; | rbx + 0x278 = rax; | rax = tmp_24; 0x0064a769 xor eax, eax | eax = 0; 0x0064a76b xchg qword [rbx + 0x290], rax | tmp_25 = rbx + 0x290; | rbx + 0x290 = rax; | rax = tmp_25; 0x0064a772 xor eax, eax | eax = 0; 0x0064a774 xchg qword [rbx + 0x2a8], rax | tmp_26 = rbx + 0x2a8; | rbx + 0x2a8 = rax; | rax = tmp_26; 0x0064a77b xor eax, eax | eax = 0; 0x0064a77d xchg qword [rbx + 0x2c0], rax | tmp_27 = rbx + 0x2c0; | rbx + 0x2c0 = rax; | rax = tmp_27; 0x0064a784 xor eax, eax | eax = 0; 0x0064a786 xchg qword [rbx + 0x2d8], rax | tmp_28 = rbx + 0x2d8; | rbx + 0x2d8 = rax; | rax = tmp_28; 0x0064a78d xor eax, eax | eax = 0; 0x0064a78f xchg qword [rbx + 0x2f0], rax | tmp_29 = rbx + 0x2f0; | rbx + 0x2f0 = rax; | rax = tmp_29; 0x0064a796 xor eax, eax | eax = 0; 0x0064a798 xchg qword [rbx + 0x308], rax | tmp_30 = rbx + 0x308; | rbx + 0x308 = rax; | rax = tmp_30; 0x0064a79f xchg qword [rbx + 0x320], rbp | tmp_31 = rbx + 0x320; | rbx + 0x320 = rbp; | rbp = tmp_31; 0x0064a7a6 test r15d, r15d | | if (r15d <= 0) { 0x0064a7a9 jle 0x64a832 | goto label_1; | } 0x0064a7af mov ecx, r15d | ecx = r15d; 0x0064a7b2 cmp r15d, 1 | | if (r15d == 1) { 0x0064a7b6 jne 0x64a7bc | 0x0064a7b8 xor eax, eax | eax = 0; 0x0064a7ba jmp 0x64a80e | goto label_2; | } 0x0064a7bc mov edx, ecx | edx = ecx; 0x0064a7be and edx, 0xfffffffe | edx &= 0xfffffffe; 0x0064a7c1 lea rsi, [rbx + 0x60] | rsi = rbx + 0x60; 0x0064a7c5 xor eax, eax | eax = 0; 0x0064a7c7 nop word [rax + rax] | | do { 0x0064a7d0 mov edi, dword [r14 + rax*4] | edi = *((r14 + rax*4)); 0x0064a7d4 xor ebp, ebp | ebp = 0; 0x0064a7d6 xchg qword [rsi - 0x28], rbp | tmp_32 = rsi - 0x28; | rsi - 0x28 = rbp; | rbp = tmp_32; 0x0064a7da mov dword [rsi - 0x20], edi | *((rsi - 0x20)) = edi; 0x0064a7dd mov dword [rsi - 0x1c], 1 | *((rsi - 0x1c)) = 1; 0x0064a7e4 mov dword [rsi - 0x18], eax | *((rsi - 0x18)) = eax; 0x0064a7e7 mov edi, dword [r14 + rax*4 + 4] | edi = *((r14 + rax*4 + 4)); 0x0064a7ec xor ebp, ebp | ebp = 0; 0x0064a7ee xchg qword [rsi - 0x10], rbp | tmp_33 = rsi - 0x10; | rsi - 0x10 = rbp; | rbp = tmp_33; 0x0064a7f2 mov dword [rsi - 8], edi | *((rsi - 8)) = edi; 0x0064a7f5 mov dword [rsi - 4], 1 | *((rsi - 4)) = 1; 0x0064a7fc lea edi, [rax + 1] | edi = rax + 1; 0x0064a7ff mov dword [rsi], edi | *(rsi) = edi; 0x0064a801 add rax, 2 | rax += 2; 0x0064a805 add rsi, 0x30 | rsi += 0x30; 0x0064a809 cmp rdx, rax | 0x0064a80c jne 0x64a7d0 | | } while (rdx != rax); | label_2: 0x0064a80e test cl, 1 | | if ((cl & 1) != 0) { 0x0064a811 je 0x64a832 | 0x0064a813 lea rcx, [rax + rax*2] | rcx = rax * 3; 0x0064a817 mov edx, dword [r14 + rax*4] | edx = *((r14 + rax*4)); 0x0064a81b xor esi, esi | esi = 0; 0x0064a81d xchg qword [rbx + rcx*8 + 0x38], rsi | tmp_34 = rbx + rcx*8 + 0x38; | rbx + rcx*8 + 0x38 = rsi; | rsi = tmp_34; 0x0064a822 mov dword [rbx + rcx*8 + 0x40], edx | *((rbx + rcx*8 + 0x40)) = edx; 0x0064a826 mov dword [rbx + rcx*8 + 0x44], 1 | *((rbx + rcx*8 + 0x44)) = 1; 0x0064a82e mov dword [rbx + rcx*8 + 0x48], eax | *((rbx + rcx*8 + 0x48)) = eax; | } | label_1: 0x0064a832 add rsp, 8 | 0x0064a836 pop rbx | 0x0064a837 pop r14 | 0x0064a839 pop r15 | 0x0064a83b pop rbp | 0x0064a83c ret | return rax; | }