LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_mulb_imm8_r0_to_r3
void vm_insn_mulb_imm8_r0_to_r3(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_MULB_IMM8_R0_TO_R3);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r0->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r0->val)
                  : vm->regs->gp->r0->val;

  short res = op1 * op2;

  vm->regs->gp->r3->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r3->val =
      !vm->regs->gp->r3->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x5b, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x3fff
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x400e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x4051
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x4065
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
imull %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x40c1
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x40d8
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_divb_imm8_r0_to_r0
void vm_insn_divb_imm8_r0_to_r0(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_DIVB_IMM8_R0_TO_R0);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r0->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r0->val)
                  : vm->regs->gp->r0->val;

  if (!op2) {
    fprintf(stderr, "Division by zero.\n");
    return;
  }

  short res = op1 / op2;

  vm->regs->gp->r0->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r0->val =
      !vm->regs->gp->r0->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x5c, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x415f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x416e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x41b1
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x41c5
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
cmpw $0x0, -0xc(%rbp)
jne 0x41f0
movq 0x8e1e(%rip), %rax      # 0xcff8
movq (%rax), %rdi
leaq 0x5e20(%rip), %rsi      # 0xa004
movb $0x0, %al
callq 0x10b0
jmp 0x4271
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
cltd
idivl %ecx
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x4243
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x425a
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_divb_imm8_r0_to_r1
void vm_insn_divb_imm8_r0_to_r1(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_DIVB_IMM8_R0_TO_R1);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r0->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r0->val)
                  : vm->regs->gp->r0->val;

  if (!op2) {
    fprintf(stderr, "Division by zero.\n");
    return;
  }

  short res = op1 / op2;

  vm->regs->gp->r1->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r1->val =
      !vm->regs->gp->r1->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x5d, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x42df
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x42ee
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x4331
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x4345
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
cmpw $0x0, -0xc(%rbp)
jne 0x4370
movq 0x8c9e(%rip), %rax      # 0xcff8
movq (%rax), %rdi
leaq 0x5ca0(%rip), %rsi      # 0xa004
movb $0x0, %al
callq 0x10b0
jmp 0x43f4
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
cltd
idivl %ecx
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x43c5
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x43dc
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_divb_imm8_r0_to_r2
void vm_insn_divb_imm8_r0_to_r2(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_DIVB_IMM8_R0_TO_R2);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r0->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r0->val)
                  : vm->regs->gp->r0->val;

  if (!op2) {
    fprintf(stderr, "Division by zero.\n");
    return;
  }

  short res = op1 / op2;

  vm->regs->gp->r2->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r2->val =
      !vm->regs->gp->r2->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x5e, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x445f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x446e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x44b1
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x44c5
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
cmpw $0x0, -0xc(%rbp)
jne 0x44f0
movq 0x8b1e(%rip), %rax      # 0xcff8
movq (%rax), %rdi
leaq 0x5b20(%rip), %rsi      # 0xa004
movb $0x0, %al
callq 0x10b0
jmp 0x4574
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
cltd
idivl %ecx
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x4545
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x455c
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_divb_imm8_r0_to_r3
void vm_insn_divb_imm8_r0_to_r3(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_DIVB_IMM8_R0_TO_R3);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r0->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r0->val)
                  : vm->regs->gp->r0->val;

  if (!op2) {
    fprintf(stderr, "Division by zero.\n");
    return;
  }

  short res = op1 / op2;

  vm->regs->gp->r3->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r3->val =
      !vm->regs->gp->r3->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x5f, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x45df
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x45ee
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x4631
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x4645
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
cmpw $0x0, -0xc(%rbp)
jne 0x4670
movq 0x899e(%rip), %rax      # 0xcff8
movq (%rax), %rdi
leaq 0x59a0(%rip), %rsi      # 0xa004
movb $0x0, %al
callq 0x10b0
jmp 0x46f4
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
cltd
idivl %ecx
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x46c5
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x46dc
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_addb_imm8_r1_to_r0
void vm_insn_addb_imm8_r1_to_r0(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_ADDB_IMM8_R1_TO_R0);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  short res = op1 + op2;

  vm->regs->gp->r0->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r0->val =
      !vm->regs->gp->r0->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x60, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x475f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x476e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x47b3
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x47c8
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x4821
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4838
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_addb_imm8_r1_to_r1
void vm_insn_addb_imm8_r1_to_r1(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_ADDB_IMM8_R1_TO_R1);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  short res = op1 + op2;

  vm->regs->gp->r1->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r1->val =
      !vm->regs->gp->r1->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x61, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x48bf
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x48ce
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x4913
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x4928
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x4983
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x499a
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_addb_imm8_r1_to_r2
void vm_insn_addb_imm8_r1_to_r2(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_ADDB_IMM8_R1_TO_R2);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  short res = op1 + op2;

  vm->regs->gp->r2->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r2->val =
      !vm->regs->gp->r2->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x62, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x4a1f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x4a2e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x4a73
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x4a88
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x4ae3
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4afa
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_addb_imm8_r1_to_r3
void vm_insn_addb_imm8_r1_to_r3(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_ADDB_IMM8_R1_TO_R3);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  short res = op1 + op2;

  vm->regs->gp->r3->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r3->val =
      !vm->regs->gp->r3->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x63, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x4b7f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x4b8e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x4bd3
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x4be8
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x4c43
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4c5a
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_subb_imm8_r1_to_r1
void vm_insn_subb_imm8_r1_to_r1(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_SUBB_IMM8_R1_TO_R1);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  short res = op1 - op2;

  vm->regs->gp->r1->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r1->val =
      !vm->regs->gp->r1->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x65, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x4e3f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x4e4e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x4e93
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x4ea8
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x4f03
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x4f1a
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_subb_imm8_r1_to_r3
void vm_insn_subb_imm8_r1_to_r3(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_SUBB_IMM8_R1_TO_R3);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  short res = op1 - op2;

  vm->regs->gp->r3->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r3->val =
      !vm->regs->gp->r3->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x67, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x50ff
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x510e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x5153
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x5168
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x51c3
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x51da
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_mulb_imm8_r1_to_r1
void vm_insn_mulb_imm8_r1_to_r1(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_MULB_IMM8_R1_TO_R1);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  short res = op1 * op2;

  vm->regs->gp->r1->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r1->val =
      !vm->regs->gp->r1->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x69, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x53bf
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x53ce
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x5413
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x5428
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
imull %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x5484
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x549b
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_mulb_imm8_r1_to_r3
void vm_insn_mulb_imm8_r1_to_r3(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_MULB_IMM8_R1_TO_R3);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  short res = op1 * op2;

  vm->regs->gp->r3->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r3->val =
      !vm->regs->gp->r3->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x6b, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x567f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x568e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x56d3
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x56e8
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
imull %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x5744
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x575b
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_divb_imm8_r1_to_r1
void vm_insn_divb_imm8_r1_to_r1(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_DIVB_IMM8_R1_TO_R1);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  if (!op2) {
    fprintf(stderr, "Division by zero.\n");
    return;
  }

  short res = op1 / op2;

  vm->regs->gp->r1->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r1->val =
      !vm->regs->gp->r1->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x6d, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x595f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x596e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x59b3
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x59c8
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
cmpw $0x0, -0xc(%rbp)
jne 0x59f3
movq 0x761b(%rip), %rax      # 0xcff8
movq (%rax), %rdi
leaq 0x461d(%rip), %rsi      # 0xa004
movb $0x0, %al
callq 0x10b0
jmp 0x5a77
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
cltd
idivl %ecx
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x5a48
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x5a5f
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_divb_imm8_r1_to_r3
void vm_insn_divb_imm8_r1_to_r3(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_DIVB_IMM8_R1_TO_R3);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r1->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r1->val)
                  : vm->regs->gp->r1->val;

  if (!op2) {
    fprintf(stderr, "Division by zero.\n");
    return;
  }

  short res = op1 / op2;

  vm->regs->gp->r3->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r3->val =
      !vm->regs->gp->r3->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x6f, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x5c5f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x5c6e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x5cb3
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x5cc8
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
cmpw $0x0, -0xc(%rbp)
jne 0x5cf3
movq 0x731b(%rip), %rax      # 0xcff8
movq (%rax), %rdi
leaq 0x431d(%rip), %rsi      # 0xa004
movb $0x0, %al
callq 0x10b0
jmp 0x5d77
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
cltd
idivl %ecx
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x5d48
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x5d5f
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_addb_imm8_r2_to_r0
void vm_insn_addb_imm8_r2_to_r0(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_ADDB_IMM8_R2_TO_R0);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r2->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r2->val)
                  : vm->regs->gp->r2->val;

  short res = op1 + op2;

  vm->regs->gp->r0->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r0->val =
      !vm->regs->gp->r0->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x70, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x5ddf
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x5dee
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x5e33
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x5e48
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x5ea1
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x5eb8
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_addb_imm8_r2_to_r3
void vm_insn_addb_imm8_r2_to_r3(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_ADDB_IMM8_R2_TO_R3);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r2->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r2->val)
                  : vm->regs->gp->r2->val;

  short res = op1 + op2;

  vm->regs->gp->r3->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r3->val =
      !vm->regs->gp->r3->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x73, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x61ff
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x620e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x6253
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x6268
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
addl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x62c3
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x62da
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x18(%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopl (%rax,%rax)
// File: /workspace/github_c_makefile_star2_O0/plvhx[P]dummy-vm/src/insn.c
// Function: vm_insn_subb_imm8_r2_to_r0
void vm_insn_subb_imm8_r2_to_r0(vm_t *vm) {
  vm->state = vm_state_insert(vm->state, VM_INSN_SUBB_IMM8_R2_TO_R0);

  short op1 = vm_insn_read_byte(vm) == 0xff
                  ? VM_NEGATE_BYTE(vm_insn_read_byte(vm))
                  : vm_insn_read_byte(vm);

  short op2 = vm->regs->gp->r2->is_negative
                  ? VM_NEGATE_BYTE(vm->regs->gp->r2->val)
                  : vm->regs->gp->r2->val;

  short res = op1 - op2;

  vm->regs->gp->r0->is_negative = ((short)res < 0) ? 1 : 0;
  vm->regs->gp->r0->val =
      !vm->regs->gp->r0->is_negative
          ? VM_ALIGN_TO_BYTE((unsigned short)res)
          : 0xff - (VM_ALIGN_TO_BYTE((unsigned short)res) - 1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl $0x74, %esi
callq 0x8080
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
cmpl $0xff, %eax
jne 0x635f
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x14(%rbp)
jmp 0x636e
movq -0x8(%rbp), %rdi
callq 0x1290
movzwl %ax, %eax
movl %eax, -0x14(%rbp)
movl -0x14(%rbp), %eax
movw %ax, -0xa(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x4(%rax)
je 0x63b3
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movzwl (%rax), %ecx
andl $0xff, %ecx
movl $0xff, %eax
subl %ecx, %eax
subl $0xff, %eax
movl %eax, -0x18(%rbp)
jmp 0x63c8
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x10(%rax), %rax
movzwl (%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movw %ax, -0xc(%rbp)
movswl -0xa(%rbp), %eax
movswl -0xc(%rbp), %ecx
subl %ecx, %eax
movw %ax, -0xe(%rbp)
movswl -0xe(%rbp), %edx
xorl %ecx, %ecx
movl $0x1, %eax
cmpl $0x0, %edx
cmovll %eax, %ecx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movl %ecx, 0x4(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
cmpl $0x0, 0x4(%rax)
jne 0x6421
movzwl -0xe(%rbp), %eax
andl $0xff, %eax
movl %eax, -0x1c(%rbp)
jmp 0x6438
movzwl -0xe(%rbp), %ecx
andl $0xff, %ecx
subl $0x1, %ecx
movl $0xff, %eax
subl %ecx, %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
movw %ax, %cx
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq (%rax), %rax
movw %cx, (%rax)
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)