// File: /workspace/github_c_makefile_star2_O1/niho[P]elmc/src/east.c
// Function: elm_ast_print_depth
void elm_ast_print_depth(elm_ast_t *a, int d, FILE *fp) {
    if (a == NULL) {
        fprintf(fp, "NULL\n");
        return;
    }

    for (int i = 0; i < d; i++) { fprintf(fp, "  "); }

    switch(a->tag) {
        case ELM_AST_COMMENT:
            fprintf(fp, "comment: <%s>\n", (char*)a->contents);
            break;
        case ELM_AST_BOOL:
            if (a->i)
                fprintf(fp, "bool: <True>\n");
            else
                fprintf(fp, "bool: <False>\n");
            break;
        case ELM_AST_NUMBER:
            fprintf(fp, "number: <%d>\n", *(int*)a->contents);
            break;
        case ELM_AST_FLOAT:
            fprintf(fp, "float: <%f>\n", *(float*)a->contents);
            break;
        case ELM_AST_CHAR:
            fprintf(fp, "char: <%s>\n", (char*)a->contents);
            break;
        case ELM_AST_STRING:
            fprintf(fp, "string: <%s>\n", (char*)a->contents);
            break;
        case ELM_AST_VAR:
            fprintf(fp, "variable: <%s>\n", (char*)a->contents);
            break;
        case ELM_AST_EXPR:
            fprintf(fp, "expr:\n");
            for(int i = 0; i < a->children_num; i++) {
                elm_ast_print_depth(a->children[i], d+1, fp);
            }
            break;
        case ELM_AST_LIST:
            fprintf(fp, "list:\n");
            for(int i = 0; i < a->children_num; i++) {
                elm_ast_print_depth(a->children[i], d+1, fp);
            }
            break;
        case ELM_AST_TUPLE:
            fprintf(fp, "tuple:\n");
            for(int i = 0; i < a->children_num; i++) {
                elm_ast_print_depth(a->children[i], d+1, fp);
            }
            break;
        case ELM_AST_IF:
            fprintf(fp, "if:\n");
            for(int i = 0; i < a->children_num; i++) {
                elm_ast_print_depth(a->children[i], d+1, fp);
            }
            break;
        case ELM_AST_CASE:
            fprintf(fp, "case:\n");
            for(int i = 0; i < a->children_num; i++) {
                elm_ast_print_depth(a->children[i], d+1, fp);
            }
            break;
        case ELM_AST_BRANCH:
            fprintf(fp, "branch:\n");
            for(int i = 0; i < a->children_num; i++) {
                elm_ast_print_depth(a->children[i], d+1, fp);
            }
            break;
        case ELM_AST_WILDCARD:
            fprintf(fp, "wildcard\n");
            break;
        case ELM_AST_DECL:
            fprintf(fp, "declaration:\n");
            for(int i = 0; i < a->children_num; i++) {
                elm_ast_print_depth(a->children[i], d+1, fp);
            }
            break;
        case ELM_AST_FUNC:
            fprintf(fp, "function: <%s>\n", a->contents);
            for(int i = 0; i < a->children_num; i++) {
                elm_ast_print_depth(a->children[i], d+1, fp);
            }
            break;
        case ELM_AST_MODULE:
            fprintf(fp, "module:\n");
            for(int i = 0; i < a->children_num; i++) {
                elm_ast_print_depth(a->children[i], d+1, fp);
            }
            break;
        default:
            fprintf(fp, "unknown ast node (tag: %d)\n", a->tag);
            break;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rdx, %rbx
testq %rdi, %rdi
je 0x20cc
movl %esi, %ebp
movq %rdi, %r14
testl %esi, %esi
jle 0x209f
leaq 0xb2cc(%rip), %r15      # 0xd34e
movl %ebp, %r12d
movl $0x2, %esi
movl $0x1, %edx
movq %r15, %rdi
movq %rbx, %rcx
callq 0x1200
decl %r12d
jne 0x2085
movl (%r14), %edx
cmpq $0x10, %rdx
ja 0x235f
leaq 0xb029(%rip), %rax      # 0xd0dc
movslq (%rax,%rdx,4), %rcx
addq %rax, %rcx
jmpq *%rcx
movq 0x8(%r14), %rdx
leaq 0xb28a(%rip), %rsi      # 0xd351
jmp 0x23a1
leaq 0xb275(%rip), %rdi      # 0xd348
movl $0x5, %esi
movl $0x1, %edx
movq %rbx, %rcx
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x1200
leaq 0xb321(%rip), %rdi      # 0xd415
movl $0x8, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1200
cmpl $0x0, 0x10(%r14)
jle 0x243b
incl %ebp
xorl %r15d, %r15d
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2062
incq %r15
movslq 0x10(%r14), %rax
cmpq %rax, %r15
jl 0x2116
jmp 0x243b
leaq 0xb2b7(%rip), %rdi      # 0xd3f7
movl $0xd, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1200
cmpl $0x0, 0x10(%r14)
jle 0x243b
incl %ebp
xorl %r15d, %r15d
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2062
incq %r15
movslq 0x10(%r14), %rax
cmpq %rax, %r15
jl 0x2162
jmp 0x243b
leaq 0xb251(%rip), %rdi      # 0xd3dd
movl $0x6, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1200
cmpl $0x0, 0x10(%r14)
jle 0x243b
incl %ebp
xorl %r15d, %r15d
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2062
incq %r15
movslq 0x10(%r14), %rax
cmpq %rax, %r15
jl 0x21ae
jmp 0x243b
movq 0x8(%r14), %rdx
leaq 0xb1bc(%rip), %rsi      # 0xd398
jmp 0x23a1
leaq 0xb1fc(%rip), %rdi      # 0xd3e4
movl $0x8, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1200
cmpl $0x0, 0x10(%r14)
jle 0x243b
incl %ebp
xorl %r15d, %r15d
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2062
incq %r15
movslq 0x10(%r14), %rax
cmpq %rax, %r15
jl 0x220a
jmp 0x243b
leaq 0xb19c(%rip), %rdi      # 0xd3d0
movl $0x7, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1200
cmpl $0x0, 0x10(%r14)
jle 0x243b
incl %ebp
xorl %r15d, %r15d
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2062
incq %r15
movslq 0x10(%r14), %rax
cmpq %rax, %r15
jl 0x2256
jmp 0x243b
movq 0x8(%r14), %rax
movl (%rax), %edx
leaq 0xb0f7(%rip), %rsi      # 0xd37d
movq %rbx, %rdi
jmp 0x2369
movq 0x8(%r14), %rdx
leaq 0xb16c(%rip), %rsi      # 0xd405
movq %rbx, %rdi
xorl %eax, %eax
callq 0x1130
cmpl $0x0, 0x10(%r14)
jle 0x243b
incl %ebp
xorl %r15d, %r15d
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2062
incq %r15
movslq 0x10(%r14), %rax
cmpq %rax, %r15
jl 0x22b3
jmp 0x243b
movq 0x8(%r14), %rax
cvtss2sd (%rax), %xmm0
leaq 0xb0a6(%rip), %rsi      # 0xd38b
movq %rbx, %rdi
movb $0x1, %al
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x1130
leaq 0xb0c4(%rip), %rdi      # 0xd3c2
movl $0x6, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1200
cmpl $0x0, 0x10(%r14)
jle 0x243b
incl %ebp
xorl %r15d, %r15d
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2062
incq %r15
movslq 0x10(%r14), %rax
cmpq %rax, %r15
jl 0x2320
jmp 0x243b
cmpl $0x0, 0x8(%r14)
je 0x2444
leaq 0xb00b(%rip), %rdi      # 0xd360
movl $0xd, %esi
jmp 0x20d8
leaq 0xb0b8(%rip), %rsi      # 0xd41e
movq %rbx, %rdi
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x1130
movq 0x8(%r14), %rdx
leaq 0xb021(%rip), %rsi      # 0xd3a4
jmp 0x23a1
leaq 0xb061(%rip), %rdi      # 0xd3ed
movl $0x9, %esi
jmp 0x20d8
movq 0x8(%r14), %rdx
leaq 0xb011(%rip), %rsi      # 0xd3b2
movq %rbx, %rdi
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x1130
leaq 0xb01e(%rip), %rdi      # 0xd3d8
movl $0x4, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1200
cmpl $0x0, 0x10(%r14)
jle 0x243b
incl %ebp
xorl %r15d, %r15d
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2062
incq %r15
movslq 0x10(%r14), %rax
cmpq %rax, %r15
jl 0x23d8
jmp 0x243b
leaq 0xafca(%rip), %rdi      # 0xd3c9
movl $0x6, %esi
movl $0x1, %edx
movq %rbx, %rcx
callq 0x1200
cmpl $0x0, 0x10(%r14)
jle 0x243b
incl %ebp
xorl %r15d, %r15d
movq 0x18(%r14), %rax
movq (%rax,%r15,8), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x2062
incq %r15
movslq 0x10(%r14), %rax
cmpq %rax, %r15
jl 0x241d
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0xaf23(%rip), %rdi      # 0xd36e
movl $0xe, %esi
jmp 0x20d8