Advertisement
Guest User

Untitled

a guest
Jun 30th, 2013
356
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 3.33 KB | None | 0 0
  1. int __cdecl read_file_sub_101BD520(int this_a1, const char *filenameb)
  2. {
  3.   FILE *fd_; // eax@1 MAPDST
  4.   int res; // eax@2
  5.   void (__cdecl *_fread)(void *, size_t, size_t, FILE *); // esi@3
  6.   int v7; // eax@3
  7.   const char *v8; // ecx@3
  8.   int v9; // edx@4
  9.   const char *szv10; // eax@7
  10.   int ptrv11; // eax@9 MAPDST
  11.   int v12; // ecx@9
  12.   int v14; // eax@9
  13.   int v15; // ecx@13
  14.   size_t v16; // ecx@17
  15.   int v17; // eax@17
  16.   int szv18; // edx@18
  17.   const void *v19; // eax@21
  18.   char *v20; // edi@24
  19.   int v21[41]; // [sp+4h] [bp-B4h]@21
  20.   size_t ElementSize; // [sp+A8h] [bp-10h]@9
  21.   void *v23; // [sp+ACh] [bp-Ch]@3
  22.   int i; // [sp+B0h] [bp-8h]@9
  23.   int idxv33; // [sp+B4h] [bp-4h]@13
  24.  
  25.   fd_ = fopen(filenameb, "rb");
  26.   if ( fd_ )
  27.   {
  28.     _fread = fread;
  29.     filenameb = 0;
  30.     fread(&filenameb, 4u, 1u, fd_);
  31.     v7 = *(_DWORD *)(this_a1 + 4);
  32.     v8 = filenameb + 1;
  33.     v23 = (void *)(filenameb + 1);
  34.     if ( v7 )
  35.       v9 = (*(_DWORD *)(this_a1 + 12) - v7) / 164;
  36.     else
  37.       v9 = 0;
  38.     if ( v9 < (unsigned int)v8 )
  39.     {
  40.       szv10 = filenameb + 1;
  41.       if ( (signed int)v8 < 0 )
  42.         szv10 = 0;
  43.       ptrv11 = operator new(164 * (_DWORD)szv10);
  44.       v12 = *(_DWORD *)(this_a1 + 8);
  45.       ElementSize = ptrv11;
  46.       v14 = *(_DWORD *)(this_a1 + 4);
  47.       for ( i = v12; v14 != v12; ptrv11 += 164 )
  48.       {
  49.         if ( ptrv11 )
  50.         {
  51.           memcpy((void *)ptrv11, (const void *)v14, 164u);
  52.           _fread = fread;
  53.           v12 = i;
  54.         }
  55.         v14 += 164;
  56.       }
  57.       v15 = *(_DWORD *)(this_a1 + 4);
  58.       i = *(_DWORD *)(this_a1 + 8);
  59.       idxv33 = v15;
  60.       if ( v15 != i )
  61.       {
  62.         while ( 1 )
  63.         {
  64.           delete_sub_101BE180(v15, ptrv11, 0);
  65.           idxv33 += 164;
  66.           if ( idxv33 == i )
  67.             break;
  68.           v15 = idxv33;
  69.         }
  70.       }
  71.       operator delete(*(_DWORD *)(this_a1 + 4));
  72.       v16 = ElementSize;
  73.       *(_DWORD *)(this_a1 + 12) = ElementSize + 164 * (_DWORD)v23;
  74.       v17 = *(_DWORD *)(this_a1 + 4);
  75.       if ( v17 )
  76.         szv18 = (*(_DWORD *)(this_a1 + 8) - v17) / 164;
  77.       else
  78.         szv18 = 0;
  79.       *(_DWORD *)(this_a1 + 8) = v16 + 164 * szv18;
  80.       *(_DWORD *)(this_a1 + 4) = v16;
  81.     }
  82.     v23 = (void *)SE_Get_UIManagerPtr();
  83.     clear_sub_101BD4F0(v21);
  84.     sub_101BDC70(this_a1, *(const void **)(this_a1 + 8), 1u, v19);
  85.     for ( i = 0; i < (signed int)filenameb; ++i )
  86.     {
  87.       clear_sub_101BD4F0(v21);
  88.       _fread(v21, 4u, 1u, fd_);
  89.       _fread(&v21[1], 4u, 1u, fd_);
  90.       _fread(&v21[2], 4u, 1u, fd_);
  91.       _fread(&ElementSize, 4u, 1u, fd_);
  92.       if ( !((size_t (__cdecl *)(void *, size_t, size_t, FILE *))_fread)(&v21[4], ElementSize, 1u, fd_) )
  93.         CUIManager::SetNoTranslationString(v23, 5, v21[0]);
  94.       _fread(&v21[17], 4u, 1u, fd_);
  95.       _fread(&v21[18], 4u, 1u, fd_);
  96.       _fread(&v21[19], 4u, 1u, fd_);
  97.       _fread(&v21[20], 4u, 1u, fd_);
  98.       v20 = (char *)&v21[22];
  99.       idxv33 = 10;
  100.       do
  101.       {
  102.         _fread(v20 - 4, 4u, 1u, fd_);
  103.         _fread(v20, 4u, 1u, fd_);
  104.         v20 += 8;
  105.         --idxv33;
  106.       }
  107.       while ( idxv33 );
  108.       sub_101BDC70(this_a1, *(const void **)(this_a1 + 8), 1u, v21);
  109.     }
  110.     fclose(fd_);
  111.     res = (int)filenameb;
  112.   }
  113.   else
  114.   {
  115.     MessageBoxA(0, "File is not Exist.", "error!", 0);
  116.     res = -1;
  117.   }
  118.   return res;
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement