Guest User

Untitled

a guest
Jun 24th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 5.59 KB | None | 0 0
  1. char __userpurge sub_D5ABE0<al>(char a1<al>, int a2<ecx>, int a3, int a4, int a5, int a6)
  2. {
  3.   int v6; // ebp@1
  4.   int v7; // edi@1
  5.   int v8; // esi@1
  6.   char v9; // bl@3
  7.   char v10; // al@4
  8.   int v11; // edi@14
  9.   int v12; // ST0C_4@14
  10.   int v13; // ST10_4@14
  11.   int v14; // eax@15
  12.   int v15; // eax@15
  13.   char v16; // bl@17
  14.   int v17; // esi@19
  15.   char result; // al@23
  16.   int v33; // ecx@24
  17.   char v34; // al@25
  18.   int v35; // esi@30
  19.   int v36; // eax@31
  20.   int v37; // eax@31
  21.   int v38; // ebx@34
  22.   int v39; // edi@34
  23.   int v40; // esi@34
  24.   int v41; // ST10_4@35
  25.   int v42; // eax@35
  26.   int v43; // eax@36
  27.   int v51; // esi@43
  28.   int v66; // [sp-8h] [bp-5Ch]@39
  29.   int v67; // [sp-4h] [bp-58h]@39
  30.   char v68; // [sp+10h] [bp-44h]@3
  31.   int v69; // [sp+14h] [bp-40h]@24
  32.   int v70; // [sp+18h] [bp-3Ch]@30
  33.   int v71; // [sp+1Ch] [bp-38h]@14
  34.   int v72; // [sp+20h] [bp-34h]@15
  35.   int v73; // [sp+24h] [bp-30h]@11
  36.   int v74; // [sp+28h] [bp-2Ch]@19
  37.   int v75; // [sp+2Ch] [bp-28h]@41
  38.   char v76; // [sp+34h] [bp-20h]@23
  39.   char v77; // [sp+40h] [bp-14h]@34
  40.   int v78; // [sp+44h] [bp-10h]@34
  41.   int v79; // [sp+48h] [bp-Ch]@34
  42.   int v80; // [sp+4Ch] [bp-8h]@34
  43.  
  44.   v6 = a4;
  45.   v8 = a3;
  46.   v7 = a2;
  47.   a4 = 0;
  48.   LOBYTE(a4) = 1;
  49.   if ( !(unsigned __int8)sub_D5AB40(a5, a1) )
  50.     LOBYTE(a4) = 0;
  51.   sub_662250(&v68, (int)&unk_154AF3F);
  52.   v9 = 1;
  53.   if ( !(unsigned __int8)sub_662080(&v68)
  54.     || (sub_662250(&a6, (int)"*"), v9 = 3, v10 = sub_662080(&a6), LOBYTE(a3) = 1, !v10) )
  55.     LOBYTE(a3) = 0;
  56.   if ( v9 & 2 )
  57.   {
  58.     v9 &= 0xFDu;
  59.     sub_661600(&a6);
  60.   }
  61.   if ( v9 & 1 )
  62.   {
  63.     v9 &= 0xFEu;
  64.     sub_661600(&v68);
  65.   }
  66.   if ( (_BYTE)a3 )
  67.   {
  68.     sub_72F400(*(_DWORD *)v6);
  69.     sub_72F680((int)&v73, v7, 0);
  70.     if ( v73 )
  71.     {
  72.       if ( !(*(_BYTE *)(v73 + 4) & 2) )
  73.       {
  74.         if ( !(unsigned __int8)sub_6989B0() )
  75.         {
  76.           sub_65FC90(dword_1E19864, 0);
  77.           v11 = v71;
  78.           sub_706710(&v73);
  79.           sub_523A40(v11, v12, v13);
  80.           sub_65FCF0(&v71);
  81.         }
  82.       }
  83.       v72 = (int)"..\\..\\..\\source\\Main\\System\\GameObjectTerrain.cpp";
  84.       v71 = 130;
  85.       v15 = sub_660DA0(&a3, 0);
  86.       v14 = sub_6600A0(104, &v71, *(_DWORD *)v15);
  87.       if ( v14 )
  88.         sub_711A00(v14);
  89.       sub_711670(&v73);
  90.       sub_550600(v8 + 208);
  91.       sub_47FC00(&v73);
  92.       v16 = a4;
  93.     }
  94.     else
  95.     {
  96.       v16 = 0;
  97.     }
  98.     v17 = v74;
  99.     if ( v74 )
  100.     {
  101.       _EAX = v74 + 4;
  102.       _ECX = -1;
  103.       __asm { lock xadd [eax], ecx }
  104.       if ( _ZF )
  105.       {
  106.         (*(void (__thiscall **)(int))(*(_DWORD *)v17 + 4))(v17);
  107.         _ECX = v17 + 8;
  108.         _EDX = -1;
  109.         __asm { lock xadd [ecx], edx }
  110.         if ( _ZF )
  111.           (*(void (__thiscall **)(int))(*(_DWORD *)v17 + 8))(v17);
  112.       }
  113.     }
  114.     sub_72F2F0(&v76);
  115.     result = v16;
  116.   }
  117.   else
  118.   {
  119.     v33 = *(_DWORD *)(v8 + 232) - *(_DWORD *)(v8 + 228);
  120.     v69 = v8 + 224;
  121.     if ( v33 & 0xFFFFFFF8 || (sub_662250(&a6, (int)"*"), v9 |= 4u, v34 = sub_6620E0(&a6), LOBYTE(a3) = 1, !v34) )
  122.       LOBYTE(a3) = 0;
  123.     if ( v9 & 4 )
  124.       sub_661600(&a6);
  125.     if ( (_BYTE)a3 )
  126.     {
  127.       v35 = v8 + 208;
  128.       v70 = v35;
  129.       if ( !*(_DWORD *)v35 )
  130.       {
  131.         v74 = (int)"..\\..\\..\\source\\Main\\System\\GameObjectTerrain.cpp";
  132.         v73 = 146;
  133.         v37 = sub_660DA0(&a3, 0);
  134.         v36 = sub_6600A0(104, &v73, *(_DWORD *)v37);
  135.         if ( v36 )
  136.           sub_711A00(v36);
  137.         sub_550600(v35);
  138.       }
  139.       v78 = 0;
  140.       v79 = 0;
  141.       v80 = 0;
  142.       sub_692DB0(&v77);
  143.       sub_662250(&v68, (int)&unk_154AF4E);
  144.       sub_662250(&a3, (int)"Mirage.terrain-group ");
  145.       sub_733430(&a6, &a3, &v68);
  146.       sub_661600(&a3);
  147.       sub_661600(&v68);
  148.       v40 = v79;
  149.       v39 = v78;
  150.       v71 = v79;
  151.       v38 = sub_661560(&a6);
  152.       sub_72F400(*(_DWORD *)v6);
  153.       if ( v39 != v40 )
  154.       {
  155.         do
  156.         {
  157.           v41 = v39;
  158.           v39 += 4;
  159.           sub_6621F0(v41);
  160.           v42 = sub_661640(&a6);
  161.           if ( !sub_662920(v42) )
  162.           {
  163.             v43 = sub_661640(&a3);
  164.             sub_662250(&v68, v38 + v43);
  165.             sub_72F680((int)&v73, (int)&v68, 0);
  166.             sub_661600(&v68);
  167.             if ( v73 )
  168.             {
  169.               if ( !(*(_BYTE *)(v73 + 4) & 2) )
  170.               {
  171.                 if ( !(unsigned __int8)sub_6989B0() )
  172.                 {
  173.                   v66 = v73;
  174.                   v67 = v74;
  175.                   if ( v74 )
  176.                   {
  177.                     _EAX = v74 + 4;
  178.                     _ECX = 1;
  179.                     __asm { lock xadd [eax], ecx }
  180.                   }
  181.                   sub_65FC90(dword_1E19864, 0);
  182.                   sub_523A40(v75, v66, v67);
  183.                   sub_65FCF0(&v75);
  184.                 }
  185.               }
  186.               sub_47FC00(&v73);
  187.               sub_717D70(&v76);
  188.               sub_711670(&v73);
  189.             }
  190.             v51 = v74;
  191.             if ( v74 )
  192.             {
  193.               _EDX = v74 + 4;
  194.               _EAX = -1;
  195.               __asm { lock xadd [edx], eax }
  196.               if ( _ZF )
  197.               {
  198.                 (*(void (__thiscall **)(int))(*(_DWORD *)v51 + 4))(v51);
  199.                 _ECX = v51 + 8;
  200.                 _EDX = -1;
  201.                 __asm { lock xadd [ecx], edx }
  202.                 if ( _ZF )
  203.                   (*(void (__thiscall **)(int))(*(_DWORD *)v51 + 8))(v51);
  204.               }
  205.             }
  206.           }
  207.           sub_661600(&a3);
  208.         }
  209.         while ( v39 != v71 );
  210.       }
  211.       sub_72F2F0(&v76);
  212.       sub_661600(&a6);
  213.       sub_40E180(&v77);
  214.     }
  215.     result = a4;
  216.   }
  217.   return result;
  218. }
Add Comment
Please, Sign In to add comment