// File: /workspace/github_cpp_makefile_star2_O2/Lut99[P]RayTracer/src/lib/LodePNG.cpp
// Function: lodepng_convert(unsigned char*, unsigned char const*, LodePNGColorMode const*, LodePNGColorMode const*, unsigned int, unsigned int)
unsigned lodepng_convert(unsigned char* out, const unsigned char* in,
                         const LodePNGColorMode* mode_out, const LodePNGColorMode* mode_in,
                         unsigned w, unsigned h) {
  size_t i;
  ColorTree tree;
  size_t numpixels = (size_t)w * (size_t)h;
  unsigned error = 0;

  if(mode_in->colortype == LCT_PALETTE && !mode_in->palette) {
    return 107; /* error: must provide palette if input mode is palette */
  }

  if(lodepng_color_mode_equal(mode_out, mode_in)) {
    size_t numbytes = lodepng_get_raw_size(w, h, mode_in);
    for(i = 0; i != numbytes; ++i) out[i] = in[i];
    return 0;
  }

  if(mode_out->colortype == LCT_PALETTE) {
    size_t palettesize = mode_out->palettesize;
    const unsigned char* palette = mode_out->palette;
    size_t palsize = (size_t)1u << mode_out->bitdepth;
    /*if the user specified output palette but did not give the values, assume
    they want the values of the input color type (assuming that one is palette).
    Note that we never create a new palette ourselves.*/
    if(palettesize == 0) {
      palettesize = mode_in->palettesize;
      palette = mode_in->palette;
      /*if the input was also palette with same bitdepth, then the color types are also
      equal, so copy literally. This to preserve the exact indices that were in the PNG
      even in case there are duplicate colors in the palette.*/
      if (mode_in->colortype == LCT_PALETTE && mode_in->bitdepth == mode_out->bitdepth) {
        size_t numbytes = lodepng_get_raw_size(w, h, mode_in);
        for(i = 0; i != numbytes; ++i) out[i] = in[i];
        return 0;
      }
    }
    if(palettesize < palsize) palsize = palettesize;
    color_tree_init(&tree);
    for(i = 0; i != palsize; ++i) {
      const unsigned char* p = &palette[i * 4];
      color_tree_add(&tree, p[0], p[1], p[2], p[3], (unsigned)i);
    }
  }

  if(mode_in->bitdepth == 16 && mode_out->bitdepth == 16) {
    for(i = 0; i != numpixels; ++i) {
      unsigned short r = 0, g = 0, b = 0, a = 0;
      getPixelColorRGBA16(&r, &g, &b, &a, in, i, mode_in);
      rgba16ToPixel(out, i, mode_out, r, g, b, a);
    }
  } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGBA) {
    getPixelColorsRGBA8(out, numpixels, in, mode_in);
  } else if(mode_out->bitdepth == 8 && mode_out->colortype == LCT_RGB) {
    getPixelColorsRGB8(out, numpixels, in, mode_in);
  } else {
    unsigned char r = 0, g = 0, b = 0, a = 0;
    for(i = 0; i != numpixels; ++i) {
      getPixelColorRGBA8(&r, &g, &b, &a, in, i, mode_in);
      error = rgba8ToPixel(out, i, mode_out, &tree, r, g, b, a);
      if (error) break;
    }
  }

  if(mode_out->colortype == LCT_PALETTE) {
    color_tree_cleanup(&tree);
  }

  return error;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xc8, %rsp
