; assembly | /* r2dec pseudo code output */ | /* ball_attributecontext.t/none @ 0x407c20 */ | #include | ; (fcn) sym.case4ContextThread () | uint64_t case4ContextThread (int64_t arg1) { | uint32_t var_ch; | uint32_t var_dh; | uint32_t var_eh; | uint32_t var_fh; | char * var_10h; | int64_t var_18h; | int64_t var_28h; | uint32_t var_30h; | uint32_t var_38h; | int64_t var_40h; | uint32_t var_48h; | int64_t var_50h; | int64_t var_58h; | int64_t var_60h; | int64_t var_68h; | char * var_88h; | int64_t var_90h; | int64_t var_98h; | int64_t var_a0h; | int64_t var_b0h; | int64_t var_b8h; | int64_t var_c0h; | int64_t var_c8h; | int64_t var_d0h; | int64_t var_d8h; | int64_t var_e0h; | rdi = arg1; 0x00407c20 push rbp | 0x00407c21 push r15 | 0x00407c23 push r14 | 0x00407c25 push r13 | 0x00407c27 push r12 | 0x00407c29 push rbx | 0x00407c2a sub rsp, 0xe8 | 0x00407c31 mov r14, qword [rdi] | r14 = *(rdi); 0x00407c34 mov edi, 0x6680a8 | 0x00407c39 call 0x4206d0 | BloombergLP::bslmt::Barrier::wait() (obj.BALL_ATTRIBUTECONTEXT_TEST_CASE_4::barrier); 0x00407c3e cmp byte [rip + 0x2603e8], 0 | | if (*(obj.veryVerbose) != 0) { 0x00407c45 je 0x407d04 | 0x00407c4b mov edi, 0x668000 | edi = coutMutex; 0x00407c50 call 0x404640 | pthread_mutex_lock (); 0x00407c55 call 0x404250 | eax = pthread_self (); 0x00407c5a movsxd rsi, eax | rsi = (int64_t) eax; 0x00407c5d mov edi, 0x667f48 | edi = std::__1::cout; 0x00407c62 call 0x404230 | rax = std::_1::basic_ostream>::operator << (unsigned long long) (); 0x00407c67 mov esi, 0x448d51 | 0x00407c6c mov edx, 2 | 0x00407c71 mov rdi, rax | 0x00407c74 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00407c79 mov esi, 0x4492cb | 0x00407c7e mov edx, 0x2b | 0x00407c83 mov rdi, rax | 0x00407c86 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, "\n\tPhase 1: Initializing attribute contexts ", 0x2b); 0x00407c8b mov esi, 0x4492f7 | 0x00407c90 mov edx, 0x18 | 0x00407c95 mov rdi, rax | 0x00407c98 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, "and creating categories.", 0x18); 0x00407c9d mov rbx, rax | rbx = rax; 0x00407ca0 mov rax, qword [rax] | rax = *(rax); 0x00407ca3 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x00407ca7 add rsi, rbx | rsi += rbx; 0x00407caa lea rbp, [rsp + 0x10] | rbp = rsp + 0x10; 0x00407caf mov rdi, rbp | rdi = rbp; 0x00407cb2 call 0x404420 | std::_1::ios_base::getloc()const (); 0x00407cb7 mov esi, 0x667e90 | esi = std::__1::ctype::id; 0x00407cbc mov rdi, rbp | rdi = rbp; 0x00407cbf call 0x404550 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00407cc4 mov rcx, qword [rax] | rcx = *(rax); 0x00407cc7 mov rdi, rax | rdi = rax; 0x00407cca mov esi, 0xa | esi = 0xa; 0x00407ccf call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00407cd2 mov ebp, eax | 0x00407cd4 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00407cd9 call 0x4045e0 | std::_1::locale::~locale() (); 0x00407cde movsx esi, bpl | esi = (int32_t) bpl; 0x00407ce2 mov rdi, rbx | rdi = rbx; 0x00407ce5 call 0x404210 | std::_1::basic_ostream>::put(char) (); 0x00407cea mov rdi, rbx | rdi = rbx; 0x00407ced call 0x4043e0 | std::_1::basic_ostream>::flush() (); 0x00407cf2 mov rdi, rbx | rdi = rbx; 0x00407cf5 call 0x4043e0 | std::_1::basic_ostream>::flush() (); 0x00407cfa mov edi, 0x668000 | edi = coutMutex; 0x00407cff call 0x404720 | pthread_mutex_unlock (); | } 0x00407d04 call 0x4125c0 | rax = BloombergLP::ball::AttributeContext::lookupContext() (); 0x00407d09 xor edi, edi | edi = 0; 0x00407d0b test rax, rax | 0x00407d0e setne dil | dil = (rax != 0) ? 1 : 0; 0x00407d12 mov esi, 0x449310 | esi = "0 == Obj::lookupContext()"; 0x00407d17 mov edx, 0x34d | edx = 0x34d; 0x00407d1c call 0x405630 | symaSsErT(int (); 0x00407d21 call 0x412420 | rax = BloombergLP::ball::AttributeContext::getContext() (); 0x00407d26 mov r13, rax | r13 = rax; 0x00407d29 xor edi, edi | edi = 0; 0x00407d2b test rax, rax | 0x00407d2e sete dil | dil = (rax == 0) ? 1 : 0; 0x00407d32 mov esi, 0x44932a | esi = 0x44932a; 0x00407d37 mov edx, 0x350 | edx = 0x350; 0x00407d3c call 0x405630 | symaSsErT(int (); 0x00407d41 call 0x4125c0 | rax = BloombergLP::ball::AttributeContext::lookupContext() (); 0x00407d46 xor edi, edi | edi = 0; 0x00407d48 cmp r13, rax | 0x00407d4b setne dil | dil = (r13 != rax) ? 1 : 0; 0x00407d4f mov esi, 0x44932d | esi = "mX == Obj::lookupContext()"; 0x00407d54 mov edx, 0x351 | edx = 0x351; 0x00407d59 call 0x405630 | symaSsErT(int (); 0x00407d5e mov rax, qword [rip + 0x260a1b] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00407d65 test rax, rax | | if (rax == 0) { 0x00407d68 jne 0x407d6f | 0x00407d6a call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00407d6f mov qword [rsp + 0x10], rax | *((rsp + 0x10)) = rax; 0x00407d74 lea rdi, [rsp + 0x68] | 0x00407d79 lea r12, [rsp + 0x10] | r12 = rsp + 0x10; 0x00407d7e mov esi, 0x21 | 0x00407d83 mov rdx, r12 | 0x00407d86 call 0x43a8c0 | bsl::vector>::vector(unsigned long,bsl::allocatorconst&) (rsp + 0x68, 0x21, r12); 0x00407d8b xor ebx, ebx | ebx = 0; 0x00407d8d jmp 0x407d9d | | while (*((rsp + 0x30)) == 0x17) { | label_0: 0x00407d90 mov rbx, rbp | rbx = rbp; 0x00407d93 cmp rbp, 0x21 | | if (rbp == 0x21) { 0x00407d97 je 0x407e8f | goto label_22; | } 0x00407d9d mov rax, qword [rip + 0x2609dc] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00407da4 test rax, rax | | if (rax == 0) { 0x00407da7 jne 0x407dae | 0x00407da9 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00407dae mov qword [rsp + 0x10], 0 | *((rsp + 0x10)) = 0; 0x00407db7 mov qword [rsp + 0x38], rax | *((rsp + 0x38)) = rax; 0x00407dbc movaps xmm0, xmmword [rip + 0x40d2d] | xmm0 = .comment; 0x00407dc3 movups xmmword [rsp + 0x28], xmm0 | __asm ("movups xmmword [rsp + 0x28], xmm0"); 0x00407dc8 mov ecx, 0x44a14b | 0x00407dcd mov rdi, r12 | 0x00407dd0 mov rsi, rbx | 0x00407dd3 mov edx, 0x61 | 0x00407dd8 call 0x425b40 | bsl::basic_string,bsl::allocator>::privateAppend(unsigned long,char,char const*) (r12, rbx, 0x61, "string<...>::assign(n,c): string too long"); 0x00407ddd cmp qword [rsp + 0x30], 0x17 | 0x00407de3 mov rsi, r12 | rsi = r12; | if (*((rsp + 0x30)) != 0x17) { 0x00407de6 je 0x407ded | 0x00407de8 mov rsi, qword [rsp + 0x10] | | } 0x00407ded lea rbp, [rbx + 1] | rbp = rbx + 1; 0x00407df1 mov rdi, r14 | 0x00407df4 mov edx, ebp | 0x00407df6 xor ecx, ecx | 0x00407df8 xor r8d, r8d | 0x00407dfb xor r9d, r9d | 0x00407dfe call 0x413490 | rax = BloombergLP::ball::CategoryManager::setThresholdLevels(char const*,int,int,int,int) (r14, *((rsp + 0x10)), ebp, 0, 0, 0); 0x00407e03 mov rcx, qword [rsp + 0x68] | rcx = *((rsp + 0x68)); 0x00407e08 mov qword [rcx + rbx*8], rax | *((rcx + rbx*8)) = rax; 0x00407e0c mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x00407e11 cmp qword [rax + rbx*8], 0 | | if (*((rax + rbx*8)) == 0) { 0x00407e16 jne 0x407e6e | 0x00407e18 mov edi, 0x667f48 | 0x00407e1d mov esi, 0x44c0e5 | 0x00407e22 mov edx, 1 | 0x00407e27 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x00407e2c mov esi, 0x448d51 | 0x00407e31 mov edx, 2 | 0x00407e36 mov rdi, rax | 0x00407e39 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00407e3e mov rdi, rax | rdi = rax; 0x00407e41 mov esi, ebx | esi = ebx; 0x00407e43 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00407e48 mov esi, 0x44abfd | 0x00407e4d mov edx, 1 | 0x00407e52 mov rdi, rax | 0x00407e55 call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00407e5a mov esi, 0x449348 | esi = "CATEGORIES[i]"; 0x00407e5f mov edi, 1 | edi = 1; 0x00407e64 mov edx, 0x35b | edx = 0x35b; 0x00407e69 call 0x405630 | symaSsErT(int (); | } 0x00407e6e cmp qword [rsp + 0x30], 0x17 | 0x00407e74 je 0x407d90 | | } 0x00407e7a mov rsi, qword [rsp + 0x10] | rsi = *((rsp + 0x10)); 0x00407e7f mov rdi, qword [rsp + 0x38] | rdi = *((rsp + 0x38)); 0x00407e84 mov rax, qword [rdi] | rax = *(rdi); 0x00407e87 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00407e8a jmp 0x407d90 | goto label_0; | label_22: 0x00407e8f mov qword [rsp + 0x90], 0x448ba0 | *((rsp + 0x90)) = vtable.AttributeSet.0; 0x00407e9b mov rax, qword [rip + 0x2608de] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00407ea2 test rax, rax | | if (rax == 0) { 0x00407ea5 jne 0x407eac | 0x00407ea7 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00407eac mov qword [rsp + 0x98], rax | *((rsp + 0x98)) = rax; 0x00407eb4 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x00407eb7 movups xmmword [rsp + 0xa0], xmm0 | __asm ("movups xmmword [rsp + 0xa0], xmm0"); 0x00407ebf mov dword [rsp + 0xb0], 1 | *((rsp + 0xb0)) = 1; 0x00407eca lea rax, [rsp + 0xb8] | rax = rsp + 0xb8; 0x00407ed2 mov dword [rsp + 0xd0], 0 | *((rsp + 0xd0)) = 0; 0x00407edd mov qword [rsp + 0xc8], rax | *((rsp + 0xc8)) = rax; 0x00407ee5 mov qword [rsp + 0xc0], 0 | *((rsp + 0xc0)) = 0; 0x00407ef1 xor ebp, ebp | ebp = 0; 0x00407ef3 mov r14d, 0xffffffff | r14d = 0xffffffff; 0x00407ef9 lea rbx, [rsp + 0x10] | rbx = rsp + 0x10; 0x00407efe jmp 0x407f0b | | while (*((rsp + 0x48)) != 3) { | label_1: 0x00407f00 inc ebp | ebp++; 0x00407f02 cmp ebp, 0x20 | | if (ebp == 0x20) { 0x00407f05 je 0x407fd1 | goto label_23; | } 0x00407f0b mov rax, qword [rip + 0x26086e] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00407f12 test rax, rax | | if (rax == 0) { 0x00407f15 jne 0x407f1c | 0x00407f17 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00407f1c mov qword [rsp + 0x10], 0x448ed0 | *((rsp + 0x10)) = "uuid"; 0x00407f25 mov dword [rsp + 0x48], 0 | *((rsp + 0x48)) = 0; 0x00407f2d test rax, rax | | if (rax == 0) { 0x00407f30 jne 0x407f3e | 0x00407f32 mov rax, qword [rip + 0x260847] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00407f39 test rax, rax | | if (rax == 0) { 0x00407f3c je 0x407f88 | goto label_24; | } | } 0x00407f3e mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00407f43 mov qword [rsp + 0x58], r14 | *((rsp + 0x58)) = r14; | label_2: 0x00407f48 mov dword [rsp + 0x18], ebp | *((rsp + 0x18)) = ebp; 0x00407f4c mov dword [rsp + 0x48], 1 | *((rsp + 0x48)) = 1; | label_3: 0x00407f54 lea rdi, [rsp + 0x98] | 0x00407f5c mov rsi, rbx | 0x00407f5f call 0x40fe00 | bsl::set>::insert(BloombergLP::ball::Attributeconst&) (rsp + 0x98, rbx); 0x00407f64 cmp dword [rsp + 0x48], 3 | 0x00407f69 jne 0x407f00 | | } 0x00407f6b cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) == 0x17) { 0x00407f71 je 0x407f00 | goto label_1; | } 0x00407f73 mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x00407f78 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00407f7d mov rax, qword [rdi] | rax = *(rdi); 0x00407f80 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00407f83 jmp 0x407f00 | goto label_1; | label_24: 0x00407f88 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00407f8d mov ecx, dword [rsp + 0x48] | ecx = *((rsp + 0x48)); 0x00407f91 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00407f96 mov qword [rsp + 0x58], r14 | *((rsp + 0x58)) = r14; 0x00407f9b cmp ecx, 3 | | if (ecx == 3) { 0x00407f9e je 0x407fab | goto label_25; | } 0x00407fa0 cmp ecx, 1 | | if (ecx != 1) { 0x00407fa3 jne 0x407f48 | goto label_2; | } 0x00407fa5 mov dword [rsp + 0x18], ebp | *((rsp + 0x18)) = ebp; 0x00407fa9 jmp 0x407f54 | goto label_3; | label_25: 0x00407fab cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) != 0x17) { 0x00407fb1 je 0x407fc3 | 0x00407fb3 mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x00407fb8 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00407fbd mov rax, qword [rdi] | rax = *(rdi); 0x00407fc0 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407fc3 mov qword [rsp + 0x30], 0xffffffffffffffff | *((rsp + 0x30)) = 0xffffffffffffffff; 0x00407fcc jmp 0x407f48 | goto label_2; | label_23: 0x00407fd1 mov qword [r13 + 0x20], 0 | *((r13 + 0x20)) = 0; 0x00407fd9 mov qword [r13 + 0x28], 0xffffffffffffffff | *((r13 + 0x28)) = 0xffffffffffffffff; 0x00407fe1 lea rdi, [rsp + 0x88] | 0x00407fe9 lea rdx, [rsp + 0x90] | 0x00407ff1 mov rsi, r13 | 0x00407ff4 call 0x411d90 | BloombergLP::ball::AttributeContainerList::pushFront(BloombergLP::ball::AttributeContainerconst*) (rsp + 0x88, r13, rsp + 0x90); 0x00407ff9 xor ebx, ebx | ebx = 0; 0x00407ffb mov r14d, 0xffffffff | r14d = 0xffffffff; 0x00408001 lea rbp, [rsp + 0x10] | rbp = rsp + 0x10; 0x00408006 jmp 0x40801b | | while (*((rsp + 0x48)) != 3) { | label_4: 0x00408010 inc ebx | ebx++; 0x00408012 cmp ebx, 0x20 | | if (ebx == 0x20) { 0x00408015 je 0x408149 | goto label_26; | } 0x0040801b mov rax, qword [rip + 0x26075e] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00408022 test rax, rax | | if (rax == 0) { 0x00408025 jne 0x40802c | 0x00408027 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x0040802c mov qword [rsp + 0x10], 0x448ed0 | *((rsp + 0x10)) = "uuid"; 0x00408035 mov dword [rsp + 0x48], 0 | *((rsp + 0x48)) = 0; 0x0040803d test rax, rax | | if (rax == 0) { 0x00408040 jne 0x408052 | 0x00408042 mov rax, qword [rip + 0x260737] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00408049 test rax, rax | | if (rax == 0) { 0x0040804c je 0x4080f9 | goto label_27; | } | } 0x00408052 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00408057 mov qword [rsp + 0x58], r14 | *((rsp + 0x58)) = r14; | label_5: 0x0040805c mov dword [rsp + 0x18], ebx | *((rsp + 0x18)) = ebx; 0x00408060 mov dword [rsp + 0x48], 1 | *((rsp + 0x48)) = 1; | label_6: 0x00408068 mov rdi, r13 | 0x0040806b mov rsi, rbp | 0x0040806e call 0x411e90 | al = BloombergLP::ball::AttributeContainerList::hasValue(BloombergLP::ball::Attributeconst&)const (r13, rbp); 0x00408073 test al, al | | if (al == 0) { 0x00408075 jne 0x4080cd | 0x00408077 mov edi, 0x667f48 | 0x0040807c mov esi, 0x44c0e5 | 0x00408081 mov edx, 1 | 0x00408086 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x0040808b mov esi, 0x448d51 | 0x00408090 mov edx, 2 | 0x00408095 mov rdi, rax | 0x00408098 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x0040809d mov rdi, rax | rdi = rax; 0x004080a0 mov esi, ebx | esi = ebx; 0x004080a2 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x004080a7 mov esi, 0x44abfd | 0x004080ac mov edx, 1 | 0x004080b1 mov rdi, rax | 0x004080b4 call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x004080b9 mov esi, 0x449356 | esi = "true == X.hasAttribute(attribute)"; 0x004080be mov edi, 1 | edi = 1; 0x004080c3 mov edx, 0x36c | edx = 0x36c; 0x004080c8 call 0x405630 | symaSsErT(int (); | } 0x004080cd cmp dword [rsp + 0x48], 3 | 0x004080d2 jne 0x408010 | | } 0x004080d8 cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) == 0x17) { 0x004080de je 0x408010 | goto label_4; | } 0x004080e4 mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x004080e9 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x004080ee mov rax, qword [rdi] | rax = *(rdi); 0x004080f1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004080f4 jmp 0x408010 | goto label_4; | label_27: 0x004080f9 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x004080fe mov ecx, dword [rsp + 0x48] | ecx = *((rsp + 0x48)); 0x00408102 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00408107 mov qword [rsp + 0x58], r14 | *((rsp + 0x58)) = r14; 0x0040810c cmp ecx, 3 | | if (ecx == 3) { 0x0040810f je 0x408123 | goto label_28; | } 0x00408111 cmp ecx, 1 | | if (ecx != 1) { 0x00408114 jne 0x40805c | goto label_5; | } 0x0040811a mov dword [rsp + 0x18], ebx | *((rsp + 0x18)) = ebx; 0x0040811e jmp 0x408068 | goto label_6; | label_28: 0x00408123 cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) != 0x17) { 0x00408129 je 0x40813b | 0x0040812b mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x00408130 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00408135 mov rax, qword [rdi] | rax = *(rdi); 0x00408138 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040813b mov qword [rsp + 0x30], 0xffffffffffffffff | *((rsp + 0x30)) = 0xffffffffffffffff; 0x00408144 jmp 0x40805c | goto label_5; | label_26: 0x00408149 xor ebx, ebx | ebx = 0; 0x0040814b mov ebp, 1 | | do { | label_7: 0x00408150 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x00408155 mov rsi, qword [rax + rbp*8] | 0x00408159 mov rdi, r13 | 0x0040815c call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r13, *((rax + rbp*8))); 0x00408161 movzx eax, al | eax = (int32_t) al; 0x00408164 add ebx, eax | ebx += eax; 0x00408166 inc rbp | rbp++; 0x00408169 cmp rbp, 0x21 | 0x0040816d jne 0x408150 | | } while (rbp != 0x21); 0x0040816f mov ebp, 1 | 0x00408174 cmp ebx, 0x20 | 0x00408177 mov ebx, 0 | ebx = 0; | if (ebx != 0x20) { 0x0040817c jne 0x408150 | goto label_7; | } 0x0040817e mov edi, 0x6680a8 | 0x00408183 call 0x4206d0 | BloombergLP::bslmt::Barrier::wait() (obj.BALL_ATTRIBUTECONTEXT_TEST_CASE_4::barrier); 0x00408188 cmp byte [rip + 0x25fe9e], 0 | | if (*(obj.veryVerbose) != 0) { 0x0040818f je 0x40824d | 0x00408195 mov edi, 0x668000 | edi = coutMutex; 0x0040819a call 0x404640 | pthread_mutex_lock (); 0x0040819f call 0x404250 | eax = pthread_self (); 0x004081a4 movsxd rsi, eax | rsi = (int64_t) eax; 0x004081a7 mov edi, 0x667f48 | edi = std::__1::cout; 0x004081ac call 0x404230 | rax = std::_1::basic_ostream>::operator << (unsigned long long) (); 0x004081b1 mov esi, 0x448d51 | 0x004081b6 mov edx, 2 | 0x004081bb mov rdi, rax | 0x004081be call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x004081c3 mov esi, 0x449378 | 0x004081c8 mov edx, 0x2f | 0x004081cd mov rdi, rax | 0x004081d0 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, "\n\tPhase 2: Verify 'hasRelevantActiveRules' and ", 0x2f); 0x004081d5 mov esi, 0x4493a8 | 0x004081da mov edx, 0x1b | 0x004081df mov rdi, rax | 0x004081e2 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 'determineThresholdLevels'.", 0x1b); 0x004081e7 mov rbx, rax | rbx = rax; 0x004081ea mov rax, qword [rax] | rax = *(rax); 0x004081ed mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x004081f1 add rsi, rbx | rsi += rbx; 0x004081f4 lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x004081f9 call 0x404420 | std::_1::ios_base::getloc()const (); 0x004081fe lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00408203 mov esi, 0x667e90 | esi = std::__1::ctype::id; 0x00408208 call 0x404550 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x0040820d mov rcx, qword [rax] | rcx = *(rax); 0x00408210 mov rdi, rax | rdi = rax; 0x00408213 mov esi, 0xa | esi = 0xa; 0x00408218 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x0040821b mov ebp, eax | 0x0040821d lea rdi, [rsp + 0x10] | rdi = rsp + 0x10; 0x00408222 call 0x4045e0 | std::_1::locale::~locale() (); 0x00408227 movsx esi, bpl | esi = (int32_t) bpl; 0x0040822b mov rdi, rbx | rdi = rbx; 0x0040822e call 0x404210 | std::_1::basic_ostream>::put(char) (); 0x00408233 mov rdi, rbx | rdi = rbx; 0x00408236 call 0x4043e0 | std::_1::basic_ostream>::flush() (); 0x0040823b mov rdi, rbx | rdi = rbx; 0x0040823e call 0x4043e0 | std::_1::basic_ostream>::flush() (); 0x00408243 mov edi, 0x668000 | edi = coutMutex; 0x00408248 call 0x404720 | pthread_mutex_unlock (); | } 0x0040824d mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x00408252 mov rsi, qword [rax] | 0x00408255 mov rdi, r13 | 0x00408258 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r13, *(rax)); 0x0040825d movzx edi, al | edi = (int32_t) al; 0x00408260 mov esi, 0x4493c4 | esi = "!X.hasRelevantActiveRules(CATEGORIES[0])"; 0x00408265 mov edx, 0x385 | edx = 0x385; 0x0040826a call 0x405630 | symaSsErT(int (); 0x0040826f mov ebx, 1 | ebx = 1; 0x00408274 jmp 0x4082a9 | | while (al != 0) { | label_8: 0x00408280 movzx eax, bl | eax = (int32_t) bl; 0x00408283 imul eax, eax, 0xcd | eax *= 0xcd; 0x00408289 shr eax, 0xa | eax >>= 0xa; 0x0040828c lea eax, [rax + rax*4] | eax = rax * 5; 0x0040828f neg eax | eax = -eax; 0x00408291 movzx eax, al | eax = (int32_t) al; 0x00408294 add al, bl | al += bl; | if (al == 0) { 0x00408296 je 0x408320 | goto label_29; | } | label_9: 0x0040829c inc rbx | rbx++; 0x0040829f cmp rbx, 0x21 | | if (rbx == 0x21) { 0x004082a3 je 0x408335 | goto label_30; | } 0x004082a9 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x004082ae mov rsi, qword [rax + rbx*8] | 0x004082b2 mov rdi, r13 | 0x004082b5 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r13, *((rax + rbx*8))); 0x004082ba test al, al | 0x004082bc jne 0x408280 | | } 0x004082be mov edi, 0x667f48 | 0x004082c3 mov esi, 0x44c0e5 | 0x004082c8 mov edx, 1 | 0x004082cd call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x004082d2 mov esi, 0x448d51 | 0x004082d7 mov edx, 2 | 0x004082dc mov rdi, rax | 0x004082df call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x004082e4 mov rdi, rax | rdi = rax; 0x004082e7 mov esi, ebx | esi = ebx; 0x004082e9 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x004082ee mov esi, 0x44abfd | 0x004082f3 mov edx, 1 | 0x004082f8 mov rdi, rax | 0x004082fb call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00408300 mov esi, 0x4496ee | esi = 0x4496ee; 0x00408305 mov edi, 1 | edi = 1; 0x0040830a mov edx, 0x387 | edx = 0x387; 0x0040830f call 0x405630 | symaSsErT(int (); 0x00408314 jmp 0x408280 | goto label_8; | label_29: 0x00408320 mov qword [r13 + 0x20], 0 | *((r13 + 0x20)) = 0; 0x00408328 mov qword [r13 + 0x28], 0xffffffffffffffff | *((r13 + 0x28)) = 0xffffffffffffffff; 0x00408330 jmp 0x40829c | goto label_9; | label_30: 0x00408335 mov dword [rsp + 0xc], 0 | *((rsp + 0xc)) = 0; 0x0040833d mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x00408342 mov rdx, qword [rax] | 0x00408345 lea rsi, [rsp + 0xc] | 0x0040834a mov rdi, r13 | 0x0040834d call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r13, rsp + 0xc, *(rax)); 0x00408352 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x00408357 mov rax, qword [rax] | rax = *(rax); 0x0040835a mov al, byte [rax] | al = *(rax); 0x0040835c xor edi, edi | edi = 0; 0x0040835e cmp al, byte [rsp + 0xc] | 0x00408362 setne dil | dil = (al != *((rsp + 0xc))) ? 1 : 0; 0x00408366 mov esi, 0x4493ed | esi = "CATEGORIES[0]->recordLevel() == levels.recordLevel()"; 0x0040836b mov edx, 0x395 | edx = 0x395; 0x00408370 call 0x405630 | symaSsErT(int (); 0x00408375 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x0040837a mov rax, qword [rax] | rax = *(rax); 0x0040837d mov al, byte [rax + 1] | al = *((rax + 1)); 0x00408380 xor edi, edi | edi = 0; 0x00408382 cmp al, byte [rsp + 0xd] | 0x00408386 setne dil | dil = (al != *((rsp + 0xd))) ? 1 : 0; 0x0040838a mov esi, 0x449422 | esi = "CATEGORIES[0]->passLevel() == levels.passLevel()"; 0x0040838f mov edx, 0x396 | edx = 0x396; 0x00408394 call 0x405630 | symaSsErT(int (); 0x00408399 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x0040839e mov rax, qword [rax] | rax = *(rax); 0x004083a1 mov al, byte [rax + 2] | al = *((rax + 2)); 0x004083a4 xor edi, edi | edi = 0; 0x004083a6 cmp al, byte [rsp + 0xe] | 0x004083aa setne dil | dil = (al != *((rsp + 0xe))) ? 1 : 0; 0x004083ae mov esi, 0x449453 | esi = "CATEGORIES[0]->triggerLevel() == levels.triggerLevel()"; 0x004083b3 mov edx, 0x397 | edx = 0x397; 0x004083b8 call 0x405630 | symaSsErT(int (); 0x004083bd mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x004083c2 mov rax, qword [rax] | rax = *(rax); 0x004083c5 mov al, byte [rax + 3] | al = *((rax + 3)); 0x004083c8 xor edi, edi | edi = 0; 0x004083ca cmp al, byte [rsp + 0xf] | 0x004083ce setne dil | dil = (al != *((rsp + 0xf))) ? 1 : 0; 0x004083d2 mov esi, 0x44948a | esi = "CATEGORIES[0]->triggerAllLevel() == levels.triggerAllLevel()"; 0x004083d7 mov edx, 0x398 | edx = 0x398; 0x004083dc call 0x405630 | symaSsErT(int (); 0x004083e1 mov ebx, 1 | ebx = 1; 0x004083e6 lea rbp, [rsp + 0xc] | rbp = rsp + 0xc; 0x004083eb jmp 0x408419 | | while (rbx == rax) { | label_10: 0x004083f0 movzx eax, bl | eax = (int32_t) bl; 0x004083f3 imul eax, eax, 0xab | eax *= 0xab; 0x004083f9 shr eax, 9 | eax >>= 9; 0x004083fc lea eax, [rax + rax*2] | eax = rax * 3; 0x004083ff neg eax | eax = -eax; 0x00408401 movzx eax, al | eax = (int32_t) al; 0x00408404 add al, bl | al += bl; | if (al == 0) { 0x00408406 je 0x4085c0 | goto label_31; | } | label_11: 0x0040840c inc rbx | rbx++; 0x0040840f cmp rbx, 0x21 | | if (rbx == 0x21) { 0x00408413 je 0x4085d5 | goto label_32; | } 0x00408419 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x0040841e mov rdx, qword [rax + rbx*8] | 0x00408422 mov rdi, r13 | 0x00408425 mov rsi, rbp | 0x00408428 call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r13, rbp, *((rax + rbx*8))); 0x0040842d mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x00408432 mov rax, qword [rax + rbx*8] | rax = *((rax + rbx*8)); 0x00408436 movzx eax, byte [rax] | eax = *(rax); 0x00408439 cmp al, byte [rsp + 0xc] | | if (al != *((rsp + 0xc))) { 0x0040843d je 0x408495 | 0x0040843f mov edi, 0x667f48 | 0x00408444 mov esi, 0x44c0e5 | 0x00408449 mov edx, 1 | 0x0040844e call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x00408453 mov esi, 0x448d51 | 0x00408458 mov edx, 2 | 0x0040845d mov rdi, rax | 0x00408460 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408465 mov rdi, rax | rdi = rax; 0x00408468 mov esi, ebx | esi = ebx; 0x0040846a call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x0040846f mov esi, 0x44abfd | 0x00408474 mov edx, 1 | 0x00408479 mov rdi, rax | 0x0040847c call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00408481 mov esi, 0x4494c7 | esi = "CATEGORIES[i]->recordLevel() == levels.recordLevel()"; 0x00408486 mov edi, 1 | edi = 1; 0x0040848b mov edx, 0x3a0 | edx = 0x3a0; 0x00408490 call 0x405630 | symaSsErT(int (); | } 0x00408495 movzx eax, byte [rsp + 0xd] | eax = *((rsp + 0xd)); 0x0040849a cmp rbx, rax | | if (rbx != rax) { 0x0040849d je 0x4084f5 | 0x0040849f mov edi, 0x667f48 | 0x004084a4 mov esi, 0x44c0e5 | 0x004084a9 mov edx, 1 | 0x004084ae call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x004084b3 mov esi, 0x448d51 | 0x004084b8 mov edx, 2 | 0x004084bd mov rdi, rax | 0x004084c0 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x004084c5 mov rdi, rax | rdi = rax; 0x004084c8 mov esi, ebx | esi = ebx; 0x004084ca call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x004084cf mov esi, 0x44abfd | 0x004084d4 mov edx, 1 | 0x004084d9 mov rdi, rax | 0x004084dc call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x004084e1 mov esi, 0x4494fc | esi = "i == levels.passLevel()"; 0x004084e6 mov edi, 1 | edi = 1; 0x004084eb mov edx, 0x3a1 | edx = 0x3a1; 0x004084f0 call 0x405630 | symaSsErT(int (); | } 0x004084f5 movzx eax, byte [rsp + 0xe] | eax = *((rsp + 0xe)); 0x004084fa cmp rbx, rax | | if (rbx != rax) { 0x004084fd je 0x408555 | 0x004084ff mov edi, 0x667f48 | 0x00408504 mov esi, 0x44c0e5 | 0x00408509 mov edx, 1 | 0x0040850e call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x00408513 mov esi, 0x448d51 | 0x00408518 mov edx, 2 | 0x0040851d mov rdi, rax | 0x00408520 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408525 mov rdi, rax | rdi = rax; 0x00408528 mov esi, ebx | esi = ebx; 0x0040852a call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x0040852f mov esi, 0x44abfd | 0x00408534 mov edx, 1 | 0x00408539 mov rdi, rax | 0x0040853c call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00408541 mov esi, 0x449514 | esi = "i == levels.triggerLevel()"; 0x00408546 mov edi, 1 | edi = 1; 0x0040854b mov edx, 0x3a2 | edx = 0x3a2; 0x00408550 call 0x405630 | symaSsErT(int (); | } 0x00408555 movzx eax, byte [rsp + 0xf] | eax = *((rsp + 0xf)); 0x0040855a cmp rbx, rax | 0x0040855d je 0x4083f0 | | } 0x00408563 mov edi, 0x667f48 | 0x00408568 mov esi, 0x44c0e5 | 0x0040856d mov edx, 1 | 0x00408572 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x00408577 mov esi, 0x448d51 | 0x0040857c mov edx, 2 | 0x00408581 mov rdi, rax | 0x00408584 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408589 mov rdi, rax | rdi = rax; 0x0040858c mov esi, ebx | esi = ebx; 0x0040858e call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408593 mov esi, 0x44abfd | 0x00408598 mov edx, 1 | 0x0040859d mov rdi, rax | 0x004085a0 call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x004085a5 mov esi, 0x44952f | esi = "i == levels.triggerAllLevel()"; 0x004085aa mov edi, 1 | edi = 1; 0x004085af mov edx, 0x3a3 | edx = 0x3a3; 0x004085b4 call 0x405630 | symaSsErT(int (); 0x004085b9 jmp 0x4083f0 | goto label_10; | label_31: 0x004085c0 mov qword [r13 + 0x20], 0 | *((r13 + 0x20)) = 0; 0x004085c8 mov qword [r13 + 0x28], 0xffffffffffffffff | *((r13 + 0x28)) = 0xffffffffffffffff; 0x004085d0 jmp 0x40840c | goto label_11; | label_32: 0x004085d5 xor r12d, r12d | r12d = 0; 0x004085d8 lea rbx, [rsp + 0x90] | rbx = rsp + 0x90; 0x004085e0 jmp 0x408605 | goto label_33; | label_13: 0x004085f0 inc r12 | r12++; 0x004085f3 cmp r12, 0x20 | 0x004085f7 lea rbx, [rsp + 0x90] | rbx = rsp + 0x90; | if (r12 == 0x20) { 0x004085ff je 0x408cb1 | goto label_34; | } | label_33: 0x00408605 mov rax, qword [rsp + 0x88] | rax = *((rsp + 0x88)); 0x0040860d mov qword [rsp + 0xe0], rax | *((rsp + 0xe0)) = rax; 0x00408615 mov qword [r13 + 0x20], 0 | *((r13 + 0x20)) = 0; 0x0040861d mov qword [r13 + 0x28], 0xffffffffffffffff | *((r13 + 0x28)) = 0xffffffffffffffff; 0x00408625 mov rdi, r13 | 0x00408628 lea rsi, [rsp + 0xe0] | 0x00408630 call 0x411e00 | BloombergLP::ball::AttributeContainerList::remove(BloombergLP::ball::AttributeContainerListIteratorconst&) (r13, rsp + 0xe0); 0x00408635 mov rax, qword [rip + 0x260144] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040863c test rax, rax | | if (rax == 0) { 0x0040863f jne 0x408646 | 0x00408641 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00408646 mov ebp, 0x1f | 0x0040864b sub rbp, r12 | rbp -= r12; 0x0040864e mov qword [rsp + 0x10], 0x448ed0 | *((rsp + 0x10)) = "uuid"; 0x00408657 mov dword [rsp + 0x48], 0 | *((rsp + 0x48)) = 0; 0x0040865f test rax, rax | | if (rax == 0) { 0x00408662 jne 0x408674 | 0x00408664 mov rax, qword [rip + 0x260115] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040866b test rax, rax | | if (rax == 0) { 0x0040866e je 0x408c5c | goto label_35; | } | } 0x00408674 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00408679 mov eax, 0xffffffff | eax = 0xffffffff; 0x0040867e mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; | label_14: 0x00408683 mov dword [rsp + 0x18], ebp | *((rsp + 0x18)) = ebp; 0x00408687 mov dword [rsp + 0x48], 1 | *((rsp + 0x48)) = 1; | label_15: 0x0040868f mov rdi, rbx | 0x00408692 lea rsi, [rsp + 0x10] | 0x00408697 call 0x4057c0 | AttributeSet::remove(BloombergLP::ball::Attributeconst&) (rbx, rsp + 0x10); 0x0040869c mov qword [r13 + 0x20], 0 | *((r13 + 0x20)) = 0; 0x004086a4 mov qword [r13 + 0x28], 0xffffffffffffffff | *((r13 + 0x28)) = 0xffffffffffffffff; 0x004086ac lea rdi, [rsp + 0x60] | 0x004086b1 mov rsi, r13 | 0x004086b4 mov rdx, rbx | 0x004086b7 call 0x411d90 | BloombergLP::ball::AttributeContainerList::pushFront(BloombergLP::ball::AttributeContainerconst*) (rsp + 0x60, r13, rbx); 0x004086bc mov rax, qword [rsp + 0x60] | rax = *((rsp + 0x60)); 0x004086c1 mov qword [rsp + 0x88], rax | *((rsp + 0x88)) = rax; 0x004086c9 cmp byte [rip + 0x25f95e], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x004086d0 je 0x408785 | 0x004086d6 mov edi, 0x668000 | edi = coutMutex; 0x004086db call 0x404640 | pthread_mutex_lock (); 0x004086e0 call 0x404250 | eax = pthread_self (); 0x004086e5 movsxd rsi, eax | rsi = (int64_t) eax; 0x004086e8 mov edi, 0x667f48 | edi = std::__1::cout; 0x004086ed call 0x404230 | rax = std::_1::basic_ostream>::operator << (unsigned long long) (); 0x004086f2 mov esi, 0x448d51 | 0x004086f7 mov edx, 2 | 0x004086fc mov rdi, rax | 0x004086ff call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408704 mov esi, 0x44954d | 0x00408709 mov edx, 0x1d | 0x0040870e mov rdi, rax | 0x00408711 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, "\n\t\tRemoving attribute uuid = ", 0x1d); 0x00408716 mov rdi, rax | rdi = rax; 0x00408719 mov esi, ebp | esi = ebp; 0x0040871b call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408720 mov rbp, rax | 0x00408723 mov rax, qword [rax] | rax = *(rax); 0x00408726 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x0040872a add rsi, rbp | rsi += rbp; 0x0040872d lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x00408732 call 0x404420 | std::_1::ios_base::getloc()const (); 0x00408737 mov esi, 0x667e90 | esi = std::__1::ctype::id; 0x0040873c lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x00408741 call 0x404550 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00408746 mov rcx, qword [rax] | rcx = *(rax); 0x00408749 mov rdi, rax | rdi = rax; 0x0040874c mov esi, 0xa | esi = 0xa; 0x00408751 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00408754 mov ebx, eax | ebx = eax; 0x00408756 lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x0040875b call 0x4045e0 | std::_1::locale::~locale() (); 0x00408760 movsx esi, bl | esi = (int32_t) bl; 0x00408763 mov rdi, rbp | rdi = rbp; 0x00408766 call 0x404210 | std::_1::basic_ostream>::put(char) (); 0x0040876b mov rdi, rbp | rdi = rbp; 0x0040876e call 0x4043e0 | std::_1::basic_ostream>::flush() (); 0x00408773 mov rdi, rbp | rdi = rbp; 0x00408776 call 0x4043e0 | std::_1::basic_ostream>::flush() (); 0x0040877b mov edi, 0x668000 | edi = coutMutex; 0x00408780 call 0x404720 | pthread_mutex_unlock (); | } 0x00408785 xor ebp, ebp | ebp = 0; 0x00408787 jmp 0x4087a0 | | while (ebx == eax) { | label_12: 0x00408790 inc rbp | rbp++; 0x00408793 cmp rbp, 0x21 | 0x00408797 mov r13, r15 | r13 = r15; | if (rbp == 0x21) { 0x0040879a je 0x408c30 | goto label_36; | } 0x004087a0 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x004087a5 mov rsi, qword [rax + rbp*8] | 0x004087a9 mov r15, r13 | r15 = r13; 0x004087ac mov rdi, r13 | 0x004087af call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r13, *((rax + rbp*8))); 0x004087b4 lea r14, [rbp - 1] | r14 = rbp - 1; 0x004087b8 cmp r14, r12 | 0x004087bb setg cl | cl = (r14 > r12) ? 1 : 0; 0x004087be cmp cl, al | | if (cl != al) { 0x004087c0 je 0x40885d | 0x004087c6 mov edi, 0x667f48 | 0x004087cb mov esi, 0x44c0e5 | 0x004087d0 mov edx, 1 | 0x004087d5 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x004087da mov esi, 0x448d51 | 0x004087df mov edx, 2 | 0x004087e4 mov rdi, rax | 0x004087e7 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x004087ec mov rdi, rax | rdi = rax; 0x004087ef mov esi, r12d | esi = r12d; 0x004087f2 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x004087f7 mov esi, 0x44acc0 | 0x004087fc mov edx, 1 | 0x00408801 mov rdi, rax | 0x00408804 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44acc0, 1); 0x00408809 mov esi, 0x44956b | 0x0040880e mov edx, 1 | 0x00408813 mov rdi, rax | 0x00408816 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44956b, 1); 0x0040881b mov esi, 0x448d51 | 0x00408820 mov edx, 2 | 0x00408825 mov rdi, rax | 0x00408828 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x0040882d mov rdi, rax | rdi = rax; 0x00408830 mov esi, ebp | esi = ebp; 0x00408832 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408837 mov esi, 0x44abfd | 0x0040883c mov edx, 1 | 0x00408841 mov rdi, rax | 0x00408844 call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00408849 mov esi, 0x44956d | esi = "(j - 1 > i) == X.hasRelevantActiveRules(CATEGORIES[j])"; 0x0040884e mov edi, 1 | edi = 1; 0x00408853 mov edx, 0x3bd | edx = 0x3bd; 0x00408858 call 0x405630 | symaSsErT(int (); | } 0x0040885d mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x00408862 mov rdx, qword [rax + rbp*8] | 0x00408866 mov rdi, r15 | 0x00408869 lea rsi, [rsp + 0xc] | 0x0040886e call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0xc, *((rax + rbp*8))); 0x00408873 cmp byte [rip + 0x25f7b4], 0 | | if (*(obj.veryVeryVerbose) != 0) { 0x0040887a je 0x408986 | 0x00408880 mov edi, 0x668000 | edi = coutMutex; 0x00408885 call 0x404640 | pthread_mutex_lock (); 0x0040888a call 0x404250 | eax = pthread_self (); 0x0040888f movsxd rsi, eax | rsi = (int64_t) eax; 0x00408892 mov edi, 0x667f48 | edi = std::__1::cout; 0x00408897 call 0x404230 | rax = std::_1::basic_ostream>::operator << (unsigned long long) (); 0x0040889c mov esi, 0x448d51 | 0x004088a1 mov edx, 2 | 0x004088a6 mov rdi, rax | 0x004088a9 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x004088ae mov esi, 0x4495a4 | 0x004088b3 mov edx, 0xc | 0x004088b8 mov rdi, rax | 0x004088bb call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, "\n\t\tCategory ", 0xc); 0x004088c0 mov rdi, rax | rdi = rax; 0x004088c3 mov esi, ebp | esi = ebp; 0x004088c5 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x004088ca mov esi, 0x4495b1 | 0x004088cf mov edx, 0x1c | 0x004088d4 mov rdi, rax | 0x004088d7 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, " -- hasRelevantActiveRules: ", 0x1c); 0x004088dc mov rbx, rax | rbx = rax; 0x004088df mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x004088e4 mov rsi, qword [rax + rbp*8] | 0x004088e8 mov rdi, r15 | 0x004088eb call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, *((rax + rbp*8))); 0x004088f0 movzx esi, al | esi = (int32_t) al; 0x004088f3 mov rdi, rbx | rdi = rbx; 0x004088f6 call 0x404140 | rax = std::_1::basic_ostream>::operator << (bool) (); 0x004088fb mov esi, 0x4495ce | 0x00408900 mov edx, 0x16 | 0x00408905 mov rdi, rax | 0x00408908 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, " getThreasholdLevels: ", 0x16); 0x0040890d lea rdi, [rsp + 0xc] | 0x00408912 mov rsi, rax | 0x00408915 xor edx, edx | 0x00408917 mov ecx, 0xffffffff | 0x0040891c call 0x4163a0 | rax = BloombergLP::ball::ThresholdAggregate::print(std::_1::basic_ostream>&,int,int)const (rsp + 0xc, rax, 0, 0xffffffff); 0x00408921 mov r13, rax | r13 = rax; 0x00408924 mov rax, qword [rax] | rax = *(rax); 0x00408927 mov rsi, qword [rax - 0x18] | rsi = *((rax - 0x18)); 0x0040892b add rsi, r13 | rsi += r13; 0x0040892e lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x00408933 call 0x404420 | std::_1::ios_base::getloc()const (); 0x00408938 mov esi, 0x667e90 | esi = std::__1::ctype::id; 0x0040893d lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x00408942 call 0x404550 | rax = std::_1::locale::use_facet(std::_1::locale::id&)const (); 0x00408947 mov rcx, qword [rax] | rcx = *(rax); 0x0040894a mov rdi, rax | rdi = rax; 0x0040894d mov esi, 0xa | esi = 0xa; 0x00408952 call qword [rcx + 0x38] | eax = uint64_t (*rcx + 0x38)() (); 0x00408955 mov ebx, eax | ebx = eax; 0x00408957 lea rdi, [rsp + 0x60] | rdi = rsp + 0x60; 0x0040895c call 0x4045e0 | std::_1::locale::~locale() (); 0x00408961 movsx esi, bl | esi = (int32_t) bl; 0x00408964 mov rdi, r13 | rdi = r13; 0x00408967 call 0x404210 | std::_1::basic_ostream>::put(char) (); 0x0040896c mov rdi, r13 | rdi = r13; 0x0040896f call 0x4043e0 | std::_1::basic_ostream>::flush() (); 0x00408974 mov rdi, r13 | rdi = r13; 0x00408977 call 0x4043e0 | std::_1::basic_ostream>::flush() (); 0x0040897c mov edi, 0x668000 | edi = coutMutex; 0x00408981 call 0x404720 | pthread_mutex_unlock (); | } 0x00408986 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x0040898b mov rax, qword [rax + rbp*8] | rax = *((rax + rbp*8)); 0x0040898f movzx eax, byte [rax] | eax = *(rax); 0x00408992 cmp al, byte [rsp + 0xc] | | if (al != *((rsp + 0xc))) { 0x00408996 je 0x408a33 | 0x0040899c mov edi, 0x667f48 | 0x004089a1 mov esi, 0x44c0e5 | 0x004089a6 mov edx, 1 | 0x004089ab call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x004089b0 mov esi, 0x448d51 | 0x004089b5 mov edx, 2 | 0x004089ba mov rdi, rax | 0x004089bd call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x004089c2 mov rdi, rax | rdi = rax; 0x004089c5 mov esi, r12d | esi = r12d; 0x004089c8 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x004089cd mov esi, 0x44acc0 | 0x004089d2 mov edx, 1 | 0x004089d7 mov rdi, rax | 0x004089da call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44acc0, 1); 0x004089df mov esi, 0x44956b | 0x004089e4 mov edx, 1 | 0x004089e9 mov rdi, rax | 0x004089ec call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44956b, 1); 0x004089f1 mov esi, 0x448d51 | 0x004089f6 mov edx, 2 | 0x004089fb mov rdi, rax | 0x004089fe call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408a03 mov rdi, rax | rdi = rax; 0x00408a06 mov esi, ebp | esi = ebp; 0x00408a08 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408a0d mov esi, 0x44abfd | 0x00408a12 mov edx, 1 | 0x00408a17 mov rdi, rax | 0x00408a1a call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00408a1f mov esi, 0x4495e5 | esi = "CATEGORIES[j]->recordLevel() == levels.recordLevel()"; 0x00408a24 mov edi, 1 | edi = 1; 0x00408a29 mov edx, 0x3ca | edx = 0x3ca; 0x00408a2e call 0x405630 | symaSsErT(int (); | } 0x00408a33 cmp r14, r12 | 0x00408a36 mov ebx, 0 | ebx = 0; | if (r14 > r12) { 0x00408a3b cmovg ebx, ebp | ebx = ebp; | } 0x00408a3e movzx eax, byte [rsp + 0xd] | eax = *((rsp + 0xd)); 0x00408a43 cmp ebx, eax | | if (ebx != eax) { 0x00408a45 je 0x408ae2 | 0x00408a4b mov edi, 0x667f48 | 0x00408a50 mov esi, 0x44c0e5 | 0x00408a55 mov edx, 1 | 0x00408a5a call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x00408a5f mov esi, 0x448d51 | 0x00408a64 mov edx, 2 | 0x00408a69 mov rdi, rax | 0x00408a6c call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408a71 mov rdi, rax | rdi = rax; 0x00408a74 mov esi, r12d | esi = r12d; 0x00408a77 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408a7c mov esi, 0x44acc0 | 0x00408a81 mov edx, 1 | 0x00408a86 mov rdi, rax | 0x00408a89 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44acc0, 1); 0x00408a8e mov esi, 0x44956b | 0x00408a93 mov edx, 1 | 0x00408a98 mov rdi, rax | 0x00408a9b call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44956b, 1); 0x00408aa0 mov esi, 0x448d51 | 0x00408aa5 mov edx, 2 | 0x00408aaa mov rdi, rax | 0x00408aad call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408ab2 mov rdi, rax | rdi = rax; 0x00408ab5 mov esi, ebp | esi = ebp; 0x00408ab7 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408abc mov esi, 0x44abfd | 0x00408ac1 mov edx, 1 | 0x00408ac6 mov rdi, rax | 0x00408ac9 call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00408ace mov esi, 0x44961a | esi = "level == levels.passLevel()"; 0x00408ad3 mov edi, 1 | edi = 1; 0x00408ad8 mov edx, 0x3cc | edx = 0x3cc; 0x00408add call 0x405630 | symaSsErT(int (); | } 0x00408ae2 movzx eax, byte [rsp + 0xe] | eax = *((rsp + 0xe)); 0x00408ae7 cmp ebx, eax | | if (ebx != eax) { 0x00408ae9 je 0x408b86 | 0x00408aef mov edi, 0x667f48 | 0x00408af4 mov esi, 0x44c0e5 | 0x00408af9 mov edx, 1 | 0x00408afe call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x00408b03 mov esi, 0x448d51 | 0x00408b08 mov edx, 2 | 0x00408b0d mov rdi, rax | 0x00408b10 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408b15 mov rdi, rax | rdi = rax; 0x00408b18 mov esi, r12d | esi = r12d; 0x00408b1b call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408b20 mov esi, 0x44acc0 | 0x00408b25 mov edx, 1 | 0x00408b2a mov rdi, rax | 0x00408b2d call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44acc0, 1); 0x00408b32 mov esi, 0x44956b | 0x00408b37 mov edx, 1 | 0x00408b3c mov rdi, rax | 0x00408b3f call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44956b, 1); 0x00408b44 mov esi, 0x448d51 | 0x00408b49 mov edx, 2 | 0x00408b4e mov rdi, rax | 0x00408b51 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408b56 mov rdi, rax | rdi = rax; 0x00408b59 mov esi, ebp | esi = ebp; 0x00408b5b call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408b60 mov esi, 0x44abfd | 0x00408b65 mov edx, 1 | 0x00408b6a mov rdi, rax | 0x00408b6d call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00408b72 mov esi, 0x449636 | esi = "level == levels.triggerLevel()"; 0x00408b77 mov edi, 1 | edi = 1; 0x00408b7c mov edx, 0x3cd | edx = 0x3cd; 0x00408b81 call 0x405630 | symaSsErT(int (); | } 0x00408b86 movzx eax, byte [rsp + 0xf] | eax = *((rsp + 0xf)); 0x00408b8b cmp ebx, eax | 0x00408b8d je 0x408790 | | } 0x00408b93 mov edi, 0x667f48 | 0x00408b98 mov esi, 0x44c0e5 | 0x00408b9d mov edx, 1 | 0x00408ba2 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x00408ba7 mov esi, 0x448d51 | 0x00408bac mov edx, 2 | 0x00408bb1 mov rdi, rax | 0x00408bb4 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408bb9 mov rdi, rax | rdi = rax; 0x00408bbc mov esi, r12d | esi = r12d; 0x00408bbf call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408bc4 mov esi, 0x44acc0 | 0x00408bc9 mov edx, 1 | 0x00408bce mov rdi, rax | 0x00408bd1 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44acc0, 1); 0x00408bd6 mov esi, 0x44956b | 0x00408bdb mov edx, 1 | 0x00408be0 mov rdi, rax | 0x00408be3 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44956b, 1); 0x00408be8 mov esi, 0x448d51 | 0x00408bed mov edx, 2 | 0x00408bf2 mov rdi, rax | 0x00408bf5 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408bfa mov rdi, rax | rdi = rax; 0x00408bfd mov esi, ebp | esi = ebp; 0x00408bff call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408c04 mov esi, 0x44abfd | 0x00408c09 mov edx, 1 | 0x00408c0e mov rdi, rax | 0x00408c11 call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00408c16 mov esi, 0x449655 | esi = "level == levels.triggerAllLevel()"; 0x00408c1b mov edi, 1 | edi = 1; 0x00408c20 mov edx, 0x3ce | edx = 0x3ce; 0x00408c25 call 0x405630 | symaSsErT(int (); 0x00408c2a jmp 0x408790 | goto label_12; | label_36: 0x00408c30 cmp dword [rsp + 0x48], 3 | | if (*((rsp + 0x48)) != 3) { 0x00408c35 jne 0x4085f0 | goto label_13; | } 0x00408c3b cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) == 0x17) { 0x00408c41 je 0x4085f0 | goto label_13; | } 0x00408c47 mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x00408c4c mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00408c51 mov rax, qword [rdi] | rax = *(rdi); 0x00408c54 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00408c57 jmp 0x4085f0 | goto label_13; | label_35: 0x00408c5c call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00408c61 mov ecx, dword [rsp + 0x48] | ecx = *((rsp + 0x48)); 0x00408c65 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00408c6a mov eax, 0xffffffff | eax = 0xffffffff; 0x00408c6f mov qword [rsp + 0x58], rax | *((rsp + 0x58)) = rax; 0x00408c74 cmp ecx, 3 | | if (ecx == 3) { 0x00408c77 je 0x408c8b | goto label_37; | } 0x00408c79 cmp ecx, 1 | | if (ecx != 1) { 0x00408c7c jne 0x408683 | goto label_14; | } 0x00408c82 mov dword [rsp + 0x18], ebp | *((rsp + 0x18)) = ebp; 0x00408c86 jmp 0x40868f | goto label_15; | label_37: 0x00408c8b cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) != 0x17) { 0x00408c91 je 0x408ca3 | 0x00408c93 mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x00408c98 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00408c9d mov rax, qword [rdi] | rax = *(rdi); 0x00408ca0 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00408ca3 mov qword [rsp + 0x30], 0xffffffffffffffff | *((rsp + 0x30)) = 0xffffffffffffffff; 0x00408cac jmp 0x408683 | goto label_14; | label_34: 0x00408cb1 xor ebx, ebx | ebx = 0; 0x00408cb3 mov r14d, 0xffffffff | r14d = 0xffffffff; 0x00408cb9 lea rbp, [rsp + 0x10] | rbp = rsp + 0x10; 0x00408cbe jmp 0x408ccb | | while (*((rsp + 0x48)) != 3) { | label_16: 0x00408cc0 inc ebx | ebx++; 0x00408cc2 cmp ebx, 0x20 | | if (ebx == 0x20) { 0x00408cc5 je 0x408df9 | goto label_38; | } 0x00408ccb mov rax, qword [rip + 0x25faae] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00408cd2 test rax, rax | | if (rax == 0) { 0x00408cd5 jne 0x408cdc | 0x00408cd7 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00408cdc mov qword [rsp + 0x10], 0x448ed0 | *((rsp + 0x10)) = "uuid"; 0x00408ce5 mov dword [rsp + 0x48], 0 | *((rsp + 0x48)) = 0; 0x00408ced test rax, rax | | if (rax == 0) { 0x00408cf0 jne 0x408d02 | 0x00408cf2 mov rax, qword [rip + 0x25fa87] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00408cf9 test rax, rax | | if (rax == 0) { 0x00408cfc je 0x408da9 | goto label_39; | } | } 0x00408d02 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00408d07 mov qword [rsp + 0x58], r14 | *((rsp + 0x58)) = r14; | label_17: 0x00408d0c mov dword [rsp + 0x18], ebx | *((rsp + 0x18)) = ebx; 0x00408d10 mov dword [rsp + 0x48], 1 | *((rsp + 0x48)) = 1; | label_18: 0x00408d18 mov rdi, r13 | 0x00408d1b mov rsi, rbp | 0x00408d1e call 0x411e90 | al = BloombergLP::ball::AttributeContainerList::hasValue(BloombergLP::ball::Attributeconst&)const (r13, rbp); 0x00408d23 test al, al | | if (al != 0) { 0x00408d25 je 0x408d7d | 0x00408d27 mov edi, 0x667f48 | 0x00408d2c mov esi, 0x44c0e5 | 0x00408d31 mov edx, 1 | 0x00408d36 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (obj.std::__1::cout, 0x44c0e5, 1); 0x00408d3b mov esi, 0x448d51 | 0x00408d40 mov edx, 2 | 0x00408d45 mov rdi, rax | 0x00408d48 call 0x4112a0 | rax = std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x448d51, 2); 0x00408d4d mov rdi, rax | rdi = rax; 0x00408d50 mov esi, ebx | esi = ebx; 0x00408d52 call 0x4043c0 | rax = std::_1::basic_ostream>::operator << (int) (); 0x00408d57 mov esi, 0x44abfd | 0x00408d5c mov edx, 1 | 0x00408d61 mov rdi, rax | 0x00408d64 call 0x4112a0 | std::_1::basic_ostream>&std::_1::_put_character_sequence>(std::_1::basic_ostream>&,char const*,unsigned long) (rax, 0x44abfd, 1); 0x00408d69 mov esi, 0x449677 | esi = "false == X.hasAttribute(attribute)"; 0x00408d6e mov edi, 1 | edi = 1; 0x00408d73 mov edx, 0x3d6 | edx = 0x3d6; 0x00408d78 call 0x405630 | symaSsErT(int (); | } 0x00408d7d cmp dword [rsp + 0x48], 3 | 0x00408d82 jne 0x408cc0 | | } 0x00408d88 cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) == 0x17) { 0x00408d8e je 0x408cc0 | goto label_16; | } 0x00408d94 mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x00408d99 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00408d9e mov rax, qword [rdi] | rax = *(rdi); 0x00408da1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00408da4 jmp 0x408cc0 | goto label_16; | label_39: 0x00408da9 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00408dae mov ecx, dword [rsp + 0x48] | ecx = *((rsp + 0x48)); 0x00408db2 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00408db7 mov qword [rsp + 0x58], r14 | *((rsp + 0x58)) = r14; 0x00408dbc cmp ecx, 3 | | if (ecx == 3) { 0x00408dbf je 0x408dd3 | goto label_40; | } 0x00408dc1 cmp ecx, 1 | | if (ecx != 1) { 0x00408dc4 jne 0x408d0c | goto label_17; | } 0x00408dca mov dword [rsp + 0x18], ebx | *((rsp + 0x18)) = ebx; 0x00408dce jmp 0x408d18 | goto label_18; | label_40: 0x00408dd3 cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) != 0x17) { 0x00408dd9 je 0x408deb | 0x00408ddb mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x00408de0 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00408de5 mov rax, qword [rdi] | rax = *(rdi); 0x00408de8 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00408deb mov qword [rsp + 0x30], 0xffffffffffffffff | *((rsp + 0x30)) = 0xffffffffffffffff; 0x00408df4 jmp 0x408d0c | goto label_17; | label_38: 0x00408df9 mov rax, qword [rsp + 0x88] | rax = *((rsp + 0x88)); 0x00408e01 mov qword [rsp + 0xd8], rax | *((rsp + 0xd8)) = rax; 0x00408e09 mov qword [r13 + 0x20], 0 | *((r13 + 0x20)) = 0; 0x00408e11 mov qword [r13 + 0x28], 0xffffffffffffffff | *((r13 + 0x28)) = 0xffffffffffffffff; 0x00408e19 lea rsi, [rsp + 0xd8] | 0x00408e21 mov rdi, r13 | 0x00408e24 call 0x411e00 | BloombergLP::ball::AttributeContainerList::remove(BloombergLP::ball::AttributeContainerListIteratorconst&) (r13, rsp + 0xd8); 0x00408e29 xor ebp, ebp | ebp = 0; 0x00408e2b mov r14d, 0xffffffff | r14d = 0xffffffff; 0x00408e31 lea rbx, [rsp + 0x10] | rbx = rsp + 0x10; 0x00408e36 jmp 0x408e4b | | while (*((rsp + 0x48)) != 3) { | label_19: 0x00408e40 inc ebp | ebp++; 0x00408e42 cmp ebp, 0x20 | | if (ebp == 0x20) { 0x00408e45 je 0x408f11 | goto label_41; | } 0x00408e4b mov rax, qword [rip + 0x25f92e] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00408e52 test rax, rax | | if (rax == 0) { 0x00408e55 jne 0x408e5c | 0x00408e57 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00408e5c mov qword [rsp + 0x10], 0x448ed0 | *((rsp + 0x10)) = "uuid"; 0x00408e65 mov dword [rsp + 0x48], 0 | *((rsp + 0x48)) = 0; 0x00408e6d test rax, rax | | if (rax == 0) { 0x00408e70 jne 0x408e7e | 0x00408e72 mov rax, qword [rip + 0x25f907] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00408e79 test rax, rax | | if (rax == 0) { 0x00408e7c je 0x408ec8 | goto label_42; | } | } 0x00408e7e mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00408e83 mov qword [rsp + 0x58], r14 | *((rsp + 0x58)) = r14; | label_20: 0x00408e88 mov dword [rsp + 0x18], ebp | *((rsp + 0x18)) = ebp; 0x00408e8c mov dword [rsp + 0x48], 1 | *((rsp + 0x48)) = 1; | label_21: 0x00408e94 lea rdi, [rsp + 0x98] | 0x00408e9c mov rsi, rbx | 0x00408e9f call 0x40fe00 | bsl::set>::insert(BloombergLP::ball::Attributeconst&) (rsp + 0x98, rbx); 0x00408ea4 cmp dword [rsp + 0x48], 3 | 0x00408ea9 jne 0x408e40 | | } 0x00408eab cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) == 0x17) { 0x00408eb1 je 0x408e40 | goto label_19; | } 0x00408eb3 mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x00408eb8 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00408ebd mov rax, qword [rdi] | rax = *(rdi); 0x00408ec0 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00408ec3 jmp 0x408e40 | goto label_19; | label_42: 0x00408ec8 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00408ecd mov ecx, dword [rsp + 0x48] | ecx = *((rsp + 0x48)); 0x00408ed1 mov qword [rsp + 0x50], rax | *((rsp + 0x50)) = rax; 0x00408ed6 mov qword [rsp + 0x58], r14 | *((rsp + 0x58)) = r14; 0x00408edb cmp ecx, 3 | | if (ecx == 3) { 0x00408ede je 0x408eeb | goto label_43; | } 0x00408ee0 cmp ecx, 1 | | if (ecx != 1) { 0x00408ee3 jne 0x408e88 | goto label_20; | } 0x00408ee5 mov dword [rsp + 0x18], ebp | *((rsp + 0x18)) = ebp; 0x00408ee9 jmp 0x408e94 | goto label_21; | label_43: 0x00408eeb cmp qword [rsp + 0x38], 0x17 | | if (*((rsp + 0x38)) != 0x17) { 0x00408ef1 je 0x408f03 | 0x00408ef3 mov rsi, qword [rsp + 0x18] | rsi = *((rsp + 0x18)); 0x00408ef8 mov rdi, qword [rsp + 0x40] | rdi = *((rsp + 0x40)); 0x00408efd mov rax, qword [rdi] | rax = *(rdi); 0x00408f00 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00408f03 mov qword [rsp + 0x30], 0xffffffffffffffff | *((rsp + 0x30)) = 0xffffffffffffffff; 0x00408f0c jmp 0x408e88 | goto label_20; | label_41: 0x00408f11 mov qword [r13 + 0x20], 0 | *((r13 + 0x20)) = 0; 0x00408f19 mov qword [r13 + 0x28], 0xffffffffffffffff | *((r13 + 0x28)) = 0xffffffffffffffff; 0x00408f21 lea rdi, [rsp + 0x10] | 0x00408f26 lea rdx, [rsp + 0x90] | 0x00408f2e mov rsi, r13 | 0x00408f31 call 0x411d90 | BloombergLP::ball::AttributeContainerList::pushFront(BloombergLP::ball::AttributeContainerconst*) (rsp + 0x10, r13, rsp + 0x90); 0x00408f36 mov rax, qword [rsp + 0x10] | rax = *((rsp + 0x10)); 0x00408f3b mov qword [rsp + 0x88], rax | *((rsp + 0x88)) = rax; 0x00408f43 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x00408f48 mov rsi, qword [rax] | 0x00408f4b mov rdi, r13 | 0x00408f4e call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r13, *(rax)); 0x00408f53 movzx edi, al | edi = (int32_t) al; 0x00408f56 mov esi, 0x4493c4 | esi = "!X.hasRelevantActiveRules(CATEGORIES[0])"; 0x00408f5b mov edx, 0x3e3 | edx = 0x3e3; 0x00408f60 call 0x405630 | symaSsErT(int (); 0x00408f65 mov ebx, 1 | ebx = 1; 0x00408f6a jmp 0x408f79 | 0x00408f79 mov rax, qword [rsp + 0x68] | rax = *((rsp + 0x68)); 0x00408f7e mov rsi, qword [rax + rbx*8] | 0x00408f82 mov rdi, r13 | 0x00408f85 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r13, *((rax + rbx*8))); 0x00408f8a test al, al | | /* Beware that this jump is a conditional jump. | * r2dec transformed it as a return, due being the | * last instruction. Please, check 'pdda' output | * for more hints. */ 0x00408f8c jne 0x408f70 | return void (*0x408f70)() (); | }