; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/assume @ 0x40a740 */ | #include | ; (fcn) method.BloombergLP::balb::Choice3.makeSelection_int_ () | int64_t method_BloombergLP::balb::Choice3_makeSelection_int_ (uint32_t arg2, int64_t arg1) { | rsi = arg2; | rdi = arg1; | /* BloombergLP::balb::Choice3::makeSelection(int) */ 0x0040a740 push r14 | 0x0040a742 push rbx | 0x0040a743 push rax | 0x0040a744 inc esi | esi++; 0x0040a746 cmp esi, 4 | | if (esi <= 4) { 0x0040a749 ja 0x40a79f | 0x0040a74b mov r14, rdi | r14 = rdi; | /* switch table (5 cases) at 0x446220 */ 0x0040a74e jmp qword [rsi*8 + 0x446220] | 0x0040a755 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040a75c cmp rax, 3 | | if (rax > 3) { 0x0040a760 ja 0x40a908 | goto label_0; | } | /* switch table (4 cases) at 0x446248 */ 0x0040a766 jmp qword [rax*8 + 0x446248] | 0x0040a76d mov rdi, r14 | 0x0040a770 call 0x409400 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040a775 jmp 0x40a908 | goto label_0; 0x0040a77a mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040a781 cmp rax, 3 | | if (rax > 3) { 0x0040a785 ja 0x40a87e | goto label_1; | } | /* switch table (4 cases) at 0x446268 */ 0x0040a78b jmp qword [rax*8 + 0x446268] | 0x0040a792 mov rdi, r14 | 0x0040a795 call 0x409400 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040a79a jmp 0x40a87e | | } else { 0x0040a79f mov ebx, 0xffffffff | ebx = 0xffffffff; 0x0040a7a4 jmp 0x40a958 | goto label_2; 0x0040a7a9 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040a7b0 cmp rax, 3 | | if (rax > 3) { 0x0040a7b4 ja 0x40a931 | goto label_3; | } | /* switch table (4 cases) at 0x4462c8 */ 0x0040a7ba jmp qword [rax*8 + 0x4462c8] | 0x0040a7c1 mov rdi, r14 | 0x0040a7c4 call 0x409860 | BloombergLP::balb::Sequence6::reset() (r14); 0x0040a7c9 jmp 0x40a956 | goto label_4; 0x0040a7ce mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040a7d5 cmp rax, 3 | | if (rax > 3) { 0x0040a7d9 ja 0x40a8c6 | goto label_5; | } | /* switch table (4 cases) at 0x4462a8 */ 0x0040a7df jmp qword [rax*8 + 0x4462a8] | 0x0040a7e6 mov rdi, r14 | 0x0040a7e9 call 0x409400 | BloombergLP::balb::Sequence6::~Sequence6() (r14); 0x0040a7ee jmp 0x40a8c6 | goto label_5; 0x0040a7f3 mov eax, dword [r14 + 0x170] | eax = *((r14 + 0x170)); 0x0040a7fa cmp rax, 3 | | if (rax <= 3) { 0x0040a7fe ja 0x40a80f | | /* switch table (4 cases) at 0x446288 */ 0x0040a800 jmp qword [rax*8 + 0x446288] | 0x0040a807 mov rdi, r14 | 0x0040a80a call 0x409400 | BloombergLP::balb::Sequence6::~Sequence6() (r14); | } 0x0040a80f mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040a81a mov rax, qword [r14 + 0x178] | rax = *((r14 + 0x178)); 0x0040a821 test rax, rax | | if (rax == 0) { 0x0040a824 jne 0x40a837 | 0x0040a826 mov rax, qword [rip + 0x275323] | rax = BloombergLP::bslma::Default::s_defaultAllocator; 0x0040a82d test rax, rax | | if (rax != 0) { 0x0040a830 jne 0x40a837 | goto label_6; | } 0x0040a832 call 0x4206c0 | rax = BloombergLP::bslma::Default::determineAndReturnDefaultAllocator() (); | } | label_6: 0x0040a837 mov qword [r14], 0 | *(r14) = 0; 0x0040a83e movaps xmm0, xmmword [rip + 0x3b6bb] | xmm0 = .comment; 0x0040a845 movups xmmword [r14 + 0x18], xmm0 | __asm ("movups xmmword [r14 + 0x18], xmm0"); 0x0040a84a mov qword [r14 + 0x28], rax | *((r14 + 0x28)) = rax; 0x0040a84e mov byte [r14], 0 | *(r14) = 0; 0x0040a852 mov dword [r14 + 0x170], 2 | *((r14 + 0x170)) = 2; 0x0040a85d jmp 0x40a956 | goto label_4; 0x0040a862 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040a867 je 0x40a876 | 0x0040a869 mov rsi, qword [r14] | rsi = *(r14); 0x0040a86c mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040a870 mov rax, qword [rdi] | rax = *(rdi); 0x0040a873 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040a876 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | } | label_1: 0x0040a87e mov dword [r14], 0 | *(r14) = 0; 0x0040a885 mov dword [r14 + 0x170], 3 | *((r14 + 0x170)) = 3; 0x0040a890 jmp 0x40a956 | goto label_4; 0x0040a895 mov dword [r14], 0 | *(r14) = 0; 0x0040a89c jmp 0x40a956 | goto label_4; 0x0040a8a1 mov byte [r14], 0 | *(r14) = 0; 0x0040a8a5 jmp 0x40a956 | goto label_4; 0x0040a8aa cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040a8af je 0x40a8be | 0x0040a8b1 mov rsi, qword [r14] | rsi = *(r14); 0x0040a8b4 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040a8b8 mov rax, qword [rdi] | rax = *(rdi); 0x0040a8bb call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040a8be mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_5: 0x0040a8c6 mov byte [r14], 0 | *(r14) = 0; 0x0040a8ca mov dword [r14 + 0x170], 1 | *((r14 + 0x170)) = 1; 0x0040a8d5 jmp 0x40a956 | goto label_4; 0x0040a8d7 xor ebx, ebx | ebx = 0; 0x0040a8d9 mov rdi, r14 | 0x0040a8dc xor esi, esi | 0x0040a8de mov rdx, 0xffffffffffffffff | 0x0040a8e5 call 0x424c20 | bsl::basic_string,bsl::allocator>::erase(unsigned long,unsigned long) (r14, 0, 0xffffffffffffffff); 0x0040a8ea jmp 0x40a958 | goto label_2; 0x0040a8ec cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040a8f1 je 0x40a900 | 0x0040a8f3 mov rsi, qword [r14] | rsi = *(r14); 0x0040a8f6 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040a8fa mov rax, qword [rdi] | rax = *(rdi); 0x0040a8fd call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040a900 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_0: 0x0040a908 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040a913 jmp 0x40a956 | goto label_4; 0x0040a915 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0040a91a je 0x40a929 | 0x0040a91c mov rsi, qword [r14] | rsi = *(r14); 0x0040a91f mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x0040a923 mov rax, qword [rdi] | rax = *(rdi); 0x0040a926 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0040a929 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; | label_3: 0x0040a931 mov dword [r14 + 0x170], 0xffffffff | *((r14 + 0x170)) = 0xffffffff; 0x0040a93c mov rsi, qword [r14 + 0x178] | 0x0040a943 mov rdi, r14 | 0x0040a946 call 0x408790 | BloombergLP::balb::Sequence6::Sequence6(BloombergLP::bslma::Allocator*) (r14, *((r14 + 0x178))); 0x0040a94b mov dword [r14 + 0x170], 0 | *((r14 + 0x170)) = 0; | label_4: 0x0040a956 xor ebx, ebx | ebx = 0; | label_2: 0x0040a958 mov eax, ebx | eax = ebx; 0x0040a95a add rsp, 8 | 0x0040a95e pop rbx | 0x0040a95f pop r14 | 0x0040a961 ret | return rax; | }