Advertisement
Guest User

Untitled

a guest
May 20th, 2017
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.43 KB | None | 0 0
  1. float __thiscall sub_7C5690(int this, int a2)
  2. {
  3.     int v2; // ebx@1
  4.     int v3; // eax@1
  5.     int v4; // ecx@3
  6.     int v5; // edi@7
  7.     int v6; // eax@7
  8.     int v7; // edx@8
  9.     unsigned int v8; // edx@10
  10.     int v9; // eax@13
  11.     int v10; // edi@14
  12.     unsigned int v11; // eax@15
  13.     int v12; // ecx@18
  14.     int v13; // eax@25
  15.     int v14; // eax@27
  16.     int v15; // esi@31
  17.     int v16; // eax@32
  18.     int v17; // ecx@35
  19.     unsigned int v18; // ecx@37
  20.     int v19; // ecx@40
  21.     int v20; // edi@40
  22.     int v21; // eax@40
  23.     int v22; // eax@41
  24.     int v23; // edi@43
  25.     int v24; // eax@45
  26.     int v25; // esi@48
  27.     int v26; // ecx@48
  28.     int v27; // edi@50
  29.     int v28; // eax@50
  30.     int v29; // eax@50
  31.     int v30; // edi@53
  32.     int v31; // esi@53
  33.     int v32; // eax@54
  34.     int v33; // ecx@57
  35.     unsigned int v34; // ecx@59
  36.     int v35; // ecx@62
  37.     int v36; // edx@62
  38.     int v37; // ST28_4@62
  39.     int v38; // eax@62
  40.     int v39; // ecx@62
  41.     int v40; // eax@62
  42.     int v41; // eax@63
  43.     int v42; // ST08_4@65
  44.     int v43; // eax@65
  45.     int v44; // eax@66
  46.     float result; // eax@68
  47.     unsigned int v46; // [sp+14h] [bp-10h]@15
  48.     int v47; // [sp+14h] [bp-10h]@50
  49.     int v48; // [sp+18h] [bp-Ch]@29
  50.     signed int v49; // [sp+1Ch] [bp-8h]@15
  51.     int v50; // [sp+1Ch] [bp-8h]@48
  52.     int v51; // [sp+20h] [bp-4h]@3
  53.     int v52; // [sp+20h] [bp-4h]@18
  54.     int v53; // [sp+20h] [bp-4h]@50
  55.  
  56.     v2 = this;
  57.     v3 = *(_DWORD *)(this + 264);
  58.     if ( !(v3 & 1) && v3 )
  59.     {
  60.         v51 = *(_DWORD *)(this + 264);
  61.         v4 = *(_DWORD *)(this + 264);
  62.     }
  63.     else
  64.     {
  65.         v4 = 0;
  66.         v51 = 0;
  67.     }
  68.     while ( !(v4 & 1) && v4 )
  69.     {
  70.         v5 = *(_DWORD *)(v4 + 112);
  71.         v6 = v4 + 112;
  72.         if ( v5 )
  73.         {
  74.             v7 = *(_DWORD *)(v4 + 116);
  75.             if ( !(v7 & 1) && v7 )
  76.                 v8 = v6 - *(_DWORD *)(v5 + 4) + v7;
  77.             else
  78.                 v8 = v7 & 0xFFFFFFFE;
  79.             *(_DWORD *)v8 = v5;
  80.             *(_DWORD *)(*(_DWORD *)v6 + 4) = *(_DWORD *)(v4 + 116);
  81.             *(_DWORD *)v6 = 0;
  82.             *(_DWORD *)(v4 + 116) = 0;
  83.         }
  84.         sub_7CDE10(v4);
  85.         sub_7C04A0(v51);
  86.         v9 = v51 + *(_DWORD *)(v2 + 256);
  87.         v4 = *(_DWORD *)(v9 + 4);
  88.         v51 = *(_DWORD *)(v9 + 4);
  89.     }
  90.     v10 = *(_DWORD *)(v2 + 312);
  91.     if ( v10 )
  92.     {
  93.         v11 = 0;
  94.         v49 = 4;
  95.         v46 = 0;
  96.         do
  97.         {
  98.             if ( v49 & **(_DWORD **)(v2 + 272) )
  99.             {
  100.                 if ( v11 == 15 )
  101.                 {
  102.                     v12 = 0;
  103.                     v52 = 0;
  104.                 }
  105.                 else
  106.                 {
  107.                     v52 = v11 + 1;
  108.                     v12 = v11 + 1;
  109.                 }
  110.                 if ( dword_ADFBC4 == 530 && v11 == 2 )
  111.                 {
  112.                     v52 = 15;
  113.                     v12 = 15;
  114.                 }
  115.                 if ( v12 < g_LiquidTypeDB.minIndex || v12 > g_LiquidTypeDB.maxIndex )
  116.                     v13 = 0;
  117.                 else
  118.                     v13 = g_LiquidTypeDB.Rows[v12 - g_LiquidTypeDB.minIndex];
  119.                 v14 = *(_DWORD *)(v13 + 56);
  120.                 if ( v14 < g_LiquidMaterialDB.minIndex || v14 > g_LiquidMaterialDB.maxIndex )
  121.                     v48 = 0;
  122.                 else
  123.                     v48 = g_LiquidMaterialDB.Rows[v14 - g_LiquidMaterialDB.minIndex];
  124.                 v15 = sub_7C0980();
  125.                 if ( v15 )
  126.                     v16 = v15 + *(_DWORD *)(v2 + 256);
  127.                 else
  128.                     v16 = v2 + 260;
  129.                 if ( *(_DWORD *)v16 )
  130.                 {
  131.                     v17 = *(_DWORD *)(v16 + 4);
  132.                     if ( !(v17 & 1) && v17 )
  133.                         v18 = *(_DWORD *)(v16 + 4) + v16 - *(_DWORD *)(*(_DWORD *)v16 + 4);
  134.                     else
  135.                         v18 = v17 & 0xFFFFFFFE;
  136.                     *(_DWORD *)v18 = *(_DWORD *)v16;
  137.                     *(_DWORD *)(*(_DWORD *)v16 + 4) = *(_DWORD *)(v16 + 4);
  138.                     *(_DWORD *)v16 = 0;
  139.                     *(_DWORD *)(v16 + 4) = 0;
  140.                 }
  141.                 v19 = *(_DWORD *)(v2 + 260);
  142.                 *(_DWORD *)v16 = v19;
  143.                 *(_DWORD *)(v16 + 4) = *(_DWORD *)(v19 + 4);
  144.                 *(_DWORD *)(v19 + 4) = v15;
  145.                 *(_DWORD *)(v2 + 260) = v16;
  146.                 *(_DWORD *)(v15 + 4) = v52;
  147.                 *(_DWORD *)(v15 + 92) = v2;
  148.                 *(_DWORD *)(v15 + 8) = *(_DWORD *)(v48 + 4);
  149.                 *(_DWORD *)(v15 + 12) = *(_DWORD *)(v2 + 124);
  150.                 *(_DWORD *)(v15 + 16) = *(_DWORD *)(v2 + 128);
  151.                 *(_DWORD *)(v15 + 20) = *(_DWORD *)(v2 + 132);
  152.                 *(_DWORD *)(v15 + 40) = *(_DWORD *)v10;
  153.                 *(_DWORD *)(v15 + 44) = *(_DWORD *)(v10 + 4);
  154.                 v20 = v10 + 8;
  155.                 *(_DWORD *)(v15 + 52) = 0;
  156.                 *(_DWORD *)(v15 + 56) = 0;
  157.                 *(_DWORD *)(v15 + 60) = 8;
  158.                 *(_DWORD *)(v15 + 64) = 8;
  159.                 v21 = (int)SMemAlloc(16, (int)".\\MapChunk.cpp", 0x1EBu, 0);
  160.                 if ( v21 )
  161.                     v22 = sub_8A31E0(v21, v20, *(_DWORD *)(v15 + 8));
  162.                 else
  163.                     v22 = 0;
  164.                 v23 = v20 + 648;
  165.                 *(_DWORD *)(v15 + 84) = v23;
  166.                 *(_DWORD *)(v15 + 68) = v22;
  167.                 v10 = v23 + 148;
  168.                 sub_7CDF80(v15);
  169.                 v11 = v46;
  170.             }
  171.             v49 *= 2;
  172.             ++v11;
  173.             v46 = v11;
  174.         }
  175.         while ( v11 < 4 );
  176.     }
  177.     v24 = *(_DWORD *)(v2 + 32);
  178.     if ( v24 & 1 || !v24 )
  179.         v24 = 0;
  180.     v25 = *(_DWORD *)(v24 + 8);
  181.     v26 = *(_DWORD *)(v25 + 184);
  182.     v50 = *(_DWORD *)(v24 + 8);
  183.     if ( v26 )
  184.     {
  185.         if ( sub_8A3060(v26) )
  186.         {
  187.             v27 = sub_8A3070(*(_DWORD *)(v25 + 184), *(_DWORD *)(v2 + 36), *(_DWORD *)(v2 + 40));
  188.             v47 = v27;
  189.             v28 = sub_8A30E0(*(_DWORD *)(v25 + 184), v27);
  190.             sub_95DAA0(v2 + 320, v28, 64, 0);
  191.             v29 = sub_8A30B0(*(_DWORD *)(v25 + 184), v27);
  192.             sub_95DAA0(v2 + 332, v29, 64, 0);
  193.             v53 = 0;
  194.             if ( *(_DWORD *)(v27 + 4) )
  195.             {
  196.                 while ( 1 )
  197.                 {
  198.                     v30 = sub_8A3090(*(_DWORD *)(v25 + 184), v27, v53);
  199.                     v31 = sub_7C0980();
  200.                     if ( v31 )
  201.                         v32 = v31 + *(_DWORD *)(v2 + 256);
  202.                     else
  203.                         v32 = v2 + 260;
  204.                     if ( *(_DWORD *)v32 )
  205.                     {
  206.                         v33 = *(_DWORD *)(v32 + 4);
  207.                         if ( !(v33 & 1) && v33 )
  208.                             v34 = *(_DWORD *)(v32 + 4) + v32 - *(_DWORD *)(*(_DWORD *)v32 + 4);
  209.                         else
  210.                             v34 = v33 & 0xFFFFFFFE;
  211.                         *(_DWORD *)v34 = *(_DWORD *)v32;
  212.                         *(_DWORD *)(*(_DWORD *)v32 + 4) = *(_DWORD *)(v32 + 4);
  213.                         *(_DWORD *)v32 = 0;
  214.                         *(_DWORD *)(v32 + 4) = 0;
  215.                     }
  216.                     v35 = *(_DWORD *)(v2 + 260);
  217.                     *(_DWORD *)v32 = v35;
  218.                     *(_DWORD *)(v32 + 4) = *(_DWORD *)(v35 + 4);
  219.                     *(_DWORD *)(v35 + 4) = v31;
  220.                     *(_DWORD *)(v2 + 260) = v32;
  221.                     *(_DWORD *)(v31 + 92) = v2;
  222.                     *(_DWORD *)(v31 + 4) = *(_WORD *)v30;
  223.                     *(_DWORD *)(v31 + 8) = *(_WORD *)(v30 + 2);
  224.                     *(_DWORD *)(v31 + 12) = *(_DWORD *)(v2 + 124);
  225.                     *(_DWORD *)(v31 + 16) = *(_DWORD *)(v2 + 128);
  226.                     *(_DWORD *)(v31 + 20) = *(_DWORD *)(v2 + 132);
  227.                     *(_DWORD *)(v31 + 40) = *(_DWORD *)(v30 + 4);
  228.                     *(_DWORD *)(v31 + 44) = *(_DWORD *)(v30 + 8);
  229.                     v36 = *(_BYTE *)(v30 + 13);
  230.                     v37 = *(_BYTE *)(v30 + 12);
  231.                     v38 = v37 + *(_BYTE *)(v30 + 14);
  232.                     v39 = v36 + *(_BYTE *)(v30 + 15);
  233.                     *(_DWORD *)(v31 + 52) = v36;
  234.                     *(_DWORD *)(v31 + 56) = v37;
  235.                     *(_DWORD *)(v31 + 60) = v39;
  236.                     *(_DWORD *)(v31 + 64) = v38;
  237.                     v40 = (int)SMemAlloc(20, (int)".\\MapChunk.cpp", 0x21Eu, 0);
  238.                     v41 = v40 ? sub_8A3280(v40, *(_DWORD *)(v50 + 184), v30) : 0;
  239.                     *(_DWORD *)(v31 + 68) = v41;
  240.                     v42 = *(_BYTE *)(v30 + 14) * *(_BYTE *)(v30 + 15);
  241.                     v43 = sub_8A3110(*(_DWORD *)(v50 + 184), v30);
  242.                     sub_95DAA0(v31 + 72, v43, v42, 0);
  243.                     sub_7CDF80(v31);
  244.                     ++v53;
  245.                     if ( (unsigned int)v53 >= *(_DWORD *)(v47 + 4) )
  246.                         break;
  247.                     v27 = v47;
  248.                     v25 = v50;
  249.                 }
  250.             }
  251.         }
  252.     }
  253.     v44 = *(_DWORD *)(v2 + 264);
  254.     if ( v44 & 1 || !v44 )
  255.     {
  256.         *(float *)(v2 + 100) = 3.4028235e38;
  257.         result = -3.4028235e38;
  258.         *(float *)(v2 + 104) = 3.4028235e38;
  259.         *(float *)(v2 + 108) = 3.4028235e38;
  260.         *(float *)(v2 + 112) = -3.4028235e38;
  261.         *(float *)(v2 + 116) = -3.4028235e38;
  262.         *(float *)(v2 + 120) = -3.4028235e38;
  263.     }
  264.     else
  265.     {
  266.         result = COERCE_FLOAT(sub_7C5530(v2, v2 + 100));
  267.     }
  268.     return result;
  269. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement