// File: /workspace/github_c_makefile_star2_O0/endeav0r[P]hsvm/src/vm.c
// Function: vm_step
int vm_step (struct _vm * vm)
{
    const struct _instruction * ins;
    uint16_t tmp;

    if (vm->halted) return VM_HALTED;

    ins = (const struct _instruction *) &(vm->mem[vm->regs[REG_IP]]);

    vm->regs[REG_IP] += 4;

    switch (ins->opcode) {
    case OP_ADD :
        vm->regs[ins->operand_0] = vm->regs[ins->operand_1] + vm->regs[ins->operand_2];
        break;
    case OP_SUB :
        vm->regs[ins->operand_0] = vm->regs[ins->operand_1] - vm->regs[ins->operand_2];
        break;
    case OP_MUL :
        vm->regs[ins->operand_0] = vm->regs[ins->operand_1] * vm->regs[ins->operand_2];
        break;
    case OP_DIV :
        vm->regs[ins->operand_0] = vm->regs[ins->operand_1] / vm->regs[ins->operand_2];
        break;
    case OP_MOD :
        vm->regs[ins->operand_0] = vm->regs[ins->operand_1] % vm->regs[ins->operand_2];
        break;
    case OP_AND :
        vm->regs[ins->operand_0] = vm->regs[ins->operand_1] & vm->regs[ins->operand_2];
        break;
    case OP_OR :
        vm->regs[ins->operand_0] = vm->regs[ins->operand_1] | vm->regs[ins->operand_2];
        break;
    case OP_XOR :
        vm->regs[ins->operand_0] = vm->regs[ins->operand_1] ^ vm->regs[ins->operand_2];
        break;
    case OP_ADDLVAL :
        vm->regs[ins->operand_0] += ntohs(ins->lval);
        break;
    case OP_SUBLVAL :
        vm->regs[ins->operand_0] -= ntohs(ins->lval);
        break;
    case OP_MULLVAL :
        vm->regs[ins->operand_0] *= ntohs(ins->lval);
        break;
    case OP_DIVLVAL :
        vm->regs[ins->operand_0] /= ntohs(ins->lval);
        break;
    case OP_MODLVAL :
        vm->regs[ins->operand_0] %= ntohs(ins->lval);
        break;
    case OP_ANDLVAL :
        vm->regs[ins->operand_0] &= ntohs(ins->lval);
        break;
    case OP_ORLVAL :
        vm->regs[ins->operand_0] |= ntohs(ins->lval);
        break;
    case OP_XORLVAL :
        vm->regs[ins->operand_0] ^= ntohs(ins->lval);
        break;
    case OP_JMP :
        vm->regs[REG_IP] += ntohs(ins->lval);
        break;
    case OP_JE :
        if (vm->flags == 0)
            vm->regs[REG_IP] += ntohs(ins->lval);
        break;
    case OP_JNE :
        if (vm->flags != 0)
            vm->regs[REG_IP] += ntohs(ins->lval);
        break;
    case OP_JL :
        if (vm->flags < 0)
            vm->regs[REG_IP] += ntohs(ins->lval);
        break;
    case OP_JLE :
        if (vm->flags <= 0)
            vm->regs[REG_IP] += ntohs(ins->lval);
        break;
    case OP_JG :
        if (vm->flags > 0)
            vm->regs[REG_IP] += ntohs(ins->lval);
        break;
    case OP_JGE :
        if (vm->flags >= 0)
            vm->regs[REG_IP] += ntohs(ins->lval);
        break;
    case OP_CALL  :
    case OP_CALLR :
        vm->regs[REG_SP] -= 2;
        tmp = htons(vm->regs[REG_IP]);
        memcpy(&(vm->mem[vm->regs[REG_SP]]), &tmp, 2);
        if (ins->opcode == OP_CALL)
            vm->regs[REG_IP] += ntohs(ins->lval);
        else
            vm->regs[REG_IP] += vm->regs[ins->operand_0];
        break;
    case OP_RET :
        memcpy(&tmp, &(vm->mem[vm->regs[REG_SP]]), 2);
        vm->regs[REG_IP] = ntohs(tmp);
        vm->regs[REG_SP] += 2;
        break;
    case OP_LOAD :
        memcpy(&tmp, &(vm->mem[ntohs(ins->lval)]), 2);
        vm->regs[ins->operand_0] = ntohs(tmp);
        break;
    case OP_LOADR :
        memcpy(&tmp, &(vm->mem[vm->regs[ins->operand_1]]), 2);
        vm->regs[ins->operand_0] = ntohs(tmp);
        break;
    case OP_LOADB :
        vm->regs[ins->operand_0] = vm->mem[ntohs(ins->lval)];
        break;
    case OP_LOADBR :
        vm->regs[ins->operand_0] = vm->mem[vm->regs[ins->operand_1]];
        break;
    case OP_STOR :
        tmp = htons(vm->regs[ins->operand_0]);
        memcpy(&(vm->mem[ntohs(ins->lval)]), &tmp, 2);
        break;
    case OP_STORR :
        tmp = htons(vm->regs[ins->operand_1]);
        memcpy(&(vm->mem[vm->regs[ins->operand_0]]), &tmp, 2);
        break;
    case OP_STORB :
        vm->mem[ins->lval] = vm->regs[ins->operand_0] & 0xff;
        break;
    case OP_STORBR :
        vm->mem[vm->regs[ins->operand_0]] = vm->regs[ins->operand_1] & 0xff;
        break;
    case OP_IN :
        vm->regs[ins->operand_0] = getchar();
        break;
    case OP_OUT :
        putchar(vm->regs[ins->operand_0]);
        fflush(stdout);
        break;
    case OP_PUSH :
        vm->regs[REG_SP] -= 2;
        tmp = htons(vm->regs[ins->operand_0]);
        memcpy(&(vm->mem[vm->regs[REG_SP]]), &tmp, 2);
        break;
    case OP_PUSHLVAL :
        vm->regs[REG_SP] -= 2;
        tmp = ins->lval; // already in correct byte order
        memcpy(&(vm->mem[vm->regs[REG_SP]]), &tmp, 2);
        break;
    case OP_POP :
        memcpy(&tmp, &(vm->mem[vm->regs[REG_SP]]), 2);
        vm->regs[ins->operand_0] = ntohs(tmp);
        vm->regs[REG_SP] += 2;
        break;
    case OP_MOV :
        vm->regs[ins->operand_0] = vm->regs[ins->operand_1];
        break;
    case OP_MOVLVAL :
        vm->regs[ins->operand_0] = ntohs(ins->lval);
        break;
    case OP_CMP :
        vm->flags = vm->regs[ins->operand_0] - vm->regs[ins->operand_1];
        break;
    case OP_CMPLVAL :
        vm->flags = vm->regs[ins->operand_0] - ntohs(ins->lval);
        break;
    case OP_HLT :
        vm->halted = 1;
        return VM_HALTED;
    case OP_SYSCALL :
        vm_syscall(vm);
        break;
    case OP_NOP :
        break;
    default :
        // on a bad instruction, reset IP
        vm->regs[REG_IP] -= 4;
        vm->halted = 1;
        return VM_BAD_INSTRUCTION;
    }
    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x60, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x24(%rax)
je 0x5c52
movl $0x1, -0x4(%rbp)
jmp 0x65f3
movq -0x10(%rbp), %rcx
movq (%rcx), %rax
movzwl 0x16(%rcx), %ecx
addq %rcx, %rax
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rax
movw 0x16(%rax), %cx
addw $0x4, %cx
movw %cx, 0x16(%rax)
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
addl $-0x10, %eax
movl %eax, %ecx
movq %rcx, -0x28(%rbp)
subl $0x80, %eax
ja 0x65c9
movq -0x28(%rbp), %rax
leaq 0x1b22(%rip), %rcx      # 0x77bc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x3(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
addl %ecx, %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x3(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
subl %ecx, %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x3(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
imull %ecx, %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x3(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
cltd
idivl %ecx
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x3(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
cltd
idivl %ecx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x3(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
andl %ecx, %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x3(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
orl %ecx, %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x3(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
xorl %ecx, %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %esi
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edx
addl %esi, %edx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %esi
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edx
subl %esi, %edx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %esi
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edx
imull %esi, %edx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %esi
movq -0x10(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
cltd
idivl %esi
movl %eax, %edx
movq -0x30(%rbp), %rax
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %esi
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
cltd
idivl %esi
movq -0x38(%rbp), %rax
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %esi
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edx
andl %esi, %edx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %esi
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edx
orl %esi, %edx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %esi
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edx
xorl %esi, %edx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %edx
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x16(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
cmpl $0x0, 0x20(%rax)
jne 0x6053
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %edx
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x16(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
cmpl $0x0, 0x20(%rax)
je 0x6080
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %edx
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x16(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
cmpl $0x0, 0x20(%rax)
jge 0x60ad
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %edx
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x16(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
cmpl $0x0, 0x20(%rax)
jg 0x60da
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %edx
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x16(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
cmpl $0x0, 0x20(%rax)
jle 0x6107
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %edx
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x16(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
cmpl $0x0, 0x20(%rax)
jl 0x6134
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %edx
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x16(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
movzwl 0x1a(%rax), %ecx
subl $0x2, %ecx
movw %cx, 0x1a(%rax)
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %edi
callq 0x1100
movw %ax, -0x1a(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzwl 0x1a(%rcx), %ecx
movw -0x1a(%rbp), %dx
movw %dx, (%rax,%rcx)
movq -0x18(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x27, %eax
jne 0x619c
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movzwl %ax, %edx
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x16(%rax)
jmp 0x61bb
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edx
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x16(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzwl 0x1a(%rcx), %ecx
movw (%rax,%rcx), %ax
movw %ax, -0x1a(%rbp)
movzwl -0x1a(%rbp), %edi
callq 0x1220
movw %ax, %cx
movq -0x10(%rbp), %rax
movw %cx, 0x16(%rax)
movq -0x10(%rbp), %rax
movzwl 0x1a(%rax), %ecx
addl $0x2, %ecx
movw %cx, 0x1a(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movw %ax, %cx
movq -0x40(%rbp), %rax
movzwl %cx, %ecx
movw (%rax,%rcx), %ax
movw %ax, -0x1a(%rbp)
movzwl -0x1a(%rbp), %edi
callq 0x1220
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x2(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
movw (%rax,%rcx), %ax
movw %ax, -0x1a(%rbp)
movzwl -0x1a(%rbp), %edi
callq 0x1220
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x48(%rbp)
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movw %ax, %cx
movq -0x48(%rbp), %rax
movzwl %cx, %ecx
movzbl (%rax,%rcx), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x2(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
movzbl (%rax,%rcx), %eax
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edi
callq 0x1100
movw %ax, -0x1a(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x50(%rbp)
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movw %ax, %cx
movq -0x50(%rbp), %rax
movzwl %cx, %ecx
movw -0x1a(%rbp), %dx
movw %dx, (%rax,%rcx)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edi
callq 0x1100
movw %ax, -0x1a(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rdx
movzbl 0x1(%rdx), %edx
movzwl 0x8(%rcx,%rdx,2), %ecx
movw -0x1a(%rbp), %dx
movw %dx, (%rax,%rcx)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x18(%rbp), %rcx
movzwl 0x2(%rcx), %ecx
movb %dl, (%rax,%rcx)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
andl $0xff, %eax
movb %al, %dl
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movq -0x18(%rbp), %rsi
movzbl 0x1(%rsi), %esi
movzwl 0x8(%rcx,%rsi,2), %ecx
movb %dl, (%rax,%rcx)
jmp 0x65ec
callq 0x1190
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edi
callq 0x1050
movq 0x3ba5(%rip), %rax      # 0x9fd0
movq (%rax), %rdi
callq 0x11f0
jmp 0x65ec
movq -0x10(%rbp), %rax
movzwl 0x1a(%rax), %ecx
subl $0x2, %ecx
movw %cx, 0x1a(%rax)
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %edi
callq 0x1100
movw %ax, -0x1a(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzwl 0x1a(%rcx), %ecx
movw -0x1a(%rbp), %dx
movw %dx, (%rax,%rcx)
jmp 0x65ec
movq -0x10(%rbp), %rax
movzwl 0x1a(%rax), %ecx
subl $0x2, %ecx
movw %cx, 0x1a(%rax)
movq -0x18(%rbp), %rax
movw 0x2(%rax), %ax
movw %ax, -0x1a(%rbp)
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzwl 0x1a(%rcx), %ecx
movw -0x1a(%rbp), %dx
movw %dx, (%rax,%rcx)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq (%rax), %rax
movq -0x10(%rbp), %rcx
movzwl 0x1a(%rcx), %ecx
movw (%rax,%rcx), %ax
movw %ax, -0x1a(%rbp)
movzwl -0x1a(%rbp), %edi
callq 0x1220
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
movq -0x10(%rbp), %rax
movzwl 0x1a(%rax), %ecx
addl $0x2, %ecx
movw %cx, 0x1a(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x2(%rcx), %ecx
movw 0x8(%rax,%rcx,2), %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movw %ax, %dx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movw %dx, 0x8(%rax,%rcx,2)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %ecx
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rdx
movzbl 0x2(%rdx), %edx
movzwl 0x8(%rax,%rdx,2), %eax
subl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x20(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
movq -0x18(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
movzwl 0x8(%rax,%rcx,2), %eax
movl %eax, -0x54(%rbp)
movq -0x18(%rbp), %rax
movzwl 0x2(%rax), %edi
callq 0x1220
movl -0x54(%rbp), %ecx
movzwl %ax, %eax
subl %eax, %ecx
movq -0x10(%rbp), %rax
movl %ecx, 0x20(%rax)
jmp 0x65ec
movq -0x10(%rbp), %rax
movl $0x1, 0x24(%rax)
movl $0x1, -0x4(%rbp)
jmp 0x65f3
movq -0x10(%rbp), %rdi
callq 0x5840
jmp 0x65ec
jmp 0x65ec
movq -0x10(%rbp), %rax
movzwl 0x16(%rax), %ecx
subl $0x4, %ecx
movw %cx, 0x16(%rax)
movq -0x10(%rbp), %rax
movl $0x1, 0x24(%rax)
movl $0x2, -0x4(%rbp)
jmp 0x65f3
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x60, %rsp
popq %rbp
retq
nopl (%rax)