// File: /workspace/github_c_makefile_star2_O2/chgzm[P]minic/parser.c
// Function: parse
TransUnitNode* parse(const Vector* vec) {
    // init
    typedef_map = create_strptrmap(1024);
    TransUnitNode* trans_unit_node = create_trans_unit_node();

    int index = 0;
    while (index < vec->size) {
        ExternalDeclNode* external_decl_node = create_external_decl_node(vec, &index);
        if (external_decl_node == NULL) {
            error("Failed to create external-declaration node.\n");
            return NULL;
        }

        vector_push_back(trans_unit_node->external_decl_nodes, external_decl_node);
    }

    return trans_unit_node;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, %r14
movabsq $0x100000000, %r15      # imm = 0x100000000
movl $0x400, %edi            # imm = 0x400
callq 0x82e4
movq %rax, 0x9728(%rip)      # 0xe160
pushq $0x8
popq %rdi
callq 0x1100
movq %rax, %rbx
xorl %eax, %eax
callq 0x812e
movq %rbx, 0x18(%rsp)
movq %rax, 0x20(%rsp)
movq %rax, (%rbx)
leaq 0x4(%rsp), %rsi
andl $0x0, (%rsi)
xorl %r12d, %r12d
cmpl 0x8(%r14), %r12d
jge 0x4ea0
pushq $0x1
popq %rdi
pushq $0x18
popq %rsi
callq 0x10c0
movq %rax, 0x8(%rsp)
movq (%r14), %r13
movslq %r12d, %rbp
movq (%r13,%rbp,8), %rax
movl (%rax), %ecx
cmpl $0x5, %ecx
je 0x4b9f
cmpl $0xb, %ecx
jne 0x4c2d
pushq $0x1
popq %rdi
pushq $0x10
popq %rsi
callq 0x10c0
movq %rax, 0x10(%rsp)
leal 0x1(%r12), %ebx
movl %ebx, 0x4(%rsp)
movq 0x8(%r13,%rbp,8), %rax
movl (%rax), %edi
cmpl $0x3, %edi
jne 0x4ae4
movq 0x8(%rax), %rdi
callq 0x1190
movq 0x10(%rsp), %rcx
movq %rax, (%rcx)
addl $0x2, %r12d
movl %r12d, 0x4(%rsp)
movq 0x10(%r13,%rbp,8), %rax
movl (%rax), %edi
movl %r12d, %ebx
cmpl $0x23, %edi
jne 0x4ec1
incl %ebx
movl %ebx, 0x4(%rsp)
pushq $0x8
popq %rdi
callq 0x1100
movq %rax, %rbp
xorl %eax, %eax
callq 0x812e
movq %rax, %r13
movq %rax, (%rbp)
movq (%r14), %rax
movslq 0x4(%rsp), %rbx
movq (%rax,%rbx,8), %rax
movl (%rax), %edi
cmpl $0x3, %edi
jne 0x4e33
movq 0x8(%rax), %rdi
callq 0x1190
movq %r13, %rdi
movq %rax, %rsi
callq 0x8167
movslq 0x4(%rsp), %rdx
leaq 0x1(%rdx), %rbx
movl %ebx, 0x4(%rsp)
movq (%r14), %rcx
movq 0x8(%rcx,%rdx,8), %rax
movl (%rax), %edi
cmpl $0x30, %edi
jne 0x4b62
leaq 0x2(%rdx), %rbx
movl %ebx, 0x4(%rsp)
movq 0x10(%rcx,%rdx,8), %rax
movl (%rax), %edi
cmpl $0x24, %edi
jne 0x4b1a
movq 0x10(%rsp), %rax
movq %rbp, 0x8(%rax)
leal 0x1(%rbx), %ebp
movl %ebp, 0x4(%rsp)
movq 0x8(%rsp), %rsi
movq %rax, 0x10(%rsi)
movslq %ebx, %rax
movq 0x8(%rcx,%rax,8), %rax
movl (%rax), %edi
cmpl $0x1f, %edi
jne 0x4eea
addl $0x2, %ebx
movl %ebx, 0x4(%rsp)
jmp 0x4de2
leal 0x1(%r12), %ebx
movl %ebx, 0x4(%rsp)
movq 0x8(%r13,%rbp,8), %rax
movl (%rax), %edi
cmpl $0xa, %edi
jne 0x4ea7
leal 0x2(%r12), %ebx
movl %ebx, 0x4(%rsp)
movq 0x10(%r13,%rbp,8), %rax
movl (%rax), %edi
cmpl $0x3, %edi
jne 0x4ea7
movq 0x8(%rax), %rdi
callq 0x1190
leal 0x3(%r12), %ebx
movl %ebx, 0x4(%rsp)
movq 0x18(%r13,%rbp,8), %rcx
movl (%rcx), %edi
cmpl $0x3, %edi
jne 0x4ea7
movq 0x8(%rcx), %rdi
movq %rax, %rbx
callq 0x1190
addl $0x4, %r12d
movl %r12d, 0x4(%rsp)
movq 0x9551(%rip), %rdi      # 0xe160
movq %rax, %rsi
movq %rbx, %rdx
callq 0x8315
movq 0x8(%rsp), %rsi
testq %rsi, %rsi
jne 0x4de2
jmp 0x4e67
leaq 0x8(,%rbp,8), %rbx
shlq $0x20, %rbp
addq %r15, %rbp
incl %r12d
cmpl $0x3, %ecx
jne 0x4c5b
movq 0x9515(%rip), %rdi      # 0xe160
movq 0x8(%rax), %rsi
callq 0x83c5
movq (%r14), %r13
testb %al, %al
je 0x4c6b
movq (%r13,%rbx), %rax
movl (%rax), %ecx
addq %r15, %rbp
addq $0x8, %rbx
jmp 0x4c3c
sarq $0x1d, %rbp
movq (%r13,%rbp), %rax
cmpl $0x21, (%rax)
jne 0x4d08
movslq %r12d, %rax
leaq 0x8(,%rax,8), %rcx
addq %r13, %rcx
shlq $0x20, %rax
pushq $0x21
popq %rdx
cmpl $0x22, %edx
je 0x4ca5
movq (%rcx), %rdx
movl (%rdx), %edx
addq %r15, %rax
addq $0x8, %rcx
jmp 0x4c92
sarq $0x1d, %rax
movq 0x8(%r13,%rax), %rax
cmpl $0x23, (%rax)
jne 0x4d08
pushq $0x1
popq %rdi
pushq $0x18
popq %rsi
callq 0x10c0
movq %rax, %rbx
xorl %eax, %eax
callq 0x812e
movq %rax, %r12
movq %rax, (%rbx)
leaq 0x4(%rsp), %r13
movl 0x4(%rsp), %esi
movq %r14, %rdi
callq 0x518f
movq %r14, %rdi
movq %r13, %rsi
testb %al, %al
je 0x4dff
callq 0x51ae
testq %rax, %rax
je 0x4e89
movq %r12, %rdi
movq %rax, %rsi
callq 0x8167
jmp 0x4cd3
movslq 0x4(%rsp), %rbp
leaq (,%rbp,8), %rax
addq %r13, %rax
leaq 0x8(,%rbp,8), %r12
leal 0x1(%rbp), %ebx
shlq $0x20, %rbp
addq %r15, %rbp
movq (%rax), %rax
cmpl $0x3, (%rax)
jne 0x4d49
movq 0x9427(%rip), %rdi      # 0xe160
movq 0x8(%rax), %rsi
callq 0x83c5
movq (%r14), %r13
testb %al, %al
je 0x4d58
addq %r15, %rbp
leaq (%r12,%r13), %rax
addq $0x8, %r12
incl %ebx
jmp 0x4d2a
sarq $0x1d, %rbp
movq (%r13,%rbp), %rax
cmpl $0x21, (%rax)
jne 0x4dc3
movslq %ebx, %rax
leaq 0x8(,%rax,8), %rcx
addq %r13, %rcx
shlq $0x20, %rax
pushq $0x21
popq %rdx
cmpl $0x22, %edx
je 0x4d8e
movq (%rcx), %rdx
movl (%rdx), %edx
addq %r15, %rax
addq $0x8, %rcx
jmp 0x4d7b
sarq $0x1d, %rax
movq 0x8(%r13,%rax), %rax
cmpl $0x1f, (%rax)
jne 0x4dc3
movslq 0x4(%rsp), %rcx
leal 0x1(%rcx), %eax
leaq (,%rcx,8), %rcx
addq %r13, %rcx
movq (%rcx), %rdx
cmpl $0x1f, (%rdx)
je 0x4df6
movl %eax, 0x4(%rsp)
incl %eax
addq $0x8, %rcx
jmp 0x4daf
movq %r14, %rdi
leaq 0x4(%rsp), %rsi
callq 0x5042
movq 0x8(%rsp), %rsi
movq %rax, 0x8(%rsi)
testq %rax, %rax
je 0x4ede
movq 0x20(%rsp), %rdi
callq 0x8167
movl 0x4(%rsp), %r12d
jmp 0x4a62
movl %eax, 0x4(%rsp)
jmp 0x4c1a
callq 0x5227
movq %rax, 0x8(%rbx)
testq %rax, %rax
je 0x4efa
movq %r14, %rdi
movq %r13, %rsi
callq 0x5530
movq %rax, 0x10(%rbx)
testq %rax, %rax
je 0x4f03
movq 0x8(%rsp), %rsi
movq %rbx, (%rsi)
jmp 0x4de2
callq 0x807a
leaq 0x4fb1(%rip), %rdi      # 0x9df0
movl %ebx, %esi
movq %rax, %rdx
xorl %eax, %eax
callq 0x80a8
leaq 0x5039(%rip), %rdi      # 0x9e8b
xorl %eax, %eax
callq 0x80a8
leaq 0x4fa9(%rip), %rdi      # 0x9e09
xorl %eax, %eax
callq 0x80a8
leaq 0x4d12(%rip), %rdi      # 0x9b80
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x80a8
movq %rbx, %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x5023(%rip), %rdi      # 0x9eb3
xorl %eax, %eax
callq 0x80a8
leaq 0x4f92(%rip), %rdi      # 0x9e30
jmp 0x4e60
movq 0x18(%rsp), %rbx
jmp 0x4e77
callq 0x807a
leaq 0x4f3d(%rip), %rdi      # 0x9df0
movl %ebx, %esi
movq %rax, %rdx
xorl %eax, %eax
callq 0x80a8
jmp 0x4e67
callq 0x807a
leaq 0x4f23(%rip), %rdi      # 0x9df0
movl %ebx, %esi
movq %rax, %rdx
xorl %eax, %eax
callq 0x80a8
jmp 0x4e59
leaq 0x4f77(%rip), %rdi      # 0x9e5c
jmp 0x4e60
callq 0x807a
leaq 0x4efa(%rip), %rdi      # 0x9df0
movl %ebp, %esi
jmp 0x4eb5
leaq 0x4fe0(%rip), %rdi      # 0x9ee1
jmp 0x4e90
leaq 0x4ffa(%rip), %rdi      # 0x9f04
jmp 0x4e90