// File: /workspace/github_c_makefile_star2_O1/MaoKo[P]FGFX/fgfl/src/regex.c
// Function: regex_closure
static regex_node_t*
regex_closure(void) {
    regex_node_t* root = regex_tilde();
    if (!root)
        { return (NULL_NODE); }

    while (in_first(regex_spec->lex, T_REG_STAR, T_REG_PLUS,
                                            T_REG_QUES, T_REG_LBRACE, -1)) {
        int closure_kind = advance_token(regex_spec->lex);
        switch (closure_kind) {
            case T_REG_PLUS:
                if (root->kind_ast != AST_PLUS)
                    { root = new_regex_node(AST_PLUS, root); }
                break;
            case T_REG_QUES:
                if (root->kind_ast != AST_QUES)
                    { root = new_regex_node(AST_QUES, root); }
                break;
            case T_REG_STAR:
                if (root->kind_ast != AST_STAR)
                    { root = new_regex_node(AST_STAR, root); }
                break;
            case T_REG_LBRACE: root = finite_seq(root);
                break;
        }
        if (!root)
            { return (NULL_NODE); }
    }
    return (root);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq 0x17a37(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
xorl %r12d, %r12d
cmpl $0xe, %eax
jne 0x64bc
movq 0x17a20(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
incq %r12
movq 0x17a0e(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
jmp 0x6494
movq 0x179fd(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
cmpl $0x1c, %eax
jg 0x653e
leal -0x8(%rax), %ecx
cmpl $0x5, %ecx
ja 0x6620
leaq 0x5471(%rip), %rax      # 0xb954
movslq (%rax,%rcx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x179cd(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
callq 0x6353
movq %rax, %rbx
movq 0x179b6(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
cmpq $0x9, %rax
je 0x6a3f
movq %rbx, %rdi
callq 0x7cad
movq 0x17995(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movslq 0x28(%rax), %rdi
leaq 0x5511(%rip), %rsi      # 0xba4a
jmp 0x6a36
leal -0x1d(%rax), %ecx
cmpl $0x3, %ecx
jae 0x657c
movl %eax, %edi
callq 0x6ce9
cmpl $-0x1, %eax
je 0x69c2
movl %eax, %ebx
movq 0x17961(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movl $0xa, %edi
movl %ebx, %esi
xorl %edx, %edx
xorl %eax, %eax
callq 0x7948
jmp 0x67b2
cmpl $0x20, %eax
jne 0x672a
movq 0x17934(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movq 0x17925(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
movl %eax, %ebx
leal -0x22(%rbx), %eax
cmpl $0x3, %eax
ja 0x68a4
movl $0x0, -0x30(%rbp)
leaq 0x53ad(%rip), %r15      # 0xb96c
movl $0x0, -0x34(%rbp)
xorl %r13d, %r13d
xorl %r14d, %r14d
movq 0x178ed(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
addl $-0x22, %ebx
cmpl $0x3, %ebx
ja 0x6602
movslq (%r15,%rbx,4), %rax
addq %r15, %rax
jmpq *%rax
movb $0x1, %r14b
jmp 0x6602
movb $0x1, %al
movl %eax, -0x34(%rbp)
jmp 0x6602
movb $0x1, %al
movl %eax, -0x30(%rbp)
jmp 0x6602
movb $0x1, %r13b
movq 0x178b7(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
movl %eax, %ebx
addl $-0x22, %eax
cmpl $0x4, %eax
jb 0x65cc
jmp 0x68b8
cmpl $0x16, %eax
jne 0x672a
callq 0x6e47
testq %rax, %rax
je 0x69c2
movq %rax, -0x30(%rbp)
xorl %ebx, %ebx
xorl %r15d, %r15d
movq 0x17879(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
movl $0x13, %esi
movl $0x14, %edx
movl $0x15, %ecx
movl $0xffffffff, %r8d       # imm = 0xFFFFFFFF
xorl %eax, %eax
callq 0x39e3
testb %al, %al
je 0x69dd
movq 0x1784b(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movq %rax, %r13
movq 0x17839(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
movl %eax, %r14d
cmpl $0x16, %eax
jne 0x66d3
callq 0x6e47
movq %rax, %r15
xorl %edi, %edi
cmpl $0x14, %r13d
setne %dil
cmpl $0x13, %r13d
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rsi
movq 0x8(%r15), %rdx
movl $0x2, %eax
cmovel %eax, %edi
callq 0x2809
movq %r15, %rdi
callq 0x7cad
movb $0x1, %r15b
jmp 0x671b
movq -0x30(%rbp), %rdi
callq 0x7cad
leaq 0x53df(%rip), %rdx      # 0xbac2
cmpl $0x14, %r13d
je 0x66f0
leaq 0x53d6(%rip), %rdx      # 0xbac6
cmpl $0x13, %r13d
movq 0x177c5(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movslq 0x28(%rax), %rdi
leaq 0x53b5(%rip), %rax      # 0xbabe
cmoveq %rax, %rdx
leaq 0x5383(%rip), %rsi      # 0xba97
xorl %eax, %eax
callq 0x4060
cmpl $0x16, %r14d
je 0x6640
jmp 0x6a3f
movq 0x1778f(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movslq 0x28(%rax), %rdi
leaq 0x5328(%rip), %rsi      # 0xba67
jmp 0x6a36
movq 0x17775(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movq 0x17766(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movq 0x10(%rax), %rdi
movl $0x1, %esi
callq 0x30f2
movq 0x1774e(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
incq %rdi
callq 0x21f0
movl $0x8, %edi
movq %rax, %rsi
xorl %eax, %eax
callq 0x7948
jmp 0x67b2
movq 0x17724(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movl $0x9, %edi
xorl %esi, %esi
xorl %eax, %eax
callq 0x7948
movq %rax, %rbx
jmp 0x6a3f
movq 0x176ff(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movb $0x1, %r15b
xorl %ebx, %ebx
movq 0x176eb(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
movl $0xc, %esi
movl $0x70, %edx
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
xorl %eax, %eax
callq 0x39e3
testb %al, %al
jne 0x684b
movq 0x176c7(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movq %rax, %r14
cmpl $0x6f, %r14d
je 0x6845
movl %r14d, %edi
callq 0x6ce9
xorl %r15d, %r15d
movl $0xa, %edi
movl %eax, %esi
movl $0x1, %edx
xorl %eax, %eax
callq 0x7948
testq %rbx, %rbx
je 0x6842
xorl %r15d, %r15d
movl $0x1, %edi
movq %rbx, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x7948
movq %rax, %rbx
cmpl $0x6f, %r14d
jne 0x67ce
testb $0x1, %r15b
je 0x6860
movl $0xb, %edi
xorl %eax, %eax
callq 0x7948
movq %rax, %rbx
testq %rbx, %rbx
je 0x69c2
movq 0x17650(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
cmpq $0xc, %rax
je 0x6a3f
movq %rbx, %rdi
callq 0x7cad
movq 0x1762f(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movslq 0x28(%rax), %rdi
leaq 0x52d7(%rip), %rsi      # 0xbb76
jmp 0x6a36
xorl %r14d, %r14d
xorl %r13d, %r13d
movl $0x0, -0x34(%rbp)
movl $0x0, -0x30(%rbp)
movq 0x17601(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
cmpl $0x21, %eax
jne 0x6952
movq 0x175e9(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movq 0x175da(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
movl %eax, %ebx
leal -0x22(%rbx), %eax
cmpl $0x3, %eax
ja 0x6952
leaq 0x507d(%rip), %r15      # 0xb97c
movq 0x175ba(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
addl $-0x22, %ebx
cmpl $0x3, %ebx
ja 0x6939
movslq (%r15,%rbx,4), %rax
addq %r15, %rax
jmpq *%rax
xorl %r14d, %r14d
jmp 0x6939
movl $0x0, -0x34(%rbp)
jmp 0x6939
movl $0x0, -0x30(%rbp)
jmp 0x6939
xorl %r13d, %r13d
movq 0x17580(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
movl %eax, %ebx
addl $-0x22, %eax
cmpl $0x4, %eax
jb 0x68ff
movq 0x17567(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
cmpq $0x26, %rax
jne 0x69c6
callq 0x6353
testq %rax, %rax
je 0x69c2
movq %rax, %rbx
movq 0x17545(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
cmpq $0x9, %rax
jne 0x6a21
andb $0x1, %r14b
movzbl %r14b, %esi
andb $0x1, %r13b
movzbl %r13b, %edx
movl -0x34(%rbp), %eax
andb $0x1, %al
movzbl %al, %ecx
movl -0x30(%rbp), %eax
andb $0x1, %al
movzbl %al, %r8d
movl $0x7, %edi
movq %rbx, %r9
xorl %eax, %eax
callq 0x7948
jmp 0x67b2
xorl %ebx, %ebx
jmp 0x6a3f
movq 0x174f3(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movslq 0x28(%rax), %rdi
leaq 0x51c2(%rip), %rsi      # 0xbb9d
jmp 0x6a36
movq -0x30(%rbp), %rbx
movq 0x8(%rbx), %rdi
callq 0x2725
testb %al, %al
je 0x6a3f
testb $0x1, %r15b
je 0x6a10
movq 0x174c5(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movslq 0x28(%rax), %rdi
leaq 0x50c1(%rip), %rsi      # 0xbaca
xorl %eax, %eax
callq 0x22f9
movq 0x8(%rbx), %rdi
callq 0x24ca
movl $0xb, (%rbx)
jmp 0x6a3f
movq 0x17498(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movslq 0x28(%rax), %rdi
leaq 0x518d(%rip), %rsi      # 0xbbc3
xorl %ebx, %ebx
xorl %eax, %eax
callq 0x4060
testq %rbx, %rbx
je 0x6a75
testq %r12, %r12
je 0x6a77
movl $0x6, %edi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x7948
movq %rax, %rbx
cmpq $0x1, %r12
je 0x6a77
movl $0x6, %edi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x7948
movq %rax, %rbx
jmp 0x6a77
xorl %ebx, %ebx
testq %rbx, %rbx
je 0x6cd5
leaq 0x51cc(%rip), %r12      # 0xbc53
movq 0x17432(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
movl $0x5, %esi
movl $0x6, %edx
movl $0x7, %ecx
movl $0xf, %r8d
movl $0xffffffff, %r9d       # imm = 0xFFFFFFFF
xorl %eax, %eax
callq 0x39e3
testb %al, %al
je 0x6cd7
movq 0x173fe(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
cmpl $0x6, %eax
jg 0x6af4
cmpl $0x5, %eax
je 0x6c2a
cmpl $0x6, %eax
jne 0x6ccc
cmpl $0x4, (%rbx)
je 0x6ccc
movl $0x4, %edi
jmp 0x6c48
cmpl $0x7, %eax
je 0x6c3a
cmpl $0xf, %eax
jne 0x6ccc
movq 0x173b3(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movq 0x173a4(%rip), %rcx     # 0x1dec0
movq (%rcx), %rcx
cmpq $0x11, %rax
jne 0x6c57
movq 0x10(%rcx), %rax
movq (%rax), %rdi
callq 0x21c0
movl %eax, %r14d
movslq %eax, %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x7df4
movq %rax, %r13
movq 0x17370(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
cmpl $0x12, %eax
jne 0x6c90
movq 0x17358(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movq 0x17349(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x39b4
cmpl $0x11, %eax
jne 0x6c64
movq 0x17331(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
movq 0x17322(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movq 0x10(%rax), %rax
movq (%rax), %rdi
callq 0x21c0
movl %eax, -0x30(%rbp)
movslq %eax, %r12
cmpl %r14d, %r12d
jae 0x6bf8
movq %r13, %rdi
callq 0x7cad
movq 0x172f9(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movslq 0x28(%rax), %rdi
leaq 0x5033(%rip), %rsi      # 0xbc08
movq %r15, %rdx
movq %r12, %rcx
xorl %eax, %eax
callq 0x4060
cmpl %r14d, -0x30(%rbp)
leaq 0x5066(%rip), %r12      # 0xbc53
jae 0x6c90
jmp 0x6cca
incq %r15
cmpq %r12, %r15
ja 0x6be2
movq %rbx, %rdi
callq 0x7d00
movq %rax, %rbx
movq %rax, %rdi
movq %r15, %rsi
callq 0x7df4
xorl %edi, %edi
movq %r13, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x7948
movq %rax, %r13
jmp 0x6bf8
cmpl $0x3, (%rbx)
je 0x6ccc
movl $0x3, %edi
jmp 0x6c48
cmpl $0x2, (%rbx)
je 0x6ccc
movl $0x2, %edi
movq %rbx, %rsi
xorl %eax, %eax
callq 0x7948
movq %rax, %rbx
jmp 0x6ccc
movslq 0x28(%rcx), %rdi
leaq 0x4f87(%rip), %rsi      # 0xbbe9
jmp 0x6cc3
movq %r13, %rdi
callq 0x7d00
movl $0x3, %edi
movq %rax, %rsi
xorl %eax, %eax
callq 0x7948
movl $0x1, %edi
movq %r13, %rsi
movq %rax, %rdx
xorl %eax, %eax
callq 0x7948
movq %rax, %r13
movq 0x17229(%rip), %rax     # 0x1dec0
movq (%rax), %rdi
callq 0x331a
cmpq $0x10, %rax
jne 0x6caa
movq %r13, %rbx
jmp 0x6ccc
movq %r13, %rdi
callq 0x7cad
movq 0x17207(%rip), %rax     # 0x1dec0
movq (%rax), %rax
movslq 0x28(%rax), %rdi
movq %r12, %rsi
xorl %eax, %eax
callq 0x4060
xorl %ebx, %ebx
testq %rbx, %rbx
jne 0x6a87
xorl %ebx, %ebx
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq