; assembly | /* r2dec pseudo code output */ | /* bdlcc_skiplist.t/assume @ 0x649cb0 */ | #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_ (int64_t arg4, int64_t arg3, int64_t arg2, int64_t arg1) { | rcx = arg4; | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlcc::SkipList_PoolManager::SkipList_PoolManager(int*, int, BloombergLP::bslma::Allocator*) */ 0x00649cb0 push rbp | 0x00649cb1 push r15 | 0x00649cb3 push r14 | 0x00649cb5 push rbx | 0x00649cb6 push rax | 0x00649cb7 mov r15d, edx | r15d = edx; 0x00649cba mov r14, rsi | r14 = rsi; 0x00649cbd mov rbx, rdi | rbx = rdi; 0x00649cc0 mov qword [rdi], 0 | *(rdi) = 0; 0x00649cc7 test rcx, rcx | | if (rcx == 0) { 0x00649cca jne 0x649ce0 | 0x00649ccc mov rcx, qword [rip + 0x2d0e6d] | rcx = BloombergLP::bslma::Default::s_defaultAllocator; 0x00649cd3 test rcx, rcx | | if (rcx != 0) { 0x00649cd6 jne 0x649ce0 | goto label_0; | } 0x00649cd8 call 0x64e700 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00649cdd mov rcx, rax | rcx = rax; | } | label_0: 0x00649ce0 mov qword [rbx + 8], rcx | *((rbx + 8)) = rcx; 0x00649ce4 lea rdi, [rbx + 0x10] | rdi = rbx + 0x10; 0x00649ce8 xor ebp, ebp | ebp = 0; 0x00649cea xor esi, esi | esi = 0; 0x00649cec call 0x404cc0 | eax = pthread_mutex_init (); 0x00649cf1 xor eax, eax | eax = 0; 0x00649cf3 xchg qword [rbx + 0x38], rax | tmp_0 = rbx + 0x38; | rbx + 0x38 = rax; | rax = tmp_0; 0x00649cf7 xor eax, eax | eax = 0; 0x00649cf9 xchg qword [rbx + 0x50], rax | tmp_1 = rbx + 0x50; | rbx + 0x50 = rax; | rax = tmp_1; 0x00649cfd xor eax, eax | eax = 0; 0x00649cff xchg qword [rbx + 0x68], rax | tmp_2 = rbx + 0x68; | rbx + 0x68 = rax; | rax = tmp_2; 0x00649d03 xor eax, eax | eax = 0; 0x00649d05 xchg qword [rbx + 0x80], rax | tmp_3 = rbx + 0x80; | rbx + 0x80 = rax; | rax = tmp_3; 0x00649d0c xor eax, eax | eax = 0; 0x00649d0e xchg qword [rbx + 0x98], rax | tmp_4 = rbx + 0x98; | rbx + 0x98 = rax; | rax = tmp_4; 0x00649d15 xor eax, eax | eax = 0; 0x00649d17 xchg qword [rbx + 0xb0], rax | tmp_5 = rbx + 0xb0; | rbx + 0xb0 = rax; | rax = tmp_5; 0x00649d1e xor eax, eax | eax = 0; 0x00649d20 xchg qword [rbx + 0xc8], rax | tmp_6 = rbx + 0xc8; | rbx + 0xc8 = rax; | rax = tmp_6; 0x00649d27 xor eax, eax | eax = 0; 0x00649d29 xchg qword [rbx + 0xe0], rax | tmp_7 = rbx + 0xe0; | rbx + 0xe0 = rax; | rax = tmp_7; 0x00649d30 xor eax, eax | eax = 0; 0x00649d32 xchg qword [rbx + 0xf8], rax | tmp_8 = rbx + 0xf8; | rbx + 0xf8 = rax; | rax = tmp_8; 0x00649d39 xor eax, eax | eax = 0; 0x00649d3b xchg qword [rbx + 0x110], rax | tmp_9 = rbx + 0x110; | rbx + 0x110 = rax; | rax = tmp_9; 0x00649d42 xor eax, eax | eax = 0; 0x00649d44 xchg qword [rbx + 0x128], rax | tmp_10 = rbx + 0x128; | rbx + 0x128 = rax; | rax = tmp_10; 0x00649d4b xor eax, eax | eax = 0; 0x00649d4d xchg qword [rbx + 0x140], rax | tmp_11 = rbx + 0x140; | rbx + 0x140 = rax; | rax = tmp_11; 0x00649d54 xor eax, eax | eax = 0; 0x00649d56 xchg qword [rbx + 0x158], rax | tmp_12 = rbx + 0x158; | rbx + 0x158 = rax; | rax = tmp_12; 0x00649d5d xor eax, eax | eax = 0; 0x00649d5f xchg qword [rbx + 0x170], rax | tmp_13 = rbx + 0x170; | rbx + 0x170 = rax; | rax = tmp_13; 0x00649d66 xor eax, eax | eax = 0; 0x00649d68 xchg qword [rbx + 0x188], rax | tmp_14 = rbx + 0x188; | rbx + 0x188 = rax; | rax = tmp_14; 0x00649d6f xor eax, eax | eax = 0; 0x00649d71 xchg qword [rbx + 0x1a0], rax | tmp_15 = rbx + 0x1a0; | rbx + 0x1a0 = rax; | rax = tmp_15; 0x00649d78 xor eax, eax | eax = 0; 0x00649d7a xchg qword [rbx + 0x1b8], rax | tmp_16 = rbx + 0x1b8; | rbx + 0x1b8 = rax; | rax = tmp_16; 0x00649d81 xor eax, eax | eax = 0; 0x00649d83 xchg qword [rbx + 0x1d0], rax | tmp_17 = rbx + 0x1d0; | rbx + 0x1d0 = rax; | rax = tmp_17; 0x00649d8a xor eax, eax | eax = 0; 0x00649d8c xchg qword [rbx + 0x1e8], rax | tmp_18 = rbx + 0x1e8; | rbx + 0x1e8 = rax; | rax = tmp_18; 0x00649d93 xor eax, eax | eax = 0; 0x00649d95 xchg qword [rbx + 0x200], rax | tmp_19 = rbx + 0x200; | rbx + 0x200 = rax; | rax = tmp_19; 0x00649d9c xor eax, eax | eax = 0; 0x00649d9e xchg qword [rbx + 0x218], rax | tmp_20 = rbx + 0x218; | rbx + 0x218 = rax; | rax = tmp_20; 0x00649da5 xor eax, eax | eax = 0; 0x00649da7 xchg qword [rbx + 0x230], rax | tmp_21 = rbx + 0x230; | rbx + 0x230 = rax; | rax = tmp_21; 0x00649dae xor eax, eax | eax = 0; 0x00649db0 xchg qword [rbx + 0x248], rax | tmp_22 = rbx + 0x248; | rbx + 0x248 = rax; | rax = tmp_22; 0x00649db7 xor eax, eax | eax = 0; 0x00649db9 xchg qword [rbx + 0x260], rax | tmp_23 = rbx + 0x260; | rbx + 0x260 = rax; | rax = tmp_23; 0x00649dc0 xor eax, eax | eax = 0; 0x00649dc2 xchg qword [rbx + 0x278], rax | tmp_24 = rbx + 0x278; | rbx + 0x278 = rax; | rax = tmp_24; 0x00649dc9 xor eax, eax | eax = 0; 0x00649dcb xchg qword [rbx + 0x290], rax | tmp_25 = rbx + 0x290; | rbx + 0x290 = rax; | rax = tmp_25; 0x00649dd2 xor eax, eax | eax = 0; 0x00649dd4 xchg qword [rbx + 0x2a8], rax | tmp_26 = rbx + 0x2a8; | rbx + 0x2a8 = rax; | rax = tmp_26; 0x00649ddb xor eax, eax | eax = 0; 0x00649ddd xchg qword [rbx + 0x2c0], rax | tmp_27 = rbx + 0x2c0; | rbx + 0x2c0 = rax; | rax = tmp_27; 0x00649de4 xor eax, eax | eax = 0; 0x00649de6 xchg qword [rbx + 0x2d8], rax | tmp_28 = rbx + 0x2d8; | rbx + 0x2d8 = rax; | rax = tmp_28; 0x00649ded xor eax, eax | eax = 0; 0x00649def xchg qword [rbx + 0x2f0], rax | tmp_29 = rbx + 0x2f0; | rbx + 0x2f0 = rax; | rax = tmp_29; 0x00649df6 xor eax, eax | eax = 0; 0x00649df8 xchg qword [rbx + 0x308], rax | tmp_30 = rbx + 0x308; | rbx + 0x308 = rax; | rax = tmp_30; 0x00649dff xor eax, eax | eax = 0; 0x00649e01 xchg qword [rbx + 0x320], rax | tmp_31 = rbx + 0x320; | rbx + 0x320 = rax; | rax = tmp_31; 0x00649e08 mov eax, r15d | eax = r15d; 0x00649e0b cmp r15d, 1 | | if (r15d == 1) { 0x00649e0f je 0x649e5e | goto label_1; | } 0x00649e11 mov ecx, eax | ecx = eax; 0x00649e13 and ecx, 0x3e | ecx &= 0x3e; 0x00649e16 lea rdx, [rbx + 0x60] | rdx = rbx + 0x60; 0x00649e1a xor ebp, ebp | ebp = 0; 0x00649e1c nop dword [rax] | | do { 0x00649e20 mov esi, dword [r14 + rbp*4] | esi = *((r14 + rbp*4)); 0x00649e24 xor edi, edi | edi = 0; 0x00649e26 xchg qword [rdx - 0x28], rdi | tmp_32 = rdx - 0x28; | rdx - 0x28 = rdi; | rdi = tmp_32; 0x00649e2a mov dword [rdx - 0x20], esi | *((rdx - 0x20)) = esi; 0x00649e2d mov dword [rdx - 0x1c], 1 | *((rdx - 0x1c)) = 1; 0x00649e34 mov dword [rdx - 0x18], ebp | *((rdx - 0x18)) = ebp; 0x00649e37 mov esi, dword [r14 + rbp*4 + 4] | esi = *((r14 + rbp*4 + 4)); 0x00649e3c xor edi, edi | edi = 0; 0x00649e3e xchg qword [rdx - 0x10], rdi | tmp_33 = rdx - 0x10; | rdx - 0x10 = rdi; | rdi = tmp_33; 0x00649e42 mov dword [rdx - 8], esi | *((rdx - 8)) = esi; 0x00649e45 mov dword [rdx - 4], 1 | *((rdx - 4)) = 1; 0x00649e4c lea esi, [rbp + 1] | esi = rbp + 1; 0x00649e4f mov dword [rdx], esi | *(rdx) = esi; 0x00649e51 add rbp, 2 | rbp += 2; 0x00649e55 add rdx, 0x30 | rdx += 0x30; 0x00649e59 cmp rcx, rbp | 0x00649e5c jne 0x649e20 | | } while (rcx != rbp); | label_1: 0x00649e5e test al, 1 | | if ((al & 1) != 0) { 0x00649e60 je 0x649e82 | 0x00649e62 lea rax, [rbp + rbp*2] | rax = rbp + rbp*2; 0x00649e67 mov ecx, dword [r14 + rbp*4] | ecx = *((r14 + rbp*4)); 0x00649e6b xor edx, edx | edx = 0; 0x00649e6d xchg qword [rbx + rax*8 + 0x38], rdx | tmp_34 = rbx + rax*8 + 0x38; | rbx + rax*8 + 0x38 = rdx; | rdx = tmp_34; 0x00649e72 mov dword [rbx + rax*8 + 0x40], ecx | *((rbx + rax*8 + 0x40)) = ecx; 0x00649e76 mov dword [rbx + rax*8 + 0x44], 1 | *((rbx + rax*8 + 0x44)) = 1; 0x00649e7e mov dword [rbx + rax*8 + 0x48], ebp | *((rbx + rax*8 + 0x48)) = ebp; | } 0x00649e82 add rsp, 8 | 0x00649e86 pop rbx | 0x00649e87 pop r14 | 0x00649e89 pop r15 | 0x00649e8b pop rbp | 0x00649e8c ret | return rax; | }