// File: /workspace/github_c_makefile_star2_O3/ryvnf[P]czc/parse.c
// Function: parse_extern_def
static struct ast *parse_extern_def(struct parse *parse)
{
    struct loc *line = get_linenr(parse);
    switch (peek_tok(parse)->type) {
        case IDENT_TOK:
            return parse_decl_or_def(parse);
	case TYPE_TOK:
	    return parse_type_def(parse);
	case DEFINE_TOK:
	    return parse_alias_def(parse);
        case INCLUDE_TOK:
            return parse_include(parse);
    }

    return NULL;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rcx
movslq 0x14(%rdi), %rax
movq %rax, %rdx
shlq $0x5, %rdx
movl (%rcx,%rdx), %esi
xorl %r14d, %r14d
cmpl $0x126, %esi            # imm = 0x126
jg 0x9619
cmpl $0x120, %esi            # imm = 0x120
je 0x96a2
cmpl $0x123, %esi            # imm = 0x123
jne 0x97d4
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x99f0
cmpl $0x127, %esi            # imm = 0x127
je 0x9759
cmpl $0x12e, %esi            # imm = 0x12E
jne 0x97d4
leal 0x1(%rax), %esi
movl %esi, 0x14(%rbx)
cmpl $0x11e, 0x20(%rdx,%rcx) # imm = 0x11E
jne 0x97d1
leaq 0x2(%rax), %rsi
movl %esi, 0x14(%rbx)
shlq $0x5, %rsi
cmpl $0x3b, (%rcx,%rsi)
jne 0x97d1
addq %rdx, %rcx
addq $0x20, %rcx
movq 0x10(%rcx), %r14
addl $0x3, %eax
movl %eax, 0x14(%rbx)
movq 0x8(%rbx), %rdi
movq %r14, %rsi
callq 0xb18b
testq %rax, %rax
je 0x97e0
movq (%rbx), %rax
movslq 0x14(%rbx), %rcx
shlq $0x5, %rcx
movq 0x8(%rax,%rcx), %rdi
movl $0x7, %esi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x245c
movq 0x8(%rcx,%rdx), %r15
incl %eax
movl %eax, 0x14(%rbx)
movq 0x10(%rcx,%rdx), %rdx
movq %r15, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x247d
movq %rax, %r14
movq (%rbx), %rax
movslq 0x14(%rbx), %rcx
shlq $0x5, %rcx
movl (%rax,%rcx), %ebp
movq %rbx, %rdi
callq 0x9b22
testq %rax, %rax
je 0x97c9
movl $0x2, %edx
movq %r15, %rdi
movl $0x4000, %esi           # imm = 0x4000
movq %r14, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x2552
movq %rax, %r14
movslq 0x14(%rbx), %rax
movq %rax, %rcx
shlq $0x5, %rcx
movq (%rbx), %rdx
movl (%rdx,%rcx), %ecx
cmpl $0x28, %ebp
jne 0x9769
cmpl $0x7b, %ecx
jne 0x9769
leaq 0x102a(%rip), %rdx      # 0xa749
movq %rbx, %rdi
movl $0x7b, %esi
movl $0x7d, %ecx
movl $0x1, %r8d
callq 0x9cd5
movl $0x2, %edx
movq %r15, %rdi
movl $0x4001, %esi           # imm = 0x4001
movq %r14, %rcx
movq %rax, %r8
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2552
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9a7b
cmpl $0x3d, %ecx
je 0x977a
cmpl $0x3b, %ecx
jne 0x977f
testq %r14, %r14
jne 0x97c2
jmp 0x97d1
incl %eax
movl %eax, 0x14(%rbx)
movq %rbx, %rdi
callq 0x9ca1
testq %rax, %rax
je 0x97d1
movl $0x2, %edx
movq %r15, %rdi
movl $0x4220, %esi           # imm = 0x4220
movq %r14, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x2552
testq %rax, %rax
je 0x97d1
movq %rax, %r14
movq (%rbx), %rcx
movslq 0x14(%rbx), %rax
movq %rax, %rdx
shlq $0x5, %rdx
cmpl $0x3b, (%rcx,%rdx)
jne 0x97c9
incl %eax
movl %eax, 0x14(%rbx)
jmp 0x97d4
movq %r14, %rdi
callq 0x26ef
xorl %r14d, %r14d
movq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x51c4(%rip), %rsi      # 0xe9ab
movq %r14, %rdi
callq 0x21c0
testq %rax, %rax
je 0x9829
movq %rax, %r15
movq 0x8(%rbx), %rsi
movl 0x18(%rbx), %edx
incl %edx
movq %r14, %rdi
callq 0x9864
movq %rax, %r12
movq 0x8(%rbx), %rdi
movl $0x1234, %edx           # imm = 0x1234
movq %r14, %rsi
callq 0xb210
movq %r15, %rdi
callq 0x2090
movq %r12, %rax
jmp 0x97d7
movq (%rbx), %rax
movslq 0x14(%rbx), %rcx
shlq $0x5, %rcx
movq 0x8(%rax,%rcx), %rdi
callq 0x8c83
movq %rax, %rbx
callq 0x2050
movl (%rax), %edi
callq 0x2230
leaq 0x4f14(%rip), %rsi      # 0xe768
movq %rbx, %rdi
movq %r14, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x4fa1