; assembly | /* r2dec pseudo code output */ | /* bdlcc_skiplist.t/assume @ 0x406120 */ | #include | ; (fcn) method.SKIPLIST_OLD_TEST_CASES_NAMEPSACE.run__ () | int64_t method_SKIPLIST_OLD_TEST_CASES_NAMEPSACE_run_ (void) { | int64_t var_8h; | int64_t var_10h; | uint32_t var_18h; | int64_t var_20h; | int64_t var_48h; | int64_t var_50h; | uint32_t var_58h; | char * var_60h; | int64_t var_68h; | int64_t var_70h; | int64_t var_78h; | int64_t var_80h; | int64_t var_88h; | int64_t var_90h; | int64_t var_98h; | int64_t var_a0h; | int64_t var_a8h; | int64_t var_b0h; | int64_t var_b8h; | int64_t var_c0h; | int64_t var_d0h; | int64_t var_e8h; | int64_t var_f0h; | int64_t var_f8h; | int64_t var_fch; | int64_t var_100h; | int64_t var_110h; | int64_t var_120h; | int64_t var_130h; | int64_t var_140h; | /* SKIPLIST_OLD_TEST_CASES_NAMEPSACE::run() */ 0x00406120 push rbp | 0x00406121 push r15 | 0x00406123 push r14 | 0x00406125 push r12 | 0x00406127 push rbx | 0x00406128 sub rsp, 0x150 | 0x0040612f cmp dword [rip + 0x5142a2], 0 | | if (*(obj.verbose) != 0) { 0x00406136 je 0x406267 | 0x0040613c mov rax, qword [rip + 0x5141e5] | rax = std::__1::cout; 0x00406143 mov esi, 0x91a328 | esi = std::__1::cout; 0x00406148 add rsi, qword [rax - 0x18] | rsi += *((rax - 0x18)); 0x0040614c lea rbx, [rsp + 0x60] | rbx = rsp + 0x60; 0x00406151 mov rdi, rbx | rdi = rbx; 0x00406154 call 0x405070 | std::_1::ios_base::getloc()const (); 0x00406159 mov esi, 0x91a270 | esi = obj.std::__1::ctype_char_::id; 0x0040615e mov rdi, rbx | rdi = rbx; 0x00406161 call 0x4051a0 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00406166 mov rcx, qword [rax] | rcx = *(rax); 0x00406169 mov rdi, rax | rdi = rax; 0x0040616c mov esi, 0xa | esi = 0xa; 0x00406171 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00406174 mov ebx, eax | ebx = eax; 0x00406176 lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x0040617b call 0x405240 | std::_1::locale::~locale() (); 0x00406180 movsx esi, bl | esi = (int32_t) bl; 0x00406183 mov edi, 0x91a328 | edi = std::__1::cout; 0x00406188 call 0x404e30 | std::_1::basic_ostream>::put(char) (); 0x0040618d mov edi, 0x91a328 | edi = std::__1::cout; 0x00406192 call 0x405040 | std::_1::basic_ostream>::flush() (); 0x00406197 mov edi, 0x91a328 | 0x0040619c mov esi, 0x67b0a5 | 0x004061a1 mov edx, 0x16 | 0x004061a6 call 0x5bce00 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, "The thread-safety test", 0x16); 0x004061ab mov rbx, rax | rbx = rax; 0x004061ae mov rax, qword [rax] | rax = *(rax); 0x004061b1 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x004061b5 add rsi, rbx | rsi += rbx; 0x004061b8 lea rbp, [rsp + 0x60] | rbp = rsp + 0x60; 0x004061bd mov rdi, rbp | rdi = rbp; 0x004061c0 call 0x405070 | std::_1::ios_base::getloc()const (); 0x004061c5 mov esi, 0x91a270 | esi = obj.std::__1::ctype_char_::id; 0x004061ca mov rdi, rbp | rdi = rbp; 0x004061cd call 0x4051a0 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x004061d2 mov rcx, qword [rax] | rcx = *(rax); 0x004061d5 mov rdi, rax | rdi = rax; 0x004061d8 mov esi, 0xa | esi = 0xa; 0x004061dd call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x004061e0 mov ebp, eax | 0x004061e2 lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x004061e7 call 0x405240 | std::_1::locale::~locale() (); 0x004061ec movsx esi, bpl | esi = (int32_t) bpl; 0x004061f0 mov rdi, rbx | rdi = rbx; 0x004061f3 call 0x404e30 | std::_1::basic_ostream>::put(char) (); 0x004061f8 mov rdi, rbx | rdi = rbx; 0x004061fb call 0x405040 | std::_1::basic_ostream>::flush() (); 0x00406200 mov esi, 0x67b4be | 0x00406205 mov edx, 0x16 | 0x0040620a mov rdi, rbx | 0x0040620d call 0x5bce00 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rbx, 0x67b4be, 0x16); 0x00406212 mov rbx, rax | rbx = rax; 0x00406215 mov rax, qword [rax] | rax = *(rax); 0x00406218 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x0040621c add rsi, rbx | rsi += rbx; 0x0040621f lea rbp, [rsp + 0x60] | rbp = rsp + 0x60; 0x00406224 mov rdi, rbp | rdi = rbp; 0x00406227 call 0x405070 | std::_1::ios_base::getloc()const (); 0x0040622c mov esi, 0x91a270 | esi = obj.std::__1::ctype_char_::id; 0x00406231 mov rdi, rbp | rdi = rbp; 0x00406234 call 0x4051a0 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00406239 mov rcx, qword [rax] | rcx = *(rax); 0x0040623c mov rdi, rax | rdi = rax; 0x0040623f mov esi, 0xa | esi = 0xa; 0x00406244 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00406247 mov ebp, eax | 0x00406249 lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x0040624e call 0x405240 | std::_1::locale::~locale() (); 0x00406253 movsx esi, bpl | esi = (int32_t) bpl; 0x00406257 mov rdi, rbx | rdi = rbx; 0x0040625a call 0x404e30 | std::_1::basic_ostream>::put(char) (); 0x0040625f mov rdi, rbx | rdi = rbx; 0x00406262 call 0x405040 | std::_1::basic_ostream>::flush() (); | } 0x00406267 movaps xmm0, xmmword [rip + 0x2721f2] | xmm0 = *(0x00678460); 0x0040626e movaps xmmword [rsp + 0x140], xmm0 | *((rsp + 0x140)) = xmm0; 0x00406276 movaps xmm0, xmmword [rip + 0x2721d3] | xmm0 = *(0x00678450); 0x0040627d movaps xmmword [rsp + 0x130], xmm0 | *((rsp + 0x130)) = xmm0; 0x00406285 movaps xmm0, xmmword [rip + 0x2721b4] | xmm0 = *(0x00678440); 0x0040628c movaps xmmword [rsp + 0x120], xmm0 | *((rsp + 0x120)) = xmm0; 0x00406294 movaps xmm0, xmmword [rip + 0x272195] | xmm0 = *(0x00678430); 0x0040629b movaps xmmword [rsp + 0x110], xmm0 | *((rsp + 0x110)) = xmm0; 0x004062a3 movaps xmm0, xmmword [rip + 0x272176] | xmm0 = *(0x00678420); 0x004062aa movaps xmmword [rsp + 0x100], xmm0 | *((rsp + 0x100)) = xmm0; 0x004062b2 mov rdi, rsp | 0x004062b5 call 0x649c40 | BloombergLP::bdlcc::SkipList_RandomLevelGenerator::SkipList_RandomLevelGenerator() (rsp); 0x004062ba mov dword [rsp + 8], 0 | *((rsp + 8)) = 0; 0x004062c2 lea r14, [rsp + 0x20] | r14 = rsp + 0x20; 0x004062c7 mov rdi, r14 | rdi = r14; 0x004062ca xor esi, esi | esi = 0; 0x004062cc call 0x404cc0 | pthread_mutex_init (); 0x004062d1 mov dword [rsp + 0x48], 0 | *((rsp + 0x48)) = 0; 0x004062d9 mov qword [rsp + 0x50], 0 | *((rsp + 0x50)) = 0; 0x004062e2 mov rdx, qword [rip + 0x514857] | rdx = BloombergLP::bslma::Default::s_defaultAllocator; 0x004062e9 test rdx, rdx | | if (rdx == 0) { 0x004062ec jne 0x4062f6 | 0x004062ee call 0x64e700 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004062f3 mov rdx, rax | | } 0x004062f6 mov qword [rsp + 0x58], rdx | *((rsp + 0x58)) = rdx; 0x004062fb movaps xmm0, xmmword [rip + 0x273f2e] | xmm0 = " 0@P`p"; 0x00406302 movaps xmmword [rsp + 0x60], xmm0 | *((rsp + 0x60)) = xmm0; 0x00406307 movaps xmm0, xmmword [rip + 0x273f32] | xmm0 = *(0x0067a240); 0x0040630e movaps xmmword [rsp + 0x70], xmm0 | *((rsp + 0x70)) = xmm0; 0x00406313 movaps xmm0, xmmword [rip + 0x273f36] | xmm0 = *(0x0067a250); 0x0040631a movaps xmmword [rsp + 0x80], xmm0 | *((rsp + 0x80)) = xmm0; 0x00406322 movaps xmm0, xmmword [rip + 0x273f37] | xmm0 = *(0x0067a260); 0x00406329 movaps xmmword [rsp + 0x90], xmm0 | *((rsp + 0x90)) = xmm0; 0x00406331 movaps xmm0, xmmword [rip + 0x273f38] | xmm0 = *(0x0067a270); 0x00406338 movaps xmmword [rsp + 0xa0], xmm0 | *((rsp + 0xa0)) = xmm0; 0x00406340 movaps xmm0, xmmword [rip + 0x273f39] | xmm0 = *(0x0067a280); 0x00406347 movaps xmmword [rsp + 0xb0], xmm0 | *((rsp + 0xb0)) = xmm0; 0x0040634f movaps xmm0, xmmword [rip + 0x273f3a] | xmm0 = *(0x0067a290); 0x00406356 movaps xmmword [rsp + 0xc0], xmm0 | *((rsp + 0xc0)) = xmm0; 0x0040635e movaps xmm0, xmmword [rip + 0x273f3b] | xmm0 = *(0x0067a2a0); 0x00406365 movaps xmmword [rsp + 0xd0], xmm0 | *((rsp + 0xd0)) = xmm0; 0x0040636d lea rbx, [rsp + 0x60] | rbx = rsp + 0x60; 0x00406372 mov rdi, rbx | 0x00406375 mov esi, 0x20 | 0x0040637a call 0x64a120 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::createPoolManager(int*,int,BloombergLP::bslma::Allocator*) (rbx, 0x20, rax); 0x0040637f mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00406384 mov rdi, rax | 0x00406387 mov esi, 0x1f | 0x0040638c call 0x64a060 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (rax, 0x1f); 0x00406391 mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x00406396 mov rdi, qword [rsp + 0x50] | 0x0040639b mov esi, 0x1f | 0x004063a0 call 0x64a060 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rsp + 0x50)), 0x1f); 0x004063a5 mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x004063aa xor ecx, ecx | ecx = 0; 0x004063ac nop dword [rax] | | do { 0x004063b0 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x004063b5 mov qword [rax + rcx + 0x18], 0 | *((rax + rcx + 0x18)) = 0; 0x004063be mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x004063c3 mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); 0x004063c8 mov qword [rax + rcx + 0x10], rdx | *((rax + rcx + 0x10)) = rdx; 0x004063cd mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x004063d2 mov rdx, qword [rsp + 0x18] | rdx = *((rsp + 0x18)); 0x004063d7 mov qword [rdx + rcx + 0x18], rax | *((rdx + rcx + 0x18)) = rax; 0x004063dc mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x004063e1 mov qword [rax + rcx + 0x10], 0 | *((rax + rcx + 0x10)) = 0; 0x004063ea add rcx, 0x10 | rcx += 0x10; 0x004063ee cmp rcx, 0x200 | 0x004063f5 jne 0x4063b0 | | } while (rcx != 0x200); 0x004063f7 mov esi, dword [rsp + 8] | 0x004063fb lea eax, [rsi + 1] | eax = rsi + 1; 0x004063fe sar esi, 0x1f | esi >>= 0x1f; 0x00406401 and esi, eax | esi &= eax; 0x00406403 mov rdi, qword [rsp + 0x50] | 0x00406408 call 0x64a060 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rsp + 0x50)), *((rsp + 8))); 0x0040640d mov r15, rax | r15 = rax; 0x00406410 cmp qword [rsp + 0x58], 0 | | if (*((rsp + 0x58)) == 0) { 0x00406416 jne 0x406429 | 0x00406418 mov rax, qword [rip + 0x514721] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040641f test rax, rax | | if (rax != 0) { 0x00406422 jne 0x406429 | goto label_0; | } 0x00406424 call 0x64e700 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_0: 0x00406429 movabs rax, 0x100000001 | rax = 0x100000001; 0x00406433 mov qword [r15 + 8], rax | *((r15 + 8)) = rax; 0x00406437 mov rdi, r15 | 0x0040643a call 0x649be0 | BloombergLP::bdlcc::SkipList_Control::incrementRefCount() (r15); 0x0040643f mov qword [r15 + 0x10], 0 | *((r15 + 0x10)) = 0; 0x00406447 mov rdi, rsp | 0x0040644a xor esi, esi | 0x0040644c mov rdx, r15 | 0x0040644f call 0x5bd2e0 | BloombergLP::bdlcc::SkipList::addNode(bool*,BloombergLP::bdlcc::SkipList_Node*) (rsp, 0, r15); 0x00406454 mov eax, dword [rsp + 8] | eax = *((rsp + 8)); 0x00406458 lea ecx, [rax + 1] | ecx = rax + 1; 0x0040645b test eax, eax | 0x0040645d mov esi, 1 | esi = 1; | if (eax <= 0) { 0x00406462 cmovle esi, ecx | esi = ecx; | } 0x00406465 mov rdi, qword [rsp + 0x50] | 0x0040646a call 0x64a060 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rsp + 0x50)), rsi); 0x0040646f mov r15, rax | r15 = rax; 0x00406472 cmp qword [rsp + 0x58], 0 | | if (*((rsp + 0x58)) == 0) { 0x00406478 jne 0x40648b | 0x0040647a mov rax, qword [rip + 0x5146bf] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00406481 test rax, rax | | if (rax != 0) { 0x00406484 jne 0x40648b | goto label_1; | } 0x00406486 call 0x64e700 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_1: 0x0040648b movabs rax, 0x300000003 | rax = 0x300000003; 0x00406495 mov qword [r15 + 8], rax | *((r15 + 8)) = rax; 0x00406499 mov rdi, r15 | 0x0040649c call 0x649be0 | BloombergLP::bdlcc::SkipList_Control::incrementRefCount() (r15); 0x004064a1 mov qword [r15 + 0x10], 0 | *((r15 + 0x10)) = 0; 0x004064a9 mov rdi, rsp | 0x004064ac xor esi, esi | 0x004064ae mov rdx, r15 | 0x004064b1 call 0x5bd2e0 | BloombergLP::bdlcc::SkipList::addNode(bool*,BloombergLP::bdlcc::SkipList_Node*) (rsp, 0, r15); 0x004064b6 mov eax, dword [rsp + 8] | eax = *((rsp + 8)); 0x004064ba lea ecx, [rax + 1] | ecx = rax + 1; 0x004064bd cmp eax, 2 | 0x004064c0 mov esi, 2 | esi = 2; | if (eax < 2) { 0x004064c5 cmovl esi, ecx | esi = ecx; | } 0x004064c8 mov rdi, qword [rsp + 0x50] | 0x004064cd call 0x64a060 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rsp + 0x50)), rsi); 0x004064d2 mov r15, rax | r15 = rax; 0x004064d5 cmp qword [rsp + 0x58], 0 | | if (*((rsp + 0x58)) == 0) { 0x004064db jne 0x4064ee | 0x004064dd mov rax, qword [rip + 0x51465c] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004064e4 test rax, rax | | if (rax != 0) { 0x004064e7 jne 0x4064ee | goto label_2; | } 0x004064e9 call 0x64e700 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_2: 0x004064ee mov qword [r15 + 8], 0 | *((r15 + 8)) = 0; 0x004064f6 mov rdi, r15 | 0x004064f9 call 0x649be0 | BloombergLP::bdlcc::SkipList_Control::incrementRefCount() (r15); 0x004064fe mov qword [r15 + 0x10], 0 | *((r15 + 0x10)) = 0; 0x00406506 mov rdi, rsp | 0x00406509 xor esi, esi | 0x0040650b mov rdx, r15 | 0x0040650e call 0x5bd2e0 | BloombergLP::bdlcc::SkipList::addNode(bool*,BloombergLP::bdlcc::SkipList_Node*) (rsp, 0, r15); 0x00406513 mov eax, dword [rsp + 8] | eax = *((rsp + 8)); 0x00406517 lea ecx, [rax + 1] | ecx = rax + 1; 0x0040651a cmp eax, 3 | 0x0040651d mov esi, 3 | esi = 3; | if (eax < 3) { 0x00406522 cmovl esi, ecx | esi = ecx; | } 0x00406525 mov rdi, qword [rsp + 0x50] | 0x0040652a call 0x64a060 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rsp + 0x50)), rsi); 0x0040652f mov r15, rax | r15 = rax; 0x00406532 cmp qword [rsp + 0x58], 0 | | if (*((rsp + 0x58)) == 0) { 0x00406538 jne 0x40654b | 0x0040653a mov rax, qword [rip + 0x5145ff] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00406541 test rax, rax | | if (rax != 0) { 0x00406544 jne 0x40654b | goto label_3; | } 0x00406546 call 0x64e700 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_3: 0x0040654b movabs rax, 0x200000002 | rax = 0x200000002; 0x00406555 mov qword [r15 + 8], rax | *((r15 + 8)) = rax; 0x00406559 mov rdi, r15 | 0x0040655c call 0x649be0 | BloombergLP::bdlcc::SkipList_Control::incrementRefCount() (r15); 0x00406561 mov qword [r15 + 0x10], 0 | *((r15 + 0x10)) = 0; 0x00406569 mov rdi, rsp | 0x0040656c xor esi, esi | 0x0040656e mov rdx, r15 | 0x00406571 call 0x5bd2e0 | BloombergLP::bdlcc::SkipList::addNode(bool*,BloombergLP::bdlcc::SkipList_Node*) (rsp, 0, r15); 0x00406576 mov eax, dword [rsp + 8] | eax = *((rsp + 8)); 0x0040657a lea ecx, [rax + 1] | ecx = rax + 1; 0x0040657d cmp eax, 4 | 0x00406580 mov esi, 4 | esi = 4; | if (eax < 4) { 0x00406585 cmovl esi, ecx | esi = ecx; | } 0x00406588 mov rdi, qword [rsp + 0x50] | 0x0040658d call 0x64a060 | rax = BloombergLP::bdlcc::SkipList_PoolUtil::allocate(BloombergLP::bdlcc::SkipList_PoolManager*,int) (*((rsp + 0x50)), rsi); 0x00406592 mov r12, rax | r12 = rax; 0x00406595 cmp qword [rsp + 0x58], 0 | | if (*((rsp + 0x58)) == 0) { 0x0040659b jne 0x4065ae | 0x0040659d mov rax, qword [rip + 0x51459c] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004065a4 test rax, rax | | if (rax != 0) { 0x004065a7 jne 0x4065ae | goto label_4; | } 0x004065a9 call 0x64e700 | BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_4: 0x004065ae movabs rax, 0x400000004 | rax = 0x400000004; 0x004065b8 mov qword [r12 + 8], rax | *((r12 + 8)) = rax; 0x004065bd mov rdi, r12 | 0x004065c0 call 0x649be0 | BloombergLP::bdlcc::SkipList_Control::incrementRefCount() (r12); 0x004065c5 mov qword [r12 + 0x10], 0 | *((r12 + 0x10)) = 0; 0x004065ce mov r15, rsp | r15 = rsp; 0x004065d1 mov rdi, r15 | 0x004065d4 xor esi, esi | 0x004065d6 mov rdx, r12 | 0x004065d9 call 0x5bd2e0 | rax = BloombergLP::bdlcc::SkipList::addNode(bool*,BloombergLP::bdlcc::SkipList_Node*) (rsp, 0, r12); 0x004065de mov rbp, 0xfffffffffffffff4 | 0x004065e5 lea r12, [rsp + 0xe8] | r12 = rsp + 0xe8; 0x004065ed nop dword [rax] | | do { 0x004065f0 mov qword [rsp + 0xe8], 0x405ea0 | *((rsp + 0xe8)) = method.SKIPLIST_OLD_TEST_CASES_NAMEPSACE.threadFunc_BloombergLP::bdlcc::SkipList_int__int___int__int_; 0x004065fc mov qword [rsp + 0xf0], r15 | *((rsp + 0xf0)) = r15; 0x00406604 mov dword [rsp + 0xf8], 0x64 | *((rsp + 0xf8)) = 0x64; 0x0040660f lea eax, [rbp + 0xd] | eax = rbp + 0xd; 0x00406612 mov dword [rsp + 0xfc], eax | *((rsp + 0xfc)) = eax; 0x00406619 mov rax, qword [rip + 0x514528] | rax = BloombergLP::bslma::Default::s_globalAllocator; 0x00406620 test rax, rax | | if (rax == 0) { 0x00406623 jne 0x40662a | 0x00406625 call 0x64e7d0 | rax = BloombergLP::bslma::NewDeleteAllocator::singleton() (); | } 0x0040662a mov rdi, rbx | 0x0040662d mov rsi, r12 | 0x00406630 mov rdx, rax | 0x00406633 call 0x5bd710 | intBloombergLP::bslmt::ThreadUtil::createWithAllocator*,int,int),BloombergLP::bdlf::Bind_BoundTuple3*,int,int>>>(unsigned long*,BloombergLP::bdlf::Bind*,int,int),BloombergLP::bdlf::Bind_BoundTuple3*,int,int>>const&,BloombergLP::bslma::Allocator*) (rbx, r12, rax); 0x00406638 add rbx, 8 | rbx += 8; 0x0040663c inc rbp | rbp++; 0x0040663f jne 0x4065f0 | | } while (rbp != 0); 0x00406641 mov rdi, qword [rsp + 0x60] | 0x00406646 xor esi, esi | 0x00406648 call 0x404e80 | pthread_join (*((rsp + 0x60)), 0); 0x0040664d mov rdi, qword [rsp + 0x68] | 0x00406652 xor esi, esi | 0x00406654 call 0x404e80 | pthread_join (*((rsp + 0x68)), 0); 0x00406659 mov rdi, qword [rsp + 0x70] | 0x0040665e xor esi, esi | 0x00406660 call 0x404e80 | pthread_join (*((rsp + 0x70)), 0); 0x00406665 mov rdi, qword [rsp + 0x78] | 0x0040666a xor esi, esi | 0x0040666c call 0x404e80 | pthread_join (*((rsp + 0x78)), 0); 0x00406671 mov rdi, qword [rsp + 0x80] | 0x00406679 xor esi, esi | 0x0040667b call 0x404e80 | pthread_join (*((rsp + 0x80)), 0); 0x00406680 mov rdi, qword [rsp + 0x88] | 0x00406688 xor esi, esi | 0x0040668a call 0x404e80 | pthread_join (*((rsp + 0x88)), 0); 0x0040668f mov rdi, qword [rsp + 0x90] | 0x00406697 xor esi, esi | 0x00406699 call 0x404e80 | pthread_join (*((rsp + 0x90)), 0); 0x0040669e mov rdi, qword [rsp + 0x98] | 0x004066a6 xor esi, esi | 0x004066a8 call 0x404e80 | pthread_join (*((rsp + 0x98)), 0); 0x004066ad mov rdi, qword [rsp + 0xa0] | 0x004066b5 xor esi, esi | 0x004066b7 call 0x404e80 | pthread_join (*((rsp + 0xa0)), 0); 0x004066bc mov rdi, qword [rsp + 0xa8] | 0x004066c4 xor esi, esi | 0x004066c6 call 0x404e80 | pthread_join (*((rsp + 0xa8)), 0); 0x004066cb mov rdi, qword [rsp + 0xb0] | 0x004066d3 xor esi, esi | 0x004066d5 call 0x404e80 | pthread_join (*((rsp + 0xb0)), 0); 0x004066da mov rdi, qword [rsp + 0xb8] | 0x004066e2 xor esi, esi | 0x004066e4 call 0x404e80 | pthread_join (*((rsp + 0xb8)), 0); 0x004066e9 mov rdi, rsp | 0x004066ec lea rsi, [rsp + 0x100] | 0x004066f4 mov edx, 5 | 0x004066f9 mov ecx, 0x113d | 0x004066fe call 0x438280 | voidSKIPLIST_OLD_TEST_CASES_NAMEPSACE::verifyEx,SKIPLIST_OLD_TEST_CASES_NAMEPSACE::IDATA[5]>(BloombergLP::bdlcc::SkipList*,SKIPLIST_OLD_TEST_CASES_NAMEPSACE::IDATAconst(&)[5],int,int) (rsp, rsp + 0x100, 5, 0x113d); 0x00406703 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x00406708 mov rbx, qword [rax + 0x10] | rbx = *((rax + 0x10)); 0x0040670c cmp rbx, qword [rsp + 0x18] | | if (rbx == *((rsp + 0x18))) { 0x00406711 je 0x406733 | goto label_5; | } 0x00406713 nop word cs:[rax + rax] | 0x0040671d nop dword [rax] | | do { 0x00406720 mov rdi, rbx | 0x00406723 call 0x649ba0 | BloombergLP::bdlcc::SkipList_Control::decrementRefCount() (rbx); 0x00406728 mov rbx, qword [rbx + 0x10] | rbx = *((rbx + 0x10)); 0x0040672c cmp rbx, qword [rsp + 0x18] | 0x00406731 jne 0x406720 | | } while (rbx != *((rsp + 0x18))); | label_5: 0x00406733 mov rsi, qword [rsp + 0x50] | 0x00406738 mov rdi, qword [rsp + 0x58] | 0x0040673d call 0x64a360 | BloombergLP::bdlcc::SkipList_PoolUtil::deletePoolManager(BloombergLP::bslma::Allocator*,BloombergLP::bdlcc::SkipList_PoolManager*) (*((rsp + 0x58)), *((rsp + 0x50))); 0x00406742 lea rdi, [rsp + 0x20] | rdi = rsp + 0x20; 0x00406747 call 0x64f850 | BloombergLP::bslmt::MutexImpl::~MutexImpl() (); 0x0040674c add rsp, 0x150 | 0x00406753 pop rbx | 0x00406754 pop r12 | 0x00406756 pop r14 | 0x00406758 pop r15 | 0x0040675a pop rbp | 0x0040675b ret | return rax; | }