; assembly | /* r2dec pseudo code output */ | /* baljsn_encoder.t/assume @ 0x4c05f0 */ | #include | ; (fcn) method.BloombergLP::s_baltst::Sequence4.Sequence4__ () | int64_t method_BloombergLP::s_baltst::Sequence4_Sequence4_ (uint32_t arg1) { | int64_t var_8h; | rdi = arg1; | /* BloombergLP::s_baltst::Sequence4::~Sequence4() */ 0x004c05f0 push r15 | 0x004c05f2 push r14 | 0x004c05f4 push rbx | 0x004c05f5 sub rsp, 0x10 | 0x004c05f9 mov r14, rdi | r14 = rdi; 0x004c05fc cmp byte [rdi + 0x1d0], 0 | | if (*((rdi + 0x1d0)) != 0) { 0x004c0603 je 0x4c0636 | 0x004c0605 mov byte [r14 + 0x1d0], 0 | *((r14 + 0x1d0)) = 0; 0x004c060d cmp qword [r14 + 0x1c0], 0x17 | | if (*((r14 + 0x1c0)) != 0x17) { 0x004c0615 je 0x4c062b | 0x004c0617 mov rsi, qword [r14 + 0x1a0] | rsi = *((r14 + 0x1a0)); 0x004c061e mov rdi, qword [r14 + 0x1c8] | rdi = *((r14 + 0x1c8)); 0x004c0625 mov rax, qword [rdi] | rax = *(rdi); 0x004c0628 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c062b mov qword [r14 + 0x1b8], 0xffffffffffffffff | *((r14 + 0x1b8)) = 0xffffffffffffffff; | } 0x004c0636 cmp byte [r14 + 0x178], 0 | | if (*((r14 + 0x178)) != 0) { 0x004c063e je 0x4c0661 | 0x004c0640 mov byte [r14 + 0x178], 0 | *((r14 + 0x178)) = 0; 0x004c0648 mov rsi, qword [r14 + 0x158] | rsi = *((r14 + 0x158)); 0x004c064f test rsi, rsi | | if (rsi == 0) { 0x004c0652 je 0x4c0661 | goto label_2; | } 0x004c0654 mov rdi, qword [r14 + 0x170] | rdi = *((r14 + 0x170)); 0x004c065b mov rax, qword [rdi] | rax = *(rdi); 0x004c065e call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } | label_2: 0x004c0661 cmp qword [r14 + 0x148], 0x17 | | if (*((r14 + 0x148)) != 0x17) { 0x004c0669 je 0x4c067f | 0x004c066b mov rsi, qword [r14 + 0x128] | rsi = *((r14 + 0x128)); 0x004c0672 mov rdi, qword [r14 + 0x150] | rdi = *((r14 + 0x150)); 0x004c0679 mov rax, qword [rdi] | rax = *(rdi); 0x004c067c call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c067f mov qword [r14 + 0x140], 0xffffffffffffffff | *((r14 + 0x140)) = 0xffffffffffffffff; 0x004c068a mov rdi, qword [r14 + 0x108] | rdi = *((r14 + 0x108)); 0x004c0691 test rdi, rdi | | if (rdi != 0) { 0x004c0694 je 0x4c06c7 | 0x004c0696 mov rsi, qword [r14 + 0x110] | 0x004c069d mov rax, qword [r14 + 0x120] | rax = *((r14 + 0x120)); 0x004c06a4 mov qword [rsp + 8], rax | *((rsp + 8)) = rax; 0x004c06a9 lea rdx, [rsp + 8] | rdx = rsp + 8; 0x004c06ae call 0x4c9aa0 | voidBloombergLP::bslalg::ArrayDestructionPrimitives::destroy>(BloombergLP::s_baltst::Choice1*,BloombergLP::s_baltst::Choice1*,bsl::allocator,bsl::integral_constant) (rdi, *((r14 + 0x110))); 0x004c06b3 mov rsi, qword [r14 + 0x108] | rsi = *((r14 + 0x108)); 0x004c06ba mov rdi, qword [r14 + 0x120] | rdi = *((r14 + 0x120)); 0x004c06c1 mov rax, qword [rdi] | rax = *(rdi); 0x004c06c4 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c06c7 mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); 0x004c06ce test rbx, rbx | | if (rbx == 0) { 0x004c06d1 je 0x4c072e | goto label_3; | } 0x004c06d3 mov r15, qword [r14 + 0xf0] | r15 = *((r14 + 0xf0)); 0x004c06da cmp rbx, r15 | | if (rbx != r15) { 0x004c06dd jne 0x4c0701 | goto label_4; | } 0x004c06df jmp 0x4c071e | goto label_5; | do { | label_0: 0x004c06f0 mov qword [rbx + 0x18], 0xffffffffffffffff | *((rbx + 0x18)) = 0xffffffffffffffff; 0x004c06f8 add rbx, 0x30 | rbx += 0x30; 0x004c06fc cmp r15, rbx | | if (r15 == rbx) { 0x004c06ff je 0x4c0717 | goto label_6; | } | label_4: 0x004c0701 cmp qword [rbx + 0x20], 0x17 | 0x004c0706 je 0x4c06f0 | | } while (*((rbx + 0x20)) == 0x17); 0x004c0708 mov rsi, qword [rbx] | rsi = *(rbx); 0x004c070b mov rdi, qword [rbx + 0x28] | rdi = *((rbx + 0x28)); 0x004c070f mov rax, qword [rdi] | rax = *(rdi); 0x004c0712 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c0715 jmp 0x4c06f0 | goto label_0; | label_6: 0x004c0717 mov rbx, qword [r14 + 0xe8] | rbx = *((r14 + 0xe8)); | label_5: 0x004c071e mov rdi, qword [r14 + 0x100] | rdi = *((r14 + 0x100)); 0x004c0725 mov rax, qword [rdi] | rax = *(rdi); 0x004c0728 mov rsi, rbx | rsi = rbx; 0x004c072b call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_3: 0x004c072e mov rbx, qword [r14 + 0xc8] | rbx = *((r14 + 0xc8)); 0x004c0735 test rbx, rbx | | if (rbx == 0) { 0x004c0738 je 0x4c077b | goto label_7; | } 0x004c073a mov r15, qword [r14 + 0xd0] | r15 = *((r14 + 0xd0)); 0x004c0741 cmp rbx, r15 | | if (rbx == r15) { 0x004c0744 je 0x4c076b | goto label_8; | } 0x004c0746 nop word cs:[rax + rax] | | do { 0x004c0750 mov rdi, rbx | 0x004c0753 call 0x4bdd50 | BloombergLP::s_baltst::Sequence3::~Sequence3() (rbx); 0x004c0758 add rbx, 0xb8 | rbx += 0xb8; 0x004c075f cmp r15, rbx | 0x004c0762 jne 0x4c0750 | | } while (r15 != rbx); 0x004c0764 mov rbx, qword [r14 + 0xc8] | rbx = *((r14 + 0xc8)); | label_8: 0x004c076b mov rdi, qword [r14 + 0xe0] | rdi = *((r14 + 0xe0)); 0x004c0772 mov rax, qword [rdi] | rax = *(rdi); 0x004c0775 mov rsi, rbx | rsi = rbx; 0x004c0778 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_7: 0x004c077b mov rsi, qword [r14 + 0xa8] | rsi = *((r14 + 0xa8)); 0x004c0782 test rsi, rsi | | if (rsi != 0) { 0x004c0785 je 0x4c0794 | 0x004c0787 mov rdi, qword [r14 + 0xc0] | rdi = *((r14 + 0xc0)); 0x004c078e mov rax, qword [rdi] | rax = *(rdi); 0x004c0791 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c0794 mov rsi, qword [r14 + 0x88] | rsi = *((r14 + 0x88)); 0x004c079b test rsi, rsi | | if (rsi != 0) { 0x004c079e je 0x4c07ad | 0x004c07a0 mov rdi, qword [r14 + 0xa0] | rdi = *((r14 + 0xa0)); 0x004c07a7 mov rax, qword [rdi] | rax = *(rdi); 0x004c07aa call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c07ad mov rbx, qword [r14 + 0x68] | rbx = *((r14 + 0x68)); 0x004c07b1 test rbx, rbx | | if (rbx == 0) { 0x004c07b4 je 0x4c0801 | goto label_9; | } 0x004c07b6 mov r15, qword [r14 + 0x70] | r15 = *((r14 + 0x70)); 0x004c07ba cmp rbx, r15 | | if (rbx != r15) { 0x004c07bd jne 0x4c07d9 | goto label_10; | } 0x004c07bf jmp 0x4c07f1 | goto label_11; | do { | label_1: 0x004c07d0 add rbx, 0x20 | rbx += 0x20; 0x004c07d4 cmp r15, rbx | | if (r15 == rbx) { 0x004c07d7 je 0x4c07ed | goto label_12; | } | label_10: 0x004c07d9 mov rsi, qword [rbx] | rsi = *(rbx); 0x004c07dc test rsi, rsi | 0x004c07df je 0x4c07d0 | | } while (rsi == 0); 0x004c07e1 mov rdi, qword [rbx + 0x18] | rdi = *((rbx + 0x18)); 0x004c07e5 mov rax, qword [rdi] | rax = *(rdi); 0x004c07e8 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); 0x004c07eb jmp 0x4c07d0 | goto label_1; | label_12: 0x004c07ed mov rbx, qword [r14 + 0x68] | rbx = *((r14 + 0x68)); | label_11: 0x004c07f1 mov rdi, qword [r14 + 0x80] | rdi = *((r14 + 0x80)); 0x004c07f8 mov rax, qword [rdi] | rax = *(rdi); 0x004c07fb mov rsi, rbx | rsi = rbx; 0x004c07fe call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | label_9: 0x004c0801 mov rsi, qword [r14 + 0x48] | rsi = *((r14 + 0x48)); 0x004c0805 test rsi, rsi | | if (rsi != 0) { 0x004c0808 je 0x4c0814 | 0x004c080a mov rdi, qword [r14 + 0x60] | rdi = *((r14 + 0x60)); 0x004c080e mov rax, qword [rdi] | rax = *(rdi); 0x004c0811 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c0814 mov rsi, qword [r14 + 0x28] | rsi = *((r14 + 0x28)); 0x004c0818 test rsi, rsi | | if (rsi != 0) { 0x004c081b je 0x4c0827 | 0x004c081d mov rdi, qword [r14 + 0x40] | rdi = *((r14 + 0x40)); 0x004c0821 mov rax, qword [rdi] | rax = *(rdi); 0x004c0824 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c0827 mov rsi, qword [r14 + 8] | rsi = *((r14 + 8)); 0x004c082b test rsi, rsi | | if (rsi != 0) { 0x004c082e je 0x4c083a | 0x004c0830 mov rdi, qword [r14 + 0x20] | rdi = *((r14 + 0x20)); 0x004c0834 mov rax, qword [rdi] | rax = *(rdi); 0x004c0837 call qword [rax + 0x18] | uint64_t (*rax + 0x18)() (); | } 0x004c083a add rsp, 0x10 | 0x004c083e pop rbx | 0x004c083f pop r14 | 0x004c0841 pop r15 | 0x004c0843 ret | return rax; | }