LOWORD(playerId1) = _EBX->Identity; if ( (_WORD)playerId1 != 3 && (_WORD)playerId1 != 4 && _EBX->InDuckingPosition != -1 ) { playerId1 = (signed __int16)playerId1; if ( _EBX->FacingDirection <= 0 ) { playerIndex1 = playerId1 - 1; if ( (unsigned int)(playerId1 - 1) >= 5 ) _vbaGenerateBoundsError(v599, v601, v602); powerupIndex = v665->CurrentPowerup - 1; if ( (unsigned int)powerupIndex >= 7 ) _vbaGenerateBoundsError(v599, v601, v602); v666 = *(_WORD *)v64 + 128; if ( (unsigned int)v666 >= 0x1409 ) _vbaGenerateBoundsError(v599, v601, v602); v467 = *(_WORD *)v64 + 128; if ( (unsigned int)v467 >= 0x1409 ) _vbaGenerateBoundsError(v599, v601, v602); _EAX = (int)v665; __asm { fld qword ptr [eax+0D8h]; Load Real fadd qword ptr [eax+0C0h]; Add Real } v614 = Hitbox_unk1[playerIndex1 + 4 * powerupIndex + powerupIndex]; __asm { fild [ebp+var_210] ; Load Integer } _EDX = npc_or_layer_ptr; __asm { fstp [ebp+var_218] ; Store Real and Pop fsub [ebp+var_218] ; Subtract Real } _ECX = 43 * v666; __asm { fsub qword ptr [edx+ecx*8+90h]; Subtract Real } _ECX = 43 * v467; __asm { fstp qword ptr [edx+ecx*8+78h]; Store Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( _EAX & 0xD ) goto LABEL_1041; } else { playerIndex1 = playerId1 - 1; if ( (unsigned int)(playerId1 - 1) >= 5 ) _vbaGenerateBoundsError(v599, v601, v602); powerupIndex2 = v665->CurrentPowerup - 1; if ( (unsigned int)powerupIndex2 >= 7 ) _vbaGenerateBoundsError(v599, v601, v602); v462 = *(_WORD *)v64 + 128; if ( (unsigned int)v462 >= 0x1409 ) _vbaGenerateBoundsError(v599, v601, v602); _EAX = (int)v665; v616 = Hitbox_unk1[playerIndex1 + 4 * powerupIndex2 + powerupIndex2]; __asm { fild [ebp+var_204] ; Load Integer fstp [ebp+var_20C] ; Store Real and Pop fld [ebp+var_20C] ; Load Real fadd qword ptr [eax+0C0h]; Add Real } _EDX = 43 * v462; _ECX = npc_or_layer_ptr; __asm { fstp qword ptr [ecx+edx*8+78h]; Store Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( _EAX & 0xD ) goto LABEL_1041; } playerIndex1 = v665->Identity - 1; if ( (unsigned int)playerIndex1 >= 5 ) _vbaGenerateBoundsError(v599, v601, v602); v472 = v665->CurrentPowerup - 1; if ( (unsigned int)v472 >= 7 ) _vbaGenerateBoundsError(v599, v601, v602); v666 = *(_WORD *)v64 + 128; if ( (unsigned int)v666 >= 0x1409 ) _vbaGenerateBoundsError(v599, v601, v602); v473 = *(_WORD *)v64 + 128; if ( (unsigned int)v473 >= 0x1409 ) _vbaGenerateBoundsError(v599, v601, v602); _ECX = (int)v665; v612 = Hitbox_unk2[playerIndex1 + 4 * v472 + v472]; __asm { fild [ebp+var_21C] ; Load Integer fstp [ebp+var_224] ; Store Real and Pop fld [ebp+var_224] ; Load Real fadd qword ptr [ecx+0C8h]; Add Real fadd ds:dbl_402578 ; Add Real } _EAX = 43 * v666; _EDX = npc_or_layer_ptr; __asm { fsub qword ptr [edx+eax*8+88h]; Subtract Real } _ECX = 43 * v473; __asm { fstp qword ptr [edx+ecx*8+80h]; Store Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( _EAX & 0xD ) goto LABEL_1041; goto LABEL_910; }