// File: /workspace/github_c_makefile_star2_O2/jonof[P]jftekwar/src/tekspr.c
// Function: checktouchsprite
void
checktouchsprite(short snum, short sectnum)
{
     int      i, nexti;
     int       healthmax;
     char      dosound=0;
     char      str[30];

     if( (sectnum < 0) || (sectnum >= numsectors) ) {
          return;
     }

     memset(str, 0, 30);

     i = headspritesect[sectnum];
     while (i != -1)
     {
          nexti = nextspritesect[i];
          if ((labs(posx[snum]-sprite[i].x)+labs(posy[snum]-sprite[i].y) < 512) && (labs((posz[snum]>>8)-((sprite[i].z>>8)-(tilesizy[sprite[i].picnum]>>1))) <= 40))
          {
               // must jive with tekinitplayer settings
               switch( difficulty ) {
               case 3:
                    healthmax=(MAXHEALTH>>1);
                    break;
               default:
                    healthmax=MAXHEALTH;
                    break;
               }
               switch( sprite[i].picnum ) {
               case MEDICKIT2PIC:
                    if (health[snum] < healthmax) {
                         changehealth(snum,100);
                         jsdeletesprite(i);
                         strcpy(str,"MEDIC KIT");
                         dosound++;
                    }
                    break;
               case MEDICKITPIC:
                    if (health[snum] < healthmax) {
                         strcpy(str,"MEDIC KIT");
                         changehealth(snum,250);
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 3637:
                    if (health[snum] < healthmax) {
                         strcpy(str,"ENERGY PELLET");
                         changehealth(snum,50);
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case DONUTSPIC:
                    if (health[snum] < healthmax) {
                         strcpy(str,"MMMMMMM DONUTS");
                         changehealth(snum,50);
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case ACCUTRAKPIC:
                    invaccutrak[snum]=1;
                    strcpy(str,"ACCU TRAK");
                    jsdeletesprite(i);
                    dosound++;
                    break;
               // gun pick ups
               case 3092:
                    if( ((weapons[snum])&flags32[GUN2FLAG]) == 0 ) {
                         weapons[snum]|=flags32[GUN2FLAG];
                         ammo2[snum]+=25;
                         if (ammo2[snum] > MAXAMMO) {
                              ammo2[snum]=MAXAMMO;
                         }
                         strcpy(str,"PISTOL");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 3094:
                    if( ((weapons[snum])&flags32[GUN3FLAG]) == 0 ) {
                         weapons[snum]|=flags32[GUN3FLAG];
                         ammo3[snum]+=15;
                         if (ammo3[snum] > MAXAMMO) {
                              ammo3[snum]=MAXAMMO;
                         }
                         strcpy(str,"SHRIKE DBK");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 3093:
                    if( ((weapons[snum])&flags32[GUN4FLAG]) == 0 ) {
                         weapons[snum]|=flags32[GUN4FLAG];
                         ammo4[snum]+=15;
                         if (ammo4[snum] > MAXAMMO) {
                              ammo4[snum]=MAXAMMO;
                         }
                         strcpy(str,"ORLOW");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 3095:
                    if( ((weapons[snum])&flags32[GUN5FLAG]) == 0 ) {
                         weapons[snum]|=flags32[GUN5FLAG];
                         ammo5[snum]+=15;
                         if (ammo5[snum] > MAXAMMO) {
                              ammo5[snum]=MAXAMMO;
                         }
                         strcpy(str,"EMP GUN");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 3091:
                    if( ((weapons[snum])&flags32[GUN6FLAG]) == 0 ) {
                         weapons[snum]|=flags32[GUN6FLAG];
                         ammo6[snum]+=15;
                         if (ammo6[snum] > MAXAMMO) {
                              ammo6[snum]=MAXAMMO;
                         }
                         strcpy(str,"FLAMER");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 3090:
                    if( ((weapons[snum])&flags32[GUN7FLAG]) == 0 ) {
                         weapons[snum]|=flags32[GUN7FLAG];
                         ammo7[snum]+=10;
                         if (ammo7[snum] > MAXAMMO) {
                              ammo7[snum]=MAXAMMO;
                         }
                         strcpy(str,"BAZOOKA");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               // ammo pick ups
               case 924:
               case 3102:
                    if( (ammo2[snum] < MAXAMMO) ) { // && ((weapons[snum]&flags32[GUN2FLAG]) != 0) ) {
                         ammo2[snum]+=20;
                         if( ammo2[snum] > MAXAMMO ) {
                              ammo2[snum]=MAXAMMO;
                         }
                         strcpy(str,"PISTOL KLIP");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 3104:
                    if( (ammo3[snum] < MAXAMMO) ) { // && ((weapons[snum]&flags32[GUN3FLAG]) != 0) ) {
                         ammo3[snum]+=10;
                         if( ammo3[snum] > MAXAMMO ) {
                              ammo3[snum]=MAXAMMO;
                         }
                         strcpy(str,"SHRIKE CHARGES");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 3103:
                    if( (ammo4[snum] < MAXAMMO) ) { // && ((weapons[snum]&flags32[GUN4FLAG]) != 0) ) {
                         ammo4[snum]+=10;
                         if( ammo4[snum] > MAXAMMO ) {
                              ammo4[snum]=MAXAMMO;
                         }
                         strcpy(str,"ORLOW CHARGES");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 925:
               case 3101:
                    if( (ammo6[snum] < MAXAMMO) ) { // && ((weapons[snum]&flags32[GUN6FLAG]) != 0) ) {
                         ammo6[snum]+=10;
                         if( ammo6[snum] > MAXAMMO ) {
                              ammo6[snum]=MAXAMMO;
                         }
                         strcpy(str,"FUEL BOTTLE");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case CHARGEPAKPIC:
               case 3100:
                    if( (ammo7[snum] < MAXAMMO) ) { // && ((weapons[snum]&flags32[GUN7FLAG]) != 0) ) {
                         ammo7[snum]+=5;
                         if( ammo7[snum] > MAXAMMO ) {
                              ammo7[snum]=MAXAMMO;
                         }
                         strcpy(str,"BAZOOKA FUEL");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case 3836:
                    if( (ammo8[snum] < MAXAMMO) ) {
                         ammo8[snum]+=25;
                         if( ammo8[snum] > MAXAMMO ) {
                              ammo8[snum]=MAXAMMO;
                         }
                         strcpy(str,"GLOVE CHARGE");
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;

#if 0
               case CHARGEPAKPIC:
                    if (health[snum] < healthmax) {
                         strcpy(str,"HEALTH CHARGE PACK");
                         changehealth(snum,50);
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
#endif
               case RED_KEYCARD:
                    if( invredcards[snum] == 0 ) {
                         strcpy(str,"RED KEY CARD");
                         invredcards[snum]=1;
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               case BLUE_KEYCARD:
                    if( invbluecards[snum] == 0 ) {
                         strcpy(str,"BLUE KEY CARD");
                         invbluecards[snum]=1;
                         jsdeletesprite(i);
                         dosound++;
                    }
                    break;
               default:
                    break;
               }
          }
          if( dosound && (screenpeek == snum) ) {
               playsound(S_PICKUP_BONUS,0,0,0,ST_UNIQUE);
               showmessage(str);
          }
          dosound=0;

          i = nexti;
     }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movl %edi, 0x24(%rsp)
testw %si, %si
js 0x1c9a1
leaq 0x55ab7b(%rip), %rax    # 0x576de0
cmpw %si, (%rax)
jle 0x1c9a1
xorps %xmm0, %xmm0
movq %rsp, %rax
movups %xmm0, 0xe(%rax)
movaps %xmm0, (%rax)
movzwl %si, %eax
leaq 0x53710b(%rip), %rcx    # 0x553390
movzwl (%rcx,%rax,2), %r12d
movswq 0x24(%rsp), %r15
leaq 0x541109(%rip), %r8     # 0x55d3a0
leaq 0xbe232(%rip), %r13     # 0xda4d0
leaq 0x40788b(%rip), %r14    # 0x423b30
leaq 0xbe264(%rip), %rbx     # 0xda510
leaq 0xbe29d(%rip), %r9      # 0xda550
leaq 0x58c3a6(%rip), %r10    # 0x5a8660
cmpw $-0x1, %r12w
je 0x1c9a1
movl %r12d, %eax
movswq %r12w, %rcx
movzwl (%r8,%rcx,2), %r12d
movl (%r13,%r15,4), %edx
imulq $0x2c, %rcx, %rcx
subl (%r14,%rcx), %edx
movl %edx, %esi
negl %esi
cmovsl %edx, %esi
movl (%rbx,%r15,4), %edx
subl 0x4(%r14,%rcx), %edx
movl %edx, %edi
negl %edi
cmovsl %edx, %edi
addq %rsi, %rdi
cmpq $0x1ff, %rdi            # imm = 0x1FF
ja 0x1c2ba
addq %r14, %rcx
movl (%r9,%r15,4), %esi
sarl $0x8, %esi
movl 0x8(%rcx), %edx
sarl $0x8, %edx
subl %edx, %esi
movswq 0xe(%rcx), %rdx
movswl (%r10,%rdx,2), %ecx
sarl %ecx
addl %esi, %ecx
movl %ecx, %esi
negl %esi
cmovsl %ecx, %esi
cmpl $0x28, %esi
ja 0x1c2ba
leaq 0x10acf0(%rip), %rcx    # 0x127024
cmpl $0x3, (%rcx)
movl $0x3e8, %ecx            # imm = 0x3E8
movl $0x1f4, %esi            # imm = 0x1F4
cmovel %esi, %ecx
movzwl %dx, %edx
leal -0xc12(%rdx), %esi
movswl %ax, %ebp
cmpl $0xe, %esi
jbe 0x1c40e
leal -0x39a(%rdx), %eax
movswl 0x24(%rsp), %edi
cmpl $0x3, %eax
jbe 0x1c475
cmpl $0x153, %edx            # imm = 0x153
je 0x1c89f
cmpl $0x15a, %edx            # imm = 0x15A
je 0x1c8fd
cmpl $0x15b, %edx            # imm = 0x15B
je 0x1c8c5
cmpl $0x599, %edx            # imm = 0x599
je 0x1c4ff
cmpl $0x5ad, %edx            # imm = 0x5AD
je 0x1c864
cmpl $0xe35, %edx            # imm = 0xE35
je 0x1c7fe
cmpl $0xefc, %edx            # imm = 0xEFC
jne 0x1c2ba
leaq 0x108ef8(%rip), %rax    # 0x1252c0
movzwl (%rax,%r15,2), %eax
cmpw $0x63, %ax
jg 0x1c2ba
cmpw $0x4b, %ax
pushq $0x4b
popq %rcx
cmovll %eax, %ecx
addl $0x19, %ecx
leaq 0x108ed5(%rip), %rax    # 0x1252c0
movw %cx, (%rax,%r15,2)
movabsq $0x45475241484320, %rax # imm = 0x45475241484320
movq %rax, 0x5(%rsp)
movabsq $0x48432045564f4c47, %rax # imm = 0x48432045564F4C47
jmp 0x1c7f5
leaq 0x65d9b(%rip), %rcx     # 0x821b0
movslq (%rcx,%rsi,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x10905b(%rip), %rax    # 0x125480
movl (%rax,%r15,4), %eax
leaq 0xac4c0(%rip), %rcx     # 0xc88f0
movl 0x1c(%rcx), %ecx
testl %eax, %ecx
jne 0x1c2ba
orl %eax, %ecx
leaq 0x10903c(%rip), %rax    # 0x125480
movl %ecx, (%rax,%r15,4)
leaq 0x108e51(%rip), %rdx    # 0x1252a0
movzwl (%rdx,%r15,2), %eax
addl $0xa, %eax
cmpw $0x64, %ax
pushq $0x64
popq %rcx
cmovgel %ecx, %eax
movw %ax, (%rdx,%r15,2)
movabsq $0x414b4f4f5a4142, %rax # imm = 0x414B4F4F5A4142
jmp 0x1c7f5
leaq 0x65d24(%rip), %rdx     # 0x821a0
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
leaq 0xbe104(%rip), %rax     # 0xda590
cmpl %ecx, (%rax,%r15,4)
jge 0x1c2ba
movabsq $0x494b20434944454d, %rax # imm = 0x494B20434944454D
movq %rax, (%rsp)
movw $0x54, 0x8(%rsp)
movl $0xfa, %esi
jmp 0x1c895
leaq 0x108dc4(%rip), %rax    # 0x125280
movzwl (%rax,%r15,2), %eax
cmpw $0x63, %ax
jg 0x1c2ba
cmpw $0x5a, %ax
pushq $0x5a
popq %rcx
cmovll %eax, %ecx
addl $0xa, %ecx
leaq 0x108da1(%rip), %rax    # 0x125280
movw %cx, (%rax,%r15,2)
movabsq $0x544f42204c455546, %rax # imm = 0x544F42204C455546
movq %rax, (%rsp)
movl $0x454c54, 0x8(%rsp)    # imm = 0x454C54
jmp 0x1c93b
leaq 0x108d9a(%rip), %rax    # 0x1252a0
movzwl (%rax,%r15,2), %eax
cmpw $0x63, %ax
jg 0x1c2ba
cmpw $0x5f, %ax
pushq $0x5f
popq %rcx
cmovll %eax, %ecx
addl $0x5, %ecx
leaq 0x108d77(%rip), %rax    # 0x1252a0
movw %cx, (%rax,%r15,2)
movabsq $0x4c45554620414b, %rax # imm = 0x4C45554620414B
movq %rax, 0x5(%rsp)
movabsq $0x20414b4f4f5a4142, %rax # imm = 0x20414B4F4F5A4142
jmp 0x1c7f5
leaq 0x108cad(%rip), %rax    # 0x125200
movzwl (%rax,%r15,2), %eax
cmpw $0x63, %ax
jg 0x1c2ba
cmpw $0x50, %ax
pushq $0x50
popq %rcx
cmovll %eax, %ecx
addl $0x14, %ecx
leaq 0x108c8a(%rip), %rax    # 0x125200
movw %cx, (%rax,%r15,2)
movabsq $0x4b204c4f54534950, %rax # imm = 0x4B204C4F54534950
movq %rax, (%rsp)
movl $0x50494c, 0x8(%rsp)    # imm = 0x50494C
jmp 0x1c93b
leaq 0x108ee3(%rip), %rax    # 0x125480
movl (%rax,%r15,4), %ecx
leaq 0xac348(%rip), %rax     # 0xc88f0
movl 0x18(%rax), %eax
testl %ecx, %eax
jne 0x1c2ba
orl %ecx, %eax
leaq 0x108cc4(%rip), %rsi    # 0x125280
movzwl (%rsi,%r15,2), %ecx
addl $0xf, %ecx
cmpw $0x64, %cx
pushq $0x64
popq %rdx
cmovgel %edx, %ecx
leaq 0x108eab(%rip), %rdx    # 0x125480
movl %eax, (%rdx,%r15,4)
movw %cx, (%rsi,%r15,2)
movl $0x52454d, 0x3(%rsp)    # imm = 0x52454D
movl $0x4d414c46, (%rsp)     # imm = 0x4D414C46
jmp 0x1c93b
leaq 0x108c47(%rip), %rax    # 0x125240
movzwl (%rax,%r15,2), %eax
cmpw $0x63, %ax
jg 0x1c2ba
cmpw $0x5a, %ax
pushq $0x5a
popq %rcx
cmovll %eax, %ecx
addl $0xa, %ecx
leaq 0x108c24(%rip), %rax    # 0x125240
movw %cx, (%rax,%r15,2)
movabsq $0x53454752414843, %rax # imm = 0x53454752414843
movq %rax, 0x6(%rsp)
movabsq $0x484320574f4c524f, %rax # imm = 0x484320574F4C524F
jmp 0x1c7f5
leaq 0x108e3a(%rip), %rax    # 0x125480
movl (%rax,%r15,4), %ecx
leaq 0xac29f(%rip), %rax     # 0xc88f0
movl 0xc(%rax), %eax
testl %ecx, %eax
jne 0x1c2ba
orl %ecx, %eax
leaq 0x108bbb(%rip), %rsi    # 0x125220
movzwl (%rsi,%r15,2), %ecx
addl $0xf, %ecx
cmpw $0x64, %cx
pushq $0x64
popq %rdx
cmovgel %edx, %ecx
leaq 0x108e02(%rip), %rdx    # 0x125480
movl %eax, (%rdx,%r15,4)
movw %cx, (%rsi,%r15,2)
movabsq $0x4420454b49524853, %rax # imm = 0x4420454B49524853
movq %rax, (%rsp)
movl $0x4b4244, 0x7(%rsp)    # imm = 0x4B4244
jmp 0x1c93b
leaq 0x108dd7(%rip), %rax    # 0x125480
movl (%rax,%r15,4), %ecx
leaq 0xac23c(%rip), %rax     # 0xc88f0
movl 0x8(%rax), %eax
testl %ecx, %eax
jne 0x1c2ba
orl %ecx, %eax
leaq 0x108b38(%rip), %rsi    # 0x125200
movzwl (%rsi,%r15,2), %ecx
addl $0x19, %ecx
cmpw $0x64, %cx
pushq $0x64
popq %rdx
cmovgel %edx, %ecx
leaq 0x108d9f(%rip), %rdx    # 0x125480
movl %eax, (%rdx,%r15,4)
movw %cx, (%rsi,%r15,2)
movl $0x4c4f54, 0x3(%rsp)    # imm = 0x4C4F54
movl $0x54534950, (%rsp)     # imm = 0x54534950
jmp 0x1c93b
leaq 0x108d7b(%rip), %rax    # 0x125480
movl (%rax,%r15,4), %ecx
leaq 0xac1e0(%rip), %rax     # 0xc88f0
movl 0x10(%rax), %eax
testl %ecx, %eax
jne 0x1c2ba
orl %ecx, %eax
leaq 0x108b1c(%rip), %rsi    # 0x125240
movzwl (%rsi,%r15,2), %ecx
addl $0xf, %ecx
cmpw $0x64, %cx
pushq $0x64
popq %rdx
cmovgel %edx, %ecx
leaq 0x108d43(%rip), %rdx    # 0x125480
movl %eax, (%rdx,%r15,4)
movw %cx, (%rsi,%r15,2)
movw $0x57, 0x4(%rsp)
movl $0x4f4c524f, (%rsp)     # imm = 0x4F4C524F
jmp 0x1c93b
leaq 0x108ac0(%rip), %rax    # 0x125220
movzwl (%rax,%r15,2), %eax
cmpw $0x63, %ax
jg 0x1c2ba
cmpw $0x5a, %ax
pushq $0x5a
popq %rcx
cmovll %eax, %ecx
addl $0xa, %ecx
leaq 0x108a9d(%rip), %rax    # 0x125220
movw %cx, (%rax,%r15,2)
movabsq $0x53454752414843, %rax # imm = 0x53454752414843
movq %rax, 0x7(%rsp)
movabsq $0x4320454b49524853, %rax # imm = 0x4320454B49524853
jmp 0x1c7f5
leaq 0x108cd6(%rip), %rax    # 0x125480
movl (%rax,%r15,4), %eax
leaq 0xac13b(%rip), %rcx     # 0xc88f0
movl 0x14(%rcx), %ecx
testl %eax, %ecx
jne 0x1c2ba
orl %eax, %ecx
leaq 0x108cb7(%rip), %rax    # 0x125480
movl %ecx, (%rax,%r15,4)
leaq 0x108a8c(%rip), %rdx    # 0x125260
movzwl (%rdx,%r15,2), %eax
addl $0xf, %eax
cmpw $0x64, %ax
pushq $0x64
popq %rcx
cmovgel %ecx, %eax
movw %ax, (%rdx,%r15,2)
movabsq $0x4e554720504d45, %rax # imm = 0x4E554720504D45
movq %rax, (%rsp)
jmp 0x1c93b
leaq 0xbdd8b(%rip), %rax     # 0xda590
cmpl %ecx, (%rax,%r15,4)
jge 0x1c2ba
movabsq $0x54454c4c455020, %rax # imm = 0x54454C4C455020
movq %rax, 0x6(%rsp)
movabsq $0x5020594752454e45, %rax # imm = 0x5020594752454E45
jmp 0x1c88e
leaq 0xbdd5f(%rip), %rax     # 0xda590
cmpl %ecx, (%rax,%r15,4)
jge 0x1c2ba
pushq $0x64
popq %rsi
callq 0x99a8
movl %ebp, %edi
callq 0x1cf5e
movabsq $0x494b20434944454d, %rax # imm = 0x494B20434944454D
movq %rax, (%rsp)
movw $0x54, 0x8(%rsp)
jmp 0x1c942
leaq 0xbdd25(%rip), %rax     # 0xda590
cmpl %ecx, (%rax,%r15,4)
jge 0x1c2ba
movabsq $0x5354554e4f4420, %rax # imm = 0x5354554E4F4420
movq %rax, 0x7(%rsp)
movabsq $0x204d4d4d4d4d4d4d, %rax # imm = 0x204D4D4D4D4D4D4D
movq %rax, (%rsp)
pushq $0x32
popq %rsi
callq 0x99a8
jmp 0x1c93b
leaq 0x10a56a(%rip), %rax    # 0x126e10
movl $0x1, (%rax,%r15,4)
movabsq $0x4152542055434341, %rax # imm = 0x4152542055434341
movq %rax, (%rsp)
movw $0x4b, 0x8(%rsp)
jmp 0x1c93b
leaq 0x10a504(%rip), %rax    # 0x126dd0
cmpl $0x0, (%rax,%r15,4)
jne 0x1c2ba
movabsq $0x44524143205945, %rax # imm = 0x44524143205945
movq %rax, 0x6(%rsp)
movabsq $0x59454b2045554c42, %rax # imm = 0x59454B2045554C42
movq %rax, (%rsp)
leaq 0x10a4d5(%rip), %rax    # 0x126dd0
jmp 0x1c933
leaq 0x10a48c(%rip), %rax    # 0x126d90
cmpl $0x0, (%rax,%r15,4)
jne 0x1c2ba
movabsq $0x44524143205945, %rax # imm = 0x44524143205945
movq %rax, 0x5(%rsp)
movabsq $0x2059454b20444552, %rax # imm = 0x2059454B20444552
movq %rax, (%rsp)
leaq 0x10a45d(%rip), %rax    # 0x126d90
movl $0x1, (%rax,%r15,4)
movl %ebp, %edi
callq 0x1cf5e
movl 0x24(%rsp), %eax
leaq 0xbdb11(%rip), %rcx     # 0xda45e
cmpw %ax, (%rcx)
leaq 0x540a49(%rip), %r8     # 0x55d3a0
leaq 0xbdbf2(%rip), %r9      # 0xda550
leaq 0x58bcfb(%rip), %r10    # 0x5a8660
jne 0x1c2ba
pushq $0x6e
popq %rdi
xorl %esi, %esi
xorl %edx, %edx
xorl %ecx, %ecx
pushq $0x8
popq %r8
callq 0x1ab2a
movq %rsp, %rdi
xorl %eax, %eax
callq 0x1373a
leaq 0x58bcd2(%rip), %r10    # 0x5a8660
leaq 0xbdbbb(%rip), %r9      # 0xda550
leaq 0x540a04(%rip), %r8     # 0x55d3a0
jmp 0x1c2ba
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq