// File: /workspace/github_c_makefile_star2_O2/ebb[P]chisa/bootstrap1.c
// Function: pass1Toplevel
long pass1Toplevel(long def)
{
    long x8, x7, x6, x5, blks, xfer, stmts, x4, x3, forms, defines, expr, blk, funcArgs, f, x2, consArgs, c, x1, constant, x;
    goto L1;
L1:
    switch (runtime_class(def)) {
    case CLASS_HiDefineVar:
        x = prim_fetch(def, runtime_makeNumber(0));
        constant = prim_fetch(def, runtime_makeNumber(1));
        goto L2;
    case CLASS_HiDefineCons:
        c = prim_fetch(def, runtime_makeNumber(0));
        consArgs = prim_fetch(def, runtime_makeNumber(1));
        goto L3;
    case CLASS_HiDefineFunc:
        f = prim_fetch(def, runtime_makeNumber(0));
        funcArgs = prim_fetch(def, runtime_makeNumber(1));
        blk = prim_fetch(def, runtime_makeNumber(2));
        goto L4;
    default:
        runtime_matchFailure(__LINE__);
    }
L2:
    x1 = FiDefineVar(x, constant);
    return x1;
L3:
    x2 = FiDefineCons(c, consArgs);
    return x2;
L4:
    switch (runtime_class(blk)) {
    case CLASS_HiBlock:
        expr = prim_fetch(blk, runtime_makeNumber(0));
        defines = prim_fetch(blk, runtime_makeNumber(1));
        goto L5;
    default:
        runtime_matchFailure(__LINE__);
    }
L5:
    switch (runtime_class(expr)) {
    case CLASS_HiBegin:
        forms = prim_fetch(expr, runtime_makeNumber(0));
        goto L6;
    default:
        runtime_matchFailure(__LINE__);
    }
L6:
    x3 = P1TailCont();
    x4 = pass1Begin(forms, x3);
    goto L7;
L7:
    switch (runtime_class(x4)) {
    case CLASS_Triple:
        stmts = prim_fetch(x4, runtime_makeNumber(0));
        xfer = prim_fetch(x4, runtime_makeNumber(1));
        blks = prim_fetch(x4, runtime_makeNumber(2));
        goto L8;
    default:
        runtime_matchFailure(__LINE__);
    }
L8:
    x5 = prim_genLabel();
    x6 = FiBlock(x5, nil, stmts, xfer);
    x7 = prim_cons(x6, blks);
    x8 = FiDefineFunc(f, funcArgs, x7);
    return x8;
}

// Assembly:
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
movq %rdi, %r15
callq 0x3afb
cmpw $0x7, %ax
je 0x13f8
movzwl %ax, %eax
cmpl $0x6, %eax
jne 0x1424
xorl %edi, %edi
callq 0x3b81
movq %r15, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %rbx
pushq $0x1
popq %rdi
callq 0x3b81
movq %r15, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %r14
pushq $0x2
popq %rdi
callq 0x3b81
movq %r15, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %r12
movq %rax, %rdi
callq 0x3afb
cmpw $0xb, %ax
jne 0x146c
xorl %edi, %edi
callq 0x3b81
movq %r12, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %r15
pushq $0x1
popq %rdi
callq 0x3b81
movq %r12, %rdi
movq %rax, %rsi
callq 0x3b22
jmp 0x1476
xorl %edi, %edi
callq 0x3b81
movq %r15, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %rbx
pushq $0x1
popq %rdi
callq 0x3b81
movq %r15, %rdi
movq %rax, %rsi
callq 0x3b22
pushq $0x14
jmp 0x1457
cmpl $0x5, %eax
jne 0x1555
xorl %edi, %edi
callq 0x3b81
movq %r15, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %rbx
pushq $0x1
popq %rdi
callq 0x3b81
movq %r15, %rdi
movq %rax, %rsi
callq 0x3b22
pushq $0x12
popq %rdi
movq %rbx, %rsi
movq %rax, %rdx
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x3cbd
movl $0xa9, %edi
callq 0x3e37
movq %r15, %rdi
callq 0x3afb
cmpw $0xa, %ax
jne 0x149b
xorl %edi, %edi
callq 0x3b81
movq %r15, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %r15
jmp 0x14a5
movl $0xb1, %edi
callq 0x3e37
callq 0x12bc
movq %r15, %rdi
movq %rax, %rsi
callq 0x155f
movq %rax, %r12
movq %rax, %rdi
callq 0x3afb
cmpw $0x20, %ax
jne 0x1509
xorl %edi, %edi
callq 0x3b81
movq %r12, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %r15
pushq $0x1
popq %rdi
callq 0x3b81
movq %r12, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %r13
pushq $0x2
popq %rdi
callq 0x3b81
movq %r12, %rdi
movq %rax, %rsi
callq 0x3b22
movq %rax, %r12
jmp 0x1513
movl $0xbf, %edi
callq 0x3e37
callq 0x3ec9
leaq 0x25d09(%rip), %rcx     # 0x27228
movq (%rcx), %rsi
movq %rax, %rdi
movq %r15, %rdx
movq %r13, %rcx
callq 0x1743
movq %rax, %rdi
movq %r12, %rsi
callq 0x3e73
pushq $0x13
popq %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq %rax, %rcx
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
jmp 0x3d2d
movl $0x9a, %edi
callq 0x3e37