- 64
- 3
Возможно ли скомпилировать идовский псевдокод? Или вообще перекомпилировать gta-vc.exe с идовскими сырками :D
да и фиг с ним, скомпилировать псевдокод возможно?целое приложение - нет.
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;
}
этот? а ты почитай его и попробуй сам ответить.да и фиг с ним, скомпилировать псевдокод возможно?
Код: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; }
если указатели на все поставить то вроде должен.этот? а ты почитай его и попробуй сам ответить.
Нет. Попробуй чисто логически подумать почему.если указатели на все поставить то вроде должен.
Ищи тебе нужные параметры в хуке d3d9, их и меняй.Ещё вопрос:
Как хукнуть d3d?
Вроде интерфейсы надо подменить