; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4c9c80 */ | #include | ; (fcn) method.BloombergLP::s_baltst::Choice1.Choice1__ () | int64_t method_BloombergLP::s_baltst::Choice1_Choice1_ (int64_t arg1) { | rdi = arg1; | do { | /* BloombergLP::s_baltst::Choice1::~Choice1() */ 0x004c9c80 push r15 | 0x004c9c82 push r14 | 0x004c9c84 push r13 | 0x004c9c86 push r12 | 0x004c9c88 push rbx | 0x004c9c89 mov rbx, rdi | rbx = rdi; 0x004c9c8c mov eax, dword [rdi + 8] | eax = *((rdi + 8)); 0x004c9c8f cmp eax, 3 | | if (eax != 3) { 0x004c9c92 je 0x4c9cc3 | 0x004c9c94 cmp eax, 2 | | if (eax != 2) { 0x004c9c97 jne 0x4c9d30 | goto label_0; | } 0x004c9c9d mov r14, qword [rbx] | r14 = *(rbx); 0x004c9ca0 test r14, r14 | | if (r14 == 0) { 0x004c9ca3 je 0x4c9d30 | goto label_0; | } 0x004c9ca9 mov r15, qword [rbx + 0x10] | r15 = *((rbx + 0x10)); 0x004c9cad mov rdi, r14 | 0x004c9cb0 call 0x4c06a0 | BloombergLP::s_baltst::Sequence4::~Sequence4() (r14); 0x004c9cb5 mov rax, qword [r15] | rax = *(r15); 0x004c9cb8 mov rdi, r15 | rdi = r15; 0x004c9cbb mov rsi, r14 | rsi = r14; 0x004c9cbe call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c9cc1 jmp 0x4c9d30 | goto label_0; | } 0x004c9cc3 mov r14, qword [rbx] | r14 = *(rbx); 0x004c9cc6 test r14, r14 | | if (r14 == 0) { 0x004c9cc9 je 0x4c9d30 | goto label_0; | } 0x004c9ccb mov r15, qword [rbx + 0x10] | r15 = *((rbx + 0x10)); 0x004c9ccf mov eax, dword [r14 + 0x30] | eax = *((r14 + 0x30)); 0x004c9cd3 cmp eax, 2 | | if (eax != 2) { 0x004c9cd6 je 0x4c9cfb | 0x004c9cd8 cmp eax, 1 | | if (eax != 1) { 0x004c9cdb jne 0x4c9d1c | goto label_1; | } 0x004c9cdd cmp qword [r14 + 0x20], 0x17 | | if (*((r14 + 0x20)) != 0x17) { 0x004c9ce2 je 0x4c9cf1 | 0x004c9ce4 mov rsi, qword [r14] | rsi = *(r14); 0x004c9ce7 mov rdi, qword [r14 + 0x28] | rdi = *((r14 + 0x28)); 0x004c9ceb mov rax, qword [rdi] | rax = *(rdi); 0x004c9cee call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c9cf1 mov qword [r14 + 0x18], 0xffffffffffffffff | *((r14 + 0x18)) = 0xffffffffffffffff; 0x004c9cf9 jmp 0x4c9d1c | goto label_1; | } 0x004c9cfb mov r12, qword [r14] | r12 = *(r14); 0x004c9cfe test r12, r12 | | if (r12 == 0) { 0x004c9d01 je 0x4c9d1c | goto label_1; | } 0x004c9d03 mov r13, qword [r14 + 0x38] | r13 = *((r14 + 0x38)); 0x004c9d07 mov rdi, r12 | 0x004c9d0a call 0x4c9c80 | BloombergLP::s_baltst::Choice1::~Choice1() (r12); | } while (1); 0x004c9d0f mov rax, qword [r13] | rax = *(r13); 0x004c9d13 mov rdi, r13 | rdi = r13; 0x004c9d16 mov rsi, r12 | rsi = r12; 0x004c9d19 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_1: 0x004c9d1c mov dword [r14 + 0x30], 0xffffffff | *((r14 + 0x30)) = 0xffffffff; 0x004c9d24 mov rax, qword [r15] | rax = *(r15); 0x004c9d27 mov rdi, r15 | rdi = r15; 0x004c9d2a mov rsi, r14 | rsi = r14; 0x004c9d2d call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_0: 0x004c9d30 mov dword [rbx + 8], 0xffffffff | *((rbx + 8)) = 0xffffffff; 0x004c9d37 pop rbx | 0x004c9d38 pop r12 | 0x004c9d3a pop r13 | 0x004c9d3c pop r14 | 0x004c9d3e pop r15 | 0x004c9d40 ret | return rax; | }