Advertisement
Guest User

Untitled

a guest
Sep 22nd, 2019
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.67 KB | None | 0 0
  1. void __thiscall sub_429450(int this, int a2)
  2. {
  3.   int v2; // esi@1
  4.   int v3; // ecx@1
  5.   int v4; // eax@2
  6.   double v5; // st7@2
  7.   double v6; // st7@2
  8.   double v7; // st7@3
  9.   double v8; // st7@12
  10.   double v9; // st6@18
  11.   double v10; // st5@18
  12.   double v11; // st7@22
  13.   long double v12; // st7@24
  14.   float v13; // [sp+1Ch] [bp-14h]@2
  15.   float v14; // [sp+20h] [bp-10h]@2
  16.   float v15; // [sp+24h] [bp-Ch]@18
  17.   float v16; // [sp+28h] [bp-8h]@18
  18.   float v17; // [sp+2Ch] [bp-4h]@18
  19.   float v18; // [sp+34h] [bp+4h]@18
  20.  
  21.   v2 = this;
  22.   v3 = *(_DWORD *)(this + 24);
  23.   if ( v3 )
  24.   {
  25.     v13 = COERCE_FLOAT((*(int (**)(void))(*(_DWORD *)v3 + 24))());
  26.     v4 = *(_DWORD *)(v2 + 4);
  27.     v5 = (double)SLODWORD(v13) + *(float *)(v2 + 28);
  28.     v13 = 0.0;
  29.     v14 = v5;
  30.     v6 = 0.0;
  31.     switch ( v4 )
  32.     {
  33.       case 0:
  34.         v13 = sub_429950(v2, dword_667CAC);
  35.         v7 = flt_667C80;
  36.         goto LABEL_11;
  37.       case 5:
  38.         v7 = flt_667C78;
  39.         goto LABEL_11;
  40.       case 1:
  41.         if ( dword_667CAC == 1 )
  42.           v13 = -1.0e10;
  43.         else
  44.           v6 = flt_667C7C;
  45.         break;
  46.       case 2:
  47.         v6 = flt_667C78;
  48.         break;
  49.       case 3:
  50.         v7 = flt_667C88;
  51.         goto LABEL_11;
  52.       case 4:
  53.         v13 = sub_429950(v2, dword_667CAC);
  54.         v7 = flt_667C84;
  55. LABEL_11:
  56.         v6 = v7 + *(float *)&dword_667CA4;
  57.         break;
  58.       default:
  59.         break;
  60.     }
  61.     v8 = v6 + v13 + v14;
  62.     if ( v8 <= 0.0 )
  63.     {
  64.       if ( v8 < -96.0 )
  65.       {
  66.         *(_DWORD *)(v2 + 40) = dword_667C58;
  67.         return;
  68.       }
  69.       if ( v8 <= -96.0 )
  70.       {
  71.         *(_DWORD *)(v2 + 40) = dword_667C58;
  72.         return;
  73.       }
  74.     }
  75.   }
  76.   if ( (unsigned __int8)(*(int (__stdcall **)(int))(*(_DWORD *)v2 + 24))(v2) )
  77.   {
  78.     (*(void (__stdcall **)(int, float *))(*(_DWORD *)v2 + 48))(v2, &v15);
  79.     v9 = *(float *)(a2 + 4) - v16;
  80.     v10 = *(float *)(a2 + 8) - v17;
  81.     v18 = v10 * v10 + v9 * v9 + (*(float *)a2 - v15) * (*(float *)a2 - v15);
  82.     if ( (*(int (__stdcall **)(int, int *))(*(_DWORD *)v2 + 56))(v2, (int *)&v13) || v13 * v13 >= v18 )
  83.     {
  84.       if ( (*(int (__stdcall **)(int, float *))(*(_DWORD *)v2 + 52))(v2, &v14) )
  85.         v11 = 1.0;
  86.       else
  87.         v11 = v14;
  88.       LODWORD(v13) = 1597463007 - (SLODWORD(v18) >> 1);
  89.       v14 = v18;
  90.       v12 = __FYL2X__((1.5 - v13 * v13 * v18 * 0.5) * v13 * v11, 0.30102999566398119802) * 10.0;
  91.       *(float *)(v2 + 40) = *(float *)&v12;
  92.     }
  93.     else
  94.     {
  95.       *(_DWORD *)(v2 + 40) = dword_667C58;
  96.     }
  97.   }
  98.   else if ( *(float *)(v2 + 28) > -96.0 )
  99.   {
  100.     *(float *)(v2 + 40) = 100.0;
  101.   }
  102.   else
  103.   {
  104.     *(float *)(v2 + 40) = *(float *)&dword_667C58;
  105.   }
  106. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement