// File: /workspace/github_cpp_makefile_star2_O1/drummyfish[P]flowchart/src/lodepng.cpp
// Function: lodepng_encode(unsigned char**, unsigned long*, unsigned char const*, unsigned int, unsigned int, LodePNGState*)
unsigned lodepng_encode(unsigned char** out, size_t* outsize,
                        const unsigned char* image, unsigned w, unsigned h,
                        LodePNGState* state)
{
  LodePNGInfo info;
  ucvector outv;
  unsigned char* data = 0; /*uncompressed version of the IDAT chunk data*/
  size_t datasize = 0;

  /*provide some proper output values if error will happen*/
  *out = 0;
  *outsize = 0;
  state->error = 0;

  lodepng_info_init(&info);
  lodepng_info_copy(&info, &state->info_png);

  if((info.color.colortype == LCT_PALETTE || state->encoder.force_palette)
      && (info.color.palettesize == 0 || info.color.palettesize > 256))
  {
    state->error = 68; /*invalid palette size, it is only allowed to be 1-256*/
    return state->error;
  }

  if(state->encoder.auto_convert != LAC_NO)
  {
    state->error = doAutoChooseColor(&info.color, image, w, h, &state->info_raw,
                                     state->encoder.auto_convert);
  }
  if(state->error) return state->error;

  if(state->encoder.zlibsettings.windowsize > 32768)
  {
    CERROR_RETURN_ERROR(state->error, 60); /*error: windowsize larger than allowed*/
  }
  if(state->encoder.zlibsettings.btype > 2)
  {
    CERROR_RETURN_ERROR(state->error, 61); /*error: unexisting btype*/
  }
  if(state->info_png.interlace_method > 1)
  {
    CERROR_RETURN_ERROR(state->error, 71); /*error: unexisting interlace mode*/
  }

  state->error = checkColorValidity(info.color.colortype, info.color.bitdepth);
  if(state->error) return state->error; /*error: unexisting color type given*/
  state->error = checkColorValidity(state->info_raw.colortype, state->info_raw.bitdepth);
  if(state->error) return state->error; /*error: unexisting color type given*/

  if(!lodepng_color_mode_equal(&state->info_raw, &info.color))
  {
    unsigned char* converted;
    size_t size = (w * h * lodepng_get_bpp(&info.color) + 7) / 8;

    converted = (unsigned char*)mymalloc(size);
    if(!converted && size) state->error = 83; /*alloc fail*/
    if(!state->error)
    {
      state->error = lodepng_convert(converted, image, &info.color, &state->info_raw, w, h);
    }
    if(!state->error) preProcessScanlines(&data, &datasize, converted, w, h, &info, &state->encoder);
    myfree(converted);
  }
  else preProcessScanlines(&data, &datasize, image, w, h, &info, &state->encoder);

  ucvector_init(&outv);
  while(!state->error) /*while only executed once, to break on error*/
  {
#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
    size_t i;
#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
    /*write signature and chunks*/
    writeSignature(&outv);
    /*IHDR*/
    addChunk_IHDR(&outv, w, h, info.color.colortype, info.color.bitdepth, info.interlace_method);
#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
    /*unknown chunks between IHDR and PLTE*/
    if(info.unknown_chunks_data[0])
    {
      state->error = addUnknownChunks(&outv, info.unknown_chunks_data[0], info.unknown_chunks_size[0]);
      if(state->error) break;
    }
#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
    /*PLTE*/
    if(info.color.colortype == LCT_PALETTE)
    {
      addChunk_PLTE(&outv, &info.color);
    }
    if(state->encoder.force_palette && (info.color.colortype == LCT_RGB || info.color.colortype == LCT_RGBA))
    {
      addChunk_PLTE(&outv, &info.color);
    }
    /*tRNS*/
    if(info.color.colortype == LCT_PALETTE && getPaletteTranslucency(info.color.palette, info.color.palettesize) != 0)
    {
      addChunk_tRNS(&outv, &info.color);
    }
    if((info.color.colortype == LCT_GREY || info.color.colortype == LCT_RGB) && info.color.key_defined)
    {
      addChunk_tRNS(&outv, &info.color);
    }
#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
    /*bKGD (must come between PLTE and the IDAt chunks*/
    if(info.background_defined) addChunk_bKGD(&outv, &info);
    /*pHYs (must come before the IDAT chunks)*/
    if(info.phys_defined) addChunk_pHYs(&outv, &info);

    /*unknown chunks between PLTE and IDAT*/
    if(info.unknown_chunks_data[1])
    {
      state->error = addUnknownChunks(&outv, info.unknown_chunks_data[1], info.unknown_chunks_size[1]);
      if(state->error) break;
    }
#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
    /*IDAT (multiple IDAT chunks must be consecutive)*/
    state->error = addChunk_IDAT(&outv, data, datasize, &state->encoder.zlibsettings);
    if(state->error) break;
#ifdef LODEPNG_COMPILE_ANCILLARY_CHUNKS
    /*tIME*/
    if(info.time_defined) addChunk_tIME(&outv, &info.time);
    /*tEXt and/or zTXt*/
    for(i = 0; i < info.text_num; i++)
    {
      if(strlen(info.text_keys[i]) > 79)
      {
        state->error = 66; /*text chunk too large*/
        break;
      }
      if(strlen(info.text_keys[i]) < 1)
      {
        state->error = 67; /*text chunk too small*/
        break;
      }
      if(state->encoder.text_compression)
        addChunk_zTXt(&outv, info.text_keys[i], info.text_strings[i], &state->encoder.zlibsettings);
      else
        addChunk_tEXt(&outv, info.text_keys[i], info.text_strings[i]);
    }
    /*LodePNG version id in text chunk*/
    if(state->encoder.add_id)
    {
      unsigned alread_added_id_text = 0;
      for(i = 0; i < info.text_num; i++)
      {
        if(!strcmp(info.text_keys[i], "LodePNG"))
        {
          alread_added_id_text = 1;
          break;
        }
      }
      if(alread_added_id_text == 0)
        addChunk_tEXt(&outv, "LodePNG", VERSION_STRING); /*it's shorter as tEXt than as zTXt chunk*/
    }
    /*iTXt*/
    for(i = 0; i < info.itext_num; i++)
    {
      if(strlen(info.itext_keys[i]) > 79)
      {
        state->error = 66; /*text chunk too large*/
        break;
      }
      if(strlen(info.itext_keys[i]) < 1)
      {
        state->error = 67; /*text chunk too small*/
        break;
      }
      addChunk_iTXt(&outv, state->encoder.text_compression,
                    info.itext_keys[i], info.itext_langtags[i], info.itext_transkeys[i], info.itext_strings[i],
                    &state->encoder.zlibsettings);
    }

    /*unknown chunks between IDAT and IEND*/
    if(info.unknown_chunks_data[2])
    {
      state->error = addUnknownChunks(&outv, info.unknown_chunks_data[2], info.unknown_chunks_size[2]);
      if(state->error) break;
    }
#endif /*LODEPNG_COMPILE_ANCILLARY_CHUNKS*/
    /*IEND*/
    addChunk_IEND(&outv);

    break; /*this isn't really a while loop; no error happened so break out now!*/
  }

  lodepng_info_cleanup(&info);
  myfree(data);
  /*instead of cleaning the vector up, give it to the output*/
  *out = outv.data;
  *outsize = outv.size;

  return state->error;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
movq %r9, %rbx
movl %r8d, %ebp
movl %ecx, 0x5c(%rsp)
movq %rdx, 0x78(%rsp)
movq %rsi, %r15
movq %rdi, %r12
xorl %eax, %eax
movq %rax, 0x80(%rsp)
movq %rax, 0x98(%rsp)
movq %rax, (%rdi)
movq %rax, (%rsi)
movl %eax, 0x190(%r9)
xorps %xmm0, %xmm0
leaq 0xb0(%rsp), %r14
movups %xmm0, 0x28(%r14)
movabsq $0x800000006, %rcx      # imm = 0x800000006
movq %rcx, 0x10(%r14)
movups %xmm0, 0x18(%r14)
movl %eax, 0x8(%r14)
movq %rax, (%r14)
movl %eax, 0xa4(%r14)
movups %xmm0, 0x38(%r14)
movups %xmm0, 0x48(%r14)
movups %xmm0, 0x58(%r14)
movups %xmm0, 0x68(%r14)
movups %xmm0, 0x78(%r14)
movl %eax, 0x88(%r14)
movups %xmm0, 0xb8(%r14)
movups %xmm0, 0xc8(%r14)
movups %xmm0, 0xd8(%r14)
leaq 0xa8(%r9), %rsi
movq %r14, %rdi
callq 0x5ff3
movl 0x10(%r14), %eax
cmpl $0x3, %eax
je 0x8994
cmpl $0x0, 0x70(%rbx)
je 0x89bf
movq $-0x101, %rcx           # imm = 0xFEFF
movq 0xd0(%rsp), %rdx
addq %rcx, %rdx
cmpq %rcx, %rdx
ja 0x89bf
movl $0x44, 0x190(%rbx)
movl $0x44, %eax
jmp 0x94b8
movl 0x60(%rbx), %ecx
testl %ecx, %ecx
je 0x9223
leaq 0x80(%rbx), %rsi
cmpl $0x1, %ecx
movl %ecx, 0x74(%rsp)
movq %r12, 0x88(%rsp)
movl %ebp, 0xa4(%rsp)
jne 0x8a1e
orl $0x2, %eax
cmpl $0x6, %eax
jne 0x9007
leaq 0x10(%rsp), %r14
movq %r14, %rdi
movq %rsi, 0x90(%rsp)
callq 0xd5ea
movb $0x1, %al
movb %al, 0x3(%r14)
movb %al, 0x3c(%r14)
movb %al, 0x34(%r14)
movb %al, 0x1(%r14)
jmp 0x8a30
leaq 0x10(%rsp), %rdi
movq %rsi, 0x90(%rsp)
callq 0xd5ea
movl %ebp, %r13d
imull 0x5c(%rsp), %r13d
cmpl $0x10, 0x84(%rbx)
movq %r13, 0xa8(%rsp)
movq %rbx, 0x60(%rsp)
movq %r15, 0x68(%rsp)
jne 0x8cff
testq %r13, %r13
je 0x8f3b
xorl %r14d, %r14d
movq 0x90(%rsp), %rax
movq %rax, (%rsp)
leaq 0x8(%rsp), %rdi
leaq 0xc(%rsp), %rsi
leaq 0xa(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq 0x78(%rsp), %r8
movq %r14, %r9
callq 0x69a3
movl %eax, %ebp
testl %eax, %eax
jne 0x8f3d
cmpb $0x0, 0x11(%rsp)
jne 0x8ae0
movzwl 0x8(%rsp), %eax
movzbl %al, %ecx
shrl $0x8, %eax
cmpl %eax, %ecx
jne 0x8acf
movzwl 0xc(%rsp), %eax
movzbl %al, %ecx
shrl $0x8, %eax
cmpl %eax, %ecx
jne 0x8acf
movzwl 0xa(%rsp), %eax
movzbl %al, %ecx
shrl $0x8, %eax
cmpl %eax, %ecx
je 0x8ae0
movw $0x101, 0x10(%rsp)      # imm = 0x101
movb $0x1, %al
movb %al, 0x4c(%rsp)
movb %al, 0x44(%rsp)
cmpb $0x0, 0x13(%rsp)
jne 0x8b06
movzwl 0x8(%rsp), %eax
cmpw 0xc(%rsp), %ax
jne 0x8afa
cmpw 0xa(%rsp), %ax
je 0x8b06
movw $0x101, 0x12(%rsp)      # imm = 0x101
movb $0x1, 0x4c(%rsp)
cmpb $0x0, 0x1d(%rsp)
sete %al
movzwl 0xe(%rsp), %r15d
cmpl $0xff, %r15d
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x8b3a
testq %r15, %r15
je 0x8c9b
movw $0x101, 0x1c(%rsp)      # imm = 0x101
movb $0x1, 0x4c(%rsp)
cmpb $0x0, 0x4c(%rsp)
jne 0x8b97
movzwl 0x8(%rsp), %ecx
movl $0x1, %eax
testl %ecx, %ecx
je 0x8b81
cmpl $0xff, %ecx
je 0x8b81
imull $0xf0f0f0f1, %ecx, %edx # imm = 0xF0F0F0F1
movl $0x8, %eax
cmpl $0xf0f0f0f, %edx        # imm = 0xF0F0F0F
ja 0x8b81
imull $0xfcfcfcfd, %ecx, %eax # imm = 0xFCFCFCFD
xorl %ecx, %ecx
cmpl $0x3030304, %eax        # imm = 0x3030304
setae %cl
leal 0x2(,%rcx,2), %eax
cmpl 0x48(%rsp), %eax
jbe 0x8b8b
movl %eax, 0x48(%rsp)
cmpl $0x8, 0x48(%rsp)
jb 0x8b97
movb $0x1, 0x4c(%rsp)
cmpb $0x0, 0x44(%rsp)
jne 0x8c5b
movzwl 0x8(%rsp), %r12d
movzbl %r12b, %eax
movzwl 0xc(%rsp), %r13d
movzwl 0xa(%rsp), %ebx
movq 0x28(%rsp), %rcx
shll $0x4, %eax
movq (%rcx,%rax), %rax
testq %rax, %rax
je 0x8bff
movq %r13, %rcx
movl $0xff, %edx
andq %rdx, %rcx
shll $0x4, %ecx
movq (%rax,%rcx), %rax
testq %rax, %rax
je 0x8bff
movq %rbx, %rcx
andq %rdx, %rcx
shll $0x4, %ecx
movq (%rax,%rcx), %rax
testq %rax, %rax
je 0x8bff
movzbl %r15b, %ecx
shll $0x4, %ecx
cmpl $0x0, 0x8(%rax,%rcx)
jns 0x8c5b
movl 0x20(%rsp), %r9d
movzbl %r12b, %esi
movzbl %r13b, %edx
movzbl %bl, %ecx
movzbl %r15b, %r8d
leaq 0x28(%rsp), %rdi
callq 0x68b0
movl 0x20(%rsp), %eax
cmpq $0xff, %rax
ja 0x8c46
movq 0x38(%rsp), %rcx
movb %r12b, (%rcx,%rax,4)
shlq $0x2, %rax
movl %eax, %eax
movb %r13b, 0x1(%rcx,%rax)
movb %bl, 0x2(%rcx,%rax)
movb %r15b, 0x3(%rcx,%rax)
movl 0x20(%rsp), %eax
incl %eax
movl %eax, 0x20(%rsp)
cmpl 0x40(%rsp), %eax
jb 0x8c5b
movb $0x1, 0x44(%rsp)
cmpb $0x0, 0x1d(%rsp)
movq 0xa8(%rsp), %r13
je 0x8c8a
cmpb $0x0, 0x44(%rsp)
je 0x8c8a
cmpb $0x0, 0x13(%rsp)
je 0x8c8a
cmpb $0x0, 0x11(%rsp)
je 0x8c8a
cmpb $0x0, 0x4c(%rsp)
jne 0x8f3d
incq %r14
cmpq %r14, %r13
jne 0x8a64
jmp 0x8f3d
cmpb $0x0, 0x14(%rsp)
je 0x8cd7
movzwl 0x8(%rsp), %eax
cmpw 0x16(%rsp), %ax
jne 0x8b2e
movzwl 0xc(%rsp), %eax
cmpw 0x18(%rsp), %ax
jne 0x8b2e
movzwl 0xa(%rsp), %eax
cmpw 0x1a(%rsp), %ax
jne 0x8b2e
jmp 0x8b3a
movb $0x1, 0x14(%rsp)
movzwl 0x8(%rsp), %eax
movw %ax, 0x16(%rsp)
movzwl 0xc(%rsp), %eax
movw %ax, 0x18(%rsp)
movzwl 0xa(%rsp), %eax
movw %ax, 0x1a(%rsp)
jmp 0x8b3a
testq %r13, %r13
je 0x8f3b
xorl %r15d, %r15d
movq 0x90(%rsp), %rax
movq %rax, (%rsp)
leaq 0x8(%rsp), %rdi
leaq 0xc(%rsp), %rsi
leaq 0xa(%rsp), %rdx
leaq 0xe(%rsp), %rcx
movq 0x78(%rsp), %r8
movq %r15, %r9
callq 0x6b39
movl %eax, %ebp
testl %eax, %eax
jne 0x8f3d
cmpb $0x0, 0x13(%rsp)
jne 0x8d65
movb 0x8(%rsp), %al
cmpb 0xc(%rsp), %al
jne 0x8d59
cmpb 0xa(%rsp), %al
je 0x8d65
movw $0x101, 0x12(%rsp)      # imm = 0x101
movb $0x1, 0x4c(%rsp)
cmpb $0x0, 0x1d(%rsp)
sete %al
movb 0xe(%rsp), %r14b
cmpb $-0x1, %r14b
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x8d95
testb %r14b, %r14b
je 0x8ed7
movw $0x101, 0x1c(%rsp)      # imm = 0x101
movb $0x1, 0x4c(%rsp)
cmpb $0x0, 0x4c(%rsp)
jne 0x8df2
movzbl 0x8(%rsp), %ecx
movl $0x1, %eax
testl %ecx, %ecx
je 0x8ddc
cmpl $0xff, %ecx
je 0x8ddc
imull $0xf0f0f0f1, %ecx, %edx # imm = 0xF0F0F0F1
movl $0x8, %eax
cmpl $0xf0f0f0f, %edx        # imm = 0xF0F0F0F
ja 0x8ddc
imull $0xfcfcfcfd, %ecx, %eax # imm = 0xFCFCFCFD
xorl %ecx, %ecx
cmpl $0x3030304, %eax        # imm = 0x3030304
setae %cl
leal 0x2(,%rcx,2), %eax
cmpl 0x48(%rsp), %eax
jbe 0x8de6
movl %eax, 0x48(%rsp)
cmpl $0x8, 0x48(%rsp)
jb 0x8df2
movb $0x1, 0x4c(%rsp)
cmpb $0x0, 0x44(%rsp)
jne 0x8ea5
movzbl %r14b, %r8d
movzbl 0x8(%rsp), %r13d
movb 0xc(%rsp), %bl
movzbl %bl, %edx
movb 0xa(%rsp), %r12b
movzbl %r12b, %ecx
movq 0x28(%rsp), %rax
movl %r13d, %esi
shll $0x4, %esi
movq (%rax,%rsi), %rax
testq %rax, %rax
je 0x8e54
movl %edx, %esi
shll $0x4, %esi
movq (%rax,%rsi), %rax
testq %rax, %rax
je 0x8e54
movl %ecx, %esi
shll $0x4, %esi
movq (%rax,%rsi), %rax
testq %rax, %rax
je 0x8e54
movl %r8d, %esi
shll $0x4, %esi
cmpl $0x0, 0x8(%rax,%rsi)
jns 0x8ea5
movl 0x20(%rsp), %r9d
movzbl %r13b, %esi
leaq 0x28(%rsp), %rdi
callq 0x68b0
movl 0x20(%rsp), %eax
cmpq $0xff, %rax
ja 0x8e90
movq 0x38(%rsp), %rcx
movb %r13b, (%rcx,%rax,4)
shlq $0x2, %rax
movl %eax, %eax
movb %bl, 0x1(%rcx,%rax)
movb %r12b, 0x2(%rcx,%rax)
movb %r14b, 0x3(%rcx,%rax)
movl 0x20(%rsp), %eax
incl %eax
movl %eax, 0x20(%rsp)
cmpl 0x40(%rsp), %eax
jb 0x8ea5
movb $0x1, 0x44(%rsp)
cmpb $0x0, 0x1d(%rsp)
movq 0xa8(%rsp), %r13
je 0x8ec9
cmpb $0x0, 0x44(%rsp)
je 0x8ec9
cmpb $0x0, 0x13(%rsp)
je 0x8ec9
cmpb $0x0, 0x4c(%rsp)
jne 0x8f3d
incq %r15
cmpq %r15, %r13
jne 0x8d0b
jmp 0x8f3d
cmpb $0x0, 0x14(%rsp)
je 0x8f13
movzbl 0x8(%rsp), %eax
cmpw %ax, 0x16(%rsp)
jne 0x8d89
movzbl 0xc(%rsp), %eax
cmpw %ax, 0x18(%rsp)
jne 0x8d89
movzbl 0xa(%rsp), %eax
cmpw %ax, 0x1a(%rsp)
jne 0x8d89
jmp 0x8d95
movb $0x1, 0x14(%rsp)
movzbl 0x8(%rsp), %eax
movw %ax, 0x16(%rsp)
movzbl 0xc(%rsp), %eax
movw %ax, 0x18(%rsp)
movzbl 0xa(%rsp), %eax
movw %ax, 0x1a(%rsp)
jmp 0x8d95
xorl %ebp, %ebp
movq 0x60(%rsp), %rbx
cmpl $0xf, 0x84(%rbx)
ja 0x8f7d
movzwl 0x16(%rsp), %eax
movl %eax, %ecx
shll $0x8, %ecx
addl %eax, %ecx
movw %cx, 0x16(%rsp)
movl 0x18(%rsp), %eax
movl %eax, %ecx
shll $0x8, %ecx
addl %eax, %ecx
movw %cx, 0x18(%rsp)
movzwl 0x1a(%rsp), %eax
movl %eax, %ecx
shll $0x8, %ecx
addl %eax, %ecx
movw %cx, 0x1a(%rsp)
movl 0x74(%rsp), %eax
cmpl $0x1, %eax
movq 0x68(%rsp), %r15
jne 0x8fb7
testl %ebp, %ebp
jne 0x8fb7
xorl %ebp, %ebp
cmpb $0x0, 0x1c(%rsp)
jne 0x9188
xorl %eax, %eax
cmpl $0x6, 0xc0(%rsp)
sete %al
addl %eax, %eax
movl %eax, 0xc0(%rsp)
jmp 0x9188
cmpl $0x1, %eax
je 0x9188
testl %ebp, %ebp
jne 0x9188
movl $0x0, 0xd8(%rsp)
cmpb $0x0, 0x10(%rsp)
je 0x900e
movl $0x10, 0xc4(%rsp)
cmpb $0x0, 0x1c(%rsp)
movb 0x12(%rsp), %al
je 0x90d0
xorl %ecx, %ecx
testb %al, %al
setne %cl
leal 0x4(,%rcx,2), %eax
jmp 0x9135
xorl %ebp, %ebp
jmp 0x920e
movl 0x20(%rsp), %eax
cmpl $0x101, %eax            # imm = 0x101
setb %dl
leal (%rax,%rax), %ecx
cmpl %r13d, %ecx
setb %cl
andb %dl, %cl
movl $0x1, %r14d
cmpl $0x3, %eax
jb 0x904b
movl $0x2, %r14d
cmpl $0x5, %eax
jb 0x904b
xorl %edx, %edx
cmpl $0x11, %eax
setae %dl
leal 0x4(,%rdx,4), %r14d
movb 0x12(%rsp), %dl
movb 0x1c(%rsp), %dil
movl %edx, %esi
orb %dil, %sil
sete %sil
movl %ecx, %r8d
orb %sil, %r8b
testb $0x1, %r8b
je 0x9117
testb %cl, %cl
je 0x9086
cmpl %r14d, 0x48(%rsp)
setbe %cl
andb %cl, %sil
cmpb $0x1, %sil
jne 0x9331
movl $0x0, 0xc0(%rsp)
movl 0x48(%rsp), %eax
movl %eax, 0xc4(%rsp)
xorl %ebp, %ebp
cmpb $0x0, 0x14(%rsp)
je 0x9188
movzwl 0x16(%rsp), %ecx
decl %eax
andl %ecx, %eax
movl $0x1, 0xd8(%rsp)
movl %eax, 0xdc(%rsp)
movl %eax, 0xe0(%rsp)
jmp 0x9181
xorl %ecx, %ecx
testb %al, %al
setne %cl
addl %ecx, %ecx
movl %ecx, 0xc0(%rsp)
xorl %ebp, %ebp
cmpb $0x0, 0x14(%rsp)
je 0x9188
movl $0x1, 0xd8(%rsp)
movzwl 0x16(%rsp), %eax
movl %eax, 0xdc(%rsp)
movzwl 0x18(%rsp), %eax
movl %eax, 0xe0(%rsp)
movzwl 0x1a(%rsp), %eax
jmp 0x9181
movl $0x8, 0xc4(%rsp)
testb %dil, %dil
je 0x9140
xorl %eax, %eax
testb %dl, %dl
setne %al
leal 0x4(,%rax,2), %eax
movl %eax, 0xc0(%rsp)
xorl %ebp, %ebp
jmp 0x9188
xorl %eax, %eax
testb %dl, %dl
setne %al
addl %eax, %eax
movl %eax, 0xc0(%rsp)
xorl %ebp, %ebp
cmpb $0x0, 0x14(%rsp)
je 0x9188
movl $0x1, 0xd8(%rsp)
movzbl 0x16(%rsp), %eax
movl %eax, 0xdc(%rsp)
movzbl 0x18(%rsp), %eax
movl %eax, 0xe0(%rsp)
movzbl 0x1a(%rsp), %eax
movl %eax, 0xe4(%rsp)
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0x6e4b
movq 0x10(%r14), %rdi
callq 0x2220
cmpl $0x3, 0xc0(%rsp)
jne 0x91f2
movq 0x90(%rbx), %rax
cmpq 0xd0(%rsp), %rax
setne %cl
shlq $0x2, %rax
testq %rax, %rax
sete %al
orb %cl, %al
jne 0x91f2
xorl %eax, %eax
movq 0x88(%rbx), %rcx
movb (%rcx,%rax), %cl
movq 0xc8(%rsp), %rdx
movb %cl, (%rdx,%rax)
incq %rax
movq 0x90(%rbx), %rcx
shlq $0x2, %rcx
cmpq %rcx, %rax
jb 0x91ca
cmpl $0x3, 0x74(%rsp)
jne 0x920e
cmpl $0x7, 0xc4(%rsp)
ja 0x920e
movl $0x8, 0xc4(%rsp)
movl %ebp, 0x190(%rbx)
movq 0x88(%rsp), %r12
movl 0xa4(%rsp), %ebp
movl 0x190(%rbx), %eax
testl %eax, %eax
jne 0x94b8
cmpl $0x8001, 0x40(%rbx)     # imm = 0x8001
jb 0x924e
movl $0x3c, 0x190(%rbx)
movl $0x3c, %eax
jmp 0x94b8
leaq 0x38(%rbx), %r13
cmpl $0x3, (%r13)
jb 0x926d
movl $0x3d, 0x190(%rbx)
movl $0x3d, %eax
jmp 0x94b8
cmpl $0x2, 0xb0(%rbx)
jb 0x928a
movl $0x47, 0x190(%rbx)
movl $0x47, %eax
jmp 0x94b8
movq %r12, 0x88(%rsp)
movq %r15, 0x68(%rsp)
movl 0xc0(%rsp), %r15d
movl 0xc4(%rsp), %esi
movl %r15d, %edi
callq 0x70d4
movl %eax, 0x190(%rbx)
testl %eax, %eax
jne 0x94b8
movl 0x80(%rbx), %edi
movl 0x84(%rbx), %esi
callq 0x70d4
movl %eax, 0x190(%rbx)
testl %eax, %eax
jne 0x94b8
movq %rbx, 0x60(%rsp)
leaq 0x80(%rbx), %r14
movq %r14, %rdi
leaq 0xc0(%rsp), %rsi
callq 0x6843
testl %eax, %eax
je 0x9396
movq %r13, (%rsp)
leaq 0x80(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0xb0(%rsp), %r9
movq 0x78(%rsp), %rdx
movl 0x5c(%rsp), %ecx
movl %ebp, %r8d
callq 0x988b
jmp 0x945c
testl %eax, %eax
je 0x96fd
movq %rbx, %r13
movq 0x38(%rsp), %rbx
movl $0x3, %r15d
xorl %r12d, %r12d
leal -0x3(%r15), %eax
movzbl (%rbx,%rax), %esi
leal -0x2(%r15), %eax
movzbl (%rbx,%rax), %edx
leal -0x1(%r15), %eax
movzbl (%rbx,%rax), %ecx
movl %r15d, %eax
movzbl (%rbx,%rax), %r8d
leaq 0xc0(%rsp), %rdi
callq 0x5970
testl %eax, %eax
jne 0x9701
incq %r12
movl 0x20(%rsp), %eax
addl $0x4, %r15d
cmpq %rax, %r12
jb 0x934a
xorl %ebp, %ebp
jmp 0x9703
movl 0xc4(%rsp), %eax
xorl %ecx, %ecx
cmpl $0x6, %r15d
ja 0x93b0
leaq 0x9200(%rip), %rcx      # 0x125ac
movl (%rcx,%r15,4), %ecx
movl %ebp, %ebx
imull 0x5c(%rsp), %ebx
imull %ecx, %ebx
imull %eax, %ebx
addl $0x7, %ebx
movl %ebx, %edi
shrl $0x3, %edi
callq 0x2270
movq %rax, %r15
testq %rax, %rax
setne %al
cmpl $0x8, %ebx
setb %cl
orb %al, %cl
jne 0x93ec
movq 0x60(%rsp), %rax
movl $0x53, 0x190(%rax)
movq 0x60(%rsp), %rbx
cmpl $0x0, 0x190(%rbx)
jne 0x9420
movq %r15, %rdi
movq 0x78(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
movq %r14, %rcx
movl 0x5c(%rsp), %r8d
movl %ebp, %r9d
callq 0x621e
movl %eax, 0x190(%rbx)
cmpl $0x0, 0x190(%rbx)
jne 0x9454
movq %r13, (%rsp)
leaq 0x80(%rsp), %rdi
leaq 0x98(%rsp), %rsi
leaq 0xb0(%rsp), %r9
movq %r15, %rdx
movl 0x5c(%rsp), %ecx
movl %ebp, %r8d
callq 0x988b
movq %r15, %rdi
callq 0x2220
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movq $0x0, 0x20(%rsp)
movq 0x60(%rsp), %rbx
cmpl $0x0, 0x190(%rbx)
movq 0x68(%rsp), %r15
je 0x94ca
leaq 0xb0(%rsp), %rdi
callq 0x5fa5
movq 0x80(%rsp), %rdi
callq 0x2220
movq 0x10(%rsp), %rax
movq 0x88(%rsp), %rcx
movq %rax, (%rcx)
movq 0x18(%rsp), %rax
movq %rax, (%r15)
movl 0x190(%rbx), %eax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x10(%rsp), %r14
movq %r14, %rdi
callq 0x9e6b
movl 0xb8(%rsp), %r9d
movl 0xc0(%rsp), %ecx
movl 0xc4(%rsp), %r8d
movq %r14, %rdi
movl 0x5c(%rsp), %esi
movl %ebp, %edx
callq 0x9f66
movq 0x168(%rsp), %rsi
testq %rsi, %rsi
je 0x9529
movq 0x180(%rsp), %rdx
leaq 0x10(%rsp), %rdi
callq 0xa152
movl %eax, 0x190(%rbx)
testl %eax, %eax
jne 0x9480
cmpl $0x3, 0xc0(%rsp)
jne 0x9545
leaq 0x10(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xa1be
cmpl $0x0, 0x70(%rbx)
je 0x956c
movl 0xc0(%rsp), %eax
andl $-0x5, %eax
cmpl $0x2, %eax
jne 0x956c
leaq 0x10(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xa1be
cmpl $0x3, 0xc0(%rsp)
jne 0x95a1
movq 0xc8(%rsp), %rdi
movq 0xd0(%rsp), %rsi
callq 0xa2a3
testl %eax, %eax
je 0x95a1
leaq 0x10(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xa33f
testl $0xfffffffd, 0xc0(%rsp) # imm = 0xFFFFFFFD
jne 0x95ca
cmpl $0x0, 0xd8(%rsp)
je 0x95ca
leaq 0x10(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xa33f
cmpl $0x0, 0xe8(%rsp)
je 0x95e6
leaq 0x10(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0xa65a
cmpl $0x0, 0x154(%rsp)
je 0x9602
leaq 0x10(%rsp), %rdi
leaq 0xb0(%rsp), %rsi
callq 0xa90a
movq 0x170(%rsp), %rsi
testq %rsi, %rsi
je 0x962f
movq 0x188(%rsp), %rdx
leaq 0x10(%rsp), %rdi
callq 0xa152
movl %eax, 0x190(%rbx)
testl %eax, %eax
jne 0x9480
movq 0x80(%rsp), %rsi
movq 0x98(%rsp), %rdx
leaq 0x10(%rsp), %rdi
movq %r13, %rcx
callq 0xaa0a
movl %eax, 0x190(%rbx)
testl %eax, %eax
jne 0x9480
cmpl $0x0, 0x138(%rsp)
je 0x9676
leaq 0x13c(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0xaa95
movq 0xf8(%rsp), %r12
testq %r12, %r12
je 0x973a
xorl %ebx, %ebx
leaq 0x10(%rsp), %r14
movq 0x100(%rsp), %rax
movq (%rax,%rbx,8), %r15
movq %r15, %rdi
callq 0x20d0
cmpq $0x4f, %rax
ja 0x9723
testq %rax, %rax
je 0x972a
movq 0x60(%rsp), %rax
cmpl $0x0, 0x78(%rax)
je 0x96d4
movq 0x108(%rsp), %rax
movq (%rax,%rbx,8), %rdx
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rcx
callq 0xab20
jmp 0x96eb
movq 0x108(%rsp), %rax
movq (%rax,%rbx,8), %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0xad60
incq %rbx
movq 0xf8(%rsp), %r12
cmpq %r12, %rbx
jb 0x968e
jmp 0x973a
xorl %ebp, %ebp
jmp 0x970b
movl %eax, %ebp
movq %r13, %rbx
movq 0x68(%rsp), %r15
movl $0x3, 0xc0(%rsp)
movl %r14d, 0xc4(%rsp)
jmp 0x9188
movl $0x42, %eax
jmp 0x972f
movl $0x43, %eax
movq 0x60(%rsp), %rcx
movl %eax, 0x190(%rcx)
movq 0x60(%rsp), %rax
cmpl $0x0, 0x74(%rax)
je 0x978c
testq %r12, %r12
je 0x9774
movq 0x100(%rsp), %rbx
xorl %r15d, %r15d
leaq 0x8e72(%rip), %r14      # 0x125ce
movq (%rbx,%r15,8), %rdi
movq %r14, %rsi
callq 0x2290
testl %eax, %eax
je 0x978c
incq %r15
cmpq %r15, %r12
jne 0x975c
leaq 0x8e53(%rip), %rsi      # 0x125ce
leaq 0x8e54(%rip), %rdx      # 0x125d6
leaq 0x10(%rsp), %rdi
callq 0xad60
cmpq $0x0, 0x110(%rsp)
je 0x9822
xorl %ebx, %ebx
leaq 0x10(%rsp), %r14
movq 0x118(%rsp), %rax
movq (%rax,%rbx,8), %r15
movq %r15, %rdi
callq 0x20d0
cmpq $0x4f, %rax
ja 0x980b
testq %rax, %rax
je 0x9812
movq 0x60(%rsp), %rax
movl 0x78(%rax), %esi
movq 0x120(%rsp), %rax
movq 0x128(%rsp), %rdx
movq (%rax,%rbx,8), %rcx
movq (%rdx,%rbx,8), %r8
movq 0x130(%rsp), %rax
movq (%rax,%rbx,8), %r9
movq %r13, (%rsp)
movq %r14, %rdi
movq %r15, %rdx
callq 0xaec1
incq %rbx
cmpq 0x110(%rsp), %rbx
jb 0x97a2
jmp 0x9822
movl $0x42, %eax
jmp 0x9817
movl $0x43, %eax
movq 0x60(%rsp), %rcx
movl %eax, 0x190(%rcx)
movq 0x178(%rsp), %rsi
testq %rsi, %rsi
movq 0x60(%rsp), %rbx
movq 0x68(%rsp), %r15
je 0x9859
movq 0x190(%rsp), %rdx
leaq 0x10(%rsp), %rdi
callq 0xa152
movl %eax, 0x190(%rbx)
testl %eax, %eax
jne 0x9480
leaq 0x18(%rsp), %rsi
leaq 0x9bb5(%rip), %rcx      # 0x1341a
leaq 0x10(%rsp), %rdi
xorl %edx, %edx
xorl %r8d, %r8d
callq 0x579a
testl %eax, %eax
jne 0x9480
movq 0x18(%rsp), %rax
movq %rax, 0x20(%rsp)
jmp 0x9480