Guest User

Untitled

a guest
Nov 14th, 2020
139
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 6.51 KB | None | 0 0
  1. char __cdecl sub_45BE10(void *a1, int a2, int a3, LPCSTR lpPathName, int a5, char a6, int a7)
  2. {
  3.   char v7; // bl
  4.   int v8; // ebp
  5.   unsigned int *v9; // esi
  6.   int v10; // edi
  7.   unsigned int v11; // ecx
  8.   void **v12; // edi
  9.   int v13; // ebp
  10.   unsigned int v14; // eax
  11.   int v15; // eax
  12.   int v16; // eax
  13.   unsigned int v17; // ecx
  14.   void *v18; // eax
  15.   unsigned int v19; // eax
  16.   unsigned int v20; // ecx
  17.   unsigned int v21; // eax
  18.   int v22; // esi
  19.   const CHAR *v23; // eax
  20.   void *v25; // [esp+20h] [ebp-19Ch]
  21.   int v26; // [esp+24h] [ebp-198h]
  22.   unsigned int v27; // [esp+28h] [ebp-194h]
  23.   int v28; // [esp+2Ch] [ebp-190h]
  24.   int v29; // [esp+48h] [ebp-174h]
  25.   int v30; // [esp+4Ch] [ebp-170h]
  26.   unsigned int *v31; // [esp+50h] [ebp-16Ch]
  27.   int v32; // [esp+54h] [ebp-168h]
  28.   void (__cdecl *v33)(int, int); // [esp+58h] [ebp-164h]
  29.   LPCSTR lpFileName; // [esp+5Ch] [ebp-160h]
  30.   void *v35; // [esp+60h] [ebp-15Ch]
  31.   int v36; // [esp+70h] [ebp-14Ch]
  32.   unsigned int v37; // [esp+74h] [ebp-148h]
  33.   void *Memory; // [esp+78h] [ebp-144h]
  34.   int v39; // [esp+88h] [ebp-134h]
  35.   unsigned int v40; // [esp+8Ch] [ebp-130h]
  36.   char Dest; // [esp+94h] [ebp-128h]
  37.   int v42; // [esp+98h] [ebp-124h]
  38.   int v43; // [esp+9Ch] [ebp-120h]
  39.   int v44; // [esp+A0h] [ebp-11Ch]
  40.   int v45; // [esp+A4h] [ebp-118h]
  41.   CHAR TempFileName; // [esp+A8h] [ebp-114h]
  42.   char Dst; // [esp+A9h] [ebp-113h]
  43.   int v48; // [esp+1B8h] [ebp-4h]
  44.  
  45.   lpFileName = (LPCSTR)a5;
  46.   v33 = (void (__cdecl *)(int, int))a7;
  47.   v25 = 0;
  48.   v26 = 0;
  49.   v25 = (void *)sub_45D1D0(&v25);
  50.   v48 = 0;
  51.   TempFileName = 0;
  52.   memset(&Dst, 0, 0x103u);
  53.   if ( GetTempFileNameA(lpPathName, "pak", 0, &TempFileName) )
  54.   {
  55.     sub_45B8D0(a1);
  56.     sub_45BB60(a2, a3);
  57.     strncpy(&Dest, "XPAK", 4u);
  58.     v42 = 10;
  59.     v43 = v26;
  60.     v44 = 0;
  61.     v45 = 2;
  62.     sub_453E00();
  63.     LOBYTE(v48) = 1;
  64.     if ( !(unsigned __int8)sub_4540A0(&TempFileName, 1) )
  65.     {
  66.       sub_45B6C0(a1);
  67.       v7 = 0;
  68. LABEL_54:
  69.       LOBYTE(v48) = 0;
  70.       sub_453E70(&v28);
  71.       goto LABEL_55;
  72.     }
  73.     if ( !(*(unsigned __int8 (__thiscall **)(int *, char *, signed int))(v28 + 20))(&v28, &Dest, 20) )
  74.     {
  75.       sub_454040(&v28);
  76.       sub_4542A0(&TempFileName);
  77.       sub_45B6C0(a1);
  78.       v7 = 0;
  79.       goto LABEL_54;
  80.     }
  81.     v37 = 15;
  82.     v36 = 0;
  83.     LOBYTE(v35) = 0;
  84.     LOBYTE(v48) = 2;
  85.     v27 = 0;
  86.     if ( a7 )
  87.       ((void (__cdecl *)(_DWORD, int))a7)(0, v26);
  88.     v8 = 0;
  89.     v29 = 0;
  90.     v9 = *(unsigned int **)v25;
  91.     v31 = v9;
  92.     if ( v9 == v25 )
  93.     {
  94. LABEL_35:
  95.       v22 = sub_454070(&v28);
  96.       if ( !(unsigned __int8)sub_45CFF0(&v28)
  97.         || (v44 = sub_454070(&v28) - v22,
  98.             sub_454120(0),
  99.             !(*(unsigned __int8 (__thiscall **)(int *, char *, signed int))(v28 + 20))(&v28, &Dest, 20)) )
  100.       {
  101. LABEL_37:
  102.         sub_454040(&v28);
  103.         sub_4542A0(&TempFileName);
  104.         sub_45B6C0(a1);
  105.         goto LABEL_50;
  106.       }
  107.       sub_454040(&v28);
  108.       if ( a6 )
  109.       {
  110.         v40 = 15;
  111.         v39 = 0;
  112.         LOBYTE(Memory) = 0;
  113.         sub_403080((int)a1, 0, 0xFFFFFFFF);
  114.         LOBYTE(v48) = 4;
  115.         sub_45B6C0(a1);
  116.         v23 = (const CHAR *)&Memory;
  117.         if ( v40 >= 0x10 )
  118.           v23 = (const CHAR *)Memory;
  119.         if ( (unsigned __int8)sub_4542E0(&TempFileName, v23) )
  120.         {
  121.           sub_4542A0(&TempFileName);
  122.           v7 = 1;
  123.         }
  124.         else
  125.         {
  126.           if ( lpFileName )
  127.             sub_4542E0(&TempFileName, lpFileName);
  128.           sub_4542A0(&TempFileName);
  129.           v7 = 0;
  130.         }
  131.         if ( v40 >= 0x10 )
  132.           j__free(Memory);
  133.       }
  134.       else
  135.       {
  136.         sub_45B6C0(a1);
  137. LABEL_50:
  138.         v7 = 0;
  139.       }
  140.       if ( v37 >= 0x10 )
  141.         j__free(v35);
  142.       v37 = 15;
  143.       v36 = 0;
  144.       LOBYTE(v35) = 0;
  145.       goto LABEL_54;
  146.     }
  147.     v10 = v30;
  148.     while ( 1 )
  149.     {
  150.       if ( &v35 != (void **)(v9 + 4) )
  151.         sub_403080((int)(v9 + 4), 0, 0xFFFFFFFF);
  152.       if ( v9[81] )
  153.       {
  154.         sub_453E00();
  155.         v11 = v9[81];
  156.         LOBYTE(v48) = 3;
  157.         if ( *(_BYTE *)v11 )
  158.         {
  159.           v9[12] = 0;
  160.         }
  161.         else
  162.         {
  163.           v12 = *(void ***)(v11 + 264);
  164.           if ( v12 )
  165.           {
  166.             (*((void (__thiscall **)(void **, _DWORD))*v12 + 2))(v12, *(_DWORD *)(v11 + 268));
  167.             v13 = *(_DWORD *)(v9[81] + 272);
  168.           }
  169.           else
  170.           {
  171.             if ( !(unsigned __int8)sub_4540A0(v11 + 1, 0) )
  172.               goto LABEL_38;
  173.             v12 = &Memory;
  174.             v13 = (*((int (__thiscall **)(void **))Memory + 3))(&Memory);
  175.           }
  176.           if ( !(unsigned __int8)sub_45CF40(&v28, v12, &v30, v13, 0) || (v10 = v30, v30 != *(_DWORD *)(v9[81] + 276)) )
  177.           {
  178. LABEL_38:
  179.             sub_454040(&v28);
  180.             sub_4542A0(&TempFileName);
  181.             sub_45B6C0(a1);
  182.             LOBYTE(v48) = 2;
  183.             sub_453E70(&Memory);
  184.             goto LABEL_50;
  185.           }
  186.           v9[12] = v13;
  187.           v8 = v29;
  188.         }
  189.         v9[14] = v10;
  190.         LOBYTE(v48) = 2;
  191.         sub_453E70(&Memory);
  192.       }
  193.       else
  194.       {
  195.         v14 = v9[80];
  196.         if ( !v14 )
  197.           goto LABEL_34;
  198.         sub_435500(*(_DWORD *)(v14 + 12));
  199.         *(_DWORD *)(v9[80] + 4) = 0;
  200.         v15 = sub_45CEE0(v9[80], dword_665BAC, *(_DWORD *)(v9[80] + 12));
  201.         *(_DWORD *)(v9[80] + 4) = 0;
  202.         if ( v15 == -1 )
  203.           goto LABEL_37;
  204.         v16 = sub_453C20(dword_665BAC, *(_DWORD *)(v9[80] + 12), -1);
  205.         v17 = v9[80];
  206.         if ( v16 != *(_DWORD *)(v17 + 20)
  207.           || !(*(unsigned __int8 (__thiscall **)(int *, void *, _DWORD))(v28 + 20))(
  208.                 &v28,
  209.                 dword_665BAC,
  210.                 *(_DWORD *)(v17 + 12)) )
  211.         {
  212.           goto LABEL_37;
  213.         }
  214.       }
  215.       v18 = &v35;
  216.       if ( v37 >= 0x10 )
  217.         v18 = v35;
  218.       v19 = sub_453C20(v18, v36, -1);
  219.       v20 = v9[12];
  220.       v9[10] = v19;
  221.       v9[11] = v27;
  222.       v21 = (v20 + 3) & 0xFFFFFFFC;
  223.       v9[13] = v21;
  224.       if ( v21 > v20
  225.         && !(*(unsigned __int8 (__thiscall **)(int *, int *, unsigned int))(v28 + 20))(&v28, &v32, v21 - v20) )
  226.       {
  227.         goto LABEL_37;
  228.       }
  229.       v27 += v9[13];
  230.       if ( v33 )
  231.       {
  232.         v29 = ++v8;
  233.         v33(v8, v26);
  234.       }
  235. LABEL_34:
  236.       sub_41EBF0(&v31);
  237.       v9 = v31;
  238.       if ( v31 == v25 )
  239.         goto LABEL_35;
  240.     }
  241.   }
  242.   sub_45B6C0(a1);
  243.   v7 = 0;
  244. LABEL_55:
  245.   v48 = -1;
  246.   sub_45D320((int)&v32, *(void **)v25, (int)v25);
  247.   j__free(v25);
  248.   return v7;
  249. }
Advertisement
Add Comment
Please, Sign In to add comment