; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/assume @ 0x40b450 */ | #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) */ 0x0040b450 push r14 | 0x0040b452 push rbx | 0x0040b453 push rax | 0x0040b454 inc esi | esi++; 0x0040b456 cmp esi, 4 | | if (esi <= 4) { 0x0040b459 ja 0x40b4af | 0x0040b45b mov r14, rdi | r14 = rdi; | /* switch table (5 cases) at 0x4464e8 */ 0x0040b45e jmp qword [rsi*8 + 0x4464e8] | 0x0040b465 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b46c cmp rax, 3 | | if (rax > 3) { 0x0040b470 ja 0x40b618 | goto label_0; | } | /* switch table (4 cases) at 0x446510 */ 0x0040b476 jmp qword [rax*8 + 0x446510] | 0x0040b47d mov rdi, r14 | 0x0040b480 call 0x409400 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040b485 jmp 0x40b618 | goto label_0; 0x0040b48a mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b491 cmp rax, 3 | | if (rax > 3) { 0x0040b495 ja 0x40b58e | goto label_1; | } | /* switch table (4 cases) at 0x446530 */ 0x0040b49b jmp qword [rax*8 + 0x446530] | 0x0040b4a2 mov rdi, r14 | 0x0040b4a5 call 0x409400 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040b4aa jmp 0x40b58e | | } else { 0x0040b4af mov ebx, 0xffffffff | ebx = 0xffffffff; 0x0040b4b4 jmp 0x40b668 | goto label_2; 0x0040b4b9 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b4c0 cmp rax, 3 | | if (rax > 3) { 0x0040b4c4 ja 0x40b641 | goto label_3; | } | /* switch table (4 cases) at 0x446590 */ 0x0040b4ca jmp qword [rax*8 + 0x446590] | 0x0040b4d1 mov rdi, r14 | 0x0040b4d4 call 0x409860 | BloombergLP::balb::Sequence6::reset() (r14); 0x0040b4d9 jmp 0x40b666 | goto label_4; 0x0040b4de mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b4e5 cmp rax, 3 | | if (rax > 3) { 0x0040b4e9 ja 0x40b5d6 | goto label_5; | } | /* switch table (4 cases) at 0x446570 */ 0x0040b4ef jmp qword [rax*8 + 0x446570] | 0x0040b4f6 mov rdi, r14 | 0x0040b4f9 call 0x409400 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040b4fe jmp 0x40b5d6 | goto label_5; 0x0040b503 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040b50a cmp rax, 3 | | if (rax <= 3) { 0x0040b50e ja 0x40b51f | | /* switch table (4 cases) at 0x446550 */ 0x0040b510 jmp qword [rax*8 + 0x446550] | 0x0040b517 mov rdi, r14 | 0x0040b51a call 0x409400 | BloombergLP::balb::Sequence6::~Sequence6() (r14); | } 0x0040b51f mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040b52a mov rax, qword [r14 + 0x178] | rax = *((r14 + 0x178)); 0x0040b531 test rax, rax | | if (rax == 0) { 0x0040b534 jne 0x40b547 | 0x0040b536 mov rax, qword [rip + 0x274613] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040b53d test rax, rax | | if (rax != 0) { 0x0040b540 jne 0x40b547 | goto label_6; | } 0x0040b542 call 0x4206c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_6: 0x0040b547 mov qword [r14], 0 | *(r14) = 0; 0x0040b54e movaps xmm0, xmmword [rip + 0x3a9ab] | xmm0 = .comment; 0x0040b555 movups xmmword [r14 + 0x18], xmm0 | __asm ("movups xmmword [r14 + 0x18], xmm0"); 0x0040b55a mov qword [r14 + 0x28], rax | *((r14 + 0x28)) = rax; 0x0040b55e mov byte [r14], 0 | *(r14) = 0; 0x0040b562 mov dword [r14 + 0x170], 2 | *((r14 + 0x170)) = 2; 0x0040b56d jmp 0x40b666 | goto label_4; 0x0040b572 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040b577 je 0x40b586 | 0x0040b579 mov rsi, qword [r14] | rsi = *(r14); 0x0040b57c mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040b580 mov rax, qword [rdi] | rax = *(rdi); 0x0040b583 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040b586 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | } | label_1: 0x0040b58e mov dword [r14], 0 | *(r14) = 0; 0x0040b595 mov dword [r14 + 0x170], 3 | *((r14 + 0x170)) = 3; 0x0040b5a0 jmp 0x40b666 | goto label_4; 0x0040b5a5 mov dword [r14], 0 | *(r14) = 0; 0x0040b5ac jmp 0x40b666 | goto label_4; 0x0040b5b1 mov byte [r14], 0 | *(r14) = 0; 0x0040b5b5 jmp 0x40b666 | goto label_4; 0x0040b5ba cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040b5bf je 0x40b5ce | 0x0040b5c1 mov rsi, qword [r14] | rsi = *(r14); 0x0040b5c4 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040b5c8 mov rax, qword [rdi] | rax = *(rdi); 0x0040b5cb call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040b5ce mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_5: 0x0040b5d6 mov byte [r14], 0 | *(r14) = 0; 0x0040b5da mov dword [r14 + 0x170], 1 | *((r14 + 0x170)) = 1; 0x0040b5e5 jmp 0x40b666 | goto label_4; 0x0040b5e7 xor ebx, ebx | ebx = 0; 0x0040b5e9 mov rdi, r14 | 0x0040b5ec xor esi, esi | 0x0040b5ee mov rdx, 0xffffffffffffffff | 0x0040b5f5 call 0x424c20 | bsl::basic_string,bsl::allocator>::erase(unsigned long,unsigned long) (r14, 0, 0xffffffffffffffff); 0x0040b5fa jmp 0x40b668 | goto label_2; 0x0040b5fc cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040b601 je 0x40b610 | 0x0040b603 mov rsi, qword [r14] | rsi = *(r14); 0x0040b606 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040b60a mov rax, qword [rdi] | rax = *(rdi); 0x0040b60d call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040b610 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_0: 0x0040b618 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040b623 jmp 0x40b666 | goto label_4; 0x0040b625 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040b62a je 0x40b639 | 0x0040b62c mov rsi, qword [r14] | rsi = *(r14); 0x0040b62f mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040b633 mov rax, qword [rdi] | rax = *(rdi); 0x0040b636 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040b639 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_3: 0x0040b641 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040b64c mov rsi, qword [r14 + 0x178] | 0x0040b653 mov rdi, r14 | 0x0040b656 call 0x408790 | BloombergLP::balb::Sequence6::Sequence6(BloombergLP::bslma::Allocator*) (r14, *((r14 + 0x178))); 0x0040b65b mov dword [r14 + 0x170], 0 | *((r14 + 0x170)) = 0; | label_4: 0x0040b666 xor ebx, ebx | ebx = 0; | label_2: 0x0040b668 mov eax, ebx | eax = ebx; 0x0040b66a add rsp, 8 | 0x0040b66e pop rbx | 0x0040b66f pop r14 | 0x0040b671 ret | return rax; | }