// File: /workspace/github_c_makefile_star2_O0/alexj136[P]minijit/src/icode.c
// Function: ICodeOperation_print
void ICodeOperation_print(ICodeOperation *op) {

    if(op->opc == MOVE) {
        printf("MOVE ");
        reg_print(op->arg1);
        printf(" ");
        reg_print(op->arg2);
        printf("\n");
    }
    else if(op->opc == LOAD) {
        printf("LOAD ");
        reg_print(op->arg1);
        printf(" ");
        reg_print(op->arg2);
        printf("\n");
    }
    else if(op->opc == STORE) {
        printf("STORE ");
        reg_print(op->arg1);
        printf(" ");
        reg_print(op->arg2);
        printf("\n");
    }
    else if (op->opc == ADD) {
        printf("ADD ");
        reg_print(op->arg1);
        printf(" ");
        reg_print(op->arg2);
        printf("\n");
    }
    else if (op->opc == SUB) {
        printf("SUB ");
        reg_print(op->arg1);
        printf(" ");
        reg_print(op->arg2);
        printf("\n");
    }
    else if (op->opc == LOADIMM) {
        printf("LOADIMM %d ", op->arg1);
        reg_print(op->arg2);
        printf("\n");
    }
    else if (op->opc == JUMP) {
        printf("JUMP L%d\n", op->arg1);
    }
    else if (op->opc == JUMPCOND) {
        printf("JUMPCOND L%d ", op->arg1);
        reg_print(op->arg2);
        printf("\n");
    }
    else if (op->opc == JUMPLINK) {
        printf("JUMPLINK L%d\n", op->arg1);
    }
    else if (op->opc == JUMPADDR) {
        printf("JUMPADDR ");
        reg_print(op->arg1);
        printf("\n");
    }
    else if (op->opc == LABEL) {
        printf("--- L%d ---\n", op->arg1);
    }
    else if (op->opc == HALT) {
        printf("HALT\n");
    }
    else {
        ERROR("Invalid Opcode");
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1f70, %rsp           # imm = 0x1F70
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
cmpl $0x0, (%rax)
jne 0x19fef
leaq 0xb533(%rip), %rdi      # 0x254e2
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edi
callq 0x1a350
leaq 0xbd98(%rip), %rdi      # 0x25d61
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x1a350
leaq 0xb563(%rip), %rdi      # 0x25546
movb $0x0, %al
callq 0x60f0
jmp 0x1a343
movq -0x8(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x1a03f
leaq 0xb4e9(%rip), %rdi      # 0x254e8
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edi
callq 0x1a350
leaq 0xbd48(%rip), %rdi      # 0x25d61
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x1a350
leaq 0xb513(%rip), %rdi      # 0x25546
movb $0x0, %al
callq 0x60f0
jmp 0x1a341
movq -0x8(%rbp), %rax
cmpl $0x2, (%rax)
jne 0x1a08f
leaq 0xb49f(%rip), %rdi      # 0x254ee
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edi
callq 0x1a350
leaq 0xbcf8(%rip), %rdi      # 0x25d61
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x1a350
leaq 0xb4c3(%rip), %rdi      # 0x25546
movb $0x0, %al
callq 0x60f0
jmp 0x1a33f
movq -0x8(%rbp), %rax
cmpl $0x3, (%rax)
jne 0x1a0df
leaq 0xb456(%rip), %rdi      # 0x254f5
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edi
callq 0x1a350
leaq 0xbca8(%rip), %rdi      # 0x25d61
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x1a350
leaq 0xb473(%rip), %rdi      # 0x25546
movb $0x0, %al
callq 0x60f0
jmp 0x1a33d
movq -0x8(%rbp), %rax
cmpl $0x4, (%rax)
jne 0x1a12f
leaq 0xb40b(%rip), %rdi      # 0x254fa
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edi
callq 0x1a350
leaq 0xbc58(%rip), %rdi      # 0x25d61
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x1a350
leaq 0xb423(%rip), %rdi      # 0x25546
movb $0x0, %al
callq 0x60f0
jmp 0x1a33b
movq -0x8(%rbp), %rax
cmpl $0x5, (%rax)
jne 0x1a16c
movq -0x8(%rbp), %rax
movl 0x4(%rax), %esi
leaq 0xb3b9(%rip), %rdi      # 0x254ff
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x1a350
leaq 0xb3e6(%rip), %rdi      # 0x25546
movb $0x0, %al
callq 0x60f0
jmp 0x1a339
movq -0x8(%rbp), %rax
cmpl $0x6, (%rax)
jne 0x1a18f
movq -0x8(%rbp), %rax
movl 0x4(%rax), %esi
leaq 0xb388(%rip), %rdi      # 0x2550b
movb $0x0, %al
callq 0x60f0
jmp 0x1a337
movq -0x8(%rbp), %rax
cmpl $0x7, (%rax)
jne 0x1a1cc
movq -0x8(%rbp), %rax
movl 0x4(%rax), %esi
leaq 0xb36f(%rip), %rdi      # 0x25515
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x1a350
leaq 0xb386(%rip), %rdi      # 0x25546
movb $0x0, %al
callq 0x60f0
jmp 0x1a335
movq -0x8(%rbp), %rax
cmpl $0x8, (%rax)
jne 0x1a1ef
movq -0x8(%rbp), %rax
movl 0x4(%rax), %esi
leaq 0xb340(%rip), %rdi      # 0x25523
movb $0x0, %al
callq 0x60f0
jmp 0x1a333
movq -0x8(%rbp), %rax
cmpl $0x9, (%rax)
jne 0x1a225
leaq 0xb332(%rip), %rdi      # 0x25531
movb $0x0, %al
callq 0x60f0
movq -0x8(%rbp), %rax
movl 0x4(%rax), %edi
callq 0x1a350
leaq 0xb32d(%rip), %rdi      # 0x25546
movb $0x0, %al
callq 0x60f0
jmp 0x1a331
movq -0x8(%rbp), %rax
cmpl $0xa, (%rax)
jne 0x1a248
movq -0x8(%rbp), %rax
movl 0x4(%rax), %esi
leaq 0xb2ff(%rip), %rdi      # 0x2553b
movb $0x0, %al
callq 0x60f0
jmp 0x1a32f
movq -0x8(%rbp), %rax
cmpl $0xb, (%rax)
jne 0x1a264
leaq 0xb2f0(%rip), %rdi      # 0x25548
movb $0x0, %al
callq 0x60f0
jmp 0x1a32d
jmp 0x1a266
leaq 0x9d97(%rip), %rdi      # 0x24004
leaq 0xb21e(%rip), %rsi      # 0x25492
movl $0x5c, %edx
leaq 0xb2ce(%rip), %rcx      # 0x2554e
movb $0x0, %al
callq 0x60f0
leaq 0x9d9e(%rip), %rdi      # 0x2402c
leaq 0xb2ce(%rip), %rsi      # 0x25563
movb $0x0, %al
callq 0x60f0
leaq -0x1f50(%rbp), %rdi
movl $0x3e8, %esi            # imm = 0x3E8
callq 0x60d0
movl %eax, -0x1f54(%rbp)
leaq -0x1f50(%rbp), %rdi
movl -0x1f54(%rbp), %esi
callq 0x60a0
movq %rax, -0x1f60(%rbp)
leaq 0x9d78(%rip), %rdi      # 0x2404b
movb $0x0, %al
callq 0x60f0
movl $0x0, -0x1f64(%rbp)
movl -0x1f64(%rbp), %eax
cmpl -0x1f54(%rbp), %eax
jge 0x1a323
movq -0x1f60(%rbp), %rax
movslq -0x1f64(%rbp), %rcx
movq (%rax,%rcx,8), %rsi
leaq 0x9d21(%rip), %rdi      # 0x2402c
movb $0x0, %al
callq 0x60f0
movl -0x1f64(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1f64(%rbp)
jmp 0x1a2e4
movl $0x1, %edi
callq 0x61a0
jmp 0x1a32f
jmp 0x1a331
jmp 0x1a333
jmp 0x1a335
jmp 0x1a337
jmp 0x1a339
jmp 0x1a33b
jmp 0x1a33d
jmp 0x1a33f
jmp 0x1a341
jmp 0x1a343
addq $0x1f70, %rsp           # imm = 0x1F70
popq %rbp
retq
nopl (%rax)