; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/none @ 0x4c06a0 */ | #include | ; (fcn) method.BloombergLP::s_baltst::Sequence4.Sequence4__ () | int64_t method_BloombergLP::s_baltst::Sequence4_Sequence4_ (uint32_t arg1) { | rdi = arg1; | /* BloombergLP::s_baltst::Sequence4::~Sequence4() */ | label_1: 0x004c06a0 push rbp | 0x004c06a1 push r15 | 0x004c06a3 push r14 | 0x004c06a5 push r13 | 0x004c06a7 push r12 | 0x004c06a9 push rbx | 0x004c06aa push rax | 0x004c06ab mov r14, rdi | r14 = rdi; 0x004c06ae cmp byte [rdi + 0x1d0], 0 | | if (*((rdi + 0x1d0)) != 0) { 0x004c06b5 je 0x4c06e8 | 0x004c06b7 mov byte [r14 + 0x1d0], 0 | *((r14 + 0x1d0)) = 0; 0x004c06bf cmp qword [r14 + 0x1c0], 0x17 | | if (*((r14 + 0x1c0)) != 0x17) { 0x004c06c7 je 0x4c06dd | 0x004c06c9 mov rsi, qword [r14 + 0x1a0] | rsi = *((r14 + 0x1a0)); 0x004c06d0 mov rdi, qword [r14 + 0x1c8] | rdi = *((r14 + 0x1c8)); 0x004c06d7 mov rax, qword [rdi] | rax = *(rdi); 0x004c06da call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c06dd mov qword [r14 + 0x1b8], 0xffffffffffffffff | *((r14 + 0x1b8)) = 0xffffffffffffffff; | } 0x004c06e8 cmp byte [r14 + 0x178], 0 | | if (*((r14 + 0x178)) != 0) { 0x004c06f0 je 0x4c0713 | 0x004c06f2 mov byte [r14 + 0x178], 0 | *((r14 + 0x178)) = 0; 0x004c06fa mov rsi, qword [r14 + 0x158] | rsi = *((r14 + 0x158)); 0x004c0701 test rsi, rsi | | if (rsi == 0) { 0x004c0704 je 0x4c0713 | goto label_6; | } 0x004c0706 mov rdi, qword [r14 + 0x170] | rdi = *((r14 + 0x170)); 0x004c070d mov rax, qword [rdi] | rax = *(rdi); 0x004c0710 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_6: 0x004c0713 cmp qword [r14 + 0x148], 0x17 | | if (*((r14 + 0x148)) != 0x17) { 0x004c071b je 0x4c0731 | 0x004c071d mov rsi, qword [r14 + 0x128] | rsi = *((r14 + 0x128)); 0x004c0724 mov rdi, qword [r14 + 0x150] | rdi = *((r14 + 0x150)); 0x004c072b mov rax, qword [rdi] | rax = *(rdi); 0x004c072e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c0731 mov qword [r14 + 0x140], 0xffffffffffffffff | *((r14 + 0x140)) = 0xffffffffffffffff; 0x004c073c mov rbx, qword [r14 + 0x108] | rbx = *((r14 + 0x108)); 0x004c0743 test rbx, rbx | | if (rbx == 0) { 0x004c0746 je 0x4c083c | goto label_7; | } 0x004c074c mov rbp, qword [r14 + 0x110] | rbp = *((r14 + 0x110)); 0x004c0753 cmp rbx, rbp | | if (rbx != rbp) { 0x004c0756 jne 0x4c078e | goto label_8; | } 0x004c0758 jmp 0x4c082c | goto label_9; | label_3: 0x004c075d mov qword [r15 + 0x18], 0xffffffffffffffff | *((r15 + 0x18)) = 0xffffffffffffffff; | label_2: 0x004c0765 mov dword [r15 + 0x30], 0xffffffff | *((r15 + 0x30)) = 0xffffffff; 0x004c076d mov rax, qword [r12] | rax = *(r12); 0x004c0771 mov rdi, r12 | rdi = r12; 0x004c0774 mov rsi, r15 | rsi = r15; 0x004c0777 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | do { | label_0: 0x004c077a mov dword [rbx + 8], 0xffffffff | *((rbx + 8)) = 0xffffffff; 0x004c0781 add rbx, 0x18 | rbx += 0x18; 0x004c0785 cmp rbp, rbx | | if (rbp == rbx) { 0x004c0788 je 0x4c0825 | goto label_10; | } | label_8: 0x004c078e mov eax, dword [rbx + 8] | eax = *((rbx + 8)); 0x004c0791 cmp eax, 3 | | if (eax == 3) { 0x004c0794 je 0x4c07c0 | goto label_11; | } 0x004c0796 cmp eax, 2 | 0x004c0799 jne 0x4c077a | | } while (eax != 2); 0x004c079b mov r15, qword [rbx] | r15 = *(rbx); 0x004c079e test r15, r15 | | if (r15 == 0) { 0x004c07a1 je 0x4c077a | goto label_0; | } 0x004c07a3 mov r12, qword [rbx + 0x10] | r12 = *((rbx + 0x10)); 0x004c07a7 mov rdi, r15 | 0x004c07aa call 0x4c06a0 | BloombergLP::s_baltst::Sequence4::~Sequence4() (r15); | goto label_1; 0x004c07af mov rax, qword [r12] | rax = *(r12); 0x004c07b3 mov rdi, r12 | rdi = r12; 0x004c07b6 mov rsi, r15 | rsi = r15; 0x004c07b9 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c07bc jmp 0x4c077a | goto label_0; | label_11: 0x004c07c0 mov r15, qword [rbx] | r15 = *(rbx); 0x004c07c3 test r15, r15 | | if (r15 == 0) { 0x004c07c6 je 0x4c077a | goto label_0; | } 0x004c07c8 mov r12, qword [rbx + 0x10] | r12 = *((rbx + 0x10)); 0x004c07cc mov eax, dword [r15 + 0x30] | eax = *((r15 + 0x30)); 0x004c07d0 cmp eax, 2 | | if (eax == 2) { 0x004c07d3 je 0x4c07f7 | goto label_12; | } 0x004c07d5 cmp eax, 1 | | if (eax != 1) { 0x004c07d8 jne 0x4c0765 | goto label_2; | } 0x004c07da cmp qword [r15 + 0x20], 0x17 | | if (*((r15 + 0x20)) == 0x17) { 0x004c07df je 0x4c075d | goto label_3; | } 0x004c07e5 mov rsi, qword [r15] | rsi = *(r15); 0x004c07e8 mov rdi, qword [r15 + 0x28] | rdi = *((r15 + 0x28)); 0x004c07ec mov rax, qword [rdi] | rax = *(rdi); 0x004c07ef call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c07f2 jmp 0x4c075d | goto label_3; | label_12: 0x004c07f7 mov r13, qword [r15] | r13 = *(r15); 0x004c07fa test r13, r13 | | if (r13 == 0) { 0x004c07fd je 0x4c0765 | goto label_2; | } 0x004c0803 mov rax, qword [r15 + 0x38] | rax = *((r15 + 0x38)); 0x004c0807 mov qword [rsp], rax | *(rsp) = rax; 0x004c080b mov rdi, r13 | 0x004c080e call 0x4c9c80 | BloombergLP::s_baltst::Choice1::~Choice1() (r13); 0x004c0813 mov rdi, qword [rsp] | rdi = *(rsp); 0x004c0817 mov rax, qword [rdi] | rax = *(rdi); 0x004c081a mov rsi, r13 | rsi = r13; 0x004c081d call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c0820 jmp 0x4c0765 | goto label_2; | label_10: 0x004c0825 mov rbx, qword [r14 + 0x108] | rbx = *((r14 + 0x108)); | label_9: 0x004c082c mov rdi, qword [r14 + 0x120] | rdi = *((r14 + 0x120)); 0x004c0833 mov rax, qword [rdi] | rax = *(rdi); 0x004c0836 mov rsi, rbx | rsi = rbx; 0x004c0839 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_7: 0x004c083c mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); 0x004c0843 test rbx, rbx | | if (rbx == 0) { 0x004c0846 je 0x4c089e | goto label_13; | } 0x004c0848 mov rbp, qword [r14 + 0xf0] | rbp = *((r14 + 0xf0)); 0x004c084f cmp rbx, rbp | | if (rbx != rbp) { 0x004c0852 jne 0x4c0871 | goto label_14; | } 0x004c0854 jmp 0x4c088e | goto label_15; | do { | label_4: 0x004c0860 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x004c0868 add rbx, 0x30 | rbx += 0x30; 0x004c086c cmp rbp, rbx | | if (rbp == rbx) { 0x004c086f je 0x4c0887 | goto label_16; | } | label_14: 0x004c0871 cmp qword [rbx + 0x20], 0x17 | 0x004c0876 je 0x4c0860 | | } while (*((rbx + 0x20)) == 0x17); 0x004c0878 mov rsi, qword [rbx] | rsi = *(rbx); 0x004c087b mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004c087f mov rax, qword [rdi] | rax = *(rdi); 0x004c0882 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c0885 jmp 0x4c0860 | goto label_4; | label_16: 0x004c0887 mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); | label_15: 0x004c088e mov rdi, qword [r14 + 0x100] | rdi = *((r14 + 0x100)); 0x004c0895 mov rax, qword [rdi] | rax = *(rdi); 0x004c0898 mov rsi, rbx | rsi = rbx; 0x004c089b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_13: 0x004c089e mov rbx, qword [r14 + 0xc8] | rbx = *((r14 + 0xc8)); 0x004c08a5 test rbx, rbx | | if (rbx == 0) { 0x004c08a8 je 0x4c08eb | goto label_17; | } 0x004c08aa mov rbp, qword [r14 + 0xd0] | rbp = *((r14 + 0xd0)); 0x004c08b1 cmp rbx, rbp | | if (rbx == rbp) { 0x004c08b4 je 0x4c08db | goto label_18; | } 0x004c08b6 nop word cs:[rax + rax] | | do { 0x004c08c0 mov rdi, rbx | 0x004c08c3 call 0x4bdee0 | BloombergLP::s_baltst::Sequence3::~Sequence3() (rbx); 0x004c08c8 add rbx, 0xb8 | rbx += 0xb8; 0x004c08cf cmp rbp, rbx | 0x004c08d2 jne 0x4c08c0 | | } while (rbp != rbx); 0x004c08d4 mov rbx, qword [r14 + 0xc8] | rbx = *((r14 + 0xc8)); | label_18: 0x004c08db mov rdi, qword [r14 + 0xe0] | rdi = *((r14 + 0xe0)); 0x004c08e2 mov rax, qword [rdi] | rax = *(rdi); 0x004c08e5 mov rsi, rbx | rsi = rbx; 0x004c08e8 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_17: 0x004c08eb mov rsi, qword [r14 + 0xa8] | rsi = *((r14 + 0xa8)); 0x004c08f2 test rsi, rsi | | if (rsi != 0) { 0x004c08f5 je 0x4c0904 | 0x004c08f7 mov rdi, qword [r14 + 0xc0] | rdi = *((r14 + 0xc0)); 0x004c08fe mov rax, qword [rdi] | rax = *(rdi); 0x004c0901 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c0904 mov rsi, qword [r14 + 0x88] | rsi = *((r14 + 0x88)); 0x004c090b test rsi, rsi | | if (rsi != 0) { 0x004c090e je 0x4c091d | 0x004c0910 mov rdi, qword [r14 + 0xa0] | rdi = *((r14 + 0xa0)); 0x004c0917 mov rax, qword [rdi] | rax = *(rdi); 0x004c091a call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c091d mov rbx, qword [r14 + 0x68] | rbx = *((r14 + 0x68)); 0x004c0921 test rbx, rbx | | if (rbx == 0) { 0x004c0924 je 0x4c0971 | goto label_19; | } 0x004c0926 mov rbp, qword [r14 + 0x70] | rbp = *((r14 + 0x70)); 0x004c092a cmp rbx, rbp | | if (rbx != rbp) { 0x004c092d jne 0x4c0949 | goto label_20; | } 0x004c092f jmp 0x4c0961 | goto label_21; | do { | label_5: 0x004c0940 add rbx, 0x20 | rbx += 0x20; 0x004c0944 cmp rbp, rbx | | if (rbp == rbx) { 0x004c0947 je 0x4c095d | goto label_22; | } | label_20: 0x004c0949 mov rsi, qword [rbx] | rsi = *(rbx); 0x004c094c test rsi, rsi | 0x004c094f je 0x4c0940 | | } while (rsi == 0); 0x004c0951 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x004c0955 mov rax, qword [rdi] | rax = *(rdi); 0x004c0958 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c095b jmp 0x4c0940 | goto label_5; | label_22: 0x004c095d mov rbx, qword [r14 + 0x68] | rbx = *((r14 + 0x68)); | label_21: 0x004c0961 mov rdi, qword [r14 + 0x80] | rdi = *((r14 + 0x80)); 0x004c0968 mov rax, qword [rdi] | rax = *(rdi); 0x004c096b mov rsi, rbx | rsi = rbx; 0x004c096e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_19: 0x004c0971 mov rsi, qword [r14 + 0x48] | rsi = *((r14 + 0x48)); 0x004c0975 test rsi, rsi | | if (rsi != 0) { 0x004c0978 je 0x4c0984 | 0x004c097a mov rdi, qword [r14 + 0x60] | rdi = *((r14 + 0x60)); 0x004c097e mov rax, qword [rdi] | rax = *(rdi); 0x004c0981 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c0984 mov rsi, qword [r14 + 0x28] | rsi = *((r14 + 0x28)); 0x004c0988 test rsi, rsi | | if (rsi != 0) { 0x004c098b je 0x4c0997 | 0x004c098d mov rdi, qword [r14 + 0x40] | rdi = *((r14 + 0x40)); 0x004c0991 mov rax, qword [rdi] | rax = *(rdi); 0x004c0994 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c0997 mov rsi, qword [r14 + 8] | rsi = *((r14 + 8)); 0x004c099b test rsi, rsi | | if (rsi != 0) { 0x004c099e je 0x4c09aa | 0x004c09a0 mov rdi, qword [r14 + 0x20] | rdi = *((r14 + 0x20)); 0x004c09a4 mov rax, qword [rdi] | rax = *(rdi); 0x004c09a7 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c09aa add rsp, 8 | 0x004c09ae pop rbx | 0x004c09af pop r12 | 0x004c09b1 pop r13 | 0x004c09b3 pop r14 | 0x004c09b5 pop r15 | 0x004c09b7 pop rbp | 0x004c09b8 ret | return rax; | }