// File: /workspace/github_c_makefile_star2_O1/jonof[P]jftekwar/src/tektag.c
// Function: tagcode
void
tagcode()
{
     int      i, j, k, l, s, dax, day, cnt, good;
     short     startwall, endwall, dasector, p, oldang;

     for(i=0;i<warpsectorcnt;i++)
     {
          dasector = warpsectorlist[i];
          j = ((lockclock&127)>>2);
          if (j >= 16) j = 31-j;
          {
               sector[dasector].ceilingshade = j;
               sector[dasector].floorshade = j;
               startwall = sector[dasector].wallptr;
               endwall = startwall+sector[dasector].wallnum-1;
               for(s=startwall;s<=endwall;s++)
                    wall[s].shade = j;
          }
     }

     for(p=connecthead;p>=0;p=connectpoint2[p])
          if (sector[cursectnum[p]].lotag == 10)  //warp sector
          {
               if (cursectnum[p] != ocursectnum[p])
               {
                    warpsprite(playersprite[p]);
                    posx[p] = sprite[playersprite[p]].x;
                    posy[p] = sprite[playersprite[p]].y;
                    posz[p] = sprite[playersprite[p]].z;
                    ang[p] = sprite[playersprite[p]].ang;
                    cursectnum[p] = sprite[playersprite[p]].sectnum;
                    sprite[playersprite[p]].z += (KENSPLAYERHEIGHT<<8);
               }
          }


     for( i=0; i<xpanningsectorcnt; i++ ) {
          dasector = xpanningsectorlist[i];
          startwall = sector[dasector].wallptr;
          endwall = startwall+sector[dasector].wallnum-1;
          for( s=startwall; s<=endwall; s++ ) {
               wall[s].xpanning = ((lockclock>>2)&255);
          }
     }

     for( i=0; i<ypanningwallcnt; i++ ) {
          wall[ypanningwalllist[i]].ypanning = ~(lockclock&255);
     }

     for( i=0; i<rotatespritecnt; i++ ) {
          sprite[rotatespritelist[i]].ang += (TICSPERFRAME<<2);
          sprite[rotatespritelist[i]].ang &= 2047;
     }

     // kens slime floor
     for( i=0; i<floorpanningcnt; i++ ) {
          sector[floorpanninglist[i]].floorxpanning = ((lockclock>>2)&255);
          sector[floorpanninglist[i]].floorypanning = ((lockclock>>2)&255);
     }

     for( i=0; i<dragsectorcnt; i++ ) {
          dasector = dragsectorlist[i];
          startwall = sector[dasector].wallptr;
          endwall = startwall+sector[dasector].wallnum-1;
          if (wall[startwall].x+dragxdir[i] < dragx1[i]) dragxdir[i] = 16;
          if (wall[startwall].y+dragydir[i] < dragy1[i]) dragydir[i] = 16;
          if (wall[startwall].x+dragxdir[i] > dragx2[i]) dragxdir[i] = -16;
          if (wall[startwall].y+dragydir[i] > dragy2[i]) dragydir[i] = -16;
          for( j=startwall; j<=endwall; j++) {
               dragpoint(j,wall[j].x+dragxdir[i],wall[j].y+dragydir[i]);
          }
          j = sector[dasector].floorz;
          sector[dasector].floorz = dragfloorz[i]+(sintable[(lockclock<<4)&2047]>>3);
          for( p=connecthead; p>=0; p=connectpoint2[p] ) {
               if( cursectnum[p] == dasector ) {
                    posx[p] += dragxdir[i];
                    posy[p] += dragydir[i];
                    posz[p] += (sector[dasector].floorz-j);
                    setsprite(playersprite[p],posx[p],posy[p],posz[p]+(KENSPLAYERHEIGHT<<8));
                    sprite[playersprite[p]].ang = ang[p];
                    frameinterpolate = 0;
               }
          }
     }

     for(i=0;i<swingcnt;i++)
     {
          if (swinganginc[i] != 0)
          {
               oldang = swingang[i];
               for(j=0;j<(TICSPERFRAME<<2);j++)
               {
                    swingang[i] = ((swingang[i]+2048+swinganginc[i])&2047);
                    if (swingang[i] == swingangclosed[i])
                    {
                         if( j == ((TICSPERFRAME<<2)-1) ) {
                              playsound(S_JUMP,swingx[i][0],swingy[i][0],0,ST_UPDATE);
                         }
                         swinganginc[i] = 0;
                    }
                    if (swingang[i] == swingangopen[i]) {
                         if( j == ((TICSPERFRAME<<2)-1) ) {
                              playsound(S_JUMP,swingx[i][0],swingy[i][0],0,ST_UPDATE);
                         }
                         swinganginc[i] = 0;
                    }
               }
               for(k=1;k<=3;k++)
                    rotatepoint(swingx[i][0],swingy[i][0],swingx[i][k],swingy[i][k],swingang[i],&wall[swingwall[i][k]].x,&wall[swingwall[i][k]].y);

               if (swinganginc[i] != 0)
               {
                    for(p=connecthead;p>=0;p=connectpoint2[p])
                         if ((cursectnum[p] == swingsector[i]) || (testneighborsectors(cursectnum[p],swingsector[i]) == 1))
                         {
                              cnt = 256;
                              do
                              {
                                   good = 1;

                                        //swingangopendir is -1 if forwards, 1 is backwards
                                   l = (swingangopendir[i] > 0);
                                   for(k=l+3;k>=l;k--)
                                        if (clipinsidebox(posx[p],posy[p],swingwall[i][k],128L) != 0)
                                        {
                                             good = 0;
                                             break;
                                        }

                                   if (good == 0)
                                   {
                                        if (cnt == 256)
                                        {
                                             swinganginc[i] = -swinganginc[i];
                                             swingang[i] = oldang;
                                        }
                                        else
                                        {
                                             swingang[i] = ((swingang[i]+2048-swinganginc[i])&2047);
                                        }
                                        for(k=1;k<=3;k++)
                                             rotatepoint(swingx[i][0],swingy[i][0],swingx[i][k],swingy[i][k],swingang[i],&wall[swingwall[i][k]].x,&wall[swingwall[i][k]].y);
                                        if (swingang[i] == swingangclosed[i])
                                        {
                                             swinganginc[i] = 0;
                                             break;
                                        }
                                        if (swingang[i] == swingangopen[i])
                                        {
                                             swinganginc[i] = 0;
                                             break;
                                        }
                                        cnt--;
                                   }
                              } while ((good == 0) && (cnt > 0));
                         }
               }

          }
     }

     for(i=0;i<revolvecnt;i++)
     {
          startwall = sector[revolvesector[i]].wallptr;
          endwall = startwall + sector[revolvesector[i]].wallnum - 1;

          revolveang[i] = ((revolveang[i]+2048-(TICSPERFRAME<<2))&2047);
          for(k=startwall;k<=endwall;k++)
          {
               rotatepoint(revolvepivotx[i],revolvepivoty[i],revolvex[i][k-startwall],revolvey[i][k-startwall],revolveang[i],&dax,&day);
               dragpoint(k,dax,day);
          }
     }

     for(i=0;i<subwaytrackcnt;i++)
     {
          if( subwaysound[i] == -1 ) {
               subwaysound[i]=playsound(S_SUBWAYLOOP,subwayx[i],subwaytracky1[i],-1,ST_VEHUPDATE);
          }
          else {
               updatevehiclesnds(subwaysound[i],subwayx[i],subwaytracky1[i]);
          }

          dasector = subwaytracksector[i][0];
          startwall = sector[dasector].wallptr;
          endwall = startwall+sector[dasector].wallnum-1;
          for(k=startwall;k<=endwall;k++)
          {
               if (wall[k].x > subwaytrackx1[i])
                    if (wall[k].y > subwaytracky1[i])
                         if (wall[k].x < subwaytrackx2[i])
                              if (wall[k].y < subwaytracky2[i])
                                   wall[k].x += (subwayvel[i]&0xfffffffc);
          }

          for(j=1;j<subwaynumsectors[i];j++)
          {
               dasector = subwaytracksector[i][j];

               startwall = sector[dasector].wallptr;
               endwall = startwall+sector[dasector].wallnum-1;
               for(k=startwall;k<=endwall;k++)
                    wall[k].x += (subwayvel[i]&0xfffffffc);

               s = headspritesect[dasector];
               while (s != -1)
               {
                    k = nextspritesect[s];
                    sprite[s].x += (subwayvel[i]&0xfffffffc);
                    s = k;
               }
          }

          for(p=connecthead;p>=0;p=connectpoint2[p])
               if (cursectnum[p] != subwaytracksector[i][0])
                    if (sector[cursectnum[p]].floorz != sector[subwaytracksector[i][0]].floorz)
                         if (posx[p] > subwaytrackx1[i])
                              if (posy[p] > subwaytracky1[i])
                                   if (posx[p] < subwaytrackx2[i])
                                        if (posy[p] < subwaytracky2[i])
                                        {
                                             posx[p] += (subwayvel[i]&0xfffffffc);

                                                  //Update sprite representation of player
                                             setsprite(playersprite[p],posx[p],posy[p],posz[p]+(KENSPLAYERHEIGHT<<8));
                                             sprite[playersprite[p]].ang = ang[p];
                                             frameinterpolate = 0;
                                        }

          subwayx[i] += (subwayvel[i]&0xfffffffc);

          k = subwaystop[i][subwaygoalstop[i]] - subwayx[i];
          if( k > 0 ) {
               if( k > 2048 ) {
                    if( subwayvel[i] == 12 ) {
                         playsound(S_SUBWAYSTART,subwayx[0],subwaytracky1[0],0,ST_UNIQUE | ST_NOUPDATE);
                    }
                    if (subwayvel[i] < 128) subwayvel[i]++;
               }
               else {
                    if( subwayvel[i] == 32 ) {
                         playsound(S_SUBWAYSTOP,subwayx[0],subwaytracky1[0],0,ST_UNIQUE | ST_NOUPDATE);
                    }
                    subwayvel[i] = (k>>4)+1;
               }
          }
          else if( k < 0 ) {
               if( k < -2048 ) {
                    if( subwayvel[i] == -12 ) {
                         playsound(S_SUBWAYSTART,subwayx[0],subwaytracky1[0],0,ST_UNIQUE | ST_NOUPDATE);
                    }
                    if (subwayvel[i] > -128) subwayvel[i]--;
               }
               else {
                    if( subwayvel[i] == -32) {
                         playsound(S_SUBWAYSTOP,subwayx[0],subwaytracky1[0],0,ST_UNIQUE | ST_NOUPDATE);
                    }
                    subwayvel[i] = ((k>>4)-1);
               }
          }

          if (((subwayvel[i]>>2) == 0) && (labs(k) < 2048))
          {
               if (subwaypausetime[i] == 720)
               {
                    for(j=1;j<subwaynumsectors[i];j++)   //Open all subway doors
                    {
                         dasector = subwaytracksector[i][j];
                         if (sector[dasector].lotag == 17)
                         {
                              sector[dasector].lotag = 16;
                              playsound(S_BIGSWINGCL,subwayx[i],subwaytracky1[i],0,ST_NOUPDATE | ST_UNIQUE);
                              operatesector(dasector);
                              sector[dasector].lotag = 17;
                         }
                    }
               }
               if ((subwaypausetime[i] >= 120) && (subwaypausetime[i]-TICSPERFRAME < 120))
               {
                    for(j=1;j<subwaynumsectors[i];j++)   //Close all subway doors
                    {
                         dasector = subwaytracksector[i][j];
                         if (sector[dasector].lotag == 17)
                         {
                              sector[dasector].lotag = 16;
                              playsound(S_BIGSWINGCL,subwayx[i],subwaytracky1[i],0,ST_NOUPDATE | ST_UNIQUE);
                              operatesector(dasector);
                              sector[dasector].lotag = 17;
                         }
                    }
               }

               subwaypausetime[i] -= TICSPERFRAME;
               if (subwaypausetime[i] < 0)
               {
                    subwaypausetime[i] = 720;
                    if( subwaygoalstop[i] == (subwaystopcnt[i]-1) ) {
                         subwaystopdir[i]=-1;
                         subwaygoalstop[i]=subwaystopcnt[i]-2;
                    }
                    else if( subwaygoalstop[i] == 0 ) {
                         subwaygoalstop[i]=1;
                         subwaystopdir[i]= 1;
                    }
                    else {
                         subwaygoalstop[i]+=subwaystopdir[i];
                    }
               }
          }
     }

     tektagcode();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x68, %rsp
leaq 0x103019(%rip), %rax    # 0x12aca0
movswq (%rax), %rax
testq %rax, %rax
jle 0x27d1c
leaq 0xb97ed(%rip), %rcx     # 0xe1488
movl (%rcx), %edx
shrl $0x2, %edx
andl $0x1f, %edx
movl %edx, %ecx
xorb $0x1f, %cl
cmpl $0x10, %edx
movzbl %cl, %ecx
cmovbl %edx, %ecx
xorl %edx, %edx
leaq 0x102f66(%rip), %rsi    # 0x12ac20
leaq 0x3c9bff(%rip), %rdi    # 0x3f18c0
leaq 0x33ebe8(%rip), %r8     # 0x3668b0
movswq (%rsi,%rdx,2), %r9
leaq (%r9,%r9,4), %r9
movb %cl, 0x14(%rdi,%r9,8)
movb %cl, 0x1c(%rdi,%r9,8)
movswq (%rdi,%r9,8), %r10
movzwl 0x2(%rdi,%r9,8), %r9d
addw %r10w, %r9w
decl %r9d
cmpw %r9w, %r10w
jg 0x27d14
movswq %r9w, %r9
subq %r10, %r9
incq %r9
shlq $0x5, %r10
addq %r8, %r10
addq $0x14, %r10
movb %cl, (%r10)
addq $0x20, %r10
decq %r9
jne 0x27d08
incq %rdx
cmpq %rax, %rdx
jne 0x27cc8
leaq 0x77aded(%rip), %rax    # 0x7a2b10
movl (%rax), %ebx
testw %bx, %bx
js 0x27e0a
leaq 0xba9eb(%rip), %rbp     # 0xe2720
leaq 0x3c9b84(%rip), %r12    # 0x3f18c0
leaq 0xbaa3d(%rip), %r15     # 0xe2780
leaq 0x77add6(%rip), %r8     # 0x7a2b20
andl $0x7fff, %ebx           # imm = 0x7FFF
movswq (%rbp,%rbx,2), %rax
leaq (%rax,%rax,4), %rcx
cmpw $0xa, 0x22(%r12,%rcx,8)
jne 0x27dfd
cmpw (%r15,%rbx,2), %ax
je 0x27dfd
leal (%rbx,%rbx), %r13d
leaq 0xba9d3(%rip), %r14     # 0xe2750
movswl (%r14,%r13), %edi
callq 0x28d65
movswq (%r14,%r13), %rax
imulq $0x2c, %rax, %rax
leaq 0x402d79(%rip), %r8     # 0x42ab10
movl (%r8,%rax), %ecx
leal (,%rbx,4), %edx
leaq 0xb9727(%rip), %r9      # 0xe14d0
movl %ecx, (%r9,%rdx)
movl 0x4(%r8,%rax), %ecx
leaq 0xb9757(%rip), %r9      # 0xe1510
movl %ecx, (%r9,%rdx)
movl 0x8(%r8,%rax), %ecx
leaq 0xb9787(%rip), %r9      # 0xe1550
movl %ecx, (%r9,%rdx)
movzwl 0x1c(%r8,%rax), %edx
leaq 0xb96d6(%rip), %r9      # 0xe14b0
movw %dx, (%r9,%r13)
movzwl 0x18(%r8,%rax), %edx
movw %dx, (%rbp,%r13)
addl $0x2200, %ecx           # imm = 0x2200
movl %ecx, 0x8(%r8,%rax)
leaq 0x77ad23(%rip), %r8     # 0x7a2b20
movl (%r8,%rbx,4), %ebx
testw %bx, %bx
jns 0x27d4a
leaq 0x102ebf(%rip), %rax    # 0x12acd0
movswq (%rax), %rax
testq %rax, %rax
jle 0x27e87
leaq 0xb9667(%rip), %rcx     # 0xe1488
movl (%rcx), %ecx
shrl $0x2, %ecx
xorl %edx, %edx
leaq 0x102e81(%rip), %rsi    # 0x12acb0
leaq 0x3c9a8a(%rip), %rdi    # 0x3f18c0
leaq 0x33ea73(%rip), %r8     # 0x3668b0
movswq (%rsi,%rdx,2), %r9
leaq (%r9,%r9,4), %r9
movswq (%rdi,%r9,8), %r10
movzwl 0x2(%rdi,%r9,8), %r9d
addw %r10w, %r9w
decl %r9d
cmpw %r9w, %r10w
jg 0x27e7f
movswq %r9w, %r9
subq %r10, %r9
incq %r9
shlq $0x5, %r10
addq %r8, %r10
addq $0x18, %r10
movb %cl, (%r10)
addq $0x20, %r10
decq %r9
jne 0x27e73
incq %rdx
cmpq %rax, %rdx
jne 0x27e3d
leaq 0x102ed2(%rip), %rax    # 0x12ad60
movswq (%rax), %rax
testq %rax, %rax
jle 0x27ec8
leaq 0xb95ea(%rip), %rcx     # 0xe1488
movb (%rcx), %cl
notb %cl
xorl %edx, %edx
leaq 0x102e35(%rip), %rsi    # 0x12ace0
leaq 0x33e9fe(%rip), %rdi    # 0x3668b0
movswq (%rsi,%rdx,2), %r8
shlq $0x5, %r8
movb %cl, 0x19(%rdi,%r8)
incq %rdx
cmpq %rdx, %rax
jne 0x27eb2
leaq 0x102d41(%rip), %rax    # 0x12ac10
movswq (%rax), %rax
testq %rax, %rax
jle 0x27f0f
xorl %ecx, %ecx
leaq 0x102d0f(%rip), %rdx    # 0x12abf0
leaq 0x402c28(%rip), %rsi    # 0x42ab10
movswq (%rdx,%rcx,2), %rdi
imulq $0x2c, %rdi, %rdi
movl 0x1c(%rsi,%rdi), %r8d
addl $0xc, %r8d
andl $0x7ff, %r8d            # imm = 0x7FF
movw %r8w, 0x1c(%rsi,%rdi)
incq %rcx
cmpq %rcx, %rax
jne 0x27ee8
leaq 0x102eda(%rip), %rax    # 0x12adf0
movswq (%rax), %rax
testq %rax, %rax
jle 0x27f56
leaq 0xb9562(%rip), %rcx     # 0xe1488
movl (%rcx), %ecx
shrl $0x2, %ecx
xorl %edx, %edx
leaq 0x102e3c(%rip), %rsi    # 0x12ad70
leaq 0x3c9985(%rip), %rdi    # 0x3f18c0
movswq (%rsi,%rdx,2), %r8
leaq (%r8,%r8,4), %r8
movb %cl, 0x1e(%rdi,%r8,8)
movb %cl, 0x1f(%rdi,%r8,8)
incq %rdx
cmpq %rdx, %rax
jne 0x27f3b
leaq 0x102f03(%rip), %rax    # 0x12ae60
cmpw $0x0, (%rax)
jle 0x281c9
xorl %r15d, %r15d
leaq 0x102eaf(%rip), %r14    # 0x12ae20
leaq 0x102ec8(%rip), %rbp    # 0x12ae40
leaq 0x102e81(%rip), %rax    # 0x12ae00
movswq (%rax,%r15,2), %rax
movq %rax, 0x18(%rsp)
leaq (%rax,%rax,4), %r9
leaq 0x3c992c(%rip), %rax    # 0x3f18c0
movzwl (%rax,%r9,8), %ebx
movswq %bx, %rcx
movq %rcx, %rax
shlq $0x5, %rax
leaq 0x33e905(%rip), %rdx    # 0x3668b0
movl (%rdx,%rax), %edx
movswl (%r14,%r15,2), %esi
addl %edx, %esi
leaq 0x102eb4(%rip), %rdi    # 0x12ae70
cmpl (%rdi,%r15,4), %esi
jge 0x27fc9
movw $0x10, (%r14,%r15,2)
leaq 0x33e8e0(%rip), %rsi    # 0x3668b0
addq %rax, %rsi
movl 0x4(%rsi), %esi
movswl (%rbp,%r15,2), %edi
addl %esi, %edi
leaq 0x102ecb(%rip), %r8     # 0x12aeb0
cmpl (%r8,%r15,4), %edi
jge 0x27ff3
movw $0x10, (%rbp,%r15,2)
movswl (%r14,%r15,2), %edi
addl %edi, %edx
leaq 0x102eef(%rip), %rdi    # 0x12aef0
cmpl (%rdi,%r15,4), %edx
jle 0x2800e
movw $0xfff0, (%r14,%r15,2)  # imm = 0xFFF0
movswl (%rbp,%r15,2), %edx
addl %edx, %esi
leaq 0x102f13(%rip), %rdx    # 0x12af30
cmpl (%rdx,%r15,4), %esi
jle 0x2802b
movw $0xfff0, (%rbp,%r15,2)  # imm = 0xFFF0
leaq 0x3c988e(%rip), %rdx    # 0x3f18c0
movq %r9, 0x10(%rsp)
movzwl 0x2(%rdx,%r9,8), %edx
addw %bx, %dx
decl %edx
cmpw %dx, %bx
jg 0x28088
movswq %dx, %r12
subq %rcx, %r12
incq %r12
leaq 0x33e858(%rip), %rcx    # 0x3668b0
leaq (%rcx,%rax), %r13
addq $0x4, %r13
movswl (%r14,%r15,2), %esi
addl -0x4(%r13), %esi
movswl (%rbp,%r15,2), %edx
addl (%r13), %edx
movswl %bx, %ebx
movl %ebx, %edi
callq 0x48e56
incl %ebx
addq $0x20, %r13
decq %r12
jne 0x28060
leaq 0x3c9831(%rip), %rax    # 0x3f18c0
movq 0x10(%rsp), %rcx
leaq (%rax,%rcx,8), %rdx
leaq 0xb93e9(%rip), %rax     # 0xe1488
movl (%rax), %eax
andl $0x7f, %eax
shll $0x5, %eax
leaq 0x554b02(%rip), %rcx    # 0x57cbb0
movswl (%rcx,%rax), %eax
sarl $0x3, %eax
leaq 0x102eb4(%rip), %rcx    # 0x12af70
addl (%rcx,%r15,4), %eax
movl 0x8(%rdx), %ecx
movl %ecx, 0x28(%rsp)
movq %rdx, 0x10(%rsp)
movl %eax, 0x8(%rdx)
leaq 0x77aa3a(%rip), %rax    # 0x7a2b10
movl (%rax), %r12d
testw %r12w, %r12w
js 0x281b2
andl $0x7fff, %r12d          # imm = 0x7FFF
leaq 0xba62f(%rip), %rax     # 0xe2720
movq 0x18(%rsp), %rcx
cmpw %cx, (%rax,%r12,2)
jne 0x281a2
movswl (%r14,%r15,2), %esi
leal (,%r12,4), %eax
leaq 0xb93bb(%rip), %rcx     # 0xe14d0
addl (%rcx,%rax), %esi
movl %esi, (%rcx,%rax)
movq 0x10(%rsp), %rcx
movl 0x8(%rcx), %ecx
subl 0x28(%rsp), %ecx
leaq 0xb9422(%rip), %r8      # 0xe1550
movl (%r8,%rax), %edi
leal (%rdi,%rcx), %edx
movl %edx, (%r8,%rax)
movswl (%rbp,%r15,2), %edx
leaq 0xb93ca(%rip), %r8      # 0xe1510
addl (%r8,%rax), %edx
movl %edx, (%r8,%rax)
movq %rbp, %r13
movq %r14, %rbp
leal (%r12,%r12), %r14d
addl %edi, %ecx
addl $0x2200, %ecx           # imm = 0x2200
leaq 0xba5e9(%rip), %rbx     # 0xe2750
movswl (%rbx,%r14), %edi
callq 0x46b48
leaq 0xb9338(%rip), %rax     # 0xe14b0
movzwl (%rax,%r14), %eax
movswq (%rbx,%r14), %rcx
movq %rbp, %r14
movq %r13, %rbp
imulq $0x2c, %rcx, %rcx
leaq 0x40297d(%rip), %rdx    # 0x42ab10
movw %ax, 0x1c(%rdx,%rcx)
leaq 0xa6961(%rip), %rax     # 0xceb00
movb $0x0, (%rax)
leaq 0x77a977(%rip), %rax    # 0x7a2b20
movl (%rax,%r12,4), %r12d
jmp 0x280d9
incq %r15
leaq 0x102ca4(%rip), %rax    # 0x12ae60
movswq (%rax), %rax
cmpq %rax, %r15
jl 0x27f78
leaq 0x102de0(%rip), %rax    # 0x12afb0
cmpw $0x0, (%rax)
jle 0x285d2
leaq 0x10309f(%rip), %rdx    # 0x12b280
leaq 0x103498(%rip), %rcx    # 0x12b680
leaq 0x102dd1(%rip), %rbp    # 0x12afc0
xorl %r13d, %r13d
leaq 0x103007(%rip), %r8     # 0x12b200
leaq 0xb92d0(%rip), %r14     # 0xe14d0
movq %rdx, 0x40(%rsp)
movq %rcx, 0x10(%rsp)
leaq 0x10302f(%rip), %rax    # 0x12b240
cmpw $0x0, (%rax,%r13,2)
je 0x285a5
movzwl (%r8,%r13,2), %eax
movw %ax, 0x26(%rsp)
movq %r13, %rcx
shlq $0x5, %rcx
leaq 0x10304b(%rip), %rax    # 0x12b280
leaq (%rcx,%rax), %r15
addq 0xa5d28(%rip), %rcx     # 0xcdf68
movq %rcx, 0x38(%rsp)
movl $0xc, %ebx
leaq 0x33e65f(%rip), %r10    # 0x3668b0
movq %r8, %r12
leaq 0x102fe5(%rip), %rax    # 0x12b240
movzwl (%rax,%r13,2), %eax
addw (%r8,%r13,2), %ax
andl $0x7ff, %eax            # imm = 0x7FF
movw %ax, (%r8,%r13,2)
leaq 0x102f0a(%rip), %rcx    # 0x12b180
cmpw (%rcx,%r13,2), %ax
jne 0x282b6
cmpl $0x1, %ebx
jne 0x282a8
movl (%r15), %esi
movq 0x38(%rsp), %rax
movl (%rax), %edx
movl $0x6f, %edi
xorl %ecx, %ecx
movl $0x2, %r8d
callq 0x1c1f1
leaq 0x33e60b(%rip), %r10    # 0x3668b0
movq %r12, %r8
leaq 0x102f91(%rip), %rax    # 0x12b240
movw $0x0, (%rax,%r13,2)
movzwl (%r8,%r13,2), %eax
leaq 0x102e7e(%rip), %rcx    # 0x12b140
cmpw (%rcx,%r13,2), %ax
jne 0x28302
cmpl $0x1, %ebx
jne 0x282f4
movl (%r15), %esi
movq 0x38(%rsp), %rax
movl (%rax), %edx
movl $0x6f, %edi
xorl %ecx, %ecx
movl $0x2, %r8d
callq 0x1c1f1
leaq 0x33e5bf(%rip), %r10    # 0x3668b0
movq %r12, %r8
leaq 0x102f45(%rip), %rax    # 0x12b240
movw $0x0, (%rax,%r13,2)
decl %ebx
jne 0x28254
movl $0x1, %ebx
movl (%r15), %edi
movq 0x38(%rsp), %rax
movl (%rax), %esi
movq 0x40(%rsp), %rax
movl (%rax,%rbx,4), %edx
movq 0x10(%rsp), %rax
movl (%rax,%rbx,4), %ecx
movswl (%r12,%r13,2), %r8d
movswq (%rbp,%rbx,2), %rax
shlq $0x5, %rax
leaq (%r10,%rax), %r9
addq %r10, %rax
addq $0x4, %rax
movq %rax, (%rsp)
callq 0x4b146
leaq 0x33e55d(%rip), %r10    # 0x3668b0
incq %rbx
cmpq $0x4, %rbx
jne 0x2830f
movq %r12, %r8
movq %r15, 0x60(%rsp)
leaq 0x102ed5(%rip), %rax    # 0x12b240
cmpw $0x0, (%rax,%r13,2)
je 0x285a5
leaq 0x77a792(%rip), %rax    # 0x7a2b10
movl (%rax), %ecx
testw %cx, %cx
js 0x285a5
movq %rbp, 0x18(%rsp)
andl $0x7fff, %ecx           # imm = 0x7FFF
leaq 0xba385(%rip), %rax     # 0xe2720
movq %rcx, 0x50(%rsp)
movzwl (%rax,%rcx,2), %eax
leaq 0x102d55(%rip), %rcx    # 0x12b100
movzwl (%rcx,%r13,2), %ecx
cmpw %cx, %ax
je 0x283ce
movswl %ax, %edi
movswl %cx, %esi
movq %r8, %rbx
callq 0x28dd9
movq %rbx, %r8
testl %eax, %eax
je 0x2858d
movl $0x100, %r15d           # imm = 0x100
movq 0x50(%rsp), %rax
leal (,%rax,4), %eax
movq %rax, 0x58(%rsp)
xorl %ebx, %ebx
leaq 0x102dd2(%rip), %rax    # 0x12b1c0
cmpw $0x0, (%rax,%r13,2)
setg %bl
movq 0x58(%rsp), %rcx
movl (%r14,%rcx), %edi
leaq 0xb9109(%rip), %rax     # 0xe1510
movl (%rax,%rcx), %esi
leaq (,%r13,4), %rax
addq %r13, %rax
addq %rax, %rax
addq 0xa5b21(%rip), %rax     # 0xcdf40
movswl 0x6(%rax,%rbx,2), %edx
movl $0x80, %ecx
callq 0x46799
movb $0x1, 0x28(%rsp)
testl %eax, %eax
jne 0x28475
leaq 0x3(%rbx), %r12
cmpq %rbx, %r12
setg %al
jle 0x2855d
movb %al, 0x28(%rsp)
movq 0x58(%rsp), %rcx
movl (%r14,%rcx), %edi
leaq 0xb90b5(%rip), %rax     # 0xe1510
movl (%rax,%rcx), %esi
movswl -0x2(%rbp,%r12,2), %edx
decq %r12
movl $0x80, %ecx
callq 0x46799
testl %eax, %eax
je 0x2843b
cmpl $0x100, %r15d           # imm = 0x100
movl %r15d, 0x48(%rsp)
jne 0x2849d
leaq 0x102db6(%rip), %rax    # 0x12b240
negw (%rax,%r13,2)
movzwl 0x26(%rsp), %eax
leaq 0x102d65(%rip), %r8     # 0x12b200
jmp 0x284ba
leaq 0x102d5c(%rip), %r8     # 0x12b200
movzwl (%r8,%r13,2), %eax
leaq 0x102d90(%rip), %rcx    # 0x12b240
subw (%rcx,%r13,2), %ax
andl $0x7ff, %eax            # imm = 0x7FF
movw %ax, (%r8,%r13,2)
movl $0x1, %ebx
movq 0x40(%rsp), %r15
movq 0x38(%rsp), %r14
movq 0x60(%rsp), %rbp
movl (%rbp), %edi
movl (%r14), %esi
movl (%r15,%rbx,4), %edx
movq 0x10(%rsp), %rax
movl (%rax,%rbx,4), %ecx
movq %r8, %r12
movswl (%r8,%r13,2), %r8d
movq 0x18(%rsp), %rax
movswq (%rax,%rbx,2), %rax
shlq $0x5, %rax
leaq 0x33e3ae(%rip), %r10    # 0x3668b0
leaq (%r10,%rax), %r9
addq %r10, %rax
addq $0x4, %rax
movq %rax, (%rsp)
callq 0x4b146
movq %r12, %r8
incq %rbx
cmpq $0x4, %rbx
jne 0x284d3
movzwl (%r8,%r13,2), %eax
leaq 0x102c52(%rip), %rcx    # 0x12b180
cmpw (%rcx,%r13,2), %ax
je 0x28573
leaq 0x102c04(%rip), %rcx    # 0x12b140
cmpw (%rcx,%r13,2), %ax
je 0x28573
movl 0x48(%rsp), %r15d
decl %r15d
leaq 0xb8f7e(%rip), %r14     # 0xe14d0
movq 0x18(%rsp), %rbp
movb 0x28(%rsp), %al
jmp 0x28564
leaq 0x102c9c(%rip), %r8     # 0x12b200
testb %al, %al
je 0x2858d
testl %r15d, %r15d
jg 0x283e5
jmp 0x2858d
leaq 0x102cc6(%rip), %rax    # 0x12b240
movw $0x0, (%rax,%r13,2)
leaq 0xb8f48(%rip), %r14     # 0xe14d0
movq 0x18(%rsp), %rbp
leaq 0x77a58c(%rip), %rax    # 0x7a2b20
movq 0x50(%rsp), %rcx
movl (%rax,%rcx,4), %ecx
testw %cx, %cx
jns 0x2838e
incq %r13
leaq 0x102a01(%rip), %rax    # 0x12afb0
movswq (%rax), %rax
movq 0x40(%rsp), %rdx
addq $0x20, %rdx
movq 0x10(%rsp), %rcx
addq $0x20, %rcx
addq $0xa, %rbp
cmpq %rax, %r13
jl 0x28200
leaq 0x1034b7(%rip), %rax    # 0x12ba90
cmpw $0x0, (%rax)
jle 0x286ec
leaq 0x1034b6(%rip), %r12    # 0x12baa0
leaq 0x1035af(%rip), %r10    # 0x12bba0
xorl %ebx, %ebx
leaq 0x10348e(%rip), %r15    # 0x12ba88
leaq 0x10369f(%rip), %rsi    # 0x12bca0
leaq 0x1036a8(%rip), %r13    # 0x12bcb0
leaq 0x34(%rsp), %r14
leaq 0x4c(%rsp), %r9
leaq 0x103467(%rip), %rax    # 0x12ba80
movswq (%rax,%rbx,2), %rax
leaq (%rax,%rax,4), %rcx
leaq 0x3c9297(%rip), %rdx    # 0x3f18c0
movswq (%rdx,%rcx,8), %rax
movzwl 0x2(%rdx,%rcx,8), %ecx
addw %ax, %cx
decl %ecx
movzwl (%r15,%rbx,2), %edx
addl $0x7f4, %edx            # imm = 0x7F4
andl $0x7ff, %edx            # imm = 0x7FF
movw %dx, (%r15,%rbx,2)
cmpw %cx, %ax
jg 0x286cd
movswq %cx, %rcx
subq %rax, %rcx
incq %rcx
movq %rcx, 0x10(%rsp)
movzwl %ax, %eax
movq %rax, 0x28(%rsp)
xorl %ebp, %ebp
movq %rbx, 0x18(%rsp)
movl (%rsi,%rbx,4), %edi
movl (%r13,%rbx,4), %esi
movl (%r12,%rbp,4), %edx
movl (%r10,%rbp,4), %ecx
movswl (%r15,%rbx,2), %r8d
movq %r14, (%rsp)
movq %r10, %rbx
movq %r9, %r14
callq 0x4b146
movq 0x28(%rsp), %rax
addl %ebp, %eax
movl 0x4c(%rsp), %esi
movl 0x34(%rsp), %edx
movswl %ax, %edi
callq 0x48e56
movq %r14, %r9
leaq 0x1035ea(%rip), %rsi    # 0x12bca0
movq %rbx, %r10
movq 0x18(%rsp), %rbx
leaq 0x34(%rsp), %r14
incq %rbp
cmpq %rbp, 0x10(%rsp)
jne 0x28671
incq %rbx
leaq 0x1033b9(%rip), %rax    # 0x12ba90
movswq (%rax), %rax
addq $0x40, %r12
addq $0x40, %r10
cmpq %rax, %rbx
jl 0x28612
leaq 0x1039d5(%rip), %rax    # 0x12c0c8
cmpw $0x0, (%rax)
jle 0x28d51
leaq 0x1035bc(%rip), %rax    # 0x12bcc0
xorl %ebp, %ebp
leaq 0x1059e3(%rip), %rbx    # 0x12e0f0
leaq 0x103a5c(%rip), %r9     # 0x12c170
leaq 0x531c55(%rip), %r15    # 0x55a370
leaq 0x53bc5e(%rip), %r13    # 0x564380
leaq 0x4023e7(%rip), %r14    # 0x42ab10
movq %rax, 0x18(%rsp)
movl (%rbx,%rbp,4), %edi
leaq 0x103a68(%rip), %rax    # 0x12c1a0
movl (%rax,%rbp,4), %esi
movl (%r9,%rbp,4), %edx
cmpl $-0x1, %edi
je 0x2874b
callq 0x1c4c0
jmp 0x28763
movl $0x4b, %edi
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
movl $0x80, %r8d
callq 0x1c1f1
movl %eax, (%rbx,%rbp,4)
movq %rbp, %r12
shlq $0x8, %r12
leaq 0x10354f(%rip), %rax    # 0x12bcc0
movswq (%rax,%r12), %rax
leaq (%rax,%rax,4), %rcx
leaq 0x3c913f(%rip), %rbx    # 0x3f18c0
movswq (%rbx,%rcx,8), %rax
movzwl 0x2(%rbx,%rcx,8), %ecx
addw %ax, %cx
decl %ecx
cmpw %cx, %ax
leaq 0x1039d6(%rip), %r9     # 0x12c170
leaq 0x103a1f(%rip), %r10    # 0x12c1c0
jg 0x287ff
movswq %cx, %rcx
leaq 0x1039b2(%rip), %rdx    # 0x12c160
movl (%rdx,%rbp,4), %edx
subq %rax, %rcx
incq %rcx
shlq $0x5, %rax
addq 0xa582e(%rip), %rax     # 0xcdff0
movl (%rax), %esi
cmpl %edx, %esi
jle 0x287f6
movl 0x4(%rax), %edi
cmpl (%r9,%rbp,4), %edi
jle 0x287f6
leaq 0x1039a8(%rip), %r8     # 0x12c180
cmpl (%r8,%rbp,4), %esi
jge 0x287f6
leaq 0x1039ab(%rip), %r8     # 0x12c190
cmpl (%r8,%rbp,4), %edi
jge 0x287f6
movl (%r10,%rbp,4), %edi
andl $-0x4, %edi
addl %esi, %edi
movl %edi, (%rax)
addq $0x20, %rax
decq %rcx
jne 0x287c2
addq 0xa575a(%rip), %r12     # 0xcdf60
leaq 0x1038b3(%rip), %rax    # 0x12c0c0
movswq (%rax,%rbp,2), %rax
cmpq $0x2, %rax
jl 0x28895
movl $0x1, %ecx
movswq (%r12,%rcx,2), %rdx
leaq (%rdx,%rdx,4), %rdi
movswq (%rbx,%rdi,8), %rsi
movzwl 0x2(%rbx,%rdi,8), %edi
addw %si, %di
decl %edi
cmpw %di, %si
jg 0x28863
movswq %di, %rdi
movl (%r10,%rbp,4), %r8d
andl $-0x4, %r8d
subq %rsi, %rdi
incq %rdi
shlq $0x5, %rsi
addq 0xa5799(%rip), %rsi     # 0xcdff0
addl %r8d, (%rsi)
addq $0x20, %rsi
decq %rdi
jne 0x28857
movzwl (%r15,%rdx,2), %edx
cmpw $-0x1, %dx
je 0x2888d
movl (%r10,%rbp,4), %esi
andl $-0x4, %esi
movswq %dx, %rdi
movzwl (%r13,%rdi,2), %edx
imulq $0x2c, %rdi, %rdi
addl %esi, (%r14,%rdi)
cmpw $-0x1, %dx
jne 0x28875
incq %rcx
cmpq %rax, %rcx
jne 0x2881d
leaq 0x77a274(%rip), %rax    # 0x7a2b10
movl (%rax), %r15d
testw %r15w, %r15w
leaq 0xb9e76(%rip), %rsi     # 0xe2720
leaq 0x77a26f(%rip), %rdi    # 0x7a2b20
js 0x289d6
andl $0x7fff, %r15d          # imm = 0x7FFF
movswq (%rsi,%r15,2), %rax
movswq (%r12), %rcx
cmpw %cx, %ax
je 0x289c8
leaq (%rax,%rax,4), %rax
movl 0x8(%rbx,%rax,8), %eax
leaq (%rcx,%rcx,4), %rcx
cmpl 0x8(%rbx,%rcx,8), %eax
je 0x289c8
leaq 0xb8be2(%rip), %rax     # 0xe14d0
movl (%rax,%r15,4), %eax
leaq 0x103867(%rip), %rcx    # 0x12c160
cmpl (%rcx,%rbp,4), %eax
jle 0x289c8
leaq 0xb8c07(%rip), %rcx     # 0xe1510
movl (%rcx,%r15,4), %edx
cmpl (%r9,%rbp,4), %edx
jle 0x289c8
leaq 0x103862(%rip), %rcx    # 0x12c180
cmpl (%rcx,%rbp,4), %eax
jge 0x289c8
leaq 0x103862(%rip), %rcx    # 0x12c190
cmpl (%rcx,%rbp,4), %edx
jge 0x289c8
movl (%r10,%rbp,4), %esi
andl $-0x4, %esi
addl %eax, %esi
leal (,%r15,4), %eax
leaq 0xb8b81(%rip), %rcx     # 0xe14d0
movl %esi, (%rcx,%rax)
leal (%r15,%r15), %edi
movq %rdi, 0x10(%rsp)
leaq 0xb9dee(%rip), %rcx     # 0xe2750
movswl (%rcx,%rdi), %edi
leaq 0xb8be3(%rip), %rcx     # 0xe1550
movl (%rcx,%rax), %ecx
movl $0x2200, %eax           # imm = 0x2200
addl %eax, %ecx
callq 0x46b48
leaq 0x77a19d(%rip), %rdi    # 0x7a2b20
leaq 0xb9d96(%rip), %rsi     # 0xe2720
leaq 0x10382f(%rip), %r10    # 0x12c1c0
leaq 0x1037d8(%rip), %r9     # 0x12c170
leaq 0xb8b11(%rip), %rax     # 0xe14b0
movq 0x10(%rsp), %rcx
movzwl (%rax,%rcx), %eax
leaq 0xb9da1(%rip), %rdx     # 0xe2750
movswq (%rdx,%rcx), %rcx
imulq $0x2c, %rcx, %rcx
movw %ax, 0x1c(%r14,%rcx)
leaq 0xa613b(%rip), %rax     # 0xceb00
movb $0x0, (%rax)
movl (%rdi,%r15,4), %r15d
testw %r15w, %r15w
jns 0x288b7
movl (%r10,%rbp,4), %eax
movl %eax, %ecx
andl $-0x4, %ecx
leaq 0x1037ba(%rip), %rdx    # 0x12c1a0
addl (%rdx,%rbp,4), %ecx
movl %ecx, (%rdx,%rbp,4)
leaq 0x1037bd(%rip), %rdx    # 0x12c1b0
movslq (%rdx,%rbp,4), %rdx
movq %rbp, %rsi
shlq $0x5, %rsi
addq 0xa55bb(%rip), %rsi     # 0xcdfc0
movl (%rsi,%rdx,4), %r12d
subl %ecx, %r12d
jle 0x28a65
cmpl $0x801, %r12d           # imm = 0x801
leaq 0x531954(%rip), %r15    # 0x55a370
jl 0x28abe
cmpl $0xc, %eax
jne 0x28a53
leaq 0x103772(%rip), %rax    # 0x12c1a0
movl (%rax), %esi
movl (%r9), %edx
movl $0x4c, %edi
xorl %ecx, %ecx
movl $0xc, %r8d
callq 0x1c1f1
leaq 0x103774(%rip), %r10    # 0x12c1c0
leaq 0x10371d(%rip), %r9     # 0x12c170
movl (%r10,%rbp,4), %eax
cmpl $0x7f, %eax
jle 0x28af5
jmp 0x28afb
leaq 0x531904(%rip), %r15    # 0x55a370
jns 0x28afb
cmpl $0xfffff7ff, %r12d      # imm = 0xFFFFF7FF
jg 0x28cda
cmpl $-0xc, %eax
jne 0x28ab0
leaq 0x103715(%rip), %rax    # 0x12c1a0
movl (%rax), %esi
movl (%r9), %edx
movl $0x4c, %edi
xorl %ecx, %ecx
movl $0xc, %r8d
callq 0x1c1f1
leaq 0x103717(%rip), %r10    # 0x12c1c0
leaq 0x1036c0(%rip), %r9     # 0x12c170
movl (%r10,%rbp,4), %eax
cmpl $-0x7f, %eax
jl 0x28afb
jmp 0x28d11
cmpl $0x20, %eax
jne 0x28aef
leaq 0x1036d6(%rip), %rax    # 0x12c1a0
movl (%rax), %esi
movl (%r9), %edx
movl $0x4d, %edi
xorl %ecx, %ecx
movl $0xc, %r8d
callq 0x1c1f1
leaq 0x1036d8(%rip), %r10    # 0x12c1c0
leaq 0x103681(%rip), %r9     # 0x12c170
movl %r12d, %eax
shrl $0x4, %eax
incl %eax
movl %eax, (%r10,%rbp,4)
movl %r12d, %eax
negl %eax
cmovsl %r12d, %eax
cmpl $0x7ff, %eax            # imm = 0x7FF
ja 0x28d2a
cmpl $0x3, (%r10,%rbp,4)
ja 0x28d2a
leaq 0x1036af(%rip), %rax    # 0x12c1d0
cmpl $0x2d0, (%rax,%rbp,4)   # imm = 0x2D0
jne 0x28bc0
leaq 0x10358b(%rip), %rax    # 0x12c0c0
cmpw $0x2, (%rax,%rbp,2)
jl 0x28bc0
movl $0x1, %r15d
movq 0x18(%rsp), %rax
movswq (%rax,%r15,2), %r12
leaq (%r12,%r12,4), %rax
cmpw $0x11, 0x22(%rbx,%rax,8)
jne 0x28bac
leaq 0x3c8d5d(%rip), %rcx    # 0x3f18c0
leaq (%rcx,%rax,8), %rbx
addq $0x22, %rbx
movw $0x10, (%rbx)
leaq 0x103629(%rip), %rax    # 0x12c1a0
movl (%rax,%rbp,4), %esi
movl (%r9,%rbp,4), %edx
movl $0x3e, %edi
xorl %ecx, %ecx
movl $0xc, %r8d
callq 0x1c1f1
movswl %r12w, %edi
callq 0x276ec
leaq 0x1035d0(%rip), %r9     # 0x12c170
movw $0x11, (%rbx)
leaq 0x3c8d14(%rip), %rbx    # 0x3f18c0
incq %r15
leaq 0x10350a(%rip), %rax    # 0x12c0c0
movswq (%rax,%rbp,2), %rax
cmpq %rax, %r15
jl 0x28b46
leaq 0x103609(%rip), %rax    # 0x12c1d0
movl (%rax,%rbp,4), %eax
addl $-0x78, %eax
cmpl $0x2, %eax
ja 0x28c68
leaq 0x1034e3(%rip), %rax    # 0x12c0c0
cmpw $0x2, (%rax,%rbp,2)
jl 0x28c68
movl $0x1, %r15d
movq 0x18(%rsp), %rax
movswq (%rax,%r15,2), %r12
leaq (%r12,%r12,4), %rax
cmpw $0x11, 0x22(%rbx,%rax,8)
jne 0x28c54
leaq 0x3c8cb5(%rip), %rcx    # 0x3f18c0
leaq (%rcx,%rax,8), %rbx
addq $0x22, %rbx
movw $0x10, (%rbx)
leaq 0x103581(%rip), %rax    # 0x12c1a0
movl (%rax,%rbp,4), %esi
movl (%r9,%rbp,4), %edx
movl $0x3e, %edi
xorl %ecx, %ecx
movl $0xc, %r8d
callq 0x1c1f1
movswl %r12w, %edi
callq 0x276ec
leaq 0x103528(%rip), %r9     # 0x12c170
movw $0x11, (%rbx)
leaq 0x3c8c6c(%rip), %rbx    # 0x3f18c0
incq %r15
leaq 0x103462(%rip), %rax    # 0x12c0c0
movswq (%rax,%rbp,2), %rax
cmpq %rax, %r15
jl 0x28bee
leaq 0x103561(%rip), %rdx    # 0x12c1d0
movl (%rdx,%rbp,4), %eax
leal -0x3(%rax), %ecx
movl %ecx, (%rdx,%rbp,4)
cmpl $0x2, %eax
leaq 0x5316ee(%rip), %r15    # 0x55a370
jg 0x28d2a
leaq 0x103541(%rip), %rax    # 0x12c1d0
movl $0x2d0, (%rax,%rbp,4)   # imm = 0x2D0
leaq 0x103513(%rip), %rsi    # 0x12c1b0
movl (%rsi,%rbp,4), %eax
leaq 0x1034a9(%rip), %rcx    # 0x12c150
movl (%rcx,%rbp,4), %ecx
leal -0x1(%rcx), %edx
cmpl %edx, %eax
jne 0x28cc7
leaq 0xa6cb8(%rip), %rax     # 0xcf970
movl $0xffffffff, (%rax,%rbp,4) # imm = 0xFFFFFFFF
addl $-0x2, %ecx
movl %ecx, (%rsi,%rbp,4)
jmp 0x28d2a
testl %eax, %eax
je 0x28d18
leaq 0xa6c9e(%rip), %rcx     # 0xcf970
addl (%rcx,%rbp,4), %eax
movl %eax, (%rsi,%rbp,4)
jmp 0x28d2a
cmpl $-0x20, %eax
jne 0x28d0b
leaq 0x1034ba(%rip), %rax    # 0x12c1a0
movl (%rax), %esi
movl (%r9), %edx
movl $0x4d, %edi
xorl %ecx, %ecx
movl $0xc, %r8d
callq 0x1c1f1
leaq 0x1034bc(%rip), %r10    # 0x12c1c0
leaq 0x103465(%rip), %r9     # 0x12c170
movl %r12d, %eax
sarl $0x4, %eax
decl %eax
jmp 0x28af7
movl $0x1, %ecx
movl %ecx, (%rsi,%rbp,4)
leaq 0xa6c49(%rip), %rax     # 0xcf970
movl %ecx, (%rax,%rbp,4)
incq %rbp
leaq 0x103394(%rip), %rax    # 0x12c0c8
movswq (%rax), %rax
addq $0x100, 0x18(%rsp)      # imm = 0x100
cmpq %rax, %rbp
leaq 0x1053a5(%rip), %rbx    # 0x12e0f0
jl 0x2872e
callq 0x28e6a
addq $0x68, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq