// File: /workspace/github_c_makefile_star2_O0/MaoKo[P]FGFX/fgfl/src/regex_node.c
// Function: set_option_ast
regex_node_t*
set_option_ast(regex_node_t* root, regex_node_t* (*opt_ptr)(regex_node_t*)) {
    if (!root)
        { return (NULL_NODE); }
    else if (CHILD_NODE(root->kind_ast)) {
        if (CHILD_NODE(root->left->kind_ast))
            { root->left = set_option_ast(root->left, opt_ptr); }
        else
            { root->left = (*opt_ptr)(root->left); }

        if (root->right && CHILD_NODE(root->right->kind_ast))
            { root->right = set_option_ast(root->right, opt_ptr); }
        else
            { root->right = (*opt_ptr)(root->right); }
        return (root);
    }
    else
        { return ((*opt_ptr)(root)); }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
cmpq $0x0, -0x10(%rbp)
jne 0xae74
movq $0x0, -0x8(%rbp)
jmp 0xb025
movq -0x10(%rbp), %rax
cmpl $0x3, (%rax)
je 0xaec0
movq -0x10(%rbp), %rax
cmpl $0x2, (%rax)
je 0xaec0
movq -0x10(%rbp), %rax
cmpl $0x4, (%rax)
je 0xaec0
movq -0x10(%rbp), %rax
cmpl $0x1, (%rax)
je 0xaec0
movq -0x10(%rbp), %rax
cmpl $0x0, (%rax)
je 0xaec0
movq -0x10(%rbp), %rax
cmpl $0x5, (%rax)
je 0xaec0
movq -0x10(%rbp), %rax
cmpl $0x7, (%rax)
je 0xaec0
movq -0x10(%rbp), %rax
cmpl $0x6, (%rax)
jne 0xb017
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x3, (%rax)
je 0xaf28
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x2, (%rax)
je 0xaf28
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x4, (%rax)
je 0xaf28
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x1, (%rax)
je 0xaf28
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, (%rax)
je 0xaf28
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x5, (%rax)
je 0xaf28
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x7, (%rax)
je 0xaf28
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x6, (%rax)
jne 0xaf46
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0xae50
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0xaf5f
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x10(%rcx), %rdi
callq *%rax
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x10(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0xaff4
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpl $0x3, (%rax)
je 0xafd6
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpl $0x2, (%rax)
je 0xafd6
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpl $0x4, (%rax)
je 0xafd6
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpl $0x1, (%rax)
je 0xafd6
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpl $0x0, (%rax)
je 0xafd6
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpl $0x5, (%rax)
je 0xafd6
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpl $0x7, (%rax)
je 0xafd6
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
cmpl $0x6, (%rax)
jne 0xaff4
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0xae50
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
jmp 0xb00d
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rdi
callq *%rax
movq %rax, %rcx
movq -0x10(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x10(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0xb025
movq -0x18(%rbp), %rax
movq -0x10(%rbp), %rdi
callq *%rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x20, %rsp
popq %rbp
retq
nop