; assembly | /* r2dec pseudo code output */ | /* ball_attributecontext.t/assume @ 0x406fb0 */ | #include | ; (fcn) sym.oldUsageExample () | uint64_t oldUsageExample (int64_t arg1) { | uint32_t var_14h; | uint32_t var_15h; | uint32_t var_16h; | uint32_t var_17h; | int64_t var_18h; | int64_t var_20h; | uint32_t var_28h; | uint32_t var_30h; | int64_t var_38h; | int64_t var_40h; | int64_t var_48h; | int64_t var_50h; | int64_t var_58h; | int64_t var_60h; | int64_t var_68h; | char * var_70h; | uint32_t var_78h; | char * var_80h; | int64_t var_88h; | int64_t var_a0h; | uint32_t var_a8h; | int64_t var_b0h; | uint32_t var_b8h; | int64_t var_c0h; | int64_t var_c8h; | int64_t var_cch; | char * var_d0h; | int64_t var_d8h; | int64_t var_e8h; | uint32_t var_f0h; | char * var_f8h; | int64_t var_100h; | int64_t var_108h; | int64_t var_120h; | uint32_t var_128h; | int64_t var_130h; | int64_t var_138h; | int64_t var_150h; | char * var_158h; | int64_t var_160h; | uint32_t var_178h; | char * var_180h; | int64_t var_190h; | int64_t var_1a8h; | uint32_t var_1b0h; | int64_t var_1b8h; | int64_t var_1c0h; | int64_t var_1d8h; | int64_t var_1f0h; | int64_t var_210h; | int64_t var_238h; | int64_t var_240h; | int64_t var_268h; | int64_t var_270h; | rdi = arg1; 0x00406fb0 push rbp | 0x00406fb1 push r15 | 0x00406fb3 push r14 | 0x00406fb5 push r13 | 0x00406fb7 push r12 | 0x00406fb9 push rbx | 0x00406fba sub rsp, 0x278 | 0x00406fc1 mov rbp, qword [rdi] | rbp = *(rdi); 0x00406fc4 xor edi, edi | edi = 0; 0x00406fc6 test rbp, rbp | 0x00406fc9 sete dil | dil = (rbp == 0) ? 1 : 0; 0x00406fcd mov esi, 0x44b46b | esi = "manager"; 0x00406fd2 mov edx, 0x249 | edx = 0x249; 0x00406fd7 call 0x405860 | symaSsErT(int (); 0x00406fdc call 0x414e40 | rax = BloombergLP::ball::AttributeContext::lookupContext() (); 0x00406fe1 xor edi, edi | edi = 0; 0x00406fe3 test rax, rax | 0x00406fe6 setne dil | dil = (rax != 0) ? 1 : 0; 0x00406fea mov esi, 0x44b43e | esi = "0 == ball::AttributeContext::lookupContext()"; 0x00406fef mov edx, 0x24a | edx = 0x24a; 0x00406ff4 call 0x405860 | symaSsErT(int (); 0x00406ff9 mov esi, 0x44b473 | 0x00406ffe mov rdi, rbp | 0x00407001 mov edx, 0x80 | 0x00407006 mov ecx, 0x60 | 0x0040700b mov r8d, 0x40 | 0x00407011 mov r9d, 0x20 | 0x00407017 call 0x415d10 | rax = BloombergLP::ball::CategoryManager::setThresholdLevels(char const*,int,int,int,int) (rbp, "weekday", 0x80, 0x60, 0x40, 0x20); 0x0040701c mov r13, rax | r13 = rax; 0x0040701f xor edi, edi | edi = 0; 0x00407021 test rax, rax | 0x00407024 sete dil | dil = (rax == 0) ? 1 : 0; 0x00407028 mov esi, 0x44b47b | esi = "cat1"; 0x0040702d mov edx, 0x24e | edx = 0x24e; 0x00407032 call 0x405860 | symaSsErT(int (); 0x00407037 mov esi, 0x44b480 | 0x0040703c mov rdi, rbp | 0x0040703f mov edx, 0x7d | 0x00407044 mov ecx, 0x64 | 0x00407049 mov r8d, 0x4b | 0x0040704f mov r9d, 0x32 | 0x00407055 call 0x415d10 | rax = BloombergLP::ball::CategoryManager::setThresholdLevels(char const*,int,int,int,int) (rbp, "weekend", 0x7d, 0x64, 0x4b, 0x32); 0x0040705a xor edi, edi | edi = 0; 0x0040705c mov qword [rsp + 0x18], rax | *((rsp + 0x18)) = rax; 0x00407061 test rax, rax | 0x00407064 sete dil | dil = (rax == 0) ? 1 : 0; 0x00407068 mov esi, 0x44b488 | esi = "cat2"; 0x0040706d mov edx, 0x252 | edx = 0x252; 0x00407072 call 0x405860 | symaSsErT(int (); 0x00407077 mov qword [rsp + 0xd0], 0x44b48d | *((rsp + 0xd0)) = "week*"; 0x00407083 mov qword [rsp + 0xd8], 5 | *((rsp + 0xd8)) = 5; 0x0040708f mov qword [rsp], 0 | *(rsp) = 0; 0x00407097 lea rbx, [rsp + 0x1d8] | rbx = rsp + 0x1d8; 0x0040709f lea rsi, [rsp + 0xd0] | 0x004070a7 mov rdi, rbx | 0x004070aa mov edx, 0x78 | 0x004070af mov ecx, 0x6e | 0x004070b4 mov r8d, 0x46 | 0x004070ba mov r9d, 0x28 | 0x004070c0 call 0x4126d0 | BloombergLP::ball::Rule::Rule(std::_1::basic_string_view>const&,int,int,int,int,BloombergLP::bslma::Allocator*) (rbx, rsp + 0xd0, 0x78, 0x6e, 0x46, 0x28); 0x004070c5 mov qword [rsp + 0x20], rbp | *((rsp + 0x20)) = rbp; 0x004070ca mov rdi, rbp | 0x004070cd mov rsi, rbx | 0x004070d0 call 0x415f10 | BloombergLP::ball::CategoryManager::addRule(BloombergLP::ball::Ruleconst&) (rbp, rbx); 0x004070d5 mov qword [rsp + 0x28], 0x44b050 | *((rsp + 0x28)) = vtable.AttributeSet.0; 0x004070de mov rax, qword [rip + 0x26369b] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004070e5 test rax, rax | | if (rax == 0) { 0x004070e8 jne 0x4070ef | 0x004070ea call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004070ef mov qword [rsp + 0x30], rax | *((rsp + 0x30)) = rax; 0x004070f4 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x004070f7 movups xmmword [rsp + 0x38], xmm0 | __asm ("movups xmmword [rsp + 0x38], xmm0"); 0x004070fc mov dword [rsp + 0x48], 1 | *((rsp + 0x48)) = 1; 0x00407104 lea rax, [rsp + 0x50] | rax = rsp + 0x50; 0x00407109 mov dword [rsp + 0x68], 0 | *((rsp + 0x68)) = 0; 0x00407111 mov qword [rsp + 0x60], rax | *((rsp + 0x60)) = rax; 0x00407116 mov qword [rsp + 0x58], 0 | *((rsp + 0x58)) = 0; 0x0040711f call 0x414ca0 | rax = BloombergLP::ball::AttributeContext::getContext() (); 0x00407124 mov r15, rax | r15 = rax; 0x00407127 mov rax, qword [rip + 0x263652] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040712e test rax, rax | | if (rax == 0) { 0x00407131 jne 0x407138 | 0x00407133 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00407138 mov qword [rsp + 0x80], 0x44b382 | *((rsp + 0x80)) = "uuid"; 0x00407144 mov dword [rsp + 0xb8], 0 | *((rsp + 0xb8)) = 0; 0x0040714f test rax, rax | | if (rax == 0) { 0x00407152 jne 0x407164 | 0x00407154 mov rax, qword [rip + 0x263625] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040715b test rax, rax | | if (rax == 0) { 0x0040715e je 0x407e0c | goto label_6; | } | } 0x00407164 lea rbx, [rsp + 0x88] | rbx = rsp + 0x88; 0x0040716c mov qword [rsp + 0xc0], rax | *((rsp + 0xc0)) = rax; 0x00407174 mov eax, 0xffffffff | eax = 0xffffffff; 0x00407179 mov qword [rsp + 0xc8], rax | *((rsp + 0xc8)) = rax; | label_2: 0x00407181 lea rax, [rsp + 0xb8] | rax = rsp + 0xb8; 0x00407189 mov dword [rbx], 1 | *(rbx) = 1; | label_3: 0x0040718f mov dword [rax], 1 | *(rax) = 1; 0x00407195 lea r12, [rsp + 0x30] | r12 = rsp + 0x30; 0x0040719a lea rbp, [rsp + 0x50] | rbp = rsp + 0x50; 0x0040719f mov rax, qword [rsp + 0x58] | rax = *((rsp + 0x58)); 0x004071a4 test rax, rax | | if (rax == 0) { 0x004071a7 je 0x407211 | goto label_7; | } 0x004071a9 xor ebx, ebx | ebx = 0; 0x004071ab lea r14, [rsp + 0x80] | r14 = rsp + 0x80; 0x004071b3 nop word cs:[rax + rax] | 0x004071bd nop dword [rax] | | do { 0x004071c0 mov rbp, rax | 0x004071c3 lea rdx, [rax + 0x18] | rdx = rax + 0x18; 0x004071c7 mov rdi, r12 | 0x004071ca mov rsi, r14 | 0x004071cd call 0x413df0 | al = AttributeComparator::operator()(BloombergLP::ball::Attributeconst&,BloombergLP::ball::Attributeconst&)const (r12, r14); 0x004071d2 test al, al | | if (al == 0) { 0x004071d4 cmove rbx, rbp | rbx = rbp; | } 0x004071d8 xor al, 1 | al ^= 1; 0x004071da movzx ecx, al | ecx = (int32_t) al; 0x004071dd mov rax, qword [rbp + rcx*8 + 8] | rax = *((rbp + rcx*8 + 8)); 0x004071e2 test rax, rax | 0x004071e5 jne 0x4071c0 | | } while (rax != 0); 0x004071e7 lea r14d, [rcx + rcx - 1] | r14d = rcx + rcx - 1; 0x004071ec test rbx, rbx | | if (rbx != 0) { 0x004071ef je 0x407217 | 0x004071f1 add rbx, 0x18 | rbx += 0x18; 0x004071f5 lea rdx, [rsp + 0x80] | rdx = rsp + 0x80; 0x004071fd mov rdi, r12 | 0x00407200 mov rsi, rbx | 0x00407203 call 0x413df0 | al = AttributeComparator::operator()(BloombergLP::ball::Attributeconst&,BloombergLP::ball::Attributeconst&)const (r12, rbx); 0x00407208 test al, al | | if (al != 0) { 0x0040720a jne 0x407217 | goto label_8; | } 0x0040720c jmp 0x4073f4 | goto label_9; | label_7: 0x00407211 mov r14d, 0xffffffff | r14d = 0xffffffff; | } | label_8: 0x00407217 mov r12, qword [rsp + 0x40] | r12 = *((rsp + 0x40)); 0x0040721c test r12, r12 | | if (r12 != 0) { 0x0040721f jne 0x40733a | goto label_10; | } 0x00407225 movsxd rax, dword [rsp + 0x48] | rax = *((rsp + 0x48)); 0x0040722a imul rbx, rax, 0x68 | rbx = rax * 0x68; 0x0040722e lea rsi, [rbx + 0x17] | rsi = rbx + 0x17; 0x00407232 and rsi, 0xfffffffffffffff0 | rsi &= 0xfffffffffffffff0; 0x00407236 mov rdi, qword [rsp + 0x30] | rdi = *((rsp + 0x30)); 0x0040723b mov rax, qword [rdi] | rax = *(rdi); 0x0040723e call qword [rax + 0x10] | rax = uint64_t (*rax + 0x10)() (); 0x00407241 mov rcx, rax | rcx = rax; 0x00407244 mov rax, qword [rsp + 0x38] | rax = *((rsp + 0x38)); 0x00407249 mov qword [rcx], rax | *(rcx) = rax; 0x0040724c mov qword [rsp + 0x38], rcx | *((rsp + 0x38)) = rcx; 0x00407251 lea r12, [rcx + 8] | r12 = rcx + 8; 0x00407255 lea rsi, [rcx + rbx - 0x60] | rsi = rcx + rbx - 0x60; 0x0040725a cmp rsi, r12 | | if (rsi <= r12) { 0x0040725d jbe 0x40731e | goto label_5; | } 0x00407263 add rbx, 0xffffffffffffff97 | rbx += 0xffffffffffffff97; 0x00407267 movabs rdx, 0x4ec4ec4ec4ec4ec5 | rdx = 0x4ec4ec4ec4ec4ec5; 0x00407271 mov rax, rbx | rax = rbx; 0x00407274 mul rdx | rdx:rax = rax * rdx; 0x00407277 shr edx, 5 | edx >>= 5; 0x0040727a inc edx | edx++; 0x0040727c and rdx, 7 | rdx &= 7; | if (rdx == 0) { 0x00407280 je 0x407e4b | goto label_11; | } 0x00407286 add rcx, 0x70 | rcx += 0x70; 0x0040728a neg rdx | rdx = -rdx; 0x0040728d nop dword [rax] | | do { 0x00407290 mov qword [rcx - 0x68], rcx | *((rcx - 0x68)) = rcx; 0x00407294 add rcx, 0x68 | rcx += 0x68; 0x00407298 inc rdx | rdx++; 0x0040729b jne 0x407290 | | } while (rdx != 0); 0x0040729d add rcx, 0xffffffffffffff98 | rcx += 0xffffffffffffff98; 0x004072a1 cmp rbx, 0x2d8 | | if (rbx < 0x2d8) { 0x004072a8 jb 0x40731e | goto label_5; | } 0x004072aa nop word [rax + rax] | | do { | label_4: 0x004072b0 lea rax, [rcx + 0x68] | rax = rcx + 0x68; 0x004072b4 mov qword [rcx], rax | *(rcx) = rax; 0x004072b7 lea rax, [rcx + 0xd0] | rax = rcx + 0xd0; 0x004072be mov qword [rcx + 0x68], rax | *((rcx + 0x68)) = rax; 0x004072c2 lea rax, [rcx + 0x138] | rax = rcx + 0x138; 0x004072c9 mov qword [rcx + 0xd0], rax | *((rcx + 0xd0)) = rax; 0x004072d0 lea rax, [rcx + 0x1a0] | rax = rcx + 0x1a0; 0x004072d7 mov qword [rcx + 0x138], rax | *((rcx + 0x138)) = rax; 0x004072de lea rax, [rcx + 0x208] | rax = rcx + 0x208; 0x004072e5 mov qword [rcx + 0x1a0], rax | *((rcx + 0x1a0)) = rax; 0x004072ec lea rax, [rcx + 0x270] | rax = rcx + 0x270; 0x004072f3 mov qword [rcx + 0x208], rax | *((rcx + 0x208)) = rax; 0x004072fa lea rax, [rcx + 0x2d8] | rax = rcx + 0x2d8; 0x00407301 mov qword [rcx + 0x270], rax | *((rcx + 0x270)) = rax; 0x00407308 lea rax, [rcx + 0x340] | rax = rcx + 0x340; 0x0040730f mov qword [rcx + 0x2d8], rax | *((rcx + 0x2d8)) = rax; 0x00407316 mov rcx, rax | rcx = rax; 0x00407319 cmp rax, rsi | 0x0040731c jb 0x4072b0 | | } while (rax < rsi); | label_5: 0x0040731e mov rax, qword [rsp + 0x40] | rax = *((rsp + 0x40)); 0x00407323 mov qword [rsi], rax | *(rsi) = rax; 0x00407326 mov qword [rsp + 0x40], r12 | *((rsp + 0x40)) = r12; 0x0040732b mov eax, dword [rsp + 0x48] | eax = *((rsp + 0x48)); 0x0040732f cmp eax, 0x1f | | if (eax <= 0x1f) { 0x00407332 jg 0x40733a | 0x00407334 add eax, eax | eax += eax; 0x00407336 mov dword [rsp + 0x48], eax | *((rsp + 0x48)) = eax; | } | label_10: 0x0040733a mov rax, qword [r12] | rax = *(r12); 0x0040733e mov qword [rsp + 0x40], rax | *((rsp + 0x40)) = rax; 0x00407343 mov rax, qword [rsp + 0x30] | rax = *((rsp + 0x30)); 0x00407348 test rax, rax | | if (rax == 0) { 0x0040734b jne 0x40735e | 0x0040734d mov rax, qword [rip + 0x26342c] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00407354 test rax, rax | | if (rax != 0) { 0x00407357 jne 0x40735e | goto label_12; | } 0x00407359 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_12: 0x0040735e mov rcx, qword [rsp + 0x80] | rcx = *((rsp + 0x80)); 0x00407366 mov qword [r12 + 0x18], rcx | *((r12 + 0x18)) = rcx; 0x0040736b mov ecx, dword [rsp + 0xb8] | ecx = *((rsp + 0xb8)); 0x00407372 mov dword [r12 + 0x50], ecx | *((r12 + 0x50)) = ecx; 0x00407377 test rax, rax | | if (rax == 0) { 0x0040737a jne 0x407392 | 0x0040737c mov rax, qword [rip + 0x2633fd] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00407383 test rax, rax | | if (rax != 0) { 0x00407386 jne 0x407392 | goto label_13; | } 0x00407388 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x0040738d mov ecx, dword [r12 + 0x50] | ecx = *((r12 + 0x50)); | } | label_13: 0x00407392 mov qword [r12 + 0x58], rax | *((r12 + 0x58)) = rax; 0x00407397 test ecx, ecx | | if (ecx != 0) { 0x00407399 je 0x4073c5 | 0x0040739b lea rdi, [rsp + 0x88] | rdi = rsp + 0x88; 0x004073a3 lea rcx, [r12 + 0x20] | rcx = r12 + 0x20; 0x004073a8 mov qword [rsp + 0xd0], rcx | *((rsp + 0xd0)) = rcx; 0x004073b0 mov qword [rsp + 0xd8], rax | *((rsp + 0xd8)) = rax; 0x004073b8 lea rsi, [rsp + 0xd0] | rsi = rsp + 0xd0; 0x004073c0 call 0x413670 | _ZNK11BloombergLP4bdlb10VariantImpINS_5bslmf8TypeListIJixN3bsl12basic_stringIcNSt3_111char_traitsIcEENS4_9allocatorIcEEEEEEEE5applyINS0_28Variant_CopyConstructVisitorEEENS4_9enable_ifIXeqsr25Variant_ReturnValueHelperIT_EE5valueLi0EEvE4typeERSH_ (); | } 0x004073c5 mov eax, dword [rsp + 0xc8] | eax = *((rsp + 0xc8)); 0x004073cc mov dword [r12 + 0x60], eax | *((r12 + 0x60)) = eax; 0x004073d1 mov eax, dword [rsp + 0xcc] | eax = *((rsp + 0xcc)); 0x004073d8 mov dword [r12 + 0x64], eax | *((r12 + 0x64)) = eax; 0x004073dd shr r14d, 0x1f | r14d >>= 0x1f; 0x004073e1 lea rdi, [rsp + 0x50] | 0x004073e6 mov rsi, rbp | 0x004073e9 mov edx, r14d | 0x004073ec mov rcx, r12 | rcx = r12; 0x004073ef call 0x420490 | BloombergLP::bslalg::RbTreeUtil::insertAt(BloombergLP::bslalg::RbTreeAnchor*,BloombergLP::bslalg::RbTreeNode*,bool,BloombergLP::bslalg::RbTreeNode*) (rsp + 0x50, rbp, r14d); | label_9: 0x004073f4 mov qword [r15 + 0x20], 0 | *((r15 + 0x20)) = 0; 0x004073fc mov qword [r15 + 0x28], 0xffffffffffffffff | *((r15 + 0x28)) = 0xffffffffffffffff; 0x00407404 lea rdi, [rsp + 0x270] | 0x0040740c lea rdx, [rsp + 0x28] | 0x00407411 mov rsi, r15 | 0x00407414 call 0x414610 | BloombergLP::ball::AttributeContainerList::pushFront(BloombergLP::ball::AttributeContainerconst*) (rsp + 0x270, r15, rsp + 0x28); 0x00407419 mov rdi, r15 | 0x0040741c mov rsi, r13 | 0x0040741f call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, r13); 0x00407424 xor al, 1 | al ^= 1; 0x00407426 movzx edi, al | edi = (int32_t) al; 0x00407429 mov esi, 0x44b55c | esi = 0x44b55c; 0x0040742e mov edx, 0x260 | edx = 0x260; 0x00407433 call 0x405860 | symaSsErT(int (); 0x00407438 mov rdi, r15 | 0x0040743b mov rsi, qword [rsp + 0x18] | 0x00407440 call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, *((rsp + 0x18))); 0x00407445 xor al, 1 | al ^= 1; 0x00407447 movzx edi, al | edi = (int32_t) al; 0x0040744a mov esi, 0x44b587 | esi = 0x44b587; 0x0040744f mov edx, 0x261 | edx = 0x261; 0x00407454 call 0x405860 | symaSsErT(int (); 0x00407459 mov dword [rsp + 0x14], 0 | *((rsp + 0x14)) = 0; 0x00407461 lea rsi, [rsp + 0x14] | 0x00407466 mov rdi, r15 | 0x00407469 mov rdx, r13 | 0x0040746c call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, r13); 0x00407471 xor edi, edi | edi = 0; 0x00407473 cmp byte [rsp + 0x14], 0x80 | 0x00407478 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x0040747c mov esi, 0x44b493 | esi = "128 == levels.recordLevel()"; 0x00407481 mov edx, 0x266 | edx = 0x266; 0x00407486 call 0x405860 | symaSsErT(int (); 0x0040748b xor edi, edi | edi = 0; 0x0040748d cmp byte [rsp + 0x15], 0x6e | 0x00407492 setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x00407496 mov esi, 0x44b4af | esi = "110 == levels.passLevel()"; 0x0040749b mov edx, 0x267 | edx = 0x267; 0x004074a0 call 0x405860 | symaSsErT(int (); 0x004074a5 xor edi, edi | edi = 0; 0x004074a7 cmp byte [rsp + 0x16], 0x46 | 0x004074ac setne dil | dil = (*((rsp + 0x16)) != 0x46) ? 1 : 0; 0x004074b0 mov esi, 0x44b4c9 | esi = "70 == levels.triggerLevel()"; 0x004074b5 mov edx, 0x268 | edx = 0x268; 0x004074ba call 0x405860 | symaSsErT(int (); 0x004074bf xor edi, edi | edi = 0; 0x004074c1 cmp byte [rsp + 0x17], 0x28 | 0x004074c6 setne dil | dil = (*((rsp + 0x17)) != 0x28) ? 1 : 0; 0x004074ca mov esi, 0x44b4e5 | esi = "40 == levels.triggerAllLevel()"; 0x004074cf mov edx, 0x269 | edx = 0x269; 0x004074d4 call 0x405860 | symaSsErT(int (); 0x004074d9 lea rsi, [rsp + 0x14] | 0x004074de mov rdi, r15 | 0x004074e1 mov rdx, qword [rsp + 0x18] | 0x004074e6 call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, *((rsp + 0x18))); 0x004074eb xor edi, edi | edi = 0; 0x004074ed cmp byte [rsp + 0x14], 0x7d | 0x004074f2 setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x004074f6 mov esi, 0x44b504 | esi = "125 == levels.recordLevel()"; 0x004074fb mov edx, 0x26c | edx = 0x26c; 0x00407500 call 0x405860 | symaSsErT(int (); 0x00407505 xor edi, edi | edi = 0; 0x00407507 cmp byte [rsp + 0x15], 0x6e | 0x0040750c setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x00407510 mov esi, 0x44b4af | esi = "110 == levels.passLevel()"; 0x00407515 mov edx, 0x26d | edx = 0x26d; 0x0040751a call 0x405860 | symaSsErT(int (); 0x0040751f xor edi, edi | edi = 0; 0x00407521 cmp byte [rsp + 0x16], 0x4b | 0x00407526 setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x0040752a mov esi, 0x44b520 | esi = "75 == levels.triggerLevel()"; 0x0040752f mov edx, 0x26e | edx = 0x26e; 0x00407534 call 0x405860 | symaSsErT(int (); 0x00407539 xor edi, edi | edi = 0; 0x0040753b cmp byte [rsp + 0x17], 0x32 | 0x00407540 setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x00407544 mov esi, 0x44b53c | esi = "50 == levels.triggerAllLevel()"; 0x00407549 mov edx, 0x26f | edx = 0x26f; 0x0040754e call 0x405860 | symaSsErT(int (); 0x00407553 lea rsi, [rsp + 0x1d8] | 0x0040755b mov rdi, qword [rsp + 0x20] | 0x00407560 call 0x4160c0 | BloombergLP::ball::CategoryManager::removeRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x00407565 mov rdi, r15 | 0x00407568 mov rsi, r13 | 0x0040756b call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, r13); 0x00407570 movzx edi, al | edi = (int32_t) al; 0x00407573 mov esi, 0x44b55b | esi = "!attrContext->hasRelevantActiveRules(cat1)"; 0x00407578 mov edx, 0x273 | edx = 0x273; 0x0040757d call 0x405860 | symaSsErT(int (); 0x00407582 mov rdi, r15 | 0x00407585 mov rsi, qword [rsp + 0x18] | 0x0040758a call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, *((rsp + 0x18))); 0x0040758f movzx edi, al | edi = (int32_t) al; 0x00407592 mov esi, 0x44b586 | esi = "!attrContext->hasRelevantActiveRules(cat2)"; 0x00407597 mov edx, 0x274 | edx = 0x274; 0x0040759c call 0x405860 | symaSsErT(int (); 0x004075a1 lea rsi, [rsp + 0x14] | 0x004075a6 mov rdi, r15 | 0x004075a9 mov rdx, r13 | 0x004075ac call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, r13); 0x004075b1 xor edi, edi | edi = 0; 0x004075b3 cmp byte [rsp + 0x14], 0x80 | 0x004075b8 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x004075bc mov esi, 0x44b493 | esi = "128 == levels.recordLevel()"; 0x004075c1 mov edx, 0x277 | edx = 0x277; 0x004075c6 call 0x405860 | symaSsErT(int (); 0x004075cb xor edi, edi | edi = 0; 0x004075cd cmp byte [rsp + 0x15], 0x60 | 0x004075d2 setne dil | dil = (*((rsp + 0x15)) != 0x60) ? 1 : 0; 0x004075d6 mov esi, 0x44b5b1 | esi = "96 == levels.passLevel()"; 0x004075db mov edx, 0x278 | edx = 0x278; 0x004075e0 call 0x405860 | symaSsErT(int (); 0x004075e5 xor edi, edi | edi = 0; 0x004075e7 cmp byte [rsp + 0x16], 0x40 | 0x004075ec setne dil | dil = (*((rsp + 0x16)) != 0x40) ? 1 : 0; 0x004075f0 mov esi, 0x44b5ca | esi = "64 == levels.triggerLevel()"; 0x004075f5 mov edx, 0x279 | edx = 0x279; 0x004075fa call 0x405860 | symaSsErT(int (); 0x004075ff xor edi, edi | edi = 0; 0x00407601 cmp byte [rsp + 0x17], 0x20 | 0x00407606 setne dil | dil = (*((rsp + 0x17)) != 0x20) ? 1 : 0; 0x0040760a mov esi, 0x44b5e6 | esi = "32 == levels.triggerAllLevel()"; 0x0040760f mov edx, 0x27a | edx = 0x27a; 0x00407614 call 0x405860 | symaSsErT(int (); 0x00407619 lea rsi, [rsp + 0x14] | 0x0040761e mov rdi, r15 | 0x00407621 mov rdx, qword [rsp + 0x18] | 0x00407626 call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, *((rsp + 0x18))); 0x0040762b xor edi, edi | edi = 0; 0x0040762d cmp byte [rsp + 0x14], 0x7d | 0x00407632 setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x00407636 mov esi, 0x44b504 | esi = "125 == levels.recordLevel()"; 0x0040763b mov edx, 0x27d | edx = 0x27d; 0x00407640 call 0x405860 | symaSsErT(int (); 0x00407645 xor edi, edi | edi = 0; 0x00407647 cmp byte [rsp + 0x15], 0x64 | 0x0040764c setne dil | dil = (*((rsp + 0x15)) != 0x64) ? 1 : 0; 0x00407650 mov esi, 0x44b605 | esi = "100 == levels.passLevel()"; 0x00407655 mov edx, 0x27e | edx = 0x27e; 0x0040765a call 0x405860 | symaSsErT(int (); 0x0040765f xor edi, edi | edi = 0; 0x00407661 cmp byte [rsp + 0x16], 0x4b | 0x00407666 setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x0040766a mov esi, 0x44b520 | esi = "75 == levels.triggerLevel()"; 0x0040766f mov edx, 0x27f | edx = 0x27f; 0x00407674 call 0x405860 | symaSsErT(int (); 0x00407679 xor edi, edi | edi = 0; 0x0040767b cmp byte [rsp + 0x17], 0x32 | 0x00407680 setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x00407684 mov esi, 0x44b53c | esi = "50 == levels.triggerAllLevel()"; 0x00407689 mov edx, 0x280 | edx = 0x280; 0x0040768e call 0x405860 | symaSsErT(int (); 0x00407693 mov qword [rsp + 0x158], 0x44b382 | *((rsp + 0x158)) = "uuid"; 0x0040769f mov qword [rsp + 0x160], 4 | *((rsp + 0x160)) = 4; 0x004076ab mov rax, qword [rip + 0x2630ce] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004076b2 test rax, rax | | if (rax == 0) { 0x004076b5 jne 0x4076bc | 0x004076b7 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004076bc mov qword [rsp + 0x70], rax | *((rsp + 0x70)) = rax; 0x004076c1 lea rdi, [rsp + 0xd0] | 0x004076c9 lea rsi, [rsp + 0x158] | 0x004076d1 lea rcx, [rsp + 0x70] | 0x004076d6 mov edx, 1 | 0x004076db call 0x412820 | BloombergLP::ball::ManagedAttribute::ManagedAttribute(std::_1::basic_string_view>const&,int,bsl::allocatorconst&) (rsp + 0xd0, rsp + 0x158, 1, rsp + 0x70); 0x004076e0 mov dword [rsp + 0x268], 0xffffffff | *((rsp + 0x268)) = 0xffffffff; 0x004076eb mov byte [rsp + 0x158], 0 | *((rsp + 0x158)) = 0; 0x004076f3 lea rdi, [rsp + 0x210] | rdi = rsp + 0x210; 0x004076fb lea rsi, [rsp + 0x158] | rsi = rsp + 0x158; 0x00407703 lea rdx, [rsp + 0xd0] | rdx = rsp + 0xd0; 0x0040770b call 0x412e60 | BloombergLP::bslstl::HashTable,BloombergLP::ball::ManagedAttributeSet::AttributeHash,bsl::equal_to,bsl::allocator>::insertIfMissing(bool*,BloombergLP::ball::ManagedAttributeconst&) (); 0x00407710 lea rsi, [rsp + 0x1d8] | 0x00407718 mov rdi, qword [rsp + 0x20] | 0x0040771d call 0x415f10 | BloombergLP::ball::CategoryManager::addRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x00407722 mov rdi, r15 | 0x00407725 mov rsi, r13 | 0x00407728 call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, r13); 0x0040772d xor al, 1 | al ^= 1; 0x0040772f movzx edi, al | edi = (int32_t) al; 0x00407732 mov esi, 0x44b55c | esi = 0x44b55c; 0x00407737 mov edx, 0x286 | edx = 0x286; 0x0040773c call 0x405860 | symaSsErT(int (); 0x00407741 mov rdi, r15 | 0x00407744 mov rsi, qword [rsp + 0x18] | 0x00407749 call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, *((rsp + 0x18))); 0x0040774e xor al, 1 | al ^= 1; 0x00407750 movzx edi, al | edi = (int32_t) al; 0x00407753 mov esi, 0x44b587 | esi = 0x44b587; 0x00407758 mov edx, 0x287 | edx = 0x287; 0x0040775d call 0x405860 | symaSsErT(int (); 0x00407762 lea rsi, [rsp + 0x14] | 0x00407767 mov rdi, r15 | 0x0040776a mov rdx, r13 | 0x0040776d call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, r13); 0x00407772 xor edi, edi | edi = 0; 0x00407774 cmp byte [rsp + 0x14], 0x80 | 0x00407779 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x0040777d mov esi, 0x44b493 | esi = "128 == levels.recordLevel()"; 0x00407782 mov edx, 0x28a | edx = 0x28a; 0x00407787 call 0x405860 | symaSsErT(int (); 0x0040778c xor edi, edi | edi = 0; 0x0040778e cmp byte [rsp + 0x15], 0x6e | 0x00407793 setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x00407797 mov esi, 0x44b4af | esi = "110 == levels.passLevel()"; 0x0040779c mov edx, 0x28b | edx = 0x28b; 0x004077a1 call 0x405860 | symaSsErT(int (); 0x004077a6 xor edi, edi | edi = 0; 0x004077a8 cmp byte [rsp + 0x16], 0x46 | 0x004077ad setne dil | dil = (*((rsp + 0x16)) != 0x46) ? 1 : 0; 0x004077b1 mov esi, 0x44b4c9 | esi = "70 == levels.triggerLevel()"; 0x004077b6 mov edx, 0x28c | edx = 0x28c; 0x004077bb call 0x405860 | symaSsErT(int (); 0x004077c0 xor edi, edi | edi = 0; 0x004077c2 cmp byte [rsp + 0x17], 0x28 | 0x004077c7 setne dil | dil = (*((rsp + 0x17)) != 0x28) ? 1 : 0; 0x004077cb mov esi, 0x44b4e5 | esi = "40 == levels.triggerAllLevel()"; 0x004077d0 mov edx, 0x28d | edx = 0x28d; 0x004077d5 call 0x405860 | symaSsErT(int (); 0x004077da lea rsi, [rsp + 0x14] | 0x004077df mov rdi, r15 | 0x004077e2 mov rdx, qword [rsp + 0x18] | 0x004077e7 call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, *((rsp + 0x18))); 0x004077ec xor edi, edi | edi = 0; 0x004077ee cmp byte [rsp + 0x14], 0x7d | 0x004077f3 setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x004077f7 mov esi, 0x44b504 | esi = "125 == levels.recordLevel()"; 0x004077fc mov edx, 0x290 | edx = 0x290; 0x00407801 call 0x405860 | symaSsErT(int (); 0x00407806 xor edi, edi | edi = 0; 0x00407808 cmp byte [rsp + 0x15], 0x6e | 0x0040780d setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x00407811 mov esi, 0x44b4af | esi = "110 == levels.passLevel()"; 0x00407816 mov edx, 0x291 | edx = 0x291; 0x0040781b call 0x405860 | symaSsErT(int (); 0x00407820 xor edi, edi | edi = 0; 0x00407822 cmp byte [rsp + 0x16], 0x4b | 0x00407827 setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x0040782b mov esi, 0x44b520 | esi = "75 == levels.triggerLevel()"; 0x00407830 mov edx, 0x292 | edx = 0x292; 0x00407835 call 0x405860 | symaSsErT(int (); 0x0040783a xor edi, edi | edi = 0; 0x0040783c cmp byte [rsp + 0x17], 0x32 | 0x00407841 setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x00407845 mov esi, 0x44b53c | esi = "50 == levels.triggerAllLevel()"; 0x0040784a mov edx, 0x293 | edx = 0x293; 0x0040784f call 0x405860 | symaSsErT(int (); 0x00407854 lea rsi, [rsp + 0x1d8] | 0x0040785c mov rdi, qword [rsp + 0x20] | 0x00407861 call 0x4160c0 | BloombergLP::ball::CategoryManager::removeRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x00407866 mov dword [rsp + 0x268], 0xffffffff | *((rsp + 0x268)) = 0xffffffff; 0x00407871 mov rbp, qword [rsp + 0x1f0] | rbp = *((rsp + 0x1f0)); 0x00407879 mov qword [rsp + 0x1f0], 0 | *((rsp + 0x1f0)) = 0; 0x00407885 lea rdi, [rsp + 0x1d8] | 0x0040788d mov esi, 0x44b480 | 0x00407892 mov edx, 7 | 0x00407897 mov ecx, 0x44c5c4 | 0x0040789c call 0x427e40 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rsp + 0x1d8, "weekend", 7, "string<>::operator=(basic_string_view&): string too long"); 0x004078a1 lea rsi, [rsp + 0x1d8] | 0x004078a9 mov rdi, qword [rsp + 0x20] | 0x004078ae call 0x415f10 | BloombergLP::ball::CategoryManager::addRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x004078b3 mov rdi, r15 | 0x004078b6 mov rsi, r13 | 0x004078b9 call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, r13); 0x004078be movzx edi, al | edi = (int32_t) al; 0x004078c1 mov esi, 0x44b55b | esi = "!attrContext->hasRelevantActiveRules(cat1)"; 0x004078c6 mov edx, 0x299 | edx = 0x299; 0x004078cb call 0x405860 | symaSsErT(int (); 0x004078d0 mov rdi, r15 | 0x004078d3 mov rsi, qword [rsp + 0x18] | 0x004078d8 call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, *((rsp + 0x18))); 0x004078dd xor al, 1 | al ^= 1; 0x004078df movzx edi, al | edi = (int32_t) al; 0x004078e2 mov esi, 0x44b587 | esi = 0x44b587; 0x004078e7 mov edx, 0x29a | edx = 0x29a; 0x004078ec call 0x405860 | symaSsErT(int (); 0x004078f1 lea rsi, [rsp + 0x14] | 0x004078f6 mov rdi, r15 | 0x004078f9 mov rdx, r13 | 0x004078fc call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, r13); 0x00407901 xor edi, edi | edi = 0; 0x00407903 cmp byte [rsp + 0x14], 0x80 | 0x00407908 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x0040790c mov esi, 0x44b493 | esi = "128 == levels.recordLevel()"; 0x00407911 mov edx, 0x29d | edx = 0x29d; 0x00407916 call 0x405860 | symaSsErT(int (); 0x0040791b xor edi, edi | edi = 0; 0x0040791d cmp byte [rsp + 0x15], 0x60 | 0x00407922 setne dil | dil = (*((rsp + 0x15)) != 0x60) ? 1 : 0; 0x00407926 mov esi, 0x44b5b1 | esi = "96 == levels.passLevel()"; 0x0040792b mov edx, 0x29e | edx = 0x29e; 0x00407930 call 0x405860 | symaSsErT(int (); 0x00407935 xor edi, edi | edi = 0; 0x00407937 cmp byte [rsp + 0x16], 0x40 | 0x0040793c setne dil | dil = (*((rsp + 0x16)) != 0x40) ? 1 : 0; 0x00407940 mov esi, 0x44b5ca | esi = "64 == levels.triggerLevel()"; 0x00407945 mov edx, 0x29f | edx = 0x29f; 0x0040794a call 0x405860 | symaSsErT(int (); 0x0040794f xor edi, edi | edi = 0; 0x00407951 cmp byte [rsp + 0x17], 0x20 | 0x00407956 setne dil | dil = (*((rsp + 0x17)) != 0x20) ? 1 : 0; 0x0040795a mov esi, 0x44b5e6 | esi = "32 == levels.triggerAllLevel()"; 0x0040795f mov edx, 0x2a0 | edx = 0x2a0; 0x00407964 call 0x405860 | symaSsErT(int (); 0x00407969 lea rsi, [rsp + 0x14] | 0x0040796e mov rdi, r15 | 0x00407971 mov rdx, qword [rsp + 0x18] | 0x00407976 call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, *((rsp + 0x18))); 0x0040797b xor edi, edi | edi = 0; 0x0040797d cmp byte [rsp + 0x14], 0x7d | 0x00407982 setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x00407986 mov esi, 0x44b504 | esi = "125 == levels.recordLevel()"; 0x0040798b mov edx, 0x2a3 | edx = 0x2a3; 0x00407990 call 0x405860 | symaSsErT(int (); 0x00407995 xor edi, edi | edi = 0; 0x00407997 cmp byte [rsp + 0x15], 0x6e | 0x0040799c setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x004079a0 mov esi, 0x44b4af | esi = "110 == levels.passLevel()"; 0x004079a5 mov edx, 0x2a4 | edx = 0x2a4; 0x004079aa call 0x405860 | symaSsErT(int (); 0x004079af xor edi, edi | edi = 0; 0x004079b1 cmp byte [rsp + 0x16], 0x4b | 0x004079b6 setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x004079ba mov esi, 0x44b520 | esi = "75 == levels.triggerLevel()"; 0x004079bf mov edx, 0x2a5 | edx = 0x2a5; 0x004079c4 call 0x405860 | symaSsErT(int (); 0x004079c9 xor edi, edi | edi = 0; 0x004079cb cmp byte [rsp + 0x17], 0x32 | 0x004079d0 setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x004079d4 mov esi, 0x44b53c | esi = "50 == levels.triggerAllLevel()"; 0x004079d9 mov edx, 0x2a6 | edx = 0x2a6; 0x004079de call 0x405860 | symaSsErT(int (); 0x004079e3 lea rsi, [rsp + 0x1d8] | 0x004079eb mov rdi, qword [rsp + 0x20] | 0x004079f0 call 0x4160c0 | BloombergLP::ball::CategoryManager::removeRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x004079f5 mov dword [rsp + 0x268], 0xffffffff | *((rsp + 0x268)) = 0xffffffff; 0x00407a00 mov esi, dword [rip + 0x261c52] | 0x00407a06 lea rdi, [rsp + 0x100] | 0x00407a0e call 0x413f00 | BloombergLP::ball::Attribute::hash(BloombergLP::ball::Attributeconst&,int) (rsp + 0x100, *(obj.BloombergLP::ball::ManagedAttributeSet::AttributeHash::s_hashtableSize)); 0x00407a13 cdqe | rax = (int64_t) eax; 0x00407a15 xor r14d, r14d | r14d = 0; 0x00407a18 xor edx, edx | edx = 0; 0x00407a1a div qword [rsp + 0x240] | rax = *(rdx:rax) / rsp + 0x240; | rdx = *(rdx:rax) % rsp + 0x240; 0x00407a22 mov rax, qword [rsp + 0x238] | rax = *((rsp + 0x238)); 0x00407a2a shl rdx, 4 | rdx <<= 4; 0x00407a2e mov rbp, qword [rax + rdx] | rbp = *((rax + rdx)); 0x00407a32 mov rax, qword [rax + rdx + 8] | rax = *((rax + rdx + 8)); 0x00407a37 test rax, rax | | if (rax != 0) { 0x00407a3a je 0x407a3f | 0x00407a3c mov r14, qword [rax] | r14 = *(rax); | } 0x00407a3f cmp r14, rbp | | if (r14 == rbp) { 0x00407a42 je 0x407b13 | goto label_14; | } 0x00407a48 lea r12, [rsp + 0x108] | r12 = rsp + 0x108; 0x00407a50 lea rbx, [rsp + 0x158] | rbx = rsp + 0x158; 0x00407a58 jmp 0x407a7d | goto label_15; | label_1: 0x00407a60 call 0x4042c0 | eax = bcmp (); 0x00407a65 test eax, eax | | if (eax == 0) { 0x00407a67 je 0x407aa0 | goto label_16; | } 0x00407a69 nop dword [rax] | | do { | label_0: 0x00407a70 mov rbp, qword [rbp] | rbp = *(rbp); 0x00407a74 cmp r14, rbp | | if (r14 == rbp) { 0x00407a77 je 0x407b13 | goto label_14; | } | label_15: 0x00407a7d mov rdx, qword [rsp + 0xe8] | rdx = *((rsp + 0xe8)); 0x00407a85 cmp rdx, qword [rbp + 0x28] | 0x00407a89 jne 0x407a70 | | } while (rdx != *((rbp + 0x28))); 0x00407a8b test rdx, rdx | | if (rdx != 0) { 0x00407a8e je 0x407aa0 | 0x00407a90 cmp qword [rbp + 0x30], 0x17 | | if (*((rbp + 0x30)) == 0x17) { 0x00407a95 je 0x407adb | goto label_17; | } 0x00407a97 mov rsi, qword [rbp + 0x10] | rsi = *((rbp + 0x10)); 0x00407a9b jmp 0x407adf | goto label_18; | } | label_16: 0x00407aa0 mov edx, dword [rsp + 0x138] | edx = *((rsp + 0x138)); 0x00407aa7 cmp edx, dword [rbp + 0x78] | | if (edx != *((rbp + 0x78))) { 0x00407aaa jne 0x407a70 | goto label_0; | } 0x00407aac test edx, edx | | if (edx == 0) { 0x00407aae je 0x407b03 | goto label_19; | } 0x00407ab0 lea rax, [rbp + 0x48] | rax = rbp + 0x48; 0x00407ab4 mov byte [rsp + 0x158], 1 | *((rsp + 0x158)) = 1; 0x00407abc mov qword [rsp + 0x160], rax | *((rsp + 0x160)) = rax; 0x00407ac4 mov rdi, r12 | 0x00407ac7 mov rsi, rbx | 0x00407aca call 0x413190 | voidBloombergLP::bdlb::VariantImp,bsl::allocator>>>::doApply(BloombergLP::bdlb::Variant_EqualityTestVisitor&,int)const (r12, rbx, rdx); 0x00407acf cmp byte [rsp + 0x158], 0 | | if (*((rsp + 0x158)) == 0) { 0x00407ad7 je 0x407a70 | goto label_0; | } 0x00407ad9 jmp 0x407b03 | goto label_19; | label_17: 0x00407adb lea rsi, [rbp + 0x10] | rsi = rbp + 0x10; | label_18: 0x00407adf cmp qword [rsp + 0xf0], 0x17 | 0x00407ae8 lea rdi, [rsp + 0xd0] | rdi = rsp + 0xd0; | if (*((rsp + 0xf0)) == 0x17) { 0x00407af0 je 0x407a60 | goto label_1; | } 0x00407af6 mov rdi, qword [rsp + 0xd0] | rdi = *((rsp + 0xd0)); 0x00407afe jmp 0x407a60 | goto label_1; | label_19: 0x00407b03 lea rdi, [rsp + 0x210] | rdi = rsp + 0x210; 0x00407b0b mov rsi, rbp | rsi = rbp; 0x00407b0e call 0x413850 | BloombergLP::bslstl::HashTable,BloombergLP::ball::ManagedAttributeSet::AttributeHash,bsl::equal_to,bsl::allocator>::remove(BloombergLP::bslalg::BidirectionalLink*) (); | label_14: 0x00407b13 mov qword [rsp + 0x70], 0x44b382 | *((rsp + 0x70)) = "uuid"; 0x00407b1c mov qword [rsp + 0x78], 4 | *((rsp + 0x78)) = 4; 0x00407b25 mov rax, qword [rip + 0x262c54] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00407b2c test rax, rax | | if (rax != 0) { 0x00407b2f je 0x407b38 | 0x00407b31 lea rbx, [rsp + 0x30] | rbx = rsp + 0x30; 0x00407b36 jmp 0x407b42 | | } else { 0x00407b38 call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00407b3d lea rbx, [rsp + 0x30] | rbx = rsp + 0x30; | } 0x00407b42 mov qword [rsp + 0x150], rax | *((rsp + 0x150)) = rax; 0x00407b4a lea rdi, [rsp + 0x158] | 0x00407b52 lea rsi, [rsp + 0x70] | 0x00407b57 lea rcx, [rsp + 0x150] | 0x00407b5f mov edx, 2 | 0x00407b64 call 0x412820 | BloombergLP::ball::ManagedAttribute::ManagedAttribute(std::_1::basic_string_view>const&,int,bsl::allocatorconst&) (rsp + 0x158, rsp + 0x70, 2, rsp + 0x150); 0x00407b69 mov dword [rsp + 0x268], 0xffffffff | *((rsp + 0x268)) = 0xffffffff; 0x00407b74 mov byte [rsp + 0x70], 0 | *((rsp + 0x70)) = 0; 0x00407b79 lea rsi, [rsp + 0x70] | rsi = rsp + 0x70; 0x00407b7e lea rdx, [rsp + 0x158] | rdx = rsp + 0x158; 0x00407b86 lea rdi, [rsp + 0x210] | rdi = rsp + 0x210; 0x00407b8e call 0x412e60 | BloombergLP::bslstl::HashTable,BloombergLP::ball::ManagedAttributeSet::AttributeHash,bsl::equal_to,bsl::allocator>::insertIfMissing(bool*,BloombergLP::ball::ManagedAttributeconst&) (); 0x00407b93 lea rsi, [rsp + 0x1d8] | 0x00407b9b mov rdi, qword [rsp + 0x20] | 0x00407ba0 call 0x415f10 | BloombergLP::ball::CategoryManager::addRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x00407ba5 mov rdi, r15 | 0x00407ba8 mov rsi, r13 | 0x00407bab call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, r13); 0x00407bb0 movzx edi, al | edi = (int32_t) al; 0x00407bb3 mov esi, 0x44b55b | esi = "!attrContext->hasRelevantActiveRules(cat1)"; 0x00407bb8 mov edx, 0x2ae | edx = 0x2ae; 0x00407bbd call 0x405860 | symaSsErT(int (); 0x00407bc2 mov rdi, r15 | 0x00407bc5 mov rsi, qword [rsp + 0x18] | 0x00407bca call 0x414eb0 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (r15, *((rsp + 0x18))); 0x00407bcf movzx edi, al | edi = (int32_t) al; 0x00407bd2 mov esi, 0x44b586 | esi = "!attrContext->hasRelevantActiveRules(cat2)"; 0x00407bd7 mov edx, 0x2af | edx = 0x2af; 0x00407bdc call 0x405860 | symaSsErT(int (); 0x00407be1 lea rsi, [rsp + 0x14] | 0x00407be6 mov rdi, r15 | 0x00407be9 mov rdx, r13 | 0x00407bec call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, r13); 0x00407bf1 xor edi, edi | edi = 0; 0x00407bf3 cmp byte [rsp + 0x14], 0x80 | 0x00407bf8 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x00407bfc mov esi, 0x44b493 | esi = "128 == levels.recordLevel()"; 0x00407c01 mov edx, 0x2b2 | edx = 0x2b2; 0x00407c06 call 0x405860 | symaSsErT(int (); 0x00407c0b xor edi, edi | edi = 0; 0x00407c0d cmp byte [rsp + 0x15], 0x60 | 0x00407c12 setne dil | dil = (*((rsp + 0x15)) != 0x60) ? 1 : 0; 0x00407c16 mov esi, 0x44b5b1 | esi = "96 == levels.passLevel()"; 0x00407c1b mov edx, 0x2b3 | edx = 0x2b3; 0x00407c20 call 0x405860 | symaSsErT(int (); 0x00407c25 xor edi, edi | edi = 0; 0x00407c27 cmp byte [rsp + 0x16], 0x40 | 0x00407c2c setne dil | dil = (*((rsp + 0x16)) != 0x40) ? 1 : 0; 0x00407c30 mov esi, 0x44b5ca | esi = "64 == levels.triggerLevel()"; 0x00407c35 mov edx, 0x2b4 | edx = 0x2b4; 0x00407c3a call 0x405860 | symaSsErT(int (); 0x00407c3f xor edi, edi | edi = 0; 0x00407c41 cmp byte [rsp + 0x17], 0x20 | 0x00407c46 setne dil | dil = (*((rsp + 0x17)) != 0x20) ? 1 : 0; 0x00407c4a mov esi, 0x44b5e6 | esi = "32 == levels.triggerAllLevel()"; 0x00407c4f mov edx, 0x2b5 | edx = 0x2b5; 0x00407c54 call 0x405860 | symaSsErT(int (); 0x00407c59 lea rsi, [rsp + 0x14] | 0x00407c5e mov rdi, r15 | 0x00407c61 mov rdx, qword [rsp + 0x18] | 0x00407c66 call 0x414ff0 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (r15, rsp + 0x14, *((rsp + 0x18))); 0x00407c6b xor edi, edi | edi = 0; 0x00407c6d cmp byte [rsp + 0x14], 0x7d | 0x00407c72 setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x00407c76 mov esi, 0x44b504 | esi = "125 == levels.recordLevel()"; 0x00407c7b mov edx, 0x2b8 | edx = 0x2b8; 0x00407c80 call 0x405860 | symaSsErT(int (); 0x00407c85 xor edi, edi | edi = 0; 0x00407c87 cmp byte [rsp + 0x15], 0x64 | 0x00407c8c setne dil | dil = (*((rsp + 0x15)) != 0x64) ? 1 : 0; 0x00407c90 mov esi, 0x44b605 | esi = "100 == levels.passLevel()"; 0x00407c95 mov edx, 0x2b9 | edx = 0x2b9; 0x00407c9a call 0x405860 | symaSsErT(int (); 0x00407c9f xor edi, edi | edi = 0; 0x00407ca1 cmp byte [rsp + 0x16], 0x4b | 0x00407ca6 setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x00407caa mov esi, 0x44b520 | esi = "75 == levels.triggerLevel()"; 0x00407caf mov edx, 0x2ba | edx = 0x2ba; 0x00407cb4 call 0x405860 | symaSsErT(int (); 0x00407cb9 xor edi, edi | edi = 0; 0x00407cbb cmp byte [rsp + 0x17], 0x32 | 0x00407cc0 setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x00407cc4 mov esi, 0x44b53c | esi = "50 == levels.triggerAllLevel()"; 0x00407cc9 mov edx, 0x2bb | edx = 0x2bb; 0x00407cce call 0x405860 | symaSsErT(int (); 0x00407cd3 mov eax, dword [rsp + 0x1c0] | eax = *((rsp + 0x1c0)); 0x00407cda test eax, eax | | if (eax != 0) { 0x00407cdc je 0x407d1b | 0x00407cde cmp eax, 3 | | if (eax == 3) { 0x00407ce1 jne 0x407d10 | 0x00407ce3 cmp qword [rsp + 0x1b0], 0x17 | | if (*((rsp + 0x1b0)) != 0x17) { 0x00407cec je 0x407d04 | 0x00407cee mov rsi, qword [rsp + 0x190] | rsi = *((rsp + 0x190)); 0x00407cf6 mov rdi, qword [rsp + 0x1b8] | rdi = *((rsp + 0x1b8)); 0x00407cfe mov rax, qword [rdi] | rax = *(rdi); 0x00407d01 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407d04 mov qword [rsp + 0x1a8], 0xffffffffffffffff | *((rsp + 0x1a8)) = 0xffffffffffffffff; | } 0x00407d10 mov dword [rsp + 0x1c0], 0 | *((rsp + 0x1c0)) = 0; | } 0x00407d1b cmp qword [rsp + 0x178], 0x17 | | if (*((rsp + 0x178)) != 0x17) { 0x00407d24 je 0x407d3c | 0x00407d26 mov rsi, qword [rsp + 0x158] | rsi = *((rsp + 0x158)); 0x00407d2e mov rdi, qword [rsp + 0x180] | rdi = *((rsp + 0x180)); 0x00407d36 mov rax, qword [rdi] | rax = *(rdi); 0x00407d39 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407d3c mov eax, dword [rsp + 0x138] | eax = *((rsp + 0x138)); 0x00407d43 test eax, eax | | if (eax != 0) { 0x00407d45 je 0x407d84 | 0x00407d47 cmp eax, 3 | | if (eax == 3) { 0x00407d4a jne 0x407d79 | 0x00407d4c cmp qword [rsp + 0x128], 0x17 | | if (*((rsp + 0x128)) != 0x17) { 0x00407d55 je 0x407d6d | 0x00407d57 mov rsi, qword [rsp + 0x108] | rsi = *((rsp + 0x108)); 0x00407d5f mov rdi, qword [rsp + 0x130] | rdi = *((rsp + 0x130)); 0x00407d67 mov rax, qword [rdi] | rax = *(rdi); 0x00407d6a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407d6d mov qword [rsp + 0x120], 0xffffffffffffffff | *((rsp + 0x120)) = 0xffffffffffffffff; | } 0x00407d79 mov dword [rsp + 0x138], 0 | *((rsp + 0x138)) = 0; | } 0x00407d84 cmp qword [rsp + 0xf0], 0x17 | | if (*((rsp + 0xf0)) != 0x17) { 0x00407d8d je 0x407da5 | 0x00407d8f mov rsi, qword [rsp + 0xd0] | rsi = *((rsp + 0xd0)); 0x00407d97 mov rdi, qword [rsp + 0xf8] | rdi = *((rsp + 0xf8)); 0x00407d9f mov rax, qword [rdi] | rax = *(rdi); 0x00407da2 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407da5 cmp dword [rsp + 0xb8], 3 | | if (*((rsp + 0xb8)) == 3) { 0x00407dad jne 0x407dd0 | 0x00407daf cmp qword [rsp + 0xa8], 0x17 | | if (*((rsp + 0xa8)) == 0x17) { 0x00407db8 je 0x407dd0 | goto label_20; | } 0x00407dba mov rsi, qword [rsp + 0x88] | rsi = *((rsp + 0x88)); 0x00407dc2 mov rdi, qword [rsp + 0xb0] | rdi = *((rsp + 0xb0)); 0x00407dca mov rax, qword [rdi] | rax = *(rdi); 0x00407dcd call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_20: 0x00407dd0 mov qword [rsp + 0x28], 0x44b050 | *((rsp + 0x28)) = vtable.AttributeSet.0; 0x00407dd9 mov rdi, rbx | 0x00407ddc call 0x4125d0 | bsl::set>::~set() (rbx); 0x00407de1 lea rdi, [rsp + 0x28] | rdi = rsp + 0x28; 0x00407de6 call 0x414410 | BloombergLP::ball::AttributeContainer::~AttributeContainer() (); 0x00407deb lea rdi, [rsp + 0x1d8] | 0x00407df3 call 0x412990 | eax = BloombergLP::ball::Rule::~Rule() (rsp + 0x1d8); 0x00407df8 xor eax, eax | eax = 0; 0x00407dfa add rsp, 0x278 | 0x00407e01 pop rbx | 0x00407e02 pop r12 | 0x00407e04 pop r13 | 0x00407e06 pop r14 | 0x00407e08 pop r15 | 0x00407e0a pop rbp | 0x00407e0b ret | return rax; | label_6: 0x00407e0c call 0x421bc0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00407e11 mov ecx, dword [rsp + 0xb8] | ecx = *((rsp + 0xb8)); 0x00407e18 lea rbx, [rsp + 0x88] | rbx = rsp + 0x88; 0x00407e20 mov qword [rsp + 0xc0], rax | *((rsp + 0xc0)) = rax; 0x00407e28 mov eax, 0xffffffff | eax = 0xffffffff; 0x00407e2d mov qword [rsp + 0xc8], rax | *((rsp + 0xc8)) = rax; 0x00407e35 cmp ecx, 3 | | if (ecx == 3) { 0x00407e38 je 0x407e60 | goto label_21; | } 0x00407e3a cmp ecx, 1 | | if (ecx != 1) { 0x00407e3d jne 0x407181 | goto label_2; | } 0x00407e43 mov rax, rbx | rax = rbx; 0x00407e46 jmp 0x40718f | goto label_3; | label_11: 0x00407e4b mov rcx, r12 | rcx = r12; 0x00407e4e cmp rbx, 0x2d8 | | if (rbx >= 0x2d8) { 0x00407e55 jae 0x4072b0 | goto label_4; | } 0x00407e5b jmp 0x40731e | goto label_5; | label_21: 0x00407e60 cmp qword [rsp + 0xa8], 0x17 | | if (*((rsp + 0xa8)) != 0x17) { 0x00407e69 je 0x407e81 | 0x00407e6b mov rsi, qword [rsp + 0x88] | rsi = *((rsp + 0x88)); 0x00407e73 mov rdi, qword [rsp + 0xb0] | rdi = *((rsp + 0xb0)); 0x00407e7b mov rax, qword [rdi] | rax = *(rdi); 0x00407e7e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407e81 mov qword [rsp + 0xa0], 0xffffffffffffffff | *((rsp + 0xa0)) = 0xffffffffffffffff; 0x00407e8d jmp 0x407181 | goto label_2; | }