// File: /workspace/github_c_makefile_star2_O0/jonof[P]jftekwar/src/tekgun.c
// Function: shootgun
void
shootgun(short snum,int x,int y,int z,short daang,int dahoriz,
     short dasectnum,char guntype)
{
     short hitsect,hitwall,hitsprite,daang2;
     short bloodhitsect,bloodhitwall,bloodhitsprite;
     int  bloodhitx,bloodhity,bloodhitz;
     int  cx,cy,i,j,daz2,hitx,hity,hitz,xydist,zdist;
     int   rv,pnum;

     if( health[snum] <= 0 ) {
          return;
     }

     guntype+=1;
     switch (guntype) {
     case GUN1FLAG:
          cx=x+(sintable[(daang+2560+128)&2047]>>6);
          cy=y+(sintable[(daang+2048+128)&2047]>>6);
          j=jsinsertsprite(dasectnum, FORCEPROJECTILESTAT);
          if( j != -1 ) {
               fillsprite(j,cx,cy,z,128+2,-16,0,12,16,16,0,0,FORCEBALLPIC,daang,
                          sintable[(daang+2560-11)&2047]>>5, // -17 = travel 3 degrees left
                          sintable[(daang+2048-11)&2047]>>5, // -17 = travel 3 degrees left
                          100-dahoriz,snum+MAXSPRITES,dasectnum,FORCEPROJECTILESTAT,0,0,-1);
          }
          break;
     case GUN2FLAG:
          ammo2[snum]--;
          if( ammo2[snum] < 0 ) {
               ammo2[snum]=0;
               break;
          }
          daang2=daang;
          daz2=(100-dahoriz)*2000;
          hitscan(x,y,z,dasectnum,sintable[(daang2+2560)&2047],
                  sintable[(daang2+2048)&2047],daz2,
                  &hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,CLIPMASK1);
          if( (hitsprite >= 0) && (sprptr[hitsprite]->statnum < MAXSTATUS)) {
               if( playerhit(hitsprite, &pnum) ) {
                    playerpainsound(pnum);
                    playerwoundplayer(pnum,snum,2);
               }
               else {
                    switch( sprptr[hitsprite]->picnum ) {
                    default:
                         rv=damagesprite(hitsprite,tekgundamage(guntype,x,y,z,hitsprite));
                         if( (rv == 1) && (goreflag) ) {
                              if( spewblood(hitsprite, hitz, daang) != 0 ) {
                                   sprptr[hitsprite]->cstat&=0xFEFE;  // non hitscan and non block
                                   // must preserve values from previous hitscan call,
                                   // thus the bloodxhitx, bloodwall, etc...
                                   hitscan(x,y,z,dasectnum,sintable[(daang2+2560)&2047],
                                           sintable[(daang2+2048)&2047],daz2,
                                           &bloodhitsect,&bloodhitwall,&bloodhitsprite,&bloodhitx,&bloodhity,&bloodhitz,CLIPMASK1);
                                   if( bloodhitwall != -1 ) {
                                        bloodonwall(bloodhitwall,sprptr[hitsprite]->x,sprptr[hitsprite]->y,sprptr[hitsprite]->z,
                                                    sprptr[hitsprite]->sectnum,daang2,bloodhitx,bloodhity,bloodhitz);
                                   }
                              }
                         }
                         if( rv == 1 ) {
                              killscore(hitsprite,snum,guntype);
                         }
                    break;
               }
               }
          }
          if( hitwall >= 0 ) {
               j=jsinsertsprite(hitsect, 3);
               if( j != -1 ) {
                    fillsprite(j,hitx,hity,hitz+(8<<8),2,0,0,32,22,22,0,0,
                               EXPLOSION,daang,0,0,0,snum+MAXSPRITES,hitsect,3,63,0,-1);
                    movesprite((short)j,
                               -(((int)sintable[(512+daang)&2047]*TICSPERFRAME)<<4),
                               -(((int)sintable[daang]*TICSPERFRAME)<<4),0L,4L<<8,4L<<8,1);
                    playsound(S_RIC1,hitx,hity,0,ST_NOUPDATE);
               }
          }
          break;
     case GUN3FLAG:
          ammo3[snum]--;
          if( ammo3[snum] < 0 ) {
               ammo3[snum]=0;
               break;
          }
          cx=x+(sintable[(daang+2560+256)&2047]>>6);
          cy=y+(sintable[(daang+2048+256)&2047]>>6);
          if( invaccutrak[snum] > 0 ) {
               j=jsinsertsprite(dasectnum, BOMBPROJECTILESTAT);
               if( j != -1 ) {
                    fillsprite(j,cx,cy,z+(4<<8),128,-16,0,32,16,16,0,0,BOMBPIC,daang,
                         sintable[(daang+2560-11)&2047]>>5, // -17 = travel 3 degrees left
                         sintable[(daang+2048-11)&2047]>>5, // -17 = travel 3 degrees left
                         100-dahoriz,snum,dasectnum,BOMBPROJECTILESTAT,0,0,-1);
                    sprptr[j]->owner=snum;
               }
          }
          else {
               j=jsinsertsprite(dasectnum, BOMBPROJECTILESTAT2);
               if( j != -1 ) {
                    fillsprite(j,cx,cy,z+(4<<8),128,-16,0,32,16,16,0,0,BOMBPIC,daang,
                         sintable[(daang+2560-11)&2047]>>5, // -17 = travel 3 degrees left
                         sintable[(daang+2048-11)&2047]>>5, // -17 = travel 3 degrees left
                         100-dahoriz,snum,dasectnum,BOMBPROJECTILESTAT2,0,0,-1);
                    sprptr[j]->owner=snum;
               }
          }
          break;
     case GUN4FLAG:
          ammo4[snum]--;
          if( ammo4[snum] < 0 ) {
               ammo4[snum]=0;
               break;
          }
          cx=x+(sintable[(daang+2560+128)&2047]>>6);
          cy=y+(sintable[(daang+2048+128)&2047]>>6);
          j=jsinsertsprite(dasectnum, DARTPROJECTILESTAT);
          if( j != -1 ) {
               fillsprite(j,cx,cy,z+(5<<8),128,-35,0,12,16,16,0,0, 338 ,daang,
                    sintable[(daang+2560-6)&2047]>>5, // -17 = travel 3 degrees left
                    sintable[(daang+2048-6)&2047]>>5, // -17 = travel 3 degrees left
                    100-dahoriz,snum,dasectnum,DARTPROJECTILESTAT,0,0,-1);
               sprptr[j]->owner=snum;
               playsound(S_RIC1,cx,cy,0,ST_NOUPDATE);

          }
          break;
     case GUN5FLAG:
          daang2=daang;
          daz2=(100-dahoriz)*2000;
          hitscan(x,y,z,dasectnum,sintable[(daang2+2560)&2047],
                  sintable[(daang2+2048)&2047],daz2,
                  &hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,CLIPMASK1);
          if( (hitsprite >= 0) && (sprptr[hitsprite]->statnum < MAXSTATUS)) {
               xydist=klabs(posx[snum]-sprptr[hitsprite]->x)+klabs(posy[snum]-sprptr[hitsprite]->y);
               zdist=klabs( (posz[snum]>>8)-((sprptr[hitsprite]->z>>8)-(tilesizy[sprptr[hitsprite]->picnum]>>1)) );
               if( (xydist > 768) || (zdist > 50) ) {
                    break;
               }
               if( playerhit(hitsprite, &pnum) ) {
                    playerpainsound(pnum);
                    playerwoundplayer(pnum,snum,5);
               }
               else {
                    rv=damagesprite(hitsprite,tekgundamage(guntype,x,y,z,hitsprite));
                    if( rv == 1 ) {
                         killscore(hitsprite, snum, guntype);
                    }
               }
          }
          break;
     case GUN6FLAG:
          ammo6[snum]--;
          if( ammo6[snum] < 0 ) {
               ammo6[snum]=0;
               break;
          }
          daang2=daang;
          daz2=(100-dahoriz)*2000;
          hitscan(x,y,z,dasectnum,sintable[(daang2+2560)&2047],
                  sintable[(daang2+2048)&2047],daz2,
                  &hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,CLIPMASK1);
          if( (hitsprite >= 0) && (sprptr[hitsprite]->statnum < MAXSTATUS)) {
               xydist=klabs(posx[snum]-sprptr[hitsprite]->x)+klabs(posy[snum]-sprptr[hitsprite]->y);
               zdist=klabs( (posz[snum]>>8)-((sprptr[hitsprite]->z>>8)-(tilesizy[sprptr[hitsprite]->picnum]>>1)) );
               if( (xydist > 2560) || (zdist > 576) ) {
                    break;
               }
               if( playerhit(hitsprite, &pnum) ) {
                    if( playervirus(pnum, FIREPIC) ) {
                         playerwoundplayer(pnum,snum,6);
                    }
               }
               else {
                    attachvirus(hitsprite, FIREPIC);
               }
          }
          break;
     case GUN7FLAG:
          ammo7[snum]--;
          if( ammo7[snum] < 0 ) {
               ammo7[snum]=0;
               break;
          }
          for (i=0 ; i < 3 ; i++) {
               cx=x+(sintable[(daang+2560+256)&2047]>>6);
               cy=y+(sintable[(daang+2048+256)&2047]>>6);
               j=jsinsertsprite(dasectnum,ROCKETPROJECTILESTAT);
               if (j != -1) {
                    fillsprite(j,cx,cy,z+(4<<8),128,-24,0,12,16,16,0,0,335,daang,
                         sintable[(daang+2560-11)&2047]>>(2+i),
                         sintable[(daang+2048-11)&2047]>>(2+i),
                         (100-dahoriz)-(i<<2),
                         snum,dasectnum,ROCKETPROJECTILESTAT,0,0,-1);
               sprptr[j]->owner=snum;
               }
          }
          break;
     case GUN8FLAG:
          ammo8[snum]--;
          if( ammo8[snum] < 0 ) {
               ammo8[snum]=0;
               break;
          }
          cx=x+(sintable[(daang+2560)&2047]>>6);
          cy=y+(sintable[(daang+2048)&2047]>>6);
          j=jsinsertsprite(dasectnum, MATRIXPROJECTILESTAT);
          if( j != -1 ) {
               fillsprite(j,cx,cy,z+(5<<8),128,-35,0,12,16,16,0,0,3765,daang,
                    sintable[(daang+2560)&2047]>>5,
                    sintable[(daang+2048)&2047]>>5,
                    100-dahoriz,snum,dasectnum,MATRIXPROJECTILESTAT,0,0,-1);
               sprptr[j]->owner=snum;
          }
          break;
     default:
          break;
    }

    if( guntype != GUN1FLAG )
          playergunshot(snum);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
movw %r8w, %ax
movb 0x18(%rbp), %r8b
movw 0x10(%rbp), %r8w
movw %di, -0x22(%rbp)
movl %esi, -0x28(%rbp)
movl %edx, -0x2c(%rbp)
movl %ecx, -0x30(%rbp)
movw %ax, -0x32(%rbp)
movl %r9d, -0x38(%rbp)
movswq -0x22(%rbp), %rcx
leaq 0x11b5b0(%rip), %rax    # 0x12d910
cmpl $0x0, (%rax,%rcx,4)
jg 0x1236b
jmp 0x13b08
movb 0x18(%rbp), %al
incb %al
movb %al, 0x18(%rbp)
movsbl 0x18(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0xc8(%rbp)
subl $0x7, %eax
ja 0x13af4
movq -0xc8(%rbp), %rax
leaq 0xc6f97(%rip), %rcx     # 0xd9330
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0x28(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0xa00, %ecx            # imm = 0xA00
addl $0x80, %ecx
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b67bb(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x2c(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0x800, %ecx            # imm = 0x800
addl $0x80, %ecx
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b678c(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl $0x2c6, %esi            # imm = 0x2C6
movswl 0x10(%rbp), %edi
callq 0x2abd0
cwtl
movl %eax, -0x64(%rbp)
cmpl $-0x1, -0x64(%rbp)
je 0x125a8
movslq -0x64(%rbp), %rcx
leaq 0x4646b9(%rip), %rax    # 0x476ae0
imulq $0x2c, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x90(%rbp)
movl -0x58(%rbp), %ecx
movq -0x90(%rbp), %rax
movl %ecx, (%rax)
movl -0x5c(%rbp), %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x30(%rbp), %ecx
movq -0x90(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x90(%rbp), %rax
movw $0x82, 0xc(%rax)
movq -0x90(%rbp), %rax
movb $-0x10, 0x10(%rax)
movq -0x90(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0x90(%rbp), %rax
movb $0xc, 0x12(%rax)
movq -0x90(%rbp), %rax
movb $0x10, 0x14(%rax)
movq -0x90(%rbp), %rax
movb $0x10, 0x15(%rax)
movq -0x90(%rbp), %rax
movb $0x0, 0x16(%rax)
movq -0x90(%rbp), %rax
movb $0x0, 0x17(%rax)
movq -0x90(%rbp), %rax
movw $0x534, 0xe(%rax)       # imm = 0x534
movw -0x32(%rbp), %cx
movq -0x90(%rbp), %rax
movw %cx, 0x1c(%rax)
movswl -0x32(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
subl $0xb, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b6694(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0x90(%rbp), %rax
movw %cx, 0x20(%rax)
movswl -0x32(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
subl $0xb, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b6664(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0x90(%rbp), %rax
movw %cx, 0x22(%rax)
movl $0x64, %eax
subl -0x38(%rbp), %eax
movw %ax, %cx
movq -0x90(%rbp), %rax
movw %cx, 0x24(%rax)
movswl -0x22(%rbp), %eax
addl $0x4000, %eax           # imm = 0x4000
movw %ax, %cx
movq -0x90(%rbp), %rax
movw %cx, 0x1e(%rax)
movq -0x90(%rbp), %rax
movw $0x0, 0x26(%rax)
movq -0x90(%rbp), %rax
movw $0x0, 0x28(%rax)
movq -0x90(%rbp), %rax
movw $0xffff, 0x2a(%rax)     # imm = 0xFFFF
movq -0x90(%rbp), %rdi
movslq -0x64(%rbp), %rax
leaq 0x123689(%rip), %rsi    # 0x135c20
imulq $0xc, %rax, %rax
addq %rax, %rsi
movl $0x3, %edx
callq 0x8c070
jmp 0x13af6
movswq -0x22(%rbp), %rcx
leaq 0x165c07(%rip), %rax    # 0x1781c0
movw (%rax,%rcx,2), %dx
addw $-0x1, %dx
leaq 0x165bf8(%rip), %rax    # 0x1781c0
movw %dx, (%rax,%rcx,2)
movswq -0x22(%rbp), %rcx
leaq 0x165be8(%rip), %rax    # 0x1781c0
movswl (%rax,%rcx,2), %eax
cmpl $0x0, %eax
jge 0x125f8
movswq -0x22(%rbp), %rcx
leaq 0x165bd3(%rip), %rax    # 0x1781c0
movw $0x0, (%rax,%rcx,2)
jmp 0x13af6
movw -0x32(%rbp), %ax
movw %ax, -0x40(%rbp)
movl $0x64, %eax
subl -0x38(%rbp), %eax
imull $0x7d0, %eax, %eax      # imm = 0x7D0
movl %eax, -0x68(%rbp)
movl -0x28(%rbp), %edi
movl -0x2c(%rbp), %esi
movl -0x30(%rbp), %edx
movw 0x10(%rbp), %cx
movswl -0x40(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %r8
leaq 0x5b654a(%rip), %rax    # 0x5c8b80
movswl (%rax,%r8,2), %r8d
movswl -0x40(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %r9
leaq 0x5b652d(%rip), %rax    # 0x5c8b80
movswl (%rax,%r9,2), %r9d
movl -0x68(%rbp), %r12d
leaq -0x3a(%rbp), %r15
leaq -0x3c(%rbp), %r14
leaq -0x3e(%rbp), %rbx
leaq -0x6c(%rbp), %r11
leaq -0x70(%rbp), %r10
leaq -0x74(%rbp), %rax
movswl %cx, %ecx
movl %r12d, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %rax, 0x30(%rsp)
movl $0x1000040, 0x38(%rsp)  # imm = 0x1000040
callq 0x6ab30
movswl -0x3e(%rbp), %eax
cmpl $0x0, %eax
jl 0x128cd
movswq -0x3e(%rbp), %rcx
leaq 0x167b21(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movswl 0x1a(%rax), %eax
cmpl $0x400, %eax            # imm = 0x400
jge 0x128cd
movswl -0x3e(%rbp), %edi
leaq -0x84(%rbp), %rsi
callq 0x31e70
cmpl $0x0, %eax
je 0x1270e
movl -0x84(%rbp), %edi
callq 0x122a0
movl -0x84(%rbp), %eax
movl $0x2, %edx
movswl %ax, %edi
movswl -0x22(%rbp), %esi
callq 0x11ff0
jmp 0x128cb
movswl -0x3e(%rbp), %eax
movl %eax, -0xcc(%rbp)
movsbl 0x18(%rbp), %edi
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movswl -0x3e(%rbp), %r8d
callq 0x11d70
movl -0xcc(%rbp), %edi
movl %eax, %esi
callq 0x30230
movl %eax, -0x80(%rbp)
cmpl $0x1, -0x80(%rbp)
jne 0x128aa
cmpl $0x0, 0x165bd0(%rip)    # 0x178320
je 0x128aa
movswl -0x3e(%rbp), %edi
movl -0x74(%rbp), %esi
movswl -0x32(%rbp), %edx
callq 0x2e8c0
cmpl $0x0, %eax
je 0x128a8
movswq -0x3e(%rbp), %rcx
leaq 0x167a65(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movswl 0xc(%rax), %ecx
andl $0xfefe, %ecx           # imm = 0xFEFE
movw %cx, 0xc(%rax)
movl -0x28(%rbp), %edi
movl -0x2c(%rbp), %esi
movl -0x30(%rbp), %edx
movw 0x10(%rbp), %cx
movswl -0x40(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %r8
leaq 0x5b63ce(%rip), %rax    # 0x5c8b80
movswl (%rax,%r8,2), %r8d
movswl -0x40(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %r9
leaq 0x5b63b1(%rip), %rax    # 0x5c8b80
movswl (%rax,%r9,2), %r9d
movl -0x68(%rbp), %r12d
leaq -0x42(%rbp), %r15
leaq -0x44(%rbp), %r14
leaq -0x46(%rbp), %rbx
leaq -0x4c(%rbp), %r11
leaq -0x50(%rbp), %r10
leaq -0x54(%rbp), %rax
movswl %cx, %ecx
movl %r12d, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %rax, 0x30(%rsp)
movl $0x1000040, 0x38(%rsp)  # imm = 0x1000040
callq 0x6ab30
movswl -0x44(%rbp), %eax
cmpl $-0x1, %eax
je 0x128a6
movswl -0x44(%rbp), %edi
movswq -0x3e(%rbp), %rcx
leaq 0x1679a5(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movl (%rax), %esi
movswq -0x3e(%rbp), %rcx
leaq 0x167993(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movl 0x4(%rax), %edx
movswq -0x3e(%rbp), %rcx
leaq 0x167980(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movl 0x8(%rax), %ecx
movswq -0x3e(%rbp), %r8
leaq 0x16796d(%rip), %rax    # 0x17a1e0
movq (%rax,%r8,8), %rax
movw 0x18(%rax), %r8w
movw -0x40(%rbp), %r9w
movl -0x4c(%rbp), %r11d
movl -0x50(%rbp), %r10d
movl -0x54(%rbp), %eax
movswl %r8w, %r8d
movswl %r9w, %r9d
movl %r11d, (%rsp)
movl %r10d, 0x8(%rsp)
movl %eax, 0x10(%rsp)
callq 0x2e510
jmp 0x128a8
jmp 0x128aa
cmpl $0x1, -0x80(%rbp)
jne 0x128c7
movw -0x3e(%rbp), %cx
movw -0x22(%rbp), %ax
movswl %cx, %edi
movswl %ax, %esi
movsbl 0x18(%rbp), %edx
callq 0x12120
jmp 0x128c9
jmp 0x128cb
jmp 0x128cd
movswl -0x3c(%rbp), %eax
cmpl $0x0, %eax
jl 0x12ab2
movl $0x3, %esi
movswl -0x3a(%rbp), %edi
callq 0x2abd0
cwtl
movl %eax, -0x64(%rbp)
cmpl $-0x1, -0x64(%rbp)
je 0x12ab0
movslq -0x64(%rbp), %rcx
leaq 0x4641df(%rip), %rax    # 0x476ae0
imulq $0x2c, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x98(%rbp)
movl -0x6c(%rbp), %ecx
movq -0x98(%rbp), %rax
movl %ecx, (%rax)
movl -0x70(%rbp), %ecx
movq -0x98(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x74(%rbp), %ecx
addl $0x800, %ecx            # imm = 0x800
movq -0x98(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x98(%rbp), %rax
movw $0x2, 0xc(%rax)
movq -0x98(%rbp), %rax
movb $0x0, 0x10(%rax)
movq -0x98(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0x98(%rbp), %rax
movb $0x20, 0x12(%rax)
movq -0x98(%rbp), %rax
movb $0x16, 0x14(%rax)
movq -0x98(%rbp), %rax
movb $0x16, 0x15(%rax)
movq -0x98(%rbp), %rax
movb $0x0, 0x16(%rax)
movq -0x98(%rbp), %rax
movb $0x0, 0x17(%rax)
movq -0x98(%rbp), %rax
movw $0x1ab, 0xe(%rax)       # imm = 0x1AB
movw -0x32(%rbp), %cx
movq -0x98(%rbp), %rax
movw %cx, 0x1c(%rax)
movq -0x98(%rbp), %rax
movw $0x0, 0x20(%rax)
movq -0x98(%rbp), %rax
movw $0x0, 0x22(%rax)
movq -0x98(%rbp), %rax
movw $0x0, 0x24(%rax)
movswl -0x22(%rbp), %eax
addl $0x4000, %eax           # imm = 0x4000
movw %ax, %cx
movq -0x98(%rbp), %rax
movw %cx, 0x1e(%rax)
movq -0x98(%rbp), %rax
movw $0x3f, 0x26(%rax)
movq -0x98(%rbp), %rax
movw $0x0, 0x28(%rax)
movq -0x98(%rbp), %rax
movw $0xffff, 0x2a(%rax)     # imm = 0xFFFF
movq -0x98(%rbp), %rdi
movslq -0x64(%rbp), %rax
leaq 0x1231f8(%rip), %rsi    # 0x135c20
imulq $0xc, %rax, %rax
addq %rax, %rsi
movl $0x3, %edx
callq 0x8c070
movl -0x64(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0x200, %ecx            # imm = 0x200
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b612a(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
imull $0x3, %ecx, %ecx
shll $0x4, %ecx
xorl %esi, %esi
subl %ecx, %esi
movswq -0x32(%rbp), %rdx
leaq 0x5b6110(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
imull $0x3, %ecx, %ecx
shll $0x4, %ecx
xorl %edx, %edx
subl %ecx, %edx
xorl %ecx, %ecx
movl $0x400, %r9d            # imm = 0x400
movswl %ax, %edi
movl %r9d, %r8d
movl $0x1, (%rsp)
callq 0x286d0
movl -0x6c(%rbp), %esi
movl -0x70(%rbp), %edx
movl $0x55, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x12ab2
jmp 0x13af6
movswq -0x22(%rbp), %rcx
leaq 0x16571d(%rip), %rax    # 0x1781e0
movw (%rax,%rcx,2), %dx
addw $-0x1, %dx
leaq 0x16570e(%rip), %rax    # 0x1781e0
movw %dx, (%rax,%rcx,2)
movswq -0x22(%rbp), %rcx
leaq 0x1656fe(%rip), %rax    # 0x1781e0
movswl (%rax,%rcx,2), %eax
cmpl $0x0, %eax
jge 0x12b02
movswq -0x22(%rbp), %rcx
leaq 0x1656e9(%rip), %rax    # 0x1781e0
movw $0x0, (%rax,%rcx,2)
jmp 0x13af6
movl -0x28(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0xa00, %ecx            # imm = 0xA00
addl $0x100, %ecx            # imm = 0x100
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b605b(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x2c(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0x800, %ecx            # imm = 0x800
addl $0x100, %ecx            # imm = 0x100
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b602c(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x5c(%rbp)
movswq -0x22(%rbp), %rcx
leaq 0x167254(%rip), %rax    # 0x179dc0
cmpl $0x0, (%rax,%rcx,4)
jle 0x12d38
movl $0x2ca, %esi            # imm = 0x2CA
movswl 0x10(%rbp), %edi
callq 0x2abd0
cwtl
movl %eax, -0x64(%rbp)
cmpl $-0x1, -0x64(%rbp)
je 0x12d33
movslq -0x64(%rbp), %rcx
leaq 0x463f43(%rip), %rax    # 0x476ae0
imulq $0x2c, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa0(%rbp)
movl -0x58(%rbp), %ecx
movq -0xa0(%rbp), %rax
movl %ecx, (%rax)
movl -0x5c(%rbp), %ecx
movq -0xa0(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x30(%rbp), %ecx
addl $0x400, %ecx            # imm = 0x400
movq -0xa0(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0xa0(%rbp), %rax
movw $0x80, 0xc(%rax)
movq -0xa0(%rbp), %rax
movb $-0x10, 0x10(%rax)
movq -0xa0(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0xa0(%rbp), %rax
movb $0x20, 0x12(%rax)
movq -0xa0(%rbp), %rax
movb $0x10, 0x14(%rax)
movq -0xa0(%rbp), %rax
movb $0x10, 0x15(%rax)
movq -0xa0(%rbp), %rax
movb $0x0, 0x16(%rax)
movq -0xa0(%rbp), %rax
movb $0x0, 0x17(%rax)
movq -0xa0(%rbp), %rax
movw $0x13a, 0xe(%rax)       # imm = 0x13A
movw -0x32(%rbp), %cx
movq -0xa0(%rbp), %rax
movw %cx, 0x1c(%rax)
movswl -0x32(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
subl $0xb, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b5f18(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0xa0(%rbp), %rax
movw %cx, 0x20(%rax)
movswl -0x32(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
subl $0xb, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b5ee8(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0xa0(%rbp), %rax
movw %cx, 0x22(%rax)
movl $0x64, %eax
subl -0x38(%rbp), %eax
movw %ax, %cx
movq -0xa0(%rbp), %rax
movw %cx, 0x24(%rax)
movw -0x22(%rbp), %cx
movq -0xa0(%rbp), %rax
movw %cx, 0x1e(%rax)
movq -0xa0(%rbp), %rax
movw $0x0, 0x26(%rax)
movq -0xa0(%rbp), %rax
movw $0x0, 0x28(%rax)
movq -0xa0(%rbp), %rax
movw $0xffff, 0x2a(%rax)     # imm = 0xFFFF
movq -0xa0(%rbp), %rdi
movslq -0x64(%rbp), %rax
leaq 0x122f15(%rip), %rsi    # 0x135c20
imulq $0xc, %rax, %rax
addq %rax, %rsi
movl $0x3, %edx
callq 0x8c070
movw -0x22(%rbp), %cx
movslq -0x64(%rbp), %rdx
leaq 0x1674b5(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x1e(%rax)
jmp 0x12ef7
movl $0x2cc, %esi            # imm = 0x2CC
movswl 0x10(%rbp), %edi
callq 0x2abd0
cwtl
movl %eax, -0x64(%rbp)
cmpl $-0x1, -0x64(%rbp)
je 0x12ef5
movslq -0x64(%rbp), %rcx
leaq 0x463d81(%rip), %rax    # 0x476ae0
imulq $0x2c, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xa8(%rbp)
movl -0x58(%rbp), %ecx
movq -0xa8(%rbp), %rax
movl %ecx, (%rax)
movl -0x5c(%rbp), %ecx
movq -0xa8(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x30(%rbp), %ecx
addl $0x400, %ecx            # imm = 0x400
movq -0xa8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0xa8(%rbp), %rax
movw $0x80, 0xc(%rax)
movq -0xa8(%rbp), %rax
movb $-0x10, 0x10(%rax)
movq -0xa8(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0xa8(%rbp), %rax
movb $0x20, 0x12(%rax)
movq -0xa8(%rbp), %rax
movb $0x10, 0x14(%rax)
movq -0xa8(%rbp), %rax
movb $0x10, 0x15(%rax)
movq -0xa8(%rbp), %rax
movb $0x0, 0x16(%rax)
movq -0xa8(%rbp), %rax
movb $0x0, 0x17(%rax)
movq -0xa8(%rbp), %rax
movw $0x13a, 0xe(%rax)       # imm = 0x13A
movw -0x32(%rbp), %cx
movq -0xa8(%rbp), %rax
movw %cx, 0x1c(%rax)
movswl -0x32(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
subl $0xb, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b5d56(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0xa8(%rbp), %rax
movw %cx, 0x20(%rax)
movswl -0x32(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
subl $0xb, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b5d26(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0xa8(%rbp), %rax
movw %cx, 0x22(%rax)
movl $0x64, %eax
subl -0x38(%rbp), %eax
movw %ax, %cx
movq -0xa8(%rbp), %rax
movw %cx, 0x24(%rax)
movw -0x22(%rbp), %cx
movq -0xa8(%rbp), %rax
movw %cx, 0x1e(%rax)
movq -0xa8(%rbp), %rax
movw $0x0, 0x26(%rax)
movq -0xa8(%rbp), %rax
movw $0x0, 0x28(%rax)
movq -0xa8(%rbp), %rax
movw $0xffff, 0x2a(%rax)     # imm = 0xFFFF
movq -0xa8(%rbp), %rdi
movslq -0x64(%rbp), %rax
leaq 0x122d53(%rip), %rsi    # 0x135c20
imulq $0xc, %rax, %rax
addq %rax, %rsi
movl $0x3, %edx
callq 0x8c070
movw -0x22(%rbp), %cx
movslq -0x64(%rbp), %rdx
leaq 0x1672f3(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x1e(%rax)
jmp 0x12ef7
jmp 0x13af6
movswq -0x22(%rbp), %rcx
leaq 0x1652f8(%rip), %rax    # 0x178200
movw (%rax,%rcx,2), %dx
addw $-0x1, %dx
leaq 0x1652e9(%rip), %rax    # 0x178200
movw %dx, (%rax,%rcx,2)
movswq -0x22(%rbp), %rcx
leaq 0x1652d9(%rip), %rax    # 0x178200
movswl (%rax,%rcx,2), %eax
cmpl $0x0, %eax
jge 0x12f47
movswq -0x22(%rbp), %rcx
leaq 0x1652c4(%rip), %rax    # 0x178200
movw $0x0, (%rax,%rcx,2)
jmp 0x13af6
movl -0x28(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0xa00, %ecx            # imm = 0xA00
addl $0x80, %ecx
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b5c16(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x2c(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0x800, %ecx            # imm = 0x800
addl $0x80, %ecx
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b5be7(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl $0x2c8, %esi            # imm = 0x2C8
movswl 0x10(%rbp), %edi
callq 0x2abd0
cwtl
movl %eax, -0x64(%rbp)
cmpl $-0x1, -0x64(%rbp)
je 0x1317a
movslq -0x64(%rbp), %rcx
leaq 0x463b14(%rip), %rax    # 0x476ae0
imulq $0x2c, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xb0(%rbp)
movl -0x58(%rbp), %ecx
movq -0xb0(%rbp), %rax
movl %ecx, (%rax)
movl -0x5c(%rbp), %ecx
movq -0xb0(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x30(%rbp), %ecx
addl $0x500, %ecx            # imm = 0x500
movq -0xb0(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0xb0(%rbp), %rax
movw $0x80, 0xc(%rax)
movq -0xb0(%rbp), %rax
movb $-0x23, 0x10(%rax)
movq -0xb0(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0xb0(%rbp), %rax
movb $0xc, 0x12(%rax)
movq -0xb0(%rbp), %rax
movb $0x10, 0x14(%rax)
movq -0xb0(%rbp), %rax
movb $0x10, 0x15(%rax)
movq -0xb0(%rbp), %rax
movb $0x0, 0x16(%rax)
movq -0xb0(%rbp), %rax
movb $0x0, 0x17(%rax)
movq -0xb0(%rbp), %rax
movw $0x152, 0xe(%rax)       # imm = 0x152
movw -0x32(%rbp), %cx
movq -0xb0(%rbp), %rax
movw %cx, 0x1c(%rax)
movswl -0x32(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
subl $0x6, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b5ae9(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0xb0(%rbp), %rax
movw %cx, 0x20(%rax)
movswl -0x32(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
subl $0x6, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b5ab9(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0xb0(%rbp), %rax
movw %cx, 0x22(%rax)
movl $0x64, %eax
subl -0x38(%rbp), %eax
movw %ax, %cx
movq -0xb0(%rbp), %rax
movw %cx, 0x24(%rax)
movw -0x22(%rbp), %cx
movq -0xb0(%rbp), %rax
movw %cx, 0x1e(%rax)
movq -0xb0(%rbp), %rax
movw $0x0, 0x26(%rax)
movq -0xb0(%rbp), %rax
movw $0x0, 0x28(%rax)
movq -0xb0(%rbp), %rax
movw $0xffff, 0x2a(%rax)     # imm = 0xFFFF
movq -0xb0(%rbp), %rdi
movslq -0x64(%rbp), %rax
leaq 0x122ae6(%rip), %rsi    # 0x135c20
imulq $0xc, %rax, %rax
addq %rax, %rsi
movl $0x3, %edx
callq 0x8c070
movw -0x22(%rbp), %cx
movslq -0x64(%rbp), %rdx
leaq 0x167086(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x1e(%rax)
movl -0x58(%rbp), %esi
movl -0x5c(%rbp), %edx
movl $0x55, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x13af6
movw -0x32(%rbp), %ax
movw %ax, -0x40(%rbp)
movl $0x64, %eax
subl -0x38(%rbp), %eax
imull $0x7d0, %eax, %eax      # imm = 0x7D0
movl %eax, -0x68(%rbp)
movl -0x28(%rbp), %edi
movl -0x2c(%rbp), %esi
movl -0x30(%rbp), %edx
movw 0x10(%rbp), %cx
movswl -0x40(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %r8
leaq 0x5b59c3(%rip), %rax    # 0x5c8b80
movswl (%rax,%r8,2), %r8d
movswl -0x40(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %r9
leaq 0x5b59a6(%rip), %rax    # 0x5c8b80
movswl (%rax,%r9,2), %r9d
movl -0x68(%rbp), %r12d
leaq -0x3a(%rbp), %r15
leaq -0x3c(%rbp), %r14
leaq -0x3e(%rbp), %rbx
leaq -0x6c(%rbp), %r11
leaq -0x70(%rbp), %r10
leaq -0x74(%rbp), %rax
movswl %cx, %ecx
movl %r12d, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %rax, 0x30(%rsp)
movl $0x1000040, 0x38(%rsp)  # imm = 0x1000040
callq 0x6ab30
movswl -0x3e(%rbp), %eax
cmpl $0x0, %eax
jl 0x133ae
movswq -0x3e(%rbp), %rcx
leaq 0x166f9a(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movswl 0x1a(%rax), %eax
cmpl $0x400, %eax            # imm = 0x400
jge 0x133ae
movswq -0x22(%rbp), %rcx
leaq 0x11a5eb(%rip), %rax    # 0x12d850
movl (%rax,%rcx,4), %edi
movswq -0x3e(%rbp), %rcx
leaq 0x166f6c(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
subl (%rax), %edi
callq 0x13b20
movl %eax, -0xd0(%rbp)
movswq -0x22(%rbp), %rcx
leaq 0x11a5ff(%rip), %rax    # 0x12d890
movl (%rax,%rcx,4), %edi
movswq -0x3e(%rbp), %rcx
leaq 0x166f40(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
subl 0x4(%rax), %edi
callq 0x13b20
movl %eax, %ecx
movl -0xd0(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x78(%rbp)
movswq -0x22(%rbp), %rcx
leaq 0x11a60b(%rip), %rax    # 0x12d8d0
movl (%rax,%rcx,4), %edi
sarl $0x8, %edi
movswq -0x3e(%rbp), %rcx
leaq 0x166f09(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movl 0x8(%rax), %eax
sarl $0x8, %eax
movswq -0x3e(%rbp), %rdx
leaq 0x166ef3(%rip), %rcx    # 0x17a1e0
movq (%rcx,%rdx,8), %rcx
movswq 0xe(%rcx), %rdx
leaq 0x5e6513(%rip), %rcx    # 0x5f9810
movswl (%rcx,%rdx,2), %ecx
sarl %ecx
subl %ecx, %eax
subl %eax, %edi
callq 0x13b20
movl %eax, -0x7c(%rbp)
cmpl $0x300, -0x78(%rbp)     # imm = 0x300
jg 0x1331e
cmpl $0x32, -0x7c(%rbp)
jle 0x13323
jmp 0x13af6
movswl -0x3e(%rbp), %edi
leaq -0x84(%rbp), %rsi
callq 0x31e70
cmpl $0x0, %eax
je 0x1335c
movl -0x84(%rbp), %edi
callq 0x122a0
movl -0x84(%rbp), %eax
movl $0x5, %edx
movswl %ax, %edi
movswl -0x22(%rbp), %esi
callq 0x11ff0
jmp 0x133ac
movswl -0x3e(%rbp), %eax
movl %eax, -0xd4(%rbp)
movsbl 0x18(%rbp), %edi
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movswl -0x3e(%rbp), %r8d
callq 0x11d70
movl -0xd4(%rbp), %edi
movl %eax, %esi
callq 0x30230
movl %eax, -0x80(%rbp)
cmpl $0x1, -0x80(%rbp)
jne 0x133aa
movw -0x3e(%rbp), %cx
movw -0x22(%rbp), %ax
movswl %cx, %edi
movswl %ax, %esi
movsbl 0x18(%rbp), %edx
callq 0x12120
jmp 0x133ac
jmp 0x133ae
jmp 0x13af6
movswq -0x22(%rbp), %rcx
leaq 0x164e81(%rip), %rax    # 0x178240
movw (%rax,%rcx,2), %dx
addw $-0x1, %dx
leaq 0x164e72(%rip), %rax    # 0x178240
movw %dx, (%rax,%rcx,2)
movswq -0x22(%rbp), %rcx
leaq 0x164e62(%rip), %rax    # 0x178240
movswl (%rax,%rcx,2), %eax
cmpl $0x0, %eax
jge 0x133fe
movswq -0x22(%rbp), %rcx
leaq 0x164e4d(%rip), %rax    # 0x178240
movw $0x0, (%rax,%rcx,2)
jmp 0x13af6
movw -0x32(%rbp), %ax
movw %ax, -0x40(%rbp)
movl $0x64, %eax
subl -0x38(%rbp), %eax
imull $0x7d0, %eax, %eax      # imm = 0x7D0
movl %eax, -0x68(%rbp)
movl -0x28(%rbp), %edi
movl -0x2c(%rbp), %esi
movl -0x30(%rbp), %edx
movw 0x10(%rbp), %cx
movswl -0x40(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %r8
leaq 0x5b5744(%rip), %rax    # 0x5c8b80
movswl (%rax,%r8,2), %r8d
movswl -0x40(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %r9
leaq 0x5b5727(%rip), %rax    # 0x5c8b80
movswl (%rax,%r9,2), %r9d
movl -0x68(%rbp), %r12d
leaq -0x3a(%rbp), %r15
leaq -0x3c(%rbp), %r14
leaq -0x3e(%rbp), %rbx
leaq -0x6c(%rbp), %r11
leaq -0x70(%rbp), %r10
leaq -0x74(%rbp), %rax
movswl %cx, %ecx
movl %r12d, (%rsp)
movq %r15, 0x8(%rsp)
movq %r14, 0x10(%rsp)
movq %rbx, 0x18(%rsp)
movq %r11, 0x20(%rsp)
movq %r10, 0x28(%rsp)
movq %rax, 0x30(%rsp)
movl $0x1000040, 0x38(%rsp)  # imm = 0x1000040
callq 0x6ab30
movswl -0x3e(%rbp), %eax
cmpl $0x0, %eax
jl 0x135fb
movswq -0x3e(%rbp), %rcx
leaq 0x166d1b(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movswl 0x1a(%rax), %eax
cmpl $0x400, %eax            # imm = 0x400
jge 0x135fb
movswq -0x22(%rbp), %rcx
leaq 0x11a36c(%rip), %rax    # 0x12d850
movl (%rax,%rcx,4), %edi
movswq -0x3e(%rbp), %rcx
leaq 0x166ced(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
subl (%rax), %edi
callq 0x13b20
movl %eax, -0xd8(%rbp)
movswq -0x22(%rbp), %rcx
leaq 0x11a380(%rip), %rax    # 0x12d890
movl (%rax,%rcx,4), %edi
movswq -0x3e(%rbp), %rcx
leaq 0x166cc1(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
subl 0x4(%rax), %edi
callq 0x13b20
movl %eax, %ecx
movl -0xd8(%rbp), %eax
addl %ecx, %eax
movl %eax, -0x78(%rbp)
movswq -0x22(%rbp), %rcx
leaq 0x11a38c(%rip), %rax    # 0x12d8d0
movl (%rax,%rcx,4), %edi
sarl $0x8, %edi
movswq -0x3e(%rbp), %rcx
leaq 0x166c8a(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movl 0x8(%rax), %eax
sarl $0x8, %eax
movswq -0x3e(%rbp), %rdx
leaq 0x166c74(%rip), %rcx    # 0x17a1e0
movq (%rcx,%rdx,8), %rcx
movswq 0xe(%rcx), %rdx
leaq 0x5e6294(%rip), %rcx    # 0x5f9810
movswl (%rcx,%rdx,2), %ecx
sarl %ecx
subl %ecx, %eax
subl %eax, %edi
callq 0x13b20
movl %eax, -0x7c(%rbp)
cmpl $0xa00, -0x78(%rbp)     # imm = 0xA00
jg 0x135a0
cmpl $0x240, -0x7c(%rbp)     # imm = 0x240
jle 0x135a5
jmp 0x13af6
movswl -0x3e(%rbp), %edi
leaq -0x84(%rbp), %rsi
callq 0x31e70
cmpl $0x0, %eax
je 0x135eb
movl -0x84(%rbp), %eax
movl $0x1c2, %esi            # imm = 0x1C2
movswl %ax, %edi
callq 0x2ed80
cmpl $0x0, %eax
je 0x135e9
movl -0x84(%rbp), %eax
movl $0x6, %edx
movswl %ax, %edi
movswl -0x22(%rbp), %esi
callq 0x11ff0
jmp 0x135f9
movl $0x1c2, %esi            # imm = 0x1C2
movswl -0x3e(%rbp), %edi
callq 0x2efc0
jmp 0x135fb
jmp 0x13af6
movswq -0x22(%rbp), %rcx
leaq 0x164c54(%rip), %rax    # 0x178260
movw (%rax,%rcx,2), %dx
addw $-0x1, %dx
leaq 0x164c45(%rip), %rax    # 0x178260
movw %dx, (%rax,%rcx,2)
movswq -0x22(%rbp), %rcx
leaq 0x164c35(%rip), %rax    # 0x178260
movswl (%rax,%rcx,2), %eax
cmpl $0x0, %eax
jge 0x1364b
movswq -0x22(%rbp), %rcx
leaq 0x164c20(%rip), %rax    # 0x178260
movw $0x0, (%rax,%rcx,2)
jmp 0x13af6
movl $0x0, -0x60(%rbp)
cmpl $0x3, -0x60(%rbp)
jge 0x13899
movl -0x28(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0xa00, %ecx            # imm = 0xA00
addl $0x100, %ecx            # imm = 0x100
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b5501(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x2c(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0x800, %ecx            # imm = 0x800
addl $0x100, %ecx            # imm = 0x100
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b54d2(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl $0x2ce, %esi            # imm = 0x2CE
movswl 0x10(%rbp), %edi
callq 0x2abd0
cwtl
movl %eax, -0x64(%rbp)
cmpl $-0x1, -0x64(%rbp)
je 0x13889
movslq -0x64(%rbp), %rcx
leaq 0x4633ff(%rip), %rax    # 0x476ae0
imulq $0x2c, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xb8(%rbp)
movl -0x58(%rbp), %ecx
movq -0xb8(%rbp), %rax
movl %ecx, (%rax)
movl -0x5c(%rbp), %ecx
movq -0xb8(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x30(%rbp), %ecx
addl $0x400, %ecx            # imm = 0x400
movq -0xb8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0xb8(%rbp), %rax
movw $0x80, 0xc(%rax)
movq -0xb8(%rbp), %rax
movb $-0x18, 0x10(%rax)
movq -0xb8(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0xb8(%rbp), %rax
movb $0xc, 0x12(%rax)
movq -0xb8(%rbp), %rax
movb $0x10, 0x14(%rax)
movq -0xb8(%rbp), %rax
movb $0x10, 0x15(%rax)
movq -0xb8(%rbp), %rax
movb $0x0, 0x16(%rax)
movq -0xb8(%rbp), %rax
movb $0x0, 0x17(%rax)
movq -0xb8(%rbp), %rax
movw $0x14f, 0xe(%rax)       # imm = 0x14F
movw -0x32(%rbp), %cx
movq -0xb8(%rbp), %rax
movw %cx, 0x1c(%rax)
movswl -0x32(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
subl $0xb, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b53d4(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
movl -0x60(%rbp), %ecx
addl $0x2, %ecx
sarl %cl, %eax
movw %ax, %cx
movq -0xb8(%rbp), %rax
movw %cx, 0x20(%rax)
movswl -0x32(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
subl $0xb, %eax
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b539f(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
movl -0x60(%rbp), %ecx
addl $0x2, %ecx
sarl %cl, %eax
movw %ax, %cx
movq -0xb8(%rbp), %rax
movw %cx, 0x22(%rax)
movl $0x64, %eax
subl -0x38(%rbp), %eax
movl -0x60(%rbp), %ecx
shll $0x2, %ecx
subl %ecx, %eax
movw %ax, %cx
movq -0xb8(%rbp), %rax
movw %cx, 0x24(%rax)
movw -0x22(%rbp), %cx
movq -0xb8(%rbp), %rax
movw %cx, 0x1e(%rax)
movq -0xb8(%rbp), %rax
movw $0x0, 0x26(%rax)
movq -0xb8(%rbp), %rax
movw $0x0, 0x28(%rax)
movq -0xb8(%rbp), %rax
movw $0xffff, 0x2a(%rax)     # imm = 0xFFFF
movq -0xb8(%rbp), %rdi
movslq -0x64(%rbp), %rax
leaq 0x1223bf(%rip), %rsi    # 0x135c20
imulq $0xc, %rax, %rax
addq %rax, %rsi
movl $0x3, %edx
callq 0x8c070
movw -0x22(%rbp), %cx
movslq -0x64(%rbp), %rdx
leaq 0x16695f(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x1e(%rax)
jmp 0x1388b
movl -0x60(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x60(%rbp)
jmp 0x13652
jmp 0x13af6
movswq -0x22(%rbp), %rcx
leaq 0x1649d6(%rip), %rax    # 0x178280
movw (%rax,%rcx,2), %dx
addw $-0x1, %dx
leaq 0x1649c7(%rip), %rax    # 0x178280
movw %dx, (%rax,%rcx,2)
movswq -0x22(%rbp), %rcx
leaq 0x1649b7(%rip), %rax    # 0x178280
movswl (%rax,%rcx,2), %eax
cmpl $0x0, %eax
jge 0x138e9
movswq -0x22(%rbp), %rcx
leaq 0x1649a2(%rip), %rax    # 0x178280
movw $0x0, (%rax,%rcx,2)
jmp 0x13af6
movl -0x28(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0xa00, %ecx            # imm = 0xA00
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b527a(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x58(%rbp)
movl -0x2c(%rbp), %eax
movswl -0x32(%rbp), %ecx
addl $0x800, %ecx            # imm = 0x800
andl $0x7ff, %ecx            # imm = 0x7FF
movslq %ecx, %rdx
leaq 0x5b5251(%rip), %rcx    # 0x5c8b80
movswl (%rcx,%rdx,2), %ecx
sarl $0x6, %ecx
addl %ecx, %eax
movl %eax, -0x5c(%rbp)
movl $0x2d0, %esi            # imm = 0x2D0
movswl 0x10(%rbp), %edi
callq 0x2abd0
cwtl
movl %eax, -0x64(%rbp)
cmpl $-0x1, -0x64(%rbp)
je 0x13af2
movslq -0x64(%rbp), %rcx
leaq 0x46317e(%rip), %rax    # 0x476ae0
imulq $0x2c, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0xc0(%rbp)
movl -0x58(%rbp), %ecx
movq -0xc0(%rbp), %rax
movl %ecx, (%rax)
movl -0x5c(%rbp), %ecx
movq -0xc0(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x30(%rbp), %ecx
addl $0x500, %ecx            # imm = 0x500
movq -0xc0(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0xc0(%rbp), %rax
movw $0x80, 0xc(%rax)
movq -0xc0(%rbp), %rax
movb $-0x23, 0x10(%rax)
movq -0xc0(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0xc0(%rbp), %rax
movb $0xc, 0x12(%rax)
movq -0xc0(%rbp), %rax
movb $0x10, 0x14(%rax)
movq -0xc0(%rbp), %rax
movb $0x10, 0x15(%rax)
movq -0xc0(%rbp), %rax
movb $0x0, 0x16(%rax)
movq -0xc0(%rbp), %rax
movb $0x0, 0x17(%rax)
movq -0xc0(%rbp), %rax
movw $0xeb5, 0xe(%rax)       # imm = 0xEB5
movw -0x32(%rbp), %cx
movq -0xc0(%rbp), %rax
movw %cx, 0x1c(%rax)
movswl -0x32(%rbp), %eax
addl $0xa00, %eax            # imm = 0xA00
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b5156(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0xc0(%rbp), %rax
movw %cx, 0x20(%rax)
movswl -0x32(%rbp), %eax
addl $0x800, %eax            # imm = 0x800
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5b5129(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x5, %eax
movw %ax, %cx
movq -0xc0(%rbp), %rax
movw %cx, 0x22(%rax)
movl $0x64, %eax
subl -0x38(%rbp), %eax
movw %ax, %cx
movq -0xc0(%rbp), %rax
movw %cx, 0x24(%rax)
movw -0x22(%rbp), %cx
movq -0xc0(%rbp), %rax
movw %cx, 0x1e(%rax)
movq -0xc0(%rbp), %rax
movw $0x0, 0x26(%rax)
movq -0xc0(%rbp), %rax
movw $0x0, 0x28(%rax)
movq -0xc0(%rbp), %rax
movw $0xffff, 0x2a(%rax)     # imm = 0xFFFF
movq -0xc0(%rbp), %rdi
movslq -0x64(%rbp), %rax
leaq 0x122156(%rip), %rsi    # 0x135c20
imulq $0xc, %rax, %rax
addq %rax, %rsi
movl $0x3, %edx
callq 0x8c070
movw -0x22(%rbp), %cx
movslq -0x64(%rbp), %rdx
leaq 0x1666f6(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x1e(%rax)
jmp 0x13af6
jmp 0x13af6
movsbl 0x18(%rbp), %eax
cmpl $0x1, %eax
je 0x13b08
movswl -0x22(%rbp), %edi
callq 0x30df0
addq $0x100, %rsp            # imm = 0x100
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nopl (%rax,%rax)