// File: /workspace/github_cpp_makefile_star2_O1/tomfunkhouser[P]gaps/pkgs/png/pngread.c
// Function: png_read_info
void PNGAPI
png_read_info(png_structp png_ptr, png_infop info_ptr)
{
   png_debug(1, "in png_read_info");
 
   if (png_ptr == NULL || info_ptr == NULL)
      return;
 
   /* If we haven't checked all of the PNG signature bytes, do so now. */
   if (png_ptr->sig_bytes < 8)
   {
      png_size_t num_checked = png_ptr->sig_bytes,
                 num_to_check = 8 - num_checked;

#ifdef PNG_IO_STATE_SUPPORTED
      png_ptr->io_state = PNG_IO_READING | PNG_IO_SIGNATURE;
#endif

      png_read_data(png_ptr, &(info_ptr->signature[num_checked]), num_to_check);
      png_ptr->sig_bytes = 8;

      if (png_sig_cmp(info_ptr->signature, num_checked, num_to_check))
      {
         if (num_checked < 4 &&
             png_sig_cmp(info_ptr->signature, num_checked, num_to_check - 4))
            png_error(png_ptr, "Not a PNG file");
         else
            png_error(png_ptr, "PNG file corrupted by ASCII conversion");
      }
      if (num_checked < 3)
         png_ptr->mode |= PNG_HAVE_PNG_SIGNATURE;
   }

   for (;;)
   {
      PNG_IHDR;
      PNG_IDAT;
      PNG_IEND;
      PNG_PLTE;
#ifdef PNG_READ_bKGD_SUPPORTED
      PNG_bKGD;
#endif
#ifdef PNG_READ_cHRM_SUPPORTED
      PNG_cHRM;
#endif
#ifdef PNG_READ_gAMA_SUPPORTED
      PNG_gAMA;
#endif
#ifdef PNG_READ_hIST_SUPPORTED
      PNG_hIST;
#endif
#ifdef PNG_READ_iCCP_SUPPORTED
      PNG_iCCP;
#endif
#ifdef PNG_READ_iTXt_SUPPORTED
      PNG_iTXt;
#endif
#ifdef PNG_READ_oFFs_SUPPORTED
      PNG_oFFs;
#endif
#ifdef PNG_READ_pCAL_SUPPORTED
      PNG_pCAL;
#endif
#ifdef PNG_READ_pHYs_SUPPORTED
      PNG_pHYs;
#endif
#ifdef PNG_READ_sBIT_SUPPORTED
      PNG_sBIT;
#endif
#ifdef PNG_READ_sCAL_SUPPORTED
      PNG_sCAL;
#endif
#ifdef PNG_READ_sPLT_SUPPORTED
      PNG_sPLT;
#endif
#ifdef PNG_READ_sRGB_SUPPORTED
      PNG_sRGB;
#endif
#ifdef PNG_READ_tEXt_SUPPORTED
      PNG_tEXt;
#endif
#ifdef PNG_READ_tIME_SUPPORTED
      PNG_tIME;
#endif
#ifdef PNG_READ_tRNS_SUPPORTED
      PNG_tRNS;
#endif
#ifdef PNG_READ_zTXt_SUPPORTED
      PNG_zTXt;
#endif
      png_uint_32 length = png_read_chunk_header(png_ptr);
      PNG_CONST png_bytep chunk_name = png_ptr->chunk_name;

      /* This should be a binary subdivision search or a hash for
       * matching the chunk name rather than a linear search.
       */
      if (!png_memcmp(chunk_name, png_IDAT, 4))
        if (png_ptr->mode & PNG_AFTER_IDAT)
          png_ptr->mode |= PNG_HAVE_CHUNK_AFTER_IDAT;

      if (!png_memcmp(chunk_name, png_IHDR, 4))
         png_handle_IHDR(png_ptr, info_ptr, length);
      else if (!png_memcmp(chunk_name, png_IEND, 4))
         png_handle_IEND(png_ptr, info_ptr, length);
#ifdef PNG_HANDLE_AS_UNKNOWN_SUPPORTED
      else if (png_handle_as_unknown(png_ptr, chunk_name))
      {
         if (!png_memcmp(chunk_name, png_IDAT, 4))
            png_ptr->mode |= PNG_HAVE_IDAT;
         png_handle_unknown(png_ptr, info_ptr, length);
         if (!png_memcmp(chunk_name, png_PLTE, 4))
            png_ptr->mode |= PNG_HAVE_PLTE;
         else if (!png_memcmp(chunk_name, png_IDAT, 4))
         {
            if (!(png_ptr->mode & PNG_HAVE_IHDR))
               png_error(png_ptr, "Missing IHDR before IDAT");
            else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
                     !(png_ptr->mode & PNG_HAVE_PLTE))
               png_error(png_ptr, "Missing PLTE before IDAT");
            break;
         }
      }
#endif
      else if (!png_memcmp(chunk_name, png_PLTE, 4))
         png_handle_PLTE(png_ptr, info_ptr, length);
      else if (!png_memcmp(chunk_name, png_IDAT, 4))
      {
         if (!(png_ptr->mode & PNG_HAVE_IHDR))
            png_error(png_ptr, "Missing IHDR before IDAT");
         else if (png_ptr->color_type == PNG_COLOR_TYPE_PALETTE &&
                  !(png_ptr->mode & PNG_HAVE_PLTE))
            png_error(png_ptr, "Missing PLTE before IDAT");

         png_ptr->idat_size = length;
         png_ptr->mode |= PNG_HAVE_IDAT;
         break;
      }
#ifdef PNG_READ_bKGD_SUPPORTED
      else if (!png_memcmp(chunk_name, png_bKGD, 4))
         png_handle_bKGD(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_cHRM_SUPPORTED
      else if (!png_memcmp(chunk_name, png_cHRM, 4))
         png_handle_cHRM(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_gAMA_SUPPORTED
      else if (!png_memcmp(chunk_name, png_gAMA, 4))
         png_handle_gAMA(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_hIST_SUPPORTED
      else if (!png_memcmp(chunk_name, png_hIST, 4))
         png_handle_hIST(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_oFFs_SUPPORTED
      else if (!png_memcmp(chunk_name, png_oFFs, 4))
         png_handle_oFFs(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_pCAL_SUPPORTED
      else if (!png_memcmp(chunk_name, png_pCAL, 4))
         png_handle_pCAL(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_sCAL_SUPPORTED
      else if (!png_memcmp(chunk_name, png_sCAL, 4))
         png_handle_sCAL(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_pHYs_SUPPORTED
      else if (!png_memcmp(chunk_name, png_pHYs, 4))
         png_handle_pHYs(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_sBIT_SUPPORTED
      else if (!png_memcmp(chunk_name, png_sBIT, 4))
         png_handle_sBIT(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_sRGB_SUPPORTED
      else if (!png_memcmp(chunk_name, png_sRGB, 4))
         png_handle_sRGB(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_iCCP_SUPPORTED
      else if (!png_memcmp(chunk_name, png_iCCP, 4))
         png_handle_iCCP(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_sPLT_SUPPORTED
      else if (!png_memcmp(chunk_name, png_sPLT, 4))
         png_handle_sPLT(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_tEXt_SUPPORTED
      else if (!png_memcmp(chunk_name, png_tEXt, 4))
         png_handle_tEXt(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_tIME_SUPPORTED
      else if (!png_memcmp(chunk_name, png_tIME, 4))
         png_handle_tIME(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_tRNS_SUPPORTED
      else if (!png_memcmp(chunk_name, png_tRNS, 4))
         png_handle_tRNS(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_zTXt_SUPPORTED
      else if (!png_memcmp(chunk_name, png_zTXt, 4))
         png_handle_zTXt(png_ptr, info_ptr, length);
#endif
#ifdef PNG_READ_iTXt_SUPPORTED
      else if (!png_memcmp(chunk_name, png_iTXt, 4))
         png_handle_iTXt(png_ptr, info_ptr, length);
#endif
      else
         png_handle_unknown(png_ptr, info_ptr, length);
   }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
testq %rdi, %rdi
sete %al
testq %rsi, %rsi
sete %cl
orb %al, %cl
jne 0x8b1d2
movq %rsi, %r14
movq %rdi, %rbx
movzbl 0x254(%rdi), %r15d
cmpq $0x7, %r15
ja 0x8ae4a
movl $0x8, %r13d
subq %r15, %r13
movl $0x11, 0x490(%rbx)
leaq 0x2c(%r14), %r12
leaq (%r14,%r15), %rsi
addq $0x2c, %rsi
movq %rbx, %rdi
movq %r13, %rdx
callq 0x8c0a8
movb $0x8, 0x254(%rbx)
movq %r12, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x87ae1
testl %eax, %eax
je 0x8ae3d
cmpb $0x3, %r15b
ja 0x8ae2e
movl $0x4, %edx
subq %r15, %rdx
movq %r12, %rdi
movq %r15, %rsi
callq 0x87ae1
testl %eax, %eax
je 0x8ae2e
leaq 0x21aa1(%rip), %rsi     # 0xac8cd
jmp 0x8ae35
leaq 0x21aa7(%rip), %rsi     # 0xac8dc
movq %rbx, %rdi
callq 0x92dd0
cmpb $0x2, %r15b
ja 0x8ae4a
orb $0x10, 0x11d(%rbx)
leaq 0x244(%rbx), %r15
movq %rbx, %rdi
callq 0x9a3c1
movl %eax, %ebp
cmpl $0x54414449, 0x244(%rbx) # imm = 0x54414449
jne 0x8ae7c
movl 0x11c(%rbx), %eax
testb $0x8, %al
je 0x8ae7c
orl $0x2000, %eax           # imm = 0x2000
movl %eax, 0x11c(%rbx)
cmpl $0x52444849, (%r15)     # imm = 0x52444849
je 0x8aedc
cmpl $0x444e4549, (%r15)     # imm = 0x444E4549
je 0x8aeee
movq %rbx, %rdi
movq %r15, %rsi
callq 0x88298
testl %eax, %eax
je 0x8af00
cmpl $0x54414449, (%r15)     # imm = 0x54414449
jne 0x8aead
orb $0x4, 0x11c(%rbx)
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9ccfe
cmpl $0x45544c50, 0x244(%rbx) # imm = 0x45544C50
je 0x8b009
cmpl $0x54414449, (%r15)     # imm = 0x54414449
jne 0x8ae51
jmp 0x8b159
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9a91a
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9ac80
jmp 0x8ae51
cmpl $0x45544c50, (%r15)     # imm = 0x45544C50
je 0x8b015
cmpl $0x54414449, (%r15)     # imm = 0x54414449
je 0x8b16c
cmpl $0x44474b62, (%r15)     # imm = 0x44474B62
je 0x8b027
cmpl $0x4d524863, (%r15)     # imm = 0x4D524863
je 0x8b039
cmpl $0x414d4167, (%r15)     # imm = 0x414D4167
je 0x8b04b
cmpl $0x54534968, (%r15)     # imm = 0x54534968
je 0x8b05d
cmpl $0x7346466f, (%r15)     # imm = 0x7346466F
je 0x8b06f
cmpl $0x4c414370, (%r15)     # imm = 0x4C414370
je 0x8b081
cmpl $0x4c414373, (%r15)     # imm = 0x4C414373
je 0x8b093
cmpl $0x73594870, (%r15)     # imm = 0x73594870
je 0x8b0a5
cmpl $0x54494273, (%r15)     # imm = 0x54494273
je 0x8b0b7
cmpl $0x42475273, (%r15)     # imm = 0x42475273
je 0x8b0c9
cmpl $0x50434369, (%r15)     # imm = 0x50434369
je 0x8b0db
cmpl $0x544c5073, (%r15)     # imm = 0x544C5073
je 0x8b0ed
cmpl $0x74584574, (%r15)     # imm = 0x74584574
je 0x8b0ff
cmpl $0x454d4974, (%r15)     # imm = 0x454D4974
je 0x8b111
cmpl $0x534e5274, (%r15)     # imm = 0x534E5274
je 0x8b123
cmpl $0x7458547a, (%r15)     # imm = 0x7458547A
je 0x8b135
cmpl $0x74585469, (%r15)     # imm = 0x74585469
je 0x8b147
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9ccfe
jmp 0x8ae51
orb $0x2, 0x11c(%rbx)
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9aada
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9bbb3
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9af58
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9acd0
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9bd76
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9bf46
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9c083
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9c3e6
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9be8f
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9ae22
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9b26b
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9b433
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9b6d8
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9c661
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9c596
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9b99f
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9c83a
jmp 0x8ae51
movq %rbx, %rdi
movq %r14, %rsi
movl %ebp, %edx
callq 0x9ca75
jmp 0x8ae51
movl 0x11c(%rbx), %eax
testb $0x1, %al
jne 0x8b17f
leaq 0x21799(%rip), %rsi     # 0xac903
jmp 0x8b193
movl 0x11c(%rbx), %eax
testb $0x1, %al
jne 0x8b1a9
leaq 0x21786(%rip), %rsi     # 0xac903
jmp 0x8b1bd
testb $0x2, %al
jne 0x8b1d2
cmpb $0x3, 0x24e(%rbx)
jne 0x8b1d2
leaq 0x21789(%rip), %rsi     # 0xac91c
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x92dd0
testb $0x2, %al
jne 0x8b1c5
cmpb $0x3, 0x24e(%rbx)
jne 0x8b1c5
leaq 0x2175f(%rip), %rsi     # 0xac91c
movq %rbx, %rdi
callq 0x92dd0
movl %ebp, 0x230(%rbx)
orb $0x4, 0x11c(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq