Esempio n. 1
0
uBOOL BtreeFlush::CheckObjInMem(void)
{
	sLONG i;
	CheckAssert(IsValidFastPtr(this));
	CheckAssert(nkeys>=0 && nkeys<=32);
	for (i=0;(i<=nkeys);i++)
	{
		CheckAssert(IsValidFastPtr(tabsous[i]));
	}
	return(true);
}
Esempio n. 2
0
int __cdecl IniLoadFile(int *ModelTable, int *pulModelTableCount, void **a3, int a4, LPCSTR lpFileName, __int16 a6, int a7)
{
  char v7; // ST1C_1@9
  char v9; // ST1C_1@13
  DWORD v10; // eax@17
  DWORD v11; // eax@41
  signed int v12; // eax@44
  int v13; // eax@44
  BlowfishBlock *v14; // eax@50
  int v15; // edx@50
  BlowfishBlock *v16; // eax@59
  int v17; // edx@59
  char v18; // [sp+20h] [bp-31C8h]@59
  int ctx; // [sp+28h] [bp-31C0h]@50
  char v20; // [sp+30h] [bp-31B8h]@44
  BlowfishPad v21; // [sp+1078h] [bp-2170h]@44
  SIZE_T nNumberOfBytesToWrite; // [sp+20C0h] [bp-1128h]@57
  DWORD NumberOfBytesWritten; // [sp+20C4h] [bp-1124h]@57
  HANDLE hFile; // [sp+20C8h] [bp-1120h]@56
  LPCVOID lpBuffer; // [sp+20CCh] [bp-111Ch]@56
  int L; // [sp+20D0h] [bp-1118h]@50
  int R; // [sp+20D4h] [bp-1114h]@50
  void *v28; // [sp+20D8h] [bp-1110h]@54
  unsigned int byteSize; // [sp+20DCh] [bp-110Ch]@45
  int dest; // [sp+20E0h] [bp-1108h]@45
  unsigned int v31; // [sp+20E4h] [bp-1104h]@45
  BlowfishBlock chain; // [sp+20E8h] [bp-1100h]@44
  BlowfishPad pad; // [sp+20F0h] [bp-10F8h]@44
  int cnt; // [sp+3138h] [bp-B0h]@60
  int i; // [sp+313Ch] [bp-ACh]@60
  char key; // [sp+3140h] [bp-A8h]@44
  __int16 v37; // [sp+316Ch] [bp-7Ch]@44
  unsigned int v38; // [sp+3170h] [bp-78h]@1
  unsigned int j; // [sp+3174h] [bp-74h]@85
  DWORD Buffer; // [sp+3178h] [bp-70h]@34
  _BYTE *lpMem; // [sp+317Ch] [bp-6Ch]@1
  ModelTable *v42; // [sp+3180h] [bp-68h]@1
  SIZE_T nNumberOfBytesToRead; // [sp+3184h] [bp-64h]@31
  int ulCount; // [sp+3188h] [bp-60h]@1
  HANDLE hObject; // [sp+318Ch] [bp-5Ch]@30
  ModelTable v46; // [sp+3190h] [bp-58h]@82
  int v47; // [sp+31DCh] [bp-Ch]@85
  char v48[4]; // [sp+31E0h] [bp-8h]@1
  int v49; // [sp+31E4h] [bp-4h]@1
  int v50; // [sp+31E8h] [bp+0h]@1

  v38 = (unsigned int)&v50 ^ dword_10072570;
  lpMem = 0;
  v49 = 0;
  v42 = 0;
  ulCount = 0;
  *(_DWORD *)v48 = 0;
  if ( g_LogEvents )
  {
    if ( DebugMsg1("IniLoadFile") )
      DebugMsg3("Entry - '%s'.", (char)lpFileName);
  }
  if ( !lpFileName || !ModelTable || !pulModelTableCount )
  {
    if ( DebugMsg1("IniLoadFile") )
      CheckAssert("NULL Pointer.", v7);
    return 0;
  }
  if ( !*lpFileName )
  {
    if ( DebugMsg1("IniLoadFile") )
      CheckAssert("EMPTY String.", v9);
    return 0;
  }
  v42 = (ModelTable *)HeapAlloc(g_hHeap, 8u, 0x11000u);
  if ( !v42 )
  {
    if ( DebugMsg1("IniLoadFile") )
    {
      v10 = GetLastError();
      CheckAssert("Failed to allocated %d bytes. Reason:%d.", 0, v10);
    }
    return 0;
  }
  if ( *ModelTable && (unsigned int)*pulModelTableCount < 0x400 )
  {
    ulCount = *pulModelTableCount;
    memcpy_fast((unsigned int)v42, *ModelTable, 0x44 * ulCount);
    HeapFree(g_hHeap, 0, (LPVOID)*ModelTable);
    if ( !ulCount )
    {
      if ( DebugMsg1("IniLoadFile") )
        CheckAssert("%s - %s line %d: assert %s\n", (unsigned int)"IniLoadFile", ".\\IniMgr.cpp", 1598, "ulCount > 0");
    }
    if ( DebugMsg1("IniLoadFile") )
      DebugMsg2(131072, "IniLoadFilesFromPath - Found %d device from previous file(s).\n", ulCount);
  }
  else
  {
    ulCount = 0;
    if ( *pulModelTableCount )
    {
      if ( DebugMsg1("IniLoadFile") )
        CheckAssert(
          "%s - %s line %d: assert %s\n",
          (unsigned int)"IniLoadFile",
          ".\\IniMgr.cpp",
          1604,
          "*pulModelTableCount == 0");
    }
  }
  hObject = CreateFileA(lpFileName, 0x80000000u, 0, 0, 3u, 0x80u, 0);
  if ( hObject != (HANDLE)-1 )
  {
    nNumberOfBytesToRead = GetFileSize(hObject, 0);
    if ( nNumberOfBytesToRead != -1 )
      lpMem = HeapAlloc(g_hHeap, 8u, nNumberOfBytesToRead);
    if ( lpMem )
    {
      if ( ReadFile(hObject, lpMem, nNumberOfBytesToRead, &Buffer, 0) == 1 )
      {
        if ( DebugMsg1("IniLoadFile") )
          DebugMsg2(131072, "IniLoadFilesFromPath - Read %d bytes from file.\n", Buffer);
      }
      else
      {
        if ( DebugMsg1("IniLoadFile") )
          CheckAssert("%s - %s line %d: assert %s\n", (unsigned int)"IniLoadFile", ".\\IniMgr.cpp", 1632, "FALSE");
        if ( DebugMsg1("IniLoadFile") )
        {
          v11 = GetLastError();
          DebugMsg2(131072, "IniLoadFilesFromPath - ReadFile Failed %d.\n", v11);
        }
        HeapFree(g_hHeap, 0, lpMem);
        lpMem = 0;
      }
    }
    CloseHandle(hObject);
    if ( lpMem )
    {
      memcpy(&key, "SetPoint-83918EEE-DB31-4df1-B11D-F93932DBC1B8", 44u);
      v37 = *(_WORD *)&aSetpoint83918e[44];
      v12 = strlen(&key);
      v13 = BlowfishGeneratePad((int)&v20, (int)&key, v12);
      memcpy_fast((unsigned int)&v21, v13, 0x1048u);
      memcpy_fast((unsigned int)&pad, (int)&v21, 0x1048u);
      BlowfishBlock__ctor(&chain, 0xC009F158u, 0x17EC17ECu);
      if ( strncmp(lpMem, ";KHAL", 5u) )
      {
        dest = 0;
        v31 = *(_DWORD *)lpMem;
        byteSize = GetBlockSizeOfBuffer(v31, 8u);
        if ( Buffer != byteSize + 12 || v31 > byteSize )
        {
          HeapFree(g_hHeap, 0, lpMem);
          goto LABEL_101;
        }
        dest = (int)HeapAlloc(g_hHeap, 8u, byteSize + 1);
        if ( !dest )
        {
          HeapFree(g_hHeap, 0, lpMem);
          goto LABEL_101;
        }
        BlowfishDecryptCBC(&pad, (int)(lpMem + 4), dest, byteSize, &chain);
        v14 = BlowfishEncipherBlock((int)&ctx, &pad, &chain);
        v15 = v14->R;
        chain.L = v14->L;
        chain.R = v15;
        L = *(_DWORD *)&lpMem[byteSize + 4];
        R = *(_DWORD *)&lpMem[byteSize + 8];
        if ( chain.L != L || chain.R != R )
        {
          if ( DebugMsg1("IniLoadFile") )
            CheckAssert(
              "%s - %s line %d: assert %s\n",
              (unsigned int)"IniLoadFile",
              ".\\IniMgr.cpp",
              1681,
              "chain.L == L && chain.R == R");
        }
        v28 = lpMem;
        lpMem = (_BYTE *)dest;
        HeapFree(g_hHeap, 0, v28);
        Buffer = v31;
      }
      else
      {
        if ( a6 & 0x400 )
        {
          lpBuffer = 0;
          hFile = CreateFileA(lpFileName, 0x40000000u, 0, 0, 2u, 0x80u, 0);
          if ( hFile != (HANDLE)-1 )
          {
            nNumberOfBytesToWrite = GetBlockSizeOfBuffer(Buffer, 8u);
            lpBuffer = HeapAlloc(g_hHeap, 8u, nNumberOfBytesToWrite);
            WriteFile(hFile, &Buffer, 4u, &NumberOfBytesWritten, 0);
            if ( lpBuffer )
            {
              BlowfishDecryptCFB(&pad, (int)lpMem, (int)lpBuffer, nNumberOfBytesToWrite, &chain);
              WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, &NumberOfBytesWritten, 0);
              HeapFree(g_hHeap, 0, (LPVOID)lpBuffer);
            }
            v16 = BlowfishEncipherBlock((int)&v18, &pad, &chain);
            v17 = v16->R;
            chain.L = v16->L;
            chain.R = v17;
            WriteFile(hFile, &chain, 4u, &NumberOfBytesWritten, 0);
            WriteFile(hFile, &chain.R, 4u, &NumberOfBytesWritten, 0);
            CloseHandle(hFile);
          }
        }
      }
      cnt = 0;
      i = -1;
      while ( cnt < (signed int)Buffer )
      {
        if ( lpMem[cnt] == ';' )
        {
          for ( i = cnt + 1; i < (signed int)Buffer && lpMem[i] != '\r' && lpMem[i] != '\n'; ++i )
            ;
          while ( i < (signed int)Buffer && (lpMem[i] == '\r' || lpMem[i] == '\n') )
            ++i;
          if ( i < (signed int)Buffer )
            memcpy_fast((unsigned int)&lpMem[cnt], (int)&lpMem[i], Buffer - i);
          Buffer -= i - cnt;
        }
        else
        {
          ++cnt;
        }
      }
      cnt = -1;
      for ( i = 0; i < (signed int)Buffer; ++i )
      {
        if ( lpMem[i] == '[' || i == Buffer - 1 )
        {
          if ( cnt >= 0 )
          {
            lpMem[i - 1] = 0;
            memset(&v46, 0, 0x44u);
            if ( IniLoadUnsupportedSection(a3, (_DWORD *)a4, &lpMem[cnt]) != 1 )
            {
              if ( IniLoadSection(&v46, (int)&lpMem[cnt]) == 1 )
              {
                v47 = 1;
                for ( j = 0; j < ulCount; ++j )
                {
                  if ( v46.field_0 == v42[j].field_0 && v46.field_4 == v42[j].field_4 )
                  {
                    IniFreeModelInfo((unsigned int)&v46, (int)v42, &v46);
                    if ( a7 )
                    {
                      if ( dword_10072548 )
                      {
                        if ( DebugMsg1("IniLoadFile") )
                          sub_1003DBE0("Model Overwrite (%08X-%X).\n", *(_QWORD *)&v46);
                      }
                    }
                    v47 = 0;
                    break;
                  }
                }
                if ( v47 )
                {
                  memcpy(&v42[ulCount++], &v46, sizeof(v42[ulCount++]));
                  ++*(_DWORD *)v48;
                }
              }
            }
          }
          cnt = i;
        }
      }
      HeapFree(g_hHeap, 0, lpMem);
      lpMem = 0;
      goto LABEL_101;
    }
  }
LABEL_101:
  if ( ulCount )
  {
    *ModelTable = (int)HeapAlloc(g_hHeap, 8u, 68 * ulCount);
    if ( *ModelTable )
    {
      memcpy_fast(*ModelTable, (int)v42, 68 * ulCount);
      *pulModelTableCount = ulCount;
    }
    else
    {
      if ( DebugMsg1("IniLoadFile") )
        CheckAssert("%s - %s line %d: assert %s\n", (unsigned int)"IniLoadFile", ".\\IniMgr.cpp", 1840, "FALSE");
      *pulModelTableCount = 0;
    }
  }
  else
  {
    *pulModelTableCount = 0;
    *ModelTable = 0;
  }
  HeapFree(g_hHeap, 0, v42);
  v42 = 0;
  if ( g_LogEvents )
  {
    if ( DebugMsg1("IniLoadFile") )
      DebugMsg3("Exit %d.", v48[0]);
  }
  return *(_DWORD *)v48;
}