; assembly | /* r2dec pseudo code output */ | /* bdlcc_skiplist.t/assume @ 0x64a120 */ | #include | ; (fcn) method.BloombergLP::bdlcc::SkipList_PoolUtil.createPoolManager_int__int__BloombergLP::bslma::Allocator_ () | int64_t method_BloombergLP::bdlcc::SkipList_PoolUtil_createPoolManager_int_int_BloombergLP::bslma::Allocator_ (char * arg3, int64_t arg2, char * arg1) { | rdx = arg3; | rsi = arg2; | rdi = arg1; | /* BloombergLP::bdlcc::SkipList_PoolUtil::createPoolManager(int*, int, BloombergLP::bslma::Allocator*) */ 0x0064a120 push rbp | 0x0064a121 push r15 | 0x0064a123 push r14 | 0x0064a125 push rbx | 0x0064a126 push rax | 0x0064a127 mov rbp, rdx | 0x0064a12a mov r15d, esi | r15d = esi; 0x0064a12d mov r14, rdi | r14 = rdi; 0x0064a130 mov rax, qword [rdx] | rax = *(rdx); 0x0064a133 mov esi, 0x338 | esi = 0x338; 0x0064a138 mov rdi, rdx | rdi = rdx; 0x0064a13b call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)(void, void, void, void) (rax, rbx, r14, r15); 0x0064a13e mov rbx, rax | rbx = rax; 0x0064a141 mov qword [rax], 0 | *(rax) = 0; 0x0064a148 mov qword [rax + 8], rbp | *((rax + 8)) = rbp; 0x0064a14c lea rdi, [rax + 0x10] | rdi = rax + 0x10; 0x0064a150 xor ebp, ebp | ebp = 0; 0x0064a152 xor esi, esi | esi = 0; 0x0064a154 call 0x404cc0 | eax = pthread_mutex_init (); 0x0064a159 xor eax, eax | eax = 0; 0x0064a15b xchg qword [rbx + 0x38], rax | tmp_0 = rbx + 0x38; | rbx + 0x38 = rax; | rax = tmp_0; 0x0064a15f xor eax, eax | eax = 0; 0x0064a161 xchg qword [rbx + 0x50], rax | tmp_1 = rbx + 0x50; | rbx + 0x50 = rax; | rax = tmp_1; 0x0064a165 xor eax, eax | eax = 0; 0x0064a167 xchg qword [rbx + 0x68], rax | tmp_2 = rbx + 0x68; | rbx + 0x68 = rax; | rax = tmp_2; 0x0064a16b xor eax, eax | eax = 0; 0x0064a16d xchg qword [rbx + 0x80], rax | tmp_3 = rbx + 0x80; | rbx + 0x80 = rax; | rax = tmp_3; 0x0064a174 xor eax, eax | eax = 0; 0x0064a176 xchg qword [rbx + 0x98], rax | tmp_4 = rbx + 0x98; | rbx + 0x98 = rax; | rax = tmp_4; 0x0064a17d xor eax, eax | eax = 0; 0x0064a17f xchg qword [rbx + 0xb0], rax | tmp_5 = rbx + 0xb0; | rbx + 0xb0 = rax; | rax = tmp_5; 0x0064a186 xor eax, eax | eax = 0; 0x0064a188 xchg qword [rbx + 0xc8], rax | tmp_6 = rbx + 0xc8; | rbx + 0xc8 = rax; | rax = tmp_6; 0x0064a18f xor eax, eax | eax = 0; 0x0064a191 xchg qword [rbx + 0xe0], rax | tmp_7 = rbx + 0xe0; | rbx + 0xe0 = rax; | rax = tmp_7; 0x0064a198 xor eax, eax | eax = 0; 0x0064a19a xchg qword [rbx + 0xf8], rax | tmp_8 = rbx + 0xf8; | rbx + 0xf8 = rax; | rax = tmp_8; 0x0064a1a1 xor eax, eax | eax = 0; 0x0064a1a3 xchg qword [rbx + 0x110], rax | tmp_9 = rbx + 0x110; | rbx + 0x110 = rax; | rax = tmp_9; 0x0064a1aa xor eax, eax | eax = 0; 0x0064a1ac xchg qword [rbx + 0x128], rax | tmp_10 = rbx + 0x128; | rbx + 0x128 = rax; | rax = tmp_10; 0x0064a1b3 xor eax, eax | eax = 0; 0x0064a1b5 xchg qword [rbx + 0x140], rax | tmp_11 = rbx + 0x140; | rbx + 0x140 = rax; | rax = tmp_11; 0x0064a1bc xor eax, eax | eax = 0; 0x0064a1be xchg qword [rbx + 0x158], rax | tmp_12 = rbx + 0x158; | rbx + 0x158 = rax; | rax = tmp_12; 0x0064a1c5 xor eax, eax | eax = 0; 0x0064a1c7 xchg qword [rbx + 0x170], rax | tmp_13 = rbx + 0x170; | rbx + 0x170 = rax; | rax = tmp_13; 0x0064a1ce xor eax, eax | eax = 0; 0x0064a1d0 xchg qword [rbx + 0x188], rax | tmp_14 = rbx + 0x188; | rbx + 0x188 = rax; | rax = tmp_14; 0x0064a1d7 xor eax, eax | eax = 0; 0x0064a1d9 xchg qword [rbx + 0x1a0], rax | tmp_15 = rbx + 0x1a0; | rbx + 0x1a0 = rax; | rax = tmp_15; 0x0064a1e0 xor eax, eax | eax = 0; 0x0064a1e2 xchg qword [rbx + 0x1b8], rax | tmp_16 = rbx + 0x1b8; | rbx + 0x1b8 = rax; | rax = tmp_16; 0x0064a1e9 xor eax, eax | eax = 0; 0x0064a1eb xchg qword [rbx + 0x1d0], rax | tmp_17 = rbx + 0x1d0; | rbx + 0x1d0 = rax; | rax = tmp_17; 0x0064a1f2 xor eax, eax | eax = 0; 0x0064a1f4 xchg qword [rbx + 0x1e8], rax | tmp_18 = rbx + 0x1e8; | rbx + 0x1e8 = rax; | rax = tmp_18; 0x0064a1fb xor eax, eax | eax = 0; 0x0064a1fd xchg qword [rbx + 0x200], rax | tmp_19 = rbx + 0x200; | rbx + 0x200 = rax; | rax = tmp_19; 0x0064a204 xor eax, eax | eax = 0; 0x0064a206 xchg qword [rbx + 0x218], rax | tmp_20 = rbx + 0x218; | rbx + 0x218 = rax; | rax = tmp_20; 0x0064a20d xor eax, eax | eax = 0; 0x0064a20f xchg qword [rbx + 0x230], rax | tmp_21 = rbx + 0x230; | rbx + 0x230 = rax; | rax = tmp_21; 0x0064a216 xor eax, eax | eax = 0; 0x0064a218 xchg qword [rbx + 0x248], rax | tmp_22 = rbx + 0x248; | rbx + 0x248 = rax; | rax = tmp_22; 0x0064a21f xor eax, eax | eax = 0; 0x0064a221 xchg qword [rbx + 0x260], rax | tmp_23 = rbx + 0x260; | rbx + 0x260 = rax; | rax = tmp_23; 0x0064a228 xor eax, eax | eax = 0; 0x0064a22a xchg qword [rbx + 0x278], rax | tmp_24 = rbx + 0x278; | rbx + 0x278 = rax; | rax = tmp_24; 0x0064a231 xor eax, eax | eax = 0; 0x0064a233 xchg qword [rbx + 0x290], rax | tmp_25 = rbx + 0x290; | rbx + 0x290 = rax; | rax = tmp_25; 0x0064a23a xor eax, eax | eax = 0; 0x0064a23c xchg qword [rbx + 0x2a8], rax | tmp_26 = rbx + 0x2a8; | rbx + 0x2a8 = rax; | rax = tmp_26; 0x0064a243 xor eax, eax | eax = 0; 0x0064a245 xchg qword [rbx + 0x2c0], rax | tmp_27 = rbx + 0x2c0; | rbx + 0x2c0 = rax; | rax = tmp_27; 0x0064a24c xor eax, eax | eax = 0; 0x0064a24e xchg qword [rbx + 0x2d8], rax | tmp_28 = rbx + 0x2d8; | rbx + 0x2d8 = rax; | rax = tmp_28; 0x0064a255 xor eax, eax | eax = 0; 0x0064a257 xchg qword [rbx + 0x2f0], rax | tmp_29 = rbx + 0x2f0; | rbx + 0x2f0 = rax; | rax = tmp_29; 0x0064a25e xor eax, eax | eax = 0; 0x0064a260 xchg qword [rbx + 0x308], rax | tmp_30 = rbx + 0x308; | rbx + 0x308 = rax; | rax = tmp_30; 0x0064a267 xor eax, eax | eax = 0; 0x0064a269 xchg qword [rbx + 0x320], rax | tmp_31 = rbx + 0x320; | rbx + 0x320 = rax; | rax = tmp_31; 0x0064a270 mov eax, r15d | eax = r15d; 0x0064a273 cmp r15d, 1 | | if (r15d == 1) { 0x0064a277 je 0x64a2ce | goto label_0; | } 0x0064a279 mov ecx, eax | ecx = eax; 0x0064a27b and ecx, 0x3e | ecx &= 0x3e; 0x0064a27e lea rdx, [rbx + 0x60] | rdx = rbx + 0x60; 0x0064a282 xor ebp, ebp | ebp = 0; 0x0064a284 nop word cs:[rax + rax] | 0x0064a28e nop | | do { 0x0064a290 mov esi, dword [r14 + rbp*4] | esi = *((r14 + rbp*4)); 0x0064a294 xor edi, edi | edi = 0; 0x0064a296 xchg qword [rdx - 0x28], rdi | tmp_32 = rdx - 0x28; | rdx - 0x28 = rdi; | rdi = tmp_32; 0x0064a29a mov dword [rdx - 0x20], esi | *((rdx - 0x20)) = esi; 0x0064a29d mov dword [rdx - 0x1c], 1 | *((rdx - 0x1c)) = 1; 0x0064a2a4 mov dword [rdx - 0x18], ebp | *((rdx - 0x18)) = ebp; 0x0064a2a7 mov esi, dword [r14 + rbp*4 + 4] | esi = *((r14 + rbp*4 + 4)); 0x0064a2ac xor edi, edi | edi = 0; 0x0064a2ae xchg qword [rdx - 0x10], rdi | tmp_33 = rdx - 0x10; | rdx - 0x10 = rdi; | rdi = tmp_33; 0x0064a2b2 mov dword [rdx - 8], esi | *((rdx - 8)) = esi; 0x0064a2b5 mov dword [rdx - 4], 1 | *((rdx - 4)) = 1; 0x0064a2bc lea esi, [rbp + 1] | esi = rbp + 1; 0x0064a2bf mov dword [rdx], esi | *(rdx) = esi; 0x0064a2c1 add rbp, 2 | rbp += 2; 0x0064a2c5 add rdx, 0x30 | rdx += 0x30; 0x0064a2c9 cmp rcx, rbp | 0x0064a2cc jne 0x64a290 | | } while (rcx != rbp); | label_0: 0x0064a2ce test al, 1 | | if ((al & 1) != 0) { 0x0064a2d0 je 0x64a2f2 | 0x0064a2d2 lea rax, [rbp + rbp*2] | rax = rbp + rbp*2; 0x0064a2d7 mov ecx, dword [r14 + rbp*4] | ecx = *((r14 + rbp*4)); 0x0064a2db xor edx, edx | edx = 0; 0x0064a2dd xchg qword [rbx + rax*8 + 0x38], rdx | tmp_34 = rbx + rax*8 + 0x38; | rbx + rax*8 + 0x38 = rdx; | rdx = tmp_34; 0x0064a2e2 mov dword [rbx + rax*8 + 0x40], ecx | *((rbx + rax*8 + 0x40)) = ecx; 0x0064a2e6 mov dword [rbx + rax*8 + 0x44], 1 | *((rbx + rax*8 + 0x44)) = 1; 0x0064a2ee mov dword [rbx + rax*8 + 0x48], ebp | *((rbx + rax*8 + 0x48)) = ebp; | } 0x0064a2f2 mov rax, rbx | rax = rbx; 0x0064a2f5 add rsp, 8 | 0x0064a2f9 pop rbx | 0x0064a2fa pop r14 | 0x0064a2fc pop r15 | 0x0064a2fe pop rbp | 0x0064a2ff ret | return rax; | }