// File: /workspace/github_c_makefile_star2_O1/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 0x9822
cmpl $0x120, %esi            # imm = 0x120
je 0x98ab
cmpl $0x123, %esi            # imm = 0x123
jne 0x99ee
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9c08
cmpl $0x127, %esi            # imm = 0x127
je 0x995d
cmpl $0x12e, %esi            # imm = 0x12E
jne 0x99ee
leal 0x1(%rax), %esi
movl %esi, 0x14(%rbx)
cmpl $0x11e, 0x20(%rdx,%rcx) # imm = 0x11E
jne 0x99eb
leaq 0x2(%rax), %rsi
movl %esi, 0x14(%rbx)
shlq $0x5, %rsi
cmpl $0x3b, (%rcx,%rsi)
jne 0x99eb
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 0xb3ff
testq %rax, %rax
je 0x99fa
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 0x243c
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 0x245d
movq %rax, %r14
movq (%rbx), %rax
movslq 0x14(%rbx), %rcx
shlq $0x5, %rcx
movl (%rax,%rcx), %ebp
movq %rbx, %rdi
callq 0x9d3a
testq %rax, %rax
je 0x99e3
movl $0x2, %edx
movq %r15, %rdi
movl $0x4000, %esi           # imm = 0x4000
movq %r14, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x2532
movq %rax, %r14
cmpl $0x28, %ebp
jne 0x996d
movq (%rbx), %rax
movslq 0x14(%rbx), %rcx
shlq $0x5, %rcx
cmpl $0x7b, (%rax,%rcx)
jne 0x996d
leaq 0x1070(%rip), %rdx      # 0xa993
movq %rbx, %rdi
movl $0x7b, %esi
movl $0x7d, %ecx
movl $0x1, %r8d
callq 0x9efe
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 0x2532
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x9c93
movq (%rbx), %rcx
movslq 0x14(%rbx), %rax
movq %rax, %rdx
shlq $0x5, %rdx
movl (%rcx,%rdx), %ecx
cmpl $0x3d, %ecx
je 0x9994
cmpl $0x3b, %ecx
jne 0x9999
testq %r14, %r14
je 0x99eb
incl %eax
movl %eax, 0x14(%rbx)
jmp 0x99ee
incl %eax
movl %eax, 0x14(%rbx)
movq %rbx, %rdi
callq 0x9eca
testq %rax, %rax
je 0x99eb
movl $0x2, %edx
movq %r15, %rdi
movl $0x4220, %esi           # imm = 0x4220
movq %r14, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x2532
testq %rax, %rax
je 0x99eb
movq %rax, %r14
movq (%rbx), %rcx
movslq 0x14(%rbx), %rax
movq %rax, %rdx
shlq $0x5, %rdx
cmpl $0x3b, (%rcx,%rdx)
jne 0x99e3
incl %eax
movl %eax, 0x14(%rbx)
jmp 0x99ee
movq %r14, %rdi
callq 0x26cf
xorl %r14d, %r14d
movq %r14, %rax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4fba(%rip), %rsi      # 0xe9bb
movq %r14, %rdi
callq 0x21c0
testq %rax, %rax
je 0x9a43
movq %rax, %r15
movq 0x8(%rbx), %rsi
movl 0x18(%rbx), %edx
incl %edx
movq %r14, %rdi
callq 0x9a7e
movq %rax, %r12
movq 0x8(%rbx), %rdi
movl $0x1234, %edx           # imm = 0x1234
movq %r14, %rsi
callq 0xb484
movq %r15, %rdi
callq 0x2090
movq %r12, %rax
jmp 0x99f1
movq (%rbx), %rax
movslq 0x14(%rbx), %rcx
shlq $0x5, %rcx
movq 0x8(%rax,%rcx), %rdi
callq 0x8dff
movq %rax, %rbx
callq 0x2050
movl (%rax), %edi
callq 0x2230
leaq 0x4d0a(%rip), %rsi      # 0xe778
movq %rbx, %rdi
movq %r14, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x5011