Возможно ли скомпилировать идовский псевдокод?

Статус
В этой теме нельзя размещать новые ответы.

monobogdan

Новичок
Автор темы
64
3
Возможно ли скомпилировать идовский псевдокод? Или вообще перекомпилировать gta-vc.exe с идовскими сырками :D
 

monobogdan

Новичок
Автор темы
64
3
целое приложение - нет.
да и фиг с ним, скомпилировать псевдокод возможно?
Код:
signed int __cdecl loadScm()
{
  CScriptThread *v9; // ebx@3
  int v10; // ebp@3
  signed int v11; // esi@3
  char v12; // zf@4
  int v13; // eax@7
  int v14; // ecx@8
  int v15; // eax@9
  int v16; // edx@9
  _UNKNOWN *v17; // ebp@9
  int v18; // edi@9
  int v19; // ebx@10
  int v20; // edx@11
  signed int v21; // ecx@11
  FILE *v22; // esi@11
  signed int v23; // eax@12
  int v27; // ebx@13
  int v31; // eax@17
  signed int v32; // edi@17
  int v33; // ebx@19
  int v34; // ebp@19
  signed int v35; // esi@19
  signed int v37; // edi@20
  BYTE v38; // al@20
  BYTE v39; // dl@20
  BYTE v40; // al@20
  BYTE v41; // al@20
  BYTE v42; // dl@20
  BYTE v43; // al@20
  int v45; // ebx@23
  signed int v46; // ebp@23
  BYTE v47; // al@24
  BYTE v48; // dl@24
  BYTE v49; // al@24
  CTexture *v50; // edi@25
  int v51; // esi@25
  DWORD v52; // eax@27
  char *v53; // ebx@29
  signed int v54; // eax@33
  int v55; // ebp@33
  int v56; // edx@34
  int v57; // edi@34
  int v58; // ebx@34
  int v59; // esi@34
  signed int result; // eax@35
  RwRGBA v61; // [sp+4h] [bp-1Ch]@20
  RwRGBA v62; // [sp+8h] [bp-18h]@20
  RwRGBA v63; // [sp+Ch] [bp-14h]@24

  _EAX = 0;
  __asm { pxor    mm0, mm0 }
  do
  {
    __asm { movq    qword ptr ds:_scmBlock[eax], mm0 }
    _EBP = _EAX + 8;
    __asm { movq    qword ptr ss:_scmBlock[ebp], mm0 }
    _EDX = _EAX + 16;
    __asm { movq    qword ptr ds:_scmBlock[edx], mm0 }
    _ESI = _EAX + 24;
    __asm { movq    qword ptr ds:_scmBlock[esi], mm0 }
    _EBX = _EAX + 32;
    __asm { movq    qword ptr ds:_scmBlock[ebx], mm0 }
    _EBP = _EAX + 40;
    __asm { movq    qword ptr ss:_scmBlock[ebp], mm0 }
    _ECX = _EAX + 48;
    __asm { movq    qword ptr ds:_scmBlock[ecx], mm0 }
    _EDX = _EAX + 56;
    _EAX += 64;
    __asm { movq    qword ptr ds:_scmBlock[edx], mm0 }
  }
  while ( _EAX < 260448 );
  scmBlock[_EAX] = 0;
  InactiveThreadQueue = 0;
  scmBlock[_EAX + 1] = 0;
  scmBlock[_EAX + 2] = 0;
  scmBlock[_EAX + 3] = 0;
  scmBlock[_EAX + 4] = 0;
  scmBlock[_EAX + 5] = 0;
  scmBlock[_EAX + 6] = 0;
  scmBlock[_EAX + 7] = 0;
  scmBlock[_EAX + 8] = 0;
  scmBlock[_EAX + 9] = 0;
  scmBlock[_EAX + 10] = 0;
  scmBlock[_EAX + 11] = 0;
  scmBlock[_EAX + 12] = 0;
  scmBlock[_EAX + 13] = 0;
  scmBlock[_EAX + 14] = 0;
  scmBlock[_EAX + 15] = 0;
  scmBlock[_EAX + 16] = 0;
  scmBlock[_EAX + 17] = 0;
  scmBlock[_EAX + 18] = 0;
  scmBlock[_EAX + 19] = 0;
  scmBlock[_EAX + 20] = 0;
  scmBlock[_EAX + 21] = 0;
  scmBlock[_EAX + 22] = 0;
  scmBlock[_EAX + 23] = 0;
  scmBlock[_EAX + 24] = 0;
  scmBlock[_EAX + 25] = 0;
  scmBlock[_EAX + 26] = 0;
  scmBlock[_EAX + 27] = 0;
  scmBlock[_EAX + 28] = 0;
  scmBlock[_EAX + 29] = 0;
  scmBlock[_EAX + 30] = 0;
  scmBlock[_EAX + 31] = 0;
  v9 = &ScriptThreads;
  ActiveThreadQueue = InactiveThreadQueue;
  v11 = 0;
  v10 = 0;
  do
  {
    __asm { emms }
    CScriptThread__init(v9);
    v12 = InactiveThreadQueue == 0;
    *(CScriptThread **)((char *)&ScriptThreads.next + v10) = InactiveThreadQueue;
    *(CScriptThread **)((char *)&ScriptThreads.prev + v10) = 0;
    if ( !v12 )
      InactiveThreadQueue->prev = v9;
    ++v11;
    InactiveThreadQueue = v9;
    v10 += 136;
    ++v9;
  }
  while ( v11 < 128 );
  v13 = 0;
  missionCleanipList.count = 0;
  do
  {
    v14 = (unsigned __int16)v13;
    v13 += 8;
    missionCleanipList.missionCleanup[v14].type = 0;
    missionCleanipList.missionCleanup[v14].handle = 0;
    missionCleanipList.missionCleanup[v14 + 1].type = 0;
    missionCleanipList.missionCleanup[v14 + 1].handle = 0;
    missionCleanipList.missionCleanup[v14 + 2].type = 0;
    missionCleanipList.missionCleanup[v14 + 2].handle = 0;
    missionCleanipList.missionCleanup[v14 + 3].type = 0;
    missionCleanipList.missionCleanup[v14 + 3].handle = 0;
    missionCleanipList.missionCleanup[v14 + 4].type = 0;
    missionCleanipList.missionCleanup[v14 + 4].handle = 0;
    missionCleanipList.missionCleanup[v14 + 5].type = 0;
    missionCleanipList.missionCleanup[v14 + 5].handle = 0;
    missionCleanipList.missionCleanup[v14 + 6].type = 0;
    missionCleanipList.missionCleanup[v14 + 6].handle = 0;
    missionCleanipList.missionCleanup[v14 + 7].type = 0;
    missionCleanipList.missionCleanup[v14 + 7].handle = 0;
  }
  while ( (_WORD)v13 < 0x2Au );
  v16 = (unsigned __int16)v13;
  v15 = 0;
  flippedCheck.hVehicle = -1;
  flippedCheck.time = 0;
  unk_7D96E0 = -1;
  unk_7D96E4 = 0;
  unk_7D96E8 = -1;
  unk_7D96EC = 0;
  unk_7D96F0 = -1;
  unk_7D96F4 = 0;
  unk_7D96F8 = -1;
  unk_7D96FC = 0;
  unk_7D9700 = -1;
  v18 = 0;
  missionCleanipList.missionCleanup[v16].type = 0;
  v17 = &stuckCheck;
  missionCleanipList.missionCleanup[v16].handle = 0;
  unk_7D9704 = 0;
  missionCleanipList.missionCleanup[v16 + 1].type = 0;
  missionCleanipList.missionCleanup[v16 + 1].handle = 0;
  do
  {
    ++v15;
    *(_DWORD *)((char *)&stuckCheck + v18) = -1;
    v19 = (int)((char *)v17 + 4);
    v17 = (char *)v17 + 32;
    *(_DWORD *)v19 = -979615744;
    *(_DWORD *)(v19 + 4) = -979615744;
    *(_DWORD *)(v19 + 8) = -979615744;
    *(_DWORD *)((char *)&stuckCheck + v18 + 16) = -1;
    *(_DWORD *)((char *)&stuckCheck + v18 + 20) = 0;
    *(_DWORD *)((char *)&stuckCheck + v18 + 24) = 0;
    *((_BYTE *)&stuckCheck + v18 + 28) = 0;
    v18 += 32;
  }
  while ( (_WORD)v15 < 0x10u );
  CFileMgr__ChDir_RootDir("data");
  v22 = CFileMgr__Open("main.scm", "rb");
  CFileMgr__Read(v22, scmBlock, 0x370E8u);
  CFileMgr__CloseFile(v22);
  CFileMgr__ChDir_RootDir((char *)&unk_6886B8);
  playerCarHandle = -1;
  v21 = 0;
  byte_A10B89 = 1;
  dword_9787D4 = -1;
  OnMissionFlagVarOffset = 0;
  dword_9785E4 = -1;
  v20 = 0;
  do
  {
    v23 = 0;
    __asm { pxor    mm1, mm1 }
    do
    {
      _EBX = v23 + v20;
      __asm { movq    ds:qword_7D1DC8[ebx], mm1 }
      _ESI = v23 + 8 + v20;
      __asm { movq    ds:qword_7D1DC8[esi], mm1 }
      v27 = v23 + 16;
      v23 += 24;
      _EBP = v27 + v20;
      __asm { movq    ss:qword_7D1DC8[ebp], mm1 }
    }
    while ( v23 < 24 );
    ++v21;
    *(int *)((char *)ScriptModelIndices + v20) = 0;
    v20 += 28;
  }
  while ( v21 < 220 );
  __asm { emms }
  word_A10A30 = 0;
  sub_45E910(v21, v20);
  CScriptEngine__UpdateObjectIndices();
  _EAX = 0;
  MissionLoaded = 0;
  __asm { pxor    mm2, mm2 }
  byte_A10AEF = 1;
  do
  {
    __asm
    {
      movq    qword ptr ds:_missionOffsets[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+8[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+10h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+18h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+20h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+28h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+30h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+38h[eax*4], mm2
    }
    _EAX += 16;
  }
  while ( _EAX < 104 );
  __asm { emms }
  missionCountH = 0;
  *(&missionOffsets + _EAX) = 0;
  word_A10A5C = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 1) = 0;
  dword_A0D950 = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 2) = 0;
  dword_A0D06C = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 3) = 0;
  *(&missionOffsets + _EAX + 1) = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 5) = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 6) = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 7) = 0;
  sub_45E530();
  v32 = 0;
  abortMission = 0;
  v31 = 0;
  dword_9B6AB4 = 0;
  debugModeOn = 0;
  byte_A10B7F = 0;
  word_A1096E = 0;
  byte_A10B3E = 0;
  _drawRadar = 0;
  do
  {
    ++v32;
    *(&scriptSpheres[0].inUse + v31) = 0;
    *(__int16 *)((char *)&scriptSpheres[0].handle + v31) = 1;
    *(int *)((char *)&scriptSpheres[0].uniqueID + v31) = 0;
    *(_DWORD *)((char *)&scriptSpheres[0].sphere.center.x + v31) = 0;
    *(_DWORD *)((char *)&scriptSpheres[0].sphere.center.y + v31) = 0;
    *(_DWORD *)((char *)&scriptSpheres[0].sphere.center.z + v31) = 0;
    *(DWORD *)((char *)&scriptSpheres[0].sphere.radius + v31) = 0;
    v31 += 24;
  }
  while ( v32 < 16 );
  v33 = 0;
  v35 = 0;
  v34 = 0;
  do
  {
    __asm { emms }
    *(DWORD *)((char *)&textDrawers[0].LetterWidth + v33) = 1056293519;
    *(DWORD *)((char *)&textDrawers[0].LetterHeight + v33) = 1066359849;
    RwRGBA__constructor(&v61, 0xE1u, 0xE1u, 0xE1u, 0xFFu);
    v38 = v61.green;
    v39 = v61.blue;
    *(&textDrawers[0].color.red + v33) = v61.red;
    *(&textDrawers[0].color.green + v33) = v38;
    v40 = v61.alpha;
    *(&textDrawers[0].color.blue + v33) = v39;
    *(&textDrawers[0].color.alpha + v33) = v40;
    *(&textDrawers[0].widthAdjustment + v33) = 0;
    *(&textDrawers[0].alignment + v33) = 0;
    *(&textDrawers[0].centered + v33) = 0;
    *(&textDrawers[0].drawBox + v33) = 0;
    *(&textDrawers[0].withBackground + v33) = 0;
    *(DWORD *)((char *)&textDrawers[0].lineWidth + v33) = 1127612416;
    *(DWORD *)((char *)&textDrawers[0].lineHeight + v33) = 1142947840;
    RwRGBA__constructor(&v62, 0x80u, 0x80u, 0x80u, 0x80u);
    v41 = v62.green;
    v37 = 0;
    *(&textDrawers[0].backgroundBoxColor.red + v33) = v62.red;
    v42 = v62.blue;
    *(&textDrawers[0].backgroundBoxColor.green + v33) = v41;
    v43 = v62.alpha;
    *(&textDrawers[0].backgroundBoxColor.blue + v33) = v42;
    __asm { pxor    mm0, mm0 }
    *(&textDrawers[0].backgroundBoxColor.alpha + v33) = v43;
    _EAX = v34;
    *(&textDrawers[0].proportional + v33) = 1;
    *(&textDrawers[0].field_1D + v33) = 0;
    *(_DWORD *)((char *)&textDrawers[0].fontStyle + v33) = 1;
    *(DWORD *)((char *)&textDrawers[0].x + v33) = 0;
    *(DWORD *)((char *)&textDrawers[0].y + v33) = 0;
    do
    {
      v37 += 20;
      __asm
      {
        movq    qword ptr ds:_textDrawers.text[eax*2], mm0
        movq    qword ptr ds:_textDrawers.text+8[eax*2], mm0
        movq    qword ptr ds:_textDrawers.text+10h[eax*2], mm0
        movq    qword ptr ds:_textDrawers.text+18h[eax*2], mm0
        movq    qword ptr ds:_textDrawers.text+20h[eax*2], mm0
      }
      _EAX += 20;
    }
    while ( v37 < 100 );
    ++v35;
    v33 += 244;
    v34 += 122;
  }
  while ( v35 < 48 );
  v46 = 0;
  currentTextDrawer = 0;
  v45 = 0;
  TextDrawFlag = 0;
  do
  {
    __asm { emms }
    *(&textSprites[0].active + v45) = 0;
    *(&textSprites[0].antialiased + v45) = 0;
    *(WORD *)((char *)&textSprites[0].textureID + v45) = -1;
    *(DWORD *)((char *)&textSprites[0].pos.x + v45) = 0;
    *(DWORD *)((char *)&textSprites[0].pos.y + v45) = 0;
    *(DWORD *)((char *)&textSprites[0].pos.w + v45) = 0;
    *(DWORD *)((char *)&textSprites[0].pos.h + v45) = 0;
    RwRGBA__constructor(&v63, 0xFFu, 0xFFu, 0xFFu, 0xFFu);
    v47 = v63.green;
    ++v46;
    *(&textSprites[0].transparentColor.red + v45) = v63.red;
    v48 = v63.blue;
    *(&textSprites[0].transparentColor.green + v45) = v47;
    v49 = v63.alpha;
    *(&textSprites[0].transparentColor.blue + v45) = v48;
    *(&textSprites[0].transparentColor.alpha + v45) = v49;
    v45 += 24;
  }
  while ( v46 < 16 );
  v51 = 0;
  currentTextSprite = 0;
  v50 = &scriptTextures;
  do
  {
    CTexture__destroy(v50);
    ++v51;
    ++v50;
  }
  while ( (_WORD)v51 < 0x10u );
  v52 = txdIndexByName("script");
  if ( v52 != -1 )
  {
    if ( TexDictionaryPool->flags[v52] & 0x80 )
      v53 = 0;
    else
      v53 = (char *)TexDictionaryPool->objects + 28 * v52;
    if ( *(_DWORD *)v53 )
      ReleaseTxd(v52);
  }
  v54 = 0;
  v55 = 0;
  do
  {
    *(int *)((char *)&dword_94DBE8 + v55) = 0;
    *(int *)((char *)&dword_94DBEC + v55) = -1;
    *(int *)((char *)&dword_94DBF0 + v55) = -1;
    v56 = 12 * (v54 + 1);
    v55 += 60;
    *(int *)((char *)&dword_94DBE8 + v56) = 0;
    *(int *)((char *)&dword_94DBEC + v56) = -1;
    *(int *)((char *)&dword_94DBF0 + v56) = -1;
    v57 = 12 * (v54 + 2);
    *(int *)((char *)&dword_94DBE8 + v57) = 0;
    *(int *)((char *)&dword_94DBEC + v57) = -1;
    *(int *)((char *)&dword_94DBF0 + v57) = -1;
    v58 = 12 * (v54 + 3);
    *(int *)((char *)&dword_94DBE8 + v58) = 0;
    *(int *)((char *)&dword_94DBEC + v58) = -1;
    *(int *)((char *)&dword_94DBF0 + v58) = -1;
    v59 = 4 * (v54 + 4);
    v54 += 5;
    v59 *= 3;
    *(int *)((char *)&dword_94DBE8 + v59) = 0;
    *(int *)((char *)&dword_94DBEC + v59) = -1;
    *(int *)((char *)&dword_94DBF0 + v59) = -1;
  }
  while ( v54 < 25 );
  result = 0;
  do
  {
    dword_938208[result] = 0;
    dword_93820C[result] = 0;
    dword_938210[result] = 0;
    dword_938214[result] = 0;
    dword_938218[result] = 0;
    result += 5;
  }
  while ( result < 20 );
  return result;
}
 

