// File: /workspace/github_c_makefile_star2_O1/vtereshkov[P]umka-lang/src/umka_vm.c
// Function: vmFree
void vmFree(VM *vm)
{
    HeapPage *page = pageFind(&vm->pages, vm->mainFiber->stack);
    if (UNLIKELY(!page))
       vm->error->runtimeHandler(vm->error->context, ERR_RUNTIME, "No fiber stack");

    chunkChangeRefCnt(&vm->pages, page, vm->mainFiber->stack, -1);
    pageFree(&vm->pages, vm->terminatedNormally);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq 0x8(%rdi), %rax
movq 0x10(%rax), %rsi
cmpq %rsi, 0x18(%rdi)
ja 0x207c1
movq 0x20(%rbx), %rax
testq %rax, %rax
setne %cl
cmpq %rsi, %rax
setbe %al
testb %al, %cl
jne 0x207c1
movq 0x10(%rbx), %r14
testq %r14, %r14
je 0x207c4
leaq 0x30(%r14), %rcx
cmpq %rsi, %rcx
ja 0x207bb
cmpq %rsi, 0x28(%r14)
ja 0x20a93
movq 0x20(%r14), %r14
jmp 0x207a3
xorl %r14d, %r14d
testq %r14, %r14
je 0x20acc
movq 0x8(%rbx), %rax
movq 0x10(%rax), %r15
movq %r15, %rax
subq %r14, %rax
addq $-0x30, %rax
movslq 0x14(%r14), %rcx
cqto
idivq %rcx
movq %rdx, %r12
movq %r15, %rax
subq %rdx, %rax
negq %r12
movl (%rax), %eax
testl %eax, %eax
jle 0x20abc
cmpl %eax, 0x4(%r14)
jl 0x20abc
movq 0x10(%r15,%r12), %rax
testq %rax, %rax
je 0x2087c
cmpl $0x1, (%r15,%r12)
jne 0x2087c
movq $0x2, 0x6ea4c(%rip) # 0x8f270
leaq 0x6ea45(%rip), %rcx     # 0x8f270
movq $0x1, 0x6ea4a(%rip) # 0x8f280
movq $0x0, 0x6ea37(%rip) # 0x8f278
xorps %xmm0, %xmm0
movups %xmm0, 0x6ea3d(%rip)    # 0x8f288
movq %rcx, 0x6ea4e(%rip)     # 0x8f2a0
movq %r15, 0x6ea67(%rip)     # 0x8f2c0
leaq 0x6ea60(%rip), %rdi     # 0x8f2c0
movq 0x40(%rbx), %rcx
movq 0x20(%rcx), %rcx
movq %rcx, 0x6ea59(%rip)     # 0x8f2c8
leaq 0x6ea52(%rip), %rsi     # 0x8f2c8
callq *%rax
decl 0x10(%r14)
decl (%r15,%r12)
decl 0x4(%r14)
movq 0x38(%rbx), %r13
cmpq %r15, 0x18(%r13)
ja 0x20937
movslq 0x28(%r13), %rax
shlq $0x3, %rax
addq 0x10(%r13), %rax
cmpq %r15, %rax
jbe 0x20937
movq 0x20(%r13), %rbp
movq -0x10(%rbp), %rax
movq 0x10(%rax), %rax
leaq 0x8(,%rax,8), %rax
addq %rbp, %rax
cmpq %r15, %rax
jae 0x20933
leaq 0x8(%rbp), %rax
leaq 0x40(%rbx), %rsi
movl $0xfffffffe, %r12d      # imm = 0xFFFFFFFE
movq 0x10(%r13), %rcx
movslq 0x28(%r13), %rdx
leaq (%rcx,%rdx,8), %rcx
addq $-0x8, %rcx
cmpq %rcx, %rbp
je 0x208fc
movq (%rax), %rax
andl $-0x2, %eax
cmpq %r12, %rax
setne %al
je 0x208fe
movq (%rbp), %rbp
movb $0x1, %al
jmp 0x208fe
xorl %eax, %eax
testb %al, %al
je 0x20920
movq -0x10(%rbp), %rcx
leaq 0x8(%rbp), %rax
movq 0x10(%rcx), %rcx
leaq 0x8(,%rcx,8), %rcx
addq %rbp, %rcx
cmpq %r15, %rcx
jb 0x208d1
jmp 0x20933
movq %rsi, (%rsp)
movq (%rsp), %rdi
callq 0x3543
movq (%rsp), %rsi
jmp 0x20902
decq -0x8(%rbp)
cmpl $0x0, 0x4(%r14)
jne 0x20986
movslq 0x8(%r14), %rax
movslq 0x14(%r14), %rcx
imulq %rax, %rcx
subq %rcx, 0x30(%rbx)
cmpq %r14, 0x10(%rbx)
jne 0x2095c
movq 0x20(%r14), %rax
movq %rax, 0x10(%rbx)
movq 0x18(%r14), %rax
testq %rax, %rax
je 0x2096d
movq 0x20(%r14), %rcx
movq %rcx, 0x20(%rax)
movq 0x20(%r14), %rax
testq %rax, %rax
je 0x2097e
movq 0x18(%r14), %rcx
movq %rcx, 0x18(%rax)
movq %r14, %rdi
callq 0x3040
movq 0x10(%rbx), %r13
testq %r13, %r13
je 0x20a84
movq %rbx, %r14
movb 0x70(%rbx), %al
movb %al, (%rsp)
leaq 0x6e925(%rip), %r15     # 0x8f2c8
movq %r13, %r12
movq 0x20(%r13), %r13
cmpb $0x0, (%rsp)
jne 0x20a77
cmpl $0x0, 0xc(%r12)
jle 0x20a64
leaq 0x30(%r12), %rbx
xorl %ebp, %ebp
cmpl $0x0, 0x10(%r12)
jle 0x20a64
movslq 0x14(%r12), %rcx
movslq %ebp, %rax
imulq %rcx, %rax
cmpl $0x0, 0x30(%r12,%rax)
je 0x20a57
addq %rbx, %rax
movq 0x10(%rax), %rcx
testq %rcx, %rcx
je 0x20a57
addq $0x28, %rax
movq $0x2, 0x6e86e(%rip) # 0x8f270
movq $0x1, 0x6e873(%rip) # 0x8f280
movq $0x0, 0x6e860(%rip) # 0x8f278
xorps %xmm0, %xmm0
movups %xmm0, 0x6e866(%rip)    # 0x8f288
leaq 0x6e847(%rip), %rdx     # 0x8f270
movq %rdx, 0x6e870(%rip)     # 0x8f2a0
movq %rax, 0x6e889(%rip)     # 0x8f2c0
movq 0x40(%r14), %rax
movq 0x20(%rax), %rax
movq %rax, 0x6e882(%rip)     # 0x8f2c8
leaq 0x6e873(%rip), %rdi     # 0x8f2c0
movq %r15, %rsi
callq *%rcx
decl 0x10(%r12)
incl %ebp
cmpl 0xc(%r12), %ebp
jl 0x209c7
movq %r12, %rdi
callq 0x3040
testq %r13, %r13
jne 0x209a3
jmp 0x20a84
movq %r12, %rdi
callq 0x355c
jmp 0x209b4
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rsi, %rax
subq %rcx, %rax
movslq 0x14(%r14), %rcx
cqto
idivq %rcx
negq %rdx
cmpl $0x0, (%rsi,%rdx)
jg 0x207c4
movq %rbx, %rdi
callq 0x34ea
jmp 0x207c4
movq %rbx, %rdi
movq %r15, %rsi
callq 0x3525
jmp 0x20808
movq %rbx, %rdi
callq 0x3508
jmp 0x207cd