// File: /workspace/github_c_makefile_star2_O0/janet-lang[P]janet/src/core/vm.c
// Function: janet_continue_no_check
static JanetSignal janet_continue_no_check(JanetFiber *fiber, Janet in, Janet *out) {

    JanetFiberStatus old_status = janet_fiber_status(fiber);

#ifdef JANET_EV
    janet_fiber_did_resume(fiber);
#endif

    /* Clear last value */
    fiber->last_value = janet_wrap_nil();

    /* Continue child fiber if it exists */
    if (fiber->child) {
        if (janet_vm.root_fiber == NULL) janet_vm.root_fiber = fiber;
        JanetFiber *child = fiber->child;
        uint32_t instr = (janet_stack_frame(fiber->data + fiber->frame)->pc)[0];
        janet_vm.stackn++;
        JanetSignal sig = janet_continue(child, in, &in);
        janet_vm.stackn--;
        if (janet_vm.root_fiber == fiber) janet_vm.root_fiber = NULL;
        if (sig != JANET_SIGNAL_OK && !(child->flags & (1 << sig))) {
            *out = in;
            janet_fiber_set_status(fiber, sig);
            fiber->last_value = child->last_value;
            return sig;
        }
        /* Check if we need any special handling for certain opcodes */
        switch (instr & 0x7F) {
            default:
                break;
            case JOP_NEXT: {
                if (sig == JANET_SIGNAL_OK ||
                        sig == JANET_SIGNAL_ERROR ||
                        sig == JANET_SIGNAL_USER0 ||
                        sig == JANET_SIGNAL_USER1 ||
                        sig == JANET_SIGNAL_USER2 ||
                        sig == JANET_SIGNAL_USER3 ||
                        sig == JANET_SIGNAL_USER4) {
                    in = janet_wrap_nil();
                } else {
                    in = janet_wrap_integer(0);
                }
                break;
            }
        }
        fiber->child = NULL;
    }

    /* Handle new fibers being resumed with a non-nil value */
    if (old_status == JANET_STATUS_NEW && !janet_checktype(in, JANET_NIL)) {
        Janet *stack = fiber->data + fiber->frame;
        JanetFunction *func = janet_stack_frame(stack)->func;
        if (func) {
            if (func->def->arity > 0) {
                stack[0] = in;
            } else if (func->def->flags & JANET_FUNCDEF_FLAG_VARARG) {
                stack[0] = janet_wrap_tuple(janet_tuple_n(&in, 1));
            }
        }
    }

    /* Save global state */
    JanetTryState tstate;
    JanetSignal sig = janet_try(&tstate);
    if (!sig) {
        /* Normal setup */
        if (janet_vm.root_fiber == NULL) janet_vm.root_fiber = fiber;
        janet_vm.fiber = fiber;
        janet_fiber_set_status(fiber, JANET_STATUS_ALIVE);
        sig = run_vm(fiber, in);
    }

    /* Restore */
    if (janet_vm.root_fiber == fiber) janet_vm.root_fiber = NULL;
    janet_fiber_set_status(fiber, sig);
    janet_restore(&tstate);
    fiber->last_value = tstate.payload;
    *out = tstate.payload;

    return sig;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rsi, -0x10(%rbp)
movq %rdi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq -0x18(%rbp), %rdi
callq 0x36a40
movl %eax, -0x24(%rbp)
movq -0x18(%rbp), %rdi
callq 0x2aa00
movq -0x18(%rbp), %rax
movq %rax, -0x170(%rbp)
movabsq $-0x77fffffffffff, %rdi # imm = 0xFFF8800000000001
callq 0x7b460
movq %rax, %rcx
movq -0x170(%rbp), %rax
movq %rcx, -0x30(%rbp)
movq -0x30(%rbp), %rcx
movq %rcx, 0x40(%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x7a0f4
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
cmpq $0x0, 0x28(%rax)
jne 0x79f78
movq -0x18(%rbp), %rax
movq %rax, -0x178(%rbp)
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
movq -0x178(%rbp), %rcx
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rax
movq 0x38(%rax), %rax
movq %rax, -0x38(%rbp)
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rcx
movslq 0x14(%rcx), %rcx
movq -0x18(%rax,%rcx,8), %rax
movl (%rax), %eax
movl %eax, -0x3c(%rbp)
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
movl 0x18(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x18(%rax)
movq -0x38(%rbp), %rdi
movq -0x10(%rbp), %rsi
leaq -0x10(%rbp), %rdx
callq 0x70a80
movl %eax, -0x40(%rbp)
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
movl 0x18(%rax), %ecx
addl $-0x1, %ecx
movl %ecx, 0x18(%rax)
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
movq 0x28(%rax), %rax
cmpq -0x18(%rbp), %rax
jne 0x7a016
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
movq $0x0, 0x28(%rax)
cmpl $0x0, -0x40(%rbp)
je 0x7a07c
movq -0x38(%rbp), %rax
movl 0x10(%rax), %eax
movl -0x40(%rbp), %ecx
movl $0x1, %edx
shll %cl, %edx
movl %edx, %ecx
andl %ecx, %eax
cmpl $0x0, %eax
jne 0x7a07c
movq -0x20(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, (%rax)
movq -0x18(%rbp), %rax
movl 0x10(%rax), %ecx
andl $0xffc0ffff, %ecx       # imm = 0xFFC0FFFF
movl %ecx, 0x10(%rax)
movl -0x40(%rbp), %ecx
shll $0x10, %ecx
movq -0x18(%rbp), %rax
orl 0x10(%rax), %ecx
movl %ecx, 0x10(%rax)
movq -0x18(%rbp), %rax
movq -0x38(%rbp), %rcx
movq 0x40(%rcx), %rcx
movq %rcx, 0x40(%rax)
movl -0x40(%rbp), %eax
movl %eax, -0x4(%rbp)
jmp 0x7a340
movl -0x3c(%rbp), %eax
andl $0x7f, %eax
subl $0x49, %eax
je 0x7a08b
jmp 0x7a089
jmp 0x7a0e8
cmpl $0x0, -0x40(%rbp)
je 0x7a0b5
cmpl $0x1, -0x40(%rbp)
je 0x7a0b5
cmpl $0x4, -0x40(%rbp)
je 0x7a0b5
cmpl $0x5, -0x40(%rbp)
je 0x7a0b5
cmpl $0x6, -0x40(%rbp)
je 0x7a0b5
cmpl $0x7, -0x40(%rbp)
je 0x7a0b5
cmpl $0x8, -0x40(%rbp)
jne 0x7a0d2
movabsq $-0x77fffffffffff, %rdi # imm = 0xFFF8800000000001
callq 0x7b460
movq %rax, -0x48(%rbp)
movq -0x48(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0x7a0e6
xorps %xmm0, %xmm0
callq 0x7b820
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x10(%rbp)
jmp 0x7a0e8
movq -0x18(%rbp), %rax
movq $0x0, 0x38(%rax)
cmpl $0xe, -0x24(%rbp)
jne 0x7a1f8
xorl %eax, %eax
testb $0x1, %al
jne 0x7a106
jmp 0x7a133
movsd -0x10(%rbp), %xmm0
ucomisd %xmm0, %xmm0
setp %al
testb $0x1, %al
jne 0x7a11b
jmp 0x7a1f8
movq -0x10(%rbp), %rax
shrq $0x2f, %rax
andq $0xf, %rax
cmpq $0x0, %rax
je 0x7a1f8
jmp 0x7a154
movabsq $-0x800000000000, %rax  # imm = 0xFFFF800000000000
andq -0x10(%rbp), %rax
movabsq $-0x7800000000000, %rcx # imm = 0xFFF8800000000000
cmpq %rcx, %rax
je 0x7a1f8
movq -0x18(%rbp), %rax
movq 0x30(%rax), %rax
movq -0x18(%rbp), %rcx
movslq 0x14(%rcx), %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x58(%rbp)
movq -0x58(%rbp), %rax
movq -0x20(%rax), %rax
movq %rax, -0x60(%rbp)
cmpq $0x0, -0x60(%rbp)
je 0x7a1f6
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
cmpl $0x0, 0x60(%rax)
jle 0x7a19d
movq -0x58(%rbp), %rax
movq -0x10(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x7a1f4
movq -0x60(%rbp), %rax
movq 0x10(%rax), %rax
movl 0x58(%rax), %eax
andl $0x10000, %eax          # imm = 0x10000
cmpl $0x0, %eax
je 0x7a1f2
movq -0x58(%rbp), %rax
movq %rax, -0x180(%rbp)
leaq -0x10(%rbp), %rdi
movl $0x1, %esi
callq 0x6a7d0
movq %rax, %rdi
movabsq $-0x4000000000000, %rsi # imm = 0xFFFC000000000000
callq 0x7b550
movq %rax, %rcx
movq -0x180(%rbp), %rax
movq %rcx, -0x68(%rbp)
movq -0x68(%rbp), %rcx
movq %rcx, (%rax)
jmp 0x7a1f4
jmp 0x7a1f6
jmp 0x7a1f8
leaq -0x160(%rbp), %rdi
callq 0x79b10
leaq -0x160(%rbp), %rdi
addq $0x20, %rdi
callq 0x12580
movl %eax, -0x164(%rbp)
cmpl $0x0, -0x164(%rbp)
jne 0x7a2bd
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
cmpq $0x0, 0x28(%rax)
jne 0x7a264
movq -0x18(%rbp), %rax
movq %rax, -0x188(%rbp)
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
movq -0x188(%rbp), %rcx
movq %rcx, 0x28(%rax)
movq -0x18(%rbp), %rax
movq %rax, -0x190(%rbp)
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
movq -0x190(%rbp), %rcx
movq %rcx, 0x20(%rax)
movq -0x18(%rbp), %rax
movl 0x10(%rax), %ecx
andl $0xffc0ffff, %ecx       # imm = 0xFFC0FFFF
movl %ecx, 0x10(%rax)
movq -0x18(%rbp), %rax
movl 0x10(%rax), %ecx
orl $0xf0000, %ecx          # imm = 0xF0000
movl %ecx, 0x10(%rax)
movq -0x18(%rbp), %rdi
movq -0x10(%rbp), %rsi
callq 0x71070
movl %eax, -0x164(%rbp)
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
movq 0x28(%rax), %rax
cmpq -0x18(%rbp), %rax
jne 0x7a2ef
movq %fs:0x0, %rax
leaq -0x348(%rax), %rax
movq $0x0, 0x28(%rax)
jmp 0x7a2f1
movq -0x18(%rbp), %rax
movl 0x10(%rax), %ecx
andl $0xffc0ffff, %ecx       # imm = 0xFFC0FFFF
movl %ecx, 0x10(%rax)
movl -0x164(%rbp), %ecx
shll $0x10, %ecx
movq -0x18(%rbp), %rax
orl 0x10(%rax), %ecx
movl %ecx, 0x10(%rax)
leaq -0x160(%rbp), %rdi
callq 0x79c40
movq -0x18(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rcx, 0x40(%rax)
movq -0x20(%rbp), %rax
movq -0x78(%rbp), %rcx
movq %rcx, (%rax)
movl -0x164(%rbp), %eax
movl %eax, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
nopl (%rax)