// File: /workspace/github_c_makefile_star2_O0/jonof[P]jftekwar/src/tekstat.c
// Function: enemyshootgun
void
enemyshootgun(short sprnum,int x,int y,int z,short daang,int dahoriz,
              short dasectnum,char guntype)
{
     short     hitsect,hitwall,hitsprite,daang2;
     int       j,daz2,hitx,hity,hitz,discrim;
     int       ext,target,pnum;

    #ifdef PLRSPRDEBUG
     if( isaplayersprite(sprnum) ) {
          crashgame("messing w plrsprite at 16");
     }
    #endif

     ext=sprptr[sprnum]->extra;
     if( !validext(ext) ) {
          crashgame("enemyshootgun: bad ext");
     }
     target=sprXTptr[sprnum]->target;
     if( !validplayer(target) ) {
          return;
     }

     // enemy gun fire sounds
     switch (guntype) {
     case 0:
          switch( sprXTptr[ext]->attackpic ) {
          case RATATTACKPIC:
               break;
          case 3910:
               playsound(S_WH_8,x,y,0,ST_NOUPDATE);
               break;
          default:
               playsound(S_MATRIX_ATTACK2,x,y,0,ST_NOUPDATE);
               break;
          }
          break;
     case 1:
     case 2:
     case 3:
     case 4:
          switch( sprXTptr[ext]->attackpic ) {
          case 3773:
          case 3800:
          case 3805:
          case 3810:
          case 3818:
               playsound(S_MATRIX_ATTACK,x,y,0,ST_NOUPDATE);
               break;
          case 3850:
          case 3860:
          case 3890:
          case 3909:
          case 3952:
          case 4001:
               playsound(S_MATRIX_ATTACK2,x,y,0,ST_NOUPDATE);
               break;
          case COPATTACKPIC:
               playsound(S_ENEMYGUN1,x,y,0,ST_NOUPDATE);
               break;
          case ANTATTACKPIC:
               playsound(S_ENEMYGUN2,x,y,0,ST_NOUPDATE);
               break;
          case MAATTACKPIC:
               playsound(S_ENEMYGUN3,x,y,0,ST_NOUPDATE);
               break;
          case SAMATTACKPIC:
               playsound(S_ENEMYGUN4,x,y,0,ST_NOUPDATE);
               break;
          default:
               playsound(S_ENEMYGUN1,x,y,0,ST_NOUPDATE);
               break;
          }
          break;
     case 5:
     case 6:
     case 7:
     case 8:
          switch( sprXTptr[ext]->attackpic ) {
          case 3773:
          case 3800:
          case 3805:
          case 3810:
          case 3818:
               playsound(S_MATRIX_ATTACK,x,y,0,ST_NOUPDATE);
               break;
          case 3850:
          case 3860:
          case 3890:
          case 3909:
          case 3952:
          case 4001:
               playsound(S_MATRIX_ATTACK2,x,y,0,ST_NOUPDATE);
               break;
          default:
               playsound(S_AUTOGUN,x,y,0,ST_NOUPDATE);
          }
          break;
     default:
          break;
     }

     // gun shot code
     switch (guntype) {
     case 0:
          if( (labs(x-posx[target])+labs(y-posy[target])) < 1024 ) {
               if( labs(z-posz[target]) < 12288 ) {
                    playerpainsound(target);
                    if( ((sprXTptr[ext]->fxmask)&FX_HOLOGRAM) != 0 ) {
                         playsound(S_MATRIX_ATTACK,x,y,0,ST_NOUPDATE);
                         enemywoundplayer(target,sprnum,0);
                    }
                    if( ((sprXTptr[ext]->fxmask)&FX_ANDROID) != 0 ) {
                         androidexplosion(sprnum);
                         enemywoundplayer(target,sprnum,6);
                         //changespritestat(sprnum, VANISH);
                         jsdeletesprite(sprnum);
                    }
                    else {
                         enemywoundplayer(target,sprnum,0);
                    }
               }
          }
          return;
     case GUN3FLAG:
     case GUN4FLAG:
     case GUN5FLAG:
          daang2=daang;
          daz2=((100-dahoriz)<<11);
          z=posz[target];     // instead of calculating a dot product angle
          hitscan(x,y,z,dasectnum,sintable[(daang2+2560)&2047],
               sintable[(daang2+2048)&2047],daz2,
               &hitsect,&hitwall,&hitsprite,&hitx,&hity,&hitz,CLIPMASK1);
          if( hitsprite > 0 ) {
               if( playerhit(hitsprite, &pnum) ) {
                    playerpainsound(pnum);
                    enemywoundplayer(pnum,sprnum,3);
               }
               else {
                    damagesprite(hitsprite,tekgundamage(guntype,x,y,z,hitsprite));
               }
          }
          else {
               j=jsinsertsprite(hitsect, 3);
               if( j != -1 ) {
                    fillsprite(j,hitx,hity,hitz+(8<<8),2,-4,0,32,16,16,0,0,
                               EXPLOSION,daang,0,0,0,sprnum+MAXSPRITES,hitsect,3,63,0,0);
               }
          }
          break;
     case GUN6FLAG:
	     j = jsinsertsprite(sprptr[sprnum]->sectnum, PROJECTILE);
          if ( j ==  -1 ) {
               break;
          }
	     sprptr[j]->x=sprptr[sprnum]->x;
	     sprptr[j]->y=sprptr[sprnum]->y;
          switch( sprXTptr[ext]->basestat ) {
          case FLY:
	          sprptr[j]->z=sprptr[sprnum]->z;
               break;
          default:
	          sprptr[j]->z=sectptr[sprptr[sprnum]->sectnum]->floorz-8192;
               break;
          }
	     sprptr[j]->cstat=0x01;
	     sprptr[j]->picnum=PULSARPIC;
	     sprptr[j]->shade=-32;
	     sprptr[j]->xrepeat=32;
	     sprptr[j]->yrepeat=32;
	     sprptr[j]->ang=sprptr[sprnum]->ang;
	     sprptr[j]->xvel=(sintable[(sprptr[j]->ang+2560)&2047]>>4);
	     sprptr[j]->yvel=(sintable[(sprptr[j]->ang+2048)&2047]>>4);
          discrim=ksqrt((posx[target]-sprptr[j]->x)*(posx[target]-sprptr[j]->x) +
				    (posy[target]-sprptr[j]->y)*(posy[target]-sprptr[j]->y));
          if ( discrim == 0 ) {
               discrim=1;
          }
	     sprptr[j]->zvel=((posz[target]+(8<<8)-sprptr[j]->z)<<9)/discrim;
          sprptr[j]->owner=sprnum;
	     sprptr[j]->clipdist=16L;
	     sprptr[j]->lotag=0;
	     sprptr[j]->hitag=0;
          break;
     default:
          break;
     }

     if( guntype != 0 ) {
          enemygunshot(sprnum);
     }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xb0, %rsp
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)
movswl -0x22(%rbp), %edi
callq 0x2aec0
cmpl $0x0, %eax
je 0x31200
leaq 0xa9396(%rip), %rdi     # 0xda58f
movb $0x0, %al
callq 0x44240
movswq -0x22(%rbp), %rcx
leaq 0x148fd4(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movswl 0x2a(%rax), %eax
movl %eax, -0x5c(%rbp)
movl -0x5c(%rbp), %edi
callq 0x2ae90
cmpl $0x0, %eax
jne 0x31232
leaq 0xa937e(%rip), %rdi     # 0xda5a9
movb $0x0, %al
callq 0x44240
movswq -0x22(%rbp), %rcx
leaq 0x1f0fa2(%rip), %rax    # 0x2221e0
movq (%rax,%rcx,8), %rax
movzwl 0x2(%rax), %eax
movl %eax, -0x60(%rbp)
movl -0x60(%rbp), %edi
callq 0x11c50
cmpl $0x0, %eax
jne 0x3125b
jmp 0x31c42
movsbl 0x18(%rbp), %eax
movl %eax, -0x74(%rbp)
testl %eax, %eax
je 0x31288
jmp 0x31268
movl -0x74(%rbp), %eax
decl %eax
subl $0x4, %eax
jb 0x312ec
jmp 0x31274
movl -0x74(%rbp), %eax
addl $-0x5, %eax
subl $0x4, %eax
jb 0x31485
jmp 0x3156a
movslq -0x5c(%rbp), %rcx
leaq 0x1f0f4d(%rip), %rax    # 0x2221e0
movq (%rax,%rcx,8), %rax
movzwl 0x12(%rax), %eax
movl %eax, -0x78(%rbp)
subl $0x118, %eax            # imm = 0x118
je 0x312b3
jmp 0x312a7
movl -0x78(%rbp), %eax
subl $0xf46, %eax            # imm = 0xF46
je 0x312b5
jmp 0x312cf
jmp 0x312e7
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x1f, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x312e7
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x93, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x3156c
movslq -0x5c(%rbp), %rcx
leaq 0x1f0ee9(%rip), %rax    # 0x2221e0
movq (%rax,%rcx,8), %rax
movzwl 0x12(%rax), %eax
movl %eax, -0x7c(%rbp)
subl $0x490, %eax            # imm = 0x490
je 0x31400
jmp 0x3130f
movl -0x7c(%rbp), %eax
subl $0x6eb, %eax            # imm = 0x6EB
je 0x3141a
jmp 0x3131f
movl -0x7c(%rbp), %eax
subl $0x73e, %eax            # imm = 0x73E
je 0x31434
jmp 0x3132f
movl -0x7c(%rbp), %eax
subl $0x7e7, %eax            # imm = 0x7E7
je 0x3144e
jmp 0x3133f
movl -0x7c(%rbp), %eax
subl $0xebd, %eax            # imm = 0xEBD
je 0x313c6
jmp 0x3134b
movl -0x7c(%rbp), %eax
subl $0xed8, %eax            # imm = 0xED8
je 0x313c6
jmp 0x31357
movl -0x7c(%rbp), %eax
subl $0xedd, %eax            # imm = 0xEDD
je 0x313c6
jmp 0x31363
movl -0x7c(%rbp), %eax
subl $0xee2, %eax            # imm = 0xEE2
je 0x313c6
jmp 0x3136f
movl -0x7c(%rbp), %eax
subl $0xeea, %eax            # imm = 0xEEA
je 0x313c6
jmp 0x3137b
movl -0x7c(%rbp), %eax
subl $0xf0a, %eax            # imm = 0xF0A
je 0x313e3
jmp 0x31387
movl -0x7c(%rbp), %eax
subl $0xf14, %eax            # imm = 0xF14
je 0x313e3
jmp 0x31393
movl -0x7c(%rbp), %eax
subl $0xf32, %eax            # imm = 0xF32
je 0x313e3
jmp 0x3139f
movl -0x7c(%rbp), %eax
subl $0xf45, %eax            # imm = 0xF45
je 0x313e3
jmp 0x313ab
movl -0x7c(%rbp), %eax
subl $0xf70, %eax            # imm = 0xF70
je 0x313e3
jmp 0x313b7
movl -0x7c(%rbp), %eax
subl $0xfa1, %eax            # imm = 0xFA1
je 0x313e3
jmp 0x31468
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x92, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x31480
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x93, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x31480
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x5f, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x31480
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x60, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x31480
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x61, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x31480
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x62, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x31480
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x5f, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x3156c
movslq -0x5c(%rbp), %rcx
leaq 0x1f0d50(%rip), %rax    # 0x2221e0
movq (%rax,%rcx,8), %rax
movzwl 0x12(%rax), %eax
movl %eax, -0x80(%rbp)
subl $0xebd, %eax            # imm = 0xEBD
je 0x3151c
jmp 0x314a4
movl -0x80(%rbp), %eax
subl $0xed8, %eax            # imm = 0xED8
je 0x3151c
jmp 0x314b0
movl -0x80(%rbp), %eax
subl $0xedd, %eax            # imm = 0xEDD
je 0x3151c
jmp 0x314bc
movl -0x80(%rbp), %eax
subl $0xee2, %eax            # imm = 0xEE2
je 0x3151c
jmp 0x314c8
movl -0x80(%rbp), %eax
subl $0xeea, %eax            # imm = 0xEEA
je 0x3151c
jmp 0x314d4
movl -0x80(%rbp), %eax
subl $0xf0a, %eax            # imm = 0xF0A
je 0x31536
jmp 0x314e0
movl -0x80(%rbp), %eax
subl $0xf14, %eax            # imm = 0xF14
je 0x31536
jmp 0x314ec
movl -0x80(%rbp), %eax
subl $0xf32, %eax            # imm = 0xF32
je 0x31536
jmp 0x314f8
movl -0x80(%rbp), %eax
subl $0xf45, %eax            # imm = 0xF45
je 0x31536
jmp 0x31504
movl -0x80(%rbp), %eax
subl $0xf70, %eax            # imm = 0xF70
je 0x31536
jmp 0x31510
movl -0x80(%rbp), %eax
subl $0xfa1, %eax            # imm = 0xFA1
je 0x31536
jmp 0x31550
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x92, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x31568
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x93, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x31568
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x69, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
jmp 0x3156c
jmp 0x3156c
movsbl 0x18(%rbp), %eax
movl %eax, -0x84(%rbp)
testl %eax, %eax
je 0x315a4
jmp 0x3157c
movl -0x84(%rbp), %eax
addl $-0x3, %eax
subl $0x3, %eax
jb 0x316c0
jmp 0x31590
movl -0x84(%rbp), %eax
subl $0x6, %eax
je 0x3190c
jmp 0x31c2e
movl -0x28(%rbp), %eax
movslq -0x60(%rbp), %rdx
leaq 0xfc29e(%rip), %rcx     # 0x12d850
subl (%rcx,%rdx,4), %eax
cltq
movq %rax, %rcx
negq %rcx
cmovnsq %rcx, %rax
movl -0x2c(%rbp), %ecx
movslq -0x60(%rbp), %rsi
leaq 0xfc2c1(%rip), %rdx     # 0x12d890
subl (%rdx,%rsi,4), %ecx
movslq %ecx, %rcx
movq %rcx, %rdx
negq %rdx
cmovnsq %rdx, %rcx
addq %rcx, %rax
cmpq $0x400, %rax            # imm = 0x400
jge 0x316bb
movl -0x30(%rbp), %eax
movslq -0x60(%rbp), %rdx
leaq 0xfc2d4(%rip), %rcx     # 0x12d8d0
subl (%rcx,%rdx,4), %eax
cltq
movq %rax, %rcx
negq %rcx
cmovnsq %rcx, %rax
cmpq $0x3000, %rax           # imm = 0x3000
jge 0x316b9
movl -0x60(%rbp), %edi
callq 0x122a0
movslq -0x5c(%rbp), %rcx
leaq 0x1f0bb6(%rip), %rax    # 0x2221e0
movq (%rax,%rcx,8), %rax
movzwl 0x4(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x31663
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl $0x92, %edi
xorl %ecx, %ecx
movl $0x4, %r8d
callq 0x26af0
movl -0x60(%rbp), %eax
xorl %edx, %edx
movswl %ax, %edi
movswl -0x22(%rbp), %esi
callq 0x310c0
movslq -0x5c(%rbp), %rcx
leaq 0x1f0b72(%rip), %rax    # 0x2221e0
movq (%rax,%rcx,8), %rax
movzwl 0x4(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x316a6
movswl -0x22(%rbp), %edi
callq 0x31c60
movl -0x60(%rbp), %eax
movl $0x6, %edx
movswl %ax, %edi
movswl -0x22(%rbp), %esi
callq 0x310c0
movswl -0x22(%rbp), %edi
callq 0x2ae00
jmp 0x316b7
movl -0x60(%rbp), %eax
xorl %edx, %edx
movswl %ax, %edi
movswl -0x22(%rbp), %esi
callq 0x310c0
jmp 0x316b9
jmp 0x316bb
jmp 0x31c42
movw -0x32(%rbp), %ax
movw %ax, -0x40(%rbp)
movl $0x64, %eax
subl -0x38(%rbp), %eax
shll $0xb, %eax
movl %eax, -0x48(%rbp)
movslq -0x60(%rbp), %rcx
leaq 0xfc1ef(%rip), %rax     # 0x12d8d0
movl (%rax,%rcx,4), %eax
movl %eax, -0x30(%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 0x597474(%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 0x597457(%rip), %rax    # 0x5c8b80
movswl (%rax,%r9,2), %r9d
movl -0x48(%rbp), %r12d
leaq -0x3a(%rbp), %r15
leaq -0x3c(%rbp), %r14
leaq -0x3e(%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 -0x3e(%rbp), %eax
cmpl $0x0, %eax
jle 0x317e8
movswl -0x3e(%rbp), %edi
leaq -0x64(%rbp), %rsi
callq 0x31e70
cmpl $0x0, %eax
je 0x317b5
movl -0x64(%rbp), %edi
callq 0x122a0
movl -0x64(%rbp), %eax
movl $0x3, %edx
movswl %ax, %edi
movswl -0x22(%rbp), %esi
callq 0x310c0
jmp 0x317e3
movswl -0x3e(%rbp), %eax
movl %eax, -0x88(%rbp)
movsbl 0x18(%rbp), %edi
movl -0x28(%rbp), %esi
movl -0x2c(%rbp), %edx
movl -0x30(%rbp), %ecx
movswl -0x3e(%rbp), %r8d
callq 0x11d70
movl -0x88(%rbp), %edi
movl %eax, %esi
callq 0x30230
jmp 0x31907
movl $0x3, %esi
movswl -0x3a(%rbp), %edi
callq 0x2abd0
cwtl
movl %eax, -0x44(%rbp)
cmpl $-0x1, -0x44(%rbp)
je 0x31905
movslq -0x44(%rbp), %rcx
leaq 0x4452d1(%rip), %rax    # 0x476ae0
imulq $0x2c, %rcx, %rcx
addq %rcx, %rax
movq %rax, -0x70(%rbp)
movl -0x4c(%rbp), %ecx
movq -0x70(%rbp), %rax
movl %ecx, (%rax)
movl -0x50(%rbp), %ecx
movq -0x70(%rbp), %rax
movl %ecx, 0x4(%rax)
movl -0x54(%rbp), %ecx
addl $0x800, %ecx            # imm = 0x800
movq -0x70(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x70(%rbp), %rax
movw $0x2, 0xc(%rax)
movq -0x70(%rbp), %rax
movb $-0x4, 0x10(%rax)
movq -0x70(%rbp), %rax
movb $0x0, 0x11(%rax)
movq -0x70(%rbp), %rax
movb $0x20, 0x12(%rax)
movq -0x70(%rbp), %rax
movb $0x10, 0x14(%rax)
movq -0x70(%rbp), %rax
movb $0x10, 0x15(%rax)
movq -0x70(%rbp), %rax
movb $0x0, 0x16(%rax)
movq -0x70(%rbp), %rax
movb $0x0, 0x17(%rax)
movq -0x70(%rbp), %rax
movw $0x1ab, 0xe(%rax)       # imm = 0x1AB
movw -0x32(%rbp), %cx
movq -0x70(%rbp), %rax
movw %cx, 0x1c(%rax)
movq -0x70(%rbp), %rax
movw $0x0, 0x20(%rax)
movq -0x70(%rbp), %rax
movw $0x0, 0x22(%rax)
movq -0x70(%rbp), %rax
movw $0x0, 0x24(%rax)
movswl -0x22(%rbp), %eax
addl $0x4000, %eax           # imm = 0x4000
movw %ax, %cx
movq -0x70(%rbp), %rax
movw %cx, 0x1e(%rax)
movq -0x70(%rbp), %rax
movw $0x3f, 0x26(%rax)
movq -0x70(%rbp), %rax
movw $0x0, 0x28(%rax)
movq -0x70(%rbp), %rax
movw $0xffff, 0x2a(%rax)     # imm = 0xFFFF
movq -0x70(%rbp), %rdi
movslq -0x44(%rbp), %rax
leaq 0x10432c(%rip), %rsi    # 0x135c20
imulq $0xc, %rax, %rax
addq %rax, %rsi
movl $0x3, %edx
callq 0x8c070
jmp 0x31907
jmp 0x31c30
movswq -0x22(%rbp), %rcx
leaq 0x1488c8(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movl $0x191, %esi            # imm = 0x191
movswl 0x18(%rax), %edi
callq 0x2abd0
cwtl
movl %eax, -0x44(%rbp)
cmpl $-0x1, -0x44(%rbp)
jne 0x31939
jmp 0x31c30
movswq -0x22(%rbp), %rcx
leaq 0x14889b(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rcx
movl (%rcx), %edx
movslq -0x44(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movl %edx, (%rcx)
movswq -0x22(%rbp), %rcx
movq (%rax,%rcx,8), %rcx
movl 0x4(%rcx), %ecx
movslq -0x44(%rbp), %rdx
movq (%rax,%rdx,8), %rax
movl %ecx, 0x4(%rax)
movslq -0x5c(%rbp), %rcx
leaq 0x1f0869(%rip), %rax    # 0x2221e0
movq (%rax,%rcx,8), %rax
movw 0x8(%rax), %ax
subw $0x1f4, %ax             # imm = 0x1F4
jne 0x319ae
jmp 0x31987
movswq -0x22(%rbp), %rcx
leaq 0x14884d(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movl 0x8(%rax), %ecx
movslq -0x44(%rbp), %rdx
leaq 0x14883b(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movl %ecx, 0x8(%rax)
jmp 0x319e9
movswq -0x22(%rbp), %rcx
leaq 0x148826(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movswq 0x18(%rax), %rcx
leaq 0x210816(%rip), %rax    # 0x2421e0
movq (%rax,%rcx,8), %rax
movl 0x8(%rax), %ecx
subl $0x2000, %ecx           # imm = 0x2000
movslq -0x44(%rbp), %rdx
leaq 0x1487fe(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movl %ecx, 0x8(%rax)
movslq -0x44(%rbp), %rcx
leaq 0x1487ec(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movw $0x1, 0xc(%rax)
movslq -0x44(%rbp), %rcx
leaq 0x1487d7(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movw $0x138, 0xe(%rax)       # imm = 0x138
movslq -0x44(%rbp), %rcx
leaq 0x1487c2(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movb $-0x20, 0x10(%rax)
movslq -0x44(%rbp), %rcx
leaq 0x1487af(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movb $0x20, 0x14(%rax)
movslq -0x44(%rbp), %rcx
leaq 0x14879c(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movb $0x20, 0x15(%rax)
movswq -0x22(%rbp), %rcx
leaq 0x148788(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movw 0x1c(%rax), %cx
movslq -0x44(%rbp), %rdx
leaq 0x148775(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x1c(%rax)
movslq -0x44(%rbp), %rcx
leaq 0x148762(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movswl 0x1c(%rax), %eax
addl $0xa00, %eax            # imm = 0xA00
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5970e6(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x4, %eax
movw %ax, %cx
movslq -0x44(%rbp), %rdx
leaq 0x148731(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x20(%rax)
movslq -0x44(%rbp), %rcx
leaq 0x14871e(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movswl 0x1c(%rax), %eax
addl $0x800, %eax            # imm = 0x800
andl $0x7ff, %eax            # imm = 0x7FF
movslq %eax, %rcx
leaq 0x5970a2(%rip), %rax    # 0x5c8b80
movswl (%rax,%rcx,2), %eax
sarl $0x4, %eax
movw %ax, %cx
movslq -0x44(%rbp), %rdx
leaq 0x1486ed(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x22(%rax)
movslq -0x60(%rbp), %rcx
leaq 0xfbd4a(%rip), %rax     # 0x12d850
movl (%rax,%rcx,4), %edi
movslq -0x44(%rbp), %rcx
leaq 0x1486cc(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
subl (%rax), %edi
movslq -0x60(%rbp), %rcx
leaq 0xfbd2b(%rip), %rax     # 0x12d850
movl (%rax,%rcx,4), %eax
movslq -0x44(%rbp), %rdx
leaq 0x1486ad(%rip), %rcx    # 0x17a1e0
movq (%rcx,%rdx,8), %rcx
subl (%rcx), %eax
imull %eax, %edi
movslq -0x60(%rbp), %rcx
leaq 0xfbd49(%rip), %rax     # 0x12d890
movl (%rax,%rcx,4), %eax
movslq -0x44(%rbp), %rdx
leaq 0x14868b(%rip), %rcx    # 0x17a1e0
movq (%rcx,%rdx,8), %rcx
subl 0x4(%rcx), %eax
movslq -0x60(%rbp), %rdx
leaq 0xfbd29(%rip), %rcx     # 0x12d890
movl (%rcx,%rdx,4), %ecx
movslq -0x44(%rbp), %rsi
leaq 0x14866b(%rip), %rdx    # 0x17a1e0
movq (%rdx,%rsi,8), %rdx
subl 0x4(%rdx), %ecx
imull %ecx, %eax
addl %eax, %edi
callq 0x69ab0
movl %eax, -0x58(%rbp)
cmpl $0x0, -0x58(%rbp)
jne 0x31b96
movl $0x1, -0x58(%rbp)
movslq -0x60(%rbp), %rcx
leaq 0xfbd2f(%rip), %rax     # 0x12d8d0
movl (%rax,%rcx,4), %eax
addl $0x800, %eax            # imm = 0x800
movslq -0x44(%rbp), %rdx
leaq 0x14862c(%rip), %rcx    # 0x17a1e0
movq (%rcx,%rdx,8), %rcx
subl 0x8(%rcx), %eax
shll $0x9, %eax
cltd
idivl -0x58(%rbp)
movw %ax, %cx
movslq -0x44(%rbp), %rdx
leaq 0x148610(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x24(%rax)
movw -0x22(%rbp), %cx
movslq -0x44(%rbp), %rdx
leaq 0x1485f9(%rip), %rax    # 0x17a1e0
movq (%rax,%rdx,8), %rax
movw %cx, 0x1e(%rax)
movslq -0x44(%rbp), %rcx
leaq 0x1485e6(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movb $0x10, 0x12(%rax)
movslq -0x44(%rbp), %rcx
leaq 0x1485d3(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movw $0x0, 0x26(%rax)
movslq -0x44(%rbp), %rcx
leaq 0x1485be(%rip), %rax    # 0x17a1e0
movq (%rax,%rcx,8), %rax
movw $0x0, 0x28(%rax)
jmp 0x31c30
jmp 0x31c30
movsbl 0x18(%rbp), %eax
cmpl $0x0, %eax
je 0x31c42
movswl -0x22(%rbp), %edi
callq 0x30be0
addq $0xb0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
nopw %cs:(%rax,%rax)