// File: /workspace/github_c_makefile_star2_O2/zenkj[P]luajit-arm64/src/host/minilua.c
// Function: luaC_step
static void luaC_step(lua_State*L){
global_State*g=G(L);
l_mem lim=(1024u/100)*g->gcstepmul;
if(lim==0)
lim=(((lu_mem)(~(lu_mem)0)-2)-1)/2;
g->gcdept+=g->totalbytes-g->GCthreshold;
do{
lim-=singlestep(L);
if(g->gcstate==0)
break;
}while(lim>0);
if(g->gcstate!=0){
if(g->gcdept<1024u)
g->GCthreshold=g->totalbytes+1024u;
else{
g->gcdept-=1024u;
g->GCthreshold=g->totalbytes;
}
}
else{
setthreshold(g);
}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdi, (%rsp)
movq 0x20(%rdi), %r14
imull $0xa, 0x94(%r14), %eax
testl %eax, %eax
movabsq $0x7ffffffffffffffe, %r15 # imm = 0x7FFFFFFFFFFFFFFE
cmovneq %rax, %r15
movq 0x78(%r14), %rax
subq 0x70(%r14), %rax
addq %rax, 0x88(%r14)
pushq $0x1
popq %rbp
movq %r14, 0x8(%rsp)
movq (%rsp), %rcx
movq 0x20(%rcx), %r12
movzbl 0x21(%r12), %eax
cmpq $0x4, %rax
ja 0x685f
leaq 0xba51(%rip), %rdx      # 0x120e0
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
movq %r15, 0x10(%rsp)
jmpq *%rax
andq $0x0, 0x48(%r12)
xorps %xmm0, %xmm0
movups %xmm0, 0x38(%r12)
movq 0xb0(%r12), %rsi
testb $0x3, 0x9(%rsi)
je 0x66ce
movq %r12, %rdi
callq 0x43dc
movq (%rsp), %rcx
movq 0xb0(%r12), %rsi
cmpl $0x4, 0x80(%rsi)
jl 0x66ed
movq 0x78(%rsi), %rsi
testb $0x3, 0x9(%rsi)
je 0x66ed
movq %r12, %rdi
callq 0x43dc
movq (%rsp), %rcx
movq 0x20(%rcx), %rax
cmpl $0x4, 0xa8(%rax)
jl 0x670f
movq 0xa0(%rax), %rsi
testb $0x3, 0x9(%rsi)
je 0x670f
movq %r12, %rdi
callq 0x43dc
movq %r12, %rdi
callq 0x8377
movb $0x1, 0x21(%r12)
jmp 0x685f
cmpq $0x0, 0x50(%r12)
je 0x6850
movq %rcx, %rdi
callq 0x82a1
movq 0x80(%r12), %rcx
pushq $0x64
popq %rax
cmpq $0x65, %rcx
jb 0x6861
addq $-0x64, %rcx
movq %rcx, 0x80(%r12)
jmp 0x6861
movq 0x78(%r12), %rbx
movslq 0x24(%r12), %rsi
leal 0x1(%rsi), %eax
movl %eax, 0x24(%r12)
shlq $0x3, %rsi
addq (%r12), %rsi
movq %rcx, %rdi
pushq $-0x3
popq %rdx
callq 0x8087
movl 0x24(%r12), %eax
cmpl 0xc(%r12), %eax
jl 0x6793
movb $0x3, 0x21(%r12)
movq 0x78(%r12), %rax
subq %rbx, %rax
addq %rax, 0x80(%r12)
pushq $0xa
popq %rax
jmp 0x6861
movq 0x30(%r12), %rsi
movq 0x78(%r12), %r15
movq %rcx, %rdi
pushq $0x28
popq %rdx
callq 0x8087
movq %rax, 0x30(%r12)
cmpq $0x0, (%rax)
jne 0x6822
movq (%rsp), %rdi
movq 0x20(%rdi), %rbx
movl 0xc(%rbx), %esi
movl %esi, %eax
cltd
pushq $0x4
popq %rcx
idivl %ecx
cmpl $0x41, %esi
jl 0x67ef
cmpl %eax, 0x8(%rbx)
jae 0x67ef
shrl %esi
callq 0x3f3f
movq 0x68(%rbx), %rdx
cmpq $0x41, %rdx
jb 0x681c
movq %rdx, %r14
shrq %r14
movq 0x58(%rbx), %rsi
movq (%rsp), %rdi
movq %r14, %rcx
callq 0x4158
movq %rax, 0x58(%rbx)
movq %r14, 0x68(%rbx)
movq 0x8(%rsp), %r14
movb $0x4, 0x21(%r12)
movq 0x78(%r12), %rax
subq %r15, %rax
addq %rax, 0x80(%r12)
movl $0x190, %eax            # imm = 0x190
movq 0x10(%rsp), %r15
jmp 0x6861
cmpq $0x0, 0x38(%r12)
je 0x687e
movq %r12, %rdi
callq 0x7bb9
jmp 0x6861
movb $0x0, 0x21(%r12)
andq $0x0, 0x88(%r12)
xorl %eax, %eax
movb 0x21(%r14), %cl
testb %cl, %cl
je 0x6a6b
subq %rax, %r15
testq %r15, %r15
jg 0x6670
jmp 0x6a6b
leaq 0xb8(%r12), %rbx
leaq 0xd8(%r12), %r14
movq (%r14), %r14
cmpq %rbx, %r14
je 0x68c2
testb $0x7, 0x9(%r14)
jne 0x68bc
movq 0x10(%r14), %rax
cmpl $0x4, 0x8(%rax)
jl 0x68bc
movq (%rax), %rsi
testb $0x3, 0x9(%rsi)
je 0x68bc
movq %r12, %rdi
callq 0x43dc
movq (%rsp), %rcx
addq $0x20, %r14
jmp 0x688e
movq %r12, %rdi
movq %rcx, %rbx
callq 0x83ac
movq 0x48(%r12), %rax
movq %rax, 0x38(%r12)
andq $0x0, 0x48(%r12)
testb $0x3, 0x9(%rbx)
je 0x68ee
movq %r12, %rdi
movq %rbx, %rsi
callq 0x43dc
movq %r12, %rdi
callq 0x8377
movq %r12, %rdi
callq 0x83ac
movq 0x40(%r12), %rax
movq %rax, 0x38(%r12)
andq $0x0, 0x40(%r12)
movq %r12, %rdi
callq 0x83ac
movq %rbx, %rdi
xorl %esi, %esi
callq 0x83d4
movq %rax, 0x20(%rsp)
movq 0x50(%r12), %r14
testq %r14, %r14
je 0x6958
movq (%r14), %r14
movb 0x9(%r14), %al
andb $-0x8, %al
movb 0x20(%r12), %cl
andb $0x3, %cl
orb %al, %cl
movb %cl, 0x9(%r14)
movq %r12, %rdi
movq %r14, %rsi
callq 0x43dc
cmpq 0x50(%r12), %r14
jne 0x692f
leaq 0x48(%r12), %r14
movq %r12, %rdi
callq 0x83ac
movq %rax, 0x18(%rsp)
movq (%r14), %r14
testq %r14, %r14
je 0x6a29
testb $0x10, 0x9(%r14)
jne 0x69f5
movb 0xb(%r14), %cl
movabsq $0x100000000, %r15      # imm = 0x100000000
shlq %cl, %r15
sarq $0x20, %r15
imulq $0x28, %r15, %rbx
addq $-0x28, %rbx
subq $0x1, %r15
jb 0x69e7
movq 0x20(%r14), %r13
cmpl $0x0, 0x8(%r13,%rbx)
je 0x6996
leaq (%rbx,%r13), %rdi
addq $0x10, %rdi
movl %ebp, %esi
callq 0x84a4
testl %eax, %eax
jne 0x69ce
leaq (%rbx,%r13), %rdi
xorl %esi, %esi
callq 0x84a4
testl %eax, %eax
je 0x6996
andl $0x0, 0x8(%r13,%rbx)
cmpl $0x4, 0x18(%r13,%rbx)
jl 0x6996
movl $0xb, 0x18(%r13,%rbx)
jmp 0x6996
addq $0x30, %r14
movq 0x10(%rsp), %r15
jmp 0x696a
movslq 0x38(%r14), %rbx
movq %rbx, %r15
shlq $0x4, %r15
addq $-0x10, %r15
subq $0x1, %rbx
jb 0x697d
movq 0x18(%r14), %r13
leaq (%r15,%r13), %rdi
xorl %esi, %esi
callq 0x84a4
testl %eax, %eax
je 0x6a00
andl $0x0, 0x8(%r13,%r15)
jmp 0x6a00
xorb $0x3, 0x20(%r12)
andl $0x0, 0x24(%r12)
leaq 0x28(%r12), %rax
movq %rax, 0x30(%r12)
movb $0x2, 0x21(%r12)
movq 0x78(%r12), %rax
movq 0x18(%rsp), %rcx
addq 0x20(%rsp), %rcx
subq %rcx, %rax
movq %rax, 0x80(%r12)
xorl %eax, %eax
movq 0x8(%rsp), %r14
jmp 0x6861
testb %cl, %cl
je 0x6a89
movq 0x88(%r14), %rax
cmpq $0x3ff, %rax            # imm = 0x3FF
ja 0x6aa5
movl $0x400, %ecx            # imm = 0x400
addq 0x78(%r14), %rcx
jmp 0x6ab6
movq 0x80(%r14), %rax
pushq $0x64
popq %rcx
xorl %edx, %edx
divq %rcx
movslq 0x90(%r14), %rcx
imulq %rax, %rcx
jmp 0x6ab6
addq $-0x400, %rax           # imm = 0xFC00
movq %rax, 0x88(%r14)
movq 0x78(%r14), %rcx
movq %rcx, 0x70(%r14)
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq