// File: /workspace/github_c_makefile_star2_O0/jonof[P]jftekwar/jfbuild/src/rg_etc1.cpp
// Function: unsigned int* rg_etc1::indirect_radix_sort<unsigned int, unsigned short>(unsigned int, unsigned int*, unsigned int*, unsigned short const*, unsigned int, unsigned int, bool)
T* indirect_radix_sort(uint num_indices, T* pIndices0, T* pIndices1, const Q* pKeys, uint key_ofs, uint key_size, bool init_indices)
   {  
      RG_ETC1_ASSERT((key_ofs >= 0) && (key_ofs < sizeof(T)));
      RG_ETC1_ASSERT((key_size >= 1) && (key_size <= 4));

      if (init_indices)
      {
         T* p = pIndices0;
         T* q = pIndices0 + (num_indices >> 1) * 2;
         uint i;
         for (i = 0; p != q; p += 2, i += 2)
         {
            p[0] = static_cast<T>(i);
            p[1] = static_cast<T>(i + 1); 
         }

         if (num_indices & 1)
            *p = static_cast<T>(i);
      }

      uint hist[256 * 4];

      memset(hist, 0, sizeof(hist[0]) * 256 * key_size);

#define RG_ETC1_GET_KEY(p) (*(const uint*)((const uint8*)(pKeys + *(p)) + key_ofs))
#define RG_ETC1_GET_KEY_FROM_INDEX(i) (*(const uint*)((const uint8*)(pKeys + (i)) + key_ofs))

      if (key_size == 4)
      {
         T* p = pIndices0;
         T* q = pIndices0 + num_indices;
         for ( ; p != q; p++)
         {
            const uint key = RG_ETC1_GET_KEY(p);

            hist[        key        & 0xFF]++;
            hist[256 + ((key >>  8) & 0xFF)]++;
            hist[512 + ((key >> 16) & 0xFF)]++;
            hist[768 + ((key >> 24) & 0xFF)]++;
         }
      }
      else if (key_size == 3)
      {
         T* p = pIndices0;
         T* q = pIndices0 + num_indices;
         for ( ; p != q; p++)
         {
            const uint key = RG_ETC1_GET_KEY(p);

            hist[        key        & 0xFF]++;
            hist[256 + ((key >>  8) & 0xFF)]++;
            hist[512 + ((key >> 16) & 0xFF)]++;
         }
      }   
      else if (key_size == 2)
      {
         T* p = pIndices0;
         T* q = pIndices0 + (num_indices >> 1) * 2;

         for ( ; p != q; p += 2)
         {
            const uint key0 = RG_ETC1_GET_KEY(p);
            const uint key1 = RG_ETC1_GET_KEY(p+1);

            hist[        key0         & 0xFF]++;
            hist[256 + ((key0 >>  8) & 0xFF)]++;

            hist[        key1        & 0xFF]++;
            hist[256 + ((key1 >>  8) & 0xFF)]++;
         }

         if (num_indices & 1)
         {
            const uint key = RG_ETC1_GET_KEY(p);

            hist[        key        & 0xFF]++;
            hist[256 + ((key >>  8) & 0xFF)]++;
         }
      }      
      else
      {
         RG_ETC1_ASSERT(key_size == 1);
         if (key_size != 1)
            return NULL;

         T* p = pIndices0;
         T* q = pIndices0 + (num_indices >> 1) * 2;

         for ( ; p != q; p += 2)
         {
            const uint key0 = RG_ETC1_GET_KEY(p);
            const uint key1 = RG_ETC1_GET_KEY(p+1);

            hist[key0 & 0xFF]++;
            hist[key1 & 0xFF]++;
         }

         if (num_indices & 1)
         {
            const uint key = RG_ETC1_GET_KEY(p);

            hist[key & 0xFF]++;
         }
      }      

      T* pCur = pIndices0;
      T* pNew = pIndices1;

      for (uint pass = 0; pass < key_size; pass++)
      {
         const uint* pHist = &hist[pass << 8];

         uint offsets[256];

         uint cur_ofs = 0;
         for (uint i = 0; i < 256; i += 2)
         {
            offsets[i] = cur_ofs;
            cur_ofs += pHist[i];

            offsets[i+1] = cur_ofs;
            cur_ofs += pHist[i+1];
         }

         const uint pass_shift = pass << 3;

         T* p = pCur;
         T* q = pCur + (num_indices >> 1) * 2;

         for ( ; p != q; p += 2)
         {
            uint index0 = p[0];
            uint index1 = p[1];

            uint c0 = (RG_ETC1_GET_KEY_FROM_INDEX(index0) >> pass_shift) & 0xFF;
            uint c1 = (RG_ETC1_GET_KEY_FROM_INDEX(index1) >> pass_shift) & 0xFF;

            if (c0 == c1)
            {
               uint dst_offset0 = offsets[c0];

               offsets[c0] = dst_offset0 + 2;

               pNew[dst_offset0] = static_cast<T>(index0);
               pNew[dst_offset0 + 1] = static_cast<T>(index1);
            }
            else
            {
               uint dst_offset0 = offsets[c0]++;
               uint dst_offset1 = offsets[c1]++;

               pNew[dst_offset0] = static_cast<T>(index0);
               pNew[dst_offset1] = static_cast<T>(index1);
            }
         }

         if (num_indices & 1)
         {
            uint index = *p;
            uint c = (RG_ETC1_GET_KEY_FROM_INDEX(index) >> pass_shift) & 0xFF;

            uint dst_offset = offsets[c];
            offsets[c] = dst_offset + 1;

            pNew[dst_offset] = static_cast<T>(index);
         }

         T* t = pCur;
         pCur = pNew;
         pNew = t;
      }            

      return pCur;
   }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1540, %rsp           # imm = 0x1540
movb 0x10(%rbp), %al
movl %edi, -0xc(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
movq %rcx, -0x28(%rbp)
movl %r8d, -0x2c(%rbp)
movl %r9d, -0x30(%rbp)
andb $0x1, %al
movb %al, -0x31(%rbp)
xorl %eax, %eax
cmpl $0x0, -0x2c(%rbp)
movb %al, -0x1531(%rbp)
jb 0xa22d8
movl -0x2c(%rbp), %eax
cmpq $0x4, %rax
setb %al
movb %al, -0x1531(%rbp)
movb -0x1531(%rbp), %al
testb $0x1, %al
jne 0xa22e4
jmp 0xa22e6
jmp 0xa2305
leaq 0x16878(%rip), %rdi     # 0xb8b65
leaq 0x1602f(%rip), %rsi     # 0xb8323
movl $0x2f6, %edx            # imm = 0x2F6
leaq 0x1688d(%rip), %rcx     # 0xb8b8d
callq 0x61a0
xorl %eax, %eax
cmpl $0x1, -0x30(%rbp)
movb %al, -0x1532(%rbp)
jb 0xa2320
cmpl $0x4, -0x30(%rbp)
setbe %al
movb %al, -0x1532(%rbp)
movb -0x1532(%rbp), %al
testb $0x1, %al
jne 0xa232c
jmp 0xa232e
jmp 0xa234d
leaq 0x168cc(%rip), %rdi     # 0xb8c01
leaq 0x15fe7(%rip), %rsi     # 0xb8323
movl $0x2f7, %edx            # imm = 0x2F7
leaq 0x16845(%rip), %rcx     # 0xb8b8d
callq 0x61a0
testb $0x1, -0x31(%rbp)
je 0xa23c7
movq -0x18(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
shrl %ecx
shll %ecx
movl %ecx, %ecx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x48(%rbp)
movl $0x0, -0x4c(%rbp)
movq -0x40(%rbp), %rax
cmpq -0x48(%rbp), %rax
je 0xa23b1
movl -0x4c(%rbp), %ecx
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
movl -0x4c(%rbp), %ecx
addl $0x1, %ecx
movq -0x40(%rbp), %rax
movl %ecx, 0x4(%rax)
movq -0x40(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x40(%rbp)
movl -0x4c(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x4c(%rbp)
jmp 0xa237a
movl -0xc(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xa23c5
movl -0x4c(%rbp), %ecx
movq -0x40(%rbp), %rax
movl %ecx, (%rax)
jmp 0xa23c7
leaq -0x1050(%rbp), %rdi
movl -0x30(%rbp), %eax
movl %eax, %edx
shlq $0xa, %rdx
xorl %esi, %esi
callq 0x62d0
cmpl $0x4, -0x30(%rbp)
jne 0xa24e7
movq -0x18(%rbp), %rax
movq %rax, -0x1058(%rbp)
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x1060(%rbp)
movq -0x1058(%rbp), %rax
cmpq -0x1060(%rbp), %rax
je 0xa24e2
movq -0x28(%rbp), %rax
movq -0x1058(%rbp), %rcx
movl (%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl %eax, -0x1064(%rbp)
movl -0x1064(%rbp), %eax
andl $0xff, %eax
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x1064(%rbp), %eax
shrl $0x8, %eax
andl $0xff, %eax
addl $0x100, %eax            # imm = 0x100
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x1064(%rbp), %eax
shrl $0x10, %eax
andl $0xff, %eax
addl $0x200, %eax            # imm = 0x200
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x1064(%rbp), %eax
shrl $0x18, %eax
andl $0xff, %eax
addl $0x300, %eax            # imm = 0x300
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movq -0x1058(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x1058(%rbp)
jmp 0xa2408
jmp 0xa28b3
cmpl $0x3, -0x30(%rbp)
jne 0xa25ca
movq -0x18(%rbp), %rax
movq %rax, -0x1070(%rbp)
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x1078(%rbp)
movq -0x1070(%rbp), %rax
cmpq -0x1078(%rbp), %rax
je 0xa25c5
movq -0x28(%rbp), %rax
movq -0x1070(%rbp), %rcx
movl (%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl %eax, -0x107c(%rbp)
movl -0x107c(%rbp), %eax
andl $0xff, %eax
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x107c(%rbp), %eax
shrl $0x8, %eax
andl $0xff, %eax
addl $0x100, %eax            # imm = 0x100
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x107c(%rbp), %eax
shrl $0x10, %eax
andl $0xff, %eax
addl $0x200, %eax            # imm = 0x200
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movq -0x1070(%rbp), %rax
addq $0x4, %rax
movq %rax, -0x1070(%rbp)
jmp 0xa2511
jmp 0xa28b1
cmpl $0x2, -0x30(%rbp)
jne 0xa275f
movq -0x18(%rbp), %rax
movq %rax, -0x1088(%rbp)
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
shrl %ecx
shll %ecx
movl %ecx, %ecx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x1090(%rbp)
movq -0x1088(%rbp), %rax
cmpq -0x1090(%rbp), %rax
je 0xa26ec
movq -0x28(%rbp), %rax
movq -0x1088(%rbp), %rcx
movl (%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl %eax, -0x1094(%rbp)
movq -0x28(%rbp), %rax
movq -0x1088(%rbp), %rcx
movl 0x4(%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl %eax, -0x1098(%rbp)
movl -0x1094(%rbp), %eax
andl $0xff, %eax
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x1094(%rbp), %eax
shrl $0x8, %eax
andl $0xff, %eax
addl $0x100, %eax            # imm = 0x100
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x1098(%rbp), %eax
andl $0xff, %eax
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x1098(%rbp), %eax
shrl $0x8, %eax
andl $0xff, %eax
addl $0x100, %eax            # imm = 0x100
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movq -0x1088(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x1088(%rbp)
jmp 0xa25fa
movl -0xc(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xa275a
movq -0x28(%rbp), %rax
movq -0x1088(%rbp), %rcx
movl (%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl %eax, -0x109c(%rbp)
movl -0x109c(%rbp), %eax
andl $0xff, %eax
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x109c(%rbp), %eax
shrl $0x8, %eax
andl $0xff, %eax
addl $0x100, %eax            # imm = 0x100
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
jmp 0xa28af
cmpl $0x1, -0x30(%rbp)
jne 0xa2767
jmp 0xa2786
leaq 0x164b6(%rip), %rdi     # 0xb8c24
leaq 0x15bae(%rip), %rsi     # 0xb8323
movl $0x345, %edx            # imm = 0x345
leaq 0x1640c(%rip), %rcx     # 0xb8b8d
callq 0x61a0
cmpl $0x1, -0x30(%rbp)
je 0xa2799
movq $0x0, -0x8(%rbp)
jmp 0xa2c1c
movq -0x18(%rbp), %rax
movq %rax, -0x10a8(%rbp)
movq -0x18(%rbp), %rax
movl -0xc(%rbp), %ecx
shrl %ecx
shll %ecx
movl %ecx, %ecx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x10b0(%rbp)
movq -0x10a8(%rbp), %rax
cmpq -0x10b0(%rbp), %rax
je 0xa2865
movq -0x28(%rbp), %rax
movq -0x10a8(%rbp), %rcx
movl (%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl %eax, -0x10b4(%rbp)
movq -0x28(%rbp), %rax
movq -0x10a8(%rbp), %rcx
movl 0x4(%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl %eax, -0x10b8(%rbp)
movl -0x10b4(%rbp), %eax
andl $0xff, %eax
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movl -0x10b8(%rbp), %eax
andl $0xff, %eax
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
movq -0x10a8(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x10a8(%rbp)
jmp 0xa27bf
movl -0xc(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xa28ad
movq -0x28(%rbp), %rax
movq -0x10a8(%rbp), %rcx
movl (%rcx), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl %eax, -0x10bc(%rbp)
movl -0x10bc(%rbp), %eax
andl $0xff, %eax
movl %eax, %eax
movl -0x1050(%rbp,%rax,4), %ecx
addl $0x1, %ecx
movl %ecx, -0x1050(%rbp,%rax,4)
jmp 0xa28af
jmp 0xa28b1
jmp 0xa28b3
movq -0x18(%rbp), %rax
movq %rax, -0x10c8(%rbp)
movq -0x20(%rbp), %rax
movq %rax, -0x10d0(%rbp)
movl $0x0, -0x10d4(%rbp)
movl -0x10d4(%rbp), %eax
cmpl -0x30(%rbp), %eax
jae 0xa2c11
movl -0x10d4(%rbp), %eax
shll $0x8, %eax
movl %eax, %eax
movl %eax, %ecx
leaq -0x1050(%rbp), %rax
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x10e0(%rbp)
movl $0x0, -0x14e4(%rbp)
movl $0x0, -0x14e8(%rbp)
cmpl $0x100, -0x14e8(%rbp)   # imm = 0x100
jae 0xa29a0
movl -0x14e4(%rbp), %ecx
movl -0x14e8(%rbp), %eax
movl %ecx, -0x14e0(%rbp,%rax,4)
movq -0x10e0(%rbp), %rax
movl -0x14e8(%rbp), %ecx
movl (%rax,%rcx,4), %eax
addl -0x14e4(%rbp), %eax
movl %eax, -0x14e4(%rbp)
movl -0x14e4(%rbp), %ecx
movl -0x14e8(%rbp), %eax
addl $0x1, %eax
movl %eax, %eax
movl %ecx, -0x14e0(%rbp,%rax,4)
movq -0x10e0(%rbp), %rax
movl -0x14e8(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movl (%rax,%rcx,4), %eax
addl -0x14e4(%rbp), %eax
movl %eax, -0x14e4(%rbp)
movl -0x14e8(%rbp), %eax
addl $0x2, %eax
movl %eax, -0x14e8(%rbp)
jmp 0xa2918
movl -0x10d4(%rbp), %eax
shll $0x3, %eax
movl %eax, -0x14ec(%rbp)
movq -0x10c8(%rbp), %rax
movq %rax, -0x14f8(%rbp)
movq -0x10c8(%rbp), %rax
movl -0xc(%rbp), %ecx
shrl %ecx
shll %ecx
movl %ecx, %ecx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x1500(%rbp)
movq -0x14f8(%rbp), %rax
cmpq -0x1500(%rbp), %rax
je 0xa2b51
movq -0x14f8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x1504(%rbp)
movq -0x14f8(%rbp), %rax
movl 0x4(%rax), %eax
movl %eax, -0x1508(%rbp)
movq -0x28(%rbp), %rax
movl -0x1504(%rbp), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl -0x14ec(%rbp), %ecx
shrl %cl, %eax
andl $0xff, %eax
movl %eax, -0x150c(%rbp)
movq -0x28(%rbp), %rax
movl -0x1508(%rbp), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl -0x14ec(%rbp), %ecx
shrl %cl, %eax
andl $0xff, %eax
movl %eax, -0x1510(%rbp)
movl -0x150c(%rbp), %eax
cmpl -0x1510(%rbp), %eax
jne 0xa2aca
movl -0x150c(%rbp), %eax
movl -0x14e0(%rbp,%rax,4), %eax
movl %eax, -0x1514(%rbp)
movl -0x1514(%rbp), %ecx
addl $0x2, %ecx
movl -0x150c(%rbp), %eax
movl %ecx, -0x14e0(%rbp,%rax,4)
movl -0x1504(%rbp), %edx
movq -0x10d0(%rbp), %rax
movl -0x1514(%rbp), %ecx
movl %edx, (%rax,%rcx,4)
movl -0x1508(%rbp), %edx
movq -0x10d0(%rbp), %rax
movl -0x1514(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, %ecx
movl %edx, (%rax,%rcx,4)
jmp 0xa2b38
movl -0x150c(%rbp), %eax
movl %eax, %ecx
movl -0x14e0(%rbp,%rcx,4), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, -0x14e0(%rbp,%rcx,4)
movl %eax, -0x1518(%rbp)
movl -0x1510(%rbp), %eax
movl %eax, %ecx
movl -0x14e0(%rbp,%rcx,4), %eax
movl %eax, %edx
addl $0x1, %edx
movl %edx, -0x14e0(%rbp,%rcx,4)
movl %eax, -0x151c(%rbp)
movl -0x1504(%rbp), %edx
movq -0x10d0(%rbp), %rax
movl -0x1518(%rbp), %ecx
movl %edx, (%rax,%rcx,4)
movl -0x1508(%rbp), %edx
movq -0x10d0(%rbp), %rax
movl -0x151c(%rbp), %ecx
movl %edx, (%rax,%rcx,4)
jmp 0xa2b3a
movq -0x14f8(%rbp), %rax
addq $0x8, %rax
movq %rax, -0x14f8(%rbp)
jmp 0xa29db
movl -0xc(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xa2bd3
movq -0x14f8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x1520(%rbp)
movq -0x28(%rbp), %rax
movl -0x1520(%rbp), %ecx
shlq %rcx
addq %rcx, %rax
movl -0x2c(%rbp), %ecx
movl (%rax,%rcx), %eax
movl -0x14ec(%rbp), %ecx
shrl %cl, %eax
andl $0xff, %eax
movl %eax, -0x1524(%rbp)
movl -0x1524(%rbp), %eax
movl -0x14e0(%rbp,%rax,4), %eax
movl %eax, -0x1528(%rbp)
movl -0x1528(%rbp), %ecx
addl $0x1, %ecx
movl -0x1524(%rbp), %eax
movl %ecx, -0x14e0(%rbp,%rax,4)
movl -0x1520(%rbp), %edx
movq -0x10d0(%rbp), %rax
movl -0x1528(%rbp), %ecx
movl %edx, (%rax,%rcx,4)
movq -0x10c8(%rbp), %rax
movq %rax, -0x1530(%rbp)
movq -0x10d0(%rbp), %rax
movq %rax, -0x10c8(%rbp)
movq -0x1530(%rbp), %rax
movq %rax, -0x10d0(%rbp)
movl -0x10d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10d4(%rbp)
jmp 0xa28d3
movq -0x10c8(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x1540, %rsp           # imm = 0x1540
popq %rbp
retq
nopl (%rax)