__int16 __thiscall unkPlayerCollisionCheck(void *this, unsigned int *a2) { void (*v2)(void); // edi@1 unsigned int v3; // esi@1 int v4; // eax@3 int v5; // esi@6 int v6; // esi@9 int v7; // esi@12 int v8; // esi@15 int v9; // esi@18 unsigned int v10; // esi@23 int v11; // esi@26 PlayerMOB *v12; // esi@29 __int16 v13; // ax@29 int v14; // esi@31 int v15; // esi@34 int v16; // esi@36 int v17; // esi@40 int v18; // esi@42 int v19; // eax@46 signed int v20; // ebx@46 unsigned int v21; // esi@47 unsigned int v22; // edi@50 int v23; // esi@52 int v27; // esi@56 unsigned int v28; // edi@59 int v29; // esi@61 int v33; // esi@67 signed int v36; // ecx@74 signed int v38; // eax@77 int v39; // esi@83 signed int v42; // edi@86 int v43; // esi@88 signed int v47; // eax@91 int v48; // esi@95 int v49; // esi@101 int v50; // ebx@111 unsigned int v51; // edi@113 unsigned int v52; // esi@115 unsigned int v57; // esi@118 unsigned int v60; // esi@120 unsigned int v61; // esi@122 PlayerMOB *v62; // eax@124 __int16 v63; // cx@125 unsigned __int8 v64; // of@125 __int16 v65; // cx@125 __int16 v66; // dx@128 __int16 v67; // dx@128 int v68; // esi@130 int v69; // esi@132 int v72; // esi@135 int v73; // esi@138 unsigned int v74; // esi@140 unsigned int v75; // edi@142 unsigned int v79; // esi@144 unsigned int v80; // edi@148 int v82; // eax@151 unsigned int v84; // ebx@160 int v85; // edi@162 int v86; // esi@164 int v91; // esi@167 int v94; // esi@169 int v95; // esi@171 PlayerMOB *v96; // eax@173 __int16 v97; // cx@174 __int16 v98; // cx@174 __int16 v99; // dx@177 __int16 v100; // dx@177 unsigned int v101; // esi@179 unsigned int v102; // esi@181 unsigned int v105; // esi@184 unsigned int v106; // esi@187 int v107; // esi@189 int v108; // edi@191 int v112; // esi@193 int v114; // edx@200 unsigned int v117; // eax@206 unsigned int v118; // ebx@208 int v119; // edi@210 int v120; // esi@212 int v127; // edx@218 unsigned int v131; // esi@223 int v132; // esi@225 unsigned int v133; // eax@228 unsigned int v134; // ebx@230 int v135; // edi@232 int v136; // esi@234 int v139; // eax@236 int v144; // edx@240 unsigned int v148; // esi@245 int v149; // esi@247 int v150; // ecx@250 int v152; // ecx@251 signed __int16 v154; // si@252 unsigned int v155; // esi@255 unsigned int v156; // esi@260 int v157; // esi@262 unsigned int v158; // esi@268 int v159; // esi@270 unsigned int v160; // edi@272 char *v161; // edx@274 int v162; // esi@274 unsigned int v163; // esi@276 int v164; // esi@278 __int16 v165; // di@282 unsigned int v166; // esi@283 unsigned int *v167; // edx@286 int v168; // esi@288 unsigned int *v170; // [sp-38h] [bp-19Ch]@82 int v171; // [sp-Ch] [bp-170h]@1 __int16 v174; // [sp+14h] [bp-150h]@3 Monumentum monumentum_struct; // [sp+1Ch] [bp-148h]@1 Monumentum someSortOf_NpcXPos; // [sp+4Ch] [bp-118h]@1 PlayerMOB *v177; // [sp+7Ch] [bp-E8h]@3 int v178; // [sp+98h] [bp-CCh]@206 int a5; // [sp+9Ch] [bp-C8h]@1 int v180; // [sp+A0h] [bp-C4h]@1 int a4; // [sp+A4h] [bp-C0h]@1 int v182; // [sp+A8h] [bp-BCh]@1 int v183[2]; // [sp+ACh] [bp-B8h]@1 int v184[2]; // [sp+B4h] [bp-B0h]@1 int someSortOf_SpecialAdress; // [sp+BCh] [bp-A8h]@1 int someSortOf_value0_2; // [sp+C0h] [bp-A4h]@1 int someSortOf_value0_1; // [sp+C4h] [bp-A0h]@1 int sfxID; // [sp+C8h] [bp-9Ch]@1 int v189; // [sp+DCh] [bp-88h]@1 int v190; // [sp+E4h] [bp-80h]@250 int a2a[12]; // [sp+ECh] [bp-78h]@1 int a3[12]; // [sp+11Ch] [bp-48h]@1 double height; // [sp+14Ch] [bp-18h]@1 int *v194; // [sp+15Ch] [bp-8h]@1 int v195; // [sp+160h] [bp-4h]@1 v194 = &v171; v195 = (int)dword_406570; memset(a3, 0, sizeof(a3)); memset(a2a, 0, sizeof(a2a)); memset(&someSortOf_NpcXPos, 0, sizeof(someSortOf_NpcXPos)); memset(&monumentum_struct, 0, sizeof(monumentum_struct)); v2 = _vbaGenerateBoundsError; LODWORD(height) = 0; v189 = 0; v3 = *(_WORD *)a2; sfxID = 0; someSortOf_value0_1 = 0; someSortOf_value0_2 = 0; someSortOf_SpecialAdress = 0; v184[0] = 0; v184[1] = 0; v183[0] = 0; v183[1] = 0; a4 = 0; v182 = 0; a5 = 0; v180 = 0; if ( v3 >= 0xC9 ) ((void (__fastcall *)(void *, _DWORD))_vbaGenerateBoundsError)(this, 0); v177 = &Player_ptr[v3]; LOWORD(v4) = 1; v174 = PLAYER_COUNT; LODWORD(height) = 1; while ( (signed __int16)v4 <= v174 ) { if ( (_WORD)v4 == *(_WORD *)a2 ) goto LABEL_293; v5 = (signed __int16)v4; if ( (unsigned int)(signed __int16)v4 >= 0xC9 ) v2(); if ( Player_ptr[v5].DeathState ) goto LABEL_293; v6 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) v2(); if ( Player_ptr[v6].DeathTimer ) goto LABEL_293; v7 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) v2(); if ( Player_ptr[v7].ForcedAnimationState ) { v8 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) v2(); if ( Player_ptr[v8].ForcedAnimationState != 3 ) goto LABEL_293; } v9 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) v2(); if ( Player_ptr[v9].MountType == 2 || v177->MountType == 2 ) goto LABEL_293; if ( word_B2D740 ) { v10 = *(_WORD *)a2; if ( v10 >= 0xC9 ) v2(); if ( Player_ptr[v10].BlinkTimer ) goto LABEL_293; v11 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) v2(); if ( Player_ptr[v11].BlinkTimer ) goto LABEL_293; } v12 = v177; _vbaCopyBytes(48, a2a, &v177->momentum); v13 = v12->NPCBeingStoodOnIndex; if ( v13 && !FreezeActive ) { v14 = v13 + 128; if ( (unsigned int)v14 >= 0x1409 ) v2(); a2a[10] = LODWORD(npc_or_layer_ptr[v14].momentum.speedY); a2a[11] = HIDWORD(npc_or_layer_ptr[v14].momentum.speedY); } v15 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) v2(); _vbaCopyBytes(48, a3, &Player_ptr[v15].momentum); v16 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) v2(); if ( Player_ptr[v16].NPCBeingStoodOnIndex && !FreezeActive ) { v17 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) v2(); v18 = Player_ptr[v17].NPCBeingStoodOnIndex + 128; if ( (unsigned int)v18 >= 0x1409 ) v2(); a3[10] = LODWORD(npc_or_layer_ptr[v18].momentum.speedY); a3[11] = HIDWORD(npc_or_layer_ptr[v18].momentum.speedY); } if ( unkCollisionCheck((Momentum *)a2a, (Momentum *)a3) != -1 ) goto LABEL_293; v19 = sub_993330(a2a, a3); LOWORD(v20) = v19; HIDWORD(height) = v19; if ( (_WORD)v19 == 5 ) { v21 = *(_WORD *)a2; if ( v21 >= 0xC9 ) _vbaGenerateBoundsError(); if ( Player_ptr[v21].DownButtonTapped == -1 ) { v22 = *(_WORD *)a2; if ( v22 >= 0xC9 ) _vbaGenerateBoundsError(); v23 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); _EAX = Player_ptr; _ECX = 97 * v22; __asm { fld qword ptr [eax+ecx*4+0C8h]; Load Real } _EDX = 97 * v23; __asm { fcomp qword ptr [eax+edx*4+0C8h]; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( !(BYTE1(_EAX) & 0x41) ) { v20 = 3; LABEL_65: HIDWORD(height) = v20; goto LABEL_66; } } v27 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); if ( Player_ptr[v27].DownButtonTapped == -1 ) { v28 = *(_WORD *)a2; if ( v28 >= 0xC9 ) _vbaGenerateBoundsError(); v29 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); _EAX = Player_ptr; _ECX = 97 * v28; __asm { fld qword ptr [eax+ecx*4+0C8h]; Load Real } _EDX = 97 * v29; __asm { fcomp qword ptr [eax+edx*4+0C8h]; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( BYTE1(_EAX) & 1 ) { v20 = 1; goto LABEL_65; } } } LABEL_66: if ( word_B2D740 == -1 ) { v33 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); if ( Player_ptr[v33].SlidingGroundPuffs == -1 ) { LOWORD(v20) = 0; HIDWORD(height) = 0; HarmPlayer(a2); } _ESI = v177; if ( v177->SlidingGroundPuffs == -1 ) { LOWORD(v20) = 0; HIDWORD(height) = 0; HarmPlayer((unsigned int *)&height); } __asm { fld qword ptr [esi+0E0h]; Load Real fcomp ds:dbl_4026B0 ; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( HIBYTE(_AX) & 0x41 ) v36 = 1; else v36 = 0; __asm { fld qword ptr [esi+0E0h]; Load Real fcomp ds:dbl_406208 ; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( HIBYTE(_AX) & 1 ) v38 = 0; else v38 = 1; if ( (!(v36 & v38) || (_WORD)v20 == 1) && _ESI->TanookiStatueActive == -1 ) { v170 = (unsigned int *)&height; LABEL_99: HarmPlayer(v170); goto LABEL_100; } v39 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); _EAX = Player_ptr; _EDX = 97 * v39; __asm { fld qword ptr [eax+edx*4+0E0h]; Load Real fcomp ds:dbl_4026B0 ; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( BYTE1(_EAX) & 0x41 ) v42 = 1; else v42 = 0; v43 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); _EDX = Player_ptr; _ECX = 97 * v43; __asm { fld qword ptr [edx+ecx*4+0E0h]; Load Real fcomp ds:dbl_406208 ; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( HIBYTE(_AX) & 1 ) v47 = 0; else v47 = 1; if ( !(v42 & v47) || (_WORD)v20 == 3 ) { v48 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); if ( Player_ptr[v48].TanookiStatueActive == -1 ) { v170 = a2; goto LABEL_99; } } } LABEL_100: if ( v177->TanookiStatueActive == -1 ) goto LABEL_302; v49 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); if ( Player_ptr[v49].TanookiStatueActive == -1 ) { LABEL_302: LOWORD(v20) = 0; HIDWORD(height) = 0; } if ( (_WORD)v20 == 2 || (_WORD)v20 == 4 ) { if ( (signed __int16)PLAYER_COUNT < 3 || unkIsConnected == -1 ) { sfxID = 10; playSound((int)&sfxID); } v158 = *(_WORD *)a2; if ( v158 >= 0xC9 ) _vbaGenerateBoundsError(); _vbaCopyBytes(48, a2a, &Player_ptr[v158].momentum); v159 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); v160 = *(_WORD *)a2; if ( v160 >= 0xC9 ) _vbaGenerateBoundsError(); v161 = (char *)&Player_ptr[v159].momentum.speedX; LODWORD(Player_ptr[v160].momentum.speedX) = *(_DWORD *)v161; HIDWORD(Player_ptr[v160].momentum.speedX) = *((_DWORD *)v161 + 1); v162 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); LODWORD(Player_ptr[v162].momentum.speedX) = a2a[8]; HIDWORD(Player_ptr[v162].momentum.speedX) = a2a[9]; v163 = *(_WORD *)a2; if ( v163 >= 0xC9 ) _vbaGenerateBoundsError(); Player_ptr[v163].Unknown136 = -1; v164 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); Player_ptr[v164].Unknown136 = -1; goto LABEL_281; } if ( (_WORD)v20 == 1 ) { if ( (signed __int16)PLAYER_COUNT < 3 || unkIsConnected == -1 ) { sfxID = 2; playSound((int)&sfxID); } v50 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); v51 = *(_WORD *)a2; if ( v51 >= 0xC9 ) _vbaGenerateBoundsError(); v52 = *(_WORD *)a2; if ( v52 >= 0xC9 ) _vbaGenerateBoundsError(); _ECX = Player_ptr; _EAX = 97 * v50; __asm { fld qword ptr [ecx+eax*4+0C8h]; Load Real } _EDX = 97 * v51; __asm { fsub qword ptr [ecx+edx*4+0D0h]; Subtract Real fsub ds:sonic_accelarteFactor; Subtract Real } _EDX = 97 * v52; __asm { fstp qword ptr [ecx+edx*4+0C8h]; Store Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( _EAX & 0xD ) goto LABEL_296; sfxID = 3; sub_9C0800(a2, &sfxID); v57 = *(_WORD *)a2; if ( v57 >= 0xC9 ) _vbaGenerateBoundsError(); __asm { fld flt_B2C6E8 ; Load Real } _ECX = Player_ptr; _EAX = 97 * v57; __asm { fstp qword ptr [ecx+eax*4+0E8h]; Store Real and Pop } v60 = *(_WORD *)a2; if ( v60 >= 0xC9 ) _vbaGenerateBoundsError(); Player_ptr[v60].UpwardJumpingForce = Jumpheight_JumpOnOtherPlayer; v61 = *(_WORD *)a2; if ( v61 >= 0xC9 ) _vbaGenerateBoundsError(); v62 = v177; if ( Player_ptr[v61].Identity == 2 ) { v63 = v177->UpwardJumpingForce; v64 = __OFADD__(3, v63); v65 = v63 + 3; if ( v64 ) goto LABEL_297; v177->UpwardJumpingForce = v65; } if ( v62->IsSpinjumping == -1 ) { v66 = v62->UpwardJumpingForce; v64 = __OFSUB__(v66, 6); v67 = v66 - 6; if ( v64 ) goto LABEL_297; v62->UpwardJumpingForce = v67; } v68 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); Player_ptr[v68].UpwardJumpingForce = 0; v69 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); _EAX = Player_ptr; _EDX = 97 * v69; __asm { fld qword ptr [eax+edx*4+0E8h]; Load Real fcomp ds:dbl_401320 ; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( BYTE1(_EAX) & 0x41 ) { v72 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); LODWORD(Player_ptr[v72].momentum.speedY) = -1717986918; HIDWORD(Player_ptr[v72].momentum.speedY) = 1069128089; } v73 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); Player_ptr[v73].JumpButtonHeld = 0; a5 = 0; v74 = *(_WORD *)a2; v180 = 0; a4 = 0; v182 = 0; if ( v74 >= 0xC9 ) _vbaGenerateBoundsError(); v75 = *(_WORD *)a2; if ( v75 >= 0xC9 ) _vbaGenerateBoundsError(); _ECX = Player_ptr; _EDX = 97 * v75; __asm { fld qword ptr [ecx+edx*4+0D0h]; Load Real } _EAX = 97 * v74; __asm { fadd qword ptr [ecx+eax*4+0C8h]; Add Real } v79 = *(_WORD *)a2; __asm { fsub ds:dbl_402690 ; Subtract Real fstp qword ptr [ebp+var_B8]; Store Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( _EAX & 0xD ) goto LABEL_296; if ( v79 >= 0xC9 ) { _vbaGenerateBoundsError(); JUMPOUT(*(int *)loc_9CB7FB); } v80 = *(_WORD *)a2; if ( v80 >= 0xC9 ) { _vbaGenerateBoundsError(); JUMPOUT(*(int *)loc_9CB815); } _EDX = 97 * v80; v82 = 96 * v79; __asm { fld qword ptr [ecx+edx*4+0D8h]; Load Real } if ( useSaveFDiv ) v82 = j__adj_fdiv_m64(SLODWORD(dbl_4012D8), SHIDWORD(dbl_4012D8)); else __asm { fdiv ds:dbl_4012D8 ; Divide Real } _EAX = v79 + v82; __asm { fadd qword ptr [ecx+eax*4+0C0h]; Add Real fsub ds:dbl_402690 ; Subtract Real fstp qword ptr [ebp+var_B0]; Store Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( _EAX & 0xD ) goto LABEL_296; createMomentumStruct( (Momentum *)&someSortOf_NpcXPos, (double *)v184, (double *)v183, (double *)&a4, (double *)&a5); someSortOf_value0_2 = 0; someSortOf_value0_1 = 0; someSortOf_SpecialAdress = 1065353216; sfxID = 75; runEffect( &sfxID, (Momentum *)&someSortOf_NpcXPos, (float *)&someSortOf_SpecialAdress, &someSortOf_value0_1, (WORD *)&someSortOf_value0_2); goto LABEL_281; } if ( (_WORD)v20 == 3 ) { if ( (signed __int16)PLAYER_COUNT < 3 || unkIsConnected == -1 ) { sfxID = 2; playSound((int)&sfxID); } v84 = *(_WORD *)a2; if ( v84 >= 0xC9 ) _vbaGenerateBoundsError(); v85 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); v86 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); _ECX = Player_ptr; _EDX = 97 * v84; __asm { fld qword ptr [ecx+edx*4+0C8h]; Load Real } _EAX = 97 * v85; __asm { fsub qword ptr [ecx+eax*4+0D0h]; Subtract Real fsub ds:sonic_accelarteFactor; Subtract Real } _EDX = 97 * v86; __asm { fstp qword ptr [ecx+edx*4+0C8h]; Store Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( _EAX & 0xD ) goto LABEL_296; sfxID = 3; sub_9C0800(&height, &sfxID); v91 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); __asm { fld flt_B2C6E8 ; Load Real } _EAX = Player_ptr; _EDX = 97 * v91; __asm { fstp qword ptr [eax+edx*4+0E8h]; Store Real and Pop } v94 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); Player_ptr[v94].UpwardJumpingForce = Jumpheight_JumpOnOtherPlayer; v95 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); v96 = v177; if ( Player_ptr[v95].Identity == 2 ) { v97 = v177->UpwardJumpingForce; v64 = __OFADD__(3, v97); v98 = v97 + 3; if ( v64 ) goto LABEL_297; v177->UpwardJumpingForce = v98; } if ( v96->IsSpinjumping == -1 ) { v99 = v96->UpwardJumpingForce; v64 = __OFSUB__(v99, 6); v100 = v99 - 6; if ( v64 ) goto LABEL_297; v96->UpwardJumpingForce = v100; } v101 = *(_WORD *)a2; if ( v101 >= 0xC9 ) _vbaGenerateBoundsError(); Player_ptr[v101].UpwardJumpingForce = 0; v102 = *(_WORD *)a2; if ( v102 >= 0xC9 ) _vbaGenerateBoundsError(); _EAX = Player_ptr; _EDX = 97 * v102; __asm { fld qword ptr [eax+edx*4+0E8h]; Load Real fcomp ds:dbl_401320 ; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( BYTE1(_EAX) & 0x41 ) { v105 = *(_WORD *)a2; if ( v105 >= 0xC9 ) _vbaGenerateBoundsError(); LODWORD(Player_ptr[v105].momentum.speedY) = -1717986918; HIDWORD(Player_ptr[v105].momentum.speedY) = 1069128089; } v106 = *(_WORD *)a2; if ( v106 >= 0xC9 ) _vbaGenerateBoundsError(); Player_ptr[v106].JumpButtonHeld = 0; a5 = 0; v107 = SLOWORD(height); v180 = 0; a4 = 0; v182 = 0; if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); v108 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); _ECX = Player_ptr; _EAX = 97 * v108; __asm { fld qword ptr [ecx+eax*4+0D0h]; Load Real } _EDX = 97 * v107; v112 = SLOWORD(height); __asm { fadd qword ptr [ecx+edx*4+0C8h]; Add Real fsub ds:dbl_402690 ; Subtract Real fstp qword ptr [ebp+var_B8]; Store Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( _EAX & 0xD ) goto LABEL_296; if ( (unsigned int)SLOWORD(height) >= 0xC9 ) { _vbaGenerateBoundsError(); JUMPOUT(*(int *)loc_9CBBA8); } if ( (unsigned int)SLOWORD(height) >= 0xC9 ) { _vbaGenerateBoundsError(); JUMPOUT(*(int *)loc_9CBBC0); } _EAX = 97 * SLOWORD(height); v114 = 96 * SLOWORD(height); __asm { fld qword ptr [ecx+eax*4+0D8h]; Load Real } if ( useSaveFDiv ) j__adj_fdiv_m64(SLODWORD(dbl_4012D8), SHIDWORD(dbl_4012D8)); else __asm { fdiv ds:dbl_4012D8 ; Divide Real } _EDX = v112 + v114; __asm { fadd qword ptr [ecx+edx*4+0C0h]; Add Real fsub ds:dbl_402690 ; Subtract Real fstp qword ptr [ebp+var_B0]; Store Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( _AX & 0xD ) LABEL_296: JUMPOUT(loc_40BA6C); createMomentumStruct((Momentum *)&monumentum_struct, (double *)v184, (double *)v183, (double *)&a4, (double *)&a5); someSortOf_value0_2 = 0; someSortOf_value0_1 = 0; someSortOf_SpecialAdress = 1065353216; sfxID = 75; runEffect( &sfxID, (Momentum *)&monumentum_struct, (float *)&someSortOf_SpecialAdress, &someSortOf_value0_1, (WORD *)&someSortOf_value0_2); goto LABEL_281; } if ( (_WORD)v20 == 5 ) { v117 = *(_WORD *)a2; v178 = *(_WORD *)a2; if ( v117 >= 0xC9 ) _vbaGenerateBoundsError(); v118 = *(_WORD *)a2; if ( v118 >= 0xC9 ) _vbaGenerateBoundsError(); v119 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); v120 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); _ECX = Player_ptr; _EAX = 97 * v118; __asm { fld qword ptr [ecx+eax*4+0D8h]; Load Real } if ( useSaveFDiv ) j__adj_fdiv_m64(SLODWORD(dbl_4012D8), SHIDWORD(dbl_4012D8)); else __asm { fdiv ds:dbl_4012D8 ; Divide Real } _EDX = 97 * v178; __asm { fadd qword ptr [ecx+edx*4+0C0h]; Add Real fnstsw ax ; Store Status Word (no wait) } if ( _AX & 0xD ) goto LABEL_296; _vbaFpR8(); _EAX = Player_ptr; __asm { fstp [ebp+var_15C] ; Store Real and Pop } _ECX = 97 * v120; v127 = 96 * v119; __asm { fld qword ptr [eax+ecx*4+0D8h]; Load Real } if ( useSaveFDiv ) _EAX = (PlayerMOB *)j__adj_fdiv_m64(SLODWORD(dbl_4012D8), SHIDWORD(dbl_4012D8)); else __asm { fdiv ds:dbl_4012D8 ; Divide Real } _EDX = v119 + v127; __asm { fadd qword ptr [eax+edx*4+0C0h]; Add Real fnstsw ax ; Store Status Word (no wait) } if ( _AX & 0xD ) goto LABEL_296; _vbaFpR8(); __asm { fcomp [ebp+var_15C] ; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( HIBYTE(_AX) & 1 ) { v131 = *(_WORD *)a2; if ( v131 >= 0xC9 ) _vbaGenerateBoundsError(); LODWORD(Player_ptr[v131].XMomentumPush) = 1065353216; v132 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); LODWORD(Player_ptr[v132].XMomentumPush) = -1082130432; } else { v133 = *(_WORD *)a2; v178 = *(_WORD *)a2; if ( v133 >= 0xC9 ) _vbaGenerateBoundsError(); v134 = *(_WORD *)a2; if ( v134 >= 0xC9 ) _vbaGenerateBoundsError(); v135 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); v136 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); _ECX = Player_ptr; _EDX = 97 * v134; v139 = v178; __asm { fld qword ptr [ecx+edx*4+0D8h]; Load Real } if ( useSaveFDiv ) v139 = j__adj_fdiv_m64(SLODWORD(dbl_4012D8), SHIDWORD(dbl_4012D8)); else __asm { fdiv ds:dbl_4012D8 ; Divide Real } _EDX = 97 * v139; __asm { fadd qword ptr [ecx+edx*4+0C0h]; Add Real fnstsw ax ; Store Status Word (no wait) } if ( _AX & 0xD ) goto LABEL_296; _vbaFpR8(); _EAX = Player_ptr; __asm { fstp [ebp+var_164] ; Store Real and Pop } _ECX = 97 * v136; v144 = 96 * v135; __asm { fld qword ptr [eax+ecx*4+0D8h]; Load Real } if ( useSaveFDiv ) _EAX = (PlayerMOB *)j__adj_fdiv_m64(SLODWORD(dbl_4012D8), SHIDWORD(dbl_4012D8)); else __asm { fdiv ds:dbl_4012D8 ; Divide Real } _EDX = v135 + v144; __asm { fadd qword ptr [eax+edx*4+0C0h]; Add Real fnstsw ax ; Store Status Word (no wait) } if ( _AX & 0xD ) goto LABEL_296; _vbaFpR8(); __asm { fcomp [ebp+var_164] ; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( HIBYTE(_AX) & 0x41 ) { v190 = -2147352572; v189 = 10; rtcRandomNext(&v189); __asm { fadd st, st ; Add Real fnstsw ax ; Store Status Word (no wait) } if ( _AX & 0xD ) goto LABEL_296; _vbaFPInt(v150); _vbaFpR4(v152); __asm { fcomp ds:flt_401304 ; Compare Real and Pop fnstsw ax ; Store Status Word (no wait) } if ( HIBYTE(_AX) & 0x40 ) v154 = 1; else v154 = 0; _vbaFreeVar(&v189); if ( !v154 ) { v156 = *(_WORD *)a2; if ( v156 >= 0xC9 ) _vbaGenerateBoundsError(); LODWORD(Player_ptr[v156].XMomentumPush) = 1065353216; v157 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); LODWORD(Player_ptr[v157].XMomentumPush) = -1082130432; goto LABEL_281; } v155 = *(_WORD *)a2; if ( v155 >= 0xC9 ) _vbaGenerateBoundsError(); LODWORD(Player_ptr[v155].XMomentumPush) = -1082130432; v149 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); } else { v148 = *(_WORD *)a2; if ( v148 >= 0xC9 ) _vbaGenerateBoundsError(); LODWORD(Player_ptr[v148].XMomentumPush) = -1082130432; v149 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) { _vbaGenerateBoundsError(); JUMPOUT(*(int *)loc_9CBF65); } } LODWORD(Player_ptr[v149].XMomentumPush) = 1065353216; } } LABEL_281: if ( word_B2D740 != -1 ) goto LABEL_293; v165 = WORD2(height); if ( WORD2(height) == 1 ) { v166 = *(_WORD *)a2; if ( v166 >= 0xC9 ) _vbaGenerateBoundsError(); if ( Player_ptr[v166].MountType == 1 ) { v167 = (unsigned int *)&height; LABEL_292: HarmPlayer(v167); goto LABEL_293; } } if ( v165 == 3 ) { v168 = SLOWORD(height); if ( (unsigned int)SLOWORD(height) >= 0xC9 ) _vbaGenerateBoundsError(); if ( Player_ptr[v168].MountType == 1 ) { v167 = a2; goto LABEL_292; } } LABEL_293: v2 = _vbaGenerateBoundsError; v4 = (unsigned __int16)(LOWORD(height) + 1); if ( __OFADD__(LOWORD(height), 1) ) { LABEL_297: _vbaErrorOverflow(); JUMPOUT(*(int *)algn_9CC2AA); } LODWORD(height) = (unsigned __int16)(LOWORD(height) + 1); } return v4; }