// File: /workspace/github_c_makefile_star2_O0/naleksiev[P]fin/src/fin_mod.c
// Function: fin_mod_compile_stmt
static void fin_mod_compile_stmt(fin_ctx_t* ctx, fin_mod_compiler_t* cmp, fin_ast_stmt_t* stmt) {
    switch (stmt->type) {
        case fin_ast_stmt_type_expr: {
            fin_ast_expr_stmt_t* expr_stmt = (fin_ast_expr_stmt_t*)stmt;
            fin_mod_compile_expr(ctx, cmp, expr_stmt->expr);
            break;
        }
        case fin_ast_stmt_type_ret: {
            fin_ast_ret_stmt_t* ret_stmt = (fin_ast_ret_stmt_t*)stmt;
            if (ret_stmt->expr) {
                if (ret_stmt->expr->type == fin_ast_expr_type_init)
                    fin_mod_compile_init_expr(ctx, cmp, (fin_ast_init_expr_t*)ret_stmt->expr, cmp->ret_type);
                else
                    fin_mod_compile_expr(ctx, cmp, ret_stmt->expr);
            }
            fin_mod_code_emit_uint8(ctx, &cmp->code, fin_op_return);
            FIN_LOG("\tret\n");
            break;
        }
        case fin_ast_stmt_type_if: {
            fin_ast_if_stmt_t* if_stmt = (fin_ast_if_stmt_t*)stmt;
            fin_mod_compile_expr(ctx, cmp, if_stmt->cond);
            fin_mod_code_emit_uint8(ctx, &cmp->code, fin_op_branch_if_n);
            uint8_t* lbl_else = cmp->code.top;
            fin_mod_code_emit_uint16(ctx, &cmp->code, 0);
            FIN_LOG("\tbr_if_n     lbl_%d\n", (int32_t)(lbl_else - cmp->code.begin));
            fin_mod_scope_begin(cmp);
            fin_mod_compile_stmt(ctx, cmp, if_stmt->true_stmt);
            fin_mod_scope_end(cmp);
            if (if_stmt->false_stmt) {
                fin_mod_code_emit_uint8(ctx, &cmp->code, fin_op_branch);
                uint8_t* lbl_end = cmp->code.top;
                fin_mod_code_emit_uint16(ctx, &cmp->code, 0);
                FIN_LOG("\tbr          lbl_%d\n", (int32_t)(lbl_end - cmp->code.begin));
                FIN_LOG("lbl_%d:\n", (int32_t)(lbl_else - cmp->code.begin));
                uint16_t offset = cmp->code.top - lbl_else - 2;
                *lbl_else++ = offset & 0xFF;
                *lbl_else++ = (offset >> 8) & 0xFF;
                fin_mod_scope_begin(cmp);
                fin_mod_compile_stmt(ctx, cmp, if_stmt->false_stmt);
                fin_mod_scope_end(cmp);
                FIN_LOG("lbl_%d:\n", (int32_t)(lbl_end - cmp->code.begin));
                offset = cmp->code.top - lbl_end - 2;
                *lbl_end++ = offset & 0xFF;
                *lbl_end++ = (offset >> 8) & 0xFF;
            }
            else {
                FIN_LOG("lbl_%d:\n", (int32_t)(lbl_else - cmp->code.begin));
                uint16_t offset = cmp->code.top - lbl_else - 2;
                *lbl_else++ = offset & 0xFF;
                *lbl_else++ = (offset >> 8) & 0xFF;
            }
            break;
        }
        case fin_ast_stmt_type_for: {
            fin_ast_for_stmt_t* for_stmt = (fin_ast_for_stmt_t*)stmt;
            fin_mod_scope_begin(cmp);
            fin_mod_compile_expr(ctx, cmp, for_stmt->init);
            uint8_t* lbl_loop = cmp->code.top;
            FIN_LOG("lbl_%d:\n", (int32_t)(lbl_loop - cmp->code.begin));
            fin_mod_compile_expr(ctx, cmp, for_stmt->cond);
            fin_mod_code_emit_uint8(ctx, &cmp->code, fin_op_branch_if_n);
            uint8_t* lbl_end = cmp->code.top;
            fin_mod_code_emit_uint16(ctx, &cmp->code, 0);
            FIN_LOG("\tbr_if_n     lbl_%d\n", (int32_t)(lbl_end - cmp->code.begin));
            fin_mod_scope_begin(cmp);
            fin_mod_compile_stmt(ctx, cmp, for_stmt->stmt);
            fin_mod_scope_end(cmp);
            fin_mod_compile_expr(ctx, cmp, for_stmt->loop);
            uint16_t offset = lbl_loop - cmp->code.top - 3;
            fin_mod_code_emit_uint8(ctx, &cmp->code, fin_op_branch);
            fin_mod_code_emit_uint16(ctx, &cmp->code, offset);
            FIN_LOG("\tbr          lbl_%d\n", (int32_t)(lbl_loop - cmp->code.begin));
            FIN_LOG("lbl_%d:\n", (int32_t)(lbl_end - cmp->code.begin));
            offset = cmp->code.top - lbl_end - 2;
            *lbl_end++ = offset & 0xFF;
            *lbl_end++ = (offset >> 8) & 0xFF;
            fin_mod_scope_end(cmp);
            break;
        }
        case fin_ast_stmt_type_while: {
            fin_ast_while_stmt_t* while_stmt = (fin_ast_while_stmt_t*)stmt;
            fin_mod_scope_begin(cmp);
            uint8_t* lbl_loop = cmp->code.top;
            FIN_LOG("lbl_%d:\n", (int32_t)(lbl_loop - cmp->code.begin));
            fin_mod_compile_expr(ctx, cmp, while_stmt->cond);
            fin_mod_code_emit_uint8(ctx, &cmp->code, fin_op_branch_if_n);
            uint8_t* lbl_end = cmp->code.top;
            fin_mod_code_emit_uint16(ctx, &cmp->code, 0);
            FIN_LOG("\tbr_if_n     lbl_%d\n", (int32_t)(lbl_end - cmp->code.begin));
            fin_mod_scope_begin(cmp);
            fin_mod_compile_stmt(ctx, cmp, while_stmt->stmt);
            fin_mod_scope_end(cmp);
            uint16_t offset = lbl_loop - cmp->code.top - 3;
            fin_mod_code_emit_uint8(ctx, &cmp->code, fin_op_branch);
            fin_mod_code_emit_uint16(ctx, &cmp->code, offset);
            FIN_LOG("\tbr          lbl_%d\n", (int32_t)(lbl_loop - cmp->code.begin));
            FIN_LOG("lbl_%d:\n", (int32_t)(lbl_end - cmp->code.begin));
            offset = cmp->code.top - lbl_end - 2;
            *lbl_end++ = offset & 0xFF;
            *lbl_end++ = (offset >> 8) & 0xFF;
            fin_mod_scope_end(cmp);
            break;
        }
        case fin_ast_stmt_type_do: {
            fin_ast_do_stmt_t* do_stmt = (fin_ast_do_stmt_t*)stmt;
            uint8_t* lbl_loop = cmp->code.top;
            FIN_LOG("lbl_%d:\n", (int32_t)(lbl_loop - cmp->code.begin));
            fin_mod_scope_begin(cmp);
            fin_mod_compile_stmt(ctx, cmp, do_stmt->stmt);
            fin_mod_scope_end(cmp);
            fin_mod_compile_expr(ctx, cmp, do_stmt->cond);
            fin_mod_code_emit_uint8(ctx, &cmp->code, fin_op_branch_if);
            FIN_LOG("\tbr_if       lbl_%d\n", (int32_t)(lbl_loop - cmp->code.begin));
            uint16_t offset = lbl_loop - cmp->code.top - 2;
            fin_mod_code_emit_uint16(ctx, &cmp->code, offset);
            break;
        }
        case fin_ast_stmt_type_decl: {
            fin_ast_decl_stmt_t* decl_stmt = (fin_ast_decl_stmt_t*)stmt;
            assert(!fin_mod_resolve_local(cmp, decl_stmt->name));
            fin_mod_local_t* local = &cmp->locals[cmp->locals_count++];
            local->name = decl_stmt->name;
            local->type = decl_stmt->type->name;
            local->idx = cmp->locals_count - cmp->params_count - 1;
            local->is_param = false;
            if (decl_stmt->init) {
                if (decl_stmt->init->type == fin_ast_expr_type_init)
                    fin_mod_compile_init_expr(ctx, cmp, (fin_ast_init_expr_t*)decl_stmt->init, decl_stmt->type->name);
                else
                    fin_mod_compile_expr(ctx, cmp, decl_stmt->init);
                fin_mod_code_emit_uint8(ctx, &cmp->code, fin_op_store_local);
                fin_mod_code_emit_uint8(ctx, &cmp->code, local->idx);
                FIN_LOG("\tstore_loc  %2d\n", local->idx);
            }
            break;
        }
        case fin_ast_stmt_type_block: {
            fin_ast_block_stmt_t* block_stmt = (fin_ast_block_stmt_t*)stmt;
            fin_mod_scope_begin(cmp);
            for (fin_ast_stmt_t* s = block_stmt->stmts; s; s = s->next)
                fin_mod_compile_stmt(ctx, cmp, s);
            fin_mod_scope_end(cmp);
            break;
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xd0, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %eax
movq %rax, -0xc8(%rbp)
subq $0x7, %rax
ja 0x8d80
movq -0xc8(%rbp), %rax
leaq 0x4f9c(%rip), %rcx      # 0xd588
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x8e30
jmp 0x8d80
movq -0x18(%rbp), %rax
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0x866d
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0xb, (%rax)
jne 0x8656
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdx
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rcx
callq 0x9970
jmp 0x866b
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x28(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x8e30
jmp 0x866d
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movl $0xb, %edx
callq 0x8d90
jmp 0x8d80
movq -0x18(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x8e30
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movl $0xa, %edx
callq 0x8d90
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
xorl %edx, %edx
callq 0x9b10
movq -0x10(%rbp), %rdi
callq 0x9b80
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rdx
callq 0x85b0
movq -0x10(%rbp), %rdi
callq 0x9bc0
movq -0x30(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x8812
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movl $0x8, %edx
callq 0x8d90
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x40(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
xorl %edx, %edx
callq 0x9b10
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x38(%rbp), %rcx
subq %rcx, %rax
subq $0x2, %rax
movw %ax, -0x42(%rbp)
movzwl -0x42(%rbp), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x38(%rbp)
movb %cl, (%rax)
movzwl -0x42(%rbp), %eax
sarl $0x8, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x38(%rbp)
movb %cl, (%rax)
movq -0x10(%rbp), %rdi
callq 0x9b80
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x30(%rbp), %rax
movq 0x20(%rax), %rdx
callq 0x85b0
movq -0x10(%rbp), %rdi
callq 0x9bc0
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x40(%rbp), %rcx
subq %rcx, %rax
subq $0x2, %rax
movw %ax, -0x42(%rbp)
movzwl -0x42(%rbp), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x40(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x40(%rbp)
movb %cl, (%rax)
movzwl -0x42(%rbp), %eax
sarl $0x8, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x40(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x40(%rbp)
movb %cl, (%rax)
jmp 0x8864
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x38(%rbp), %rcx
subq %rcx, %rax
subq $0x2, %rax
movw %ax, -0x44(%rbp)
movzwl -0x44(%rbp), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x38(%rbp)
movb %cl, (%rax)
movzwl -0x44(%rbp), %eax
sarl $0x8, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x38(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x38(%rbp)
movb %cl, (%rax)
jmp 0x8d80
movq -0x18(%rbp), %rax
movq %rax, -0x50(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9b80
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x50(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x8e30
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x50(%rbp), %rax
movq 0x18(%rax), %rdx
callq 0x8e30
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movl $0xa, %edx
callq 0x8d90
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x60(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
xorl %edx, %edx
callq 0x9b10
movq -0x10(%rbp), %rdi
callq 0x9b80
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x50(%rbp), %rax
movq 0x28(%rax), %rdx
callq 0x85b0
movq -0x10(%rbp), %rdi
callq 0x9bc0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x50(%rbp), %rax
movq 0x20(%rax), %rdx
callq 0x8e30
movq -0x58(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rcx
subq %rcx, %rax
subq $0x3, %rax
movw %ax, -0x62(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movl $0x8, %edx
callq 0x8d90
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movzwl -0x62(%rbp), %edx
callq 0x9b10
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x60(%rbp), %rcx
subq %rcx, %rax
subq $0x2, %rax
movw %ax, -0x62(%rbp)
movzwl -0x62(%rbp), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x60(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x60(%rbp)
movb %cl, (%rax)
movzwl -0x62(%rbp), %eax
sarl $0x8, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x60(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x60(%rbp)
movb %cl, (%rax)
movq -0x10(%rbp), %rdi
callq 0x9bc0
jmp 0x8d80
movq -0x18(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9b80
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x78(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x70(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x8e30
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movl $0xa, %edx
callq 0x8d90
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x80(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
xorl %edx, %edx
callq 0x9b10
movq -0x10(%rbp), %rdi
callq 0x9b80
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x70(%rbp), %rax
movq 0x18(%rax), %rdx
callq 0x85b0
movq -0x10(%rbp), %rdi
callq 0x9bc0
movq -0x78(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rcx
subq %rcx, %rax
subq $0x3, %rax
movw %ax, -0x82(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movl $0x8, %edx
callq 0x8d90
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movzwl -0x82(%rbp), %edx
callq 0x9b10
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x80(%rbp), %rcx
subq %rcx, %rax
subq $0x2, %rax
movw %ax, -0x82(%rbp)
movzwl -0x82(%rbp), %eax
andl $0xff, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movzwl -0x82(%rbp), %eax
sarl $0x8, %eax
andl $0xff, %eax
movb %al, %cl
movq -0x80(%rbp), %rax
movq %rax, %rdx
addq $0x1, %rdx
movq %rdx, -0x80(%rbp)
movb %cl, (%rax)
movq -0x10(%rbp), %rdi
callq 0x9bc0
jmp 0x8d80
movq -0x18(%rbp), %rax
movq %rax, -0x90(%rbp)
movq -0x10(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x98(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9b80
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x90(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x85b0
movq -0x10(%rbp), %rdi
callq 0x9bc0
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0x90(%rbp), %rax
movq 0x18(%rax), %rdx
callq 0x8e30
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movl $0x9, %edx
callq 0x8d90
movq -0x98(%rbp), %rax
movq -0x10(%rbp), %rcx
movq 0x18(%rcx), %rcx
subq %rcx, %rax
subq $0x2, %rax
movw %ax, -0x9a(%rbp)
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movzwl -0x9a(%rbp), %edx
callq 0x9b10
jmp 0x8d80
movq -0x18(%rbp), %rax
movq %rax, -0xa8(%rbp)
movq -0x10(%rbp), %rdi
movq -0xa8(%rbp), %rax
movq 0x18(%rax), %rsi
callq 0x9c30
cmpq $0x0, %rax
jne 0x8bd5
jmp 0x8bf4
leaq 0x4b06(%rip), %rdi      # 0xd6e2
leaq 0x4ac1(%rip), %rsi      # 0xd6a4
movl $0x29d, %edx            # imm = 0x29D
leaq 0x4b20(%rip), %rcx      # 0xd70f
callq 0x3110
movq -0x10(%rbp), %rax
addq $0x130, %rax            # imm = 0x130
movq -0x10(%rbp), %rdx
movb 0x1a30(%rdx), %cl
movb %cl, %sil
addb $0x1, %sil
movb %sil, 0x1a30(%rdx)
movzbl %cl, %ecx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
movq -0xa8(%rbp), %rax
movq 0x18(%rax), %rcx
movq -0xb0(%rbp), %rax
movq %rcx, (%rax)
movq -0xa8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rcx
movq -0xb0(%rbp), %rax
movq %rcx, 0x8(%rax)
movq -0x10(%rbp), %rax
movzbl 0x1a30(%rax), %eax
movq -0x10(%rbp), %rcx
movzbl 0x1a32(%rcx), %ecx
subl %ecx, %eax
subl $0x1, %eax
movb %al, %cl
movq -0xb0(%rbp), %rax
movb %cl, 0x10(%rax)
movq -0xb0(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0xa8(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x8d1d
movq -0xa8(%rbp), %rax
movq 0x20(%rax), %rax
cmpl $0xb, (%rax)
jne 0x8cd3
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0xa8(%rbp), %rax
movq 0x20(%rax), %rdx
movq -0xa8(%rbp), %rax
movq 0x10(%rax), %rax
movq 0x8(%rax), %rcx
callq 0x9970
jmp 0x8ceb
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0xa8(%rbp), %rax
movq 0x20(%rax), %rdx
callq 0x8e30
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movl $0x4, %edx
callq 0x8d90
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
addq $0x18, %rsi
movq -0xb0(%rbp), %rax
movzbl 0x10(%rax), %edx
callq 0x8d90
jmp 0x8d80
movq -0x18(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0x10(%rbp), %rdi
callq 0x9b80
movq -0xb8(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0xc0(%rbp)
cmpq $0x0, -0xc0(%rbp)
je 0x8d77
movq -0x8(%rbp), %rdi
movq -0x10(%rbp), %rsi
movq -0xc0(%rbp), %rdx
callq 0x85b0
movq -0xc0(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0xc0(%rbp)
jmp 0x8d45
movq -0x10(%rbp), %rdi
callq 0x9bc0
addq $0xd0, %rsp
popq %rbp
retq
nopl (%rax)