// File: /workspace/github_c_makefile_star2_O0/ryvnf[P]czc/ast.c
// Function: ast_print
void ast_print(struct ast *ast, int indent)
{
    for (int j = 0; j < indent; j++)
        fputs("  ", stdout);

    if (ast == NULL) {
        puts("NULL");
        return;
    }

    switch (ast_val_type(ast->tag)) {
        case AST_NO_VAL:
            printf("%s\n", ast_tag_name(ast->tag));
            break;
        case AST_S:
            printf("%s \"%s\"\n", ast_tag_name(ast->tag), ast_s(ast));
            break;
        case AST_I:
            printf("%s %lld\n", ast_tag_name(ast->tag), ast_i(ast));
            break;
        case AST_F:
            printf("%s %f\n", ast_tag_name(ast->tag), ast_f(ast));
            break;
        case AST_AST:
            printf("%s\n", ast_tag_name(ast->tag));
            ast_print_childs(ast, indent);
            break;
        case AST_CHARS:
            printf("%s <CHARS>\n", ast_tag_name(ast->tag));
            break;
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x365f
movq 0x15993(%rip), %rax     # 0x18fd8
movq (%rax), %rsi
leaq 0x10ecd(%rip), %rdi     # 0x1451c
callq 0x20e0
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x3636
cmpq $0x0, -0x8(%rbp)
jne 0x3677
leaq 0xeda6(%rip), %rdi      # 0x12413
callq 0x2070
jmp 0x37d0
movq -0x8(%rbp), %rax
movl (%rax), %edi
callq 0x37e0
movl %eax, %ecx
movl %ecx, -0x14(%rbp)
testl %eax, %eax
je 0x36dc
jmp 0x368d
movl -0x14(%rbp), %eax
subl $0x1000, %eax           # imm = 0x1000
je 0x36fd
jmp 0x3699
movl -0x14(%rbp), %eax
subl $0x2000, %eax           # imm = 0x2000
je 0x372f
jmp 0x36a9
movl -0x14(%rbp), %eax
subl $0x3000, %eax           # imm = 0x3000
je 0x375e
jmp 0x36b9
movl -0x14(%rbp), %eax
subl $0x4000, %eax           # imm = 0x4000
je 0x378a
jmp 0x36c9
movl -0x14(%rbp), %eax
subl $0x5000, %eax           # imm = 0x5000
je 0x37b4
jmp 0x37d0
movq -0x8(%rbp), %rax
movl (%rax), %edi
callq 0x2b70
movq %rax, %rsi
leaq 0x10704(%rip), %rdi     # 0x13df5
movb $0x0, %al
callq 0x20b0
jmp 0x37d0
movq -0x8(%rbp), %rax
movl (%rax), %edi
callq 0x2b70
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
callq 0x27f0
movq -0x20(%rbp), %rsi
movq %rax, %rdx
leaq 0xecf5(%rip), %rdi      # 0x12418
movb $0x0, %al
callq 0x20b0
jmp 0x37d0
movq -0x8(%rbp), %rax
movl (%rax), %edi
callq 0x2b70
movq %rax, -0x28(%rbp)
movq -0x8(%rbp), %rdi
callq 0x2920
movq -0x28(%rbp), %rsi
movq %rax, %rdx
leaq 0xeccc(%rip), %rdi      # 0x12421
movb $0x0, %al
callq 0x20b0
jmp 0x37d0
movq -0x8(%rbp), %rax
movl (%rax), %edi
callq 0x2b70
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
callq 0x29b0
movq -0x30(%rbp), %rsi
leaq 0xeca9(%rip), %rdi      # 0x1242a
movb $0x1, %al
callq 0x20b0
jmp 0x37d0
movq -0x8(%rbp), %rax
movl (%rax), %edi
callq 0x2b70
movq %rax, %rsi
leaq 0x10656(%rip), %rdi     # 0x13df5
movb $0x0, %al
callq 0x20b0
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x3800
jmp 0x37d0
movq -0x8(%rbp), %rax
movl (%rax), %edi
callq 0x2b70
movq %rax, %rsi
leaq 0xec68(%rip), %rdi      # 0x12431
movb $0x0, %al
callq 0x20b0
addq $0x30, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)