// File: srajangarg[P]raytracer/src/core/stb_image.hpp
// Function: stbi__parse_entropy_coded_data(stbi__jpeg*)
static int stbi__parse_entropy_coded_data(stbi__jpeg *z)
{
   stbi__jpeg_reset(z);
   if (!z->progressive) {
      if (z->scan_n == 1) {
         int i,j;
         STBI_SIMD_ALIGN(short, data[64]);
         int n = z->order[0];
         // non-interleaved data, we just need to process one block at a time,
         // in trivial scanline order
         // number of blocks to do just depends on how many actual "pixels" this
         // component has, independent of interleaved MCU blocking and such
         int w = (z->img_comp[n].x+7) >> 3;
         int h = (z->img_comp[n].y+7) >> 3;
         for (j=0; j < h; ++j) {
            for (i=0; i < w; ++i) {
               int ha = z->img_comp[n].ha;
               if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0;
               z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*j*8+i*8, z->img_comp[n].w2, data);
               // every data block is an MCU, so countdown the restart interval
               if (--z->todo <= 0) {
                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);
                  // if it's NOT a restart, then just bail, so we get corrupt data
                  // rather than no data
                  if (!STBI__RESTART(z->marker)) return 1;
                  stbi__jpeg_reset(z);
               }
            }
         }
         return 1;
      } else { // interleaved
         int i,j,k,x,y;
         STBI_SIMD_ALIGN(short, data[64]);
         for (j=0; j < z->img_mcu_y; ++j) {
            for (i=0; i < z->img_mcu_x; ++i) {
               // scan an interleaved mcu... process scan_n components in order
               for (k=0; k < z->scan_n; ++k) {
                  int n = z->order[k];
                  // scan out an mcu's worth of this component; that's just determined
                  // by the basic H and V specified for the component
                  for (y=0; y < z->img_comp[n].v; ++y) {
                     for (x=0; x < z->img_comp[n].h; ++x) {
                        int x2 = (i*z->img_comp[n].h + x)*8;
                        int y2 = (j*z->img_comp[n].v + y)*8;
                        int ha = z->img_comp[n].ha;
                        if (!stbi__jpeg_decode_block(z, data, z->huff_dc+z->img_comp[n].hd, z->huff_ac+ha, z->fast_ac[ha], n, z->dequant[z->img_comp[n].tq])) return 0;
                        z->idct_block_kernel(z->img_comp[n].data+z->img_comp[n].w2*y2+x2, z->img_comp[n].w2, data);
                     }
                  }
               }
               // after all interleaved components, that's an interleaved MCU,
               // so now count down the restart interval
               if (--z->todo <= 0) {
                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);
                  if (!STBI__RESTART(z->marker)) return 1;
                  stbi__jpeg_reset(z);
               }
            }
         }
         return 1;
      }
   } else {
      if (z->scan_n == 1) {
         int i,j;
         int n = z->order[0];
         // non-interleaved data, we just need to process one block at a time,
         // in trivial scanline order
         // number of blocks to do just depends on how many actual "pixels" this
         // component has, independent of interleaved MCU blocking and such
         int w = (z->img_comp[n].x+7) >> 3;
         int h = (z->img_comp[n].y+7) >> 3;
         for (j=0; j < h; ++j) {
            for (i=0; i < w; ++i) {
               short *data = z->img_comp[n].coeff + 64 * (i + j * z->img_comp[n].coeff_w);
               if (z->spec_start == 0) {
                  if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n))
                     return 0;
               } else {
                  int ha = z->img_comp[n].ha;
                  if (!stbi__jpeg_decode_block_prog_ac(z, data, &z->huff_ac[ha], z->fast_ac[ha]))
                     return 0;
               }
               // every data block is an MCU, so countdown the restart interval
               if (--z->todo <= 0) {
                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);
                  if (!STBI__RESTART(z->marker)) return 1;
                  stbi__jpeg_reset(z);
               }
            }
         }
         return 1;
      } else { // interleaved
         int i,j,k,x,y;
         for (j=0; j < z->img_mcu_y; ++j) {
            for (i=0; i < z->img_mcu_x; ++i) {
               // scan an interleaved mcu... process scan_n components in order
               for (k=0; k < z->scan_n; ++k) {
                  int n = z->order[k];
                  // scan out an mcu's worth of this component; that's just determined
                  // by the basic H and V specified for the component
                  for (y=0; y < z->img_comp[n].v; ++y) {
                     for (x=0; x < z->img_comp[n].h; ++x) {
                        int x2 = (i*z->img_comp[n].h + x);
                        int y2 = (j*z->img_comp[n].v + y);
                        short *data = z->img_comp[n].coeff + 64 * (x2 + y2 * z->img_comp[n].coeff_w);
                        if (!stbi__jpeg_decode_block_prog_dc(z, data, &z->huff_dc[z->img_comp[n].hd], n))
                           return 0;
                     }
                  }
               }
               // after all interleaved components, that's an interleaved MCU,
               // so now count down the restart interval
               if (--z->todo <= 0) {
                  if (z->code_bits < 24) stbi__grow_buffer_unsafe(z);
                  if (!STBI__RESTART(z->marker)) return 1;
                  stbi__jpeg_reset(z);
               }
            }
         }
         return 1;
      }
   }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1c0, %rsp            # imm = 0x1C0
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x2f1d0
movq -0x10(%rbp), %rax
cmpl $0x0, 0x4730(%rax)
jne 0x2eab4
movq -0x10(%rbp), %rax
cmpl $0x1, 0x4748(%rax)
jne 0x2e737
movq -0x10(%rbp), %rax
movl 0x474c(%rax), %eax
movl %eax, -0xa4(%rbp)
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0xa4(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %eax
addl $0x7, %eax
sarl $0x3, %eax
movl %eax, -0xa8(%rbp)
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0xa4(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl 0x20(%rax), %eax
addl $0x7, %eax
sarl $0x3, %eax
movl %eax, -0xac(%rbp)
movl $0x0, -0x18(%rbp)
movl -0x18(%rbp), %eax
cmpl -0xac(%rbp), %eax
jge 0x2e72b
movl $0x0, -0x14(%rbp)
movl -0x14(%rbp), %eax
cmpl -0xa8(%rbp), %eax
jge 0x2e71b
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0xa4(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movl %eax, -0xb0(%rbp)
movq -0x10(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
movq -0x10(%rbp), %rdx
addq $0x8, %rdx
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0xa4(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq 0x10(%rax), %rax
imulq $0x690, %rax, %rax      # imm = 0x690
addq %rax, %rdx
movq -0x10(%rbp), %rcx
addq $0x1a48, %rcx           # imm = 0x1A48
movslq -0xb0(%rbp), %rax
imulq $0x690, %rax, %rax      # imm = 0x690
addq %rax, %rcx
movq -0x10(%rbp), %r8
addq $0x3588, %r8            # imm = 0x3588
movslq -0xb0(%rbp), %rax
shlq $0xa, %rax
addq %rax, %r8
movl -0xa4(%rbp), %r9d
movq -0x10(%rbp), %rax
addq $0x3488, %rax           # imm = 0x3488
movq -0x10(%rbp), %r10
addq $0x45a0, %r10           # imm = 0x45A0
movslq -0xa4(%rbp), %r11
imulq $0x60, %r11, %r11
addq %r11, %r10
movslq 0xc(%r10), %r10
shlq $0x6, %r10
addq %r10, %rax
movq %rax, (%rsp)
callq 0x2f280
cmpl $0x0, %eax
jne 0x2e622
movl $0x0, -0x4(%rbp)
jmp 0x2eff3
movq -0x10(%rbp), %rax
movq 0x4768(%rax), %rax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0xa4(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
movq 0x30(%rcx), %rdi
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0xa4(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
movl 0x24(%rcx), %ecx
imull -0x18(%rbp), %ecx
shll $0x3, %ecx
movslq %ecx, %rcx
addq %rcx, %rdi
movl -0x14(%rbp), %ecx
shll $0x3, %ecx
movslq %ecx, %rcx
addq %rcx, %rdi
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0xa4(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
movl 0x24(%rcx), %esi
leaq -0xa0(%rbp), %rdx
callq *%rax
movq -0x10(%rbp), %rcx
movl 0x4760(%rcx), %eax
addl $-0x1, %eax
movl %eax, 0x4760(%rcx)
cmpl $0x0, %eax
jg 0x2e70b
movq -0x10(%rbp), %rax
cmpl $0x18, 0x4724(%rax)
jge 0x2e6d2
movq -0x10(%rbp), %rdi
callq 0x2f500
movq -0x10(%rbp), %rax
movzbl 0x4728(%rax), %eax
cmpl $0xd0, %eax
jl 0x2e6f6
movq -0x10(%rbp), %rax
movzbl 0x4728(%rax), %eax
cmpl $0xd7, %eax
jle 0x2e702
movl $0x1, -0x4(%rbp)
jmp 0x2eff3
movq -0x10(%rbp), %rdi
callq 0x2f1d0
jmp 0x2e70d
movl -0x14(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x14(%rbp)
jmp 0x2e535
jmp 0x2e71d
movl -0x18(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18(%rbp)
jmp 0x2e51f
movl $0x1, -0x4(%rbp)
jmp 0x2eff3
movl $0x0, -0xb8(%rbp)
movl -0xb8(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4594(%rcx), %eax
jge 0x2eaa8
movl $0x0, -0xb4(%rbp)
movl -0xb4(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4590(%rcx), %eax
jge 0x2ea92
movl $0x0, -0xbc(%rbp)
movl -0xbc(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4748(%rcx), %eax
jge 0x2ea15
movq -0x10(%rbp), %rax
movslq -0xbc(%rbp), %rcx
movl 0x474c(%rax,%rcx,4), %eax
movl %eax, -0x154(%rbp)
movl $0x0, -0xc4(%rbp)
movl -0xc4(%rbp), %eax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x154(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jge 0x2e9ff
movl $0x0, -0xc0(%rbp)
movl -0xc0(%rbp), %eax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x154(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
jge 0x2e9e9
movl -0xb4(%rbp), %eax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x154(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
imull 0x4(%rcx), %eax
addl -0xc0(%rbp), %eax
shll $0x3, %eax
movl %eax, -0x158(%rbp)
movl -0xb8(%rbp), %eax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x154(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
imull 0x8(%rcx), %eax
addl -0xc4(%rbp), %eax
shll $0x3, %eax
movl %eax, -0x15c(%rbp)
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0x154(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movl %eax, -0x160(%rbp)
movq -0x10(%rbp), %rdi
leaq -0x150(%rbp), %rsi
movq -0x10(%rbp), %rdx
addq $0x8, %rdx
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0x154(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq 0x10(%rax), %rax
imulq $0x690, %rax, %rax      # imm = 0x690
addq %rax, %rdx
movq -0x10(%rbp), %rcx
addq $0x1a48, %rcx           # imm = 0x1A48
movslq -0x160(%rbp), %rax
imulq $0x690, %rax, %rax      # imm = 0x690
addq %rax, %rcx
movq -0x10(%rbp), %r8
addq $0x3588, %r8            # imm = 0x3588
movslq -0x160(%rbp), %rax
shlq $0xa, %rax
addq %rax, %r8
movl -0x154(%rbp), %r9d
movq -0x10(%rbp), %rax
addq $0x3488, %rax           # imm = 0x3488
movq -0x10(%rbp), %r10
addq $0x45a0, %r10           # imm = 0x45A0
movslq -0x154(%rbp), %r11
imulq $0x60, %r11, %r11
addq %r11, %r10
movslq 0xc(%r10), %r10
shlq $0x6, %r10
addq %r10, %rax
movq %rax, (%rsp)
callq 0x2f280
cmpl $0x0, %eax
jne 0x2e955
movl $0x0, -0x4(%rbp)
jmp 0x2eff3
movq -0x10(%rbp), %rax
movq 0x4768(%rax), %rax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x154(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
movq 0x30(%rcx), %rdi
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x154(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
movl 0x24(%rcx), %ecx
imull -0x15c(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rdi
movslq -0x158(%rbp), %rcx
addq %rcx, %rdi
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x154(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
movl 0x24(%rcx), %esi
leaq -0x150(%rbp), %rdx
callq *%rax
movl -0xc0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc0(%rbp)
jmp 0x2e7eb
jmp 0x2e9eb
movl -0xc4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc4(%rbp)
jmp 0x2e7b9
jmp 0x2ea01
movl -0xbc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xbc(%rbp)
jmp 0x2e781
movq -0x10(%rbp), %rcx
movl 0x4760(%rcx), %eax
addl $-0x1, %eax
movl %eax, 0x4760(%rcx)
cmpl $0x0, %eax
jg 0x2ea7c
movq -0x10(%rbp), %rax
cmpl $0x18, 0x4724(%rax)
jge 0x2ea43
movq -0x10(%rbp), %rdi
callq 0x2f500
movq -0x10(%rbp), %rax
movzbl 0x4728(%rax), %eax
cmpl $0xd0, %eax
jl 0x2ea67
movq -0x10(%rbp), %rax
movzbl 0x4728(%rax), %eax
cmpl $0xd7, %eax
jle 0x2ea73
movl $0x1, -0x4(%rbp)
jmp 0x2eff3
movq -0x10(%rbp), %rdi
callq 0x2f1d0
jmp 0x2ea7e
movl -0xb4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb4(%rbp)
jmp 0x2e761
jmp 0x2ea94
movl -0xb8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xb8(%rbp)
jmp 0x2e741
movl $0x1, -0x4(%rbp)
jmp 0x2eff3
movq -0x10(%rbp), %rax
cmpl $0x1, 0x4748(%rax)
jne 0x2ed31
movq -0x10(%rbp), %rax
movl 0x474c(%rax), %eax
movl %eax, -0x16c(%rbp)
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0x16c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl 0x1c(%rax), %eax
addl $0x7, %eax
sarl $0x3, %eax
movl %eax, -0x170(%rbp)
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0x16c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl 0x20(%rax), %eax
addl $0x7, %eax
sarl $0x3, %eax
movl %eax, -0x174(%rbp)
movl $0x0, -0x168(%rbp)
movl -0x168(%rbp), %eax
cmpl -0x174(%rbp), %eax
jge 0x2ed25
movl $0x0, -0x164(%rbp)
movl -0x164(%rbp), %eax
cmpl -0x170(%rbp), %eax
jge 0x2ed0f
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0x16c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq 0x50(%rax), %rax
movl -0x164(%rbp), %ecx
movl -0x168(%rbp), %edx
movq -0x10(%rbp), %rsi
addq $0x45a0, %rsi           # imm = 0x45A0
movslq -0x16c(%rbp), %rdi
imulq $0x60, %rdi, %rdi
addq %rdi, %rsi
imull 0x58(%rsi), %edx
addl %edx, %ecx
shll $0x6, %ecx
movslq %ecx, %rcx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x180(%rbp)
movq -0x10(%rbp), %rax
cmpl $0x0, 0x4734(%rax)
jne 0x2ec19
movq -0x10(%rbp), %rdi
movq -0x180(%rbp), %rsi
movq -0x10(%rbp), %rdx
addq $0x8, %rdx
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0x16c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq 0x10(%rax), %rax
imulq $0x690, %rax, %rax      # imm = 0x690
addq %rax, %rdx
movl -0x16c(%rbp), %ecx
callq 0x2f5d0
cmpl $0x0, %eax
jne 0x2ec17
movl $0x0, -0x4(%rbp)
jmp 0x2eff3
jmp 0x2ec92
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0x16c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movl 0x14(%rax), %eax
movl %eax, -0x184(%rbp)
movq -0x10(%rbp), %rdi
movq -0x180(%rbp), %rsi
movq -0x10(%rbp), %rdx
addq $0x1a48, %rdx           # imm = 0x1A48
movslq -0x184(%rbp), %rax
imulq $0x690, %rax, %rax      # imm = 0x690
addq %rax, %rdx
movq -0x10(%rbp), %rcx
addq $0x3588, %rcx           # imm = 0x3588
movslq -0x184(%rbp), %rax
shlq $0xa, %rax
addq %rax, %rcx
callq 0x2f710
cmpl $0x0, %eax
jne 0x2ec90
movl $0x0, -0x4(%rbp)
jmp 0x2eff3
jmp 0x2ec92
movq -0x10(%rbp), %rcx
movl 0x4760(%rcx), %eax
addl $-0x1, %eax
movl %eax, 0x4760(%rcx)
cmpl $0x0, %eax
jg 0x2ecf9
movq -0x10(%rbp), %rax
cmpl $0x18, 0x4724(%rax)
jge 0x2ecc0
movq -0x10(%rbp), %rdi
callq 0x2f500
movq -0x10(%rbp), %rax
movzbl 0x4728(%rax), %eax
cmpl $0xd0, %eax
jl 0x2ece4
movq -0x10(%rbp), %rax
movzbl 0x4728(%rax), %eax
cmpl $0xd7, %eax
jle 0x2ecf0
movl $0x1, -0x4(%rbp)
jmp 0x2eff3
movq -0x10(%rbp), %rdi
callq 0x2f1d0
jmp 0x2ecfb
movl -0x164(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x164(%rbp)
jmp 0x2eb49
jmp 0x2ed11
movl -0x168(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x168(%rbp)
jmp 0x2eb2d
movl $0x1, -0x4(%rbp)
jmp 0x2eff3
movl $0x0, -0x18c(%rbp)
movl -0x18c(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4594(%rcx), %eax
jge 0x2efec
movl $0x0, -0x188(%rbp)
movl -0x188(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4590(%rcx), %eax
jge 0x2efd6
movl $0x0, -0x190(%rbp)
movl -0x190(%rbp), %eax
movq -0x10(%rbp), %rcx
cmpl 0x4748(%rcx), %eax
jge 0x2ef5c
movq -0x10(%rbp), %rax
movslq -0x190(%rbp), %rcx
movl 0x474c(%rax,%rcx,4), %eax
movl %eax, -0x19c(%rbp)
movl $0x0, -0x198(%rbp)
movl -0x198(%rbp), %eax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x19c(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x8(%rcx), %eax
jge 0x2ef46
movl $0x0, -0x194(%rbp)
movl -0x194(%rbp), %eax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x19c(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
cmpl 0x4(%rcx), %eax
jge 0x2ef30
movl -0x188(%rbp), %eax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x19c(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
imull 0x4(%rcx), %eax
addl -0x194(%rbp), %eax
movl %eax, -0x1a0(%rbp)
movl -0x18c(%rbp), %eax
movq -0x10(%rbp), %rcx
addq $0x45a0, %rcx           # imm = 0x45A0
movslq -0x19c(%rbp), %rdx
imulq $0x60, %rdx, %rdx
addq %rdx, %rcx
imull 0x8(%rcx), %eax
addl -0x198(%rbp), %eax
movl %eax, -0x1a4(%rbp)
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0x19c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movq 0x50(%rax), %rax
movl -0x1a0(%rbp), %ecx
movl -0x1a4(%rbp), %edx
movq -0x10(%rbp), %rsi
addq $0x45a0, %rsi           # imm = 0x45A0
movslq -0x19c(%rbp), %rdi
imulq $0x60, %rdi, %rdi
addq %rdi, %rsi
imull 0x58(%rsi), %edx
addl %edx, %ecx
shll $0x6, %ecx
movslq %ecx, %rcx
shlq %rcx
addq %rcx, %rax
movq %rax, -0x1b0(%rbp)
movq -0x10(%rbp), %rdi
movq -0x1b0(%rbp), %rsi
movq -0x10(%rbp), %rdx
addq $0x8, %rdx
movq -0x10(%rbp), %rax
addq $0x45a0, %rax           # imm = 0x45A0
movslq -0x19c(%rbp), %rcx
imulq $0x60, %rcx, %rcx
addq %rcx, %rax
movslq 0x10(%rax), %rax
imulq $0x690, %rax, %rax      # imm = 0x690
addq %rax, %rdx
movl -0x19c(%rbp), %ecx
callq 0x2f5d0
cmpl $0x0, %eax
jne 0x2ef1a
movl $0x0, -0x4(%rbp)
jmp 0x2eff3
jmp 0x2ef1c
movl -0x194(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x194(%rbp)
jmp 0x2ede5
jmp 0x2ef32
movl -0x198(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x198(%rbp)
jmp 0x2edb3
jmp 0x2ef48
movl -0x190(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x190(%rbp)
jmp 0x2ed7b
movq -0x10(%rbp), %rcx
movl 0x4760(%rcx), %eax
addl $-0x1, %eax
movl %eax, 0x4760(%rcx)
cmpl $0x0, %eax
jg 0x2efc0
movq -0x10(%rbp), %rax
cmpl $0x18, 0x4724(%rax)
jge 0x2ef8a
movq -0x10(%rbp), %rdi
callq 0x2f500
movq -0x10(%rbp), %rax
movzbl 0x4728(%rax), %eax
cmpl $0xd0, %eax
jl 0x2efae
movq -0x10(%rbp), %rax
movzbl 0x4728(%rax), %eax
cmpl $0xd7, %eax
jle 0x2efb7
movl $0x1, -0x4(%rbp)
jmp 0x2eff3
movq -0x10(%rbp), %rdi
callq 0x2f1d0
jmp 0x2efc2
movl -0x188(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x188(%rbp)
jmp 0x2ed5b
jmp 0x2efd8
movl -0x18c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x18c(%rbp)
jmp 0x2ed3b
movl $0x1, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x1c0, %rsp            # imm = 0x1C0
popq %rbp
retq
nop