movl %r9d, %ebp
movl %r8d, %ebx
movq %rcx, %r13
movq %rdx, %r15
movq %rsi, %r14
movl (%rcx), %r12d
cmpl $0x3, %r12d
jne 0x76815
cmpq $0x0, 0x8(%r13)
je 0x76888
movq %rdi, 0x8(%rsp)
movq %r15, %rdi
movq %r13, %rsi
callq 0x7732f
testl %eax, %eax
je 0x76853
movl %ebx, %edi
movl %ebp, %esi
movq %r13, %rdx
callq 0x760f8
xorl %ebx, %ebx
xorl %ecx, %ecx
movq 0x8(%rsp), %rsi
cmpq %rcx, %rax
je 0x7731b
movb (%r14,%rcx), %dl
movb %dl, (%rsi,%rcx)
incq %rcx
jmp 0x7683e
movl %ebp, 0x10(%rsp)
movq %r13, 0x30(%rsp)
movq %r15, 0x20(%rsp)
cmpl $0x3, (%r15)
jne 0x76919
movq 0x20(%rsp), %rdx
movq 0x10(%rdx), %rax
movl 0x4(%rdx), %ecx
pushq $0x1
popq %rbp
shlq %cl, %rbp
testq %rax, %rax
je 0x76890
movq 0x8(%rdx), %r15
jmp 0x768d6
pushq $0x6b
popq %rbx
jmp 0x7731b
movq 0x30(%rsp), %rdx
movq 0x8(%rdx), %r15
movq 0x10(%rdx), %rax
cmpl $0x3, %r12d
jne 0x768d6
cmpl %ecx, 0x4(%rdx)
jne 0x768d6
movl %ebx, %edi
movl 0x10(%rsp), %esi
movq 0x30(%rsp), %rdx
callq 0x760f8
xorl %ebx, %ebx
xorl %ecx, %ecx
movq 0x8(%rsp), %rsi
cmpq %rcx, %rax
je 0x7731b
movb (%r14,%rcx), %dl
movb %dl, (%rsi,%rcx)
incq %rcx
jmp 0x768c1
cmpq %rbp, %rax
cmovbq %rax, %rbp
leaq 0x40(%rsp), %r12
movq %r12, %rdi
callq 0x7739b
xorl %r13d, %r13d
cmpq %r13, %rbp
je 0x76919
movzbl (%r15,%r13,4), %esi
movzbl 0x1(%r15,%r13,4), %edx
movzbl 0x2(%r15,%r13,4), %ecx
movzbl 0x3(%r15,%r13,4), %r8d
movq %r12, %rdi
movl %r13d, %r9d
callq 0x773b5
incq %r13
jmp 0x768ed
movl %ebx, %r13d
movl 0x10(%rsp), %r15d
movq %r15, %rax
imulq %r13, %rax
movq %rax, 0x10(%rsp)
movq 0x30(%rsp), %rax
movl 0x4(%rax), %r12d
movl %r12d, %ecx
xorl $0x10, %ecx
movq 0x20(%rsp), %r10
movl 0x4(%r10), %eax
movl %eax, %edx
xorl $0x10, %edx
orl %ecx, %edx
jne 0x76a55
leaq 0x2e(%rsp), %r15
leaq 0x2c(%rsp), %r13
leaq 0x19bd1(%rip), %r12     # 0x90534
xorl %edi, %edi
xorl %ebp, %ebp
cmpq %rbp, 0x10(%rsp)
je 0x76e91
andw $0x0, 0x38(%rsp)
andw $0x0, 0x1e(%rsp)
andw $0x0, 0x2e(%rsp)
andw $0x0, 0x2c(%rsp)
movq 0x30(%rsp), %rax
movq %rax, (%rsp)
movq %rdi, %rbx
leaq 0x38(%rsp), %rdi
leaq 0x1e(%rsp), %rsi
movq %r15, %rdx
movq %r13, %rcx
movq %r14, %r8
movq %rbp, %r9
callq 0x77456
movq %rbx, %rdi
movq 0x20(%rsp), %rax
movl (%rax), %esi
cmpq $0x6, %rsi
ja 0x76a49
movzwl 0x38(%rsp), %ebx
movzwl 0x1e(%rsp), %edx
movzwl 0x2e(%rsp), %eax
movzwl 0x2c(%rsp), %ecx
movslq (%r12,%rsi,4), %rsi
addq %r12, %rsi
jmpq *%rsi
rolw $0x8, %bx
movq 0x8(%rsp), %rax
movw %bx, (%rax,%rbp,2)
jmp 0x76a49
movq 0x8(%rsp), %rax
movb %bh, (%rax,%rbp,4)
movb %bl, 0x1(%rax,%rbp,4)
movb %ch, 0x2(%rax,%rbp,4)
movb %cl, 0x3(%rax,%rbp,4)
jmp 0x76a49
movq 0x8(%rsp), %rcx
movb %bh, (%rcx,%rdi,2)
movb %bl, 0x1(%rcx,%rdi,2)
movb %dh, 0x2(%rcx,%rdi,2)
movb %dl, 0x3(%rcx,%rdi,2)
movb %ah, 0x4(%rcx,%rdi,2)
movb %al, 0x5(%rcx,%rdi,2)
jmp 0x76a49
movq 0x8(%rsp), %rsi
movb %bh, (%rsi,%rbp,8)
movb %bl, 0x1(%rsi,%rbp,8)
movb %dh, 0x2(%rsi,%rbp,8)
movb %dl, 0x3(%rsi,%rbp,8)
movb %ah, 0x4(%rsi,%rbp,8)
movb %al, 0x5(%rsi,%rbp,8)
movb %ch, 0x6(%rsi,%rbp,8)
movb %cl, 0x7(%rsi,%rbp,8)
incq %rbp
addq $0x3, %rdi
jmp 0x76967
cmpl $0x8, %eax
jne 0x76acb
movl (%r10), %eax
cmpl $0x2, %eax
je 0x76cce
cmpl $0x6, %eax
jne 0x76acb
movq 0x30(%rsp), %rax
movl (%rax), %eax
cmpq $0x6, %rax
ja 0x76e96
leaq 0x19a79(%rip), %rcx     # 0x904fc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpq $0x10, %r12
je 0x771c9
cmpl $0x8, %r12d
movq 0x8(%rsp), %rdx
jne 0x77245
xorl %eax, %eax
cmpq 0x10(%rsp), %rax
je 0x77190
movb (%r14,%rax), %cl
movb %cl, 0x2(%rdx)
movb %cl, 0x1(%rdx)
movb %cl, (%rdx)
movb $-0x1, 0x3(%rdx)
incq %rax
addq $0x4, %rdx
jmp 0x76aa7
xorl %eax, %eax
leaq 0x38(%rsp), %rcx
movb %al, (%rcx)
leaq 0x1e(%rsp), %rcx
movb %al, (%rcx)
leaq 0x2e(%rsp), %rcx
movq %rcx, %r15
movb %al, (%rcx)
leaq 0x2c(%rsp), %rcx
movq %rcx, %rbp
movb %al, (%rcx)
leaq 0x19a22(%rip), %rbx     # 0x90518
xorl %r13d, %r13d
xorl %r12d, %r12d
cmpq %r12, 0x10(%rsp)
je 0x77304
movq 0x30(%rsp), %rax
movq %rax, (%rsp)
leaq 0x38(%rsp), %rdi
leaq 0x1e(%rsp), %rsi
movq %r15, %rdx
movq %rbp, %rcx
movq %r14, %r8
movq %r12, %r9
callq 0x775ce
movq 0x20(%rsp), %r9
movl (%r9), %r8d
cmpq $0x6, %r8
ja 0x76cc2
movb 0x38(%rsp), %al
movzbl %al, %esi
movb 0x1e(%rsp), %dl
movb 0x2e(%rsp), %cl
movb 0x2c(%rsp), %dil
movslq (%rbx,%r8,4), %r8
addq %rbx, %r8
jmpq *%r8
movl 0x4(%r9), %edx
cmpl $0x10, %edx
je 0x76c78
cmpl $0x8, %edx
jne 0x76ca2
movq 0x8(%rsp), %rcx
movb %al, (%rcx,%r12)
jmp 0x76cc2
movzbl %dl, %edx
movzbl %cl, %ecx
movzbl %dil, %r8d
leaq 0x40(%rsp), %rdi
callq 0x7d0d0
testl %eax, %eax
js 0x76d34
movq 0x20(%rsp), %rcx
movl 0x4(%rcx), %edx
cmpl $0x8, %edx
jne 0x76cb3
movq 0x8(%rsp), %rcx
movb %al, (%rcx,%r12)
jmp 0x76cc2
cmpl $0x8, 0x4(%r9)
jne 0x76c26
movq 0x8(%rsp), %rsi
movb %al, (%rsi,%r13)
movb %dl, 0x1(%rsi,%r13)
movb %cl, 0x2(%rsi,%r13)
jmp 0x76cc2
movl 0x4(%r9), %ecx
cmpl $0x10, %ecx
je 0x76c88
cmpl $0x8, %ecx
jne 0x76cc2
movq 0x8(%rsp), %rcx
movb %al, (%rcx,%r12,2)
movb %dil, 0x1(%rcx,%r12,2)
jmp 0x76cc2
cmpl $0x8, 0x4(%r9)
jne 0x76c4a
movq 0x8(%rsp), %rsi
movb %al, (%rsi,%r12,4)
movb %dl, 0x1(%rsi,%r12,4)
movb %cl, 0x2(%rsi,%r12,4)
movb %dil, 0x3(%rsi,%r12,4)
jmp 0x76cc2
movq 0x8(%rsp), %rsi
movb %al, 0x1(%rsi,%r13,2)
movb %al, (%rsi,%r13,2)
movb %dl, 0x3(%rsi,%r13,2)
movb %dl, 0x2(%rsi,%r13,2)
movb %cl, 0x5(%rsi,%r13,2)
movb %cl, 0x4(%rsi,%r13,2)
jmp 0x76cc2
movq 0x8(%rsp), %rsi
movb %al, 0x1(%rsi,%r12,8)
movb %al, (%rsi,%r12,8)
movb %dl, 0x3(%rsi,%r12,8)
movb %dl, 0x2(%rsi,%r12,8)
movb %cl, 0x5(%rsi,%r12,8)
movb %cl, 0x4(%rsi,%r12,8)
movb %dil, 0x7(%rsi,%r12,8)
movb %dil, 0x6(%rsi,%r12,8)
jmp 0x76cc2
movq 0x8(%rsp), %rcx
movb %al, 0x1(%rcx,%r12,2)
movb %al, (%rcx,%r12,2)
jmp 0x76cc2
movq 0x8(%rsp), %rcx
movb %al, 0x1(%rcx,%r12,4)
movb %al, (%rcx,%r12,4)
movb %dil, 0x3(%rcx,%r12,4)
movb %dil, 0x2(%rcx,%r12,4)
jmp 0x76cc2
movb $0x8, %cl
subb %dl, %cl
shrl %cl, %esi
pushq $-0x1
popq %rax
movl %edx, %ecx
shll %cl, %eax
notl %eax
andl %esi, %eax
movq 0x8(%rsp), %rdi
movq %r12, %rsi
movl %eax, %ecx
callq 0x7d07c
incq %r12
addq $0x3, %r13
jmp 0x76afc
movq 0x30(%rsp), %r13
movl (%r13), %eax
xorl %ebx, %ebx
cmpq $0x6, %rax
ja 0x7730b
leaq 0x197f6(%rip), %rcx     # 0x904e0
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
cmpq $0x8, %r12
je 0x77218
cmpl $0x10, %r12d
movq 0x8(%rsp), %rsi
jne 0x772b6
addq $0x2, %rsi
xorl %ebx, %ebx
xorl %eax, %eax
cmpq %rax, 0x10(%rsp)
je 0x7730b
movb (%r14,%rax,2), %cl
movb %cl, (%rsi)
movb %cl, -0x1(%rsi)
movb %cl, -0x2(%rsi)
incq %rax
addq $0x3, %rsi
jmp 0x76d14
pushq $0x52
popq %rax
movl %eax, %ebx
jmp 0x77306
cmpl $0x8, %r12d
jne 0x76f0d
pushq $0x4
popq %rbx
xorl %r15d, %r15d
movq 0x30(%rsp), %r13
cmpq %r15, 0x10(%rsp)
je 0x77304
movzbl (%r14,%r15), %esi
shll $0x2, %esi
addq 0x8(%r13), %rsi
movq 0x8(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rdx
callq 0x7c104
incq %r15
addq $0x4, %r12
movq %r12, 0x8(%rsp)
jmp 0x76d53
cmpl $0x8, %r12d
jne 0x76f5f
pushq $0x3
popq %rbx
xorl %r15d, %r15d
cmpq %r15, 0x10(%rsp)
je 0x77304
movzbl (%r14,%r15), %esi
shll $0x2, %esi
addq 0x8(%r13), %rsi
movq 0x8(%rsp), %r12
movq %r12, %rdi
movq %rbx, %rdx
callq 0x7c104
incq %r15
addq $0x3, %r12
movq %r12, 0x8(%rsp)
jmp 0x76d98
cmpl $0x8, %r12d
jne 0x76fb1
xorl %r12d, %r12d
pushq $0x3
popq %rbp
cmpq 0x10(%rsp), %r12
je 0x7703b
leaq (%r12,%r12,2), %rsi
addq %r14, %rsi
movq 0x8(%rsp), %rbx
movq %rbx, %rdi
movq %rbp, %rdx
callq 0x7c104
movb $-0x1, 0x3(%rbx)
incq %r12
addq $0x4, %rbx
movq %rbx, 0x8(%rsp)
jmp 0x76ddd
cmpl $0x8, %r12d
jne 0x77094
movq 0x10(%rsp), %rax
leaq (%rax,%rax,2), %rdx
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x7c104
jmp 0x77306
xorl %ebx, %ebx
xorl %eax, %eax
cmpl $0x8, %r12d
jne 0x770c8
movq 0x8(%rsp), %rdx
cmpq %rax, 0x10(%rsp)
je 0x7730b
movb (%r14,%rax,2), %cl
movb %cl, 0x2(%rdx,%rax,4)
movb %cl, 0x1(%rdx,%rax,4)
movb %cl, (%rdx,%rax,4)
movb 0x1(%r14,%rax,2), %cl
movb %cl, 0x3(%rdx,%rax,4)
incq %rax
jmp 0x76e49
cmpl $0x8, %r12d
jne 0x770f5
movq 0x10(%rsp), %rdx
shlq $0x2, %rdx
movq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x7c104
movq 0x20(%rsp), %r10
xorl %ebx, %ebx
jmp 0x7730b
cmpl $0x8, %r12d
jne 0x77130
movq 0x8(%rsp), %rdx
addq $0x2, %rdx
xorl %ebx, %ebx
xorl %eax, %eax
cmpq %rax, 0x10(%rsp)
je 0x7730b
movb (%r14,%rax,2), %cl
movb %cl, (%rdx)
movb %cl, -0x1(%rdx)
movb %cl, -0x2(%rdx)
incq %rax
addq $0x3, %rdx
jmp 0x76eb4
cmpl $0x8, %r12d
jne 0x7715d
pushq $0x3
popq %rbx
movq 0x8(%rsp), %rdi
subq $0x1, 0x10(%rsp)
jb 0x77304
movq %rdi, %r15
movq %r14, %rsi
movq %rbx, %rdx
callq 0x7c104
movq %r15, %rdi
addq $0x3, %rdi
addq $0x4, %r14
jmp 0x76ee6
leaq 0x38(%rsp), %rbx
andq $0x0, (%rbx)
pushq $0x4
popq %r15
movq 0x30(%rsp), %r13
subq $0x1, 0x10(%rsp)
jb 0x77304
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x7d01a
leal (,%rax,4), %esi
addq 0x8(%r13), %rsi
movq 0x8(%rsp), %r13
movq %r13, %rdi
movq %r15, %rdx
callq 0x7c104
addq $0x4, %r13
movq %r13, 0x8(%rsp)
jmp 0x76f1a
leaq 0x38(%rsp), %rbx
andq $0x0, (%rbx)
pushq $0x3
popq %r15
subq $0x1, 0x10(%rsp)
jb 0x77304
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x7d01a
leal (,%rax,4), %esi
addq 0x8(%r13), %rsi
movq 0x8(%rsp), %r13
movq %r13, %rdi
movq %r15, %rdx
callq 0x7c104
addq $0x3, %r13
movq %r13, 0x8(%rsp)
movq 0x30(%rsp), %r13
jmp 0x76f6c
addq $0x5, %r14
xorl %ebx, %ebx
xorl %eax, %eax
movq 0x8(%rsp), %rdx
movq 0x30(%rsp), %r9
cmpq %rax, 0x10(%rsp)
je 0x7730b
movzbl -0x5(%r14), %edi
movb %dil, (%rdx,%rax,4)
movq %rdx, %rcx
movzbl -0x3(%r14), %esi
movb %sil, 0x1(%rdx,%rax,4)
movzbl -0x1(%r14), %edx
movb %dl, 0x2(%rcx,%rax,4)
movb $-0x1, %cl
cmpl $0x0, 0x18(%r9)
je 0x77029
shll $0x8, %edi
movzbl -0x4(%r14), %r8d
orl %edi, %r8d
cmpl 0x1c(%r9), %r8d
jne 0x77029
shll $0x8, %esi
movzbl -0x2(%r14), %edi
orl %esi, %edi
cmpl 0x20(%r9), %edi
jne 0x77029
shll $0x8, %edx
movzbl (%r14), %ecx
orl %edx, %ecx
cmpl 0x24(%r9), %ecx
setne %cl
negb %cl
movq 0x8(%rsp), %rdx
movb %cl, 0x3(%rdx,%rax,4)
incq %rax
addq $0x6, %r14
jmp 0x76fc3
movq 0x30(%rsp), %rax
cmpl $0x0, 0x18(%rax)
je 0x77304
imulq %r13, %r15
negq %r15
movq 0x8(%rsp), %rcx
movq 0x30(%rsp), %rdx
movq 0x20(%rsp), %r10
testq %r15, %r15
je 0x76e96
movzbl (%rcx,%r15,4), %eax
cmpl %eax, 0x1c(%rdx)
jne 0x7708f
movzbl 0x1(%rcx,%r15,4), %eax
cmpl %eax, 0x20(%rdx)
jne 0x7708f
movzbl 0x2(%rcx,%r15,4), %eax
cmpl %eax, 0x24(%rdx)
jne 0x7708f
movb $0x0, 0x3(%rcx,%r15,4)
incq %r15
jmp 0x77060
xorl %ebx, %ebx
xorl %eax, %eax
movq 0x8(%rsp), %rdx
subq $0x1, 0x10(%rsp)
jb 0x7730b
movb (%r14,%rax,2), %cl
movb %cl, (%rdx,%rax)
movb 0x2(%r14,%rax,2), %cl
movb %cl, 0x1(%rdx,%rax)
movb 0x4(%r14,%rax,2), %cl
movb %cl, 0x2(%rdx,%rax)
addq $0x3, %rax
jmp 0x7709d
movq 0x8(%rsp), %rdx
cmpq %rax, 0x10(%rsp)
je 0x7730b
movb (%r14,%rax,4), %cl
movb %cl, 0x2(%rdx,%rax,4)
movb %cl, 0x1(%rdx,%rax,4)
movb %cl, (%rdx,%rax,4)
movb 0x2(%r14,%rax,4), %cl
movb %cl, 0x3(%rdx,%rax,4)
incq %rax
jmp 0x770cd
xorl %ebx, %ebx
xorl %eax, %eax
movq 0x8(%rsp), %rdx
cmpq %rax, 0x10(%rsp)
je 0x7730b
movb (%r14,%rax,8), %cl
movb %cl, (%rdx,%rax,4)
movb 0x2(%r14,%rax,8), %cl
movb %cl, 0x1(%rdx,%rax,4)
movb 0x4(%r14,%rax,8), %cl
movb %cl, 0x2(%rdx,%rax,4)
movb 0x6(%r14,%rax,8), %cl
movb %cl, 0x3(%rdx,%rax,4)
incq %rax
jmp 0x770fe
movq 0x8(%rsp), %rdx
addq $0x2, %rdx
xorl %ebx, %ebx
xorl %eax, %eax
cmpq %rax, 0x10(%rsp)
je 0x7730b
movb (%r14,%rax,4), %cl
movb %cl, (%rdx)
movb %cl, -0x1(%rdx)
movb %cl, -0x2(%rdx)
incq %rax
addq $0x3, %rdx
jmp 0x7713d
xorl %ebx, %ebx
xorl %eax, %eax
movq 0x8(%rsp), %rdx
cmpq %rax, 0x10(%rsp)
je 0x7730b
movb (%r14,%rax,8), %cl
movb %cl, (%rdx)
movb 0x2(%r14,%rax,8), %cl
movb %cl, 0x1(%rdx)
movb 0x4(%r14,%rax,8), %cl
movb %cl, 0x2(%rdx)
incq %rax
addq $0x3, %rdx
jmp 0x77166
movq 0x30(%rsp), %rax
cmpl $0x0, 0x18(%rax)
je 0x76e96
imulq %r13, %r15
negq %r15
movq 0x30(%rsp), %rcx
testq %r15, %r15
je 0x76e96
movzbl (%rdx,%r15,4), %eax
cmpl %eax, 0x1c(%rcx)
jne 0x771c4
movb $0x0, 0x3(%rdx,%r15,4)
incq %r15
jmp 0x771ab
xorl %ebx, %ebx
xorl %eax, %eax
movq 0x8(%rsp), %rsi
movq 0x30(%rsp), %rdi
cmpq %rax, 0x10(%rsp)
je 0x7730b
movzbl (%r14,%rax,2), %ecx
movb %cl, 0x2(%rsi,%rax,4)
movb %cl, 0x1(%rsi,%rax,4)
movb %cl, (%rsi,%rax,4)
cmpl $0x0, 0x18(%rdi)
je 0x7720d
shll $0x8, %ecx
movzbl 0x1(%r14,%rax,2), %edx
orl %ecx, %edx
cmpl 0x1c(%rdi), %edx
setne %cl
negb %cl
jmp 0x7720f
movb $-0x1, %cl
movb %cl, 0x3(%rsi,%rax,4)
incq %rax
jmp 0x771d7
movq 0x8(%rsp), %rdx
addq $0x2, %rdx
xorl %ebx, %ebx
xorl %eax, %eax
cmpq %rax, 0x10(%rsp)
je 0x7730b
movb (%r14,%rax), %cl
movb %cl, (%rdx)
movb %cl, -0x1(%rdx)
movb %cl, -0x2(%rdx)
incq %rax
addq $0x3, %rdx
jmp 0x77225
pushq $-0x1
popq %rbp
movl %r12d, %ecx
shll %cl, %ebp
notl %ebp
leaq 0x38(%rsp), %rbx
andq $0x0, (%rbx)
xorl %r15d, %r15d
movq 0x30(%rsp), %r13
cmpq %r15, 0x10(%rsp)
je 0x77304
movq %rbx, %rdi
movq %r14, %rsi
movq %r12, %rdx
callq 0x7d01a
movl %eax, %ecx
imull $0xff, %eax, %eax
xorl %edx, %edx
divl %ebp
movq 0x8(%rsp), %rdx
movb %al, 0x2(%rdx,%r15,4)
movb %al, 0x1(%rdx,%r15,4)
movb %al, (%rdx,%r15,4)
cmpl $0x0, 0x18(%r13)
je 0x772aa
cmpl 0x1c(%r13), %ecx
setne %al
negb %al
jmp 0x772ac
movb $-0x1, %al
movb %al, 0x3(%rdx,%r15,4)
incq %r15
jmp 0x77260
pushq $-0x1
popq %rbp
movl %r12d, %ecx
shll %cl, %ebp
notl %ebp
leaq 0x38(%rsp), %rbx
andq $0x0, (%rbx)
addq $0x2, %rsi
subq $0x1, 0x10(%rsp)
jb 0x77304
movq %rbx, %rdi
movq %rsi, %r15
movq %r14, %rsi
movq %r12, %rdx
callq 0x7d01a
movq %r15, %rsi
imull $0xff, %eax, %eax
xorl %edx, %edx
divl %ebp
movb %al, (%r15)
movb %al, -0x1(%r15)
movb %al, -0x2(%r15)
addq $0x3, %rsi
jmp 0x772cd
xorl %ebx, %ebx
movq 0x20(%rsp), %r10
cmpl $0x3, (%r10)
jne 0x7731b
leaq 0x40(%rsp), %rdi
callq 0x77876
movl %ebx, %eax
addq $0xc8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq