; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4c9b90 */ | #include | ; (fcn) method.BloombergLP::bslstl::Optional_DataImp_BloombergLP::s_baltst::Choice1_.reset__ () | int64_t method_BloombergLP::bslstl::Optional_DataImp_BloombergLP::s_baltst::Choice1_reset_ (uint32_t arg1) { | rdi = arg1; | /* BloombergLP::bslstl::Optional_DataImp::reset() */ 0x004c9b90 push r15 | 0x004c9b92 push r14 | 0x004c9b94 push r13 | 0x004c9b96 push r12 | 0x004c9b98 push rbx | 0x004c9b99 cmp byte [rdi + 0x18], 0 | | if (*((rdi + 0x18)) != 0) { 0x004c9b9d je 0x4c9c55 | 0x004c9ba3 mov rbx, rdi | rbx = rdi; 0x004c9ba6 mov byte [rdi + 0x18], 0 | *((rdi + 0x18)) = 0; 0x004c9baa mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x004c9bad cmp eax, 3 | | if (eax != 3) { 0x004c9bb0 je 0x4c9be1 | 0x004c9bb2 cmp eax, 2 | | if (eax != 2) { 0x004c9bb5 jne 0x4c9c4e | goto label_0; | } 0x004c9bbb mov r14, qword [rbx] | r14 = *(rbx); 0x004c9bbe test r14, r14 | | if (r14 == 0) { 0x004c9bc1 je 0x4c9c4e | goto label_0; | } 0x004c9bc7 mov r15, qword [rbx + 0x10] | r15 = *((rbx + 0x10)); 0x004c9bcb mov rdi, r14 | 0x004c9bce call 0x4c06a0 | BloombergLP::s_baltst::Sequence4::~Sequence4() (r14); 0x004c9bd3 mov rax, qword [r15] | rax = *(r15); 0x004c9bd6 mov rdi, r15 | rdi = r15; 0x004c9bd9 mov rsi, r14 | rsi = r14; 0x004c9bdc call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c9bdf jmp 0x4c9c4e | | } else { 0x004c9be1 mov r14, qword [rbx] | r14 = *(rbx); 0x004c9be4 test r14, r14 | | if (r14 == 0) { 0x004c9be7 je 0x4c9c4e | goto label_0; | } 0x004c9be9 mov r15, qword [rbx + 0x10] | r15 = *((rbx + 0x10)); 0x004c9bed mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x004c9bf1 cmp eax, 2 | | if (eax != 2) { 0x004c9bf4 je 0x4c9c19 | 0x004c9bf6 cmp eax, 1 | | if (eax != 1) { 0x004c9bf9 jne 0x4c9c3a | goto label_1; | } 0x004c9bfb cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004c9c00 je 0x4c9c0f | 0x004c9c02 mov rsi, qword [r14] | rsi = *(r14); 0x004c9c05 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004c9c09 mov rax, qword [rdi] | rax = *(rdi); 0x004c9c0c call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c9c0f mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; 0x004c9c17 jmp 0x4c9c3a | | } else { 0x004c9c19 mov r12, qword [r14] | r12 = *(r14); 0x004c9c1c test r12, r12 | | if (r12 == 0) { 0x004c9c1f je 0x4c9c3a | goto label_1; | } 0x004c9c21 mov r13, qword [r14 + 0x38] | r13 = *((r14 + 0x38)); 0x004c9c25 mov rdi, r12 | 0x004c9c28 call 0x4c9c80 | BloombergLP::s_baltst::Choice1::~Choice1() (r12); 0x004c9c2d mov rax, qword [r13] | rax = *(r13); 0x004c9c31 mov rdi, r13 | rdi = r13; 0x004c9c34 mov rsi, r12 | rsi = r12; 0x004c9c37 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_1: 0x004c9c3a mov dword [r14 + 0x30], 0xffffffff | *((r14 + 0x30)) = 0xffffffff; 0x004c9c42 mov rax, qword [r15] | rax = *(r15); 0x004c9c45 mov rdi, r15 | rdi = r15; 0x004c9c48 mov rsi, r14 | rsi = r14; 0x004c9c4b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_0: 0x004c9c4e mov dword [rbx + 8], 0xffffffff | *((rbx + 8)) = 0xffffffff; | } 0x004c9c55 pop rbx | 0x004c9c56 pop r12 | 0x004c9c58 pop r13 | 0x004c9c5a pop r14 | 0x004c9c5c pop r15 | 0x004c9c5e ret | return rax; | }