// File: /workspace/github_c_makefile_star2_O0/yangtau[P]hedgehog/src/test/../vm.c
// Function: hg_vm_execute
struct hg_value hg_vm_execute(struct hg_vm_state* vm, struct hg_function* func) {
    hg_stk_ptr sp = vm->stack;

    struct hg_call_frame* cur_frame = vm->frames;
    // initialize entry frame
    cur_frame->func     = func;
    cur_frame->base     = sp;
    cur_frame->ret_addr = NULL;

    struct hg_ins* pc = cur_frame->func->code;

#define vdispatch(code) switch (code->op)
#define vcase(x, y) \
    case x:         \
        y;          \
        break;
#define vdefault(y) \
    default:        \
        y

#ifdef HG_VM_JUMPTABLE
#include "vm_jumptable.h"
#endif // HG_VM_JUMPTABLE

    while (true) {
        vdispatch(pc) {
            vcase(HG_OP_ADD, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i + sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_SUB, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i - sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_MUL, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i * sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_DIV, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i / sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_MOD, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i % sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_AND, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i && sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_OR, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i || sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_GT, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i > sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_LT, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i < sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_EQ, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i == sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_NEQ, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;
                int32_t rb = pc->as.ari.rb;

                sp[rt].as.i = sp[ra].as.i != sp[rb].as.i;
                pc++;
            });
            vcase(HG_OP_NOT, {
                int32_t rt = pc->as.ari.rt;
                int32_t ra = pc->as.ari.ra;

                sp[rt].as.i = !(sp[ra].as.i);
                pc++;
            });
            vcase(HG_OP_JUMPFALSE, {
                int32_t rx    = pc->as.jump.rx;
                int32_t label = pc->as.jump.label;
                if (sp[rx].as.i) {
                    pc += label;
                } else {
                    pc++;
                }
            });
            vcase(HG_OP_JUMP, {
                int32_t label = pc->as.jump.label;
                pc += label;
            });
            vcase(HG_OP_CALL, {
                int32_t rx = pc->as.call.rx;
                int32_t n  = pc->as.call.n;
                int32_t m  = pc->as.call.m;

                struct hg_function* fn = sp[rx].as.func;
                assert((size_t)n == fn->num_args);
                assert((size_t)m == fn->num_returns);

                //  push frame; TODO: check frame size
                struct hg_call_frame* new_frame = cur_frame + 1;

                new_frame->func     = fn;
                new_frame->ret_addr = pc + 1;
                new_frame->base     = sp + rx; // TODO: check stack size

                cur_frame = new_frame;

                sp = new_frame->base;
                pc = fn->code;
            });
            vcase(HG_OP_RETURN, {
                pc = cur_frame->ret_addr;
                cur_frame--;
                if (cur_frame->ret_addr == NULL) {
                    // entry function
                    return sp[0];
                }
            });
            vcase(HG_OP_MOVE, {
                int32_t rx = pc->as.move.rx;
                int32_t rt = pc->as.move.rt;
                sp[rt]     = sp[rx];
                pc++;
            });
            vcase(HG_OP_LOADC, {
                int32_t rx = pc->as.load.rx;
                int32_t n  = pc->as.load.n;
                sp[rx]     = cur_frame->func->constants[n];
                pc++;
            });
            vdefault({ unreachable_(); });
        }
    }
    return (struct hg_value){.as.i = 0};
