comparison mm7_4.cpp @ 157:8e0e2991f9d1

Слияние
author Ritor1
date Tue, 12 Feb 2013 18:16:34 +0600
parents 796b79187c27
children 572d821561f3
comparison
equal deleted inserted replaced
156:2cb13d295f4b 157:8e0e2991f9d1
975 LABEL_54: 975 LABEL_54:
976 *(int *)a4 = 0; 976 *(int *)a4 = 0;
977 return dword_720F20[v22]; 977 return dword_720F20[v22];
978 } 978 }
979 979
980
981 //not sure if right- or left-handed coordinate space assumed, so this could be normal of inverse normal
982 // for a right-handed system, that would be an inverse normal
980 //----- (0046DCC8) -------------------------------------------------------- 983 //----- (0046DCC8) --------------------------------------------------------
981 signed __int64 __fastcall _46DCC8_get_gravity_direction_outdoor(int a1, int a2, Vec3_int_ *a3) 984 void ODM_GetTerrainNormalAt(int pos_x, int pos_z, Vec3_int_ *out)
982 { 985 {
983 int v3; // ebx@1 986 auto grid_x = WorldPosToGridCellX(pos_x);
984 int v4; // ST4C_4@1 987 auto grid_z = WorldPosToGridCellZ(pos_z) - 1;
985 unsigned int v5; // ST54_4@1 988
986 unsigned int v6; // edi@1 989 auto grid_pos_x1 = GridCellToWorldPosX(grid_x);
987 unsigned int v7; // ST50_4@1 990 auto grid_pos_x2 = GridCellToWorldPosX(grid_x + 1);
988 int v8; // edi@1 991 auto grid_pos_z1 = GridCellToWorldPosZ(grid_z);
989 int v9; // esi@1 992 auto grid_pos_z2 = GridCellToWorldPosZ(grid_z + 1);
990 int v10; // ebx@1 993
991 int v11; // ecx@2 994 auto x1z1_y = pOutdoor->DoGetHeightOnTerrain(grid_x, grid_z);
992 int v12; // eax@2 995 auto x2z1_y = pOutdoor->DoGetHeightOnTerrain(grid_x + 1, grid_z);
993 int v13; // edx@2 996 auto x2z2_y = pOutdoor->DoGetHeightOnTerrain(grid_x + 1, grid_z + 1);
994 int v14; // ebx@2 997 auto x1z2_y = pOutdoor->DoGetHeightOnTerrain(grid_x, grid_z + 1);
995 double v15; // st7@4 998
996 double v16; // st6@4 999 float side1_dx, side1_dy, side1_dz,
997 double v17; // st5@4 1000 side2_dx, side2_dy, side2_dz;
998 float v18; // ST44_4@4 1001
999 float v19; // ST54_4@4 1002 auto dx = abs(pos_x - grid_pos_x1),
1000 double v20; // st4@4 1003 dz = abs(grid_pos_z1 - pos_z);
1001 double v21; // st5@4 1004 if (dz >= dx)
1002 float v22; // ST44_4@6 1005 {
1003 double v23; // st7@4 1006 side1_dy = (double)(x1z1_y - x1z2_y);
1004 double v24; // st7@6 1007 side2_dy = (double)(x2z2_y - x1z2_y);
1005 signed __int64 result; // qax@6 1008 side2_dx = (double)(grid_pos_x2 - grid_pos_x1);
1006 int v26; // [sp+14h] [bp-44h]@1 1009 side1_dx = (double)(grid_pos_x1 - grid_pos_x1);
1007 int v27; // [sp+18h] [bp-40h]@1 1010 side2_dz = (double)(grid_pos_z2 - grid_pos_z2); // bug? z2 - z2
1008 int v28; // [sp+20h] [bp-38h]@1 1011 side1_dz = (double)(grid_pos_z2 - grid_pos_z2); // z1 - z2
1009 int v29; // [sp+24h] [bp-34h]@1 1012 Log::Warning(L"%s %s %u\n", __FILE__, __FUNCTION__, __LINE__);
1010 int v30; // [sp+28h] [bp-30h]@1 1013 /* |\
1011 int v31; // [sp+2Ch] [bp-2Ch]@1 1014 side1 | \
1012 int v32; // [sp+30h] [bp-28h]@1 1015 |____\
1013 int v33; // [sp+34h] [bp-24h]@1 1016 side 2 */
1014 int v34; // [sp+38h] [bp-20h]@1
1015 int v35; // [sp+3Ch] [bp-1Ch]@1
1016 int v36; // [sp+40h] [bp-18h]@1
1017 int v37; // [sp+4Ch] [bp-Ch]@2
1018 float v38; // [sp+4Ch] [bp-Ch]@4
1019 int v39; // [sp+50h] [bp-8h]@2
1020 float v40; // [sp+50h] [bp-8h]@4
1021 int v41; // [sp+54h] [bp-4h]@2
1022
1023 v3 = a1;
1024 v4 = a2;
1025 v5 = WorldPosToGridCellX(a1);
1026 v6 = WorldPosToGridCellZ(v4) - 1;
1027 v33 = GridCellToWorldPosX(v5);
1028 v34 = GridCellToWorldPosX(v5 + 1);
1029 v35 = GridCellToWorldPosX(v5 + 1);
1030 v36 = GridCellToWorldPosX(v5);
1031 v29 = GridCellToWorldPosZ(v6);
1032 v30 = GridCellToWorldPosZ(v6);
1033 v7 = v6 + 1;
1034 v31 = GridCellToWorldPosZ(v6 + 1);
1035 v32 = GridCellToWorldPosZ(v6 + 1);
1036 v26 = pOutdoor->DoGetHeightOnTerrain(v5, v6);
1037 v27 = pOutdoor->DoGetHeightOnTerrain(v5 + 1, v6);
1038 v8 = pOutdoor->DoGetHeightOnTerrain(v5 + 1, v6 + 1);
1039 v28 = pOutdoor->DoGetHeightOnTerrain(v5, v7);
1040 v9 = v29;
1041 v10 = abs(v3 - v33);
1042 if ( abs(v29 - v4) >= v10 )
1043 {
1044 v11 = v33;
1045 v37 = v28;
1046 v39 = v36;
1047 v12 = v35;
1048 v41 = v32;
1049 v13 = v31;
1050 v14 = v8;
1051 v8 = v26;
1052 } 1017 }
1053 else 1018 else
1054 { 1019 {
1055 v11 = v35; 1020 side1_dy = (double)(x2z2_y - x2z1_y);
1056 v41 = v30; 1021 side2_dy = (double)(x1z1_y - x2z1_y);
1057 v39 = v34; 1022 side2_dx = (double)(grid_pos_x1 - grid_pos_x2);
1058 v12 = v33; 1023 side1_dx = (double)(grid_pos_x2 - grid_pos_x2);
1059 v13 = v29; 1024 side2_dz = (double)(grid_pos_z1 - grid_pos_z1);
1060 v9 = v31; 1025 side1_dz = (double)(grid_pos_z2 - grid_pos_z1);
1061 v37 = v27; 1026
1062 v14 = v26; 1027 /* side 2
1063 } 1028 _____
1064 v15 = (double)(v12 - v39); 1029 \ |
1065 v16 = (double)(v13 - v41); 1030 \ | side 1
1066 v17 = (double)(v14 - v37); 1031 \| */
1067 v18 = (double)(v11 - v39); 1032 }
1068 v19 = (double)(v9 - v41); 1033
1069 v20 = (double)(v8 - v37); 1034 float nx = side1_dy * side2_dz - side1_dz * side2_dy;
1070 v38 = v20 * v16 - v19 * v17; 1035 float ny = side1_dx * side2_dy - side1_dy * side2_dx;
1071 v40 = v18 * v17 - v20 * v15; 1036 float nz = side1_dz * side2_dx - side1_dx * side2_dz;
1072 v21 = v19 * v15 - v18 * v16; 1037
1073 v23 = sqrt(v21 * v21 + v40 * v40 + v38 * v38); 1038 float mag = sqrt(nx * nx + ny * ny + nz * nz);
1074 if ( v23 == 0.0 ) 1039 if (fabsf(mag) < 1e-6f)
1075 { 1040 {
1076 a3->y = 0; 1041 out->y = 0;
1077 a3->x = 0; 1042 out->x = 0;
1078 a3->z = 65536; 1043 out->z = 65536;
1079 } 1044 }
1080 v24 = 1.0 / v23; 1045 else
1081 a3->x = (signed __int64)(v24 * v38 * 65536.0); 1046 {
1082 a3->y = (signed __int64)(v24 * v40 * 65536.0); 1047 float invmag = 1.0 / mag;
1083 v22 = v21; 1048 out->x = invmag * nx * 65536.0;
1084 result = (signed __int64)(v24 * v22 * 65536.0); 1049 out->y = invmag * ny * 65536.0;
1085 a3->z = result; 1050 out->z = invmag * nz * 65536.0;
1086 return result; 1051 }
1087 } 1052 }
1088 // 47F44B: using guessed type int __stdcall WorldPosToGridCellX(int); 1053
1089 // 47F458: using guessed type int __stdcall WorldPosToGridCellZ(int);
1090 // 47F469: using guessed type int __stdcall GridCellToWorldPosX(int);
1091 // 47F476: using guessed type int __stdcall GridCellToWorldPosZ(int);
1092 1054
1093 //----- (0046DEF2) -------------------------------------------------------- 1055 //----- (0046DEF2) --------------------------------------------------------
1094 unsigned int __fastcall sub_46DEF2(signed int a2, unsigned int uLayingItemID) 1056 unsigned int __fastcall sub_46DEF2(signed int a2, unsigned int uLayingItemID)
1095 { 1057 {
1096 unsigned int result; // eax@1 1058 unsigned int result; // eax@1
1301 if ( v3 ) 1263 if ( v3 )
1302 { 1264 {
1303 do 1265 do
1304 { 1266 {
1305 v4 = *v3; 1267 v4 = *v3;
1306 if ( (v4 & 7) == 5 ) 1268 if ( (v4 & 7) == OBJECT_Decoration)
1307 { 1269 {
1308 v5 = &pLevelDecorations[(signed __int16)v4 >> 3]; 1270 v5 = &pLevelDecorations[(signed __int16)v4 >> 3];
1309 if ( !(v5->field_2 & 0x20) ) 1271 if ( !(v5->field_2 & 0x20) )
1310 { 1272 {
1311 v6 = &pDecorationList->pDecorations[v5->uDecorationDescID]; 1273 v6 = &pDecorationList->pDecorations[v5->uDecorationDescID];
3095 if (pParty->pHirelings[1].pName) 3057 if (pParty->pHirelings[1].pName)
3096 pTmpBuf[v22++] = 1; 3058 pTmpBuf[v22++] = 1;
3097 3059
3098 for (uint i = 0; i < pNPCStats->uNumNewNPCs; ++i) 3060 for (uint i = 0; i < pNPCStats->uNumNewNPCs; ++i)
3099 { 3061 {
3100 if (pNPCStats->pNewNPCData[i].uFlags & 0x80) 3062 if (pNPCStats->pNewNPCData[i].uFlags == 128)
3101 { 3063 {
3102 if (!pParty->pHirelings[0].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[0].pName)) 3064 if (!pParty->pHirelings[0].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[0].pName))
3103 { 3065 {
3104 if (!pParty->pHirelings[1].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[1].pName)) 3066 if (!pParty->pHirelings[1].pName || strcmp(pNPCStats->pNewNPCData[i].pName, pParty->pHirelings[1].pName))
3105 pTmpBuf[v22++] = i + 2; 3067 pTmpBuf[v22++] = i + 2;
3271 } 3233 }
3272 if ( pParty->bTurnBasedModeOn == 1 ) 3234 if ( pParty->bTurnBasedModeOn == 1 )
3273 { 3235 {
3274 if ( pTurnEngine->field_4 != 1 ) 3236 if ( pTurnEngine->field_4 != 1 )
3275 { 3237 {
3276 if ( (pTurnEngine->pQueue[0].uPackedID & 7) == 4 ) 3238 if ( (pTurnEngine->pQueue[0].uPackedID & 7) == OBJECT_Player)
3277 { 3239 {
3278 //v14 = 0; 3240 //v14 = 0;
3279 if ( pTurnEngine->uActorQueueSize > 0 ) 3241 if ( pTurnEngine->uActorQueueSize > 0 )
3280 { 3242 {
3281 //v15 = (char *)pTurnEngine->pQueue; 3243 //v15 = (char *)pTurnEngine->pQueue;
3282 for (uint i = 0; i < pTurnEngine->uActorQueueSize; ++i) 3244 for (uint i = 0; i < pTurnEngine->uActorQueueSize; ++i)
3283 { 3245 {
3284 auto pElem = pTurnEngine->pQueue + i; 3246 auto pElem = pTurnEngine->pQueue + i;
3285 3247
3286 if ( (pElem->uPackedID & 7) != 4 ) 3248 if ( (pElem->uPackedID & 7) != OBJECT_Player)
3287 break; 3249 break;
3288 v16 = dword_5079D0; 3250 v16 = dword_5079D0;
3289 if ( pParty->uFlags & 0x10 ) 3251 if ( pParty->uFlags & 0x10 )
3290 { 3252 {
3291 v16 = dword_5079CC; 3253 v16 = dword_5079CC;
4214 } 4176 }
4215 4177
4216 v51 = v65; 4178 v51 = v65;
4217 if ( v65 ) 4179 if ( v65 )
4218 goto LABEL_135; 4180 goto LABEL_135;
4219 if ( pCurrentScreen != 5 ) 4181 if ( pCurrentScreen != SCREEN_REST )
4220 { 4182 {
4221 v52 = (signed int)&pPlayers[1]; 4183 v52 = (signed int)&pPlayers[1];
4222 while ( 1 ) 4184 while ( 1 )
4223 { 4185 {
4224 v53 = *(int *)v52; 4186 v53 = *(int *)v52;
4230 } 4192 }
4231 *(int *)(v53 + 16) = 0; 4193 *(int *)(v53 + 16) = 0;
4232 *(int *)(v53 + 20) = 0; 4194 *(int *)(v53 + 20) = 0;
4233 v51 = 1; 4195 v51 = 1;
4234 LABEL_135: 4196 LABEL_135:
4235 if ( pCurrentScreen != 5 4197 if ( pCurrentScreen != SCREEN_REST
4236 && (!v51 || dword_5C35C0) ) 4198 && (!v51 || dword_5C35C0) )
4237 uGameState = 8; 4199 uGameState = 8;
4238 } 4200 }
4239 if ( uActiveCharacter ) 4201 if ( uActiveCharacter )
4240 { 4202 {
4241 if ( pCurrentScreen != 5 ) 4203 if ( pCurrentScreen != SCREEN_REST )
4242 { 4204 {
4243 v54 = pPlayers[uActiveCharacter]; 4205 v54 = pPlayers[uActiveCharacter];
4244 if ( v54->pConditions[2] 4206 if ( v54->pConditions[2]
4245 || v54->pConditions[12] 4207 || v54->pConditions[12]
4246 || v54->pConditions[13] 4208 || v54->pConditions[13]
5741 pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0; 5703 pMessageQueue_50CBD0->uNumMessages = pMessageQueue_50CBD0->pMessages[0].field_8 != 0;
5742 pAudioPlayer->SetMusicVolume((pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0)); 5704 pAudioPlayer->SetMusicVolume((pSoundVolumeLevels[uMusicVolimeMultiplier] * 64.0));
5743 ++pIcons_LOD->uTexturePacksCount; 5705 ++pIcons_LOD->uTexturePacksCount;
5744 if ( !pIcons_LOD->uNumPrevLoadedFiles ) 5706 if ( !pIcons_LOD->uNumPrevLoadedFiles )
5745 pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles; 5707 pIcons_LOD->uNumPrevLoadedFiles = pIcons_LOD->uNumLoadedFiles;
5746 pCurrentScreen = 21;// 5708 pCurrentScreen = SCREEN_PARTY_CREATION;
5747 uPlayerCreationUI_ArrowAnim = 0; 5709 uPlayerCreationUI_ArrowAnim = 0;
5748 uPlayerCreationUI_SkySliderPos = 0; 5710 uPlayerCreationUI_SkySliderPos = 0;
5749 uPlayerCreationUI_SelectedCharacter = 0; 5711 uPlayerCreationUI_SelectedCharacter = 0;
5750 v0 = LOBYTE(pFontCreate->uFontHeight) - 2; 5712 v0 = LOBYTE(pFontCreate->uFontHeight) - 2;
5751 pTexture_IC_KNIGHT[0] = pIcons_LOD->LoadTexturePtr("IC_KNIGHT", TEXTURE_16BIT_PALETTE); 5713 pTexture_IC_KNIGHT[0] = pIcons_LOD->LoadTexturePtr("IC_KNIGHT", TEXTURE_16BIT_PALETTE);
6243 pFontQuick->_44D2FD_prolly_draw_credits_entry(pFontCChar, 0, a4, (signed __int16)pTexture2.uWidth, (signed __int16)pTexture2.uHeight, pColor1, 6205 pFontQuick->_44D2FD_prolly_draw_credits_entry(pFontCChar, 0, a4, (signed __int16)pTexture2.uWidth, (signed __int16)pTexture2.uHeight, pColor1,
6244 pColor2, pString, pTexture2.pPixels, (signed __int16)pTexture2.uWidth); 6206 pColor2, pString, pTexture2.pPixels, (signed __int16)pTexture2.uWidth);
6245 free(pString); 6207 free(pString);
6246 pWindow_MainMenu = GUIWindow::Create(0, 0, 640, 480, WINDOW_MainMenu, 0, (int)ptr); 6208 pWindow_MainMenu = GUIWindow::Create(0, 0, 640, 480, WINDOW_MainMenu, 0, (int)ptr);
6247 pWindow_MainMenu->CreateButton(0, 0, 0, 0, 1, 0, 0x71u, 0, 0x1Bu, "", 0); 6209 pWindow_MainMenu->CreateButton(0, 0, 0, 0, 1, 0, 0x71u, 0, 0x1Bu, "", 0);
6248 pCurrentScreen = 9; // Credits 6210 pCurrentScreen = SCREEN_CREATORS;
6249 SetCurrentMenuID(MENU_Credits); 6211 SetCurrentMenuID(MENU_Credits);
6250 do 6212 do
6251 { 6213 {
6252 while ( PeekMessageA(&Msg, 0, 0, 0, 1) ) 6214 while ( PeekMessageA(&Msg, 0, 0, 0, 1) )
6253 { 6215 {
6272 pRenderer->EndScene(); 6234 pRenderer->EndScene();
6273 ++a5; 6235 ++a5;
6274 if ( a5 >= (signed __int16)pTexture2.uHeight ) 6236 if ( a5 >= (signed __int16)pTexture2.uHeight )
6275 SetCurrentMenuID(MENU_MAIN); 6237 SetCurrentMenuID(MENU_MAIN);
6276 pRenderer->Present(); 6238 pRenderer->Present();
6277 pCurrentScreen = 0;//Ritor1: temporarily, must be corrected GUI_MainMenuMessageProc() 6239 pCurrentScreen = SCREEN_GAME;//Ritor1: temporarily, must be corrected GUI_MainMenuMessageProc()
6278 GUI_MainMenuMessageProc(); 6240 GUI_MainMenuMessageProc();
6279 } 6241 }
6280 } 6242 }
6281 while ( GetCurrentMenuID() == MENU_Credits ); 6243 while ( GetCurrentMenuID() == MENU_Credits );
6282 pAudioPlayer->_4AA258(1); 6244 pAudioPlayer->_4AA258(1);
9706 v19 = pGlobalTXT_LocalizationStrings[155]; 9668 v19 = pGlobalTXT_LocalizationStrings[155];
9707 goto LABEL_77; 9669 goto LABEL_77;
9708 } 9670 }
9709 Party::TakeGold(v21); 9671 Party::TakeGold(v21);
9710 } 9672 }
9711 LOBYTE(v2->uFlags) |= 0x80u; 9673 //LOBYTE(v2->uFlags) |= 0x80u;
9674 v2->uFlags = 128;
9712 pParty->field_709 = 0; 9675 pParty->field_709 = 0;
9713 sub_44A56A(); 9676 sub_44A56A();
9714 if ( pParty->pHirelings[0].pName ) 9677 if ( pParty->pHirelings[0].pName )
9715 { 9678 {
9716 memcpy(&pParty->pHirelings[1], v2, sizeof(pParty->pHirelings[1])); 9679 memcpy(&pParty->pHirelings[1], v2, sizeof(pParty->pHirelings[1]));
14726 if ( v29 ) 14689 if ( v29 )
14727 { 14690 {
14728 LODWORD(v20) = pBLVRenderParams->field_40 << 16; 14691 LODWORD(v20) = pBLVRenderParams->field_40 << 16;
14729 HIDWORD(v20) = pBLVRenderParams->field_40 >> 16; 14692 HIDWORD(v20) = pBLVRenderParams->field_40 >> 16;
14730 v21 = v20 / x; 14693 v21 = v20 / x;
14731 v0->field_0 = (unsigned __int64)(v10->scale * v20 / x) >> 16; 14694 v0->_screenspace_x_scaler_packedfloat = (unsigned __int64)(v10->scale * v20 / x) >> 16;
14732 a5a = (unsigned __int64)(v10->scale * (signed __int64)v21) >> 16; 14695 a5a = (unsigned __int64)(v10->scale * (signed __int64)v21) >> 16;
14733 } 14696 }
14734 else 14697 else
14735 { 14698 {
14736 //v14 = &pGame->pIndoorCameraD3D; 14699 //v14 = &pGame->pIndoorCameraD3D;
14740 v0->fov_y = v15; 14703 v0->fov_y = v15;
14741 //v17 = v16 + 6.7553994e15; 14704 //v17 = v16 + 6.7553994e15;
14742 LODWORD(v18) = 0; 14705 LODWORD(v18) = 0;
14743 HIDWORD(v18) = floorf(v16 + 0.5f); 14706 HIDWORD(v18) = floorf(v16 + 0.5f);
14744 v19 = v18 / x; 14707 v19 = v18 / x;
14745 v0->field_0 = (unsigned __int64)(v10->scale * v18 / x) >> 16; 14708 v0->_screenspace_x_scaler_packedfloat = (unsigned __int64)(v10->scale * v18 / x) >> 16;
14746 a5a = (unsigned __int64)(v10->scale * (signed __int64)v19) >> 16; 14709 a5a = (unsigned __int64)(v10->scale * (signed __int64)v19) >> 16;
14747 } 14710 }
14748 v0->field_4 = a5a; 14711 v0->_screenspace_y_scaler_packedfloat = a5a;
14749 if ( (signed __int64)p->pActorBuffs[3].uExpireTime <= 0 ) 14712 if ( (signed __int64)p->pActorBuffs[3].uExpireTime <= 0 )
14750 { 14713 {
14751 if ( (signed __int64)p->pActorBuffs[10].uExpireTime > 0 ) 14714 if ( (signed __int64)p->pActorBuffs[10].uExpireTime > 0 )
14752 { 14715 {
14753 a5b = (unsigned __int64)(pGame->pStru6Instance->_4A806F(p) * (signed __int64)v0->field_4) >> 16; 14716 a5b = (unsigned __int64)(pGame->pStru6Instance->_4A806F(p) * (signed __int64)v0->_screenspace_y_scaler_packedfloat) >> 16;
14754 goto LABEL_43; 14717 goto LABEL_43;
14755 } 14718 }
14756 } 14719 }
14757 else 14720 else
14758 { 14721 {
14759 v22 = p->pActorBuffs[3].uPower; 14722 v22 = p->pActorBuffs[3].uPower;
14760 if ( v22 ) 14723 if ( v22 )
14761 { 14724 {
14762 v23 = (unsigned __int64)(65536 / (unsigned __int16)v22 * (signed __int64)v0->field_0) >> 16; 14725 v23 = (unsigned __int64)(65536 / (unsigned __int16)v22 * (signed __int64)v0->_screenspace_x_scaler_packedfloat) >> 16;
14763 v24 = p->pActorBuffs[3].uPower; 14726 v24 = p->pActorBuffs[3].uPower;
14764 v0->field_0 = v23; 14727 v0->_screenspace_x_scaler_packedfloat = v23;
14765 a5b = (unsigned __int64)(65536 / v24 * (signed __int64)v0->field_4) >> 16; 14728 a5b = (unsigned __int64)(65536 / v24 * (signed __int64)v0->_screenspace_y_scaler_packedfloat) >> 16;
14766 LABEL_43: 14729 LABEL_43:
14767 v0->field_4 = a5b; 14730 v0->_screenspace_y_scaler_packedfloat = a5b;
14768 goto LABEL_44; 14731 goto LABEL_44;
14769 } 14732 }
14770 } 14733 }
14771 LABEL_44: 14734 LABEL_44:
14772 HIWORD(v25) = HIWORD(x); 14735 HIWORD(v25) = HIWORD(x);