// File: /workspace/github_c_makefile_star2_O0/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
movq %rsp, %rbp
subq $0x50, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq %rdx, -0x18(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x1f71
movq -0x18(%rbp), %rdi
leaq 0xf3e3(%rip), %rsi      # 0x11348
movb $0x0, %al
callq 0x10f0
jmp 0x23e3
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0xc(%rbp), %eax
jge 0x1f9d
movq -0x18(%rbp), %rdi
leaq 0xf3c3(%rip), %rsi      # 0x1134e
movb $0x0, %al
callq 0x10f0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x1f78
movq -0x8(%rbp), %rax
movl (%rax), %eax
movq %rax, -0x48(%rbp)
subq $0x10, %rax
ja 0x23cb
movq -0x48(%rbp), %rax
leaq 0xf120(%rip), %rcx      # 0x110dc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xf379(%rip), %rsi      # 0x11351
movb $0x0, %al
callq 0x10f0
jmp 0x23e3
movq -0x8(%rbp), %rax
cmpl $0x0, 0x8(%rax)
je 0x2002
movq -0x18(%rbp), %rdi
leaq 0xf367(%rip), %rsi      # 0x11360
movb $0x0, %al
callq 0x10f0
jmp 0x2014
movq -0x18(%rbp), %rdi
leaq 0xf361(%rip), %rsi      # 0x1136e
movb $0x0, %al
callq 0x10f0
jmp 0x23e3
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movl (%rax), %edx
leaq 0xf34f(%rip), %rsi      # 0x1137d
movb $0x0, %al
callq 0x10f0
jmp 0x23e3
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movss (%rax), %xmm0
cvtss2sd %xmm0, %xmm0
leaq 0xf336(%rip), %rsi      # 0x1138b
movb $0x1, %al
callq 0x10f0
jmp 0x23e3
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xf324(%rip), %rsi      # 0x11398
movb $0x0, %al
callq 0x10f0
jmp 0x23e3
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xf311(%rip), %rsi      # 0x113a4
movb $0x0, %al
callq 0x10f0
jmp 0x23e3
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xf300(%rip), %rsi      # 0x113b2
movb $0x0, %al
callq 0x10f0
jmp 0x23e3
movq -0x18(%rbp), %rdi
leaq 0xf2f9(%rip), %rsi      # 0x113c2
movb $0x0, %al
callq 0x10f0
movl $0x0, -0x20(%rbp)
movl -0x20(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x210d
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rdx
callq 0x1f40
movl -0x20(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x20(%rbp)
jmp 0x20d7
jmp 0x23e3
movq -0x18(%rbp), %rdi
leaq 0xf2ac(%rip), %rsi      # 0x113c9
movb $0x0, %al
callq 0x10f0
movl $0x0, -0x24(%rbp)
movl -0x24(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x2161
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x24(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rdx
callq 0x1f40
movl -0x24(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x24(%rbp)
jmp 0x212b
jmp 0x23e3
movq -0x18(%rbp), %rdi
leaq 0xf25f(%rip), %rsi      # 0x113d0
movb $0x0, %al
callq 0x10f0
movl $0x0, -0x28(%rbp)
movl -0x28(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x21b5
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x28(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rdx
callq 0x1f40
movl -0x28(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x28(%rbp)
jmp 0x217f
jmp 0x23e3
movq -0x18(%rbp), %rdi
leaq 0xf213(%rip), %rsi      # 0x113d8
movb $0x0, %al
callq 0x10f0
movl $0x0, -0x2c(%rbp)
movl -0x2c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x2209
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x2c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rdx
callq 0x1f40
movl -0x2c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rbp)
jmp 0x21d3
jmp 0x23e3
movq -0x18(%rbp), %rdi
leaq 0xf1c4(%rip), %rsi      # 0x113dd
movb $0x0, %al
callq 0x10f0
movl $0x0, -0x30(%rbp)
movl -0x30(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x225d
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x30(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rdx
callq 0x1f40
movl -0x30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x30(%rbp)
jmp 0x2227
jmp 0x23e3
movq -0x18(%rbp), %rdi
leaq 0xf177(%rip), %rsi      # 0x113e4
movb $0x0, %al
callq 0x10f0
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x22b1
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x34(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rdx
callq 0x1f40
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x227b
jmp 0x23e3
movq -0x18(%rbp), %rdi
leaq 0xf12c(%rip), %rsi      # 0x113ed
movb $0x0, %al
callq 0x10f0
jmp 0x23e3
movq -0x18(%rbp), %rdi
leaq 0xf11f(%rip), %rsi      # 0x113f7
movb $0x0, %al
callq 0x10f0
movl $0x0, -0x38(%rbp)
movl -0x38(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x231c
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x38(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rdx
callq 0x1f40
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x22e6
jmp 0x23e3
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0xf0d1(%rip), %rsi      # 0x11405
movb $0x0, %al
callq 0x10f0
movl $0x0, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x2378
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x3c(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rdx
callq 0x1f40
movl -0x3c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3c(%rbp)
jmp 0x2342
jmp 0x23e3
movq -0x18(%rbp), %rdi
leaq 0xf090(%rip), %rsi      # 0x11415
movb $0x0, %al
callq 0x10f0
movl $0x0, -0x40(%rbp)
movl -0x40(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x10(%rcx), %eax
jge 0x23c9
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x40(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
movl -0xc(%rbp), %esi
addl $0x1, %esi
movq -0x18(%rbp), %rdx
callq 0x1f40
movl -0x40(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x40(%rbp)
jmp 0x2393
jmp 0x23e3
movq -0x18(%rbp), %rdi
movq -0x8(%rbp), %rax
movl (%rax), %edx
leaq 0xf042(%rip), %rsi      # 0x1141e
movb $0x0, %al
callq 0x10f0
addq $0x50, %rsp
popq %rbp
retq
nopl (%rax)