// File: /workspace/github_cpp_makefile_star2_O3/srajangarg[P]raytracer/src/core/stb_image.hpp
// Function: stbi__do_zlib(stbi__zbuf*, char*, int, int, int)
static int stbi__do_zlib(stbi__zbuf *a, char *obuf, int olen, int exp, int parse_header)
{
   a->zout_start = obuf;
   a->zout       = obuf;
   a->zout_end   = obuf + olen;
   a->z_expandable = exp;

   return stbi__parse_zlib(a, parse_header);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x9f8, %rsp            # imm = 0x9F8
movq %rdi, %rbx
movq %rsi, 0x20(%rdi)
movq %rsi, 0x18(%rdi)
movslq %edx, %rax
addq %rsi, %rax
movq %rax, 0x28(%rdi)
movl %ecx, 0x30(%rdi)
testl %r8d, %r8d
je 0x14cf9
movq (%rbx), %rdx
movq 0x8(%rbx), %rsi
xorl %ecx, %ecx
cmpq %rsi, %rdx
jae 0x14caf
leaq 0x1(%rdx), %rdi
movq %rdi, (%rbx)
movzbl (%rdx), %eax
movq %rdi, %rdx
jmp 0x14cb1
xorl %eax, %eax
cmpq %rsi, %rdx
jae 0x14cc0
leaq 0x1(%rdx), %rcx
movq %rcx, (%rbx)
movzbl (%rdx), %ecx
movl %eax, %edx
shll $0x8, %edx
orl %ecx, %edx
imull $0x7bdf, %edx, %edx     # imm = 0x7BDF
movzwl %dx, %edx
cmpl $0x842, %edx            # imm = 0x842
jbe 0x14ce4
leaq 0x17c9e(%rip), %rax     # 0x2c97d
jmp 0x1563e
testb $0x20, %cl
jne 0x1561c
andl $0xf, %eax
cmpl $0x8, %eax
jne 0x15637
movq $0x0, 0x10(%rbx)
leaq 0x34(%rbx), %rax
movq %rax, 0x10(%rsp)
leaq 0x818(%rbx), %rax
movq %rax, (%rsp)
xorl %eax, %eax
leaq 0x17022(%rip), %r14     # 0x2bd40
leaq 0x17d01(%rip), %r15     # 0x2ca26
leaq 0x17284(%rip), %r12     # 0x2bfb0
testl %eax, %eax
jg 0x14d3b
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %eax
movl 0x14(%rbx), %ecx
movl %ecx, 0xc(%rsp)
movl %ecx, %r13d
shrl %r13d
movl %r13d, 0x14(%rbx)
leal -0x1(%rax), %ecx
movl %ecx, 0x10(%rbx)
cmpl $0x2, %eax
jg 0x14d66
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %ecx
movl 0x14(%rbx), %r13d
movl %r13d, %edx
andl $0x3, %edx
shrl $0x2, %r13d
movl %r13d, 0x14(%rbx)
leal -0x2(%rcx), %eax
movl %eax, 0x10(%rbx)
movslq (%r14,%rdx,4), %rdx
addq %r14, %rdx
jmpq *%rdx
movl %eax, %r14d
andl $0x7, %r14d
je 0x14db0
cmpl $0x1, %ecx
jg 0x14da0
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %eax
movl 0x14(%rbx), %r13d
movl %r14d, %ecx
shrl %cl, %r13d
movl %r13d, 0x14(%rbx)
subl %r14d, %eax
movl %eax, 0x10(%rbx)
testl %eax, %eax
leaq 0x16f87(%rip), %r14     # 0x2bd40
jle 0x15553
leal -0x1(%rax), %edx
movl %edx, %edi
shrl $0x3, %edi
leal 0x1(%rdi), %ecx
andl $-0x8, %edx
movq $-0x1, %rsi
movb %r13b, 0x215(%rsp,%rsi)
shrl $0x8, %r13d
incq %rsi
cmpq %rsi, %rdi
jne 0x14dd4
addl $-0x8, %eax
movl %r13d, 0x14(%rbx)
subl %edx, %eax
movl %eax, 0x10(%rbx)
jne 0x1568f
cmpq $0x2, %rsi
jbe 0x1555b
jmp 0x15589
cmpb $0x0, 0x225bf(%rip)     # 0x373cf
jne 0x14ea9
movl $0x90, %edx
leaq 0x225ae(%rip), %rdi     # 0x373d0
movl $0x8, %esi
callq 0x41c0
movaps 0x16dad(%rip), %xmm0    # 0x2bbe0
movaps %xmm0, 0x22626(%rip)    # 0x37460
movaps %xmm0, 0x2262f(%rip)    # 0x37470
movaps %xmm0, 0x22638(%rip)    # 0x37480
movaps %xmm0, 0x22641(%rip)    # 0x37490
movaps %xmm0, 0x2264a(%rip)    # 0x374a0
movaps %xmm0, 0x22653(%rip)    # 0x374b0
movaps %xmm0, 0x2265c(%rip)    # 0x374c0
movaps 0x16d85(%rip), %xmm0    # 0x2bbf0
movaps %xmm0, 0x2265e(%rip)    # 0x374d0
movabsq $0x707070707070707, %rax # imm = 0x707070707070707
movq %rax, 0x2265d(%rip)     # 0x374e0
movabsq $0x808080808080808, %rax # imm = 0x808080808080808
movq %rax, 0x22654(%rip)     # 0x374e8
movaps 0x16d65(%rip), %xmm0    # 0x2bc00
movaps %xmm0, 0x2250e(%rip)    # 0x373b0
movaps %xmm0, 0x22517(%rip)    # 0x373c0
movq 0x10(%rsp), %rdi
leaq 0x2251b(%rip), %rsi     # 0x373d0
movl $0x120, %edx            # imm = 0x120
callq 0x22d58
testl %eax, %eax
je 0x15645
movq (%rsp), %rdi
leaq 0x224de(%rip), %rsi     # 0x373b0
movl $0x20, %edx
callq 0x22d58
testl %eax, %eax
jne 0x15216
jmp 0x15645
cmpl $0x6, %ecx
jg 0x14efd
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %eax
movl 0x14(%rbx), %r13d
movl %r13d, %ebp
shrl $0x5, %ebp
movl %ebp, 0x14(%rbx)
leal -0x5(%rax), %edx
movl %edx, 0x10(%rbx)
cmpl $0x9, %eax
jg 0x14f1f
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %edx
movl 0x14(%rbx), %ebp
movl %ebp, %ecx
shrl $0x5, %ecx
movl %ecx, 0x14(%rbx)
leal -0x5(%rdx), %eax
movl %eax, 0x10(%rbx)
cmpl $0x8, %edx
jg 0x14f40
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %eax
movl 0x14(%rbx), %ecx
andl $0x1f, %r13d
addl $0x101, %r13d           # imm = 0x101
andl $0x1f, %ebp
incl %ebp
movl %ecx, %r14d
andl $0xf, %r14d
shrl $0x4, %ecx
movl %ecx, 0x14(%rbx)
addl $-0x4, %eax
movl %eax, 0x10(%rbx)
addl $0x4, %r14d
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
movl $0x0, 0x2f(%rsp)
xorl %r15d, %r15d
cmpl $0x2, %eax
jg 0x14f8d
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %eax
movl 0x14(%rbx), %ecx
movl %ecx, %edx
shrl $0x3, %edx
movl %edx, 0x14(%rbx)
addl $-0x3, %eax
movl %eax, 0x10(%rbx)
andb $0x7, %cl
movzbl (%r15,%r12), %esi
movb %cl, 0x20(%rsp,%rsi)
incq %r15
movl %edx, %ecx
cmpq %r15, %r14
jne 0x14f7a
leaq 0x214(%rsp), %rdi
leaq 0x20(%rsp), %rsi
movl $0x13, %edx
callq 0x22d58
testl %eax, %eax
je 0x15645
movq %rbp, 0x18(%rsp)
leal (%rbp,%r13), %r14d
movl 0x10(%rbx), %r15d
xorl %ebp, %ebp
cmpl $0xf, %r15d
jg 0x14fee
movq %rbx, %rdi
callq 0x23289
movl 0x14(%rbx), %eax
movl %eax, %ecx
andl $0x1ff, %ecx            # imm = 0x1FF
movzwl 0x214(%rsp,%rcx,2), %edx
testl %edx, %edx
je 0x15025
movl %edx, %ecx
shrl $0x9, %ecx
shrl %cl, %eax
movl %eax, 0x14(%rbx)
movl 0x10(%rbx), %r15d
subl %ecx, %r15d
movl %r15d, 0x10(%rbx)
andl $0x1ff, %edx            # imm = 0x1FF
jmp 0x150cb
movl %eax, %ecx
rolw $0x8, %cx
movl %ecx, %edx
shrl $0x4, %edx
movl $0xf0f, %esi            # imm = 0xF0F
andl %esi, %edx
andl %esi, %ecx
shll $0x4, %ecx
orl %edx, %ecx
movl %ecx, %edx
movl $0x3333, %esi           # imm = 0x3333
andl %esi, %edx
shrl $0x2, %ecx
andl %esi, %ecx
leal (%rcx,%rdx,4), %ecx
movl %ecx, %edx
movl $0x5555, %esi           # imm = 0x5555
andl %esi, %edx
shrl %ecx
andl %esi, %ecx
leal (%rcx,%rdx,2), %esi
xorl %edx, %edx
movq %rdx, %rcx
incq %rdx
cmpl %esi, 0x65c(%rsp,%rcx,4)
jle 0x15061
cmpq $0x7, %rdx
je 0x15613
movb $0x7, %cl
subb %dl, %cl
shrl %cl, %esi
movzwl 0x626(%rsp,%rdx,2), %ecx
subq %rcx, %rsi
movzwl 0x68a(%rsp,%rdx,2), %edi
addq %rsi, %rdi
movzbl 0x698(%rsp,%rdi), %ecx
addq $-0x9, %rcx
cmpq %rdx, %rcx
jne 0x15670
leaq 0x9(%rdx), %rcx
shrl %cl, %eax
movl %eax, 0x14(%rbx)
movl 0x10(%rbx), %r15d
subl %edx, %r15d
addl $-0x9, %r15d
movl %r15d, 0x10(%rbx)
movzwl 0x7b8(%rsp,%rdi,2), %edx
cmpl $0x12, %edx
ja 0x15613
cmpl $0xf, %edx
ja 0x150e7
movslq %ebp, %rax
incl %ebp
movb %dl, 0x40(%rsp,%rax)
jmp 0x151c5
cmpl $0x11, %edx
je 0x15135
cmpl $0x10, %edx
jne 0x1517e
cmpl $0x1, %r15d
jg 0x1510a
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %r15d
movl 0x14(%rbx), %eax
movl %eax, %r12d
andl $0x3, %r12d
shrl $0x2, %eax
movl %eax, 0x14(%rbx)
addl $-0x2, %r15d
movl %r15d, 0x10(%rbx)
leal 0x3(%r12), %edx
movslq %ebp, %rax
leaq (%rsp,%rax), %rdi
addq $0x40, %rdi
movzbl -0x1(%rdi), %esi
jmp 0x15171
cmpl $0x2, %r15d
jg 0x1514a
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %r15d
movl 0x14(%rbx), %eax
movl %eax, %r12d
andl $0x7, %r12d
shrl $0x3, %eax
movl %eax, 0x14(%rbx)
addl $-0x3, %r15d
movl %r15d, 0x10(%rbx)
leal 0x3(%r12), %edx
movslq %ebp, %rbp
leaq (%rsp,%rbp), %rdi
addq $0x40, %rdi
xorl %esi, %esi
callq 0x41c0
addl %r12d, %ebp
addl $0x3, %ebp
jmp 0x151c5
cmpl $0x6, %r15d
jg 0x15193
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %r15d
movl 0x14(%rbx), %eax
movl %eax, %r12d
andl $0x7f, %r12d
shrl $0x7, %eax
movl %eax, 0x14(%rbx)
addl $-0x7, %r15d
movl %r15d, 0x10(%rbx)
leal 0xb(%r12), %edx
movslq %ebp, %rax
leaq (%rsp,%rax), %rdi
addq $0x40, %rdi
xorl %esi, %esi
callq 0x41c0
addl %r12d, %ebp
addl $0xb, %ebp
cmpl %r14d, %ebp
jl 0x14fe0
jne 0x15613
movq 0x10(%rsp), %rdi
leaq 0x40(%rsp), %rsi
movl %r13d, %edx
callq 0x22d58
testl %eax, %eax
movq 0x18(%rsp), %rdx
je 0x15645
movl %r13d, %eax
leaq (%rsp,%rax), %rsi
addq $0x40, %rsi
movq (%rsp), %rdi
callq 0x22d58
testl %eax, %eax
leaq 0x17816(%rip), %r15     # 0x2ca26
je 0x15645
movq 0x18(%rbx), %r13
cmpl $0xf, 0x10(%rbx)
jg 0x15228
movq %rbx, %rdi
callq 0x23289
movl 0x14(%rbx), %eax
movl %eax, %ecx
andl $0x1ff, %ecx            # imm = 0x1FF
movzwl 0x34(%rbx,%rcx,2), %r14d
testl %r14d, %r14d
je 0x1525d
movl %r14d, %ecx
shrl $0x9, %ecx
shrl %cl, %eax
movl %eax, 0x14(%rbx)
movl 0x10(%rbx), %edx
subl %ecx, %edx
movl %edx, 0x10(%rbx)
andl $0x1ff, %r14d           # imm = 0x1FF
jmp 0x15301
movl %eax, %ecx
rolw $0x8, %cx
movl %ecx, %edx
shrl $0x4, %edx
movl $0xf0f, %esi            # imm = 0xF0F
andl %esi, %edx
andl %esi, %ecx
shll $0x4, %ecx
orl %edx, %ecx
movl %ecx, %edx
movl $0x3333, %esi           # imm = 0x3333
andl %esi, %edx
shrl $0x2, %ecx
andl %esi, %ecx
leal (%rcx,%rdx,4), %ecx
movl %ecx, %edx
movl $0x5555, %esi           # imm = 0x5555
andl %esi, %edx
shrl %ecx
andl %esi, %ecx
leal (%rcx,%rdx,2), %edx
xorl %esi, %esi
movq %rsi, %rcx
incq %rsi
cmpl %edx, 0x47c(%rbx,%rcx,4)
jle 0x15299
cmpq $0x7, %rsi
je 0x15625
movb $0x7, %cl
subb %sil, %cl
shrl %cl, %edx
movzwl 0x446(%rbx,%rsi,2), %ecx
subq %rcx, %rdx
movzwl 0x4aa(%rbx,%rsi,2), %edi
addq %rdx, %rdi
movzbl 0x4b8(%rbx,%rdi), %ecx
addq $-0x9, %rcx
cmpq %rsi, %rcx
jne 0x15670
leaq 0x9(%rsi), %rcx
shrl %cl, %eax
movl %eax, 0x14(%rbx)
movl 0x10(%rbx), %edx
subl %esi, %edx
addl $-0x9, %edx
movl %edx, 0x10(%rbx)
movzwl 0x5d8(%rbx,%rdi,2), %r14d
cmpl $0x100, %r14d           # imm = 0x100
jae 0x15338
cmpq 0x28(%rbx), %r13
jb 0x1532c
movq %rbx, %rdi
movq %r13, %rsi
movl $0x1, %edx
callq 0x232e2
testl %eax, %eax
je 0x15645
movq 0x18(%rbx), %r13
movb %r14b, (%r13)
incq %r13
jmp 0x1521a
je 0x155f2
addl $0xfffffeff, %r14d      # imm = 0xFFFFFEFF
leaq 0x16c84(%rip), %rcx     # 0x2bfd0
movl (%rcx,%r14,4), %r12d
leaq -0x1c(%r14), %rcx
cmpq $-0x14, %rcx
jb 0x15394
leaq 0x16cef(%rip), %rcx     # 0x2c050
movl (%rcx,%r14,4), %r14d
cmpl %r14d, %edx
jge 0x15378
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %edx
movl 0x14(%rbx), %eax
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl %r14d, %ecx
shll %cl, %esi
notl %esi
andl %eax, %esi
shrl %cl, %eax
movl %eax, 0x14(%rbx)
subl %r14d, %edx
movl %edx, 0x10(%rbx)
addl %esi, %r12d
cmpl $0xf, %edx
jg 0x153a4
movq %rbx, %rdi
callq 0x23289
movl 0x14(%rbx), %eax
movl %eax, %ecx
andl $0x1ff, %ecx            # imm = 0x1FF
movq (%rsp), %rdx
movzwl (%rdx,%rcx,2), %esi
testl %esi, %esi
je 0x153d5
movl %esi, %ecx
shrl $0x9, %ecx
shrl %cl, %eax
movl %eax, 0x14(%rbx)
movl 0x10(%rbx), %edx
subl %ecx, %edx
movl %edx, 0x10(%rbx)
andl $0x1ff, %esi            # imm = 0x1FF
jmp 0x15478
movl %eax, %ecx
rolw $0x8, %cx
movl %ecx, %edx
shrl $0x4, %edx
movl $0xf0f, %esi            # imm = 0xF0F
andl %esi, %edx
andl %esi, %ecx
shll $0x4, %ecx
orl %edx, %ecx
movl %ecx, %edx
movl $0x3333, %esi           # imm = 0x3333
andl %esi, %edx
shrl $0x2, %ecx
andl %esi, %ecx
leal (%rcx,%rdx,4), %ecx
movl %ecx, %edx
movl $0x5555, %esi           # imm = 0x5555
andl %esi, %edx
shrl %ecx
andl %esi, %ecx
leal (%rcx,%rdx,2), %edx
xorl %esi, %esi
movq %rsi, %rcx
incq %rsi
cmpl %edx, 0xc60(%rbx,%rcx,4)
jle 0x15411
cmpq $0x7, %rsi
je 0x15625
movb $0x7, %cl
subb %sil, %cl
shrl %cl, %edx
movzwl 0xc2a(%rbx,%rsi,2), %ecx
subq %rcx, %rdx
movzwl 0xc8e(%rbx,%rsi,2), %edi
addq %rdx, %rdi
movzbl 0xc9c(%rbx,%rdi), %ecx
addq $-0x9, %rcx
cmpq %rsi, %rcx
jne 0x15670
leaq 0x9(%rsi), %rcx
shrl %cl, %eax
movl %eax, 0x14(%rbx)
movl 0x10(%rbx), %edx
subl %esi, %edx
addl $-0x9, %edx
movl %edx, 0x10(%rbx)
movzwl 0xdbc(%rbx,%rdi,2), %esi
movl %esi, %ecx
leaq 0x16c4f(%rip), %rsi     # 0x2c0d0
movl (%rsi,%rcx,4), %ebp
leaq -0x1e(%rcx), %rsi
cmpq $-0x1a, %rsi
jb 0x154c7
leaq 0x16cbb(%rip), %rsi     # 0x2c150
movl (%rsi,%rcx,4), %r14d
cmpl %r14d, %edx
jge 0x154ac
movq %rbx, %rdi
callq 0x23289
movl 0x10(%rbx), %edx
movl 0x14(%rbx), %eax
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl %r14d, %ecx
shll %cl, %esi
notl %esi
andl %eax, %esi
shrl %cl, %eax
movl %eax, 0x14(%rbx)
subl %r14d, %edx
movl %edx, 0x10(%rbx)
addl %esi, %ebp
movq %r13, %rax
subq 0x20(%rbx), %rax
movslq %ebp, %r14
cmpq %r14, %rax
jl 0x1562e
movslq %r12d, %rax
addq %r13, %rax
cmpq 0x28(%rbx), %rax
jbe 0x15500
movq %rbx, %rdi
movq %r13, %rsi
movl %r12d, %edx
callq 0x232e2
testl %eax, %eax
je 0x15645
movq 0x18(%rbx), %r13
movq %r14, %rax
negq %rax
cmpl $0x1, %r14d
jne 0x15534
testl %r12d, %r12d
je 0x1521a
movl %r12d, %edx
movzbl (%r13,%rax), %esi
movq %r13, %rdi
callq 0x41c0
decl %r12d
addq %r12, %r13
incq %r13
jmp 0x1521a
testl %r12d, %r12d
je 0x1521a
movb (%r13,%rax), %cl
movb %cl, (%r13)
incq %r13
decl %r12d
jne 0x1553d
jmp 0x1521a
jne 0x1568f
xorl %ecx, %ecx
movq (%rbx), %rdx
movq 0x8(%rbx), %rax
cmpq %rax, %rdx
jae 0x15576
leaq 0x1(%rdx), %rdi
movq %rdi, (%rbx)
movb (%rdx), %sil
movq %rdi, %rdx
jmp 0x15578
xorl %esi, %esi
movb %sil, 0x214(%rsp,%rcx)
incq %rcx
cmpq $0x4, %rcx
jne 0x15562
movzwl 0x214(%rsp), %edx
movzwl 0x216(%rsp), %eax
xorl %edx, %eax
cmpl $0xffff, %eax           # imm = 0xFFFF
jne 0x15667
movq (%rbx), %rsi
movl %edx, %r12d
leaq (%rsi,%r12), %rax
cmpq 0x8(%rbx), %rax
ja 0x15660
movq 0x18(%rbx), %rax
leaq (%rax,%r12), %rcx
cmpq 0x28(%rbx), %rcx
jbe 0x155de
movq %rbx, %rdi
movq %rax, %rsi
callq 0x232e2
testl %eax, %eax
je 0x15645
movq (%rbx), %rsi
movq 0x18(%rbx), %rax
movq %rax, %rdi
movq %r12, %rdx
callq 0x4290
addq %r12, (%rbx)
addq %r12, 0x18(%rbx)
jmp 0x155fd
movq %r13, 0x18(%rbx)
leaq 0x16743(%rip), %r14     # 0x2bd40
testb $0x1, 0xc(%rsp)
leaq 0x169a7(%rip), %r12     # 0x2bfb0
jne 0x15659
movl 0x10(%rbx), %eax
jmp 0x14d2c
leaq 0x17448(%rip), %rax     # 0x2ca62
jmp 0x1563e
leaq 0x1736a(%rip), %rax     # 0x2c98d
jmp 0x1563e
leaq 0x16d0a(%rip), %rax     # 0x2c336
jmp 0x1563e
leaq 0x17490(%rip), %rax     # 0x2cac5
jmp 0x1563e
leaq 0x17224(%rip), %rax     # 0x2c862
movq %rax, 0x21d4b(%rip)     # 0x37390
xorl %eax, %eax
addq $0x9f8, %rsp            # imm = 0x9F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x1, %eax
jmp 0x15647
leaq 0x173cc(%rip), %r15     # 0x2ca33
movq %r15, 0x21d22(%rip)     # 0x37390
jmp 0x15645
leaq 0x173fb(%rip), %rdi     # 0x2ca72
leaq 0x16d1b(%rip), %rsi     # 0x2c399
leaq 0x173fd(%rip), %rcx     # 0x2ca82
movl $0xe0a, %edx            # imm = 0xE0A
callq 0x41f0
leaq 0x1734e(%rip), %rdi     # 0x2c9e4
leaq 0x16cfc(%rip), %rsi     # 0x2c399
leaq 0x17351(%rip), %rcx     # 0x2c9f5
movl $0xea4, %edx            # imm = 0xEA4
callq 0x41f0