// File: /workspace/github_c_makefile_star2_O3/gplessis[P]dotdeb-redis/deps/lua/src/lundump.c
// Function: LoadFunction
static Proto* LoadFunction(LoadState* S, TString* p)
{
 Proto* f;
 if (++S->L->nCcalls > LUAI_MAXCCALLS) error(S,"code too deep");
 f=luaF_newproto(S->L);
 setptvalue2s(S->L,S->L->top,f); incr_top(S->L);
 f->source=LoadString(S); if (f->source==NULL) f->source=p;
 f->linedefined=LoadInt(S);
 f->lastlinedefined=LoadInt(S);
 f->nups=LoadByte(S);
 f->numparams=LoadByte(S);
 f->is_vararg=LoadByte(S);
 f->maxstacksize=LoadByte(S);
 LoadCode(S,f);
 LoadConstants(S,f);
 LoadDebug(S,f);
 IF (!luaG_checkcode(f), "bad code");
 S->L->top--;
 S->L->nCcalls--;
 return f;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rsi, %r15
movq %rdi, %rbx
movq (%rdi), %rdi
movl 0x60(%rdi), %eax
incl %eax
movw %ax, 0x60(%rdi)
movzwl %ax, %eax
cmpl $0xc9, %eax
jb 0xe3a1
movq 0x18(%rbx), %rdx
leaq 0xd9cc(%rip), %rsi      # 0x1bd4f
leaq 0xd9e1(%rip), %rcx      # 0x1bd6b
xorl %eax, %eax
callq 0xa6eb
movq (%rbx), %rdi
movl $0x3, %esi
callq 0x79b5
movq (%rbx), %rdi
callq 0x8f25
movq %rax, %r14
movq (%rbx), %rax
movq 0x10(%rax), %rax
movq %r14, (%rax)
movl $0x9, 0x8(%rax)
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
movq 0x38(%rdi), %rcx
subq %rax, %rcx
cmpq $0x10, %rcx
jg 0xe3df
movl $0x1, %esi
callq 0x7c11
movq (%rbx), %rdi
movq 0x10(%rdi), %rax
addq $0x10, %rax
movq %rax, 0x10(%rdi)
movq %rbx, %rdi
callq 0xea03
testq %rax, %rax
cmovneq %rax, %r15
movq %r15, 0x40(%r14)
movq %rbx, %rdi
callq 0xea5e
movl %eax, 0x60(%r14)
movq %rbx, %rdi
callq 0xea5e
movl %eax, 0x64(%r14)
leaq 0xc(%rsp), %r15
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xe9c5
movb (%r15), %al
movb %al, 0x70(%r14)
leaq 0xd(%rsp), %r15
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xe9c5
movb (%r15), %al
movb %al, 0x71(%r14)
leaq 0xe(%rsp), %r15
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xe9c5
movb (%r15), %al
movb %al, 0x72(%r14)
leaq 0xf(%rsp), %r15
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0xe9c5
movb (%r15), %al
movb %al, 0x73(%r14)
movq %rbx, %rdi
callq 0xea5e
movl %eax, %ebp
movq (%rbx), %rdi
movslq %eax, %r15
cmpl $-0x1, %eax
jl 0xe4a9
shlq $0x2, %r15
xorl %esi, %esi
xorl %edx, %edx
movq %r15, %rcx
callq 0xa1f6
jmp 0xe4b2
callq 0xa242
shlq $0x2, %r15
movq %rax, 0x18(%r14)
movl %ebp, 0x50(%r14)
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0xe9c5
movq %rbx, %rdi
callq 0xea5e
movl %eax, %r15d
movq (%rbx), %rdi
cmpl $-0x2, %eax
jle 0xe6f9
movslq %r15d, %rcx
shlq $0x4, %rcx
xorl %esi, %esi
xorl %edx, %edx
callq 0xa1f6
movq %rax, 0x10(%r14)
movl %r15d, 0x4c(%r14)
testl %r15d, %r15d
jle 0xe706
movl %r15d, %r13d
leal 0x3(%r15), %ecx
leaq -0x1(%r13), %rdx
movq %rdx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
shrl $0x2, %ecx
shlq $0x6, %rcx
movdqa 0xcd4c(%rip), %xmm1     # 0x1b270
movdqa 0xcd54(%rip), %xmm2     # 0x1b280
xorl %edx, %edx
movdqa 0xcd5a(%rip), %xmm3     # 0x1b290
pxor %xmm3, %xmm0
pcmpeqd %xmm4, %xmm4
movdqa 0xd7aa(%rip), %xmm5     # 0x1bcf0
movdqa %xmm2, %xmm6
pxor %xmm3, %xmm6
movdqa %xmm6, %xmm7
pcmpgtd %xmm0, %xmm7
pcmpeqd %xmm0, %xmm6
pshufd $0xf5, %xmm6, %xmm8     # xmm8 = xmm6[1,1,3,3]
pand %xmm7, %xmm8
pshufd $0xf5, %xmm7, %xmm6     # xmm6 = xmm7[1,1,3,3]
por %xmm8, %xmm6
movd %xmm6, %esi
notl %esi
testb $0x1, %sil
je 0xe583
movl $0x0, 0x8(%rax,%rdx)
pxor %xmm4, %xmm6
pextrw $0x4, %xmm6, %esi
testb $0x1, %sil
je 0xe59a
movl $0x0, 0x18(%rax,%rdx)
movdqa %xmm1, %xmm6
pxor %xmm3, %xmm6
movdqa %xmm6, %xmm7
pcmpgtd %xmm0, %xmm7
pcmpeqd %xmm0, %xmm6
pshufd $0xf5, %xmm6, %xmm8     # xmm8 = xmm6[1,1,3,3]
pand %xmm7, %xmm8
pshufd $0xf5, %xmm7, %xmm6     # xmm6 = xmm7[1,1,3,3]
por %xmm8, %xmm6
pxor %xmm4, %xmm6
pextrw $0x0, %xmm6, %esi
testb $0x1, %sil
je 0xe5da
movl $0x0, 0x28(%rax,%rdx)
pextrw $0x4, %xmm6, %esi
testb $0x1, %sil
je 0xe5ed
movl $0x0, 0x38(%rax,%rdx)
paddq %xmm5, %xmm2
paddq %xmm5, %xmm1
addq $0x40, %rdx
cmpq %rdx, %rcx
jne 0xe546
testl %r15d, %r15d
jle 0xe706
shlq $0x4, %r13
leaq 0xd6fa(%rip), %rbp      # 0x1bd10
xorl %r12d, %r12d
movq 0x10(%r14), %r15
movl $0x1, %edx
movq %rbx, %rdi
leaq 0xb(%rsp), %rsi
callq 0xe9c5
movzbl 0xb(%rsp), %eax
cmpq $0x4, %rax
ja 0xe6c1
movslq (%rbp,%rax,4), %rax
addq %rbp, %rax
jmpq *%rax
movl $0x0, 0x8(%r15,%r12)
jmp 0xe6ea
movl $0x8, %edx
movq %rbx, %rdi
leaq 0x10(%rsp), %rsi
callq 0xe9c5
movq 0x10(%rsp), %xmm0
movq %xmm0, (%r15,%r12)
movl $0x3, 0x8(%r15,%r12)
jmp 0xe6ea
movl $0x1, %edx
movq %rbx, %rdi
leaq 0xa(%rsp), %rsi
callq 0xe9c5
xorl %eax, %eax
cmpb $0x0, 0xa(%rsp)
setne %al
movl %eax, (%r15,%r12)
movl $0x1, 0x8(%r15,%r12)
jmp 0xe6ea
movq %rbx, %rdi
callq 0xea03
movq %rax, (%r15,%r12)
movl $0x4, 0x8(%r15,%r12)
jmp 0xe6ea
movq (%rbx), %rdi
movq 0x18(%rbx), %rdx
leaq 0xd680(%rip), %rsi      # 0x1bd4f
leaq 0xd6b8(%rip), %rcx      # 0x1bd8e
xorl %eax, %eax
callq 0xa6eb
movq (%rbx), %rdi
movl $0x3, %esi
callq 0x79b5
addq $0x10, %r12
cmpq %r12, %r13
jne 0xe619
jmp 0xe706
callq 0xa242
movq %rax, 0x10(%r14)
movl %r15d, 0x4c(%r14)
movq %rbx, %rdi
callq 0xea5e
movl %eax, %ebp
movq (%rbx), %rdi
cmpl $-0x2, %eax
jle 0xe772
movslq %ebp, %rcx
shlq $0x3, %rcx
xorl %esi, %esi
xorl %edx, %edx
callq 0xa1f6
movq %rax, 0x20(%r14)
movl %ebp, 0x58(%r14)
testl %ebp, %ebp
jle 0xe77f
movl %ebp, %r15d
xorl %eax, %eax
movq 0x20(%r14), %rcx
movq $0x0, (%rcx,%rax,8)
incq %rax
cmpq %rax, %r15
jne 0xe739
testl %ebp, %ebp
jle 0xe77f
xorl %r12d, %r12d
movq 0x40(%r14), %rsi
movq %rbx, %rdi
callq 0xe34e
movq 0x20(%r14), %rcx
movq %rax, (%rcx,%r12,8)
incq %r12
cmpq %r12, %r15
jne 0xe754
jmp 0xe77f
callq 0xa242
movq %rax, 0x20(%r14)
movl %ebp, 0x58(%r14)
movq %rbx, %rdi
callq 0xea5e
movl %eax, %ebp
movq (%rbx), %rdi
cmpl $-0x1, %eax
jl 0xe7a6
movslq %ebp, %r15
shlq $0x2, %r15
xorl %esi, %esi
xorl %edx, %edx
movq %r15, %rcx
callq 0xa1f6
jmp 0xe7b2
callq 0xa242
movslq %ebp, %r15
shlq $0x2, %r15
movq %rax, 0x28(%r14)
movl %ebp, 0x54(%r14)
movq %rbx, %rdi
movq %rax, %rsi
movq %r15, %rdx
callq 0xe9c5
movq %rbx, %rdi
callq 0xea5e
movl %eax, %r15d
movq (%rbx), %rdi
cmpl $-0x2, %eax
jle 0xe8df
movslq %r15d, %rcx
shlq $0x4, %rcx
xorl %esi, %esi
xorl %edx, %edx
callq 0xa1f6
movq %rax, 0x30(%r14)
movl %r15d, 0x5c(%r14)
testl %r15d, %r15d
jle 0xe8ec
movl %r15d, %r12d
incl %r15d
leaq -0x1(%r12), %rcx
movq %rcx, %xmm0
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
shrl %r15d
shlq $0x5, %r15
movdqa 0xca5c(%rip), %xmm1     # 0x1b280
xorl %ecx, %ecx
movdqa 0xca62(%rip), %xmm2     # 0x1b290
pxor %xmm2, %xmm0
pcmpeqd %xmm3, %xmm3
movdqa 0xd4c2(%rip), %xmm4     # 0x1bd00
movdqa %xmm1, %xmm5
pxor %xmm2, %xmm5
movdqa %xmm5, %xmm6
pcmpgtd %xmm0, %xmm6
pcmpeqd %xmm0, %xmm5
pshufd $0xf5, %xmm5, %xmm7     # xmm7 = xmm5[1,1,3,3]
pand %xmm6, %xmm7
pshufd $0xf5, %xmm6, %xmm5     # xmm5 = xmm6[1,1,3,3]
por %xmm7, %xmm5
movd %xmm5, %edx
notl %edx
testb $0x1, %dl
je 0xe877
movq $0x0, (%rax,%rcx)
pxor %xmm3, %xmm5
pextrw $0x4, %xmm5, %edx
testb $0x1, %dl
je 0xe88e
movq $0x0, 0x10(%rax,%rcx)
paddq %xmm4, %xmm1
addq $0x20, %rcx
cmpq %rcx, %r15
jne 0xe83e
shlq $0x4, %r12
xorl %r15d, %r15d
movq %rbx, %rdi
callq 0xea03
movq 0x30(%r14), %rcx
movq %rax, (%rcx,%r15)
movq %rbx, %rdi
callq 0xea5e
movq 0x30(%r14), %rcx
movl %eax, 0x8(%rcx,%r15)
movq %rbx, %rdi
callq 0xea5e
movq 0x30(%r14), %rcx
movl %eax, 0xc(%rcx,%r15)
addq $0x10, %r15
cmpq %r15, %r12
jne 0xe8a2
jmp 0xe8ec
callq 0xa242
movq %rax, 0x30(%r14)
movl %r15d, 0x5c(%r14)
movq %rbx, %rdi
callq 0xea5e
movl %eax, %ebp
movq (%rbx), %rdi
cmpl $-0x2, %eax
jle 0xe950
movslq %ebp, %rcx
shlq $0x3, %rcx
xorl %esi, %esi
xorl %edx, %edx
callq 0xa1f6
movq %rax, 0x38(%r14)
movl %ebp, 0x48(%r14)
testl %ebp, %ebp
jle 0xe95d
movl %ebp, %r15d
xorl %eax, %eax
movq 0x38(%r14), %rcx
movq $0x0, (%rcx,%rax,8)
incq %rax
cmpq %rax, %r15
jne 0xe91f
xorl %r12d, %r12d
movq %rbx, %rdi
callq 0xea03
movq 0x38(%r14), %rcx
movq %rax, (%rcx,%r12,8)
incq %r12
cmpq %r12, %r15
jne 0xe936
jmp 0xe95d
callq 0xa242
movq %rax, 0x38(%r14)
movl %ebp, 0x48(%r14)
movq %r14, %rdi
callq 0x6e2c
testl %eax, %eax
jne 0xe992
movq (%rbx), %rdi
movq 0x18(%rbx), %rdx
leaq 0xd3d8(%rip), %rsi      # 0x1bd4f
leaq 0xd3fb(%rip), %rcx      # 0x1bd79
xorl %eax, %eax
callq 0xa6eb
movq (%rbx), %rdi
movl $0x3, %esi
callq 0x79b5
movq (%rbx), %rax
addq $-0x10, 0x10(%rax)
decw 0x60(%rax)
movq %r14, %rax
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq