; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x40b3e0 */ | #include | ; (fcn) method.BloombergLP::balb::SequenceWithAnonymityChoice.makeSelection_int_ () | int64_t method_BloombergLP::balb::SequenceWithAnonymityChoice_makeSelection_int_ (uint32_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::balb::SequenceWithAnonymityChoice::makeSelection(int) */ 0x0040b3e0 push r14 | 0x0040b3e2 push rbx | 0x0040b3e3 push rax | 0x0040b3e4 inc esi | esi++; 0x0040b3e6 cmp esi, 4 | | if (esi <= 4) { 0x0040b3e9 ja 0x40b447 | 0x0040b3eb mov r14, rdi | r14 = rdi; | /* switch table (5 cases) at 0x446298 */ 0x0040b3ee jmp qword [rsi*8 + 0x446298] | 0x0040b3f5 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b3fc cmp eax, 2 | | if (eax != 2) { 0x0040b3ff je 0x40b4d0 | 0x0040b405 test eax, eax | | if (eax != 0) { 0x0040b407 jne 0x40b4ec | goto label_0; | } 0x0040b40d mov rdi, r14 | 0x0040b410 call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040b415 jmp 0x40b4ec | goto label_0; 0x0040b41a mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b421 test eax, eax | | if (eax == 0) { 0x0040b423 je 0x40b59a | goto label_1; | } 0x0040b429 cmp eax, 2 | | if (eax == 2) { 0x0040b42c je 0x40b5a4 | goto label_2; | } 0x0040b432 cmp eax, 3 | | if (eax != 3) { 0x0040b435 jne 0x40b5c0 | goto label_3; | } 0x0040b43b mov dword [r14], 0 | *(r14) = 0; 0x0040b442 jmp 0x40b609 | | } else { 0x0040b447 mov ebx, 0xffffffff | ebx = 0xffffffff; 0x0040b44c jmp 0x40b60b | goto label_4; 0x0040b451 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b458 cmp eax, 2 | | if (eax == 2) { 0x0040b45b je 0x40b4fc | goto label_5; | } 0x0040b461 test eax, eax | | if (eax != 0) { 0x0040b463 jne 0x40b518 | goto label_6; | } 0x0040b469 mov rdi, r14 | 0x0040b46c call 0x409810 | BloombergLP::balb::Sequence6::reset() (r14); 0x0040b471 jmp 0x40b609 | goto label_7; 0x0040b476 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b47d test eax, eax | | if (eax == 0) { 0x0040b47f je 0x40b5d4 | goto label_8; | } 0x0040b485 cmp eax, 2 | | if (eax == 2) { 0x0040b488 je 0x40b5de | goto label_9; | } 0x0040b48e cmp eax, 1 | | if (eax != 1) { 0x0040b491 jne 0x40b5fa | goto label_10; | } 0x0040b497 mov byte [r14], 0 | *(r14) = 0; 0x0040b49b jmp 0x40b609 | goto label_7; 0x0040b4a0 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b4a7 test eax, eax | | if (eax == 0) { 0x0040b4a9 je 0x40b542 | goto label_11; | } 0x0040b4af cmp eax, 2 | | if (eax != 2) { 0x0040b4b2 jne 0x40b54a | goto label_12; | } 0x0040b4b8 xor ebx, ebx | ebx = 0; 0x0040b4ba mov rdi, r14 | 0x0040b4bd xor esi, esi | 0x0040b4bf mov rdx, 0xffffffffffffffff | 0x0040b4c6 call 0x424d20 | bsl::basic_string,bsl::allocator>::erase(unsigned long,unsigned long) (r14, 0, 0xffffffffffffffff); 0x0040b4cb jmp 0x40b60b | goto label_4; | } 0x0040b4d0 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040b4d5 je 0x40b4e4 | 0x0040b4d7 mov rsi, qword [r14] | rsi = *(r14); 0x0040b4da mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040b4de mov rax, qword [rdi] | rax = *(rdi); 0x0040b4e1 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040b4e4 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_0: 0x0040b4ec mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040b4f7 jmp 0x40b609 | goto label_7; | label_5: 0x0040b4fc cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040b501 je 0x40b510 | 0x0040b503 mov rsi, qword [r14] | rsi = *(r14); 0x0040b506 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040b50a mov rax, qword [rdi] | rax = *(rdi); 0x0040b50d call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040b510 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_6: 0x0040b518 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040b523 mov rsi, qword [r14 + 0x178] | 0x0040b52a mov rdi, r14 | 0x0040b52d call 0x408740 | BloombergLP::balb::Sequence6::Sequence6(BloombergLP::bslma::Allocator*) (r14, *((r14 + 0x178))); 0x0040b532 mov dword [r14 + 0x170], 0 | *((r14 + 0x170)) = 0; 0x0040b53d jmp 0x40b609 | goto label_7; | label_11: 0x0040b542 mov rdi, r14 | 0x0040b545 call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (r14); | label_12: 0x0040b54a mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040b555 mov rax, qword [r14 + 0x178] | rax = *((r14 + 0x178)); 0x0040b55c test rax, rax | | if (rax == 0) { 0x0040b55f jne 0x40b572 | 0x0040b561 mov rax, qword [rip + 0x2735e8] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040b568 test rax, rax | | if (rax != 0) { 0x0040b56b jne 0x40b572 | goto label_13; | } 0x0040b56d call 0x4207c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_13: 0x0040b572 mov qword [r14], 0 | *(r14) = 0; 0x0040b579 movaps xmm0, xmmword [rip + 0x3aaa0] | xmm0 = .comment; 0x0040b580 movups xmmword [r14 + 0x18], xmm0 | __asm ("movups xmmword [r14 + 0x18], xmm0"); 0x0040b585 mov qword [r14 + 0x28], rax | *((r14 + 0x28)) = rax; 0x0040b589 mov byte [r14], 0 | *(r14) = 0; 0x0040b58d mov dword [r14 + 0x170], 2 | *((r14 + 0x170)) = 2; 0x0040b598 jmp 0x40b609 | goto label_7; | label_1: 0x0040b59a mov rdi, r14 | 0x0040b59d call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040b5a2 jmp 0x40b5c0 | goto label_3; | label_2: 0x0040b5a4 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040b5a9 je 0x40b5b8 | 0x0040b5ab mov rsi, qword [r14] | rsi = *(r14); 0x0040b5ae mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040b5b2 mov rax, qword [rdi] | rax = *(rdi); 0x0040b5b5 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040b5b8 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_3: 0x0040b5c0 mov dword [r14], 0 | *(r14) = 0; 0x0040b5c7 mov dword [r14 + 0x170], 3 | *((r14 + 0x170)) = 3; 0x0040b5d2 jmp 0x40b609 | goto label_7; | label_8: 0x0040b5d4 mov rdi, r14 | 0x0040b5d7 call 0x4093b0 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040b5dc jmp 0x40b5fa | goto label_10; | label_9: 0x0040b5de cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040b5e3 je 0x40b5f2 | 0x0040b5e5 mov rsi, qword [r14] | rsi = *(r14); 0x0040b5e8 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040b5ec mov rax, qword [rdi] | rax = *(rdi); 0x0040b5ef call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040b5f2 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_10: 0x0040b5fa mov byte [r14], 0 | *(r14) = 0; 0x0040b5fe mov dword [r14 + 0x170], 1 | *((r14 + 0x170)) = 1; | } | label_7: 0x0040b609 xor ebx, ebx | ebx = 0; | label_4: 0x0040b60b mov eax, ebx | eax = ebx; 0x0040b60d add rsp, 8 | 0x0040b611 pop rbx | 0x0040b612 pop r14 | 0x0040b614 ret | return rax; | }