FYP

Известный
Администратор
1,758
5,722
да и фиг с ним, скомпилировать псевдокод возможно?
Код:
signed int __cdecl loadScm()
{
  CScriptThread *v9; // ebx@3
  int v10; // ebp@3
  signed int v11; // esi@3
  char v12; // zf@4
  int v13; // eax@7
  int v14; // ecx@8
  int v15; // eax@9
  int v16; // edx@9
  _UNKNOWN *v17; // ebp@9
  int v18; // edi@9
  int v19; // ebx@10
  int v20; // edx@11
  signed int v21; // ecx@11
  FILE *v22; // esi@11
  signed int v23; // eax@12
  int v27; // ebx@13
  int v31; // eax@17
  signed int v32; // edi@17
  int v33; // ebx@19
  int v34; // ebp@19
  signed int v35; // esi@19
  signed int v37; // edi@20
  BYTE v38; // al@20
  BYTE v39; // dl@20
  BYTE v40; // al@20
  BYTE v41; // al@20
  BYTE v42; // dl@20
  BYTE v43; // al@20
  int v45; // ebx@23
  signed int v46; // ebp@23
  BYTE v47; // al@24
  BYTE v48; // dl@24
  BYTE v49; // al@24
  CTexture *v50; // edi@25
  int v51; // esi@25
  DWORD v52; // eax@27
  char *v53; // ebx@29
  signed int v54; // eax@33
  int v55; // ebp@33
  int v56; // edx@34
  int v57; // edi@34
  int v58; // ebx@34
  int v59; // esi@34
  signed int result; // eax@35
  RwRGBA v61; // [sp+4h] [bp-1Ch]@20
  RwRGBA v62; // [sp+8h] [bp-18h]@20
  RwRGBA v63; // [sp+Ch] [bp-14h]@24

  _EAX = 0;
  __asm { pxor    mm0, mm0 }
  do
  {
    __asm { movq    qword ptr ds:_scmBlock[eax], mm0 }
    _EBP = _EAX + 8;
    __asm { movq    qword ptr ss:_scmBlock[ebp], mm0 }
    _EDX = _EAX + 16;
    __asm { movq    qword ptr ds:_scmBlock[edx], mm0 }
    _ESI = _EAX + 24;
    __asm { movq    qword ptr ds:_scmBlock[esi], mm0 }
    _EBX = _EAX + 32;
    __asm { movq    qword ptr ds:_scmBlock[ebx], mm0 }
    _EBP = _EAX + 40;
    __asm { movq    qword ptr ss:_scmBlock[ebp], mm0 }
    _ECX = _EAX + 48;
    __asm { movq    qword ptr ds:_scmBlock[ecx], mm0 }
    _EDX = _EAX + 56;
    _EAX += 64;
    __asm { movq    qword ptr ds:_scmBlock[edx], mm0 }
  }
  while ( _EAX < 260448 );
  scmBlock[_EAX] = 0;
  InactiveThreadQueue = 0;
  scmBlock[_EAX + 1] = 0;
  scmBlock[_EAX + 2] = 0;
  scmBlock[_EAX + 3] = 0;
  scmBlock[_EAX + 4] = 0;
  scmBlock[_EAX + 5] = 0;
  scmBlock[_EAX + 6] = 0;
  scmBlock[_EAX + 7] = 0;
  scmBlock[_EAX + 8] = 0;
  scmBlock[_EAX + 9] = 0;
  scmBlock[_EAX + 10] = 0;
  scmBlock[_EAX + 11] = 0;
  scmBlock[_EAX + 12] = 0;
  scmBlock[_EAX + 13] = 0;
  scmBlock[_EAX + 14] = 0;
  scmBlock[_EAX + 15] = 0;
  scmBlock[_EAX + 16] = 0;
  scmBlock[_EAX + 17] = 0;
  scmBlock[_EAX + 18] = 0;
  scmBlock[_EAX + 19] = 0;
  scmBlock[_EAX + 20] = 0;
  scmBlock[_EAX + 21] = 0;
  scmBlock[_EAX + 22] = 0;
  scmBlock[_EAX + 23] = 0;
  scmBlock[_EAX + 24] = 0;
  scmBlock[_EAX + 25] = 0;
  scmBlock[_EAX + 26] = 0;
  scmBlock[_EAX + 27] = 0;
  scmBlock[_EAX + 28] = 0;
  scmBlock[_EAX + 29] = 0;
  scmBlock[_EAX + 30] = 0;
  scmBlock[_EAX + 31] = 0;
  v9 = &ScriptThreads;
  ActiveThreadQueue = InactiveThreadQueue;
  v11 = 0;
  v10 = 0;
  do
  {
    __asm { emms }
    CScriptThread__init(v9);
    v12 = InactiveThreadQueue == 0;
    *(CScriptThread **)((char *)&ScriptThreads.next + v10) = InactiveThreadQueue;
    *(CScriptThread **)((char *)&ScriptThreads.prev + v10) = 0;
    if ( !v12 )
      InactiveThreadQueue->prev = v9;
    ++v11;
    InactiveThreadQueue = v9;
    v10 += 136;
    ++v9;
  }
  while ( v11 < 128 );
  v13 = 0;
  missionCleanipList.count = 0;
  do
  {
    v14 = (unsigned __int16)v13;
    v13 += 8;
    missionCleanipList.missionCleanup[v14].type = 0;
    missionCleanipList.missionCleanup[v14].handle = 0;
    missionCleanipList.missionCleanup[v14 + 1].type = 0;
    missionCleanipList.missionCleanup[v14 + 1].handle = 0;
    missionCleanipList.missionCleanup[v14 + 2].type = 0;
    missionCleanipList.missionCleanup[v14 + 2].handle = 0;
    missionCleanipList.missionCleanup[v14 + 3].type = 0;
    missionCleanipList.missionCleanup[v14 + 3].handle = 0;
    missionCleanipList.missionCleanup[v14 + 4].type = 0;
    missionCleanipList.missionCleanup[v14 + 4].handle = 0;
    missionCleanipList.missionCleanup[v14 + 5].type = 0;
    missionCleanipList.missionCleanup[v14 + 5].handle = 0;
    missionCleanipList.missionCleanup[v14 + 6].type = 0;
    missionCleanipList.missionCleanup[v14 + 6].handle = 0;
    missionCleanipList.missionCleanup[v14 + 7].type = 0;
    missionCleanipList.missionCleanup[v14 + 7].handle = 0;
  }
  while ( (_WORD)v13 < 0x2Au );
  v16 = (unsigned __int16)v13;
  v15 = 0;
  flippedCheck.hVehicle = -1;
  flippedCheck.time = 0;
  unk_7D96E0 = -1;
  unk_7D96E4 = 0;
  unk_7D96E8 = -1;
  unk_7D96EC = 0;
  unk_7D96F0 = -1;
  unk_7D96F4 = 0;
  unk_7D96F8 = -1;
  unk_7D96FC = 0;
  unk_7D9700 = -1;
  v18 = 0;
  missionCleanipList.missionCleanup[v16].type = 0;
  v17 = &stuckCheck;
  missionCleanipList.missionCleanup[v16].handle = 0;
  unk_7D9704 = 0;
  missionCleanipList.missionCleanup[v16 + 1].type = 0;
  missionCleanipList.missionCleanup[v16 + 1].handle = 0;
  do
  {
    ++v15;
    *(_DWORD *)((char *)&stuckCheck + v18) = -1;
    v19 = (int)((char *)v17 + 4);
    v17 = (char *)v17 + 32;
    *(_DWORD *)v19 = -979615744;
    *(_DWORD *)(v19 + 4) = -979615744;
    *(_DWORD *)(v19 + 8) = -979615744;
    *(_DWORD *)((char *)&stuckCheck + v18 + 16) = -1;
    *(_DWORD *)((char *)&stuckCheck + v18 + 20) = 0;
    *(_DWORD *)((char *)&stuckCheck + v18 + 24) = 0;
    *((_BYTE *)&stuckCheck + v18 + 28) = 0;
    v18 += 32;
  }
  while ( (_WORD)v15 < 0x10u );
  CFileMgr__ChDir_RootDir("data");
  v22 = CFileMgr__Open("main.scm", "rb");
  CFileMgr__Read(v22, scmBlock, 0x370E8u);
  CFileMgr__CloseFile(v22);
  CFileMgr__ChDir_RootDir((char *)&unk_6886B8);
  playerCarHandle = -1;
  v21 = 0;
  byte_A10B89 = 1;
  dword_9787D4 = -1;
  OnMissionFlagVarOffset = 0;
  dword_9785E4 = -1;
  v20 = 0;
  do
  {
    v23 = 0;
    __asm { pxor    mm1, mm1 }
    do
    {
      _EBX = v23 + v20;
      __asm { movq    ds:qword_7D1DC8[ebx], mm1 }
      _ESI = v23 + 8 + v20;
      __asm { movq    ds:qword_7D1DC8[esi], mm1 }
      v27 = v23 + 16;
      v23 += 24;
      _EBP = v27 + v20;
      __asm { movq    ss:qword_7D1DC8[ebp], mm1 }
    }
    while ( v23 < 24 );
    ++v21;
    *(int *)((char *)ScriptModelIndices + v20) = 0;
    v20 += 28;
  }
  while ( v21 < 220 );
  __asm { emms }
  word_A10A30 = 0;
  sub_45E910(v21, v20);
  CScriptEngine__UpdateObjectIndices();
  _EAX = 0;
  MissionLoaded = 0;
  __asm { pxor    mm2, mm2 }
  byte_A10AEF = 1;
  do
  {
    __asm
    {
      movq    qword ptr ds:_missionOffsets[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+8[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+10h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+18h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+20h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+28h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+30h[eax*4], mm2
      movq    qword ptr ds:_missionOffsets+38h[eax*4], mm2
    }
    _EAX += 16;
  }
  while ( _EAX < 104 );
  __asm { emms }
  missionCountH = 0;
  *(&missionOffsets + _EAX) = 0;
  word_A10A5C = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 1) = 0;
  dword_A0D950 = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 2) = 0;
  dword_A0D06C = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 3) = 0;
  *(&missionOffsets + _EAX + 1) = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 5) = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 6) = 0;
  *(__int32 *)((char *)&missionOffsets + 4 * _EAX + 7) = 0;
  sub_45E530();
  v32 = 0;
  abortMission = 0;
  v31 = 0;
  dword_9B6AB4 = 0;
  debugModeOn = 0;
  byte_A10B7F = 0;
  word_A1096E = 0;
  byte_A10B3E = 0;
  _drawRadar = 0;
  do
  {
    ++v32;
    *(&scriptSpheres[0].inUse + v31) = 0;
    *(__int16 *)((char *)&scriptSpheres[0].handle + v31) = 1;
    *(int *)((char *)&scriptSpheres[0].uniqueID + v31) = 0;
    *(_DWORD *)((char *)&scriptSpheres[0].sphere.center.x + v31) = 0;
    *(_DWORD *)((char *)&scriptSpheres[0].sphere.center.y + v31) = 0;
    *(_DWORD *)((char *)&scriptSpheres[0].sphere.center.z + v31) = 0;
    *(DWORD *)((char *)&scriptSpheres[0].sphere.radius + v31) = 0;
    v31 += 24;
  }
  while ( v32 < 16 );
  v33 = 0;
  v35 = 0;
  v34 = 0;
  do
  {
    __asm { emms }
    *(DWORD *)((char *)&textDrawers[0].LetterWidth + v33) = 1056293519;
    *(DWORD *)((char *)&textDrawers[0].LetterHeight + v33) = 1066359849;
    RwRGBA__constructor(&v61, 0xE1u, 0xE1u, 0xE1u, 0xFFu);
    v38 = v61.green;
    v39 = v61.blue;
    *(&textDrawers[0].color.red + v33) = v61.red;
    *(&textDrawers[0].color.green + v33) = v38;
    v40 = v61.alpha;
    *(&textDrawers[0].color.blue + v33) = v39;
    *(&textDrawers[0].color.alpha + v33) = v40;
    *(&textDrawers[0].widthAdjustment + v33) = 0;
    *(&textDrawers[0].alignment + v33) = 0;
    *(&textDrawers[0].centered + v33) = 0;
    *(&textDrawers[0].drawBox + v33) = 0;
    *(&textDrawers[0].withBackground + v33) = 0;
    *(DWORD *)((char *)&textDrawers[0].lineWidth + v33) = 1127612416;
    *(DWORD *)((char *)&textDrawers[0].lineHeight + v33) = 1142947840;
    RwRGBA__constructor(&v62, 0x80u, 0x80u, 0x80u, 0x80u);
    v41 = v62.green;
    v37 = 0;
    *(&textDrawers[0].backgroundBoxColor.red + v33) = v62.red;
    v42 = v62.blue;
    *(&textDrawers[0].backgroundBoxColor.green + v33) = v41;
    v43 = v62.alpha;
    *(&textDrawers[0].backgroundBoxColor.blue + v33) = v42;
    __asm { pxor    mm0, mm0 }
    *(&textDrawers[0].backgroundBoxColor.alpha + v33) = v43;
    _EAX = v34;
    *(&textDrawers[0].proportional + v33) = 1;
    *(&textDrawers[0].field_1D + v33) = 0;
    *(_DWORD *)((char *)&textDrawers[0].fontStyle + v33) = 1;
    *(DWORD *)((char *)&textDrawers[0].x + v33) = 0;
    *(DWORD *)((char *)&textDrawers[0].y + v33) = 0;
    do
    {
      v37 += 20;
      __asm
      {
        movq    qword ptr ds:_textDrawers.text[eax*2], mm0
        movq    qword ptr ds:_textDrawers.text+8[eax*2], mm0
        movq    qword ptr ds:_textDrawers.text+10h[eax*2], mm0
        movq    qword ptr ds:_textDrawers.text+18h[eax*2], mm0
        movq    qword ptr ds:_textDrawers.text+20h[eax*2], mm0
      }
      _EAX += 20;
    }
    while ( v37 < 100 );
    ++v35;
    v33 += 244;
    v34 += 122;
  }
  while ( v35 < 48 );
  v46 = 0;
  currentTextDrawer = 0;
  v45 = 0;
  TextDrawFlag = 0;
  do
  {
    __asm { emms }
    *(&textSprites[0].active + v45) = 0;
    *(&textSprites[0].antialiased + v45) = 0;
    *(WORD *)((char *)&textSprites[0].textureID + v45) = -1;
    *(DWORD *)((char *)&textSprites[0].pos.x + v45) = 0;
    *(DWORD *)((char *)&textSprites[0].pos.y + v45) = 0;
    *(DWORD *)((char *)&textSprites[0].pos.w + v45) = 0;
    *(DWORD *)((char *)&textSprites[0].pos.h + v45) = 0;
    RwRGBA__constructor(&v63, 0xFFu, 0xFFu, 0xFFu, 0xFFu);
    v47 = v63.green;
    ++v46;
    *(&textSprites[0].transparentColor.red + v45) = v63.red;
    v48 = v63.blue;
    *(&textSprites[0].transparentColor.green + v45) = v47;
    v49 = v63.alpha;
    *(&textSprites[0].transparentColor.blue + v45) = v48;
    *(&textSprites[0].transparentColor.alpha + v45) = v49;
    v45 += 24;
  }
  while ( v46 < 16 );
  v51 = 0;
  currentTextSprite = 0;
  v50 = &scriptTextures;
  do
  {
    CTexture__destroy(v50);
    ++v51;
    ++v50;
  }
  while ( (_WORD)v51 < 0x10u );
  v52 = txdIndexByName("script");
  if ( v52 != -1 )
  {
    if ( TexDictionaryPool->flags[v52] & 0x80 )
      v53 = 0;
    else
      v53 = (char *)TexDictionaryPool->objects + 28 * v52;
    if ( *(_DWORD *)v53 )
      ReleaseTxd(v52);
  }
  v54 = 0;
  v55 = 0;
  do
  {
    *(int *)((char *)&dword_94DBE8 + v55) = 0;
    *(int *)((char *)&dword_94DBEC + v55) = -1;
    *(int *)((char *)&dword_94DBF0 + v55) = -1;
    v56 = 12 * (v54 + 1);
    v55 += 60;
    *(int *)((char *)&dword_94DBE8 + v56) = 0;
    *(int *)((char *)&dword_94DBEC + v56) = -1;
    *(int *)((char *)&dword_94DBF0 + v56) = -1;
    v57 = 12 * (v54 + 2);
    *(int *)((char *)&dword_94DBE8 + v57) = 0;
    *(int *)((char *)&dword_94DBEC + v57) = -1;
    *(int *)((char *)&dword_94DBF0 + v57) = -1;
    v58 = 12 * (v54 + 3);
    *(int *)((char *)&dword_94DBE8 + v58) = 0;
    *(int *)((char *)&dword_94DBEC + v58) = -1;
    *(int *)((char *)&dword_94DBF0 + v58) = -1;
    v59 = 4 * (v54 + 4);
    v54 += 5;
    v59 *= 3;
    *(int *)((char *)&dword_94DBE8 + v59) = 0;
    *(int *)((char *)&dword_94DBEC + v59) = -1;
    *(int *)((char *)&dword_94DBF0 + v59) = -1;
  }
  while ( v54 < 25 );
  result = 0;
  do
  {
    dword_938208[result] = 0;
    dword_93820C[result] = 0;
    dword_938210[result] = 0;
    dword_938214[result] = 0;
    dword_938218[result] = 0;
    result += 5;
  }
  while ( result < 20 );
  return result;
}
этот? а ты почитай его и попробуй сам ответить.
 

monobogdan

Новичок
Автор темы
64
3
Ещё вопрос:
Как хукнуть d3d?
Вроде интерфейсы надо подменить

этот? а ты почитай его и попробуй сам ответить.
если указатели на все поставить то вроде должен.
 
Последнее редактирование модератором:

deropleat

Известный
105
56
если указатели на все поставить то вроде должен.
Нет. Попробуй чисто логически подумать почему.
Ещё вопрос:
Как хукнуть d3d?
Вроде интерфейсы надо подменить
Ищи тебе нужные параметры в хуке d3d9, их и меняй.
 
Статус
В этой теме нельзя размещать новые ответы.