; assembly | /* r2dec pseudo code output */ | /* ball_attributecontext.t/none @ 0x406550 */ | #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; | char * var_28h; | uint32_t var_30h; | char * var_38h; | int64_t var_40h; | int64_t var_58h; | uint32_t var_60h; | int64_t var_68h; | uint32_t var_70h; | uint32_t var_78h; | int64_t var_80h; | int64_t var_88h; | int64_t var_90h; | int64_t var_98h; | int64_t var_a0h; | int64_t var_b0h; | int64_t var_b8h; | int64_t var_c0h; | int64_t var_c8h; | int64_t var_d0h; | char * var_d8h; | int64_t var_e0h; | int64_t var_f0h; | uint32_t var_f8h; | char * var_100h; | int64_t var_108h; | int64_t var_110h; | int64_t var_128h; | uint32_t var_130h; | int64_t var_138h; | int64_t var_140h; | 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; 0x00406550 push rbp | 0x00406551 push r15 | 0x00406553 push r14 | 0x00406555 push r13 | 0x00406557 push r12 | 0x00406559 push rbx | 0x0040655a sub rsp, 0x278 | 0x00406561 mov rbp, qword [rdi] | rbp = *(rdi); 0x00406564 xor edi, edi | edi = 0; 0x00406566 test rbp, rbp | 0x00406569 sete dil | dil = (rbp == 0) ? 1 : 0; 0x0040656d mov esi, 0x448fb9 | esi = "manager"; 0x00406572 mov edx, 0x249 | edx = 0x249; 0x00406577 call 0x405630 | symaSsErT(int (); 0x0040657c call 0x4125c0 | rax = BloombergLP::ball::AttributeContext::lookupContext() (); 0x00406581 xor edi, edi | edi = 0; 0x00406583 test rax, rax | 0x00406586 setne dil | dil = (rax != 0) ? 1 : 0; 0x0040658a mov esi, 0x448f8c | esi = "0 == ball::AttributeContext::lookupContext()"; 0x0040658f mov edx, 0x24a | edx = 0x24a; 0x00406594 call 0x405630 | symaSsErT(int (); 0x00406599 mov esi, 0x448fc1 | 0x0040659e mov rdi, rbp | 0x004065a1 mov edx, 0x80 | 0x004065a6 mov ecx, 0x60 | 0x004065ab mov r8d, 0x40 | 0x004065b1 mov r9d, 0x20 | 0x004065b7 call 0x413490 | rax = BloombergLP::ball::CategoryManager::setThresholdLevels(char const*,int,int,int,int) (rbp, "weekday", 0x80, 0x60, 0x40, 0x20); 0x004065bc mov r14, rax | r14 = rax; 0x004065bf xor edi, edi | edi = 0; 0x004065c1 test rax, rax | 0x004065c4 sete dil | dil = (rax == 0) ? 1 : 0; 0x004065c8 mov esi, 0x448fc9 | esi = "cat1"; 0x004065cd mov edx, 0x24e | edx = 0x24e; 0x004065d2 call 0x405630 | symaSsErT(int (); 0x004065d7 mov esi, 0x448fce | 0x004065dc mov rdi, rbp | 0x004065df mov edx, 0x7d | 0x004065e4 mov ecx, 0x64 | 0x004065e9 mov r8d, 0x4b | 0x004065ef mov r9d, 0x32 | 0x004065f5 call 0x413490 | rax = BloombergLP::ball::CategoryManager::setThresholdLevels(char const*,int,int,int,int) (rbp, "weekend", 0x7d, 0x64, 0x4b, 0x32); 0x004065fa mov r13, rax | r13 = rax; 0x004065fd xor edi, edi | edi = 0; 0x004065ff test rax, rax | 0x00406602 sete dil | dil = (rax == 0) ? 1 : 0; 0x00406606 mov esi, 0x448fd6 | esi = "cat2"; 0x0040660b mov edx, 0x252 | edx = 0x252; 0x00406610 call 0x405630 | symaSsErT(int (); 0x00406615 mov qword [rsp + 0xd8], 0x448fdb | *((rsp + 0xd8)) = "week*"; 0x00406621 mov qword [rsp + 0xe0], 5 | *((rsp + 0xe0)) = 5; 0x0040662d mov qword [rsp], 0 | *(rsp) = 0; 0x00406635 lea rbx, [rsp + 0x1d8] | rbx = rsp + 0x1d8; 0x0040663d lea rsi, [rsp + 0xd8] | 0x00406645 mov rdi, rbx | 0x00406648 mov edx, 0x78 | 0x0040664d mov ecx, 0x6e | 0x00406652 mov r8d, 0x46 | 0x00406658 mov r9d, 0x28 | 0x0040665e call 0x410040 | BloombergLP::ball::Rule::Rule(std::_1::basic_string_view>const&,int,int,int,int,BloombergLP::bslma::Allocator*) (rbx, rsp + 0xd8, 0x78, 0x6e, 0x46, 0x28); 0x00406663 mov qword [rsp + 0x20], rbp | *((rsp + 0x20)) = rbp; 0x00406668 mov rdi, rbp | 0x0040666b mov rsi, rbx | 0x0040666e call 0x413690 | BloombergLP::ball::CategoryManager::addRule(BloombergLP::ball::Ruleconst&) (rbp, rbx); 0x00406673 mov qword [rsp + 0x90], 0x448ba0 | *((rsp + 0x90)) = vtable.AttributeSet.0; 0x0040667f mov rax, qword [rip + 0x2620fa] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00406686 test rax, rax | | if (rax == 0) { 0x00406689 jne 0x406690 | 0x0040668b call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00406690 mov qword [rsp + 0x98], rax | *((rsp + 0x98)) = rax; 0x00406698 xorps xmm0, xmm0 | __asm ("xorps xmm0, xmm0"); 0x0040669b movups xmmword [rsp + 0xa0], xmm0 | __asm ("movups xmmword [rsp + 0xa0], xmm0"); 0x004066a3 mov dword [rsp + 0xb0], 1 | *((rsp + 0xb0)) = 1; 0x004066ae lea rax, [rsp + 0xb8] | rax = rsp + 0xb8; 0x004066b6 mov dword [rsp + 0xd0], 0 | *((rsp + 0xd0)) = 0; 0x004066c1 mov qword [rsp + 0xc8], rax | *((rsp + 0xc8)) = rax; 0x004066c9 mov qword [rsp + 0xc0], 0 | *((rsp + 0xc0)) = 0; 0x004066d5 call 0x412420 | rax = BloombergLP::ball::AttributeContext::getContext() (); 0x004066da mov rbx, rax | rbx = rax; 0x004066dd mov rax, qword [rip + 0x26209c] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x004066e4 test rax, rax | | if (rax == 0) { 0x004066e7 jne 0x4066ee | 0x004066e9 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x004066ee mov qword [rsp + 0x38], 0x448ed0 | *((rsp + 0x38)) = "uuid"; 0x004066f7 mov dword [rsp + 0x70], 0 | *((rsp + 0x70)) = 0; 0x004066ff test rax, rax | | if (rax == 0) { 0x00406702 jne 0x406714 | 0x00406704 mov rax, qword [rip + 0x262075] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040670b test rax, rax | | if (rax == 0) { 0x0040670e je 0x407172 | goto label_4; | } | } 0x00406714 lea rbp, [rsp + 0x40] | rbp = rsp + 0x40; 0x00406719 mov qword [rsp + 0x78], rax | *((rsp + 0x78)) = rax; 0x0040671e mov eax, 0xffffffff | eax = 0xffffffff; 0x00406723 mov qword [rsp + 0x80], rax | *((rsp + 0x80)) = rax; | label_2: 0x0040672b lea rax, [rsp + 0x70] | rax = rsp + 0x70; 0x00406730 mov dword [rbp], 1 | *(rbp) = 1; | label_3: 0x00406737 mov dword [rax], 1 | *(rax) = 1; 0x0040673d lea rdi, [rsp + 0x98] | 0x00406745 lea rsi, [rsp + 0x38] | 0x0040674a call 0x40fe00 | bsl::set>::insert(BloombergLP::ball::Attributeconst&) (rsp + 0x98, rsp + 0x38); 0x0040674f mov qword [rbx + 0x20], 0 | *((rbx + 0x20)) = 0; 0x00406757 mov qword [rbx + 0x28], 0xffffffffffffffff | *((rbx + 0x28)) = 0xffffffffffffffff; 0x0040675f lea rdi, [rsp + 0x270] | 0x00406767 lea rdx, [rsp + 0x90] | 0x0040676f mov rsi, rbx | 0x00406772 call 0x411d90 | BloombergLP::ball::AttributeContainerList::pushFront(BloombergLP::ball::AttributeContainerconst*) (rsp + 0x270, rbx, rsp + 0x90); 0x00406777 mov rdi, rbx | 0x0040677a mov rsi, r14 | 0x0040677d call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, r14); 0x00406782 xor al, 1 | al ^= 1; 0x00406784 movzx edi, al | edi = (int32_t) al; 0x00406787 mov esi, 0x4490aa | esi = 0x4490aa; 0x0040678c mov edx, 0x260 | edx = 0x260; 0x00406791 call 0x405630 | symaSsErT(int (); 0x00406796 mov rdi, rbx | 0x00406799 mov rsi, r13 | 0x0040679c call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, r13); 0x004067a1 xor al, 1 | al ^= 1; 0x004067a3 movzx edi, al | edi = (int32_t) al; 0x004067a6 mov esi, 0x4490d5 | esi = 0x4490d5; 0x004067ab mov edx, 0x261 | edx = 0x261; 0x004067b0 call 0x405630 | symaSsErT(int (); 0x004067b5 mov dword [rsp + 0x14], 0 | *((rsp + 0x14)) = 0; 0x004067bd lea rsi, [rsp + 0x14] | 0x004067c2 mov rdi, rbx | 0x004067c5 mov rdx, r14 | 0x004067c8 call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, r14); 0x004067cd xor edi, edi | edi = 0; 0x004067cf cmp byte [rsp + 0x14], 0x80 | 0x004067d4 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x004067d8 mov esi, 0x448fe1 | esi = "128 == levels.recordLevel()"; 0x004067dd mov edx, 0x266 | edx = 0x266; 0x004067e2 call 0x405630 | symaSsErT(int (); 0x004067e7 xor edi, edi | edi = 0; 0x004067e9 cmp byte [rsp + 0x15], 0x6e | 0x004067ee setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x004067f2 mov esi, 0x448ffd | esi = "110 == levels.passLevel()"; 0x004067f7 mov edx, 0x267 | edx = 0x267; 0x004067fc call 0x405630 | symaSsErT(int (); 0x00406801 xor edi, edi | edi = 0; 0x00406803 cmp byte [rsp + 0x16], 0x46 | 0x00406808 setne dil | dil = (*((rsp + 0x16)) != 0x46) ? 1 : 0; 0x0040680c mov esi, 0x449017 | esi = "70 == levels.triggerLevel()"; 0x00406811 mov edx, 0x268 | edx = 0x268; 0x00406816 call 0x405630 | symaSsErT(int (); 0x0040681b xor edi, edi | edi = 0; 0x0040681d cmp byte [rsp + 0x17], 0x28 | 0x00406822 setne dil | dil = (*((rsp + 0x17)) != 0x28) ? 1 : 0; 0x00406826 mov esi, 0x449033 | esi = "40 == levels.triggerAllLevel()"; 0x0040682b mov edx, 0x269 | edx = 0x269; 0x00406830 call 0x405630 | symaSsErT(int (); 0x00406835 lea rsi, [rsp + 0x14] | 0x0040683a mov rdi, rbx | 0x0040683d mov rdx, r13 | 0x00406840 call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, r13); 0x00406845 xor edi, edi | edi = 0; 0x00406847 cmp byte [rsp + 0x14], 0x7d | 0x0040684c setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x00406850 mov esi, 0x449052 | esi = "125 == levels.recordLevel()"; 0x00406855 mov edx, 0x26c | edx = 0x26c; 0x0040685a call 0x405630 | symaSsErT(int (); 0x0040685f xor edi, edi | edi = 0; 0x00406861 cmp byte [rsp + 0x15], 0x6e | 0x00406866 setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x0040686a mov esi, 0x448ffd | esi = "110 == levels.passLevel()"; 0x0040686f mov edx, 0x26d | edx = 0x26d; 0x00406874 call 0x405630 | symaSsErT(int (); 0x00406879 xor edi, edi | edi = 0; 0x0040687b cmp byte [rsp + 0x16], 0x4b | 0x00406880 setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x00406884 mov esi, 0x44906e | esi = "75 == levels.triggerLevel()"; 0x00406889 mov edx, 0x26e | edx = 0x26e; 0x0040688e call 0x405630 | symaSsErT(int (); 0x00406893 xor edi, edi | edi = 0; 0x00406895 cmp byte [rsp + 0x17], 0x32 | 0x0040689a setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x0040689e mov esi, 0x44908a | esi = "50 == levels.triggerAllLevel()"; 0x004068a3 mov edx, 0x26f | edx = 0x26f; 0x004068a8 call 0x405630 | symaSsErT(int (); 0x004068ad lea rsi, [rsp + 0x1d8] | 0x004068b5 mov rdi, qword [rsp + 0x20] | 0x004068ba call 0x413840 | BloombergLP::ball::CategoryManager::removeRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x004068bf mov rdi, rbx | 0x004068c2 mov rsi, r14 | 0x004068c5 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, r14); 0x004068ca movzx edi, al | edi = (int32_t) al; 0x004068cd mov esi, 0x4490a9 | esi = "!attrContext->hasRelevantActiveRules(cat1)"; 0x004068d2 mov edx, 0x273 | edx = 0x273; 0x004068d7 call 0x405630 | symaSsErT(int (); 0x004068dc mov rdi, rbx | 0x004068df mov rsi, r13 | 0x004068e2 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, r13); 0x004068e7 movzx edi, al | edi = (int32_t) al; 0x004068ea mov esi, 0x4490d4 | esi = "!attrContext->hasRelevantActiveRules(cat2)"; 0x004068ef mov edx, 0x274 | edx = 0x274; 0x004068f4 call 0x405630 | symaSsErT(int (); 0x004068f9 lea rsi, [rsp + 0x14] | 0x004068fe mov rdi, rbx | 0x00406901 mov rdx, r14 | 0x00406904 call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, r14); 0x00406909 xor edi, edi | edi = 0; 0x0040690b cmp byte [rsp + 0x14], 0x80 | 0x00406910 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x00406914 mov esi, 0x448fe1 | esi = "128 == levels.recordLevel()"; 0x00406919 mov edx, 0x277 | edx = 0x277; 0x0040691e call 0x405630 | symaSsErT(int (); 0x00406923 xor edi, edi | edi = 0; 0x00406925 cmp byte [rsp + 0x15], 0x60 | 0x0040692a setne dil | dil = (*((rsp + 0x15)) != 0x60) ? 1 : 0; 0x0040692e mov esi, 0x4490ff | esi = "96 == levels.passLevel()"; 0x00406933 mov edx, 0x278 | edx = 0x278; 0x00406938 call 0x405630 | symaSsErT(int (); 0x0040693d xor edi, edi | edi = 0; 0x0040693f cmp byte [rsp + 0x16], 0x40 | 0x00406944 setne dil | dil = (*((rsp + 0x16)) != 0x40) ? 1 : 0; 0x00406948 mov esi, 0x449118 | esi = "64 == levels.triggerLevel()"; 0x0040694d mov edx, 0x279 | edx = 0x279; 0x00406952 call 0x405630 | symaSsErT(int (); 0x00406957 xor edi, edi | edi = 0; 0x00406959 cmp byte [rsp + 0x17], 0x20 | 0x0040695e setne dil | dil = (*((rsp + 0x17)) != 0x20) ? 1 : 0; 0x00406962 mov esi, 0x449134 | esi = "32 == levels.triggerAllLevel()"; 0x00406967 mov edx, 0x27a | edx = 0x27a; 0x0040696c call 0x405630 | symaSsErT(int (); 0x00406971 lea rsi, [rsp + 0x14] | 0x00406976 mov rdi, rbx | 0x00406979 mov rdx, r13 | 0x0040697c call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, r13); 0x00406981 xor edi, edi | edi = 0; 0x00406983 cmp byte [rsp + 0x14], 0x7d | 0x00406988 setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x0040698c mov esi, 0x449052 | esi = "125 == levels.recordLevel()"; 0x00406991 mov edx, 0x27d | edx = 0x27d; 0x00406996 call 0x405630 | symaSsErT(int (); 0x0040699b xor edi, edi | edi = 0; 0x0040699d cmp byte [rsp + 0x15], 0x64 | 0x004069a2 setne dil | dil = (*((rsp + 0x15)) != 0x64) ? 1 : 0; 0x004069a6 mov esi, 0x449153 | esi = "100 == levels.passLevel()"; 0x004069ab mov edx, 0x27e | edx = 0x27e; 0x004069b0 call 0x405630 | symaSsErT(int (); 0x004069b5 xor edi, edi | edi = 0; 0x004069b7 cmp byte [rsp + 0x16], 0x4b | 0x004069bc setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x004069c0 mov esi, 0x44906e | esi = "75 == levels.triggerLevel()"; 0x004069c5 mov edx, 0x27f | edx = 0x27f; 0x004069ca call 0x405630 | symaSsErT(int (); 0x004069cf xor edi, edi | edi = 0; 0x004069d1 cmp byte [rsp + 0x17], 0x32 | 0x004069d6 setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x004069da mov esi, 0x44908a | esi = "50 == levels.triggerAllLevel()"; 0x004069df mov edx, 0x280 | edx = 0x280; 0x004069e4 call 0x405630 | symaSsErT(int (); 0x004069e9 mov qword [rsp + 0x18], r14 | *((rsp + 0x18)) = r14; 0x004069ee mov qword [rsp + 0x158], 0x448ed0 | *((rsp + 0x158)) = "uuid"; 0x004069fa mov qword [rsp + 0x160], 4 | *((rsp + 0x160)) = 4; 0x00406a06 mov rax, qword [rip + 0x261d73] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00406a0d test rax, rax | | if (rax == 0) { 0x00406a10 jne 0x406a17 | 0x00406a12 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } 0x00406a17 mov qword [rsp + 0x28], rax | *((rsp + 0x28)) = rax; 0x00406a1c lea rdi, [rsp + 0xd8] | 0x00406a24 lea rsi, [rsp + 0x158] | 0x00406a2c lea rcx, [rsp + 0x28] | 0x00406a31 mov edx, 1 | 0x00406a36 call 0x410190 | BloombergLP::ball::ManagedAttribute::ManagedAttribute(std::_1::basic_string_view>const&,int,bsl::allocatorconst&) (rsp + 0xd8, rsp + 0x158, 1, rsp + 0x28); 0x00406a3b mov dword [rsp + 0x268], 0xffffffff | *((rsp + 0x268)) = 0xffffffff; 0x00406a46 mov byte [rsp + 0x158], 0 | *((rsp + 0x158)) = 0; 0x00406a4e lea rdi, [rsp + 0x210] | rdi = rsp + 0x210; 0x00406a56 lea rsi, [rsp + 0x158] | rsi = rsp + 0x158; 0x00406a5e lea rdx, [rsp + 0xd8] | rdx = rsp + 0xd8; 0x00406a66 call 0x4107d0 | BloombergLP::bslstl::HashTable,BloombergLP::ball::ManagedAttributeSet::AttributeHash,bsl::equal_to,bsl::allocator>::insertIfMissing(bool*,BloombergLP::ball::ManagedAttributeconst&) (); 0x00406a6b lea rsi, [rsp + 0x1d8] | 0x00406a73 mov rdi, qword [rsp + 0x20] | 0x00406a78 call 0x413690 | BloombergLP::ball::CategoryManager::addRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x00406a7d mov rdi, rbx | 0x00406a80 mov rsi, qword [rsp + 0x18] | 0x00406a85 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, *((rsp + 0x18))); 0x00406a8a xor al, 1 | al ^= 1; 0x00406a8c movzx edi, al | edi = (int32_t) al; 0x00406a8f mov esi, 0x4490aa | esi = 0x4490aa; 0x00406a94 mov edx, 0x286 | edx = 0x286; 0x00406a99 call 0x405630 | symaSsErT(int (); 0x00406a9e mov rdi, rbx | 0x00406aa1 mov rsi, r13 | 0x00406aa4 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, r13); 0x00406aa9 xor al, 1 | al ^= 1; 0x00406aab movzx edi, al | edi = (int32_t) al; 0x00406aae mov esi, 0x4490d5 | esi = 0x4490d5; 0x00406ab3 mov edx, 0x287 | edx = 0x287; 0x00406ab8 call 0x405630 | symaSsErT(int (); 0x00406abd lea rsi, [rsp + 0x14] | 0x00406ac2 mov rdi, rbx | 0x00406ac5 mov rdx, qword [rsp + 0x18] | 0x00406aca call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, *((rsp + 0x18))); 0x00406acf xor edi, edi | edi = 0; 0x00406ad1 cmp byte [rsp + 0x14], 0x80 | 0x00406ad6 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x00406ada mov esi, 0x448fe1 | esi = "128 == levels.recordLevel()"; 0x00406adf mov edx, 0x28a | edx = 0x28a; 0x00406ae4 call 0x405630 | symaSsErT(int (); 0x00406ae9 xor edi, edi | edi = 0; 0x00406aeb cmp byte [rsp + 0x15], 0x6e | 0x00406af0 setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x00406af4 mov esi, 0x448ffd | esi = "110 == levels.passLevel()"; 0x00406af9 mov edx, 0x28b | edx = 0x28b; 0x00406afe call 0x405630 | symaSsErT(int (); 0x00406b03 xor edi, edi | edi = 0; 0x00406b05 cmp byte [rsp + 0x16], 0x46 | 0x00406b0a setne dil | dil = (*((rsp + 0x16)) != 0x46) ? 1 : 0; 0x00406b0e mov esi, 0x449017 | esi = "70 == levels.triggerLevel()"; 0x00406b13 mov edx, 0x28c | edx = 0x28c; 0x00406b18 call 0x405630 | symaSsErT(int (); 0x00406b1d xor edi, edi | edi = 0; 0x00406b1f cmp byte [rsp + 0x17], 0x28 | 0x00406b24 setne dil | dil = (*((rsp + 0x17)) != 0x28) ? 1 : 0; 0x00406b28 mov esi, 0x449033 | esi = "40 == levels.triggerAllLevel()"; 0x00406b2d mov edx, 0x28d | edx = 0x28d; 0x00406b32 call 0x405630 | symaSsErT(int (); 0x00406b37 lea rsi, [rsp + 0x14] | 0x00406b3c mov rdi, rbx | 0x00406b3f mov rdx, r13 | 0x00406b42 call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, r13); 0x00406b47 xor edi, edi | edi = 0; 0x00406b49 cmp byte [rsp + 0x14], 0x7d | 0x00406b4e setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x00406b52 mov esi, 0x449052 | esi = "125 == levels.recordLevel()"; 0x00406b57 mov edx, 0x290 | edx = 0x290; 0x00406b5c call 0x405630 | symaSsErT(int (); 0x00406b61 xor edi, edi | edi = 0; 0x00406b63 cmp byte [rsp + 0x15], 0x6e | 0x00406b68 setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x00406b6c mov esi, 0x448ffd | esi = "110 == levels.passLevel()"; 0x00406b71 mov edx, 0x291 | edx = 0x291; 0x00406b76 call 0x405630 | symaSsErT(int (); 0x00406b7b xor edi, edi | edi = 0; 0x00406b7d cmp byte [rsp + 0x16], 0x4b | 0x00406b82 setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x00406b86 mov esi, 0x44906e | esi = "75 == levels.triggerLevel()"; 0x00406b8b mov edx, 0x292 | edx = 0x292; 0x00406b90 call 0x405630 | symaSsErT(int (); 0x00406b95 xor edi, edi | edi = 0; 0x00406b97 cmp byte [rsp + 0x17], 0x32 | 0x00406b9c setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x00406ba0 mov esi, 0x44908a | esi = "50 == levels.triggerAllLevel()"; 0x00406ba5 mov edx, 0x293 | edx = 0x293; 0x00406baa call 0x405630 | symaSsErT(int (); 0x00406baf lea rsi, [rsp + 0x1d8] | 0x00406bb7 mov rdi, qword [rsp + 0x20] | 0x00406bbc call 0x413840 | BloombergLP::ball::CategoryManager::removeRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x00406bc1 mov dword [rsp + 0x268], 0xffffffff | *((rsp + 0x268)) = 0xffffffff; 0x00406bcc mov rbp, qword [rsp + 0x1f0] | rbp = *((rsp + 0x1f0)); 0x00406bd4 mov qword [rsp + 0x1f0], 0 | *((rsp + 0x1f0)) = 0; 0x00406be0 lea rdi, [rsp + 0x1d8] | 0x00406be8 mov esi, 0x448fce | 0x00406bed mov edx, 7 | 0x00406bf2 mov ecx, 0x44a112 | 0x00406bf7 call 0x425970 | bsl::basic_string,bsl::allocator>::privateAppend(char const*,unsigned long,char const*) (rsp + 0x1d8, "weekend", 7, "string<>::operator=(basic_string_view&): string too long"); 0x00406bfc lea rsi, [rsp + 0x1d8] | 0x00406c04 mov rdi, qword [rsp + 0x20] | 0x00406c09 call 0x413690 | BloombergLP::ball::CategoryManager::addRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x00406c0e mov rdi, rbx | 0x00406c11 mov rsi, qword [rsp + 0x18] | 0x00406c16 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, *((rsp + 0x18))); 0x00406c1b movzx edi, al | edi = (int32_t) al; 0x00406c1e mov esi, 0x4490a9 | esi = "!attrContext->hasRelevantActiveRules(cat1)"; 0x00406c23 mov edx, 0x299 | edx = 0x299; 0x00406c28 call 0x405630 | symaSsErT(int (); 0x00406c2d mov rdi, rbx | 0x00406c30 mov rsi, r13 | 0x00406c33 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, r13); 0x00406c38 xor al, 1 | al ^= 1; 0x00406c3a movzx edi, al | edi = (int32_t) al; 0x00406c3d mov esi, 0x4490d5 | esi = 0x4490d5; 0x00406c42 mov edx, 0x29a | edx = 0x29a; 0x00406c47 call 0x405630 | symaSsErT(int (); 0x00406c4c lea rsi, [rsp + 0x14] | 0x00406c51 mov rdi, rbx | 0x00406c54 mov rdx, qword [rsp + 0x18] | 0x00406c59 call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, *((rsp + 0x18))); 0x00406c5e xor edi, edi | edi = 0; 0x00406c60 cmp byte [rsp + 0x14], 0x80 | 0x00406c65 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x00406c69 mov esi, 0x448fe1 | esi = "128 == levels.recordLevel()"; 0x00406c6e mov edx, 0x29d | edx = 0x29d; 0x00406c73 call 0x405630 | symaSsErT(int (); 0x00406c78 xor edi, edi | edi = 0; 0x00406c7a cmp byte [rsp + 0x15], 0x60 | 0x00406c7f setne dil | dil = (*((rsp + 0x15)) != 0x60) ? 1 : 0; 0x00406c83 mov esi, 0x4490ff | esi = "96 == levels.passLevel()"; 0x00406c88 mov edx, 0x29e | edx = 0x29e; 0x00406c8d call 0x405630 | symaSsErT(int (); 0x00406c92 xor edi, edi | edi = 0; 0x00406c94 cmp byte [rsp + 0x16], 0x40 | 0x00406c99 setne dil | dil = (*((rsp + 0x16)) != 0x40) ? 1 : 0; 0x00406c9d mov esi, 0x449118 | esi = "64 == levels.triggerLevel()"; 0x00406ca2 mov edx, 0x29f | edx = 0x29f; 0x00406ca7 call 0x405630 | symaSsErT(int (); 0x00406cac xor edi, edi | edi = 0; 0x00406cae cmp byte [rsp + 0x17], 0x20 | 0x00406cb3 setne dil | dil = (*((rsp + 0x17)) != 0x20) ? 1 : 0; 0x00406cb7 mov esi, 0x449134 | esi = "32 == levels.triggerAllLevel()"; 0x00406cbc mov edx, 0x2a0 | edx = 0x2a0; 0x00406cc1 call 0x405630 | symaSsErT(int (); 0x00406cc6 lea rsi, [rsp + 0x14] | 0x00406ccb mov rdi, rbx | 0x00406cce mov rdx, r13 | 0x00406cd1 call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, r13); 0x00406cd6 xor edi, edi | edi = 0; 0x00406cd8 cmp byte [rsp + 0x14], 0x7d | 0x00406cdd setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x00406ce1 mov esi, 0x449052 | esi = "125 == levels.recordLevel()"; 0x00406ce6 mov edx, 0x2a3 | edx = 0x2a3; 0x00406ceb call 0x405630 | symaSsErT(int (); 0x00406cf0 xor edi, edi | edi = 0; 0x00406cf2 cmp byte [rsp + 0x15], 0x6e | 0x00406cf7 setne dil | dil = (*((rsp + 0x15)) != 0x6e) ? 1 : 0; 0x00406cfb mov esi, 0x448ffd | esi = "110 == levels.passLevel()"; 0x00406d00 mov edx, 0x2a4 | edx = 0x2a4; 0x00406d05 call 0x405630 | symaSsErT(int (); 0x00406d0a xor edi, edi | edi = 0; 0x00406d0c cmp byte [rsp + 0x16], 0x4b | 0x00406d11 setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x00406d15 mov esi, 0x44906e | esi = "75 == levels.triggerLevel()"; 0x00406d1a mov edx, 0x2a5 | edx = 0x2a5; 0x00406d1f call 0x405630 | symaSsErT(int (); 0x00406d24 xor edi, edi | edi = 0; 0x00406d26 cmp byte [rsp + 0x17], 0x32 | 0x00406d2b setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x00406d2f mov esi, 0x44908a | esi = "50 == levels.triggerAllLevel()"; 0x00406d34 mov edx, 0x2a6 | edx = 0x2a6; 0x00406d39 call 0x405630 | symaSsErT(int (); 0x00406d3e lea rsi, [rsp + 0x1d8] | 0x00406d46 mov rdi, qword [rsp + 0x20] | 0x00406d4b call 0x413840 | BloombergLP::ball::CategoryManager::removeRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x00406d50 mov dword [rsp + 0x268], 0xffffffff | *((rsp + 0x268)) = 0xffffffff; 0x00406d5b mov esi, dword [rip + 0x2608f7] | 0x00406d61 lea rdi, [rsp + 0x108] | 0x00406d69 call 0x411680 | BloombergLP::ball::Attribute::hash(BloombergLP::ball::Attributeconst&,int) (rsp + 0x108, *(obj.BloombergLP::ball::ManagedAttributeSet::AttributeHash::s_hashtableSize)); 0x00406d6e cdqe | rax = (int64_t) eax; 0x00406d70 xor r15d, r15d | r15d = 0; 0x00406d73 xor edx, edx | edx = 0; 0x00406d75 div qword [rsp + 0x240] | rax = *(rdx:rax) / rsp + 0x240; | rdx = *(rdx:rax) % rsp + 0x240; 0x00406d7d mov rax, qword [rsp + 0x238] | rax = *((rsp + 0x238)); 0x00406d85 shl rdx, 4 | rdx <<= 4; 0x00406d89 mov rbp, qword [rax + rdx] | rbp = *((rax + rdx)); 0x00406d8d mov rax, qword [rax + rdx + 8] | rax = *((rax + rdx + 8)); 0x00406d92 test rax, rax | | if (rax != 0) { 0x00406d95 je 0x406d9a | 0x00406d97 mov r15, qword [rax] | r15 = *(rax); | } 0x00406d9a cmp r15, rbp | | if (r15 == rbp) { 0x00406d9d je 0x406e73 | goto label_5; | } 0x00406da3 lea r14, [rsp + 0x110] | r14 = rsp + 0x110; 0x00406dab lea r12, [rsp + 0x158] | r12 = rsp + 0x158; 0x00406db3 jmp 0x406ddd | goto label_6; | label_1: 0x00406dc0 call 0x4042c0 | eax = bcmp (); 0x00406dc5 test eax, eax | | if (eax == 0) { 0x00406dc7 je 0x406e00 | goto label_7; | } 0x00406dc9 nop dword [rax] | | do { | label_0: 0x00406dd0 mov rbp, qword [rbp] | rbp = *(rbp); 0x00406dd4 cmp r15, rbp | | if (r15 == rbp) { 0x00406dd7 je 0x406e73 | goto label_5; | } | label_6: 0x00406ddd mov rdx, qword [rsp + 0xf0] | rdx = *((rsp + 0xf0)); 0x00406de5 cmp rdx, qword [rbp + 0x28] | 0x00406de9 jne 0x406dd0 | | } while (rdx != *((rbp + 0x28))); 0x00406deb test rdx, rdx | | if (rdx != 0) { 0x00406dee je 0x406e00 | 0x00406df0 cmp qword [rbp + 0x30], 0x17 | | if (*((rbp + 0x30)) == 0x17) { 0x00406df5 je 0x406e3b | goto label_8; | } 0x00406df7 mov rsi, qword [rbp + 0x10] | rsi = *((rbp + 0x10)); 0x00406dfb jmp 0x406e3f | goto label_9; | } | label_7: 0x00406e00 mov edx, dword [rsp + 0x140] | edx = *((rsp + 0x140)); 0x00406e07 cmp edx, dword [rbp + 0x78] | | if (edx != *((rbp + 0x78))) { 0x00406e0a jne 0x406dd0 | goto label_0; | } 0x00406e0c test edx, edx | | if (edx == 0) { 0x00406e0e je 0x406e63 | goto label_10; | } 0x00406e10 lea rax, [rbp + 0x48] | rax = rbp + 0x48; 0x00406e14 mov byte [rsp + 0x158], 1 | *((rsp + 0x158)) = 1; 0x00406e1c mov qword [rsp + 0x160], rax | *((rsp + 0x160)) = rax; 0x00406e24 mov rdi, r14 | 0x00406e27 mov rsi, r12 | 0x00406e2a call 0x410ae0 | voidBloombergLP::bdlb::VariantImp,bsl::allocator>>>::doApply(BloombergLP::bdlb::Variant_EqualityTestVisitor&,int)const (r14, r12, rdx); 0x00406e2f cmp byte [rsp + 0x158], 0 | | if (*((rsp + 0x158)) == 0) { 0x00406e37 je 0x406dd0 | goto label_0; | } 0x00406e39 jmp 0x406e63 | goto label_10; | label_8: 0x00406e3b lea rsi, [rbp + 0x10] | rsi = rbp + 0x10; | label_9: 0x00406e3f cmp qword [rsp + 0xf8], 0x17 | 0x00406e48 lea rdi, [rsp + 0xd8] | rdi = rsp + 0xd8; | if (*((rsp + 0xf8)) == 0x17) { 0x00406e50 je 0x406dc0 | goto label_1; | } 0x00406e56 mov rdi, qword [rsp + 0xd8] | rdi = *((rsp + 0xd8)); 0x00406e5e jmp 0x406dc0 | goto label_1; | label_10: 0x00406e63 lea rdi, [rsp + 0x210] | rdi = rsp + 0x210; 0x00406e6b mov rsi, rbp | rsi = rbp; 0x00406e6e call 0x4111b0 | BloombergLP::bslstl::HashTable,BloombergLP::ball::ManagedAttributeSet::AttributeHash,bsl::equal_to,bsl::allocator>::remove(BloombergLP::bslalg::BidirectionalLink*) (); | label_5: 0x00406e73 mov qword [rsp + 0x28], 0x448ed0 | *((rsp + 0x28)) = "uuid"; 0x00406e7c mov qword [rsp + 0x30], 4 | *((rsp + 0x30)) = 4; 0x00406e85 mov rax, qword [rip + 0x2618f4] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x00406e8c test rax, rax | | if (rax != 0) { 0x00406e8f je 0x406ea0 | 0x00406e91 lea r14, [rsp + 0x98] | r14 = rsp + 0x98; 0x00406e99 mov rbp, qword [rsp + 0x18] | rbp = *((rsp + 0x18)); 0x00406e9e jmp 0x406eb2 | | } else { 0x00406ea0 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00406ea5 lea r14, [rsp + 0x98] | r14 = rsp + 0x98; 0x00406ead mov rbp, qword [rsp + 0x18] | rbp = *((rsp + 0x18)); | } 0x00406eb2 mov qword [rsp + 0x88], rax | *((rsp + 0x88)) = rax; 0x00406eba lea rdi, [rsp + 0x158] | 0x00406ec2 lea rsi, [rsp + 0x28] | 0x00406ec7 lea rcx, [rsp + 0x88] | 0x00406ecf mov edx, 2 | 0x00406ed4 call 0x410190 | BloombergLP::ball::ManagedAttribute::ManagedAttribute(std::_1::basic_string_view>const&,int,bsl::allocatorconst&) (rsp + 0x158, rsp + 0x28, 2, rsp + 0x88); 0x00406ed9 mov dword [rsp + 0x268], 0xffffffff | *((rsp + 0x268)) = 0xffffffff; 0x00406ee4 mov byte [rsp + 0x28], 0 | *((rsp + 0x28)) = 0; 0x00406ee9 lea rsi, [rsp + 0x28] | rsi = rsp + 0x28; 0x00406eee lea rdx, [rsp + 0x158] | rdx = rsp + 0x158; 0x00406ef6 lea rdi, [rsp + 0x210] | rdi = rsp + 0x210; 0x00406efe call 0x4107d0 | BloombergLP::bslstl::HashTable,BloombergLP::ball::ManagedAttributeSet::AttributeHash,bsl::equal_to,bsl::allocator>::insertIfMissing(bool*,BloombergLP::ball::ManagedAttributeconst&) (); 0x00406f03 lea rsi, [rsp + 0x1d8] | 0x00406f0b mov rdi, qword [rsp + 0x20] | 0x00406f10 call 0x413690 | BloombergLP::ball::CategoryManager::addRule(BloombergLP::ball::Ruleconst&) (*((rsp + 0x20)), rsp + 0x1d8); 0x00406f15 mov rdi, rbx | 0x00406f18 mov rsi, rbp | 0x00406f1b call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, rbp); 0x00406f20 movzx edi, al | edi = (int32_t) al; 0x00406f23 mov esi, 0x4490a9 | esi = "!attrContext->hasRelevantActiveRules(cat1)"; 0x00406f28 mov edx, 0x2ae | edx = 0x2ae; 0x00406f2d call 0x405630 | symaSsErT(int (); 0x00406f32 mov rdi, rbx | 0x00406f35 mov rsi, r13 | 0x00406f38 call 0x412630 | al = BloombergLP::ball::AttributeContext::hasRelevantActiveRules(BloombergLP::ball::Categoryconst*)const (rbx, r13); 0x00406f3d movzx edi, al | edi = (int32_t) al; 0x00406f40 mov esi, 0x4490d4 | esi = "!attrContext->hasRelevantActiveRules(cat2)"; 0x00406f45 mov edx, 0x2af | edx = 0x2af; 0x00406f4a call 0x405630 | symaSsErT(int (); 0x00406f4f lea rsi, [rsp + 0x14] | 0x00406f54 mov rdi, rbx | 0x00406f57 mov rdx, rbp | 0x00406f5a call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, rbp); 0x00406f5f xor edi, edi | edi = 0; 0x00406f61 cmp byte [rsp + 0x14], 0x80 | 0x00406f66 setne dil | dil = (*((rsp + 0x14)) != 0x80) ? 1 : 0; 0x00406f6a mov esi, 0x448fe1 | esi = "128 == levels.recordLevel()"; 0x00406f6f mov edx, 0x2b2 | edx = 0x2b2; 0x00406f74 call 0x405630 | symaSsErT(int (); 0x00406f79 xor edi, edi | edi = 0; 0x00406f7b cmp byte [rsp + 0x15], 0x60 | 0x00406f80 setne dil | dil = (*((rsp + 0x15)) != 0x60) ? 1 : 0; 0x00406f84 mov esi, 0x4490ff | esi = "96 == levels.passLevel()"; 0x00406f89 mov edx, 0x2b3 | edx = 0x2b3; 0x00406f8e call 0x405630 | symaSsErT(int (); 0x00406f93 xor edi, edi | edi = 0; 0x00406f95 cmp byte [rsp + 0x16], 0x40 | 0x00406f9a setne dil | dil = (*((rsp + 0x16)) != 0x40) ? 1 : 0; 0x00406f9e mov esi, 0x449118 | esi = "64 == levels.triggerLevel()"; 0x00406fa3 mov edx, 0x2b4 | edx = 0x2b4; 0x00406fa8 call 0x405630 | symaSsErT(int (); 0x00406fad xor edi, edi | edi = 0; 0x00406faf cmp byte [rsp + 0x17], 0x20 | 0x00406fb4 setne dil | dil = (*((rsp + 0x17)) != 0x20) ? 1 : 0; 0x00406fb8 mov esi, 0x449134 | esi = "32 == levels.triggerAllLevel()"; 0x00406fbd mov edx, 0x2b5 | edx = 0x2b5; 0x00406fc2 call 0x405630 | symaSsErT(int (); 0x00406fc7 lea rsi, [rsp + 0x14] | 0x00406fcc mov rdi, rbx | 0x00406fcf mov rdx, r13 | 0x00406fd2 call 0x412770 | BloombergLP::ball::AttributeContext::determineThresholdLevels(BloombergLP::ball::ThresholdAggregate*,BloombergLP::ball::Categoryconst*)const (rbx, rsp + 0x14, r13); 0x00406fd7 xor edi, edi | edi = 0; 0x00406fd9 cmp byte [rsp + 0x14], 0x7d | 0x00406fde setne dil | dil = (*((rsp + 0x14)) != 0x7d) ? 1 : 0; 0x00406fe2 mov esi, 0x449052 | esi = "125 == levels.recordLevel()"; 0x00406fe7 mov edx, 0x2b8 | edx = 0x2b8; 0x00406fec call 0x405630 | symaSsErT(int (); 0x00406ff1 xor edi, edi | edi = 0; 0x00406ff3 cmp byte [rsp + 0x15], 0x64 | 0x00406ff8 setne dil | dil = (*((rsp + 0x15)) != 0x64) ? 1 : 0; 0x00406ffc mov esi, 0x449153 | esi = "100 == levels.passLevel()"; 0x00407001 mov edx, 0x2b9 | edx = 0x2b9; 0x00407006 call 0x405630 | symaSsErT(int (); 0x0040700b xor edi, edi | edi = 0; 0x0040700d cmp byte [rsp + 0x16], 0x4b | 0x00407012 setne dil | dil = (*((rsp + 0x16)) != 0x4b) ? 1 : 0; 0x00407016 mov esi, 0x44906e | esi = "75 == levels.triggerLevel()"; 0x0040701b mov edx, 0x2ba | edx = 0x2ba; 0x00407020 call 0x405630 | symaSsErT(int (); 0x00407025 xor edi, edi | edi = 0; 0x00407027 cmp byte [rsp + 0x17], 0x32 | 0x0040702c setne dil | dil = (*((rsp + 0x17)) != 0x32) ? 1 : 0; 0x00407030 mov esi, 0x44908a | esi = "50 == levels.triggerAllLevel()"; 0x00407035 mov edx, 0x2bb | edx = 0x2bb; 0x0040703a call 0x405630 | symaSsErT(int (); 0x0040703f mov eax, dword [rsp + 0x1c0] | eax = *((rsp + 0x1c0)); 0x00407046 test eax, eax | | if (eax != 0) { 0x00407048 je 0x407087 | 0x0040704a cmp eax, 3 | | if (eax == 3) { 0x0040704d jne 0x40707c | 0x0040704f cmp qword [rsp + 0x1b0], 0x17 | | if (*((rsp + 0x1b0)) != 0x17) { 0x00407058 je 0x407070 | 0x0040705a mov rsi, qword [rsp + 0x190] | rsi = *((rsp + 0x190)); 0x00407062 mov rdi, qword [rsp + 0x1b8] | rdi = *((rsp + 0x1b8)); 0x0040706a mov rax, qword [rdi] | rax = *(rdi); 0x0040706d call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407070 mov qword [rsp + 0x1a8], 0xffffffffffffffff | *((rsp + 0x1a8)) = 0xffffffffffffffff; | } 0x0040707c mov dword [rsp + 0x1c0], 0 | *((rsp + 0x1c0)) = 0; | } 0x00407087 cmp qword [rsp + 0x178], 0x17 | | if (*((rsp + 0x178)) != 0x17) { 0x00407090 je 0x4070a8 | 0x00407092 mov rsi, qword [rsp + 0x158] | rsi = *((rsp + 0x158)); 0x0040709a mov rdi, qword [rsp + 0x180] | rdi = *((rsp + 0x180)); 0x004070a2 mov rax, qword [rdi] | rax = *(rdi); 0x004070a5 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004070a8 mov eax, dword [rsp + 0x140] | eax = *((rsp + 0x140)); 0x004070af test eax, eax | | if (eax != 0) { 0x004070b1 je 0x4070f0 | 0x004070b3 cmp eax, 3 | | if (eax == 3) { 0x004070b6 jne 0x4070e5 | 0x004070b8 cmp qword [rsp + 0x130], 0x17 | | if (*((rsp + 0x130)) != 0x17) { 0x004070c1 je 0x4070d9 | 0x004070c3 mov rsi, qword [rsp + 0x110] | rsi = *((rsp + 0x110)); 0x004070cb mov rdi, qword [rsp + 0x138] | rdi = *((rsp + 0x138)); 0x004070d3 mov rax, qword [rdi] | rax = *(rdi); 0x004070d6 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004070d9 mov qword [rsp + 0x128], 0xffffffffffffffff | *((rsp + 0x128)) = 0xffffffffffffffff; | } 0x004070e5 mov dword [rsp + 0x140], 0 | *((rsp + 0x140)) = 0; | } 0x004070f0 cmp qword [rsp + 0xf8], 0x17 | | if (*((rsp + 0xf8)) != 0x17) { 0x004070f9 je 0x407111 | 0x004070fb mov rsi, qword [rsp + 0xd8] | rsi = *((rsp + 0xd8)); 0x00407103 mov rdi, qword [rsp + 0x100] | rdi = *((rsp + 0x100)); 0x0040710b mov rax, qword [rdi] | rax = *(rdi); 0x0040710e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x00407111 cmp dword [rsp + 0x70], 3 | | if (*((rsp + 0x70)) == 3) { 0x00407116 jne 0x407130 | 0x00407118 cmp qword [rsp + 0x60], 0x17 | | if (*((rsp + 0x60)) == 0x17) { 0x0040711e je 0x407130 | goto label_11; | } 0x00407120 mov rsi, qword [rsp + 0x40] | rsi = *((rsp + 0x40)); 0x00407125 mov rdi, qword [rsp + 0x68] | rdi = *((rsp + 0x68)); 0x0040712a mov rax, qword [rdi] | rax = *(rdi); 0x0040712d call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_11: 0x00407130 mov qword [rsp + 0x90], 0x448ba0 | *((rsp + 0x90)) = vtable.AttributeSet.0; 0x0040713c mov rdi, r14 | 0x0040713f call 0x40fd00 | bsl::set>::~set() (r14); 0x00407144 lea rdi, [rsp + 0x90] | rdi = rsp + 0x90; 0x0040714c call 0x411b90 | BloombergLP::ball::AttributeContainer::~AttributeContainer() (); 0x00407151 lea rdi, [rsp + 0x1d8] | 0x00407159 call 0x410300 | eax = BloombergLP::ball::Rule::~Rule() (rsp + 0x1d8); 0x0040715e xor eax, eax | eax = 0; 0x00407160 add rsp, 0x278 | 0x00407167 pop rbx | 0x00407168 pop r12 | 0x0040716a pop r13 | 0x0040716c pop r14 | 0x0040716e pop r15 | 0x00407170 pop rbp | 0x00407171 ret | return rax; | label_4: 0x00407172 call 0x41f6c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); 0x00407177 mov ecx, dword [rsp + 0x70] | ecx = *((rsp + 0x70)); 0x0040717b lea rbp, [rsp + 0x40] | rbp = rsp + 0x40; 0x00407180 mov qword [rsp + 0x78], rax | *((rsp + 0x78)) = rax; 0x00407185 mov eax, 0xffffffff | eax = 0xffffffff; 0x0040718a mov qword [rsp + 0x80], rax | *((rsp + 0x80)) = rax; 0x00407192 cmp ecx, 3 | | if (ecx == 3) { 0x00407195 je 0x4071a8 | goto label_12; | } 0x00407197 cmp ecx, 1 | | if (ecx != 1) { 0x0040719a jne 0x40672b | goto label_2; | } 0x004071a0 mov rax, rbp | rax = rbp; 0x004071a3 jmp 0x406737 | goto label_3; | label_12: 0x004071a8 cmp qword [rsp + 0x60], 0x17 | | if (*((rsp + 0x60)) != 0x17) { 0x004071ae je 0x4071c0 | 0x004071b0 mov rsi, qword [rsp + 0x40] | rsi = *((rsp + 0x40)); 0x004071b5 mov rdi, qword [rsp + 0x68] | rdi = *((rsp + 0x68)); 0x004071ba mov rax, qword [rdi] | rax = *(rdi); 0x004071bd call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004071c0 mov qword [rsp + 0x58], 0xffffffffffffffff | *((rsp + 0x58)) = 0xffffffffffffffff; 0x004071c9 jmp 0x40672b | goto label_2; | }