// File: /workspace/github_c_makefile_star2_O0/tyabu12[P]pl0compiler/compile.c
// Function: funcDecl
void funcDecl() {               /* 関数宣言のコンパイル                 */
    int fIndex;
    if (token.kind==Id) {
        setIdKind(funcId);      /* 印字のための情報のセット             */
        fIndex = enterTfunc(token.u.id, nextCode()); /* 関数名をテーブルに登録 */
                                /* その先頭番地は、まず、次のコードの番地nextCode()とする */
        token = checkGet(nextToken(), Lparen);
        blockBegin(FIRSTADDR);  /* パラメタ名のレベルは関数のブロックと同じ */
        while (1) {
            if (token.kind == Id) { /* パラメタ名がある場合             */
                setIdKind(parId); /* 印字のための情報のセット           */
                enterTpar(token.u.id); /* パラメタ名をテーブルに登録    */
                token = nextToken();
            } else
                break;
            if (token.kind != Comma) { /* 次がコンマならパラメタ名が続く */
                if (token.kind == Id) { /* 次が名前ならコンマを忘れたことに */
                    errorInsert(Comma);
                    continue;
                } else
                    break;
            }
            token = nextToken();
        }
        token = checkGet(token, Rparen); /* 最後は")"のはず             */
        endpar();               /* パラメタ部が終わったことをテーブルに連絡 */
        if (token.kind == Semicolon) {
            errorDelete();
            token = nextToken();
        }
        block(fIndex);          /* ブロックのコンパイル、その関数名のインデックスを渡す */
        token = checkGet(token, Semicolon); /* 最後は";"のはず          */
    } else
        errorMissingId();       /* 関数名がない                         */
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
cmpl $0x20, 0x7486(%rip)     # 0xbf58
jne 0x4cbb
movl $0x1, %edi
callq 0x6020
movb $0x0, %al
callq 0x2250
movl %eax, %esi
leaq 0x7466(%rip), %rdi      # 0xbf58
addq $0x4, %rdi
callq 0x40a0
movl %eax, -0x4(%rbp)
leaq -0x50(%rbp), %rdi
movb $0x0, %al
callq 0x5ba0
movl -0x30(%rbp), %ecx
movq %rsp, %rax
movl %ecx, 0x20(%rax)
movups -0x50(%rbp), %xmm0
movups -0x40(%rbp), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
leaq -0x28(%rbp), %rdi
movl $0x13, %esi
callq 0x5f20
leaq 0x7422(%rip), %rdi      # 0xbf58
leaq -0x28(%rbp), %rsi
movl $0x24, %edx
callq 0x20e0
movl $0x2, %edi
callq 0x3f10
cmpl $0x20, 0x7403(%rip)     # 0xbf58
jne 0x4b93
movl $0x2, %edi
callq 0x6020
leaq 0x73f0(%rip), %rdi      # 0xbf58
addq $0x4, %rdi
callq 0x4140
leaq -0x74(%rbp), %rdi
movb $0x0, %al
callq 0x5ba0
leaq 0x73d5(%rip), %rdi      # 0xbf58
leaq -0x74(%rbp), %rsi
movl $0x24, %edx
callq 0x20e0
jmp 0x4b95
jmp 0x4be0
cmpl $0x1b, 0x73bc(%rip)     # 0xbf58
je 0x4bb5
cmpl $0x20, 0x73b3(%rip)     # 0xbf58
jne 0x4bb3
movl $0x1b, %edi
callq 0x58a0
jmp 0x4b4e
jmp 0x4be0
leaq -0x98(%rbp), %rdi
movb $0x0, %al
callq 0x5ba0
leaq 0x738e(%rip), %rdi      # 0xbf58
leaq -0x98(%rbp), %rsi
movl $0x24, %edx
callq 0x20e0
jmp 0x4b4e
movl 0x7392(%rip), %ecx      # 0xbf78
movq %rsp, %rax
movl %ecx, 0x20(%rax)
movups 0x7375(%rip), %xmm0     # 0xbf68
movups %xmm0, 0x10(%rax)
movups 0x735a(%rip), %xmm0     # 0xbf58
movups %xmm0, (%rax)
leaq -0xbc(%rbp), %rdi
movl $0x14, %esi
callq 0x5f20
leaq 0x733f(%rip), %rdi      # 0xbf58
leaq -0xbc(%rbp), %rsi
movl $0x24, %edx
callq 0x20e0
movb $0x0, %al
callq 0x42b0
cmpl $0x1d, 0x7320(%rip)     # 0xbf58
jne 0x4c67
movb $0x0, %al
callq 0x59f0
leaq -0xe0(%rbp), %rdi
movb $0x0, %al
callq 0x5ba0
leaq 0x7302(%rip), %rdi      # 0xbf58
leaq -0xe0(%rbp), %rsi
movl $0x24, %edx
callq 0x20e0
movl -0x4(%rbp), %edi
callq 0x4740
movl 0x7303(%rip), %ecx      # 0xbf78
movq %rsp, %rax
movl %ecx, 0x20(%rax)
movups 0x72e6(%rip), %xmm0     # 0xbf68
movups %xmm0, 0x10(%rax)
movups 0x72cb(%rip), %xmm0     # 0xbf58
movups %xmm0, (%rax)
leaq -0x104(%rbp), %rdi
movl $0x1d, %esi
callq 0x5f20
leaq 0x72b0(%rip), %rdi      # 0xbf58
leaq -0x104(%rbp), %rsi
movl $0x24, %edx
callq 0x20e0
jmp 0x4cc2
movb $0x0, %al
callq 0x5990
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
nopl (%rax,%rax)