// File: srajangarg[P]raytracer/src/core/stb_image.hpp
// Function: stbi__de_iphone(stbi__png*)
static void stbi__de_iphone(stbi__png *z)
{
   stbi__context *s = z->s;
   stbi__uint32 i, pixel_count = s->img_x * s->img_y;
   stbi_uc *p = z->out;

   if (s->img_out_n == 3) {  // convert bgr to rgb
      for (i=0; i < pixel_count; ++i) {
         stbi_uc t = p[0];
         p[0] = p[2];
         p[2] = t;
         p += 3;
      }
   } else {
      STBI_ASSERT(s->img_out_n == 4);
      if (stbi__unpremultiply_on_load) {
         // convert bgr to rgb and unpremultiply
         for (i=0; i < pixel_count; ++i) {
            stbi_uc a = p[3];
            stbi_uc t = p[0];
            if (a) {
               p[0] = p[2] * 255 / a;
               p[1] = p[1] * 255 / a;
               p[2] =  t   * 255 / a;
            } else {
               p[0] = p[2];
               p[2] = t;
            }
            p += 4;
         }
      } else {
         // convert bgr to rgb
         for (i=0; i < pixel_count; ++i) {
            stbi_uc t = p[0];
            p[0] = p[2];
            p[2] = t;
            p += 4;
         }
      }
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x30, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rax
movl (%rax), %eax
movq -0x10(%rbp), %rcx
imull 0x4(%rcx), %eax
movl %eax, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x3, 0xc(%rax)
jne 0x31bf9
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x18(%rbp), %eax
jae 0x31bf4
movq -0x20(%rbp), %rax
movb (%rax), %al
movb %al, -0x21(%rbp)
movq -0x20(%rbp), %rax
movb 0x2(%rax), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movb -0x21(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x2(%rax)
movq -0x20(%rbp), %rax
addq $0x3, %rax
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x31bb5
jmp 0x31d31
movq -0x10(%rbp), %rax
cmpl $0x4, 0xc(%rax)
jne 0x31c05
jmp 0x31c24
leaq 0x167b6(%rip), %rdi     # 0x483c2
leaq 0x164a2(%rip), %rsi     # 0x480b5
movl $0x10c1, %edx           # imm = 0x10C1
leaq 0x167b5(%rip), %rcx     # 0x483d4
callq 0x52c0
cmpl $0x0, 0x2b061(%rip)     # 0x5cc8c
je 0x31ce7
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x18(%rbp), %eax
jae 0x31ce5
movq -0x20(%rbp), %rax
movb 0x3(%rax), %al
movb %al, -0x22(%rbp)
movq -0x20(%rbp), %rax
movb (%rax), %al
movb %al, -0x23(%rbp)
cmpb $0x0, -0x22(%rbp)
je 0x31cb4
movq -0x20(%rbp), %rax
movzbl 0x2(%rax), %eax
imull $0xff, %eax, %eax
movzbl -0x22(%rbp), %ecx
cltd
idivl %ecx
movb %al, %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movq -0x20(%rbp), %rax
movzbl 0x1(%rax), %eax
imull $0xff, %eax, %eax
movzbl -0x22(%rbp), %ecx
cltd
idivl %ecx
movb %al, %cl
movq -0x20(%rbp), %rax
movb %cl, 0x1(%rax)
movzbl -0x23(%rbp), %eax
imull $0xff, %eax, %eax
movzbl -0x22(%rbp), %ecx
cltd
idivl %ecx
movb %al, %cl
movq -0x20(%rbp), %rax
movb %cl, 0x2(%rax)
jmp 0x31ccb
movq -0x20(%rbp), %rax
movb 0x2(%rax), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movb -0x23(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x2(%rax)
movq -0x20(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x31c38
jmp 0x31d2f
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0x18(%rbp), %eax
jae 0x31d2d
movq -0x20(%rbp), %rax
movb (%rax), %al
movb %al, -0x24(%rbp)
movq -0x20(%rbp), %rax
movb 0x2(%rax), %cl
movq -0x20(%rbp), %rax
movb %cl, (%rax)
movb -0x24(%rbp), %cl
movq -0x20(%rbp), %rax
movb %cl, 0x2(%rax)
movq -0x20(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x20(%rbp)
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x31cee
jmp 0x31d2f
jmp 0x31d31
addq $0x30, %rsp
popq %rbp
retq
nopw (%rax,%rax)