// File: /workspace/github_c_makefile_star2_O0/yangtau[P]hedgehog/src/ast.c
// Function: hg_ast_node_free
void hg_ast_node_free(struct hg_ast_node* _node) {
    switch (_node->type) {
    case HG_AST_NODE_ASSIGNMENT: {
        __hg_ast_raw_to(_node, struct hg_ast_assignment_stat, node);
        hg_ast_node_free(node->exprs);
        hg_ast_node_free(node->vars);
        hg_free(node);
    } break;
    case HG_AST_NODE_FOR: {
        __hg_ast_raw_to(_node, struct hg_ast_for_stat, node);
        hg_ast_node_free(node->params);
        hg_ast_node_free(node->iterator);
        hg_ast_node_free(node->block);
        hg_free(node);
    } break;
    case HG_AST_NODE_IF: {
        __hg_ast_raw_to(_node, struct hg_ast_if_stat, node);
        hg_ast_node_free(node->condition);
        hg_ast_node_free(node->block);
        if (node->else_block) {
            hg_ast_node_free(node->else_block);
        }
        hg_free(node);
    } break;
    case HG_AST_NODE_FUNC: {
        __hg_ast_raw_to(_node, struct hg_ast_func_stat, node);
        hg_ast_node_free(node->id);
        if (node->params) {
            hg_ast_node_free(node->params);
        }
        hg_ast_node_free(node->block);
        hg_free(node);
    } break;
    case HG_AST_NODE_BREAK: {
        __hg_ast_raw_to(_node, struct hg_ast_break_stat, node);
        hg_free(node);
    } break;
    case HG_AST_NODE_CONTINUE: {
        __hg_ast_raw_to(_node, struct hg_ast_continue_stat, node);
        hg_free(node);
    } break;
    case HG_AST_NODE_RETURN: {
        __hg_ast_raw_to(_node, struct hg_ast_return_stat, node);
        if (node->exprs) {
            hg_ast_node_free(node->exprs);
        }
        hg_free(node);
    } break;
    case HG_AST_NODE_EXPR_STAT: {
        __hg_ast_raw_to(_node, struct hg_ast_expr_stat, node);
        hg_ast_node_free(node->expr);
        hg_free(node);
    } break;
    case HG_AST_NODE_CALL: {
        __hg_ast_raw_to(_node, struct hg_ast_call_expr, node);
        hg_ast_node_free(node->callable);
        if (node->exprs) {
            hg_ast_node_free(node->exprs);
        }
        hg_free(node);
    } break;
    case HG_AST_NODE_FIELD: {
        __hg_ast_raw_to(_node, struct hg_ast_field_expr, node);
        hg_ast_node_free(node->prefix);
        hg_ast_node_free(node->field);
        hg_free(node);
    } break;
    case HG_AST_NODE_INDEX: {
        __hg_ast_raw_to(_node, struct hg_ast_index_expr, node);
        hg_ast_node_free(node->prefix);
        hg_ast_node_free(node->index);
        hg_free(node);
    } break;
    case HG_AST_NODE_FUNC_DEF: {
        __hg_ast_raw_to(_node, struct hg_ast_func_def_expr, node);
        if (node->params) {
            hg_ast_node_free(node->params);
        }
        hg_ast_node_free(node->block);
        hg_free(node);
    } break;
    case HG_AST_NODE_BINARY_EXPR: {
        __hg_ast_raw_to(_node, struct hg_ast_binary_expr, node);
        hg_ast_node_free(node->left);
        hg_ast_node_free(node->right);
        hg_free(node);
    } break;
    case HG_AST_NODE_UNARY_EXPR: {
        __hg_ast_raw_to(_node, struct hg_ast_unary_expr, node);
        hg_ast_node_free(node->expr);
        hg_free(node);
    } break;
    case HG_AST_NODE_TABLE: {
        __hg_ast_raw_to(_node, struct hg_ast_table_expr, node);
        if (node->entries) {
            hg_ast_node_free(node->entries);
        }
        hg_free(node);
    } break;
    case HG_AST_NODE_TABLE_ENTRY: {
        __hg_ast_raw_to(_node, struct hg_ast_table_entry, node);
        hg_ast_node_free(node->key);
        hg_ast_node_free(node->value);
        hg_free(node);
    } break;
    case HG_AST_NODE_BRACK_EXPR: {
        __hg_ast_raw_to(_node, struct hg_ast_brack_expr, node);
        hg_ast_node_free(node->expr);
        hg_free(node);
    } break;
    case HG_AST_NODE_LITERAL_SYMBOL: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        // TODO: free reference to str
        hg_free(node);
    } break;
    case HG_AST_NODE_LITERAL_STR: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        // TODO: free reference to str
        hg_free(node);
    } break;
    case HG_AST_NODE_LITERAL_ID: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        // TODO: free reference to str
        hg_free(node);
    } break;
    case HG_AST_NODE_LITERAL_BOOL: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        hg_free(node);
    } break;
    case HG_AST_NODE_LITERAL_INT: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        hg_free(node);
    } break;
    case HG_AST_NODE_LITERAL_FLOAT: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        hg_free(node);
    } break;
    case HG_AST_NODE_ARRAY_STATS:
    case HG_AST_NODE_ARRAY_EXPRS:
    case HG_AST_NODE_ARRAY_VARS:
    case HG_AST_NODE_ARRAY_PARAMS:
    case HG_AST_NODE_ARRAY_TABLE_ENTRIES: {
        __hg_ast_raw_to(_node, struct hg_ast_node_array, node);
        for (size_t i = 0; i < node->len; i++) {
            hg_ast_node_free(node->arr[i]);
        }
        hg_free(node);
    } break;
    default:
        unreachable_();
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x660, %rsp            # imm = 0x660
movq %rdi, -0x4d0(%rbp)
movq -0x4d0(%rbp), %rax
movl (%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x660(%rbp)
subl $0x21, %eax
ja 0x3f42
movq -0x660(%rbp), %rax
leaq 0x8dc3(%rip), %rcx      # 0xc0e0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x4e0(%rbp)
movq -0x4e0(%rbp), %rax
movq %rax, -0x4d8(%rbp)
movq -0x4d8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x4d8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x4d8(%rbp), %rax
movq %rax, -0x410(%rbp)
cmpq $0x0, -0x410(%rbp)
jne 0x339d
leaq 0xb914(%rip), %rdi      # 0xec99
leaq 0x961e(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x961d(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x410(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x4f0(%rbp)
movq -0x4f0(%rbp), %rax
movq %rax, -0x4e8(%rbp)
movq -0x4e8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x4e8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x4e8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x32e0
movq -0x4e8(%rbp), %rax
movq %rax, -0x418(%rbp)
cmpq $0x0, -0x418(%rbp)
jne 0x3435
leaq 0xb87c(%rip), %rdi      # 0xec99
leaq 0x9586(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x9585(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x418(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x500(%rbp)
movq -0x500(%rbp), %rax
movq %rax, -0x4f8(%rbp)
movq -0x4f8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x4f8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x4f8(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x34a4
movq -0x4f8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x32e0
movq -0x4f8(%rbp), %rax
movq %rax, -0x420(%rbp)
cmpq $0x0, -0x420(%rbp)
jne 0x34db
leaq 0xb7d6(%rip), %rdi      # 0xec99
leaq 0x94e0(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x94df(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x420(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x510(%rbp)
movq -0x510(%rbp), %rax
movq %rax, -0x508(%rbp)
movq -0x508(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x508(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x353a
movq -0x508(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x508(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x32e0
movq -0x508(%rbp), %rax
movq %rax, -0x428(%rbp)
cmpq $0x0, -0x428(%rbp)
jne 0x3581
leaq 0xb730(%rip), %rdi      # 0xec99
leaq 0x943a(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x9439(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x428(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x520(%rbp)
movq -0x520(%rbp), %rax
movq %rax, -0x518(%rbp)
movq -0x518(%rbp), %rax
movq %rax, -0x430(%rbp)
cmpq $0x0, -0x430(%rbp)
jne 0x35e9
leaq 0xb6c8(%rip), %rdi      # 0xec99
leaq 0x93d2(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x93d1(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x430(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x530(%rbp)
movq -0x530(%rbp), %rax
movq %rax, -0x528(%rbp)
movq -0x528(%rbp), %rax
movq %rax, -0x438(%rbp)
cmpq $0x0, -0x438(%rbp)
jne 0x3651
leaq 0xb660(%rip), %rdi      # 0xec99
leaq 0x936a(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x9369(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x438(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x540(%rbp)
movq -0x540(%rbp), %rax
movq %rax, -0x538(%rbp)
movq -0x538(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x36a0
movq -0x538(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x538(%rbp), %rax
movq %rax, -0x440(%rbp)
cmpq $0x0, -0x440(%rbp)
jne 0x36d7
leaq 0xb5da(%rip), %rdi      # 0xec99
leaq 0x92e4(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x92e3(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x440(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x550(%rbp)
movq -0x550(%rbp), %rax
movq %rax, -0x548(%rbp)
movq -0x548(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x548(%rbp), %rax
movq %rax, -0x448(%rbp)
cmpq $0x0, -0x448(%rbp)
jne 0x374f
leaq 0xb562(%rip), %rdi      # 0xec99
leaq 0x926c(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x926b(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x448(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x560(%rbp)
movq -0x560(%rbp), %rax
movq %rax, -0x558(%rbp)
movq -0x558(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x558(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x37ae
movq -0x558(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x558(%rbp), %rax
movq %rax, -0x450(%rbp)
cmpq $0x0, -0x450(%rbp)
jne 0x37e5
leaq 0xb4cc(%rip), %rdi      # 0xec99
leaq 0x91d6(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x91d5(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x450(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x570(%rbp)
movq -0x570(%rbp), %rax
movq %rax, -0x568(%rbp)
movq -0x568(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x568(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x568(%rbp), %rax
movq %rax, -0x458(%rbp)
cmpq $0x0, -0x458(%rbp)
jne 0x386d
leaq 0xb444(%rip), %rdi      # 0xec99
leaq 0x914e(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x914d(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x458(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x580(%rbp)
movq -0x580(%rbp), %rax
movq %rax, -0x578(%rbp)
movq -0x578(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x578(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x578(%rbp), %rax
movq %rax, -0x460(%rbp)
cmpq $0x0, -0x460(%rbp)
jne 0x38f5
leaq 0xb3bc(%rip), %rdi      # 0xec99
leaq 0x90c6(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x90c5(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x460(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x590(%rbp)
movq -0x590(%rbp), %rax
movq %rax, -0x588(%rbp)
movq -0x588(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x3944
movq -0x588(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x588(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x588(%rbp), %rax
movq %rax, -0x468(%rbp)
cmpq $0x0, -0x468(%rbp)
jne 0x398b
leaq 0xb326(%rip), %rdi      # 0xec99
leaq 0x9030(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x902f(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x468(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x5a0(%rbp)
movq -0x5a0(%rbp), %rax
movq %rax, -0x598(%rbp)
movq -0x598(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x598(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x32e0
movq -0x598(%rbp), %rax
movq %rax, -0x470(%rbp)
cmpq $0x0, -0x470(%rbp)
jne 0x3a13
leaq 0xb29e(%rip), %rdi      # 0xec99
leaq 0x8fa8(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8fa7(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x470(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x5b0(%rbp)
movq -0x5b0(%rbp), %rax
movq %rax, -0x5a8(%rbp)
movq -0x5a8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x5a8(%rbp), %rax
movq %rax, -0x478(%rbp)
cmpq $0x0, -0x478(%rbp)
jne 0x3a8b
leaq 0xb226(%rip), %rdi      # 0xec99
leaq 0x8f30(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8f2f(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x478(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x5c0(%rbp)
movq -0x5c0(%rbp), %rax
movq %rax, -0x5b8(%rbp)
movq -0x5b8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x3ada
movq -0x5b8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x5b8(%rbp), %rax
movq %rax, -0x480(%rbp)
cmpq $0x0, -0x480(%rbp)
jne 0x3b11
leaq 0xb1a0(%rip), %rdi      # 0xec99
leaq 0x8eaa(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8ea9(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x480(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x5d0(%rbp)
movq -0x5d0(%rbp), %rax
movq %rax, -0x5c8(%rbp)
movq -0x5c8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x5c8(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x32e0
movq -0x5c8(%rbp), %rax
movq %rax, -0x488(%rbp)
cmpq $0x0, -0x488(%rbp)
jne 0x3b99
leaq 0xb118(%rip), %rdi      # 0xec99
leaq 0x8e22(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8e21(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x488(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x5e0(%rbp)
movq -0x5e0(%rbp), %rax
movq %rax, -0x5d8(%rbp)
movq -0x5d8(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x32e0
movq -0x5d8(%rbp), %rax
movq %rax, -0x490(%rbp)
cmpq $0x0, -0x490(%rbp)
jne 0x3c11
leaq 0xb0a0(%rip), %rdi      # 0xec99
leaq 0x8daa(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8da9(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x490(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x5f0(%rbp)
movq -0x5f0(%rbp), %rax
movq %rax, -0x5e8(%rbp)
movq -0x5e8(%rbp), %rax
movq %rax, -0x498(%rbp)
cmpq $0x0, -0x498(%rbp)
jne 0x3c79
leaq 0xb038(%rip), %rdi      # 0xec99
leaq 0x8d42(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8d41(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x498(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x600(%rbp)
movq -0x600(%rbp), %rax
movq %rax, -0x5f8(%rbp)
movq -0x5f8(%rbp), %rax
movq %rax, -0x4a0(%rbp)
cmpq $0x0, -0x4a0(%rbp)
jne 0x3ce1
leaq 0xafd0(%rip), %rdi      # 0xec99
leaq 0x8cda(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8cd9(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x4a0(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x610(%rbp)
movq -0x610(%rbp), %rax
movq %rax, -0x608(%rbp)
movq -0x608(%rbp), %rax
movq %rax, -0x4a8(%rbp)
cmpq $0x0, -0x4a8(%rbp)
jne 0x3d49
leaq 0xaf68(%rip), %rdi      # 0xec99
leaq 0x8c72(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8c71(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x4a8(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x620(%rbp)
movq -0x620(%rbp), %rax
movq %rax, -0x618(%rbp)
movq -0x618(%rbp), %rax
movq %rax, -0x4b0(%rbp)
cmpq $0x0, -0x4b0(%rbp)
jne 0x3db1
leaq 0xaf00(%rip), %rdi      # 0xec99
leaq 0x8c0a(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8c09(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x4b0(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x630(%rbp)
movq -0x630(%rbp), %rax
movq %rax, -0x628(%rbp)
movq -0x628(%rbp), %rax
movq %rax, -0x4b8(%rbp)
cmpq $0x0, -0x4b8(%rbp)
jne 0x3e19
leaq 0xae98(%rip), %rdi      # 0xec99
leaq 0x8ba2(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8ba1(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x4b8(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x640(%rbp)
movq -0x640(%rbp), %rax
movq %rax, -0x638(%rbp)
movq -0x638(%rbp), %rax
movq %rax, -0x4c0(%rbp)
cmpq $0x0, -0x4c0(%rbp)
jne 0x3e81
leaq 0xae30(%rip), %rdi      # 0xec99
leaq 0x8b3a(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8b39(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x4c0(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
movq -0x4d0(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x650(%rbp)
movq -0x650(%rbp), %rax
movq %rax, -0x648(%rbp)
movq $0x0, -0x658(%rbp)
movq -0x658(%rbp), %rax
movq -0x648(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x3efd
movq -0x648(%rbp), %rax
movq -0x658(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rdi
callq 0x32e0
movq -0x658(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x658(%rbp)
jmp 0x3ebd
movq -0x648(%rbp), %rax
movq %rax, -0x4c8(%rbp)
cmpq $0x0, -0x4c8(%rbp)
jne 0x3f34
leaq 0xad7d(%rip), %rdi      # 0xec99
leaq 0x8a87(%rip), %rsi      # 0xc9aa
movl $0xf, %edx
leaq 0x8a86(%rip), %rcx      # 0xc9b5
callq 0x20f0
movq -0x4c8(%rbp), %rdi
callq 0x2030
jmp 0x3fa1
jmp 0x3f44
movq 0xe0ad(%rip), %rax      # 0x11ff8
movq (%rax), %rdi
leaq 0x8a28(%rip), %rsi      # 0xc97d
leaq 0x8a3d(%rip), %rdx      # 0xc999
movb $0x0, %al
callq 0x2120
leaq -0x400(%rbp), %rdi
movl $0x80, %esi
callq 0x20d0
cltq
movq %rax, -0x408(%rbp)
movq -0x408(%rbp), %rax
movl %eax, %esi
leaq -0x400(%rbp), %rdi
movl $0x2, %edx
callq 0x2040
movl $0xffffffff, %edi       # imm = 0xFFFFFFFF
callq 0x21a0
addq $0x660, %rsp            # imm = 0x660
popq %rbp
retq
nopw (%rax,%rax)