; assembly | /* r2dec pseudo code output */ | /* ball_attributecontext.t/assume @ 0x406680 */ | #include | ; (fcn) sym.workerThread1 () | int64_t workerThread1 (void) { | int64_t var_8h; | int64_t var_10h; | char * var_18h; | int64_t var_20h; | int64_t var_28h; | int64_t var_30h; | int64_t var_38h; | int64_t var_40h; | int64_t var_48h; | int64_t var_50h; | char * var_58h; | int64_t var_60h; | int64_t var_78h; | uint32_t var_80h; | int64_t var_88h; | uint32_t var_90h; | int64_t var_98h; | int64_t var_a0h; | int64_t var_a4h; | int64_t var_a8h; | int64_t var_b0h; | int64_t var_b8h; | int64_t var_c0h; | uint32_t var_e0h; | int64_t var_e8h; | uint32_t var_f0h; | int64_t var_100h; | int64_t var_104h; 0x00406680 push rbp | 0x00406681 push r15 | 0x00406683 push r14 | 0x00406685 push r13 | 0x00406687 push r12 | 0x00406689 push rbx | 0x0040668a sub rsp, 0x108 | 0x00406691 mov qword [rsp + 0x10], 0x44b050 | *((rsp + 0x10)) = vtable.AttributeSet.0; 0x0040669a mov rax, qword [rip + 0x2640df] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004066a1 test rax, rax | | if (rax == 0) { 0x004066a4 jne 0x4066ab | 0x004066a6 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004066ab mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x004066b0 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004066b3 movups xmmword [rsp + 0x20], xmm0 | __asm ("movups xmmword [rsp + 0x20], xmm0"); 0x004066b8 mov dword [rsp + 0x30], 1 | *((rsp + 0x30)) = 1; 0x004066c0 lea rax, [rsp + 0x38] | rax = rsp + 0x38; 0x004066c5 mov dword [rsp + 0x50], 0 | *((rsp + 0x50)) = 0; 0x004066cd mov qword [rsp + 0x48], rax | *((rsp + 0x48)) = rax; 0x004066d2 mov qword [rsp + 0x40], 0 | *((rsp + 0x40)) = 0; 0x004066db mov rax, qword [rip + 0x26409e] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004066e2 test rax, rax | | if (rax == 0) { 0x004066e5 jne 0x4066ec | 0x004066e7 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004066ec mov qword [rsp + 0x58], 0x44b382 | *((rsp + 0x58)) = "uuid"; 0x004066f5 mov dword [rsp + 0x90], 0 | *((rsp + 0x90)) = 0; 0x00406700 test rax, rax | | if (rax == 0) { 0x00406703 jne 0x406715 | 0x00406705 mov rax, qword [rip + 0x264074] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040670c test rax, rax | | if (rax == 0) { 0x0040670f je 0x406daa | goto label_6; | } | } 0x00406715 lea rbx, [rsp + 0x60] | rbx = rsp + 0x60; 0x0040671a mov qword [rsp + 0x98], rax | *((rsp + 0x98)) = rax; 0x00406722 mov eax, 0xffffffff | eax = 0xffffffff; 0x00406727 mov qword [rsp + 0xa0], rax | *((rsp + 0xa0)) = rax; | label_0: 0x0040672f mov dword [rbx], 0x3db6a9 | *(rbx) = 0x3db6a9; 0x00406735 mov dword [rsp + 0x90], 1 | *((rsp + 0x90)) = 1; | label_1: 0x00406740 mov qword [rsp], 0x44b3b3 | *(rsp) = "Gang Chen"; 0x00406748 mov qword [rsp + 8], 9 | *((rsp + 8)) = 9; 0x00406751 mov rax, qword [rip + 0x264028] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00406758 test rax, rax | | if (rax == 0) { 0x0040675b jne 0x406762 | 0x0040675d call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00406762 mov qword [rsp + 0xb0], rax | *((rsp + 0xb0)) = rax; 0x0040676a lea rdi, [rsp + 0xb8] | 0x00406772 mov rdx, rsp | 0x00406775 lea rcx, [rsp + 0xb0] | 0x0040677d mov esi, 0x44b3ae | 0x00406782 call 0x412a40 | BloombergLP::ball::Attribute::Attribute(char const*,std::_1::basic_string_view>const&,bsl::allocatorconst&) (rsp + 0xb8, "name", rsp, rsp + 0xb0); 0x00406787 lea r15, [rsp + 0x18] | r15 = rsp + 0x18; 0x0040678c lea r14, [rsp + 0x38] | r14 = rsp + 0x38; 0x00406791 mov rax, qword [rsp + 0x40] | rax = *((rsp + 0x40)); 0x00406796 test rax, rax | | if (rax == 0) { 0x00406799 je 0x4067fe | goto label_7; | } 0x0040679b xor ebp, ebp | ebp = 0; 0x0040679d lea r12, [rsp + 0x58] | r12 = rsp + 0x58; 0x004067a2 nop word cs:[rax + rax] | 0x004067ac nop dword [rax] | | do { 0x004067b0 mov rbx, rax | rbx = rax; 0x004067b3 lea rdx, [rax + 0x18] | rdx = rax + 0x18; 0x004067b7 mov rdi, r15 | 0x004067ba mov rsi, r12 | 0x004067bd call 0x413df0 | al = AttributeComparator::operator()(BloombergLP::ball::Attributeconst&,BloombergLP::ball::Attributeconst&)const (r15, r12); 0x004067c2 test al, al | | if (al == 0) { 0x004067c4 cmove rbp, rbx | | } 0x004067c8 xor al, 1 | al ^= 1; 0x004067ca movzx ecx, al | ecx = (int32_t) al; 0x004067cd mov rax, qword [rbx + rcx*8 + 8] | rax = *((rbx + rcx*8 + 8)); 0x004067d2 test rax, rax | 0x004067d5 jne 0x4067b0 | | } while (rax != 0); 0x004067d7 lea r12d, [rcx + rcx - 1] | r12d = rcx + rcx - 1; 0x004067dc test rbp, rbp | | if (rbp != 0) { 0x004067df je 0x406807 | 0x004067e1 add rbp, 0x18 | rbp += 0x18; 0x004067e5 lea rdx, [rsp + 0x58] | rdx = rsp + 0x58; 0x004067ea mov rdi, r15 | 0x004067ed mov rsi, rbp | 0x004067f0 call 0x413df0 | al = AttributeComparator::operator()(BloombergLP::ball::Attributeconst&,BloombergLP::ball::Attributeconst&)const (r15, rbp); 0x004067f5 test al, al | | if (al != 0) { 0x004067f7 jne 0x406807 | goto label_8; | } 0x004067f9 jmp 0x4069c5 | goto label_9; | label_7: 0x004067fe mov r12d, 0xffffffff | r12d = 0xffffffff; 0x00406804 mov rbx, r14 | rbx = r14; | } | label_8: 0x00406807 mov rbp, qword [rsp + 0x28] | rbp = *((rsp + 0x28)); 0x0040680c test rbp, rbp | | if (rbp != 0) { 0x0040680f jne 0x40692a | goto label_10; | } 0x00406815 movsxd rax, dword [rsp + 0x30] | rax = *((rsp + 0x30)); 0x0040681a imul r13, rax, 0x68 | r13 = rax * 0x68; 0x0040681e lea rsi, [r13 + 0x17] | rsi = r13 + 0x17; 0x00406822 and rsi, 0xfffffffffffffff0 | rsi &= 0xfffffffffffffff0; 0x00406826 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x0040682b mov rax, qword [rdi] | rax = *(rdi); 0x0040682e call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00406831 mov rcx, rax | rcx = rax; 0x00406834 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x00406839 mov qword [rcx], rax | *(rcx) = rax; 0x0040683c mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x00406841 lea rbp, [rcx + 8] | rbp = rcx + 8; 0x00406845 lea rsi, [rcx + r13 - 0x60] | rsi = rcx + r13 - 0x60; 0x0040684a cmp rsi, rbp | | if (rsi <= rbp) { 0x0040684d jbe 0x40690e | goto label_3; | } 0x00406853 add r13, 0xffffffffffffff97 | r13 += 0xffffffffffffff97; 0x00406857 movabs rdx, 0x4ec4ec4ec4ec4ec5 | rdx = 0x4ec4ec4ec4ec4ec5; 0x00406861 mov rax, r13 | rax = r13; 0x00406864 mul rdx | rdx:rax = rax * rdx; 0x00406867 shr edx, 5 | edx >>= 5; 0x0040686a inc edx | edx++; 0x0040686c and rdx, 7 | rdx &= 7; | if (rdx == 0) { 0x00406870 je 0x406deb | goto label_11; | } 0x00406876 add rcx, 0x70 | rcx += 0x70; 0x0040687a neg rdx | rdx = -rdx; 0x0040687d nop dword [rax] | | do { 0x00406880 mov qword [rcx - 0x68], rcx | *((rcx - 0x68)) = rcx; 0x00406884 add rcx, 0x68 | rcx += 0x68; 0x00406888 inc rdx | rdx++; 0x0040688b jne 0x406880 | | } while (rdx != 0); 0x0040688d add rcx, 0xffffffffffffff98 | rcx += 0xffffffffffffff98; 0x00406891 cmp r13, 0x2d8 | | if (r13 < 0x2d8) { 0x00406898 jb 0x40690e | goto label_3; | } 0x0040689a nop word [rax + rax] | | do { | label_2: 0x004068a0 lea rax, [rcx + 0x68] | rax = rcx + 0x68; 0x004068a4 mov qword [rcx], rax | *(rcx) = rax; 0x004068a7 lea rax, [rcx + 0xd0] | rax = rcx + 0xd0; 0x004068ae mov qword [rcx + 0x68], rax | *((rcx + 0x68)) = rax; 0x004068b2 lea rax, [rcx + 0x138] | rax = rcx + 0x138; 0x004068b9 mov qword [rcx + 0xd0], rax | *((rcx + 0xd0)) = rax; 0x004068c0 lea rax, [rcx + 0x1a0] | rax = rcx + 0x1a0; 0x004068c7 mov qword [rcx + 0x138], rax | *((rcx + 0x138)) = rax; 0x004068ce lea rax, [rcx + 0x208] | rax = rcx + 0x208; 0x004068d5 mov qword [rcx + 0x1a0], rax | *((rcx + 0x1a0)) = rax; 0x004068dc lea rax, [rcx + 0x270] | rax = rcx + 0x270; 0x004068e3 mov qword [rcx + 0x208], rax | *((rcx + 0x208)) = rax; 0x004068ea lea rax, [rcx + 0x2d8] | rax = rcx + 0x2d8; 0x004068f1 mov qword [rcx + 0x270], rax | *((rcx + 0x270)) = rax; 0x004068f8 lea rax, [rcx + 0x340] | rax = rcx + 0x340; 0x004068ff mov qword [rcx + 0x2d8], rax | *((rcx + 0x2d8)) = rax; 0x00406906 mov rcx, rax | rcx = rax; 0x00406909 cmp rax, rsi | 0x0040690c jb 0x4068a0 | | } while (rax < rsi); | label_3: 0x0040690e mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x00406913 mov qword [rsi], rax | *(rsi) = rax; 0x00406916 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x0040691b mov eax, dword [rsp + 0x30] | eax = *((rsp + 0x30)); 0x0040691f cmp eax, 0x1f | | if (eax <= 0x1f) { 0x00406922 jg 0x40692a | 0x00406924 add eax, eax | eax += eax; 0x00406926 mov dword [rsp + 0x30], eax | *((rsp + 0x30)) = eax; | } | label_10: 0x0040692a mov rax, qword [rbp] | rax = *(rbp); 0x0040692e mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00406933 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x00406938 test rax, rax | | if (rax == 0) { 0x0040693b jne 0x40694e | 0x0040693d mov rax, qword [rip + 0x263e3c] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00406944 test rax, rax | | if (rax != 0) { 0x00406947 jne 0x40694e | goto label_12; | } 0x00406949 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_12: 0x0040694e mov rcx, qword [rsp + 0x58] | rcx = *((rsp + 0x58)); 0x00406953 mov qword [rbp + 0x18], rcx | *((rbp + 0x18)) = rcx; 0x00406957 mov ecx, dword [rsp + 0x90] | ecx = *((rsp + 0x90)); 0x0040695e mov dword [rbp + 0x50], ecx | *((rbp + 0x50)) = ecx; 0x00406961 test rax, rax | | if (rax == 0) { 0x00406964 jne 0x40697a | 0x00406966 mov rax, qword [rip + 0x263e13] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040696d test rax, rax | | if (rax != 0) { 0x00406970 jne 0x40697a | goto label_13; | } 0x00406972 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00406977 mov ecx, dword [rbp + 0x50] | ecx = *((rbp + 0x50)); | } | label_13: 0x0040697a mov qword [rbp + 0x58], rax | *((rbp + 0x58)) = rax; 0x0040697e test ecx, ecx | | if (ecx != 0) { 0x00406980 je 0x40699c | 0x00406982 lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x00406987 lea rcx, [rbp + 0x20] | rcx = rbp + 0x20; 0x0040698b mov qword [rsp], rcx | *(rsp) = rcx; 0x0040698f mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00406994 mov rsi, rsp | rsi = rsp; 0x00406997 call 0x413670 | _ZNK11BloombergLP4bdlb10VariantImpINS_5bslmf8TypeListIJixN3bsl12basic_stringIcNSt3_111char_traitsIcEENS4_9allocatorIcEEEEEEEE5applyINS0_28Variant_CopyConstructVisitorEEENS4_9enable_ifIXeqsr25Variant_ReturnValueHelperIT_EE5valueLi0EEvE4typeERSH_ (); | } 0x0040699c mov eax, dword [rsp + 0xa0] | eax = *((rsp + 0xa0)); 0x004069a3 mov dword [rbp + 0x60], eax | *((rbp + 0x60)) = eax; 0x004069a6 mov eax, dword [rsp + 0xa4] | eax = *((rsp + 0xa4)); 0x004069ad mov dword [rbp + 0x64], eax | *((rbp + 0x64)) = eax; 0x004069b0 shr r12d, 0x1f | r12d >>= 0x1f; 0x004069b4 mov rdi, r14 | 0x004069b7 mov rsi, rbx | 0x004069ba mov edx, r12d | 0x004069bd mov rcx, rbp | rcx = rbp; 0x004069c0 call 0x420490 | BloombergLP::bslalg::RbTreeUtil::insertAt(BloombergLP::bslalg::RbTreeAnchor*,BloombergLP::bslalg::RbTreeNode*,bool,BloombergLP::bslalg::RbTreeNode*) (r14, rbx, r12d); | label_9: 0x004069c5 mov rax, qword [rsp + 0x40] | rax = *((rsp + 0x40)); 0x004069ca test rax, rax | | if (rax == 0) { 0x004069cd je 0x406a31 | goto label_14; | } 0x004069cf xor ebp, ebp | ebp = 0; 0x004069d1 lea r12, [rsp + 0xb8] | r12 = rsp + 0xb8; 0x004069d9 nop dword [rax] | | do { 0x004069e0 mov rbx, rax | rbx = rax; 0x004069e3 lea rdx, [rax + 0x18] | rdx = rax + 0x18; 0x004069e7 mov rdi, r15 | 0x004069ea mov rsi, r12 | 0x004069ed call 0x413df0 | al = AttributeComparator::operator()(BloombergLP::ball::Attributeconst&,BloombergLP::ball::Attributeconst&)const (r15, r12); 0x004069f2 test al, al | | if (al == 0) { 0x004069f4 cmove rbp, rbx | | } 0x004069f8 xor al, 1 | al ^= 1; 0x004069fa movzx ecx, al | ecx = (int32_t) al; 0x004069fd mov rax, qword [rbx + rcx*8 + 8] | rax = *((rbx + rcx*8 + 8)); 0x00406a02 test rax, rax | 0x00406a05 jne 0x4069e0 | | } while (rax != 0); 0x00406a07 lea r12d, [rcx + rcx - 1] | r12d = rcx + rcx - 1; 0x00406a0c test rbp, rbp | | if (rbp != 0) { 0x00406a0f je 0x406a3a | 0x00406a11 add rbp, 0x18 | rbp += 0x18; 0x00406a15 lea rdx, [rsp + 0xb8] | rdx = rsp + 0xb8; 0x00406a1d mov rdi, r15 | 0x00406a20 mov rsi, rbp | 0x00406a23 call 0x413df0 | al = AttributeComparator::operator()(BloombergLP::ball::Attributeconst&,BloombergLP::ball::Attributeconst&)const (r15, rbp); 0x00406a28 test al, al | | if (al != 0) { 0x00406a2a jne 0x406a3a | goto label_15; | } 0x00406a2c jmp 0x406bfb | goto label_16; | label_14: 0x00406a31 mov r12d, 0xffffffff | r12d = 0xffffffff; 0x00406a37 mov rbx, r14 | rbx = r14; | } | label_15: 0x00406a3a mov rbp, qword [rsp + 0x28] | rbp = *((rsp + 0x28)); 0x00406a3f test rbp, rbp | | if (rbp != 0) { 0x00406a42 jne 0x406b5a | goto label_17; | } 0x00406a48 movsxd rax, dword [rsp + 0x30] | rax = *((rsp + 0x30)); 0x00406a4d imul r13, rax, 0x68 | r13 = rax * 0x68; 0x00406a51 lea rsi, [r13 + 0x17] | rsi = r13 + 0x17; 0x00406a55 and rsi, 0xfffffffffffffff0 | rsi &= 0xfffffffffffffff0; 0x00406a59 mov rdi, qword [rsp + 0x18] | rdi = *((rsp + 0x18)); 0x00406a5e mov rax, qword [rdi] | rax = *(rdi); 0x00406a61 call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00406a64 mov rcx, rax | rcx = rax; 0x00406a67 mov rax, qword [rsp + 0x20] | rax = *((rsp + 0x20)); 0x00406a6c mov qword [rcx], rax | *(rcx) = rax; 0x00406a6f mov qword [rsp + 0x20], rcx | *((rsp + 0x20)) = rcx; 0x00406a74 lea rbp, [rcx + 8] | rbp = rcx + 8; 0x00406a78 lea rsi, [rcx + r13 - 0x60] | rsi = rcx + r13 - 0x60; 0x00406a7d cmp rsi, rbp | | if (rsi <= rbp) { 0x00406a80 jbe 0x406b3e | goto label_5; | } 0x00406a86 add r13, 0xffffffffffffff97 | r13 += 0xffffffffffffff97; 0x00406a8a movabs rdx, 0x4ec4ec4ec4ec4ec5 | rdx = 0x4ec4ec4ec4ec4ec5; 0x00406a94 mov rax, r13 | rax = r13; 0x00406a97 mul rdx | rdx:rax = rax * rdx; 0x00406a9a shr edx, 5 | edx >>= 5; 0x00406a9d inc edx | edx++; 0x00406a9f and rdx, 7 | rdx &= 7; | if (rdx == 0) { 0x00406aa3 je 0x406e00 | goto label_18; | } 0x00406aa9 add rcx, 0x70 | rcx += 0x70; 0x00406aad neg rdx | rdx = -rdx; | do { 0x00406ab0 mov qword [rcx - 0x68], rcx | *((rcx - 0x68)) = rcx; 0x00406ab4 add rcx, 0x68 | rcx += 0x68; 0x00406ab8 inc rdx | rdx++; 0x00406abb jne 0x406ab0 | | } while (rdx != 0); 0x00406abd add rcx, 0xffffffffffffff98 | rcx += 0xffffffffffffff98; 0x00406ac1 cmp r13, 0x2d8 | | if (r13 < 0x2d8) { 0x00406ac8 jb 0x406b3e | goto label_5; | } 0x00406aca nop word [rax + rax] | | do { | label_4: 0x00406ad0 lea rax, [rcx + 0x68] | rax = rcx + 0x68; 0x00406ad4 mov qword [rcx], rax | *(rcx) = rax; 0x00406ad7 lea rax, [rcx + 0xd0] | rax = rcx + 0xd0; 0x00406ade mov qword [rcx + 0x68], rax | *((rcx + 0x68)) = rax; 0x00406ae2 lea rax, [rcx + 0x138] | rax = rcx + 0x138; 0x00406ae9 mov qword [rcx + 0xd0], rax | *((rcx + 0xd0)) = rax; 0x00406af0 lea rax, [rcx + 0x1a0] | rax = rcx + 0x1a0; 0x00406af7 mov qword [rcx + 0x138], rax | *((rcx + 0x138)) = rax; 0x00406afe lea rax, [rcx + 0x208] | rax = rcx + 0x208; 0x00406b05 mov qword [rcx + 0x1a0], rax | *((rcx + 0x1a0)) = rax; 0x00406b0c lea rax, [rcx + 0x270] | rax = rcx + 0x270; 0x00406b13 mov qword [rcx + 0x208], rax | *((rcx + 0x208)) = rax; 0x00406b1a lea rax, [rcx + 0x2d8] | rax = rcx + 0x2d8; 0x00406b21 mov qword [rcx + 0x270], rax | *((rcx + 0x270)) = rax; 0x00406b28 lea rax, [rcx + 0x340] | rax = rcx + 0x340; 0x00406b2f mov qword [rcx + 0x2d8], rax | *((rcx + 0x2d8)) = rax; 0x00406b36 mov rcx, rax | rcx = rax; 0x00406b39 cmp rax, rsi | 0x00406b3c jb 0x406ad0 | | } while (rax < rsi); | label_5: 0x00406b3e mov rax, qword [rsp + 0x28] | rax = *((rsp + 0x28)); 0x00406b43 mov qword [rsi], rax | *(rsi) = rax; 0x00406b46 mov qword [rsp + 0x28], rbp | *((rsp + 0x28)) = rbp; 0x00406b4b mov eax, dword [rsp + 0x30] | eax = *((rsp + 0x30)); 0x00406b4f cmp eax, 0x1f | | if (eax <= 0x1f) { 0x00406b52 jg 0x406b5a | 0x00406b54 add eax, eax | eax += eax; 0x00406b56 mov dword [rsp + 0x30], eax | *((rsp + 0x30)) = eax; | } | label_17: 0x00406b5a mov rax, qword [rbp] | rax = *(rbp); 0x00406b5e mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00406b63 mov rax, qword [rsp + 0x18] | rax = *((rsp + 0x18)); 0x00406b68 test rax, rax | | if (rax == 0) { 0x00406b6b jne 0x406b7e | 0x00406b6d mov rax, qword [rip + 0x263c0c] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00406b74 test rax, rax | | if (rax != 0) { 0x00406b77 jne 0x406b7e | goto label_19; | } 0x00406b79 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_19: 0x00406b7e mov rcx, qword [rsp + 0xb8] | rcx = *((rsp + 0xb8)); 0x00406b86 mov qword [rbp + 0x18], rcx | *((rbp + 0x18)) = rcx; 0x00406b8a mov ecx, dword [rsp + 0xf0] | ecx = *((rsp + 0xf0)); 0x00406b91 mov dword [rbp + 0x50], ecx | *((rbp + 0x50)) = ecx; 0x00406b94 test rax, rax | | if (rax == 0) { 0x00406b97 jne 0x406bad | 0x00406b99 mov rax, qword [rip + 0x263be0] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00406ba0 test rax, rax | | if (rax != 0) { 0x00406ba3 jne 0x406bad | goto label_20; | } 0x00406ba5 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00406baa mov ecx, dword [rbp + 0x50] | ecx = *((rbp + 0x50)); | } | label_20: 0x00406bad mov qword [rbp + 0x58], rax | *((rbp + 0x58)) = rax; 0x00406bb1 test ecx, ecx | | if (ecx != 0) { 0x00406bb3 je 0x406bd2 | 0x00406bb5 lea rdi, [rsp + 0xc0] | rdi = rsp + 0xc0; 0x00406bbd lea rcx, [rbp + 0x20] | rcx = rbp + 0x20; 0x00406bc1 mov qword [rsp], rcx | *(rsp) = rcx; 0x00406bc5 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x00406bca mov rsi, rsp | rsi = rsp; 0x00406bcd call 0x413670 | _ZNK11BloombergLP4bdlb10VariantImpINS_5bslmf8TypeListIJixN3bsl12basic_stringIcNSt3_111char_traitsIcEENS4_9allocatorIcEEEEEEEE5applyINS0_28Variant_CopyConstructVisitorEEENS4_9enable_ifIXeqsr25Variant_ReturnValueHelperIT_EE5valueLi0EEvE4typeERSH_ (); | } 0x00406bd2 mov eax, dword [rsp + 0x100] | eax = *((rsp + 0x100)); 0x00406bd9 mov dword [rbp + 0x60], eax | *((rbp + 0x60)) = eax; 0x00406bdc mov eax, dword [rsp + 0x104] | eax = *((rsp + 0x104)); 0x00406be3 mov dword [rbp + 0x64], eax | *((rbp + 0x64)) = eax; 0x00406be6 shr r12d, 0x1f | r12d >>= 0x1f; 0x00406bea mov rdi, r14 | 0x00406bed mov rsi, rbx | 0x00406bf0 mov edx, r12d | 0x00406bf3 mov rcx, rbp | rcx = rbp; 0x00406bf6 call 0x420490 | BloombergLP::bslalg::RbTreeUtil::insertAt(BloombergLP::bslalg::RbTreeAnchor*,BloombergLP::bslalg::RbTreeNode*,bool,BloombergLP::bslalg::RbTreeNode*) (r14, rbx, r12d); | label_16: 0x00406bfb mov edi, 0x66a030 | 0x00406c00 call 0x422bd0 | BloombergLP::bslmt::Barrier::wait() (obj.BALL_ATTRIBUTECONTEXT_USAGE_EXAMPLE_1::barrier); 0x00406c05 call 0x414ca0 | rax = BloombergLP::ball::AttributeContext::getContext() (); 0x00406c0a mov rbx, rax | rbx = rax; 0x00406c0d xor edi, edi | edi = 0; 0x00406c0f test rax, rax | 0x00406c12 sete dil | dil = (rax == 0) ? 1 : 0; 0x00406c16 mov esi, 0x44b3bd | esi = "context"; 0x00406c1b mov edx, 0x20a | edx = 0x20a; 0x00406c20 call 0x405860 | symaSsErT(int (); 0x00406c25 call 0x414e40 | rax = BloombergLP::ball::AttributeContext::lookupContext() (); 0x00406c2a xor edi, edi | edi = 0; 0x00406c2c cmp rbx, rax | 0x00406c2f setne dil | dil = (rbx != rax) ? 1 : 0; 0x00406c33 mov esi, 0x44b3c5 | esi = "context == ball::AttributeContext::lookupContext()"; 0x00406c38 mov edx, 0x20b | edx = 0x20b; 0x00406c3d call 0x405860 | symaSsErT(int (); 0x00406c42 mov qword [rbx + 0x20], 0 | *((rbx + 0x20)) = 0; 0x00406c4a mov qword [rbx + 0x28], 0xffffffffffffffff | *((rbx + 0x28)) = 0xffffffffffffffff; 0x00406c52 mov rdi, rsp | 0x00406c55 lea rdx, [rsp + 0x10] | 0x00406c5a mov rsi, rbx | 0x00406c5d call 0x414610 | BloombergLP::ball::AttributeContainerList::pushFront(BloombergLP::ball::AttributeContainerconst*) (rsp, rbx, rsp + 0x10); 0x00406c62 lea rsi, [rsp + 0x58] | 0x00406c67 mov rdi, rbx | 0x00406c6a call 0x414710 | al = BloombergLP::ball::AttributeContainerList::hasValue(BloombergLP::ball::Attributeconst&)const (rbx, rsp + 0x58); 0x00406c6f xor al, 1 | al ^= 1; 0x00406c71 movzx edi, al | edi = (int32_t) al; 0x00406c74 mov esi, 0x44b401 | esi = 0x44b401; 0x00406c79 mov edx, 0x213 | edx = 0x213; 0x00406c7e call 0x405860 | symaSsErT(int (); 0x00406c83 lea rsi, [rsp + 0xb8] | 0x00406c8b mov rdi, rbx | 0x00406c8e call 0x414710 | al = BloombergLP::ball::AttributeContainerList::hasValue(BloombergLP::ball::Attributeconst&)const (rbx, rsp + 0xb8); 0x00406c93 xor al, 1 | al ^= 1; 0x00406c95 movzx edi, al | edi = (int32_t) al; 0x00406c98 mov esi, 0x44b424 | esi = 0x44b424; 0x00406c9d mov edx, 0x214 | edx = 0x214; 0x00406ca2 call 0x405860 | symaSsErT(int (); 0x00406ca7 mov edi, 0x66a030 | 0x00406cac call 0x422bd0 | BloombergLP::bslmt::Barrier::wait() (obj.BALL_ATTRIBUTECONTEXT_USAGE_EXAMPLE_1::barrier); 0x00406cb1 mov rax, qword [rsp] | rax = *(rsp); 0x00406cb5 mov qword [rsp + 0xa8], rax | *((rsp + 0xa8)) = rax; 0x00406cbd mov qword [rbx + 0x20], 0 | *((rbx + 0x20)) = 0; 0x00406cc5 mov qword [rbx + 0x28], 0xffffffffffffffff | *((rbx + 0x28)) = 0xffffffffffffffff; 0x00406ccd lea rsi, [rsp + 0xa8] | 0x00406cd5 mov rdi, rbx | 0x00406cd8 call 0x414680 | BloombergLP::ball::AttributeContainerList::remove(BloombergLP::ball::AttributeContainerListIteratorconst&) (rbx, rsp + 0xa8); 0x00406cdd lea rsi, [rsp + 0x58] | 0x00406ce2 mov rdi, rbx | 0x00406ce5 call 0x414710 | al = BloombergLP::ball::AttributeContainerList::hasValue(BloombergLP::ball::Attributeconst&)const (rbx, rsp + 0x58); 0x00406cea movzx edi, al | edi = (int32_t) al; 0x00406ced mov esi, 0x44b3f8 | esi = "false == context->hasAttribute(a1)"; 0x00406cf2 mov edx, 0x21c | edx = 0x21c; 0x00406cf7 call 0x405860 | symaSsErT(int (); 0x00406cfc lea rsi, [rsp + 0xb8] | 0x00406d04 mov rdi, rbx | 0x00406d07 call 0x414710 | al = BloombergLP::ball::AttributeContainerList::hasValue(BloombergLP::ball::Attributeconst&)const (rbx, rsp + 0xb8); 0x00406d0c movzx edi, al | edi = (int32_t) al; 0x00406d0f mov esi, 0x44b41b | esi = "false == context->hasAttribute(a2)"; 0x00406d14 mov edx, 0x21d | edx = 0x21d; 0x00406d19 call 0x405860 | symaSsErT(int (); 0x00406d1e mov edi, 0x66a030 | 0x00406d23 call 0x422bd0 | BloombergLP::bslmt::Barrier::wait() (obj.BALL_ATTRIBUTECONTEXT_USAGE_EXAMPLE_1::barrier); 0x00406d28 cmp dword [rsp + 0xf0], 3 | | if (*((rsp + 0xf0)) == 3) { 0x00406d30 jne 0x406d53 | 0x00406d32 cmp qword [rsp + 0xe0], 0x17 | | if (*((rsp + 0xe0)) == 0x17) { 0x00406d3b je 0x406d53 | goto label_21; | } 0x00406d3d mov rsi, qword [rsp + 0xc0] | rsi = *((rsp + 0xc0)); 0x00406d45 mov rdi, qword [rsp + 0xe8] | rdi = *((rsp + 0xe8)); 0x00406d4d mov rax, qword [rdi] | rax = *(rdi); 0x00406d50 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_21: 0x00406d53 cmp dword [rsp + 0x90], 3 | | if (*((rsp + 0x90)) == 3) { 0x00406d5b jne 0x406d7b | 0x00406d5d cmp qword [rsp + 0x80], 0x17 | | if (*((rsp + 0x80)) == 0x17) { 0x00406d66 je 0x406d7b | goto label_22; | } 0x00406d68 mov rsi, qword [rsp + 0x60] | rsi = *((rsp + 0x60)); 0x00406d6d mov rdi, qword [rsp + 0x88] | rdi = *((rsp + 0x88)); 0x00406d75 mov rax, qword [rdi] | rax = *(rdi); 0x00406d78 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_22: 0x00406d7b mov qword [rsp + 0x10], 0x44b050 | *((rsp + 0x10)) = vtable.AttributeSet.0; 0x00406d84 mov rdi, r15 | 0x00406d87 call 0x4125d0 | bsl::set>::~set() (r15); 0x00406d8c lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00406d91 call 0x414410 | eax = BloombergLP::ball::AttributeContainer::~AttributeContainer() (); 0x00406d96 xor eax, eax | eax = 0; 0x00406d98 add rsp, 0x108 | 0x00406d9f pop rbx | 0x00406da0 pop r12 | 0x00406da2 pop r13 | 0x00406da4 pop r14 | 0x00406da6 pop r15 | 0x00406da8 pop rbp | 0x00406da9 ret | return rax; | label_6: 0x00406daa call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00406daf mov ecx, dword [rsp + 0x90] | ecx = *((rsp + 0x90)); 0x00406db6 lea rbx, [rsp + 0x60] | rbx = rsp + 0x60; 0x00406dbb mov qword [rsp + 0x98], rax | *((rsp + 0x98)) = rax; 0x00406dc3 mov eax, 0xffffffff | eax = 0xffffffff; 0x00406dc8 mov qword [rsp + 0xa0], rax | *((rsp + 0xa0)) = rax; 0x00406dd0 cmp ecx, 3 | | if (ecx == 3) { 0x00406dd3 je 0x406e15 | goto label_23; | } 0x00406dd5 cmp ecx, 1 | | if (ecx != 1) { 0x00406dd8 jne 0x40672f | goto label_0; | } 0x00406dde mov dword [rsp + 0x60], 0x3db6a9 | *((rsp + 0x60)) = 0x3db6a9; 0x00406de6 jmp 0x406740 | goto label_1; | label_11: 0x00406deb mov rcx, rbp | rcx = rbp; 0x00406dee cmp r13, 0x2d8 | | if (r13 >= 0x2d8) { 0x00406df5 jae 0x4068a0 | goto label_2; | } 0x00406dfb jmp 0x40690e | goto label_3; | label_18: 0x00406e00 mov rcx, rbp | rcx = rbp; 0x00406e03 cmp r13, 0x2d8 | | if (r13 >= 0x2d8) { 0x00406e0a jae 0x406ad0 | goto label_4; | } 0x00406e10 jmp 0x406b3e | goto label_5; | label_23: 0x00406e15 cmp qword [rsp + 0x80], 0x17 | | if (*((rsp + 0x80)) != 0x17) { 0x00406e1e je 0x406e33 | 0x00406e20 mov rsi, qword [rsp + 0x60] | rsi = *((rsp + 0x60)); 0x00406e25 mov rdi, qword [rsp + 0x88] | rdi = *((rsp + 0x88)); 0x00406e2d mov rax, qword [rdi] | rax = *(rdi); 0x00406e30 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00406e33 mov qword [rsp + 0x78], 0xffffffffffffffff | *((rsp + 0x78)) = 0xffffffffffffffff; 0x00406e3c jmp 0x40672f | goto label_0; | }