Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- float __thiscall sub_7C5690(int this, int a2)
- {
- int v2; // ebx@1
- int v3; // eax@1
- int v4; // ecx@3
- int v5; // edi@7
- int v6; // eax@7
- int v7; // edx@8
- unsigned int v8; // edx@10
- int v9; // eax@13
- int v10; // edi@14
- unsigned int v11; // eax@15
- int v12; // ecx@18
- int v13; // eax@25
- int v14; // eax@27
- int v15; // esi@31
- int v16; // eax@32
- int v17; // ecx@35
- unsigned int v18; // ecx@37
- int v19; // ecx@40
- int v20; // edi@40
- int v21; // eax@40
- int v22; // eax@41
- int v23; // edi@43
- int v24; // eax@45
- int v25; // esi@48
- int v26; // ecx@48
- int v27; // edi@50
- int v28; // eax@50
- int v29; // eax@50
- int v30; // edi@53
- int v31; // esi@53
- int v32; // eax@54
- int v33; // ecx@57
- unsigned int v34; // ecx@59
- int v35; // ecx@62
- int v36; // edx@62
- int v37; // ST28_4@62
- int v38; // eax@62
- int v39; // ecx@62
- int v40; // eax@62
- int v41; // eax@63
- int v42; // ST08_4@65
- int v43; // eax@65
- int v44; // eax@66
- float result; // eax@68
- unsigned int v46; // [sp+14h] [bp-10h]@15
- int v47; // [sp+14h] [bp-10h]@50
- int v48; // [sp+18h] [bp-Ch]@29
- signed int v49; // [sp+1Ch] [bp-8h]@15
- int v50; // [sp+1Ch] [bp-8h]@48
- int v51; // [sp+20h] [bp-4h]@3
- int v52; // [sp+20h] [bp-4h]@18
- int v53; // [sp+20h] [bp-4h]@50
- v2 = this;
- v3 = *(_DWORD *)(this + 264);
- if ( !(v3 & 1) && v3 )
- {
- v51 = *(_DWORD *)(this + 264);
- v4 = *(_DWORD *)(this + 264);
- }
- else
- {
- v4 = 0;
- v51 = 0;
- }
- while ( !(v4 & 1) && v4 )
- {
- v5 = *(_DWORD *)(v4 + 112);
- v6 = v4 + 112;
- if ( v5 )
- {
- v7 = *(_DWORD *)(v4 + 116);
- if ( !(v7 & 1) && v7 )
- v8 = v6 - *(_DWORD *)(v5 + 4) + v7;
- else
- v8 = v7 & 0xFFFFFFFE;
- *(_DWORD *)v8 = v5;
- *(_DWORD *)(*(_DWORD *)v6 + 4) = *(_DWORD *)(v4 + 116);
- *(_DWORD *)v6 = 0;
- *(_DWORD *)(v4 + 116) = 0;
- }
- sub_7CDE10(v4);
- sub_7C04A0(v51);
- v9 = v51 + *(_DWORD *)(v2 + 256);
- v4 = *(_DWORD *)(v9 + 4);
- v51 = *(_DWORD *)(v9 + 4);
- }
- v10 = *(_DWORD *)(v2 + 312);
- if ( v10 )
- {
- v11 = 0;
- v49 = 4;
- v46 = 0;
- do
- {
- if ( v49 & **(_DWORD **)(v2 + 272) )
- {
- if ( v11 == 15 )
- {
- v12 = 0;
- v52 = 0;
- }
- else
- {
- v52 = v11 + 1;
- v12 = v11 + 1;
- }
- if ( dword_ADFBC4 == 530 && v11 == 2 )
- {
- v52 = 15;
- v12 = 15;
- }
- if ( v12 < g_LiquidTypeDB.minIndex || v12 > g_LiquidTypeDB.maxIndex )
- v13 = 0;
- else
- v13 = g_LiquidTypeDB.Rows[v12 - g_LiquidTypeDB.minIndex];
- v14 = *(_DWORD *)(v13 + 56);
- if ( v14 < g_LiquidMaterialDB.minIndex || v14 > g_LiquidMaterialDB.maxIndex )
- v48 = 0;
- else
- v48 = g_LiquidMaterialDB.Rows[v14 - g_LiquidMaterialDB.minIndex];
- v15 = sub_7C0980();
- if ( v15 )
- v16 = v15 + *(_DWORD *)(v2 + 256);
- else
- v16 = v2 + 260;
- if ( *(_DWORD *)v16 )
- {
- v17 = *(_DWORD *)(v16 + 4);
- if ( !(v17 & 1) && v17 )
- v18 = *(_DWORD *)(v16 + 4) + v16 - *(_DWORD *)(*(_DWORD *)v16 + 4);
- else
- v18 = v17 & 0xFFFFFFFE;
- *(_DWORD *)v18 = *(_DWORD *)v16;
- *(_DWORD *)(*(_DWORD *)v16 + 4) = *(_DWORD *)(v16 + 4);
- *(_DWORD *)v16 = 0;
- *(_DWORD *)(v16 + 4) = 0;
- }
- v19 = *(_DWORD *)(v2 + 260);
- *(_DWORD *)v16 = v19;
- *(_DWORD *)(v16 + 4) = *(_DWORD *)(v19 + 4);
- *(_DWORD *)(v19 + 4) = v15;
- *(_DWORD *)(v2 + 260) = v16;
- *(_DWORD *)(v15 + 4) = v52;
- *(_DWORD *)(v15 + 92) = v2;
- *(_DWORD *)(v15 + 8) = *(_DWORD *)(v48 + 4);
- *(_DWORD *)(v15 + 12) = *(_DWORD *)(v2 + 124);
- *(_DWORD *)(v15 + 16) = *(_DWORD *)(v2 + 128);
- *(_DWORD *)(v15 + 20) = *(_DWORD *)(v2 + 132);
- *(_DWORD *)(v15 + 40) = *(_DWORD *)v10;
- *(_DWORD *)(v15 + 44) = *(_DWORD *)(v10 + 4);
- v20 = v10 + 8;
- *(_DWORD *)(v15 + 52) = 0;
- *(_DWORD *)(v15 + 56) = 0;
- *(_DWORD *)(v15 + 60) = 8;
- *(_DWORD *)(v15 + 64) = 8;
- v21 = (int)SMemAlloc(16, (int)".\\MapChunk.cpp", 0x1EBu, 0);
- if ( v21 )
- v22 = sub_8A31E0(v21, v20, *(_DWORD *)(v15 + 8));
- else
- v22 = 0;
- v23 = v20 + 648;
- *(_DWORD *)(v15 + 84) = v23;
- *(_DWORD *)(v15 + 68) = v22;
- v10 = v23 + 148;
- sub_7CDF80(v15);
- v11 = v46;
- }
- v49 *= 2;
- ++v11;
- v46 = v11;
- }
- while ( v11 < 4 );
- }
- v24 = *(_DWORD *)(v2 + 32);
- if ( v24 & 1 || !v24 )
- v24 = 0;
- v25 = *(_DWORD *)(v24 + 8);
- v26 = *(_DWORD *)(v25 + 184);
- v50 = *(_DWORD *)(v24 + 8);
- if ( v26 )
- {
- if ( sub_8A3060(v26) )
- {
- v27 = sub_8A3070(*(_DWORD *)(v25 + 184), *(_DWORD *)(v2 + 36), *(_DWORD *)(v2 + 40));
- v47 = v27;
- v28 = sub_8A30E0(*(_DWORD *)(v25 + 184), v27);
- sub_95DAA0(v2 + 320, v28, 64, 0);
- v29 = sub_8A30B0(*(_DWORD *)(v25 + 184), v27);
- sub_95DAA0(v2 + 332, v29, 64, 0);
- v53 = 0;
- if ( *(_DWORD *)(v27 + 4) )
- {
- while ( 1 )
- {
- v30 = sub_8A3090(*(_DWORD *)(v25 + 184), v27, v53);
- v31 = sub_7C0980();
- if ( v31 )
- v32 = v31 + *(_DWORD *)(v2 + 256);
- else
- v32 = v2 + 260;
- if ( *(_DWORD *)v32 )
- {
- v33 = *(_DWORD *)(v32 + 4);
- if ( !(v33 & 1) && v33 )
- v34 = *(_DWORD *)(v32 + 4) + v32 - *(_DWORD *)(*(_DWORD *)v32 + 4);
- else
- v34 = v33 & 0xFFFFFFFE;
- *(_DWORD *)v34 = *(_DWORD *)v32;
- *(_DWORD *)(*(_DWORD *)v32 + 4) = *(_DWORD *)(v32 + 4);
- *(_DWORD *)v32 = 0;
- *(_DWORD *)(v32 + 4) = 0;
- }
- v35 = *(_DWORD *)(v2 + 260);
- *(_DWORD *)v32 = v35;
- *(_DWORD *)(v32 + 4) = *(_DWORD *)(v35 + 4);
- *(_DWORD *)(v35 + 4) = v31;
- *(_DWORD *)(v2 + 260) = v32;
- *(_DWORD *)(v31 + 92) = v2;
- *(_DWORD *)(v31 + 4) = *(_WORD *)v30;
- *(_DWORD *)(v31 + 8) = *(_WORD *)(v30 + 2);
- *(_DWORD *)(v31 + 12) = *(_DWORD *)(v2 + 124);
- *(_DWORD *)(v31 + 16) = *(_DWORD *)(v2 + 128);
- *(_DWORD *)(v31 + 20) = *(_DWORD *)(v2 + 132);
- *(_DWORD *)(v31 + 40) = *(_DWORD *)(v30 + 4);
- *(_DWORD *)(v31 + 44) = *(_DWORD *)(v30 + 8);
- v36 = *(_BYTE *)(v30 + 13);
- v37 = *(_BYTE *)(v30 + 12);
- v38 = v37 + *(_BYTE *)(v30 + 14);
- v39 = v36 + *(_BYTE *)(v30 + 15);
- *(_DWORD *)(v31 + 52) = v36;
- *(_DWORD *)(v31 + 56) = v37;
- *(_DWORD *)(v31 + 60) = v39;
- *(_DWORD *)(v31 + 64) = v38;
- v40 = (int)SMemAlloc(20, (int)".\\MapChunk.cpp", 0x21Eu, 0);
- v41 = v40 ? sub_8A3280(v40, *(_DWORD *)(v50 + 184), v30) : 0;
- *(_DWORD *)(v31 + 68) = v41;
- v42 = *(_BYTE *)(v30 + 14) * *(_BYTE *)(v30 + 15);
- v43 = sub_8A3110(*(_DWORD *)(v50 + 184), v30);
- sub_95DAA0(v31 + 72, v43, v42, 0);
- sub_7CDF80(v31);
- ++v53;
- if ( (unsigned int)v53 >= *(_DWORD *)(v47 + 4) )
- break;
- v27 = v47;
- v25 = v50;
- }
- }
- }
- }
- v44 = *(_DWORD *)(v2 + 264);
- if ( v44 & 1 || !v44 )
- {
- *(float *)(v2 + 100) = 3.4028235e38;
- result = -3.4028235e38;
- *(float *)(v2 + 104) = 3.4028235e38;
- *(float *)(v2 + 108) = 3.4028235e38;
- *(float *)(v2 + 112) = -3.4028235e38;
- *(float *)(v2 + 116) = -3.4028235e38;
- *(float *)(v2 + 120) = -3.4028235e38;
- }
- else
- {
- result = COERCE_FLOAT(sub_7C5530(v2, v2 + 100));
- }
- return result;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement