// File: /workspace/github_c_makefile_star2_O0/yangtau[P]hedgehog/src/ast.c
// Function: node_to_str
static void _node_to_str(const struct hg_ast_node* _node, uint32_t indent, uint32_t depth, struct hg_strbuf* buf) {
#define __add_indent hg_strbuf_append(buf, _get_indent_str(indent, depth))
#define __add_nl     hg_strbuf_append(buf, "\n")
#define __add_space  hg_strbuf_append(buf, " ")
#define __add_block(block, end)                                        \
    do {                                                               \
        if (__hg_ast_raw(block, struct hg_ast_node_array)->len == 0) { \
            hg_strbuf_append(buf, "{}%s", end);                        \
        } else {                                                       \
            hg_strbuf_append(buf, "{\n");                              \
            _node_to_str(block, indent, depth + 1, buf);               \
            __add_indent;                                              \
            hg_strbuf_append(buf, "}%s", end);                         \
        }                                                              \
    } while (0)

    switch (_node->type) {
    case HG_AST_NODE_ASSIGNMENT: {
        __hg_ast_raw_to(_node, struct hg_ast_assignment_stat, node);

        __add_indent;
        _node_to_str(node->vars, indent, depth, buf);
        hg_strbuf_append(buf, " = ");
        _node_to_str(node->exprs, indent, depth, buf);
        __add_nl;
    } break;
    case HG_AST_NODE_FOR: {
        __hg_ast_raw_to(_node, struct hg_ast_for_stat, node);

        __add_indent;
        hg_strbuf_append(buf, "for ");
        _node_to_str(node->params, indent, depth, buf);
        hg_strbuf_append(buf, " in ");
        _node_to_str(node->iterator, indent, depth, buf);

        __add_space;
        __add_block(node->block, "\n");
    } break;
    case HG_AST_NODE_IF: {
        __hg_ast_raw_to(_node, struct hg_ast_if_stat, node);

        __add_indent;
        hg_strbuf_append(buf, "if ");
        _node_to_str(node->condition, indent, depth, buf);
        __add_space;

        // if block
        __add_block(node->block, node->else_block ? " " : "\n");

        // else block
        if (node->else_block) {
            hg_strbuf_append(buf, "else ");
            // TODO: do not inline this
            __add_block(node->else_block, "\n");
        }
    } break;
    case HG_AST_NODE_FUNC: {
        __hg_ast_raw_to(_node, struct hg_ast_func_stat, node);

        __add_indent;
        hg_strbuf_append(buf, "fn ");
        _node_to_str(node->id, indent, depth, buf);

        hg_strbuf_append(buf, "(");
        if (node->params) {
            _node_to_str(node->params, indent, depth, buf);
        }
        hg_strbuf_append(buf, ") ");

        __add_block(node->block, "\n");
    } break;
    case HG_AST_NODE_BREAK: {
        __add_indent;
        hg_strbuf_append(buf, "break\n");
    } break;
    case HG_AST_NODE_CONTINUE: {
        __add_indent;
        hg_strbuf_append(buf, "continue\n");
    } break;
    case HG_AST_NODE_RETURN: {
        __hg_ast_raw_to(_node, struct hg_ast_return_stat, node);

        __add_indent;
        hg_strbuf_append(buf, "return");

        if (node->exprs) {
            __add_space;
            _node_to_str(node->exprs, indent, depth, buf);
        }
        __add_nl;
    } break;
    case HG_AST_NODE_EXPR_STAT: {
        __hg_ast_raw_to(_node, struct hg_ast_expr_stat, node);
        __add_indent;
        _node_to_str(node->expr, indent, depth, buf);
        __add_nl;
    } break;
    // exprs (no indent and no new line by default):
    case HG_AST_NODE_CALL: {
        __hg_ast_raw_to(_node, struct hg_ast_call_expr, node);

        _node_to_str(node->callable, indent, depth, buf);

        hg_strbuf_append(buf, "(");
        if (node->exprs) {
            _node_to_str(node->exprs, indent, depth, buf);
        }
        hg_strbuf_append(buf, ")");
    } break;
    case HG_AST_NODE_FIELD: {
        __hg_ast_raw_to(_node, struct hg_ast_field_expr, node);

        _node_to_str(node->prefix, indent, depth, buf);
        hg_strbuf_append(buf, ".");
        _node_to_str(node->field, indent, depth, buf);
    } break;
    case HG_AST_NODE_INDEX: {
        __hg_ast_raw_to(_node, struct hg_ast_index_expr, node);

        _node_to_str(node->prefix, indent, depth, buf);

        hg_strbuf_append(buf, "[");
        _node_to_str(node->index, indent, depth, buf);
        hg_strbuf_append(buf, "]");
    } break;
    case HG_AST_NODE_FUNC_DEF: {
        __hg_ast_raw_to(_node, struct hg_ast_func_def_expr, node);

        hg_strbuf_append(buf, "fn ");

        hg_strbuf_append(buf, "(");
        if (node->params) {
            _node_to_str(node->params, indent, depth, buf);
        }
        hg_strbuf_append(buf, ") ");

        __add_block(node->block, "");
    } break;
    case HG_AST_NODE_BINARY_EXPR: {
        __hg_ast_raw_to(_node, struct hg_ast_binary_expr, node);
        _node_to_str(node->left, indent, depth, buf);
        hg_strbuf_append(buf, " %s ", _op_to_str(node->op));
        _node_to_str(node->right, indent, depth, buf);
    } break;
    case HG_AST_NODE_UNARY_EXPR: {
        __hg_ast_raw_to(_node, struct hg_ast_unary_expr, node);
        hg_strbuf_append(buf, "%s%s", _op_to_str(node->op), node->op == HG_AST_NODE_OP_SUB ? "" : " ");
        _node_to_str(node->expr, indent, depth, buf);
    } break;
    case HG_AST_NODE_TABLE: {
        __hg_ast_raw_to(_node, struct hg_ast_table_expr, node);
        hg_strbuf_append(buf, "{");
        if (node->entries) {
            _node_to_str(node->entries, indent, depth, buf);
        }
        hg_strbuf_append(buf, "}");
    } break;
    case HG_AST_NODE_TABLE_ENTRY: {
        __hg_ast_raw_to(_node, struct hg_ast_table_entry, node);
        _node_to_str(node->key, indent, depth, buf);
        hg_strbuf_append(buf, ": ");
        _node_to_str(node->value, indent, depth, buf);
    } break;
    case HG_AST_NODE_BRACK_EXPR: {
        __hg_ast_raw_to(_node, struct hg_ast_brack_expr, node);
        hg_strbuf_append(buf, "(");
        _node_to_str(node->expr, indent, depth, buf);
        hg_strbuf_append(buf, ")");
    } break;
    case HG_AST_NODE_LITERAL_STR: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        hg_strbuf_append(buf, "\"%s\"", node->as_str);
    } break;
    case HG_AST_NODE_LITERAL_SYMBOL: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        hg_strbuf_append(buf, ".%s", node->as_str);
    } break;
    case HG_AST_NODE_LITERAL_ID: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        hg_strbuf_append(buf, "%s", node->as_id);
    } break;
    case HG_AST_NODE_LITERAL_BOOL: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        hg_strbuf_append(buf, "%s", node->as_bool ? "true" : "false");
    } break;
    case HG_AST_NODE_LITERAL_INT: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        hg_strbuf_append(buf, "%" HGFormatInt, node->as_int);
    } break;
    case HG_AST_NODE_LITERAL_FLOAT: {
        __hg_ast_raw_to(_node, struct hg_ast_literal, node);
        hg_strbuf_append(buf, "%" HGFormatFloat, node->as_float);
    } break;
    case HG_AST_NODE_ARRAY_STATS: {
        __hg_ast_raw_to(_node, struct hg_ast_node_array, node);
        for (size_t i = 0; i < node->len; i++) {
            _node_to_str(node->arr[i], indent, depth, buf);
            // __add_nl;
        }
    } break;
    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++) {
            _node_to_str(node->arr[i], indent, depth, buf);
            if (i != node->len - 1) {
                hg_strbuf_append(buf, ", ");
            }
        }
    } break;
    default:
        unreachable_();
    }
#undef __add_indent
#undef __add_nl
#undef __add_space
#undef __add_block
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x650, %rsp            # imm = 0x650
movq %rdi, -0x410(%rbp)
movl %esi, -0x414(%rbp)
movl %edx, -0x418(%rbp)
movq %rcx, -0x420(%rbp)
movq -0x410(%rbp), %rax
movl (%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x5d0(%rbp)
subl $0x21, %eax
ja 0x51b1
movq -0x5d0(%rbp), %rax
leaq 0x8118(%rip), %rcx      # 0xc168
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x430(%rbp)
movq -0x430(%rbp), %rax
movq %rax, -0x428(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x5d8(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x5d8(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x428(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x88f0(%rip), %rsi      # 0xc9ca
movb $0x0, %al
callq 0x5d40
movq -0x428(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x7f8c(%rip), %rsi      # 0xc09e
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x440(%rbp)
movq -0x440(%rbp), %rax
movq %rax, -0x438(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x5e0(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x5e0(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x8852(%rip), %rsi      # 0xc9ce
movb $0x0, %al
callq 0x5d40
movq -0x438(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x881f(%rip), %rsi      # 0xc9d3
movb $0x0, %al
callq 0x5d40
movq -0x438(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x885f(%rip), %rsi      # 0xca4b
movb $0x0, %al
callq 0x5d40
movq -0x438(%rbp), %rax
movq 0x18(%rax), %rax
subq $0x0, %rax
movq %rax, -0x448(%rbp)
movq -0x448(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x4238
movq -0x420(%rbp), %rdi
leaq 0x87b3(%rip), %rsi      # 0xc9d8
leaq 0x7e72(%rip), %rdx      # 0xc09e
movb $0x0, %al
callq 0x5d40
jmp 0x42bf
movq -0x420(%rbp), %rdi
leaq 0x8797(%rip), %rsi      # 0xc9dd
movb $0x0, %al
callq 0x5d40
movq -0x438(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
addl $0x1, %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rax
movq %rax, -0x5e8(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x5e8(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x8728(%rip), %rsi      # 0xc9d9
leaq 0x7de6(%rip), %rdx      # 0xc09e
movb $0x0, %al
callq 0x5d40
jmp 0x42c1
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x458(%rbp)
movq -0x458(%rbp), %rax
movq %rax, -0x450(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x5f0(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x5f0(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x86bc(%rip), %rsi      # 0xc9e0
movb $0x0, %al
callq 0x5d40
movq -0x450(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x86ef(%rip), %rsi      # 0xca4b
movb $0x0, %al
callq 0x5d40
movq -0x450(%rbp), %rax
movq 0x10(%rax), %rax
subq $0x0, %rax
movq %rax, -0x460(%rbp)
movq -0x460(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x43c2
movq -0x420(%rbp), %rdi
movq -0x450(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x7cfe(%rip), %rdx      # 0xc09e
leaq 0x86a4(%rip), %rax      # 0xca4b
cmpq $0x0, %rcx
cmovneq %rax, %rdx
leaq 0x8622(%rip), %rsi      # 0xc9d8
movb $0x0, %al
callq 0x5d40
jmp 0x4463
movq -0x420(%rbp), %rdi
leaq 0x860d(%rip), %rsi      # 0xc9dd
movb $0x0, %al
callq 0x5d40
movq -0x450(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
addl $0x1, %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rax
movq %rax, -0x5f8(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x5f8(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
movq -0x450(%rbp), %rax
movq 0x18(%rax), %rcx
leaq 0x7c58(%rip), %rdx      # 0xc09e
leaq 0x85fe(%rip), %rax      # 0xca4b
cmpq $0x0, %rcx
cmovneq %rax, %rdx
leaq 0x857d(%rip), %rsi      # 0xc9d9
movb $0x0, %al
callq 0x5d40
jmp 0x4465
movq -0x450(%rbp), %rax
cmpq $0x0, 0x18(%rax)
je 0x455c
movq -0x420(%rbp), %rdi
leaq 0x855f(%rip), %rsi      # 0xc9e4
movb $0x0, %al
callq 0x5d40
movq -0x450(%rbp), %rax
movq 0x18(%rax), %rax
subq $0x0, %rax
movq %rax, -0x468(%rbp)
movq -0x468(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x44d1
movq -0x420(%rbp), %rdi
leaq 0x851a(%rip), %rsi      # 0xc9d8
leaq 0x7bd9(%rip), %rdx      # 0xc09e
movb $0x0, %al
callq 0x5d40
jmp 0x4558
movq -0x420(%rbp), %rdi
leaq 0x84fe(%rip), %rsi      # 0xc9dd
movb $0x0, %al
callq 0x5d40
movq -0x450(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
addl $0x1, %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rax
movq %rax, -0x600(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x600(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x848f(%rip), %rsi      # 0xc9d9
leaq 0x7b4d(%rip), %rdx      # 0xc09e
movb $0x0, %al
callq 0x5d40
jmp 0x455a
jmp 0x455c
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x478(%rbp)
movq -0x478(%rbp), %rax
movq %rax, -0x470(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x608(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x608(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x842b(%rip), %rsi      # 0xc9ea
movb $0x0, %al
callq 0x5d40
movq -0x470(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x83f7(%rip), %rsi      # 0xc9ee
movb $0x0, %al
callq 0x5d40
movq -0x470(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x462f
movq -0x470(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x83b3(%rip), %rsi      # 0xc9f0
movb $0x0, %al
callq 0x5d40
movq -0x470(%rbp), %rax
movq 0x18(%rax), %rax
subq $0x0, %rax
movq %rax, -0x480(%rbp)
movq -0x480(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x4689
movq -0x420(%rbp), %rdi
leaq 0x8362(%rip), %rsi      # 0xc9d8
leaq 0x7a21(%rip), %rdx      # 0xc09e
movb $0x0, %al
callq 0x5d40
jmp 0x4710
movq -0x420(%rbp), %rdi
leaq 0x8346(%rip), %rsi      # 0xc9dd
movb $0x0, %al
callq 0x5d40
movq -0x470(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
addl $0x1, %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rax
movq %rax, -0x610(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x610(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x82d7(%rip), %rsi      # 0xc9d9
leaq 0x7995(%rip), %rdx      # 0xc09e
movb $0x0, %al
callq 0x5d40
jmp 0x4712
jmp 0x5210
movq -0x420(%rbp), %rax
movq %rax, -0x618(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x618(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x829e(%rip), %rsi      # 0xc9f3
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x420(%rbp), %rax
movq %rax, -0x620(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x620(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x825b(%rip), %rsi      # 0xc9fa
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x490(%rbp)
movq -0x490(%rbp), %rax
movq %rax, -0x488(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x628(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x628(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0xa413(%rip), %rsi      # 0xec1c
movb $0x0, %al
callq 0x5d40
movq -0x488(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x4856
movq -0x420(%rbp), %rdi
leaq 0x821f(%rip), %rsi      # 0xca4b
movb $0x0, %al
callq 0x5d40
movq -0x488(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x783a(%rip), %rsi      # 0xc09e
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x4a0(%rbp)
movq -0x4a0(%rbp), %rax
movq %rax, -0x498(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x630(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x630(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x498(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x77ad(%rip), %rsi      # 0xc09e
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x4b0(%rbp)
movq -0x4b0(%rbp), %rax
movq %rax, -0x4a8(%rbp)
movq -0x4a8(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x80a0(%rip), %rsi      # 0xc9ee
movb $0x0, %al
callq 0x5d40
movq -0x4a8(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x4986
movq -0x4a8(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x80da(%rip), %rsi      # 0xca6e
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x4c0(%rbp)
movq -0x4c0(%rbp), %rax
movq %rax, -0x4b8(%rbp)
movq -0x4b8(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x8013(%rip), %rsi      # 0xca04
movb $0x0, %al
callq 0x5d40
movq -0x4b8(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x4d0(%rbp)
movq -0x4d0(%rbp), %rax
movq %rax, -0x4c8(%rbp)
movq -0x4c8(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x7f95(%rip), %rsi      # 0xca06
movb $0x0, %al
callq 0x5d40
movq -0x4c8(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x7f5f(%rip), %rsi      # 0xca08
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x4e0(%rbp)
movq -0x4e0(%rbp), %rax
movq %rax, -0x4d8(%rbp)
movq -0x420(%rbp), %rdi
leaq 0x7f07(%rip), %rsi      # 0xc9ea
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x7ef6(%rip), %rsi      # 0xc9ee
movb $0x0, %al
callq 0x5d40
movq -0x4d8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x4b30
movq -0x4d8(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x7eb2(%rip), %rsi      # 0xc9f0
movb $0x0, %al
callq 0x5d40
movq -0x4d8(%rbp), %rax
movq 0x10(%rax), %rax
subq $0x0, %rax
movq %rax, -0x4e8(%rbp)
movq -0x4e8(%rbp), %rax
cmpq $0x0, 0x8(%rax)
jne 0x4b8a
movq -0x420(%rbp), %rdi
leaq 0x7e61(%rip), %rsi      # 0xc9d8
leaq 0x7521(%rip), %rdx      # 0xc09f
movb $0x0, %al
callq 0x5d40
jmp 0x4c11
movq -0x420(%rbp), %rdi
leaq 0x7e45(%rip), %rsi      # 0xc9dd
movb $0x0, %al
callq 0x5d40
movq -0x4d8(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
addl $0x1, %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rax
movq %rax, -0x638(%rbp)
movl -0x414(%rbp), %edi
movl -0x418(%rbp), %esi
callq 0x5220
movq -0x638(%rbp), %rdi
movq %rax, %rsi
movb $0x0, %al
callq 0x5d40
movq -0x420(%rbp), %rdi
leaq 0x7dd6(%rip), %rsi      # 0xc9d9
leaq 0x7495(%rip), %rdx      # 0xc09f
movb $0x0, %al
callq 0x5d40
jmp 0x4c13
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x4f8(%rbp)
movq -0x4f8(%rbp), %rax
movq %rax, -0x4f0(%rbp)
movq -0x4f0(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rax
movq %rax, -0x640(%rbp)
movq -0x4f0(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x5370
movq -0x640(%rbp), %rdi
movq %rax, %rdx
leaq 0x7d81(%rip), %rsi      # 0xca0a
movb $0x0, %al
callq 0x5d40
movq -0x4f0(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x508(%rbp)
movq -0x508(%rbp), %rax
movq %rax, -0x500(%rbp)
movq -0x420(%rbp), %rax
movq %rax, -0x648(%rbp)
movq -0x500(%rbp), %rax
movl 0x8(%rax), %edi
callq 0x5370
movq -0x648(%rbp), %rdi
movq %rax, %rdx
movq -0x500(%rbp), %rax
movl 0x8(%rax), %esi
leaq 0x7d3b(%rip), %rcx      # 0xca4b
leaq 0x7388(%rip), %rax      # 0xc09f
cmpl $0xb, %esi
cmoveq %rax, %rcx
leaq 0x7cea(%rip), %rsi      # 0xca0f
movb $0x0, %al
callq 0x5d40
movq -0x500(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x518(%rbp)
movq -0x518(%rbp), %rax
movq %rax, -0x510(%rbp)
movq -0x420(%rbp), %rdi
leaq 0x7c92(%rip), %rsi      # 0xca14
movb $0x0, %al
callq 0x5d40
movq -0x510(%rbp), %rax
cmpq $0x0, 0x8(%rax)
je 0x4dba
movq -0x510(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x7c4e(%rip), %rsi      # 0xca16
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x528(%rbp)
movq -0x528(%rbp), %rax
movq %rax, -0x520(%rbp)
movq -0x520(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x7bf3(%rip), %rsi      # 0xca18
movb $0x0, %al
callq 0x5d40
movq -0x520(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x538(%rbp)
movq -0x538(%rbp), %rax
movq %rax, -0x530(%rbp)
movq -0x420(%rbp), %rdi
leaq 0x7b6c(%rip), %rsi      # 0xc9ee
movb $0x0, %al
callq 0x5d40
movq -0x530(%rbp), %rax
movq 0x8(%rax), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x420(%rbp), %rdi
leaq 0x7bb4(%rip), %rsi      # 0xca6e
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x548(%rbp)
movq -0x548(%rbp), %rax
movq %rax, -0x540(%rbp)
movq -0x420(%rbp), %rdi
movq -0x540(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x7b1c(%rip), %rsi      # 0xca1b
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x558(%rbp)
movq -0x558(%rbp), %rax
movq %rax, -0x550(%rbp)
movq -0x420(%rbp), %rdi
movq -0x550(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x7adc(%rip), %rsi      # 0xca20
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x568(%rbp)
movq -0x568(%rbp), %rax
movq %rax, -0x560(%rbp)
movq -0x420(%rbp), %rdi
movq -0x560(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x9ac4(%rip), %rsi      # 0xea4d
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x578(%rbp)
movq -0x578(%rbp), %rax
movq %rax, -0x570(%rbp)
movq -0x420(%rbp), %rdi
movq -0x570(%rbp), %rax
movb 0x8(%rax), %cl
leaq 0x9c76(%rip), %rdx      # 0xec43
leaq 0x9c66(%rip), %rax      # 0xec3a
testb $0x1, %cl
cmovneq %rax, %rdx
leaq 0x9a6b(%rip), %rsi      # 0xea4d
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x588(%rbp)
movq -0x588(%rbp), %rax
movq %rax, -0x580(%rbp)
movq -0x420(%rbp), %rdi
movq -0x580(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x79fd(%rip), %rsi      # 0xca24
movb $0x0, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x598(%rbp)
movq -0x598(%rbp), %rax
movq %rax, -0x590(%rbp)
movq -0x420(%rbp), %rdi
movq -0x590(%rbp), %rax
movsd 0x8(%rax), %xmm0
leaq 0x79bb(%rip), %rsi      # 0xca28
movb $0x1, %al
callq 0x5d40
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x5a8(%rbp)
movq -0x5a8(%rbp), %rax
movq %rax, -0x5a0(%rbp)
movq $0x0, -0x5b0(%rbp)
movq -0x5b0(%rbp), %rax
movq -0x5a0(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x50f7
movq -0x5a0(%rbp), %rax
movq -0x5b0(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x5b0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5b0(%rbp)
jmp 0x50a4
jmp 0x5210
movq -0x410(%rbp), %rax
subq $0x0, %rax
movq %rax, -0x5c0(%rbp)
movq -0x5c0(%rbp), %rax
movq %rax, -0x5b8(%rbp)
movq $0x0, -0x5c8(%rbp)
movq -0x5c8(%rbp), %rax
movq -0x5b8(%rbp), %rcx
cmpq 0x8(%rcx), %rax
jae 0x51af
movq -0x5b8(%rbp), %rax
movq -0x5c8(%rbp), %rcx
movq 0x18(%rax,%rcx,8), %rdi
movl -0x414(%rbp), %esi
movl -0x418(%rbp), %edx
movq -0x420(%rbp), %rcx
callq 0x4000
movq -0x5c8(%rbp), %rax
movq -0x5b8(%rbp), %rcx
movq 0x8(%rcx), %rcx
subq $0x1, %rcx
cmpq %rcx, %rax
je 0x5196
movq -0x420(%rbp), %rdi
leaq 0x789d(%rip), %rsi      # 0xca2c
movb $0x0, %al
callq 0x5d40
jmp 0x5198
movq -0x5c8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x5c8(%rbp)
jmp 0x5127
jmp 0x5210
jmp 0x51b3
movq 0xce3e(%rip), %rax      # 0x11ff8
movq (%rax), %rdi
leaq 0x77b9(%rip), %rsi      # 0xc97d
leaq 0x7864(%rip), %rdx      # 0xca2f
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 $0x650, %rsp            # imm = 0x650
popq %rbp
retq
nopl (%rax)