; assembly | /* r2dec pseudo code output */ | /* balb_testmessages.t/none @ 0x415580 */ | #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() */ 0x00415580 push r15 | 0x00415582 push r14 | 0x00415584 push r13 | 0x00415586 push r12 | 0x00415588 push rbx | 0x00415589 cmp byte [rdi + 0x18], 0 | | if (*((rdi + 0x18)) != 0) { 0x0041558d je 0x415645 | 0x00415593 mov rbx, rdi | rbx = rdi; 0x00415596 mov byte [rdi + 0x18], 0 | *((rdi + 0x18)) = 0; 0x0041559a mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x0041559d cmp eax, 3 | | if (eax != 3) { 0x004155a0 je 0x4155d1 | 0x004155a2 cmp eax, 2 | | if (eax != 2) { 0x004155a5 jne 0x41563e | goto label_0; | } 0x004155ab mov r14, qword [rbx] | r14 = *(rbx); 0x004155ae test r14, r14 | | if (r14 == 0) { 0x004155b1 je 0x41563e | goto label_0; | } 0x004155b7 mov r15, qword [rbx + 0x10] | r15 = *((rbx + 0x10)); 0x004155bb mov rdi, r14 | 0x004155be call 0x40e240 | BloombergLP::balb::Sequence4::~Sequence4() (r14); 0x004155c3 mov rax, qword [r15] | rax = *(r15); 0x004155c6 mov rdi, r15 | rdi = r15; 0x004155c9 mov rsi, r14 | rsi = r14; 0x004155cc call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004155cf jmp 0x41563e | | } else { 0x004155d1 mov r14, qword [rbx] | r14 = *(rbx); 0x004155d4 test r14, r14 | | if (r14 == 0) { 0x004155d7 je 0x41563e | goto label_0; | } 0x004155d9 mov r15, qword [rbx + 0x10] | r15 = *((rbx + 0x10)); 0x004155dd mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x004155e1 cmp eax, 2 | | if (eax != 2) { 0x004155e4 je 0x415609 | 0x004155e6 cmp eax, 1 | | if (eax != 1) { 0x004155e9 jne 0x41562a | goto label_1; | } 0x004155eb cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004155f0 je 0x4155ff | 0x004155f2 mov rsi, qword [r14] | rsi = *(r14); 0x004155f5 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004155f9 mov rax, qword [rdi] | rax = *(rdi); 0x004155fc call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004155ff mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; 0x00415607 jmp 0x41562a | | } else { 0x00415609 mov r12, qword [r14] | r12 = *(r14); 0x0041560c test r12, r12 | | if (r12 == 0) { 0x0041560f je 0x41562a | goto label_1; | } 0x00415611 mov r13, qword [r14 + 0x38] | r13 = *((r14 + 0x38)); 0x00415615 mov rdi, r12 | 0x00415618 call 0x415670 | BloombergLP::balb::Choice1::~Choice1() (r12); 0x0041561d mov rax, qword [r13] | rax = *(r13); 0x00415621 mov rdi, r13 | rdi = r13; 0x00415624 mov rsi, r12 | rsi = r12; 0x00415627 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_1: 0x0041562a mov dword [r14 + 0x30], 0xffffffff | *((r14 + 0x30)) = 0xffffffff; 0x00415632 mov rax, qword [r15] | rax = *(r15); 0x00415635 mov rdi, r15 | rdi = r15; 0x00415638 mov rsi, r14 | rsi = r14; 0x0041563b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_0: 0x0041563e mov dword [rbx + 8], 0xffffffff | *((rbx + 8)) = 0xffffffff; | } 0x00415645 pop rbx | 0x00415646 pop r12 | 0x00415648 pop r13 | 0x0041564a pop r14 | 0x0041564c pop r15 | 0x0041564e ret | return rax; | }