// File: /workspace/github_c_makefile_star2_O2/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
cmpl $0x12e, %esi            # imm = 0x12E
je 0x88cc
cmpl $0x123, %esi            # imm = 0x123
je 0x88ac
cmpl $0x127, %esi            # imm = 0x127
je 0x88bc
cmpl $0x120, %esi            # imm = 0x120
jne 0x893b
movq 0x8(%rcx,%rdx), %r14
incl %eax
movl %eax, 0x14(%rbx)
movq 0x10(%rcx,%rdx), %rdx
movq %r14, %rdi
movl $0x1000, %esi           # imm = 0x1000
callq 0x238b
movq %rax, %r15
movq (%rbx), %rax
movslq 0x14(%rbx), %rcx
shlq $0x5, %rcx
movl (%rax,%rcx), %ebp
movq %rbx, %rdi
callq 0x8cc9
testq %rax, %rax
je 0x8933
pushq $0x2
popq %rdx
movq %r14, %rdi
movl $0x4000, %esi           # imm = 0x4000
movq %r15, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x2458
movq %rax, %r15
movslq 0x14(%rbx), %rax
movq %rax, %rcx
shlq $0x5, %rcx
movq (%rbx), %rdx
movl (%rdx,%rcx), %ecx
cmpl $0x28, %ebp
jne 0x8946
cmpl $0x7b, %ecx
jne 0x8946
movq %rbx, %rdi
callq 0x8e1b
pushq $0x2
popq %rdx
movq %r14, %rdi
movl $0x4001, %esi           # imm = 0x4001
movq %r15, %rcx
movq %rax, %r8
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x2458
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8be0
movq %rbx, %rdi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8c51
leal 0x1(%rax), %esi
movl %esi, 0x14(%rbx)
cmpl $0x11e, 0x20(%rdx,%rcx) # imm = 0x11E
jne 0x893b
leaq 0x2(%rax), %rsi
movl %esi, 0x14(%rbx)
shlq $0x5, %rsi
cmpl $0x3b, (%rcx,%rsi)
jne 0x893b
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 0xa103
testq %rax, %rax
je 0x8995
movq (%rbx), %rax
movslq 0x14(%rbx), %rcx
shlq $0x5, %rcx
movq 0x8(%rax,%rcx), %rdi
pushq $0x7
popq %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x236c
movq %r15, %rdi
callq 0x25d9
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
cmpl $0x3d, %ecx
je 0x8958
cmpl $0x3b, %ecx
jne 0x895d
movq %rbx, %rdi
movq %r15, %rsi
jmp 0x8988
incl %eax
movl %eax, 0x14(%rbx)
movq %rbx, %rdi
callq 0x8e63
testq %rax, %rax
je 0x893b
pushq $0x2
popq %rdx
movq %r14, %rdi
movl $0x4220, %esi           # imm = 0x4220
movq %r15, %rcx
movq %rax, %r8
xorl %eax, %eax
callq 0x2458
movq %rbx, %rdi
movq %rax, %rsi
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x8e2e
leaq 0x400f(%rip), %rsi      # 0xc9ab
movq %r14, %rdi
callq 0x21c0
testq %rax, %rax
je 0x89e1
movq %rax, %r15
movq 0x8(%rbx), %rsi
movl 0x18(%rbx), %edx
incl %edx
movq %r14, %rdi
callq 0x8a43
movq %rax, %r12
movq 0x8(%rbx), %rdi
movl $0x1234, %edx           # imm = 0x1234
movq %r14, %rsi
callq 0xa187
movq %r15, %rdi
callq 0x2090
movq %r12, %rax
jmp 0x893d
movq (%rbx), %rax
movslq 0x14(%rbx), %rcx
shlq $0x5, %rcx
movq 0x8(%rax,%rcx), %rdi
callq 0x8061
movq %rax, %rbx
callq 0x2050
movl (%rax), %edi
callq 0x2230
leaq 0x3d5c(%rip), %rsi      # 0xc768
movq %rbx, %rdi
movq %r14, %rdx
movq %rax, %rcx
xorl %eax, %eax
callq 0x4a05