; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/assume @ 0x4154f0 */ | #include | ; (fcn) method.BloombergLP::bslstl::Optional_DataImp_BloombergLP::balb::Choice1_.reset__ () | int64_t method_BloombergLP::bslstl::Optional_DataImp_BloombergLP::balb::Choice1_reset_ (uint32_t arg1) { | rdi = arg1; | /* BloombergLP::bslstl::Optional_DataImp::reset() */ 0x004154f0 push r15 | 0x004154f2 push r14 | 0x004154f4 push r13 | 0x004154f6 push r12 | 0x004154f8 push rbx | 0x004154f9 cmp byte [rdi + 0x18], 0 | | if (*((rdi + 0x18)) != 0) { 0x004154fd je 0x4155c1 | 0x00415503 mov rbx, rdi | rbx = rdi; 0x00415506 mov byte [rdi + 0x18], 0 | *((rdi + 0x18)) = 0; 0x0041550a mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x0041550d cmp eax, 2 | | if (eax >= 2) { 0x00415510 jb 0x4155ba | 0x00415516 cmp eax, 3 | | if (eax != 3) { 0x00415519 je 0x41554a | 0x0041551b cmp eax, 2 | | if (eax != 2) { 0x0041551e jne 0x4155ba | goto label_0; | } 0x00415524 mov r14, qword [rbx] | r14 = *(rbx); 0x00415527 test r14, r14 | | if (r14 == 0) { 0x0041552a je 0x4155ba | goto label_0; | } 0x00415530 mov r15, qword [rbx + 0x10] | r15 = *((rbx + 0x10)); 0x00415534 mov rdi, r14 | 0x00415537 call 0x40e340 | BloombergLP::balb::Sequence4::~Sequence4() (r14); 0x0041553c mov rax, qword [r15] | rax = *(r15); 0x0041553f mov rdi, r15 | rdi = r15; 0x00415542 mov rsi, r14 | rsi = r14; 0x00415545 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x00415548 jmp 0x4155ba | | } else { 0x0041554a mov r14, qword [rbx] | r14 = *(rbx); 0x0041554d test r14, r14 | | if (r14 == 0) { 0x00415550 je 0x4155ba | goto label_0; | } 0x00415552 mov r15, qword [rbx + 0x10] | r15 = *((rbx + 0x10)); 0x00415556 mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x0041555a cmp rax, 3 | | if (rax <= 3) { 0x0041555e ja 0x4155a6 | | /* switch table (4 cases) at 0x448238 */ 0x00415560 jmp qword [rax*8 + 0x448238] | 0x00415567 cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x0041556c je 0x41557b | 0x0041556e mov rsi, qword [r14] | rsi = *(r14); 0x00415571 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x00415575 mov rax, qword [rdi] | rax = *(rdi); 0x00415578 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x0041557b mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; 0x00415583 jmp 0x4155a6 | goto label_1; 0x00415585 mov r12, qword [r14] | r12 = *(r14); 0x00415588 test r12, r12 | | if (r12 == 0) { 0x0041558b je 0x4155a6 | goto label_1; | } 0x0041558d mov r13, qword [r14 + 0x38] | r13 = *((r14 + 0x38)); 0x00415591 mov rdi, r12 | 0x00415594 call 0x4155f0 | BloombergLP::balb::Choice1::~Choice1() (r12); 0x00415599 mov rax, qword [r13] | rax = *(r13); 0x0041559d mov rdi, r13 | rdi = r13; 0x004155a0 mov rsi, r12 | rsi = r12; 0x004155a3 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_1: 0x004155a6 mov dword [r14 + 0x30], 0xffffffff | *((r14 + 0x30)) = 0xffffffff; 0x004155ae mov rax, qword [r15] | rax = *(r15); 0x004155b1 mov rdi, r15 | rdi = r15; 0x004155b4 mov rsi, r14 | rsi = r14; 0x004155b7 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | } | label_0: 0x004155ba mov dword [rbx + 8], 0xffffffff | *((rbx + 8)) = 0xffffffff; | } 0x004155c1 pop rbx | 0x004155c2 pop r12 | 0x004155c4 pop r13 | 0x004155c6 pop r14 | 0x004155c8 pop r15 | 0x004155ca ret | return rax; | }