#undef vdispatch
#undef vcase
#undef vdefault
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x510, %rsp            # imm = 0x510
movq %rdi, -0x418(%rbp)
movq %rsi, -0x420(%rbp)
movq -0x418(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x428(%rbp)
movq -0x418(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x430(%rbp)
movq -0x420(%rbp), %rcx
movq -0x430(%rbp), %rax
movq %rcx, (%rax)
movq -0x428(%rbp), %rcx
movq -0x430(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x430(%rbp), %rax
movq $0x0, 0x8(%rax)
movq -0x430(%rbp), %rax
movq (%rax), %rax
movq 0x28(%rax), %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x3377(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x43c(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x440(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x444(%rbp)
movq -0x428(%rbp), %rax
movslq -0x440(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x428(%rbp), %rax
movslq -0x444(%rbp), %rcx
addq (%rax,%rcx,8), %rdx
movq -0x428(%rbp), %rax
movslq -0x43c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x32c9(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x448(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x44c(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x450(%rbp)
movq -0x428(%rbp), %rax
movslq -0x44c(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x428(%rbp), %rax
movslq -0x450(%rbp), %rcx
subq (%rax,%rcx,8), %rdx
movq -0x428(%rbp), %rax
movslq -0x448(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x321b(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x454(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x458(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x45c(%rbp)
movq -0x428(%rbp), %rax
movslq -0x458(%rbp), %rcx
movq (%rax,%rcx,8), %rdx
movq -0x428(%rbp), %rax
movslq -0x45c(%rbp), %rcx
imulq (%rax,%rcx,8), %rdx
movq -0x428(%rbp), %rax
movslq -0x454(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x316c(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x460(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x464(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x468(%rbp)
movq -0x428(%rbp), %rax
movslq -0x464(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x428(%rbp), %rcx
movslq -0x468(%rbp), %rsi
cqto
idivq (%rcx,%rsi,8)
movq %rax, %rdx
movq -0x428(%rbp), %rax
movslq -0x460(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x30b9(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x46c(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x470(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x474(%rbp)
movq -0x428(%rbp), %rax
movslq -0x470(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x428(%rbp), %rcx
movslq -0x474(%rbp), %rsi
cqto
idivq (%rcx,%rsi,8)
movq -0x428(%rbp), %rax
movslq -0x46c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x3009(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x478(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x47c(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x480(%rbp)
movq -0x428(%rbp), %rcx
movslq -0x47c(%rbp), %rdx
xorl %eax, %eax
cmpq $0x0, (%rcx,%rdx,8)
movb %al, -0x509(%rbp)
je 0x1671
movq -0x428(%rbp), %rax
movslq -0x480(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
setne %al
movb %al, -0x509(%rbp)
movb -0x509(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rdx
movq -0x428(%rbp), %rax
movslq -0x478(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2f38(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x484(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x488(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x48c(%rbp)
movq -0x428(%rbp), %rcx
movslq -0x488(%rbp), %rdx
movb $0x1, %al
cmpq $0x0, (%rcx,%rdx,8)
movb %al, -0x50a(%rbp)
jne 0x1742
movq -0x428(%rbp), %rax
movslq -0x48c(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
setne %al
movb %al, -0x50a(%rbp)
movb -0x50a(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rdx
movq -0x428(%rbp), %rax
movslq -0x484(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2e67(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x490(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x494(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x498(%rbp)
movq -0x428(%rbp), %rax
movslq -0x494(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x428(%rbp), %rcx
movslq -0x498(%rbp), %rdx
cmpq (%rcx,%rdx,8), %rax
setg %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rdx
movq -0x428(%rbp), %rax
movslq -0x490(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2dae(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x49c(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4a0(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x4a4(%rbp)
movq -0x428(%rbp), %rax
movslq -0x4a0(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x428(%rbp), %rcx
movslq -0x4a4(%rbp), %rdx
cmpq (%rcx,%rdx,8), %rax
setl %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rdx
movq -0x428(%rbp), %rax
movslq -0x49c(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2cf5(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4a8(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4ac(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x4b0(%rbp)
movq -0x428(%rbp), %rax
movslq -0x4ac(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x428(%rbp), %rcx
movslq -0x4b0(%rbp), %rdx
cmpq (%rcx,%rdx,8), %rax
sete %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rdx
movq -0x428(%rbp), %rax
movslq -0x4a8(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2c3c(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4b4(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4b8(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x4bc(%rbp)
movq -0x428(%rbp), %rax
movslq -0x4b8(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq -0x428(%rbp), %rcx
movslq -0x4bc(%rbp), %rdx
cmpq (%rcx,%rdx,8), %rax
setne %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rdx
movq -0x428(%rbp), %rax
movslq -0x4b4(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2b83(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4c0(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4c4(%rbp)
movq -0x428(%rbp), %rax
movslq -0x4c4(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
setne %al
xorb $-0x1, %al
andb $0x1, %al
movzbl %al, %eax
movslq %eax, %rdx
movq -0x428(%rbp), %rax
movslq -0x4c0(%rbp), %rcx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2aea(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x4c8(%rbp)
movq -0x438(%rbp), %rax
movswl 0x2(%rax), %eax
movl %eax, -0x4cc(%rbp)
movq -0x428(%rbp), %rax
movslq -0x4c8(%rbp), %rcx
cmpq $0x0, (%rax,%rcx,8)
je 0x1b6d
movl -0x4cc(%rbp), %ecx
movq -0x438(%rbp), %rax
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x438(%rbp)
jmp 0x1b7f
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2a5c(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movswl 0x2(%rax), %eax
movl %eax, -0x4d0(%rbp)
movl -0x4d0(%rbp), %ecx
movq -0x438(%rbp), %rax
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2a08(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4d4(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4d8(%rbp)
movq -0x438(%rbp), %rax
movsbl 0x3(%rax), %eax
movl %eax, -0x4dc(%rbp)
movq -0x428(%rbp), %rax
movslq -0x4d4(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x4e8(%rbp)
movslq -0x4d8(%rbp), %rax
movq -0x4e8(%rbp), %rcx
cmpq (%rcx), %rax
jne 0x1c67
jmp 0x1c86
leaq 0x1396(%rip), %rdi      # 0x3004
leaq 0x13a9(%rip), %rsi      # 0x301e
movl $0x8f, %edx
leaq 0x13a5(%rip), %rcx      # 0x3026
callq 0x1080
movslq -0x4dc(%rbp), %rax
movq -0x4e8(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jne 0x1c9c
jmp 0x1cbb
leaq 0x13cd(%rip), %rdi      # 0x3070
leaq 0x1374(%rip), %rsi      # 0x301e
movl $0x90, %edx
leaq 0x1370(%rip), %rcx      # 0x3026
callq 0x1080
movq -0x430(%rbp), %rax
addq $0x18, %rax
movq %rax, -0x4f0(%rbp)
movq -0x4e8(%rbp), %rcx
movq -0x4f0(%rbp), %rax
movq %rcx, (%rax)
movq -0x438(%rbp), %rcx
addq $0x4, %rcx
movq -0x4f0(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x428(%rbp), %rcx
movslq -0x4d4(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rcx
movq -0x4f0(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x4f0(%rbp), %rax
movq %rax, -0x430(%rbp)
movq -0x4f0(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x428(%rbp)
movq -0x4e8(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2895(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x430(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x438(%rbp)
movq -0x430(%rbp), %rax
addq $-0x18, %rax
movq %rax, -0x430(%rbp)
movq -0x430(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x1dc4
movq -0x428(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x410(%rbp)
movq -0x410(%rbp), %rax
addq $0x510, %rsp            # imm = 0x510
popq %rbp
retq
movq -0x508(%rbp), %rax
jmpq *%rax
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x2817(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4f4(%rbp)
movq -0x438(%rbp), %rax
movw 0x1(%rax), %ax
shlw $0x8, %ax
sarw $0x8, %ax
cwtl
movl %eax, -0x4f8(%rbp)
movq -0x428(%rbp), %rax
movslq -0x4f8(%rbp), %rcx
movq -0x428(%rbp), %rdx
movslq -0x4f4(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x278f(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
movq -0x438(%rbp), %rax
movsbl 0x1(%rax), %eax
movl %eax, -0x4fc(%rbp)
movq -0x438(%rbp), %rax
movswl 0x2(%rax), %eax
movl %eax, -0x500(%rbp)
movq -0x428(%rbp), %rax
movslq -0x4fc(%rbp), %rcx
movq -0x430(%rbp), %rdx
movq (%rdx), %rdx
movq 0x18(%rdx), %rdx
movslq -0x500(%rbp), %rsi
movq (%rdx,%rsi,8), %rdx
movq %rdx, (%rax,%rcx,8)
movq -0x438(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
movzbl (%rax), %eax
movl %eax, %eax
movl %eax, %ecx
leaq 0x270b(%rip), %rax      # 0x45f0
movq (%rax,%rcx,8), %rax
movq %rax, -0x508(%rbp)
jmp 0x1dbb
jmp 0x1ef7
movq 0x30f2(%rip), %rax      # 0x4ff0
movq (%rax), %rdi
leaq 0x1185(%rip), %rsi      # 0x308d
leaq 0x119a(%rip), %rdx      # 0x30a9
movb $0x0, %al
callq 0x1090
leaq -0x400(%rbp), %rdi
movl $0x80, %esi
callq 0x1060
cltq
movq %rax, -0x408(%rbp)
movq -0x408(%rbp), %rax
movl %eax, %esi
leaq -0x400(%rbp), %rdi
movl $0x2, %edx
callq 0x1040
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x10d0
nopw %cs:(%rax,%rax)
nop