// File: /workspace/github_c_makefile_star2_O0/tyabu12[P]pl0compiler/codegen.c
// Function: printCode
void printCode(FILE *fp, int i, char nl) { /* 命令語の印字 */
    int flag;
    switch (code[i].opCode) {
    case lit: fprintf(fp, "lit"); flag=1; break;
    case opr: fprintf(fp, "opr"); flag=3; break;
    case lod: fprintf(fp, "lod"); flag=2; break;
    case sto: fprintf(fp, "sto"); flag=2; break;
    case cal: fprintf(fp, "cal"); flag=2; break;
    case ret: fprintf(fp, "ret"); flag=2; break;
    case ict: fprintf(fp, "ict"); flag=1; break;
    case jmp: fprintf(fp, "jmp"); flag=1; break;
    case jpc: fprintf(fp, "jpc"); flag=1; break;
    }
    switch (flag) {
    case 1:
        fprintf(fp, ",%d", code[i].u.value);
        break;
    case 2:
        fprintf(fp, ",%d", code[i].u.addr.level);
        fprintf(fp, ",%d", code[i].u.addr.addr);
        break;
    case 3:
        switch (code[i].u.optr) {
        case neg: fprintf(fp, ",neg"); break;
        case add: fprintf(fp, ",add"); break;
        case sub: fprintf(fp, ",sub"); break;
        case mul: fprintf(fp, ",mul"); break;
        case div: fprintf(fp, ",div"); break;
        case odd: fprintf(fp, ",odd"); break;
        case eq: fprintf(fp, ",eq"); break;
        case ls: fprintf(fp, ",ls"); break;
        case gr: fprintf(fp, ",gr"); break;
        case neq: fprintf(fp, ",neq"); break;
        case lseq: fprintf(fp, ",lseq"); break;
        case greq: fprintf(fp, ",greq"); break;
        case rd: fprintf(fp, ",rd"); break;
        case wrt: fprintf(fp, ",wrt"); break;
        case wrl: fprintf(fp, ",wrl"); break;
        }
    }
    fprintf(fp, "%c", nl);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movb %dl, %al
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movb %al, -0xd(%rbp)
movslq -0xc(%rbp), %rax
leaq (%rax,%rax,2), %rcx
leaq 0x6dbd(%rip), %rax      # 0x92e0
movl (%rax,%rcx,4), %eax
movq %rax, -0x20(%rbp)
subq $0x8, %rax
ja 0x2645
movq -0x20(%rbp), %rax
leaq 0x3ac5(%rip), %rcx      # 0x6004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
leaq 0x3bde(%rip), %rsi      # 0x6131
movb $0x0, %al
callq 0x20d0
movl $0x1, -0x14(%rbp)
jmp 0x2645
movq -0x8(%rbp), %rdi
leaq 0x3bc4(%rip), %rsi      # 0x6135
movb $0x0, %al
callq 0x20d0
movl $0x3, -0x14(%rbp)
jmp 0x2645
movq -0x8(%rbp), %rdi
leaq 0x3baa(%rip), %rsi      # 0x6139
movb $0x0, %al
callq 0x20d0
movl $0x2, -0x14(%rbp)
jmp 0x2645
movq -0x8(%rbp), %rdi
leaq 0x3b90(%rip), %rsi      # 0x613d
movb $0x0, %al
callq 0x20d0
movl $0x2, -0x14(%rbp)
jmp 0x2645
movq -0x8(%rbp), %rdi
leaq 0x3b76(%rip), %rsi      # 0x6141
movb $0x0, %al
callq 0x20d0
movl $0x2, -0x14(%rbp)
jmp 0x2645
movq -0x8(%rbp), %rdi
leaq 0x3b5f(%rip), %rsi      # 0x6145
movb $0x0, %al
callq 0x20d0
movl $0x2, -0x14(%rbp)
jmp 0x2645
movq -0x8(%rbp), %rdi
leaq 0x3b48(%rip), %rsi      # 0x6149
movb $0x0, %al
callq 0x20d0
movl $0x1, -0x14(%rbp)
jmp 0x2645
movq -0x8(%rbp), %rdi
leaq 0x3b31(%rip), %rsi      # 0x614d
movb $0x0, %al
callq 0x20d0
movl $0x1, -0x14(%rbp)
jmp 0x2645
movq -0x8(%rbp), %rdi
leaq 0x3b1a(%rip), %rsi      # 0x6151
movb $0x0, %al
callq 0x20d0
movl $0x1, -0x14(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x24(%rbp)
subl $0x1, %eax
je 0x266d
jmp 0x2652
movl -0x24(%rbp), %eax
subl $0x2, %eax
je 0x2699
jmp 0x265c
movl -0x24(%rbp), %eax
subl $0x3, %eax
je 0x26ec
jmp 0x2865
movq -0x8(%rbp), %rdi
movslq -0xc(%rbp), %rcx
leaq 0x6c64(%rip), %rax      # 0x92e0
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %edx
leaq 0x3ada(%rip), %rsi      # 0x6167
movb $0x0, %al
callq 0x20d0
jmp 0x2865
movq -0x8(%rbp), %rdi
movslq -0xc(%rbp), %rcx
leaq 0x6c38(%rip), %rax      # 0x92e0
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %edx
leaq 0x3aae(%rip), %rsi      # 0x6167
movb $0x0, %al
callq 0x20d0
movq -0x8(%rbp), %rdi
movslq -0xc(%rbp), %rcx
leaq 0x6c11(%rip), %rax      # 0x92e0
imulq $0xc, %rcx, %rcx
addq %rcx, %rax
movl 0x8(%rax), %edx
leaq 0x3a87(%rip), %rsi      # 0x6167
movb $0x0, %al
callq 0x20d0
jmp 0x2865
movslq -0xc(%rbp), %rax
leaq (%rax,%rax,2), %rcx
leaq 0x6be5(%rip), %rax      # 0x92e0
movl 0x4(%rax,%rcx,4), %eax
movq %rax, -0x30(%rbp)
subq $0xe, %rax
ja 0x2863
movq -0x30(%rbp), %rax
leaq 0x3910(%rip), %rcx      # 0x6028
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x8(%rbp), %rdi
leaq 0x3b49(%rip), %rsi      # 0x6275
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3b37(%rip), %rsi      # 0x627a
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3b25(%rip), %rsi      # 0x627f
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3b13(%rip), %rsi      # 0x6284
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3b01(%rip), %rsi      # 0x6289
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3aef(%rip), %rsi      # 0x628e
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3add(%rip), %rsi      # 0x6293
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3aca(%rip), %rsi      # 0x6297
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3ab7(%rip), %rsi      # 0x629b
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3aa7(%rip), %rsi      # 0x629f
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3a98(%rip), %rsi      # 0x62a4
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3a8a(%rip), %rsi      # 0x62aa
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3a7c(%rip), %rsi      # 0x62b0
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3a6c(%rip), %rsi      # 0x62b4
movb $0x0, %al
callq 0x20d0
jmp 0x2863
movq -0x8(%rbp), %rdi
leaq 0x3a5d(%rip), %rsi      # 0x62b9
movb $0x0, %al
callq 0x20d0
jmp 0x2865
movq -0x8(%rbp), %rdi
movsbl -0xd(%rbp), %edx
leaq 0x3a4a(%rip), %rsi      # 0x62be
movb $0x0, %al
callq 0x20d0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)