Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* This file has been generated by the Hex-Rays decompiler.
- Copyright (c) 2007 Hex-Rays sprl <info@hex-rays.com>
- Detected compiler: GNU C++
- */
- #include <windows.h>
- #include <defs.h>
- //-------------------------------------------------------------------------
- // Data declarations
- extern char aWaninkokowashe[22]; // weak
- extern _UNKNOWN unk_4090C0; // weak
- extern _UNKNOWN unk_409248; // weak
- extern char aCommonKey[11]; // weak
- extern char aCkey_bin[9]; // weak
- extern char aKey_bin[8]; // weak
- extern char aWb_1[3]; // weak
- extern char aPartition_iso[14]; // weak
- extern char aIsoSize_3fMb[23]; // weak
- extern char aUsageSIsoFile[26]; // weak
- extern char aErrorNoFreeMem[38]; // weak
- extern char aErrorCouldNotO[33]; // weak
- extern char aErrorCouldNotR[41]; // weak
- extern char aErrorCouldNotF[43]; // weak
- extern char aErrorCouldNotG[47]; // weak
- extern char aCreatingBackup[41]; // weak
- extern char aErrorCouldNotC[46]; // weak
- extern char aBackupIsoCreat[39]; // weak
- extern char aPressAnyKeyToE[31]; // weak
- extern int byte_409480[]; // idb
- extern int dword_409880[]; // idb
- extern int dword_409C80[]; // idb
- extern int dword_40A080[]; // idb
- extern int dword_40A480[]; // idb
- extern int byte_40A880[]; // idb
- extern int dword_40AC80[]; // idb
- extern int dword_40B080[]; // idb
- extern int dword_40B480[]; // idb
- extern int dword_40B880[]; // idb
- extern int dword_40BC80[]; // idb
- extern char byte_40BCE8; // weak
- extern _UNKNOWN unk_40BCE9; // weak
- extern _UNKNOWN unk_40C010; // weak
- extern char byte_40C030; // weak
- //-------------------------------------------------------------------------
- // Function declarations
- int __cdecl sub_401290(int a1);
- _DWORD __cdecl sub_401310(_DWORD); // weak
- void *__cdecl sub_401374();
- signed int __cdecl sub_4013B8(const char *a1, FILE **a2);
- int __cdecl sub_40140D(FILE **a1);
- signed int __cdecl sub_40142A(int a1);
- signed int __cdecl sub_4019BF(const char *a1, void *a2);
- signed int __cdecl sub_401A38(int a1);
- int __cdecl sub_401B40(int a1);
- signed int __cdecl sub_401BCD(int a1, int a2);
- signed int __cdecl sub_401CAF(FILE **a1, int a2, int a3, int a4);
- signed int __cdecl sub_401E60(FILE **a1, int a2, int a3, int a4);
- signed int __cdecl sub_401EF8(FILE **a1, int a2, void *a3, void *a4, void *a5);
- signed int __cdecl sub_401FCF(FILE **a1, unsigned __int64 a2, size_t a3, int a4);
- signed int __cdecl sub_402135(int a1, int a2, int a3);
- signed int __cdecl sub_4027CF(int a1, unsigned __int64 a2, size_t a3, const void *a4);
- signed int __cdecl sub_40297D(FILE **a1);
- int __cdecl sub_402A13(FILE **a1);
- int __cdecl sub_402D20(int a1, unsigned int a2, int a3);
- int __cdecl sub_402D41(int a1, int a2, unsigned int a3, int a4, int a5);
- int __cdecl sub_402D9B(int a1, int a2, unsigned int a3, int a4, int a5);
- unsigned int __cdecl sub_402E00(int a1);
- unsigned int __cdecl sub_4031C0(int a1);
- signed int __cdecl sub_4035AD(const void *a1);
- void *__cdecl sub_403710(size_t a1);
- unsigned int __cdecl sub_403743(int a1);
- int __cdecl sub_403764(int a1);
- int __cdecl sub_4037A0(int a1);
- size_t __cdecl sub_4038F4(int a1, FILE *a2);
- void *__cdecl sub_40394C(int a1, const void *a2, size_t a3);
- signed int __cdecl sub_403A80(FILE **a1);
- int __cdecl main(int argc, const char **argv, const char *envp); // idb
- signed int __cdecl sub_403FE0(int a1, signed int a2, int a3);
- signed int __cdecl sub_4043D0(int a1, signed int a2, int a3);
- unsigned int __cdecl sub_404610(int a1, int a2, int a3);
- unsigned int __cdecl sub_404BE0(int a1, int a2, int a3);
- int __cdecl sub_4051A0(int a1, int a2, unsigned int a3, int a4, int a5, signed int a6);
- int __cdecl sub_4053F0(int a1, unsigned int a2, int a3);
- void *__cdecl sub_405460(void *a1, int a2); // idb
- signed int __cdecl sub_4054D0(int a1, int a2, unsigned int a3);
- signed int __cdecl sub_405890(int a1, int a2);
- signed int __cdecl sub_4059F0(int a1);
- int __cdecl sub_405A40(int a1, int a2, int a3);
- _DWORD __cdecl sub_40696C(_DWORD, _DWORD, _DWORD); // weak
- // _DWORD __main(); weak
- // _DWORD __cdecl ftello64(_DWORD); weak
- // _DWORD __cdecl fseeko64(_DWORD, _DWORD, _DWORD, _DWORD); weak
- // void *__cdecl memcpy(void *, const void *, size_t); idb
- // void *__cdecl memset(void *, int, size_t); idb
- // int printf(const char *, ...); idb
- // size_t __cdecl fread(void *, size_t, size_t, FILE *); idb
- // int __cdecl fclose(FILE *); idb
- // void __cdecl free(void *); idb
- // void __cdecl rewind(FILE *); idb
- // FILE *__cdecl fopen(const char *, const char *); idb
- // size_t __cdecl fwrite(const void *, size_t, size_t, FILE *); idb
- // void *__cdecl malloc(size_t); idb
- // int __cdecl getchar(); idb
- // void *__cdecl memchr(const void *, int, size_t); idb
- //----- (00401290) --------------------------------------------------------
- int __cdecl sub_401290(int a1)
- {
- int v2; // eax@5
- int v3; // [sp+14h] [bp-14h]@2
- int v4; // [sp+20h] [bp-8h]@3
- unsigned int v5; // [sp+24h] [bp-4h]@3
- int v6; // [sp+1Ch] [bp-Ch]@5
- int v7; // [sp+18h] [bp-10h]@5
- if ( a1 )
- {
- v4 = 0;
- v5 = 0;
- while ( v5 <= 0x11 )
- {
- v2 = a1 + 4 * v5;
- v6 = v2 + 144;
- sub_40394C((int)&v7, (const void *)(v2 + 144), 4u);
- v4 += v7;
- ++v5;
- }
- v4 += 256;
- v3 = v4;
- }
- else
- {
- v3 = 0;
- }
- return v3;
- }
- //----- (00401310) --------------------------------------------------------
- #error "40135D: invalid basic block (funcsize=30)"
- //----- (00401374) --------------------------------------------------------
- void *__cdecl sub_401374()
- {
- return sub_403710(0xA0u);
- }
- //----- (004013B8) --------------------------------------------------------
- signed int __cdecl sub_4013B8(const char *a1, FILE **a2)
- {
- signed int v3; // [sp+10h] [bp-8h]@4
- if ( *a2 )
- fclose(*a2);
- *a2 = fopen(a1, (const char *)&unk_4090C0);
- if ( *a2 )
- v3 = 0;
- else
- v3 = 1;
- return v3;
- }
- //----- (0040140D) --------------------------------------------------------
- int __cdecl sub_40140D(FILE **a1)
- {
- int result; // eax@1
- result = (int)a1;
- if ( *a1 )
- result = fclose(*a1);
- return result;
- }
- //----- (0040142A) --------------------------------------------------------
- signed int __cdecl sub_40142A(int a1)
- {
- int v2; // ebx@3
- int v3; // edx@3
- void *v4; // eax@5
- int v5; // edx@9
- FILE *v6; // [sp+30h] [bp-8h]@1
- signed int v7; // [sp+10h] [bp-28h]@2
- unsigned int v8; // [sp+24h] [bp-14h]@5
- int v9; // [sp+20h] [bp-18h]@5
- void *v10; // [sp+2Ch] [bp-Ch]@5
- unsigned int v11; // [sp+28h] [bp-10h]@7
- int v12; // [sp+1Ch] [bp-1Ch]@9
- unsigned int v13; // [sp+18h] [bp-20h]@9
- int v14; // [sp+14h] [bp-24h]@9
- v6 = *(FILE **)a1;
- if ( sub_401310(a1) )
- {
- v7 = 1;
- }
- else
- {
- fseeko64(v6, 0, 0, 2);
- v2 = a1;
- *(_DWORD *)(a1 + 8) = ftello64(v6);
- *(_DWORD *)(v2 + 12) = v3;
- rewind(v6);
- if ( fread((void *)(a1 + 24), 0x64u, 1u, v6) == 1 )
- {
- fseeko64(v6, 262144, 0, 0);
- sub_4038F4((int)&v8, v6);
- sub_4038F4((int)&v9, v6);
- v4 = sub_403710(117960 * v8);
- v10 = v4;
- if ( v4 )
- {
- fseeko64(v6, 4 * v9, 0, 0);
- v11 = 0;
- while ( v11 < v8 )
- {
- v12 = (int)((char *)v10 + 117960 * v11);
- v13 = 0;
- v14 = 0;
- sub_4038F4((int)&v13, v6);
- sub_4038F4((int)&v14, v6);
- v5 = 4 * (unsigned __int64)v13 >> 32;
- *(_DWORD *)(v12 + 8) = 4 * v13;
- *(_DWORD *)(v12 + 12) = v5;
- *(_DWORD *)(v12 + 16) = v14;
- ++v11;
- }
- v11 = 0;
- while ( v11 < v8 )
- {
- v12 = (int)((char *)v10 + 117960 * v11);
- *((_DWORD *)v10 + 29490 * v11) = v6;
- fseeko64(v6, *((_DWORD *)v10 + 29490 * v11 + 2), *((_DWORD *)v10 + 29490 * v11 + 3), 0);
- fread((void *)(v12 + 64), 0x2A4u, 1u, v6);
- sub_402E00(v12 + 64);
- fseeko64(v6, *(_DWORD *)(v12 + 8) + 676, __MKCADD__(676, *(_DWORD *)(v12 + 8)) + *(_DWORD *)(v12 + 12), 0);
- fread((void *)(v12 + 36), 0x1Cu, 1u, v6);
- sub_401B40(v12 + 36);
- fseeko64(
- v6,
- *(_DWORD *)(v12 + 8) + 4 * *(_DWORD *)(v12 + 40),
- *(_DWORD *)(v12 + 12) + __MKCADD__(*(_DWORD *)(v12 + 8), 4 * *(_DWORD *)(v12 + 40)),
- 0);
- fread((void *)(v12 + 740), 0x49E4u, 1u, v6);
- sub_4031C0(v12 + 740);
- fseeko64(
- v6,
- *(_DWORD *)(v12 + 8) + 4 * *(_DWORD *)(v12 + 52),
- *(_DWORD *)(v12 + 12) + __MKCADD__(*(_DWORD *)(v12 + 8), 4 * *(_DWORD *)(v12 + 52)),
- 0);
- fread((void *)(v12 + 19656), 0x18000u, 1u, v6);
- sub_401A38(v12);
- ++v11;
- }
- *(_DWORD *)(a1 + 16) = v8;
- *(_DWORD *)(a1 + 20) = v9;
- *(_DWORD *)(a1 + 156) = v10;
- v7 = 0;
- }
- else
- {
- v7 = 1;
- }
- }
- else
- {
- v7 = 1;
- }
- }
- return v7;
- }
- //----- (004019BF) --------------------------------------------------------
- signed int __cdecl sub_4019BF(const char *a1, void *a2)
- {
- FILE *v3; // eax@1
- FILE *v4; // [sp+14h] [bp-4h]@1
- signed int v5; // [sp+10h] [bp-8h]@2
- v3 = fopen(a1, (const char *)&unk_409248);
- v4 = v3;
- if ( v3 )
- {
- if ( fread(a2, 0x10u, 1u, v4) == 1 )
- {
- fclose(v4);
- v5 = 0;
- }
- else
- {
- v5 = 1;
- }
- }
- else
- {
- v5 = 1;
- }
- return v5;
- }
- //----- (00401A38) --------------------------------------------------------
- signed int __cdecl sub_401A38(int a1)
- {
- int v2; // edx@7
- signed int v3; // [sp+2Ch] [bp-3Ch]@2
- int v4; // [sp+5Ch] [bp-Ch]@3
- char v5; // [sp+40h] [bp-28h]@3
- int v6; // [sp+50h] [bp-18h]@7
- int v7; // [sp+54h] [bp-14h]@7
- char v8; // [sp+30h] [bp-38h]@7
- if ( a1 )
- {
- v4 = a1 + 384;
- if ( sub_4019BF("common-key", &v5) && sub_4019BF("ckey.bin", &v5) && sub_4019BF("key.bin", &v5) )
- {
- v3 = 1;
- }
- else
- {
- v2 = *(_DWORD *)(v4 + 160);
- v6 = *(_DWORD *)(v4 + 156);
- v7 = v2;
- sub_4037A0((int)&v6);
- memset(&v8, 0, 0x10u);
- memcpy(&v8, &v6, 8u);
- sub_402D9B(v4 + 127, a1 + 20, 0x10u, (int)&v5, (int)&v8);
- v3 = 0;
- }
- }
- else
- {
- v3 = 1;
- }
- return v3;
- }
- //----- (00401B40) --------------------------------------------------------
- int __cdecl sub_401B40(int a1)
- {
- sub_403764(a1);
- sub_403764(a1 + 4);
- sub_403764(a1 + 8);
- sub_403764(a1 + 12);
- sub_403764(a1 + 16);
- sub_403764(a1 + 20);
- return sub_403764(a1 + 24);
- }
- //----- (00401BCD) --------------------------------------------------------
- signed int __cdecl sub_401BCD(int a1, int a2)
- {
- signed int v3; // [sp+2Ch] [bp-ACh]@2
- char v4; // [sp+30h] [bp-A8h]@3
- if ( a1 )
- {
- if ( sub_401EF8((FILE **)a1, a2 << 6, 0, 0, &v4) )
- {
- v3 = 1;
- }
- else
- {
- sub_402D20((int)&v4, 0xA0u, a1 + 20 * a2 + 19656);
- sub_402D20(a1 + 19656, 0x18000u, a1 + 1240);
- if ( sub_4035AD((const void *)(a1 + 740)) )
- v3 = 1;
- else
- v3 = 0;
- }
- }
- else
- {
- v3 = 1;
- }
- return v3;
- }
- //----- (00401CAF) --------------------------------------------------------
- signed int __cdecl sub_401CAF(FILE **a1, int a2, int a3, int a4)
- {
- signed __int64 v5; // qax@3
- int v6; // ebx@3
- signed int v7; // [sp+2Ch] [bp-803Ch]@2
- int v8; // [sp+805Ch] [bp-Ch]@3
- int v9; // [sp+38h] [bp-8030h]@3
- int v10; // [sp+3Ch] [bp-802Ch]@3
- char v11; // [sp+50h] [bp-8018h]@3
- char v12; // [sp+40h] [bp-8028h]@6
- int v13; // [sp+450h] [bp-7C18h]@8
- int v14; // [sp+34h] [bp-8034h]@8
- int v15; // [sp+420h] [bp-7C48h]@8
- int *v16; // [sp+30h] [bp-8038h]@8
- if ( a1 )
- {
- v8 = (int)(a1 + 9);
- v5 = (unsigned __int64)*(a1 + 2) + 4 * (unsigned __int64)*(a1 + 14);
- v6 = (int)((char *)*(a1 + 3) + *((_DWORD *)&v5 + 1));
- v9 = (_DWORD)v5 + (a2 << 15);
- v10 = v6 + __MKCADD__(v5, a2 << 15);
- fseeko64(*a1, (_DWORD)v5 + (a2 << 15), v6 + __MKCADD__(v5, a2 << 15), 0);
- if ( fread(&v11, 0x8000u, 1u, *a1) == 1 )
- {
- if ( a4 )
- {
- memset(&v12, 0, 0x10u);
- sub_402D9B((int)&v11, a4, 0x400u, (int)(a1 + 5), (int)&v12);
- }
- if ( a3 )
- {
- v14 = (int)&v13;
- v16 = &v15;
- memcpy(&v12, &v15, 0x10u);
- sub_402D9B(v14, a3, 0x7C00u, (int)(a1 + 5), (int)&v12);
- }
- v7 = 0;
- }
- else
- {
- v7 = 1;
- }
- }
- else
- {
- v7 = 1;
- }
- return v7;
- }
- //----- (00401E60) --------------------------------------------------------
- signed int __cdecl sub_401E60(FILE **a1, int a2, int a3, int a4)
- {
- int v5; // [sp+24h] [bp-4h]@1
- int v6; // [sp+20h] [bp-8h]@1
- signed int v7; // [sp+14h] [bp-14h]@2
- unsigned int v8; // [sp+1Ch] [bp-Ch]@3
- int v9; // [sp+18h] [bp-10h]@5
- v5 = a3;
- v6 = a4;
- if ( a1 )
- {
- v8 = 0;
- while ( v8 <= 0x3F )
- {
- v9 = v8 + (a2 << 6);
- if ( sub_401CAF(a1, v8 + (a2 << 6), v5, v6) )
- return 1;
- if ( v5 )
- v5 += 31744;
- if ( v6 )
- v6 += 1024;
- ++v8;
- }
- v7 = 0;
- }
- else
- {
- v7 = 1;
- }
- return v7;
- }
- //----- (00401EF8) --------------------------------------------------------
- signed int __cdecl sub_401EF8(FILE **a1, int a2, void *a3, void *a4, void *a5)
- {
- signed int v6; // [sp+1Ch] [bp-40Ch]@2
- char v7; // [sp+20h] [bp-408h]@3
- int v8; // [sp+2A0h] [bp-188h]@8
- int v9; // [sp+360h] [bp-C8h]@10
- if ( a1 )
- {
- if ( sub_401CAF(a1, a2, 0, (int)&v7) )
- {
- v6 = 1;
- }
- else
- {
- if ( a3 )
- memcpy(a3, &v7, 0x26Cu);
- if ( a4 )
- memcpy(a4, &v8, 0xA0u);
- if ( a5 )
- memcpy(a5, &v9, 0xA0u);
- v6 = 0;
- }
- }
- else
- {
- v6 = 1;
- }
- return v6;
- }
- //----- (00401FCF) --------------------------------------------------------
- signed int __cdecl sub_401FCF(FILE **a1, unsigned __int64 a2, size_t a3, int a4)
- {
- unsigned __int64 v5; // qax@3
- signed int v6; // [sp+10h] [bp-28h]@2
- int v7; // [sp+2Ch] [bp-Ch]@3
- int v8; // [sp+28h] [bp-10h]@3
- int v9; // [sp+20h] [bp-18h]@3
- int v10; // [sp+24h] [bp-14h]@3
- void *v11; // [sp+34h] [bp-4h]@3
- void *v12; // [sp+30h] [bp-8h]@3
- unsigned int v13; // [sp+1Ch] [bp-1Ch]@6
- int v14; // [sp+18h] [bp-20h]@8
- int v15; // [sp+14h] [bp-24h]@8
- if ( a1 )
- {
- v7 = a2 / 0x7C00;
- v5 = (a2 + a3) / 0x7C00;
- v8 = (a2 + a3) / 0x7C00;
- v9 = (_DWORD)v5 - v7 + 1;
- v10 = (_DWORD)a2 - 31744 * v7;
- v11 = sub_403710(31744 * ((_DWORD)v5 - v7 + 1));
- v12 = sub_403710(a3);
- if ( v11 && v12 )
- {
- v13 = 0;
- while ( v13 < v9 )
- {
- v14 = (int)((char *)v11 + 31744 * v13);
- v15 = v7 + v13;
- if ( sub_401CAF(a1, v7 + v13, (int)((char *)v11 + 31744 * v13), 0) )
- return 1;
- ++v13;
- }
- memcpy(v12, (char *)v11 + v10, a3);
- *(_DWORD *)a4 = v12;
- free(v11);
- v6 = 0;
- }
- else
- {
- v6 = 1;
- }
- }
- else
- {
- v6 = 1;
- }
- return v6;
- }
- //----- (00402135) --------------------------------------------------------
- signed int __cdecl sub_402135(int a1, int a2, int a3)
- {
- void *v4; // eax@1
- int v5; // edx@32
- unsigned __int8 v6; // cf@32
- int v7; // [sp+6Ch] [bp-3BCh]@1
- signed int v8; // [sp+2Ch] [bp-3FCh]@2
- unsigned int v9; // [sp+4Ch] [bp-3DCh]@5
- void *v10; // [sp+3Ch] [bp-3ECh]@7
- int v11; // [sp+38h] [bp-3F0h]@7
- int v12; // [sp+34h] [bp-3F4h]@7
- int v13; // [sp+30h] [bp-3F8h]@9
- _BYTE v14[632]; // [sp+1B0h] [bp-278h]@9
- _BYTE v15[160]; // [sp+110h] [bp-318h]@15
- _BYTE v16[160]; // [sp+70h] [bp-3B8h]@22
- char v17; // [sp+50h] [bp-3D8h]@28
- int v18; // [sp+40h] [bp-3E8h]@32
- int v19; // [sp+44h] [bp-3E4h]@32
- v4 = sub_403710(0x10000u);
- v7 = (int)v4;
- if ( v4 )
- {
- if ( sub_401E60((FILE **)a1, a2, 0, v7) )
- {
- v8 = 1;
- }
- else
- {
- v9 = 0;
- while ( v9 <= 0x3F )
- {
- v10 = (void *)(v7 + (v9 << 10));
- v11 = a3 + 31744 * v9;
- v12 = 0;
- while ( (unsigned int)v12 <= 0x7BFF )
- {
- v13 = 20 * ((unsigned int)v12 >> 10);
- sub_402D20(v11 + v12, 0x400u, (int)&v14[20 * ((unsigned int)v12 >> 10)]);
- v12 += 1024;
- }
- memcpy(v10, v14, 0x26Cu);
- ++v9;
- }
- v9 = 0;
- while ( v9 <= 0x3F )
- {
- v13 = 0;
- while ( (unsigned int)v13 <= 7 )
- {
- v12 = v7 + ((v9 + v13) << 10);
- v11 = 20 * v13;
- sub_402D20(v7 + ((v9 + v13) << 10), 0x26Cu, (int)&v15[20 * v13]);
- ++v13;
- }
- v13 = 0;
- while ( (unsigned int)v13 <= 7 )
- {
- v12 = v7 + ((v9 + v13) << 10);
- memcpy((void *)(v7 + ((v9 + v13++) << 10) + 640), v15, 0xA0u);
- }
- v9 += 8;
- }
- v9 = 0;
- while ( v9 <= 0x3F )
- {
- v12 = v7 + (v9 << 10);
- v11 = 20 * (v9 >> 3);
- sub_402D20(v7 + (v9 << 10) + 640, 0xA0u, (int)&v16[20 * (v9 >> 3)]);
- v9 += 8;
- }
- v9 = 0;
- while ( v9 <= 0x3F )
- {
- v12 = v7 + (v9 << 10);
- memcpy((void *)(v7 + (v9++ << 10) + 832), v16, 0xA0u);
- }
- v9 = 0;
- while ( v9 <= 0x3F )
- {
- v12 = v7 + (v9 << 10);
- memset(&v17, 0, 0x10u);
- sub_402D41(v12, v12, 0x400u, a1 + 20, (int)&v17);
- ++v9;
- }
- v9 = 0;
- while ( v9 <= 0x3F )
- {
- v12 = a3 + 31744 * v9;
- v11 = v7 + (v9 << 10);
- memcpy(&v17, (const void *)(v7 + (v9 << 10) + 976), 0x10u);
- sub_402D41(v12, v12, 0x7C00u, a1 + 20, (int)&v17);
- ++v9;
- }
- v5 = *(_DWORD *)(a1 + 12)
- + ((*(_DWORD *)(a1 + 8) + (unsigned __int64)(unsigned int)(4 * *(_DWORD *)(a1 + 56))) >> 32);
- v18 = *(_DWORD *)(a1 + 8) + 4 * *(_DWORD *)(a1 + 56);
- v6 = __MKCADD__(a2 << 21, v18);
- v18 += a2 << 21;
- v19 = v6 + v5;
- fseeko64(*(_DWORD *)a1, v18, v6 + v5, 0);
- v9 = 0;
- while ( v9 <= 0x3F )
- {
- v12 = a3 + 31744 * v9;
- v11 = v7 + (v9 << 10);
- if ( fwrite((const void *)(v7 + (v9 << 10)), 0x400u, 1u, *(FILE **)a1) != 1 )
- return 1;
- if ( fwrite((const void *)v12, 0x7C00u, 1u, *(FILE **)a1) != 1 )
- return 1;
- ++v9;
- }
- if ( sub_401BCD(a1, a2) )
- {
- v8 = 1;
- }
- else
- {
- free((void *)v7);
- v8 = 0;
- }
- }
- }
- else
- {
- v8 = 1;
- }
- return v8;
- }
- //----- (004027CF) --------------------------------------------------------
- signed int __cdecl sub_4027CF(int a1, unsigned __int64 a2, size_t a3, const void *a4)
- {
- unsigned __int64 v5; // qax@3
- void *v6; // eax@3
- signed int v7; // [sp+10h] [bp-28h]@2
- int v8; // [sp+30h] [bp-8h]@3
- int v9; // [sp+2Ch] [bp-Ch]@3
- int v10; // [sp+20h] [bp-18h]@3
- int v11; // [sp+24h] [bp-14h]@3
- int v12; // [sp+28h] [bp-10h]@3
- void *v13; // [sp+34h] [bp-4h]@3
- unsigned int v14; // [sp+1Ch] [bp-1Ch]@5
- int v15; // [sp+18h] [bp-20h]@7
- int v16; // [sp+14h] [bp-24h]@7
- if ( a1 )
- {
- v8 = a2 / 0x1F0000;
- v5 = (a2 + a3) / 0x1F0000;
- v9 = (a2 + a3) / 0x1F0000;
- v10 = (_DWORD)v5 - v8 + 1;
- v11 = ((_DWORD)v5 - v8 + 1) << 6;
- v12 = (_DWORD)a2 - 2031616 * v8;
- v6 = sub_403710(2031616 * ((_DWORD)v5 - v8 + 1));
- v13 = v6;
- if ( v6 )
- {
- v14 = 0;
- while ( v14 < v10 )
- {
- v15 = (int)((char *)v13 + 2031616 * v14);
- v16 = v8 + v14;
- if ( sub_401E60((FILE **)a1, v8 + v14, (int)((char *)v13 + 2031616 * v14), 0) )
- return 1;
- ++v14;
- }
- memcpy((char *)v13 + v12, a4, a3);
- v14 = 0;
- while ( v14 < v10 )
- {
- v16 = (int)((char *)v13 + 2031616 * v14);
- v15 = v8 + v14;
- if ( sub_402135(a1, v8 + v14, (int)((char *)v13 + 2031616 * v14)) )
- return 1;
- ++v14;
- }
- free(v13);
- v7 = 0;
- }
- else
- {
- v7 = 1;
- }
- }
- else
- {
- v7 = 1;
- }
- return v7;
- }
- //----- (0040297D) --------------------------------------------------------
- signed int __cdecl sub_40297D(FILE **a1)
- {
- signed int v2; // [sp+18h] [bp-7C10h]@2
- char v3; // [sp+20h] [bp-7C08h]@3
- signed int v4; // [sp+1Ch] [bp-7C0Ch]@5
- int v5; // [sp+440h] [bp-77E8h]@5
- if ( a1 )
- {
- if ( sub_401CAF(a1, 0, (int)&v3, 0) )
- {
- v2 = -1;
- }
- else
- {
- sub_40394C((int)&v4, &v5, 4u);
- v4 *= 4;
- v2 = v4;
- }
- }
- else
- {
- v2 = -1;
- }
- return v2;
- }
- //----- (00402A13) --------------------------------------------------------
- int __cdecl sub_402A13(FILE **a1)
- {
- signed int v2; // eax@3
- int v3; // eax@5
- int v4; // [sp+18h] [bp-10h]@2
- signed int v5; // [sp+20h] [bp-8h]@3
- int v6; // [sp+24h] [bp-4h]@3
- int v7; // [sp+1Ch] [bp-Ch]@5
- if ( a1 )
- {
- v2 = sub_40297D(a1);
- v5 = v2;
- if ( sub_401FCF(a1, (unsigned int)v2, 0x100u, (int)&v6) )
- {
- v4 = 0;
- }
- else
- {
- v3 = sub_401290(v6);
- v7 = v3;
- if ( v3 )
- {
- free((void *)v6);
- v4 = v7;
- }
- else
- {
- v4 = 0;
- }
- }
- }
- else
- {
- v4 = 0;
- }
- return v4;
- }
- //----- (00402D20) --------------------------------------------------------
- int __cdecl sub_402D20(int a1, unsigned int a2, int a3)
- {
- return sub_4053F0(a1, a2, a3);
- }
- //----- (00402D41) --------------------------------------------------------
- int __cdecl sub_402D41(int a1, int a2, unsigned int a3, int a4, int a5)
- {
- char v6; // [sp+20h] [bp-108h]@1
- sub_403FE0(a4, 128, (int)&v6);
- return sub_4051A0(a1, a2, a3, (int)&v6, a5, 1);
- }
- //----- (00402D9B) --------------------------------------------------------
- int __cdecl sub_402D9B(int a1, int a2, unsigned int a3, int a4, int a5)
- {
- char v6; // [sp+20h] [bp-108h]@1
- sub_4043D0(a4, 128, (int)&v6);
- return sub_4051A0(a1, a2, a3, (int)&v6, a5, 0);
- }
- //----- (00402E00) --------------------------------------------------------
- unsigned int __cdecl sub_402E00(int a1)
- {
- unsigned int result; // eax@1
- int v2; // [sp+14h] [bp-4h]@1
- int v3; // [sp+10h] [bp-8h]@1
- unsigned int v4; // [sp+Ch] [bp-Ch]@1
- v2 = a1;
- v3 = a1 + 320;
- sub_403764(a1);
- sub_4037A0(v3 + 144);
- sub_403764(v3 + 152);
- sub_4037A0(v3 + 156);
- result = sub_403743(v3 + 164);
- v4 = 0;
- while ( v4 <= 7 )
- {
- sub_403764(v3 + 8 * v4 + 292);
- sub_403764(v3 + 8 * v4 + 296);
- result = (unsigned int)&v4;
- ++v4;
- }
- return result;
- }
- //----- (004031C0) --------------------------------------------------------
- unsigned int __cdecl sub_4031C0(int a1)
- {
- unsigned int result; // eax@1
- int v2; // [sp+14h] [bp-4h]@1
- int v3; // [sp+10h] [bp-8h]@1
- int v4; // [sp+Ch] [bp-Ch]@1
- unsigned int v5; // [sp+8h] [bp-10h]@1
- v2 = a1;
- v3 = a1 + 484;
- v4 = a1 + 320;
- sub_403764(a1);
- sub_4037A0(v4 + 68);
- sub_4037A0(v4 + 76);
- sub_403764(v4 + 84);
- sub_403743(v4 + 88);
- sub_403764(v4 + 152);
- sub_403743(v4 + 156);
- sub_403743(v4 + 158);
- result = sub_403743(v4 + 160);
- v5 = 0;
- while ( v5 <= 0x1FF )
- {
- sub_403764(v3 + 36 * v5);
- sub_403743(v3 + 36 * v5 + 4);
- sub_403743(v3 + 36 * v5 + 6);
- sub_4037A0(v3 + 36 * v5 + 8);
- result = (unsigned int)&v5;
- ++v5;
- }
- return result;
- }
- //----- (004035AD) --------------------------------------------------------
- signed int __cdecl sub_4035AD(const void *a1)
- {
- signed int v2; // [sp+14h] [bp-4A34h]@2
- char v3; // [sp+50h] [bp-49F8h]@3
- int v4; // [sp+190h] [bp-48B8h]@3
- int v5; // [sp+4Ch] [bp-49FCh]@3
- char *v6; // [sp+48h] [bp-4A00h]@3
- unsigned __int16 v7; // [sp+22Eh] [bp-481Ah]@3
- unsigned int v8; // [sp+18h] [bp-4A30h]@3
- __int16 v9; // [sp+1Eh] [bp-4A2Ah]@3
- char v10; // [sp+20h] [bp-4A28h]@4
- if ( a1 )
- {
- memcpy(&v3, a1, 0x49E4u);
- v5 = (int)&v4;
- v6 = &v3;
- v8 = 36 * v7 + 164;
- sub_4031C0((int)&v3);
- memcpy(v6 + 4, "WaNiNKoKOWaSHeRe!", 0x100u);
- v9 = 0;
- while ( 1 )
- {
- memcpy((void *)(v5 + 94), &v9, 2u);
- sub_4053F0(v5, v8, (int)&v10);
- if ( !v10 )
- break;
- ++v9;
- }
- sub_4031C0((int)&v3);
- memcpy((void *)a1, &v3, 0x49E4u);
- v2 = 0;
- }
- else
- {
- v2 = 1;
- }
- return v2;
- }
- //----- (00403710) --------------------------------------------------------
- void *__cdecl sub_403710(size_t a1)
- {
- void *v2; // eax@1
- void *v3; // [sp+14h] [bp-4h]@1
- v2 = malloc(a1);
- v3 = v2;
- memset(v2, 0, a1);
- return v3;
- }
- //----- (00403743) --------------------------------------------------------
- unsigned int __cdecl sub_403743(int a1)
- {
- unsigned int result; // eax@1
- result = ((unsigned int)*(_WORD *)a1 >> 8) | (*(_WORD *)a1 << 8);
- *(_WORD *)a1 = result;
- return result;
- }
- //----- (00403764) --------------------------------------------------------
- int __cdecl sub_403764(int a1)
- {
- int result; // eax@1
- int v2; // eax@1
- v2 = *(_DWORD *)a1 << 8;
- result = (*(_DWORD *)a1 >> 8) & 0xFF00 | v2 & 0xFF0000 | (*(_DWORD *)a1 >> 24) | (*(_DWORD *)a1 << 24);
- *(_DWORD *)a1 = result;
- return result;
- }
- //----- (004037A0) --------------------------------------------------------
- int __cdecl sub_4037A0(int a1)
- {
- int result; // eax@1
- int v2; // edx@1
- int v3; // ebx@1
- int v4; // eax@1
- int v5; // edx@1
- int v6; // [sp+Ch] [bp-14h]@1
- int v7; // [sp+0h] [bp-20h]@1
- int v8; // [sp+4h] [bp-1Ch]@1
- v6 = a1;
- v2 = *(_DWORD *)a1 << 8;
- v3 = (unsigned __int8)(unsigned int)(*(_QWORD *)a1 << 8 >> 32) | (*(_QWORD *)a1 << 24 >> 32) & 0xFF00 | v2 & 0xFF0000;
- v4 = *(_QWORD *)a1 >> 24;
- v7 = v4 & 0xFF0000 | (*(_QWORD *)a1 >> 8) & 0xFF000000 | (*(_DWORD *)(a1 + 4) >> 24);
- v8 = v3;
- v5 = *(_DWORD *)a1 << 24;
- *(_DWORD *)a1 = (*(_DWORD *)(a1 + 4) >> 8) & 0xFF00 | v7;
- result = v5 | v3;
- *(_DWORD *)(v6 + 4) = v5 | v3;
- return result;
- }
- //----- (004038F4) --------------------------------------------------------
- size_t __cdecl sub_4038F4(int a1, FILE *a2)
- {
- size_t v3; // eax@1
- int v4; // [sp+24h] [bp-4h]@1
- size_t v5; // [sp+20h] [bp-8h]@1
- size_t v6; // [sp+1Ch] [bp-Ch]@2
- v3 = fread(&v4, 4u, 1u, a2);
- v5 = v3;
- if ( v3 == 1 )
- {
- sub_403764((int)&v4);
- *(_DWORD *)a1 = v4;
- v6 = 0;
- }
- else
- {
- v6 = v5;
- }
- return v6;
- }
- //----- (0040394C) --------------------------------------------------------
- void *__cdecl sub_40394C(int a1, const void *a2, size_t a3)
- {
- void *v4; // eax@1
- int v5; // [sp+10h] [bp-8h]@1
- void *v6; // [sp+14h] [bp-4h]@1
- void *v7; // [sp+Ch] [bp-Ch]@2
- v4 = memcpy(&v5, a2, a3);
- v6 = v4;
- if ( v4 )
- {
- sub_403764((int)&v5);
- *(_DWORD *)a1 = v5;
- v7 = v6;
- }
- else
- {
- v7 = 0;
- }
- return v7;
- }
- //----- (00403A80) --------------------------------------------------------
- signed int __cdecl sub_403A80(FILE **a1)
- {
- int v2; // edx@1
- int v3; // edx@1
- char *v4; // edx@1
- int v5; // eax@1
- int v6; // edx@1
- FILE *v7; // eax@1
- __int64 v8; // ST04_8@5
- FILE *v9; // [sp+8Ch] [bp-1041Ch]@1
- unsigned __int64 v10; // [sp+50h] [bp-10458h]@1
- size_t v11; // [sp+68h] [bp-10440h]@1
- int v12; // [sp+6Ch] [bp-1043Ch]@1
- size_t v13; // [sp+60h] [bp-10448h]@1
- int v14; // [sp+64h] [bp-10444h]@1
- unsigned __int64 v15; // [sp+58h] [bp-10450h]@1
- __int64 v16; // [sp+80h] [bp-10428h]@1
- __int64 v17; // [sp+78h] [bp-10430h]@1
- __int64 v18; // [sp+70h] [bp-10438h]@1
- _BYTE v19[2048]; // [sp+90h] [bp-10418h]@1
- signed int v20; // [sp+44h] [bp-10464h]@2
- unsigned __int64 v23; // [sp+28h] [bp-10480h]@6
- char v24; // [sp+84A0h] [bp-8008h]@7
- char v25; // [sp+890h] [bp-FC18h]@7
- int v26; // [sp+8870h] [bp-7C38h]@7
- int v27; // [sp+88A0h] [bp-7C08h]@7
- char v28; // [sp+8A0h] [bp-FC08h]@7
- v9 = 0;
- v10 = 0i64;
- v11 = 676;
- v12 = 0;
- v13 = (size_t)*(a1 + 9);
- v14 = 0;
- v2 = 4 * (unsigned __int64)*(a1 + 15) >> 32;
- *(_DWORD *)&v15 = 4 * (_DWORD)*(a1 + 15);
- *((_DWORD *)&v15 + 1) = v2;
- v3 = (int)*(a1 + 3);
- *(_DWORD *)&v16 = *(a1 + 2);
- *((_DWORD *)&v16 + 1) = v3;
- v4 = (char *)*(a1 + 3) + (((unsigned __int64)*(a1 + 2) + (unsigned int)(4 * (_DWORD)*(a1 + 10))) >> 32);
- *(_DWORD *)&v17 = (char *)*(a1 + 2) + 4 * (_DWORD)*(a1 + 10);
- *((_DWORD *)&v17 + 1) = v4;
- v5 = 4 * (_DWORD)*(a1 + 14);
- v6 = (int)((char *)*(a1 + 3) + __MKCADD__(*(a1 + 2), v5));
- *(_DWORD *)&v18 = (char *)*(a1 + 2) + v5;
- *((_DWORD *)&v18 + 1) = v6;
- memset(v19, 0, 0x800u);
- fseeko64(*a1, v16, *((_DWORD *)&v16 + 1), 0);
- fread(v19, v11, 1u, *a1);
- fseeko64(*a1, v17, *((_DWORD *)&v17 + 1), 0);
- fread(&v19[-(-v11 & 0xFFFFFFC0)], v13, 1u, *a1);
- v7 = fopen("partition.iso", "wb");
- v9 = v7;
- if ( v7 )
- {
- fwrite(v19, 0x800u, 1u, v9);
- fseeko64(*a1, v18, *((_DWORD *)&v18 + 1), 0);
- __asm
- {
- fild [ebp+var_10450]
- fstp [ebp+var_10478]
- }
- if ( *((_DWORD *)&v15 + 1) < 0 )
- {
- __asm
- {
- fld ds:tbyte_4092D0
- fld [ebp+var_10478]
- faddp st(1), st
- fstp [ebp+var_10478]
- }
- }
- __asm
- {
- fld [ebp+var_10478]
- fstp [ebp+var_10460]
- fld [ebp+var_10460]
- fld ds:dbl_4092E0
- fdivp st(1), st
- fstp [esp+104A8h+var_104A4]
- }
- printf(" ISO size: %.3f MB\n", v8, *((_DWORD *)&v8 + 1));
- while ( 1 )
- {
- v23 = v10;
- if ( v10 >= v15 )
- break;
- fread(&v24, 0x8000u, 1u, *a1);
- memcpy(&v25, &v26, 0x10u);
- sub_402D9B((int)&v27, (int)&v28, 0x7C00u, (int)(a1 + 5), (int)&v25);
- fwrite(&v28, 0x7C00u, 1u, v9);
- v10 += 32768i64;
- }
- fclose(v9);
- v20 = 0;
- }
- else
- {
- v20 = 1;
- }
- return v20;
- }
- //----- (00403E2A) --------------------------------------------------------
- int __cdecl main(int argc, const char **argv, const char *envp)
- {
- void *v4; // eax@3
- signed int v5; // eax@5
- signed int v6; // eax@7
- signed int v7; // eax@16
- signed int v8; // eax@18
- signed int v9; // [sp+14h] [bp-14h]@1
- int v10; // [sp+24h] [bp-4h]@1
- int v11; // [sp+20h] [bp-8h]@1
- signed int v12; // [sp+18h] [bp-10h]@5
- unsigned int v13; // [sp+1Ch] [bp-Ch]@9
- v9 = 16;
- __main();
- v10 = 0;
- v11 = 0;
- if ( argc > 1 )
- {
- v4 = sub_401374();
- v10 = (int)v4;
- if ( v4 )
- {
- v5 = sub_4013B8(*(argv + 1), (FILE **)v10);
- v12 = v5;
- if ( v5 )
- {
- printf("[+] ERROR: Could not open \"%s\"!\n", *(argv + 1));
- }
- else
- {
- v6 = sub_40142A(v10);
- v12 = v6;
- if ( v6 )
- {
- printf("[+] ERROR: Could not retrieve ISO info!\n");
- }
- else
- {
- v13 = 0;
- while ( v13 < *(_DWORD *)(v10 + 16) )
- {
- if ( !*(_DWORD *)(117960 * v13 + *(_DWORD *)(v10 + 156) + 16) )
- v11 = *(_DWORD *)(v10 + 156) + 117960 * v13;
- ++v13;
- }
- if ( v11 )
- {
- v7 = sub_401A38(v11);
- v12 = v7;
- if ( v7 )
- {
- printf("[+] ERROR: Could not get partition title key!\n");
- }
- else
- {
- printf("[+] Creating backup ISO, please wait...\n");
- v8 = sub_403A80((FILE **)v11);
- v12 = v8;
- if ( v8 )
- printf("\n ERROR: Could not create the backup ISO!\n");
- else
- printf("\n Backup ISO created successfully!\n");
- sub_40140D((FILE **)v10);
- }
- }
- else
- {
- printf("[+] ERROR: Could not find game partition!\n");
- }
- }
- }
- }
- else
- {
- printf("[+] ERROR: No free memory available!\n");
- }
- }
- else
- {
- printf("[+] USAGE: %s <ISO file>\n", *argv);
- }
- printf("\n[+] Press any key to exit...\n");
- getchar();
- return 0;
- }
- //----- (00403FE0) --------------------------------------------------------
- signed int __cdecl sub_403FE0(int a1, signed int a2, int a3)
- {
- int v3; // ecx@1
- signed int v4; // ebp@1
- signed int v5; // edi@1
- signed int result; // eax@5
- int v7; // ebx@6
- int v8; // eax@19
- unsigned int v9; // ecx@19
- int v10; // ecx@22
- unsigned int v11; // esi@22
- unsigned int v12; // ecx@14
- int v13; // edx@14
- int v14; // esi@14
- int v15; // esi@14
- int v16; // esi@14
- int v17; // eax@18
- int v18; // esi@19
- int v19; // eax@19
- int v20; // eax@19
- int v21; // eax@19
- int v22; // ebp@21
- int v23; // edx@21
- int v24; // ebp@21
- int v25; // ebp@21
- int v26; // eax@22
- int v27; // ecx@22
- int v28; // ebp@22
- int v29; // ebp@22
- int v30; // ebp@22
- v3 = a1;
- v5 = 0;
- v4 = a2;
- if ( a1 && a3 )
- {
- if ( a2 == 128 || a2 == 192 || (result = -2, a2 == 256) )
- {
- v7 = a3;
- if ( a2 == 128 )
- {
- *(_DWORD *)(a3 + 240) = 10;
- }
- else
- {
- if ( a2 == 192 )
- *(_DWORD *)(a3 + 240) = 12;
- else
- *(_DWORD *)(a3 + 240) = 14;
- }
- *(_DWORD *)a3 = *(_BYTE *)(v3 + 3) ^ (*(_BYTE *)(v3 + 2) << 8) ^ (*(_BYTE *)(v3 + 1) << 16) ^ (*(_BYTE *)v3 << 24);
- *(_DWORD *)(a3 + 4) = *(_BYTE *)(v3 + 7) ^ (*(_BYTE *)(v3 + 6) << 8) ^ (*(_BYTE *)(v3 + 5) << 16) ^ (*(_BYTE *)(v3 + 4) << 24);
- *(_DWORD *)(a3 + 8) = *(_BYTE *)(v3 + 11) ^ (*(_BYTE *)(v3 + 10) << 8) ^ (*(_BYTE *)(v3 + 9) << 16) ^ (*(_BYTE *)(v3 + 8) << 24);
- *(_DWORD *)(a3 + 12) = *(_BYTE *)(v3 + 15) ^ (*(_BYTE *)(v3 + 14) << 8) ^ (*(_BYTE *)(v3 + 13) << 16) ^ (*(_BYTE *)(v3 + 12) << 24);
- if ( v4 == 128 )
- {
- while ( 1 )
- {
- v12 = *(_DWORD *)(v7 + 12);
- v13 = byte_40A880[BYTE1(v12)];
- v14 = dword_40BC80[v5] ^ LOBYTE(byte_40A880[v12 >> 24]) ^ byte_40A880[(unsigned __int8)v12] & 0xFF00 ^ v13 & 0xFF0000 ^ *(_DWORD *)v7 ^ byte_40A880[*(_BYTE *)(v7 + 14)] & 0xFF000000;
- *(_DWORD *)(v7 + 16) = v14;
- v15 = *(_DWORD *)(v7 + 4) ^ v14;
- *(_DWORD *)(v7 + 20) = v15;
- ++v5;
- v16 = *(_DWORD *)(v7 + 8) ^ v15;
- *(_DWORD *)(v7 + 24) = v16;
- *(_DWORD *)(v7 + 28) = v16 ^ v12;
- if ( v5 == 10 )
- break;
- v7 += 16;
- }
- result = 0;
- }
- else
- {
- *(_DWORD *)(a3 + 16) = *(_BYTE *)(v3 + 19) ^ (*(_BYTE *)(v3 + 18) << 8) ^ (*(_BYTE *)(v3 + 17) << 16) ^ (*(_BYTE *)(v3 + 16) << 24);
- *(_DWORD *)(a3 + 20) = *(_BYTE *)(v3 + 23) ^ (*(_BYTE *)(v3 + 22) << 8) ^ (*(_BYTE *)(v3 + 21) << 16) ^ (*(_BYTE *)(v3 + 20) << 24);
- if ( v4 == 192 )
- {
- while ( 1 )
- {
- v9 = *(_DWORD *)(v7 + 20);
- v18 = byte_40A880[BYTE1(v9)];
- v19 = dword_40BC80[v5] ^ LOBYTE(byte_40A880[v9 >> 24]) ^ byte_40A880[(unsigned __int8)v9] & 0xFF00 ^ v18 & 0xFF0000 ^ *(_DWORD *)v7 ^ byte_40A880[*(_BYTE *)(v7 + 22)] & 0xFF000000;
- *(_DWORD *)(v7 + 24) = v19;
- v20 = *(_DWORD *)(v7 + 4) ^ v19;
- *(_DWORD *)(v7 + 28) = v20;
- ++v5;
- v21 = *(_DWORD *)(v7 + 8) ^ v20;
- *(_DWORD *)(v7 + 32) = v21;
- v8 = *(_DWORD *)(v7 + 12) ^ v21;
- *(_DWORD *)(v7 + 36) = v8;
- if ( v5 == 8 )
- break;
- v17 = *(_DWORD *)(v7 + 16) ^ v8;
- *(_DWORD *)(v7 + 40) = v17;
- *(_DWORD *)(v7 + 44) = v17 ^ v9;
- v7 += 24;
- }
- result = 0;
- }
- else
- {
- *(_DWORD *)(a3 + 24) = *(_BYTE *)(v3 + 27) ^ (*(_BYTE *)(v3 + 26) << 8) ^ (*(_BYTE *)(v3 + 25) << 16) ^ (*(_BYTE *)(v3 + 24) << 24);
- result = 0;
- *(_DWORD *)(a3 + 28) = *(_BYTE *)(v3 + 31) ^ (*(_BYTE *)(v3 + 30) << 8) ^ (*(_BYTE *)(v3 + 29) << 16) ^ (*(_BYTE *)(v3 + 28) << 24);
- if ( v4 == 256 )
- {
- while ( 1 )
- {
- v11 = *(_DWORD *)(v7 + 28);
- v26 = *(_BYTE *)(v7 + 30);
- v27 = byte_40A880[BYTE1(v11)];
- v28 = dword_40BC80[v5] ^ LOBYTE(byte_40A880[v11 >> 24]) ^ byte_40A880[(_BYTE)v11] & 0xFF00 ^ v27 & 0xFF0000 ^ *(_DWORD *)v7 ^ byte_40A880[v26] & 0xFF000000;
- *(_DWORD *)(v7 + 32) = dword_40BC80[v5] ^ LOBYTE(byte_40A880[v11 >> 24]) ^ byte_40A880[(_BYTE)v11] & 0xFF00 ^ v27 & 0xFF0000 ^ *(_DWORD *)v7 ^ byte_40A880[v26] & 0xFF000000;
- v29 = *(_DWORD *)(v7 + 4) ^ v28;
- *(_DWORD *)(v7 + 36) = v29;
- v30 = *(_DWORD *)(v7 + 8) ^ v29;
- ++v5;
- v10 = v30 ^ *(_DWORD *)(v7 + 12);
- *(_DWORD *)(v7 + 40) = v30;
- *(_DWORD *)(v7 + 44) = v10;
- if ( v5 == 7 )
- break;
- v22 = byte_40A880[((unsigned int)v10 >> 16) & 0xFF];
- v23 = LOBYTE(byte_40A880[(unsigned __int8)v10]) ^ byte_40A880[BYTE1(v10)] & 0xFF00 ^ v22 & 0xFF0000 ^ *(_DWORD *)(v7 + 16) ^ byte_40A880[(unsigned int)v10 >> 24] & 0xFF000000;
- v24 = v23 ^ *(_DWORD *)(v7 + 20);
- *(_DWORD *)(v7 + 52) = v23 ^ *(_DWORD *)(v7 + 20);
- v25 = *(_DWORD *)(v7 + 24) ^ v24;
- *(_DWORD *)(v7 + 48) = v23;
- *(_DWORD *)(v7 + 56) = v25;
- *(_DWORD *)(v7 + 60) = v25 ^ v11;
- v7 += 32;
- }
- result = 0;
- }
- }
- }
- }
- }
- else
- {
- result = -1;
- }
- return result;
- }
- //----- (004043D0) --------------------------------------------------------
- signed int __cdecl sub_4043D0(int a1, signed int a2, int a3)
- {
- signed int result; // eax@1
- int v4; // ebx@1
- int v5; // eax@2
- int v6; // ebp@2
- int v7; // edi@2
- int v8; // esi@2
- int v9; // ecx@3
- int v10; // ebx@3
- int v11; // ebx@6
- int v12; // edx@4
- int v13; // edx@4
- int v14; // edx@4
- int v15; // edx@4
- int v16; // ecx@7
- int v17; // eax@7
- unsigned int v18; // ecx@7
- int v19; // eax@7
- int v20; // edx@7
- unsigned int v21; // ecx@7
- int v22; // eax@7
- int v23; // edx@7
- unsigned int v24; // ecx@7
- signed int v25; // [sp+0h] [bp-14h]@2
- v4 = a3;
- result = sub_403FE0(a1, a2, a3);
- if ( result >= 0 )
- {
- v5 = *(_DWORD *)(v4 + 240);
- v6 = 0;
- v7 = 4 * v5;
- v8 = v4;
- v25 = *(_DWORD *)(v4 + 240);
- if ( 4 * v5 > 0 )
- {
- v10 = v4 + 16 * v5;
- v9 = v8;
- do
- {
- v12 = *(_DWORD *)v9;
- *(_DWORD *)v9 = *(_DWORD *)v10;
- *(_DWORD *)v10 = v12;
- v13 = *(_DWORD *)(v9 + 4);
- *(_DWORD *)(v9 + 4) = *(_DWORD *)(v10 + 4);
- *(_DWORD *)(v10 + 4) = v13;
- v14 = *(_DWORD *)(v9 + 8);
- *(_DWORD *)(v9 + 8) = *(_DWORD *)(v10 + 8);
- *(_DWORD *)(v10 + 8) = v14;
- v15 = *(_DWORD *)(v9 + 12);
- v6 += 4;
- v7 -= 4;
- *(_DWORD *)(v9 + 12) = *(_DWORD *)(v10 + 12);
- *(_DWORD *)(v10 + 12) = v15;
- v9 += 16;
- v10 -= 16;
- }
- while ( v6 < v7 );
- }
- if ( v25 > 1 )
- {
- v11 = v25 - 1;
- do
- {
- v8 += 16;
- v16 = *(_DWORD *)v8;
- v17 = dword_409C80[LOBYTE(byte_40A880[BYTE1(v16)])] ^ dword_40A480[LOBYTE(byte_40A880[*(_DWORD *)v8 >> 24])] ^ dword_40A080[LOBYTE(byte_40A880[(*(_DWORD *)v8 >> 16) & 0xFF])];
- v18 = *(_DWORD *)(v8 + 4);
- *(_DWORD *)v8 = dword_409880[LOBYTE(byte_40A880[*(_DWORD *)v8 & 0xFF])] ^ v17;
- v19 = dword_409C80[LOBYTE(byte_40A880[BYTE1(v18)])] ^ dword_40A480[LOBYTE(byte_40A880[v18 >> 24])] ^ dword_40A080[LOBYTE(byte_40A880[(v18 >> 16) & 0xFF])];
- v20 = LOBYTE(byte_40A880[(_BYTE)v18]);
- v21 = *(_DWORD *)(v8 + 8);
- *(_DWORD *)(v8 + 4) = dword_409880[v20] ^ v19;
- v22 = dword_409C80[LOBYTE(byte_40A880[BYTE1(v21)])] ^ dword_40A480[LOBYTE(byte_40A880[v21 >> 24])] ^ dword_40A080[LOBYTE(byte_40A880[(v21 >> 16) & 0xFF])];
- v23 = LOBYTE(byte_40A880[(_BYTE)v21]);
- v24 = *(_DWORD *)(v8 + 12);
- *(_DWORD *)(v8 + 8) = dword_409880[v23] ^ v22;
- --v11;
- *(_DWORD *)(v8 + 12) = dword_409880[LOBYTE(byte_40A880[(_BYTE)v24])] ^ dword_409C80[LOBYTE(byte_40A880[BYTE1(v24)])] ^ dword_40A480[LOBYTE(byte_40A880[v24 >> 24])] ^ dword_40A080[LOBYTE(byte_40A880[(v24 >> 16) & 0xFF])];
- }
- while ( v11 );
- }
- result = 0;
- }
- return result;
- }
- //----- (00404610) --------------------------------------------------------
- unsigned int __cdecl sub_404610(int a1, int a2, int a3)
- {
- int v3; // ecx@1
- int v4; // ebx@1
- int v5; // edi@1
- int v6; // esi@1
- int v7; // edx@3
- int v8; // ebp@3
- unsigned int result; // eax@4
- int v10; // edi@2
- int v11; // edi@2
- int v12; // esi@2
- int v13; // eax@2
- int v14; // esi@2
- unsigned int v15; // edx@2
- int v16; // esi@2
- int v17; // ebx@2
- int v18; // ecx@2
- int v19; // ebx@2
- int v20; // ebp@2
- int v21; // ecx@2
- int v22; // ebp@3
- int v23; // ebp@3
- int v24; // eax@3
- int v25; // edx@3
- unsigned int v26; // ecx@3
- int v27; // edx@3
- char v28; // zf@3
- int v29; // edi@4
- int v30; // ecx@4
- int v31; // ebx@4
- int v32; // ecx@4
- unsigned int v33; // edx@4
- int v34; // esi@4
- int v35; // ecx@4
- int v36; // ebp@4
- int v37; // ecx@4
- int v38; // [sp+84h] [bp-14h]@1
- int v39; // [sp+78h] [bp-20h]@1
- int v40; // [sp+7Ch] [bp-1Ch]@2
- int v41; // [sp+80h] [bp-18h]@2
- int v42; // [sp+30h] [bp-68h]@2
- int v43; // [sp+2Ch] [bp-6Ch]@2
- int v44; // [sp+28h] [bp-70h]@2
- int v45; // [sp+20h] [bp-78h]@2
- int v46; // [sp+1Ch] [bp-7Ch]@2
- int v47; // [sp+18h] [bp-80h]@2
- int v48; // [sp+14h] [bp-84h]@2
- int v49; // [sp+10h] [bp-88h]@2
- int v50; // [sp+Ch] [bp-8Ch]@2
- int v51; // [sp+8h] [bp-90h]@2
- int v52; // [sp+4h] [bp-94h]@2
- int v53; // [sp+0h] [bp-98h]@2
- int v54; // [sp+70h] [bp-28h]@3
- int v55; // [sp+6Ch] [bp-2Ch]@3
- int v56; // [sp+68h] [bp-30h]@3
- unsigned int v57; // [sp+64h] [bp-34h]@3
- int v58; // [sp+5Ch] [bp-3Ch]@3
- int v59; // [sp+58h] [bp-40h]@3
- int v60; // [sp+54h] [bp-44h]@3
- unsigned int v61; // [sp+50h] [bp-48h]@3
- int v62; // [sp+4Ch] [bp-4Ch]@3
- int v63; // [sp+48h] [bp-50h]@3
- int v64; // [sp+44h] [bp-54h]@3
- v38 = a3;
- v5 = *(_DWORD *)a3 ^ *(_BYTE *)(a1 + 3) ^ (*(_BYTE *)(a1 + 2) << 8) ^ (*(_BYTE *)(a1 + 1) << 16) ^ (*(_BYTE *)a1 << 24);
- v6 = *(_DWORD *)(a3 + 4) ^ *(_BYTE *)(a1 + 7) ^ (*(_BYTE *)(a1 + 6) << 8) ^ (*(_BYTE *)(a1 + 5) << 16) ^ (*(_BYTE *)(a1 + 4) << 24);
- v4 = *(_DWORD *)(a3 + 8) ^ *(_BYTE *)(a1 + 11) ^ (*(_BYTE *)(a1 + 10) << 8) ^ (*(_BYTE *)(a1 + 9) << 16) ^ (*(_BYTE *)(a1 + 8) << 24);
- v3 = *(_DWORD *)(a3 + 12) ^ *(_BYTE *)(a1 + 15) ^ (*(_BYTE *)(a1 + 14) << 8) ^ (*(_BYTE *)(a1 + 13) << 16) ^ (*(_BYTE *)(a1 + 12) << 24);
- v39 = *(_DWORD *)(a3 + 240) >> 1;
- while ( 1 )
- {
- v22 = dword_40B080[BYTE1(v4)] ^ dword_40B880[(unsigned int)v5 >> 24] ^ dword_40B480[((unsigned int)v6 >> 16) & 0xFF];
- v54 = ((unsigned int)v6 >> 16) & 0xFF;
- v23 = dword_40AC80[(unsigned __int8)v3] ^ v22;
- v55 = BYTE1(v4);
- v8 = *(_DWORD *)(v38 + 16) ^ v23;
- v56 = (unsigned __int8)v3;
- v57 = (unsigned int)v6 >> 24;
- v24 = dword_40B480[(unsigned __int8)((unsigned int)v4 >> 16)];
- v58 = (unsigned __int8)((unsigned int)v4 >> 16);
- v41 = dword_40B880[(unsigned int)v6 >> 24] ^ v24;
- v25 = dword_40B080[BYTE1(v3)];
- v59 = BYTE1(v3);
- v41 ^= v25;
- v41 ^= dword_40AC80[(_BYTE)v5];
- v60 = (_BYTE)v5;
- v26 = (unsigned int)v3 >> 16;
- v41 ^= *(_DWORD *)(v38 + 20);
- v61 = (unsigned int)v4 >> 24;
- v27 = dword_40B480[(unsigned __int8)v26];
- v62 = (unsigned __int8)v26;
- v40 = dword_40B880[(unsigned int)v4 >> 24] ^ v27;
- v63 = BYTE1(v5);
- v40 ^= dword_40B080[BYTE1(v5)];
- v40 ^= dword_40AC80[(_BYTE)v6];
- v64 = (_BYTE)v6;
- v40 ^= *(_DWORD *)(v38 + 24);
- v7 = *(_DWORD *)(v38 + 28) ^ dword_40AC80[(_BYTE)v4] ^ dword_40B080[BYTE1(v6)] ^ dword_40B880[v26 >> 8] ^ dword_40B480[((unsigned int)v5 >> 16) & 0xFF];
- v28 = v39-- == 1;
- v38 += 32;
- if ( v28 )
- break;
- v10 = dword_40B080[BYTE1(v40)] ^ dword_40B880[(unsigned int)v8 >> 24] ^ dword_40B480[((unsigned int)v41 >> 16) & 0xFF];
- v42 = ((unsigned int)v41 >> 16) & 0xFF;
- v11 = dword_40AC80[(unsigned __int8)v7] ^ v10;
- v43 = BYTE1(v40);
- v5 = *(_DWORD *)v38 ^ v11;
- v12 = dword_40B880[(unsigned int)v41 >> 24] ^ dword_40B480[((unsigned int)v40 >> 16) & 0xFF];
- v44 = (unsigned __int8)v7;
- v45 = ((unsigned int)v40 >> 16) & 0xFF;
- v13 = BYTE1(v7);
- v14 = dword_40B080[BYTE1(v7)] ^ v12;
- v15 = (unsigned int)v7 >> 16;
- v16 = dword_40AC80[(_BYTE)v8] ^ v14;
- v46 = v13;
- v47 = (_BYTE)v8;
- v6 = *(_DWORD *)(v38 + 4) ^ v16;
- v17 = dword_40B480[(unsigned __int8)v15];
- v48 = (unsigned __int8)v15;
- v18 = BYTE1(v8);
- v19 = dword_40AC80[(unsigned __int8)v41] ^ dword_40B080[BYTE1(v8)] ^ dword_40B880[(unsigned int)v40 >> 24] ^ v17;
- v20 = ((unsigned int)v8 >> 16) & 0xFF;
- v49 = v18;
- v50 = (unsigned __int8)v41;
- v4 = *(_DWORD *)(v38 + 8) ^ v19;
- v51 = v20;
- v21 = dword_40AC80[(unsigned __int8)v40] ^ dword_40B080[BYTE1(v41)] ^ dword_40B880[v15 >> 8] ^ dword_40B480[v20];
- v52 = BYTE1(v41);
- v53 = (unsigned __int8)v40;
- v3 = *(_DWORD *)(v38 + 12) ^ v21;
- }
- v29 = byte_40A880[((unsigned int)v41 >> 16) & 0xFF];
- v30 = *(_DWORD *)v38 ^ LOBYTE(byte_40A880[(unsigned __int8)v7]) ^ byte_40A880[BYTE1(v40)] & 0xFF00 ^ v29 & 0xFF0000 ^ byte_40A880[(unsigned int)v8 >> 24] & 0xFF000000;
- *(_BYTE *)a2 = (unsigned int)v30 >> 24;
- *(_BYTE *)(a2 + 1) = (unsigned int)v30 >> 16;
- *(_BYTE *)(a2 + 2) = BYTE1(v30);
- *(_BYTE *)(a2 + 3) = v30;
- v31 = byte_40A880[((unsigned int)v40 >> 16) & 0xFF];
- v32 = *(_DWORD *)(v38 + 4) ^ LOBYTE(byte_40A880[(_BYTE)v8]) ^ byte_40A880[BYTE1(v7)] & 0xFF00 ^ v31 & 0xFF0000 ^ byte_40A880[(unsigned int)v41 >> 24] & 0xFF000000;
- *(_BYTE *)(a2 + 4) = (unsigned int)v32 >> 24;
- *(_BYTE *)(a2 + 5) = (unsigned int)v32 >> 16;
- *(_BYTE *)(a2 + 6) = BYTE1(v32);
- *(_BYTE *)(a2 + 7) = v32;
- v33 = (unsigned int)v7 >> 16;
- v34 = byte_40A880[(unsigned __int8)v33];
- v35 = *(_DWORD *)(v38 + 8) ^ LOBYTE(byte_40A880[(unsigned __int8)v41]) ^ byte_40A880[BYTE1(v8)] & 0xFF00 ^ v34 & 0xFF0000 ^ byte_40A880[(unsigned int)v40 >> 24] & 0xFF000000;
- *(_BYTE *)(a2 + 8) = (unsigned int)v35 >> 24;
- *(_BYTE *)(a2 + 10) = BYTE1(v35);
- *(_BYTE *)(a2 + 11) = v35;
- *(_BYTE *)(a2 + 9) = (unsigned int)v35 >> 16;
- v36 = byte_40A880[((unsigned int)v8 >> 16) & 0xFF];
- v37 = *(_DWORD *)(v38 + 12) ^ LOBYTE(byte_40A880[(unsigned __int8)v40]) ^ byte_40A880[BYTE1(v41)] & 0xFF00 ^ v36 & 0xFF0000 ^ byte_40A880[v33 >> 8] & 0xFF000000;
- result = (unsigned int)v37 >> 24;
- *(_BYTE *)(a2 + 12) = (unsigned int)v37 >> 24;
- *(_BYTE *)(a2 + 13) = (unsigned int)v37 >> 16;
- *(_BYTE *)(a2 + 14) = BYTE1(v37);
- *(_BYTE *)(a2 + 15) = v37;
- return result;
- }
- //----- (00404BE0) --------------------------------------------------------
- unsigned int __cdecl sub_404BE0(int a1, int a2, int a3)
- {
- int v3; // ecx@1
- int v4; // ebx@1
- int v5; // ebp@1
- int v6; // esi@1
- int v7; // edx@3
- int v8; // edi@3
- unsigned int result; // eax@4
- int v10; // ebp@2
- int v11; // ebp@2
- int v12; // esi@2
- int v13; // esi@2
- int v14; // esi@2
- int v15; // ebx@2
- int v16; // ebx@2
- int v17; // edi@2
- int v18; // ecx@2
- int v19; // edx@3
- int v20; // eax@3
- int v21; // edi@3
- int v22; // ebx@3
- int v23; // edx@3
- int v24; // edx@3
- char v25; // zf@3
- int v26; // ebp@4
- int v27; // ecx@4
- int v28; // ebx@4
- int v29; // ecx@4
- int v30; // esi@4
- int v31; // ecx@4
- int v32; // edi@4
- int v33; // ecx@4
- int v34; // [sp+84h] [bp-14h]@1
- int v35; // [sp+78h] [bp-20h]@1
- int v36; // [sp+80h] [bp-18h]@2
- int v37; // [sp+34h] [bp-64h]@2
- int v38; // [sp+7Ch] [bp-1Ch]@2
- int v39; // [sp+30h] [bp-68h]@2
- int v40; // [sp+2Ch] [bp-6Ch]@2
- int v41; // [sp+24h] [bp-74h]@2
- int v42; // [sp+20h] [bp-78h]@2
- int v43; // [sp+1Ch] [bp-7Ch]@2
- int v44; // [sp+14h] [bp-84h]@2
- int v45; // [sp+10h] [bp-88h]@2
- int v46; // [sp+Ch] [bp-8Ch]@2
- int v47; // [sp+8h] [bp-90h]@2
- int v48; // [sp+4h] [bp-94h]@2
- int v49; // [sp+0h] [bp-98h]@2
- int v50; // [sp+70h] [bp-28h]@3
- int v51; // [sp+6Ch] [bp-2Ch]@3
- int v52; // [sp+68h] [bp-30h]@3
- int v53; // [sp+60h] [bp-38h]@3
- int v54; // [sp+5Ch] [bp-3Ch]@3
- int v55; // [sp+58h] [bp-40h]@3
- int v56; // [sp+50h] [bp-48h]@3
- int v57; // [sp+4Ch] [bp-4Ch]@3
- int v58; // [sp+48h] [bp-50h]@3
- int v59; // [sp+44h] [bp-54h]@3
- v34 = a3;
- v5 = *(_DWORD *)a3 ^ *(_BYTE *)(a1 + 3) ^ (*(_BYTE *)(a1 + 2) << 8) ^ (*(_BYTE *)(a1 + 1) << 16) ^ (*(_BYTE *)a1 << 24);
- v6 = *(_DWORD *)(a3 + 4) ^ *(_BYTE *)(a1 + 7) ^ (*(_BYTE *)(a1 + 6) << 8) ^ (*(_BYTE *)(a1 + 5) << 16) ^ (*(_BYTE *)(a1 + 4) << 24);
- v4 = *(_DWORD *)(a3 + 8) ^ *(_BYTE *)(a1 + 11) ^ (*(_BYTE *)(a1 + 10) << 8) ^ (*(_BYTE *)(a1 + 9) << 16) ^ (*(_BYTE *)(a1 + 8) << 24);
- v3 = *(_DWORD *)(a3 + 12) ^ *(_BYTE *)(a1 + 15) ^ (*(_BYTE *)(a1 + 14) << 8) ^ (*(_BYTE *)(a1 + 13) << 16) ^ (*(_BYTE *)(a1 + 12) << 24);
- v35 = *(_DWORD *)(a3 + 240) >> 1;
- while ( 1 )
- {
- v19 = dword_40A080[(unsigned __int8)((unsigned int)v3 >> 16)];
- v50 = (unsigned __int8)((unsigned int)v3 >> 16);
- v36 = dword_40A480[(unsigned int)v5 >> 24] ^ v19;
- v36 ^= dword_409C80[BYTE1(v4)];
- v51 = BYTE1(v4);
- v36 ^= dword_409880[(_BYTE)v6];
- v52 = (_BYTE)v6;
- v36 ^= *(_DWORD *)(v34 + 16);
- v20 = dword_40A080[(unsigned __int8)((unsigned int)v5 >> 16)];
- v53 = (unsigned __int8)((unsigned int)v5 >> 16);
- v38 = dword_40A480[(unsigned int)v6 >> 24] ^ v20;
- v38 ^= dword_409C80[BYTE1(v3)];
- v38 ^= dword_409880[(unsigned __int8)v4];
- v54 = BYTE1(v3);
- v55 = (unsigned __int8)v4;
- v38 ^= *(_DWORD *)(v34 + 20);
- v21 = dword_40A480[(unsigned int)v4 >> 24] ^ dword_40A080[((unsigned int)v6 >> 16) & 0xFF];
- v56 = ((unsigned int)v6 >> 16) & 0xFF;
- v57 = BYTE1(v5);
- v22 = ((unsigned int)v4 >> 16) & 0xFF;
- v8 = *(_DWORD *)(v34 + 24) ^ dword_409880[(unsigned __int8)v3] ^ dword_409C80[BYTE1(v5)] ^ v21;
- v23 = dword_40A080[v22];
- v58 = (unsigned __int8)v3;
- v24 = dword_40A480[(unsigned int)v3 >> 24] ^ v23;
- v59 = v22;
- v7 = *(_DWORD *)(v34 + 28) ^ dword_409880[(_BYTE)v5] ^ dword_409C80[BYTE1(v6)] ^ v24;
- v25 = v35-- == 1;
- v34 += 32;
- if ( v25 )
- break;
- v10 = dword_409C80[BYTE1(v8)] ^ dword_40A480[(unsigned int)v36 >> 24] ^ dword_40A080[((unsigned int)v7 >> 16) & 0xFF];
- v37 = ((unsigned int)v7 >> 16) & 0xFF;
- v11 = dword_409880[(unsigned __int8)v38] ^ v10;
- v39 = BYTE1(v8);
- v5 = *(_DWORD *)v34 ^ v11;
- v12 = dword_40A480[(unsigned int)v38 >> 24] ^ dword_40A080[((unsigned int)v36 >> 16) & 0xFF];
- v40 = (unsigned __int8)v38;
- v13 = dword_409C80[BYTE1(v7)] ^ v12;
- v41 = ((unsigned int)v36 >> 16) & 0xFF;
- v42 = BYTE1(v7);
- v14 = dword_409880[(_BYTE)v8] ^ v13;
- v43 = (_BYTE)v8;
- v6 = *(_DWORD *)(v34 + 4) ^ v14;
- v15 = dword_40A080[((unsigned int)v38 >> 16) & 0xFF];
- v44 = ((unsigned int)v38 >> 16) & 0xFF;
- v16 = dword_409880[(unsigned __int8)v7] ^ dword_409C80[BYTE1(v36)] ^ dword_40A480[(unsigned int)v8 >> 24] ^ v15;
- v17 = ((unsigned int)v8 >> 16) & 0xFF;
- v45 = BYTE1(v36);
- v46 = (unsigned __int8)v7;
- v4 = *(_DWORD *)(v34 + 8) ^ v16;
- v47 = v17;
- v18 = dword_409880[(unsigned __int8)v36] ^ dword_409C80[BYTE1(v38)] ^ dword_40A480[(unsigned int)v7 >> 24] ^ dword_40A080[v17];
- v48 = BYTE1(v38);
- v49 = (unsigned __int8)v36;
- v3 = *(_DWORD *)(v34 + 12) ^ v18;
- }
- v26 = byte_409480[((unsigned int)v7 >> 16) & 0xFF];
- v27 = *(_DWORD *)v34 ^ LOBYTE(byte_409480[(unsigned __int8)v38]) ^ byte_409480[BYTE1(v8)] & 0xFF00 ^ v26 & 0xFF0000 ^ byte_409480[(unsigned int)v36 >> 24] & 0xFF000000;
- *(_BYTE *)a2 = (unsigned int)v27 >> 24;
- *(_BYTE *)(a2 + 1) = (unsigned int)v27 >> 16;
- *(_BYTE *)(a2 + 2) = BYTE1(v27);
- *(_BYTE *)(a2 + 3) = v27;
- v28 = byte_409480[((unsigned int)v36 >> 16) & 0xFF];
- v29 = *(_DWORD *)(v34 + 4) ^ LOBYTE(byte_409480[(_BYTE)v8]) ^ byte_409480[BYTE1(v7)] & 0xFF00 ^ v28 & 0xFF0000 ^ byte_409480[(unsigned int)v38 >> 24] & 0xFF000000;
- *(_BYTE *)(a2 + 4) = (unsigned int)v29 >> 24;
- *(_BYTE *)(a2 + 7) = v29;
- *(_BYTE *)(a2 + 5) = (unsigned int)v29 >> 16;
- *(_BYTE *)(a2 + 6) = BYTE1(v29);
- v30 = byte_409480[((unsigned int)v38 >> 16) & 0xFF];
- v31 = *(_DWORD *)(v34 + 8) ^ LOBYTE(byte_409480[(unsigned __int8)v7]) ^ byte_409480[BYTE1(v36)] & 0xFF00 ^ v30 & 0xFF0000 ^ byte_409480[(unsigned int)v8 >> 24] & 0xFF000000;
- *(_BYTE *)(a2 + 8) = (unsigned int)v31 >> 24;
- *(_BYTE *)(a2 + 10) = BYTE1(v31);
- *(_BYTE *)(a2 + 11) = v31;
- *(_BYTE *)(a2 + 9) = (unsigned int)v31 >> 16;
- v32 = byte_409480[((unsigned int)v8 >> 16) & 0xFF];
- v33 = *(_DWORD *)(v34 + 12) ^ LOBYTE(byte_409480[(unsigned __int8)v36]) ^ byte_409480[BYTE1(v38)] & 0xFF00 ^ v32 & 0xFF0000 ^ byte_409480[(unsigned int)v7 >> 24] & 0xFF000000;
- result = (unsigned int)v33 >> 24;
- *(_BYTE *)(a2 + 12) = (unsigned int)v33 >> 24;
- *(_BYTE *)(a2 + 13) = (unsigned int)v33 >> 16;
- *(_BYTE *)(a2 + 14) = BYTE1(v33);
- *(_BYTE *)(a2 + 15) = v33;
- return result;
- }
- //----- (004051A0) --------------------------------------------------------
- int __cdecl sub_4051A0(int a1, int a2, unsigned int a3, int a4, int a5, signed int a6)
- {
- int v6; // ebx@1
- unsigned int v7; // ebp@1
- int v8; // edi@1
- int v9; // esi@1
- unsigned int v10; // edx@4
- int result; // eax@8
- unsigned int v12; // edx@11
- unsigned int v13; // edx@15
- int v14; // ecx@16
- unsigned int v15; // edx@19
- unsigned int v16; // edx@22
- unsigned int v17; // edx@28
- unsigned int v18; // edx@33
- unsigned int v19; // edx@36
- int v20; // [sp+0h] [bp-2Ch]@15
- int v21; // [sp+4h] [bp-28h]@15
- int v22; // [sp+8h] [bp-24h]@15
- int v23; // [sp+Ch] [bp-20h]@15
- v8 = a1;
- v6 = a2;
- v7 = a3;
- v9 = a5;
- if ( a6 == 1 )
- {
- while ( v7 > 0xF )
- {
- v12 = 0;
- do
- {
- *(_BYTE *)(v12 + v6) = *(_BYTE *)(v12 + v8) ^ *(_BYTE *)(v12 + v9);
- ++v12;
- }
- while ( v12 <= 0xF );
- sub_404610(v6, v6, a4);
- v9 = v6;
- v7 -= 16;
- v8 += 16;
- v6 += 16;
- }
- if ( v7 )
- {
- v15 = 0;
- while ( v15 < v7 )
- {
- *(_BYTE *)(v15 + v6) = *(_BYTE *)(v15 + v8) ^ *(_BYTE *)(v15 + v9);
- ++v15;
- }
- v16 = v7;
- while ( v16 <= 0xF )
- {
- *(_BYTE *)(v16 + v6) = *(_BYTE *)(v16 + v9);
- ++v16;
- }
- sub_404610(v6, v6, a4);
- v9 = v6;
- }
- *(_DWORD *)a5 = *(_DWORD *)v9;
- *(_DWORD *)(a5 + 4) = *(_DWORD *)(v9 + 4);
- *(_DWORD *)(a5 + 8) = *(_DWORD *)(v9 + 8);
- result = *(_DWORD *)(v9 + 12);
- *(_DWORD *)(a5 + 12) = *(_DWORD *)(v9 + 12);
- }
- else
- {
- if ( a1 == a2 )
- {
- while ( v7 > 0xF )
- {
- v20 = *(_DWORD *)v8;
- v21 = *(_DWORD *)(v8 + 4);
- v22 = *(_DWORD *)(v8 + 8);
- v23 = *(_DWORD *)(v8 + 12);
- sub_404BE0(v8, v6, a4);
- v13 = 0;
- do
- {
- v14 = a5;
- *(_BYTE *)(v13 + v6) ^= *(_BYTE *)(v13 + a5);
- ++v13;
- }
- while ( v13 <= 0xF );
- *(_DWORD *)v14 = v20;
- result = v21;
- *(_DWORD *)(v14 + 4) = v21;
- *(_DWORD *)(v14 + 8) = v22;
- *(_DWORD *)(v14 + 12) = v23;
- v7 -= 16;
- v8 += 16;
- v6 += 16;
- }
- if ( v7 )
- {
- v20 = *(_DWORD *)v8;
- v21 = *(_DWORD *)(v8 + 4);
- v22 = *(_DWORD *)(v8 + 8);
- v23 = *(_DWORD *)(v8 + 12);
- sub_404BE0((int)&v20, v6, a4);
- v18 = 0;
- while ( v18 < v7 )
- {
- *(_BYTE *)(v18 + v6) ^= *(_BYTE *)(v18 + a5);
- ++v18;
- }
- v19 = v7;
- while ( v19 <= 0xF )
- {
- *(_BYTE *)(v19 + v6) = *((_BYTE *)&v20 + v19);
- ++v19;
- }
- *(_DWORD *)a5 = v20;
- *(_DWORD *)(a5 + 4) = v21;
- *(_DWORD *)(a5 + 8) = v22;
- result = v23;
- *(_DWORD *)(a5 + 12) = v23;
- }
- }
- else
- {
- if ( a3 > 0xF )
- {
- do
- {
- sub_404BE0(v8, v6, a4);
- v10 = 0;
- do
- {
- *(_BYTE *)(v10 + v6) ^= *(_BYTE *)(v10 + v9);
- ++v10;
- }
- while ( v10 <= 0xF );
- v9 = v8;
- v7 -= 16;
- v8 += 16;
- v6 += 16;
- }
- while ( v7 > 0xF );
- }
- if ( v7 )
- {
- sub_404BE0(v8, (int)&v20, a4);
- v17 = 0;
- while ( v17 < v7 )
- {
- *(_BYTE *)(v17 + v6) = *((_BYTE *)&v20 + v17) ^ *(_BYTE *)(v17 + v9);
- ++v17;
- }
- v9 = v8;
- }
- *(_DWORD *)a5 = *(_DWORD *)v9;
- result = *(_DWORD *)(v9 + 4);
- *(_DWORD *)(a5 + 4) = *(_DWORD *)(v9 + 4);
- *(_DWORD *)(a5 + 8) = *(_DWORD *)(v9 + 8);
- *(_DWORD *)(a5 + 12) = *(_DWORD *)(v9 + 12);
- }
- }
- return result;
- }
- //----- (004053F0) --------------------------------------------------------
- int __cdecl sub_4053F0(int a1, unsigned int a2, int a3)
- {
- int v3; // ebx@1
- int v4; // edx@2
- signed int v6; // eax@2
- char v7; // [sp+0h] [bp-6Ch]@2
- v3 = a3;
- if ( !a3 )
- v3 = (int)&unk_40C010;
- v6 = sub_4059F0((int)&v7);
- v4 = 0;
- if ( v6 )
- {
- sub_4054D0((int)&v7, a1, a2);
- sub_405890(v3, (int)&v7);
- sub_405460(&v7, 96);
- v4 = v3;
- }
- return v4;
- }
- //----- (00405460) --------------------------------------------------------
- void *__cdecl sub_405460(void *a1, int a2)
- {
- void *v2; // edx@1
- int v3; // ecx@1
- void *v4; // edi@1
- int v5; // esi@1
- int v6; // ebx@2
- void *result; // eax@4
- int v8; // eax@3
- v5 = a2;
- v3 = a2 - 1;
- v4 = a1;
- v2 = a1;
- if ( a2 )
- {
- LOBYTE(v6) = byte_40C030;
- do
- {
- *(_BYTE *)v2 = v6;
- v2 = (char *)v2 + 1;
- v8 = (unsigned __int8)(byte_40C030 + ((_BYTE)v2 & 0xF));
- --v3;
- v6 = v8 + 17;
- byte_40C030 = (_BYTE)v8 + 17;
- }
- while ( v3 != -1 );
- }
- else
- {
- LOBYTE(v6) = byte_40C030;
- }
- result = memchr(v4, (unsigned __int8)v6, v5);
- if ( result )
- byte_40C030 = (_BYTE)v6 + 63;
- return result;
- }
- //----- (004054D0) --------------------------------------------------------
- signed int __cdecl sub_4054D0(int a1, int a2, unsigned int a3)
- {
- int v3; // ebx@1
- int v4; // ebp@1
- unsigned int v5; // edi@1
- int v6; // ecx@2
- int v7; // edx@3
- signed int v8; // eax@4
- signed int v9; // edx@5
- int v10; // esi@5
- int v11; // edx@6
- signed int v12; // ecx@10
- unsigned int v13; // esi@14
- char v14; // zf@17
- unsigned int v15; // ecx@17
- int v16; // ebp@17
- int v17; // esi@17
- int v18; // edx@20
- int v19; // ecx@20
- int v21; // edx@27
- int v22; // ebp@35
- signed int v23; // edi@35
- signed int v24; // ecx@40
- int v25; // edx@44
- int v26; // esi@44
- unsigned int v27; // eax@2
- int v28; // edx@11
- int v29; // edx@18
- int v30; // edx@41
- int v31; // [sp+8h] [bp-14h]@5
- signed int v32; // [sp+4h] [bp-18h]@5
- v5 = a3;
- v4 = a1;
- v3 = a2;
- if ( !a3 )
- return 1;
- v27 = *(_DWORD *)(a1 + 20);
- v6 = v27 + 8 * a3;
- if ( v27 > v6 )
- v7 = *(_DWORD *)(a1 + 24) + 1;
- else
- v7 = *(_DWORD *)(a1 + 24);
- v8 = *(_DWORD *)(a1 + 92);
- *(_DWORD *)(a1 + 24) = v7 + (a3 >> 29);
- *(_DWORD *)(a1 + 20) = v6;
- if ( v8 )
- {
- v31 = a1 + 28;
- v32 = v8 >> 2;
- v9 = v8 + v5;
- v10 = v8 & 3;
- if ( v8 + v5 > 0x3F )
- {
- v11 = *(_DWORD *)(v31 + 4 * v32);
- if ( v10 != 1 )
- {
- if ( v10 > 1 )
- {
- if ( v10 != 2 )
- {
- if ( v10 != 3 )
- goto LABEL_10;
- goto LABEL_53;
- }
- LABEL_52:
- v11 |= *(_BYTE *)v3++ << 8;
- LABEL_53:
- v11 |= *(_BYTE *)v3++;
- LABEL_10:
- *(_DWORD *)(v31 + 4 * v32) = v11;
- v12 = v32;
- while ( 1 )
- {
- ++v12;
- if ( v12 > 15 )
- break;
- v28 = *(_BYTE *)(v3 + 3) | (*(_BYTE *)(v3 + 2) << 8) | (*(_BYTE *)(v3 + 1) << 16) | (*(_BYTE *)v3 << 24);
- v3 += 4;
- *(_DWORD *)(v31 + 4 * v12) = v28;
- }
- sub_40696C(v4, v31, 1);
- v5 = v5 + *(_DWORD *)(v4 + 92) - 64;
- *(_DWORD *)(v4 + 92) = 0;
- goto LABEL_14;
- }
- if ( v10 )
- goto LABEL_10;
- v11 = *(_BYTE *)a2 << 24;
- v3 = a2 + 1;
- }
- v11 |= *(_BYTE *)v3++ << 16;
- goto LABEL_52;
- }
- *(_DWORD *)(a1 + 92) = v9;
- if ( v10 + v5 <= 3 )
- {
- v21 = *(_DWORD *)(v31 + 4 * v32);
- if ( v10 != 1 )
- {
- if ( v10 > 1 )
- {
- if ( v10 != 2 )
- {
- LABEL_30:
- *(_DWORD *)(v31 + 4 * v32) = v21;
- return 1;
- }
- LABEL_57:
- v21 |= *(_BYTE *)v3 << 8;
- goto LABEL_30;
- }
- if ( v10 || (v21 = *(_BYTE *)a2 << 24, v3 = a2 + 1, --v5, !v5) )
- goto LABEL_30;
- }
- v21 |= *(_BYTE *)v3++ << 16;
- if ( v5 == 1 )
- goto LABEL_30;
- goto LABEL_57;
- }
- v23 = v9 >> 2;
- v22 = v9 & 3;
- if ( v10 )
- v6 = *(_DWORD *)(v31 + 4 * v32);
- if ( v10 != 1 )
- {
- if ( v10 > 1 )
- {
- if ( v10 != 2 )
- {
- if ( v10 != 3 )
- {
- LABEL_40:
- *(_DWORD *)(v31 + 4 * v32) = v6;
- v24 = v32;
- while ( 1 )
- {
- ++v24;
- if ( v24 >= v23 )
- break;
- v30 = *(_BYTE *)(v3 + 3) | (*(_BYTE *)(v3 + 2) << 8) | (*(_BYTE *)(v3 + 1) << 16) | (*(_BYTE *)v3 << 24);
- v3 += 4;
- *(_DWORD *)(v31 + 4 * v24) = v30;
- }
- if ( !v22 )
- return 1;
- v26 = 0;
- v25 = v3 + v22;
- if ( v22 != 2 )
- {
- if ( v22 <= 2 )
- {
- if ( v22 != 1 )
- {
- LABEL_47:
- *(_DWORD *)(v31 + 4 * v24) = v26;
- return 1;
- }
- LABEL_66:
- v26 |= *(_BYTE *)(v25 - 1) << 24;
- goto LABEL_47;
- }
- if ( v22 != 3 )
- goto LABEL_47;
- v25 = v3 + 2;
- v26 = *(_BYTE *)(v3 + 2) << 8;
- }
- --v25;
- v26 |= *(_BYTE *)v25 << 16;
- goto LABEL_66;
- }
- LABEL_62:
- v6 |= *(_BYTE *)v3++;
- goto LABEL_40;
- }
- LABEL_61:
- v6 |= *(_BYTE *)v3++ << 8;
- goto LABEL_62;
- }
- if ( v10 )
- goto LABEL_40;
- v6 = *(_BYTE *)a2 << 24;
- v3 = a2 + 1;
- }
- v6 |= *(_BYTE *)v3++ << 16;
- goto LABEL_61;
- }
- LABEL_14:
- v13 = v5 >> 6;
- if ( (signed int)(v5 >> 6) > 0 )
- {
- sub_405A40(v4, v3, v5 >> 6);
- v3 += v13 << 6;
- v5 -= v13 << 6;
- }
- if ( v5 )
- {
- v17 = v4 + 28;
- *(_DWORD *)(v4 + 92) = v5;
- v16 = v5 & 3;
- v15 = v5 >> 2;
- v14 = v5 >> 2 == 0;
- while ( !v14 )
- {
- v29 = *(_BYTE *)(v3 + 3) | (*(_BYTE *)(v3 + 2) << 8) | (*(_BYTE *)(v3 + 1) << 16) | (*(_BYTE *)v3 << 24);
- v3 += 4;
- *(_DWORD *)v17 = v29;
- v17 += 4;
- --v15;
- v14 = v15 == 0;
- }
- v19 = 0;
- v18 = v3 + v16;
- if ( v16 != 2 )
- {
- if ( v16 <= 2 )
- {
- if ( v16 != 1 )
- {
- LABEL_23:
- *(_DWORD *)v17 = 0;
- return 1;
- }
- LABEL_34:
- *(_DWORD *)v17 = (*(_BYTE *)(v18 - 1) << 24) | v19;
- return 1;
- }
- if ( v16 != 3 )
- goto LABEL_23;
- v18 = v3 + 2;
- v19 = *(_BYTE *)(v3 + 2) << 8;
- }
- --v18;
- v19 |= *(_BYTE *)v18 << 16;
- goto LABEL_34;
- }
- return 1;
- }
- //----- (00405890) --------------------------------------------------------
- signed int __cdecl sub_405890(int a1, int a2)
- {
- int v2; // eax@1
- char *v3; // ecx@1
- int v4; // ebx@1
- int v5; // ebp@1
- signed int v6; // edi@1
- int v7; // esi@1
- int v8; // edx@2
- int v9; // eax@12
- signed int v11; // eax@1
- int v12; // edx@18
- int v13; // ebx@18
- int v14; // ecx@18
- unsigned int v15; // edx@18
- unsigned int v16; // edx@18
- unsigned int v17; // edx@18
- unsigned int v18; // edx@18
- v5 = a2;
- v11 = *(_DWORD *)(a2 + 92);
- v6 = v11 >> 2;
- v2 = v11 & 3;
- v7 = a1;
- v3 = &byte_40BCE8;
- v4 = a2 + 28;
- if ( !v2 )
- {
- LABEL_8:
- v8 = (unsigned __int8)byte_40BCE8 << 24;
- v3 = (char *)&unk_40BCE9;
- goto LABEL_9;
- }
- v8 = *(_DWORD *)(v4 + 4 * v6);
- if ( v2 == 1 )
- {
- LABEL_9:
- v8 |= *v3++ << 16;
- goto LABEL_10;
- }
- if ( v2 <= 1 )
- {
- if ( v2 )
- goto LABEL_12;
- goto LABEL_8;
- }
- if ( v2 != 2 )
- {
- if ( v2 != 3 )
- goto LABEL_12;
- goto LABEL_11;
- }
- LABEL_10:
- v8 |= *v3++ << 8;
- LABEL_11:
- v8 |= *v3;
- LABEL_12:
- v9 = v6 + 1;
- *(_DWORD *)(v4 + 4 * v6) = v8;
- if ( v6 + 1 <= 14 )
- goto LABEL_17;
- if ( v9 <= 15 )
- *(_DWORD *)(v4 + 4 * v9) = 0;
- sub_40696C(v5, v4, 1);
- v9 = 0;
- do
- {
- *(_DWORD *)(v4 + 4 * v9++) = 0;
- LABEL_17:
- ;
- }
- while ( v9 <= 13 );
- *(_DWORD *)(v4 + 56) = *(_DWORD *)(v5 + 24);
- *(_DWORD *)(v4 + 60) = *(_DWORD *)(v5 + 20);
- sub_40696C(v5, v4, 1);
- v12 = *(_DWORD *)v5;
- v13 = *(_DWORD *)v5 >> 16;
- v14 = *(_DWORD *)v5 >> 8;
- *(_BYTE *)v7 = *(_DWORD *)v5 >> 24;
- *(_BYTE *)(v7 + 1) = v13;
- *(_BYTE *)(v7 + 2) = v14;
- *(_BYTE *)(v7 + 3) = v12;
- v15 = *(_DWORD *)(v5 + 4);
- *(_BYTE *)(v7 + 4) = v15 >> 24;
- *(_BYTE *)(v7 + 5) = v15 >> 16;
- *(_BYTE *)(v7 + 6) = BYTE1(v15);
- *(_BYTE *)(v7 + 7) = v15;
- v16 = *(_DWORD *)(v5 + 8);
- *(_BYTE *)(v7 + 8) = v16 >> 24;
- *(_BYTE *)(v7 + 9) = v16 >> 16;
- *(_BYTE *)(v7 + 10) = BYTE1(v16);
- *(_BYTE *)(v7 + 11) = v16;
- v17 = *(_DWORD *)(v5 + 12);
- *(_BYTE *)(v7 + 12) = v17 >> 24;
- *(_BYTE *)(v7 + 13) = v17 >> 16;
- *(_BYTE *)(v7 + 14) = BYTE1(v17);
- *(_BYTE *)(v7 + 15) = v17;
- v18 = *(_DWORD *)(v5 + 16);
- *(_BYTE *)(v7 + 16) = v18 >> 24;
- *(_BYTE *)(v7 + 17) = v18 >> 16;
- *(_BYTE *)(v7 + 18) = BYTE1(v18);
- *(_BYTE *)(v7 + 19) = v18;
- *(_DWORD *)(v5 + 92) = 0;
- return 1;
- }
- //----- (004059F0) --------------------------------------------------------
- signed int __cdecl sub_4059F0(int a1)
- {
- *(_DWORD *)a1 = 1732584193;
- *(_DWORD *)(a1 + 4) = -271733879;
- *(_DWORD *)(a1 + 8) = -1732584194;
- *(_DWORD *)(a1 + 12) = 271733878;
- *(_DWORD *)(a1 + 16) = -1009589776;
- *(_DWORD *)(a1 + 20) = 0;
- *(_DWORD *)(a1 + 24) = 0;
- *(_DWORD *)(a1 + 92) = 0;
- return 1;
- }
- //----- (00405A40) --------------------------------------------------------
- int __cdecl sub_405A40(int a1, int a2, int a3)
- {
- int v3; // edx@1
- int v4; // ebx@1
- int v5; // ebp@1
- int v6; // edi@1
- int v7; // esi@1
- int result; // eax@2
- int v25; // eax@2
- int v26; // ecx@2
- int v27; // ebp@2
- int v28; // esi@2
- int v29; // esi@2
- int v30; // ebp@2
- int v31; // edi@2
- int v32; // edi@2
- int v33; // ebp@2
- int v34; // edx@2
- int v35; // edx@2
- int v36; // ebp@2
- int v37; // ebx@2
- int v38; // ebx@2
- int v39; // ebp@2
- int v40; // ecx@2
- int v41; // ecx@2
- int v42; // ebp@2
- int v43; // eax@2
- int v44; // eax@2
- int v45; // ebp@2
- int v46; // esi@2
- int v47; // esi@2
- int v48; // ebp@2
- int v49; // edi@2
- int v50; // edi@2
- int v51; // ebp@2
- int v52; // edx@2
- int v53; // edx@2
- int v54; // ebp@2
- int v55; // ebx@2
- int v56; // ebx@2
- int v57; // ebp@2
- int v58; // ecx@2
- int v59; // ecx@2
- int v60; // ebp@2
- int v61; // eax@2
- int v62; // eax@2
- int v63; // ebp@2
- int v64; // esi@2
- int v65; // esi@2
- int v66; // ebp@2
- int v67; // edi@2
- int v68; // edi@2
- int v69; // ebp@2
- int v70; // edx@2
- int v71; // edx@2
- int v72; // ebp@2
- int v73; // ebx@2
- int v74; // ebx@2
- int v75; // ebp@2
- int v76; // ecx@2
- int v77; // ecx@2
- int v78; // eax@2
- int v79; // ecx@2
- int v80; // ebp@2
- int v81; // eax@2
- int v82; // eax@2
- int v83; // esi@2
- int v84; // eax@2
- int v85; // ebp@2
- int v86; // esi@2
- int v87; // esi@2
- int v88; // edi@2
- int v89; // esi@2
- int v90; // ebp@2
- int v91; // edi@2
- int v92; // edi@2
- int v93; // edx@2
- int v94; // edi@2
- int v95; // ebp@2
- int v96; // edx@2
- int v97; // edx@2
- int v98; // ebx@2
- int v99; // edx@2
- int v100; // ebp@2
- int v101; // ebx@2
- int v102; // ebx@2
- int v103; // ecx@2
- int v104; // ebx@2
- int v105; // ebp@2
- int v106; // ecx@2
- int v107; // ecx@2
- int v108; // eax@2
- int v109; // ecx@2
- int v110; // ebp@2
- int v111; // eax@2
- int v112; // eax@2
- int v113; // esi@2
- int v114; // eax@2
- int v115; // ebp@2
- int v116; // esi@2
- int v117; // esi@2
- int v118; // edi@2
- int v119; // esi@2
- int v120; // ebp@2
- int v121; // edi@2
- int v122; // edi@2
- int v123; // edx@2
- int v124; // edi@2
- int v125; // ebp@2
- int v126; // edx@2
- int v127; // edx@2
- int v128; // ebx@2
- int v129; // edx@2
- int v130; // ebp@2
- int v131; // ebx@2
- int v132; // ebx@2
- int v133; // ecx@2
- int v134; // ebx@2
- int v135; // ebp@2
- int v136; // ecx@2
- int v137; // ecx@2
- int v138; // eax@2
- int v139; // ecx@2
- int v140; // ebp@2
- int v141; // eax@2
- int v142; // eax@2
- int v143; // esi@2
- int v144; // eax@2
- int v145; // ebp@2
- int v146; // esi@2
- int v147; // esi@2
- int v148; // edi@2
- int v149; // esi@2
- int v150; // ebp@2
- int v151; // edi@2
- int v152; // edi@2
- int v153; // edx@2
- int v154; // edi@2
- int v155; // ebp@2
- int v156; // edx@2
- int v157; // edx@2
- int v158; // ebx@2
- int v159; // edx@2
- int v160; // ebp@2
- int v161; // ebx@2
- int v162; // ebx@2
- int v163; // ecx@2
- int v164; // ebx@2
- int v165; // ebp@2
- int v166; // ecx@2
- int v167; // ecx@2
- int v168; // eax@2
- int v169; // ecx@2
- int v170; // ebp@2
- int v171; // eax@2
- int v172; // eax@2
- int v173; // esi@2
- int v174; // eax@2
- int v175; // ebp@2
- int v176; // esi@2
- int v177; // esi@2
- int v178; // edi@2
- int v179; // esi@2
- int v180; // ebp@2
- int v181; // edi@2
- int v182; // edi@2
- int v183; // edx@2
- int v184; // edi@2
- int v185; // ebp@2
- int v186; // edx@2
- int v187; // edx@2
- int v188; // ebx@2
- int v189; // edx@2
- int v190; // ebp@2
- int v191; // ebx@2
- int v192; // ebx@2
- int v193; // ecx@2
- int v194; // ebx@2
- int v195; // ebp@2
- int v196; // ecx@2
- int v197; // ecx@2
- int v198; // eax@2
- int v199; // ebp@2
- int v200; // eax@2
- int v201; // ecx@2
- int v202; // ebp@2
- int v203; // eax@2
- int v204; // eax@2
- int v205; // esi@2
- int v206; // ebp@2
- int v207; // esi@2
- int v208; // eax@2
- int v209; // ebp@2
- int v210; // esi@2
- int v211; // esi@2
- int v212; // edi@2
- int v213; // ebp@2
- int v214; // edi@2
- int v215; // esi@2
- int v216; // ebp@2
- int v217; // edi@2
- int v218; // edi@2
- int v219; // edx@2
- int v220; // ebp@2
- int v221; // edx@2
- int v222; // edi@2
- int v223; // ebp@2
- int v224; // edx@2
- int v225; // edx@2
- int v226; // ebx@2
- int v227; // ebp@2
- int v228; // ebx@2
- int v229; // edx@2
- int v230; // ebp@2
- int v231; // ebx@2
- int v232; // ebx@2
- int v233; // ecx@2
- int v234; // ebp@2
- int v235; // ecx@2
- int v236; // ebx@2
- int v237; // ebp@2
- int v238; // ecx@2
- int v239; // ecx@2
- int v240; // eax@2
- int v241; // ebp@2
- int v242; // eax@2
- int v243; // ecx@2
- int v244; // ebp@2
- int v245; // eax@2
- int v246; // eax@2
- int v247; // esi@2
- int v248; // ebp@2
- int v249; // esi@2
- int v250; // eax@2
- int v251; // ebp@2
- int v252; // esi@2
- int v253; // esi@2
- int v254; // edi@2
- int v255; // ebp@2
- int v256; // edi@2
- int v257; // esi@2
- int v258; // ebp@2
- int v259; // edi@2
- int v260; // edi@2
- int v261; // edx@2
- int v262; // ebp@2
- int v263; // edx@2
- int v264; // edi@2
- int v265; // ebp@2
- int v266; // edx@2
- int v267; // edx@2
- int v268; // ebx@2
- int v269; // ebp@2
- int v270; // ebx@2
- int v271; // edx@2
- int v272; // ebp@2
- int v273; // ebx@2
- int v274; // ebx@2
- int v275; // ecx@2
- int v276; // ebp@2
- int v277; // ecx@2
- int v278; // ebx@2
- int v279; // ebp@2
- int v280; // ecx@2
- int v281; // ecx@2
- int v282; // eax@2
- int v283; // ebp@2
- int v284; // eax@2
- int v285; // ecx@2
- int v286; // ebp@2
- int v287; // eax@2
- int v288; // eax@2
- int v289; // esi@2
- int v290; // ebp@2
- int v291; // esi@2
- int v292; // eax@2
- int v293; // ebp@2
- int v294; // esi@2
- int v295; // esi@2
- int v296; // edi@2
- int v297; // ebp@2
- int v298; // edi@2
- int v299; // esi@2
- int v300; // ebp@2
- int v301; // edi@2
- int v302; // edi@2
- int v303; // edx@2
- int v304; // ebp@2
- int v305; // edx@2
- int v306; // edi@2
- int v307; // ebp@2
- int v308; // edx@2
- int v309; // edx@2
- int v310; // ebx@2
- int v311; // ebp@2
- int v312; // ebx@2
- int v313; // edx@2
- int v314; // ebp@2
- int v315; // ebx@2
- int v316; // ebx@2
- int v317; // ecx@2
- int v318; // ebp@2
- int v319; // ecx@2
- int v320; // ebx@2
- int v321; // ebp@2
- int v322; // ecx@2
- int v323; // ecx@2
- int v324; // eax@2
- int v325; // ebp@2
- int v326; // eax@2
- int v327; // ecx@2
- int v328; // ebp@2
- int v329; // eax@2
- int v330; // eax@2
- int v331; // esi@2
- int v332; // ebp@2
- int v333; // esi@2
- int v334; // eax@2
- int v335; // ebp@2
- int v336; // esi@2
- int v337; // esi@2
- int v338; // edi@2
- int v339; // esi@2
- int v340; // ebp@2
- int v341; // edi@2
- int v342; // edi@2
- int v343; // edx@2
- int v344; // edi@2
- int v345; // ebp@2
- int v346; // edx@2
- int v347; // edx@2
- int v348; // ebx@2
- int v349; // edx@2
- int v350; // ebp@2
- int v351; // ebx@2
- int v352; // ebx@2
- int v353; // ecx@2
- int v354; // ebx@2
- int v355; // ebp@2
- int v356; // ecx@2
- int v357; // ecx@2
- int v358; // eax@2
- int v359; // ecx@2
- int v360; // ebp@2
- int v361; // eax@2
- int v362; // eax@2
- int v363; // esi@2
- int v364; // eax@2
- int v365; // ebp@2
- int v366; // esi@2
- int v367; // esi@2
- int v368; // edi@2
- int v369; // esi@2
- int v370; // ebp@2
- int v371; // edi@2
- int v372; // edi@2
- int v373; // edx@2
- int v374; // edi@2
- int v375; // ebp@2
- int v376; // edx@2
- int v377; // edx@2
- int v378; // ebx@2
- int v379; // edx@2
- int v380; // ebp@2
- int v381; // ebx@2
- int v382; // ebx@2
- int v383; // ecx@2
- int v384; // ebx@2
- int v385; // ebp@2
- int v386; // ecx@2
- int v387; // ecx@2
- int v388; // eax@2
- int v389; // ecx@2
- int v390; // ebp@2
- int v391; // eax@2
- int v392; // eax@2
- int v393; // esi@2
- int v394; // eax@2
- int v395; // ebp@2
- int v396; // esi@2
- int v397; // esi@2
- int v398; // edi@2
- int v399; // esi@2
- int v400; // ebp@2
- int v401; // edi@2
- int v402; // edi@2
- int v403; // edx@2
- int v404; // edi@2
- int v405; // ebp@2
- int v406; // edx@2
- int v407; // edx@2
- int v408; // ebx@2
- int v409; // edx@2
- int v410; // ebp@2
- int v411; // ebx@2
- int v412; // ebx@2
- int v413; // ecx@2
- int v414; // ebx@2
- int v415; // ebp@2
- int v416; // ecx@2
- int v417; // ecx@2
- int v418; // eax@2
- int v419; // ecx@2
- int v420; // ebp@2
- int v421; // eax@2
- int v422; // eax@2
- int v423; // esi@2
- int v424; // eax@2
- int v425; // ebp@2
- int v426; // esi@2
- int v427; // esi@2
- int v428; // edi@2
- int v429; // esi@2
- int v430; // ebp@2
- int v431; // edi@2
- int v432; // edi@2
- int v433; // edx@2
- int v434; // edi@2
- int v435; // ecx@2
- int v436; // esi@2
- int v437; // eax@2
- int v438; // eax@2
- int v439; // esi@2
- int v440; // [sp+44h] [bp-38h]@1
- int v441; // [sp+0h] [bp-7Ch]@2
- int v442; // [sp+4h] [bp-78h]@2
- int v443; // [sp+8h] [bp-74h]@2
- int v444; // [sp+Ch] [bp-70h]@2
- int v445; // [sp+10h] [bp-6Ch]@2
- int v446; // [sp+14h] [bp-68h]@2
- int v447; // [sp+18h] [bp-64h]@2
- int v448; // [sp+1Ch] [bp-60h]@2
- int v449; // [sp+20h] [bp-5Ch]@2
- int v450; // [sp+24h] [bp-58h]@2
- int v451; // [sp+28h] [bp-54h]@2
- int v452; // [sp+2Ch] [bp-50h]@2
- int v453; // [sp+30h] [bp-4Ch]@2
- int v454; // [sp+34h] [bp-48h]@2
- int v455; // [sp+38h] [bp-44h]@2
- int v456; // [sp+3Ch] [bp-40h]@2
- v7 = a2;
- v5 = a1;
- v3 = *(_DWORD *)(a1 + 12);
- v6 = *(_DWORD *)(a1 + 16);
- v4 = *(_DWORD *)(a1 + 8);
- v440 = a2 + (a3 << 6);
- do
- {
- __asm
- {
- bswap eax
- bswap ecx
- }
- v441 = _EAX;
- v442 = _ECX;
- __asm
- {
- bswap eax
- bswap ecx
- }
- v443 = _EAX;
- v444 = _ECX;
- __asm
- {
- bswap eax
- bswap ecx
- }
- v445 = _EAX;
- v446 = _ECX;
- __asm
- {
- bswap eax
- bswap ecx
- }
- v447 = _EAX;
- v448 = _ECX;
- __asm
- {
- bswap eax
- bswap ecx
- }
- v449 = _EAX;
- v450 = _ECX;
- __asm
- {
- bswap eax
- bswap ecx
- }
- v451 = _EAX;
- v452 = _ECX;
- __asm
- {
- bswap eax
- bswap ecx
- }
- v453 = _EAX;
- v454 = _ECX;
- __asm
- {
- bswap eax
- bswap ecx
- }
- v455 = _EAX;
- v456 = _ECX;
- a2 = v7;
- v25 = *(_DWORD *)v5;
- v26 = *(_DWORD *)(v5 + 4);
- v27 = __ROL__(*(_DWORD *)v5, 5);
- v28 = v26 & (v3 ^ v4);
- v26 = __ROR__(v26, 2);
- v29 = v6 + v27 + v441 + 1518500249 + (v3 ^ v28);
- v30 = __ROL__(v29, 5);
- v31 = v25 & (v4 ^ v26);
- v25 = __ROR__(v25, 2);
- v32 = v3 + v30 + v442 + 1518500249 + (v4 ^ v31);
- v33 = __ROL__(v32, 5);
- v34 = v29 & (v26 ^ v25);
- v29 = __ROR__(v29, 2);
- v35 = v4 + v33 + v443 + 1518500249 + (v26 ^ v34);
- v36 = __ROL__(v35, 5);
- v37 = v32 & (v25 ^ v29);
- v32 = __ROR__(v32, 2);
- v38 = v26 + v36 + v444 + 1518500249 + (v25 ^ v37);
- v39 = __ROL__(v38, 5);
- v40 = v35 & (v29 ^ v32);
- v35 = __ROR__(v35, 2);
- v41 = v25 + v39 + v445 + 1518500249 + (v29 ^ v40);
- v42 = __ROL__(v41, 5);
- v43 = v38 & (v32 ^ v35);
- v38 = __ROR__(v38, 2);
- v44 = v29 + v42 + v446 + 1518500249 + (v32 ^ v43);
- v45 = __ROL__(v44, 5);
- v46 = v41 & (v35 ^ v38);
- v41 = __ROR__(v41, 2);
- v47 = v32 + v45 + v447 + 1518500249 + (v35 ^ v46);
- v48 = __ROL__(v47, 5);
- v49 = v44 & (v38 ^ v41);
- v44 = __ROR__(v44, 2);
- v50 = v35 + v48 + v448 + 1518500249 + (v38 ^ v49);
- v51 = __ROL__(v50, 5);
- v52 = v47 & (v41 ^ v44);
- v47 = __ROR__(v47, 2);
- v53 = v38 + v51 + v449 + 1518500249 + (v41 ^ v52);
- v54 = __ROL__(v53, 5);
- v55 = v50 & (v44 ^ v47);
- v50 = __ROR__(v50, 2);
- v56 = v41 + v54 + v450 + 1518500249 + (v44 ^ v55);
- v57 = __ROL__(v56, 5);
- v58 = v53 & (v47 ^ v50);
- v53 = __ROR__(v53, 2);
- v59 = v44 + v57 + v451 + 1518500249 + (v47 ^ v58);
- v60 = __ROL__(v59, 5);
- v61 = v56 & (v50 ^ v53);
- v56 = __ROR__(v56, 2);
- v62 = v47 + v60 + v452 + 1518500249 + (v50 ^ v61);
- v63 = __ROL__(v62, 5);
- v64 = v59 & (v53 ^ v56);
- v59 = __ROR__(v59, 2);
- v65 = v50 + v63 + v453 + 1518500249 + (v53 ^ v64);
- v66 = __ROL__(v65, 5);
- v67 = v62 & (v56 ^ v59);
- v62 = __ROR__(v62, 2);
- v68 = v53 + v66 + v454 + 1518500249 + (v56 ^ v67);
- v69 = __ROL__(v68, 5);
- v70 = v65 & (v59 ^ v62);
- v65 = __ROR__(v65, 2);
- v71 = v56 + v69 + v455 + 1518500249 + (v59 ^ v70);
- v72 = __ROL__(v71, 5);
- v73 = v68 & (v62 ^ v65);
- v68 = __ROR__(v68, 2);
- v74 = v59 + v72 + v456 + 1518500249 + (v62 ^ v73);
- v75 = v71 & (v65 ^ v68);
- v71 = __ROR__(v71, 2);
- v76 = __ROL__(v454 ^ v449 ^ v441 ^ v443, 1);
- v441 = v76;
- v77 = (v65 ^ v75) + v76 + v62 + 1518500249;
- v78 = __ROL__(v74, 5);
- v79 = v78 + v77;
- v80 = v74 & (v68 ^ v71);
- v74 = __ROR__(v74, 2);
- v81 = __ROL__(v455 ^ v450 ^ v442 ^ v444, 1);
- v442 = v81;
- v82 = (v68 ^ v80) + v81 + v65 + 1518500249;
- v83 = __ROL__(v79, 5);
- v84 = v83 + v82;
- v85 = v79 & (v71 ^ v74);
- v79 = __ROR__(v79, 2);
- v86 = __ROL__(v456 ^ v451 ^ v443 ^ v445, 1);
- v443 = v86;
- v87 = (v71 ^ v85) + v86 + v68 + 1518500249;
- v88 = __ROL__(v84, 5);
- v89 = v88 + v87;
- v90 = v84 & (v74 ^ v79);
- v84 = __ROR__(v84, 2);
- v91 = __ROL__(v441 ^ v452 ^ v444 ^ v446, 1);
- v444 = v91;
- v92 = (v74 ^ v90) + v91 + v71 + 1518500249;
- v93 = __ROL__(v89, 5);
- v94 = v93 + v92;
- v95 = v89;
- v89 = __ROR__(v89, 2);
- v96 = __ROL__(v442 ^ v453 ^ v447 ^ v445, 1);
- v445 = v96;
- v97 = v96 + v74 + 1859775393;
- v98 = __ROL__(v94, 5);
- v99 = v98 + (v79 ^ v84 ^ v95) + v97;
- v100 = v94;
- v94 = __ROR__(v94, 2);
- v101 = __ROL__(v443 ^ v454 ^ v448 ^ v446, 1);
- v446 = v101;
- v102 = v101 + v79 + 1859775393;
- v103 = __ROL__(v99, 5);
- v104 = v103 + (v84 ^ v89 ^ v100) + v102;
- v105 = v99;
- v99 = __ROR__(v99, 2);
- v106 = __ROL__(v444 ^ v455 ^ v449 ^ v447, 1);
- v447 = v106;
- v107 = v106 + v84 + 1859775393;
- v108 = __ROL__(v104, 5);
- v109 = v108 + (v89 ^ v94 ^ v105) + v107;
- v110 = v104;
- v104 = __ROR__(v104, 2);
- v111 = __ROL__(v445 ^ v456 ^ v450 ^ v448, 1);
- v448 = v111;
- v112 = v111 + v89 + 1859775393;
- v113 = __ROL__(v109, 5);
- v114 = v113 + (v94 ^ v99 ^ v110) + v112;
- v115 = v109;
- v109 = __ROR__(v109, 2);
- v116 = __ROL__(v446 ^ v441 ^ v451 ^ v449, 1);
- v449 = v116;
- v117 = v116 + v94 + 1859775393;
- v118 = __ROL__(v114, 5);
- v119 = v118 + (v99 ^ v104 ^ v115) + v117;
- v120 = v114;
- v114 = __ROR__(v114, 2);
- v121 = __ROL__(v447 ^ v442 ^ v452 ^ v450, 1);
- v450 = v121;
- v122 = v121 + v99 + 1859775393;
- v123 = __ROL__(v119, 5);
- v124 = v123 + (v104 ^ v109 ^ v120) + v122;
- v125 = v119;
- v119 = __ROR__(v119, 2);
- v126 = __ROL__(v448 ^ v443 ^ v453 ^ v451, 1);
- v451 = v126;
- v127 = v126 + v104 + 1859775393;
- v128 = __ROL__(v124, 5);
- v129 = v128 + (v109 ^ v114 ^ v125) + v127;
- v130 = v124;
- v124 = __ROR__(v124, 2);
- v131 = __ROL__(v449 ^ v444 ^ v454 ^ v452, 1);
- v452 = v131;
- v132 = v131 + v109 + 1859775393;
- v133 = __ROL__(v129, 5);
- v134 = v133 + (v114 ^ v119 ^ v130) + v132;
- v135 = v129;
- v129 = __ROR__(v129, 2);
- v136 = __ROL__(v450 ^ v445 ^ v455 ^ v453, 1);
- v453 = v136;
- v137 = v136 + v114 + 1859775393;
- v138 = __ROL__(v134, 5);
- v139 = v138 + (v119 ^ v124 ^ v135) + v137;
- v140 = v134;
- v134 = __ROR__(v134, 2);
- v141 = __ROL__(v451 ^ v446 ^ v456 ^ v454, 1);
- v454 = v141;
- v142 = v141 + v119 + 1859775393;
- v143 = __ROL__(v139, 5);
- v144 = v143 + (v124 ^ v129 ^ v140) + v142;
- v145 = v139;
- v139 = __ROR__(v139, 2);
- v146 = __ROL__(v452 ^ v447 ^ v441 ^ v455, 1);
- v455 = v146;
- v147 = v146 + v124 + 1859775393;
- v148 = __ROL__(v144, 5);
- v149 = v148 + (v129 ^ v134 ^ v145) + v147;
- v150 = v144;
- v144 = __ROR__(v144, 2);
- v151 = __ROL__(v453 ^ v448 ^ v442 ^ v456, 1);
- v456 = v151;
- v152 = v151 + v129 + 1859775393;
- v153 = __ROL__(v149, 5);
- v154 = v153 + (v134 ^ v139 ^ v150) + v152;
- v155 = v149;
- v149 = __ROR__(v149, 2);
- v156 = __ROL__(v454 ^ v449 ^ v443 ^ v441, 1);
- v441 = v156;
- v157 = v156 + v134 + 1859775393;
- v158 = __ROL__(v154, 5);
- v159 = v158 + (v139 ^ v144 ^ v155) + v157;
- v160 = v154;
- v154 = __ROR__(v154, 2);
- v161 = __ROL__(v455 ^ v450 ^ v444 ^ v442, 1);
- v442 = v161;
- v162 = v161 + v139 + 1859775393;
- v163 = __ROL__(v159, 5);
- v164 = v163 + (v144 ^ v149 ^ v160) + v162;
- v165 = v159;
- v159 = __ROR__(v159, 2);
- v166 = __ROL__(v456 ^ v451 ^ v445 ^ v443, 1);
- v443 = v166;
- v167 = v166 + v144 + 1859775393;
- v168 = __ROL__(v164, 5);
- v169 = v168 + (v149 ^ v154 ^ v165) + v167;
- v170 = v164;
- v164 = __ROR__(v164, 2);
- v171 = __ROL__(v441 ^ v452 ^ v446 ^ v444, 1);
- v444 = v171;
- v172 = v171 + v149 + 1859775393;
- v173 = __ROL__(v169, 5);
- v174 = v173 + (v154 ^ v159 ^ v170) + v172;
- v175 = v169;
- v169 = __ROR__(v169, 2);
- v176 = __ROL__(v442 ^ v453 ^ v447 ^ v445, 1);
- v445 = v176;
- v177 = v176 + v154 + 1859775393;
- v178 = __ROL__(v174, 5);
- v179 = v178 + (v159 ^ v164 ^ v175) + v177;
- v180 = v174;
- v174 = __ROR__(v174, 2);
- v181 = __ROL__(v443 ^ v454 ^ v448 ^ v446, 1);
- v446 = v181;
- v182 = v181 + v159 + 1859775393;
- v183 = __ROL__(v179, 5);
- v184 = v183 + (v164 ^ v169 ^ v180) + v182;
- v185 = v179;
- v179 = __ROR__(v179, 2);
- v186 = __ROL__(v444 ^ v455 ^ v449 ^ v447, 1);
- v447 = v186;
- v187 = v186 + v164 + 1859775393;
- v188 = __ROL__(v184, 5);
- v189 = v188 + (v169 ^ v174 ^ v185) + v187;
- v190 = v184;
- v184 = __ROR__(v184, 2);
- v191 = __ROL__(v445 ^ v456 ^ v450 ^ v448, 1);
- v448 = v191;
- v192 = v191 + v169 + 1859775393;
- v193 = __ROL__(v189, 5);
- v194 = v193 + (v174 ^ v179 ^ v190) + v192;
- v195 = v179 & (v184 | v189);
- v196 = __ROL__(v446 ^ v441 ^ v451 ^ v449, 1);
- v449 = v196;
- v197 = v196 + v174 - 1894007588;
- v198 = v189;
- v189 = __ROR__(v189, 2);
- v199 = v184 & v198 | v195;
- v200 = __ROL__(v194, 5);
- v201 = v200 + v199 + v197;
- v202 = v184 & (v189 | v194);
- v203 = __ROL__(v447 ^ v442 ^ v452 ^ v450, 1);
- v450 = v203;
- v204 = v203 + v179 - 1894007588;
- v205 = v194;
- v194 = __ROR__(v194, 2);
- v206 = v189 & v205 | v202;
- v207 = __ROL__(v201, 5);
- v208 = v207 + v206 + v204;
- v209 = v189 & (v194 | v201);
- v210 = __ROL__(v448 ^ v443 ^ v453 ^ v451, 1);
- v451 = v210;
- v211 = v210 + v184 - 1894007588;
- v212 = v201;
- v201 = __ROR__(v201, 2);
- v213 = v194 & v212 | v209;
- v214 = __ROL__(v208, 5);
- v215 = v214 + v213 + v211;
- v216 = v194 & (v201 | v208);
- v217 = __ROL__(v449 ^ v444 ^ v454 ^ v452, 1);
- v452 = v217;
- v218 = v217 + v189 - 1894007588;
- v219 = v208;
- v208 = __ROR__(v208, 2);
- v220 = v201 & v219 | v216;
- v221 = __ROL__(v215, 5);
- v222 = v221 + v220 + v218;
- v223 = v201 & (v208 | v215);
- v224 = __ROL__(v450 ^ v445 ^ v455 ^ v453, 1);
- v453 = v224;
- v225 = v224 + v194 - 1894007588;
- v226 = v215;
- v215 = __ROR__(v215, 2);
- v227 = v208 & v226 | v223;
- v228 = __ROL__(v222, 5);
- v229 = v228 + v227 + v225;
- v230 = v208 & (v215 | v222);
- v231 = __ROL__(v451 ^ v446 ^ v456 ^ v454, 1);
- v454 = v231;
- v232 = v231 + v201 - 1894007588;
- v233 = v222;
- v222 = __ROR__(v222, 2);
- v234 = v215 & v233 | v230;
- v235 = __ROL__(v229, 5);
- v236 = v235 + v234 + v232;
- v237 = v215 & (v222 | v229);
- v238 = __ROL__(v452 ^ v447 ^ v441 ^ v455, 1);
- v455 = v238;
- v239 = v238 + v208 - 1894007588;
- v240 = v229;
- v229 = __ROR__(v229, 2);
- v241 = v222 & v240 | v237;
- v242 = __ROL__(v236, 5);
- v243 = v242 + v241 + v239;
- v244 = v222 & (v229 | v236);
- v245 = __ROL__(v453 ^ v448 ^ v442 ^ v456, 1);
- v456 = v245;
- v246 = v245 + v215 - 1894007588;
- v247 = v236;
- v236 = __ROR__(v236, 2);
- v248 = v229 & v247 | v244;
- v249 = __ROL__(v243, 5);
- v250 = v249 + v248 + v246;
- v251 = v229 & (v236 | v243);
- v252 = __ROL__(v454 ^ v449 ^ v443 ^ v441, 1);
- v441 = v252;
- v253 = v252 + v222 - 1894007588;
- v254 = v243;
- v243 = __ROR__(v243, 2);
- v255 = v236 & v254 | v251;
- v256 = __ROL__(v250, 5);
- v257 = v256 + v255 + v253;
- v258 = v236 & (v243 | v250);
- v259 = __ROL__(v455 ^ v450 ^ v444 ^ v442, 1);
- v442 = v259;
- v260 = v259 + v229 - 1894007588;
- v261 = v250;
- v250 = __ROR__(v250, 2);
- v262 = v243 & v261 | v258;
- v263 = __ROL__(v257, 5);
- v264 = v263 + v262 + v260;
- v265 = v243 & (v250 | v257);
- v266 = __ROL__(v456 ^ v451 ^ v445 ^ v443, 1);
- v443 = v266;
- v267 = v266 + v236 - 1894007588;
- v268 = v257;
- v257 = __ROR__(v257, 2);
- v269 = v250 & v268 | v265;
- v270 = __ROL__(v264, 5);
- v271 = v270 + v269 + v267;
- v272 = v250 & (v257 | v264);
- v273 = __ROL__(v441 ^ v452 ^ v446 ^ v444, 1);
- v444 = v273;
- v274 = v273 + v243 - 1894007588;
- v275 = v264;
- v264 = __ROR__(v264, 2);
- v276 = v257 & v275 | v272;
- v277 = __ROL__(v271, 5);
- v278 = v277 + v276 + v274;
- v279 = v257 & (v264 | v271);
- v280 = __ROL__(v442 ^ v453 ^ v447 ^ v445, 1);
- v445 = v280;
- v281 = v280 + v250 - 1894007588;
- v282 = v271;
- v271 = __ROR__(v271, 2);
- v283 = v264 & v282 | v279;
- v284 = __ROL__(v278, 5);
- v285 = v284 + v283 + v281;
- v286 = v264 & (v271 | v278);
- v287 = __ROL__(v443 ^ v454 ^ v448 ^ v446, 1);
- v446 = v287;
- v288 = v287 + v257 - 1894007588;
- v289 = v278;
- v278 = __ROR__(v278, 2);
- v290 = v271 & v289 | v286;
- v291 = __ROL__(v285, 5);
- v292 = v291 + v290 + v288;
- v293 = v271 & (v278 | v285);
- v294 = __ROL__(v444 ^ v455 ^ v449 ^ v447, 1);
- v447 = v294;
- v295 = v294 + v264 - 1894007588;
- v296 = v285;
- v285 = __ROR__(v285, 2);
- v297 = v278 & v296 | v293;
- v298 = __ROL__(v292, 5);
- v299 = v298 + v297 + v295;
- v300 = v278 & (v285 | v292);
- v301 = __ROL__(v445 ^ v456 ^ v450 ^ v448, 1);
- v448 = v301;
- v302 = v301 + v271 - 1894007588;
- v303 = v292;
- v292 = __ROR__(v292, 2);
- v304 = v285 & v303 | v300;
- v305 = __ROL__(v299, 5);
- v306 = v305 + v304 + v302;
- v307 = v285 & (v292 | v299);
- v308 = __ROL__(v446 ^ v441 ^ v451 ^ v449, 1);
- v449 = v308;
- v309 = v308 + v278 - 1894007588;
- v310 = v299;
- v299 = __ROR__(v299, 2);
- v311 = v292 & v310 | v307;
- v312 = __ROL__(v306, 5);
- v313 = v312 + v311 + v309;
- v314 = v292 & (v299 | v306);
- v315 = __ROL__(v447 ^ v442 ^ v452 ^ v450, 1);
- v450 = v315;
- v316 = v315 + v285 - 1894007588;
- v317 = v306;
- v306 = __ROR__(v306, 2);
- v318 = v299 & v317 | v314;
- v319 = __ROL__(v313, 5);
- v320 = v319 + v318 + v316;
- v321 = v299 & (v306 | v313);
- v322 = __ROL__(v448 ^ v443 ^ v453 ^ v451, 1);
- v451 = v322;
- v323 = v322 + v292 - 1894007588;
- v324 = v313;
- v313 = __ROR__(v313, 2);
- v325 = v306 & v324 | v321;
- v326 = __ROL__(v320, 5);
- v327 = v326 + v325 + v323;
- v328 = v306 & (v313 | v320);
- v329 = __ROL__(v449 ^ v444 ^ v454 ^ v452, 1);
- v452 = v329;
- v330 = v329 + v299 - 1894007588;
- v331 = v320;
- v320 = __ROR__(v320, 2);
- v332 = v313 & v331 | v328;
- v333 = __ROL__(v327, 5);
- v334 = v333 + v332 + v330;
- v335 = v327;
- v327 = __ROR__(v327, 2);
- v336 = __ROL__(v450 ^ v445 ^ v455 ^ v453, 1);
- v453 = v336;
- v337 = v336 + v306 - 899497514;
- v338 = __ROL__(v334, 5);
- v339 = v338 + (v313 ^ v320 ^ v335) + v337;
- v340 = v334;
- v334 = __ROR__(v334, 2);
- v341 = __ROL__(v451 ^ v446 ^ v456 ^ v454, 1);
- v454 = v341;
- v342 = v341 + v313 - 899497514;
- v343 = __ROL__(v339, 5);
- v344 = v343 + (v320 ^ v327 ^ v340) + v342;
- v345 = v339;
- v339 = __ROR__(v339, 2);
- v346 = __ROL__(v452 ^ v447 ^ v441 ^ v455, 1);
- v455 = v346;
- v347 = v346 + v320 - 899497514;
- v348 = __ROL__(v344, 5);
- v349 = v348 + (v327 ^ v334 ^ v345) + v347;
- v350 = v344;
- v344 = __ROR__(v344, 2);
- v351 = __ROL__(v453 ^ v448 ^ v442 ^ v456, 1);
- v456 = v351;
- v352 = v351 + v327 - 899497514;
- v353 = __ROL__(v349, 5);
- v354 = v353 + (v334 ^ v339 ^ v350) + v352;
- v355 = v349;
- v349 = __ROR__(v349, 2);
- v356 = __ROL__(v454 ^ v449 ^ v443 ^ v441, 1);
- v441 = v356;
- v357 = v356 + v334 - 899497514;
- v358 = __ROL__(v354, 5);
- v359 = v358 + (v339 ^ v344 ^ v355) + v357;
- v360 = v354;
- v354 = __ROR__(v354, 2);
- v361 = __ROL__(v455 ^ v450 ^ v444 ^ v442, 1);
- v442 = v361;
- v362 = v361 + v339 - 899497514;
- v363 = __ROL__(v359, 5);
- v364 = v363 + (v344 ^ v349 ^ v360) + v362;
- v365 = v359;
- v359 = __ROR__(v359, 2);
- v366 = __ROL__(v456 ^ v451 ^ v445 ^ v443, 1);
- v443 = v366;
- v367 = v366 + v344 - 899497514;
- v368 = __ROL__(v364, 5);
- v369 = v368 + (v349 ^ v354 ^ v365) + v367;
- v370 = v364;
- v364 = __ROR__(v364, 2);
- v371 = __ROL__(v441 ^ v452 ^ v446 ^ v444, 1);
- v444 = v371;
- v372 = v371 + v349 - 899497514;
- v373 = __ROL__(v369, 5);
- v374 = v373 + (v354 ^ v359 ^ v370) + v372;
- v375 = v369;
- v369 = __ROR__(v369, 2);
- v376 = __ROL__(v442 ^ v453 ^ v447 ^ v445, 1);
- v445 = v376;
- v377 = v376 + v354 - 899497514;
- v378 = __ROL__(v374, 5);
- v379 = v378 + (v359 ^ v364 ^ v375) + v377;
- v380 = v374;
- v374 = __ROR__(v374, 2);
- v381 = __ROL__(v443 ^ v454 ^ v448 ^ v446, 1);
- v446 = v381;
- v382 = v381 + v359 - 899497514;
- v383 = __ROL__(v379, 5);
- v384 = v383 + (v364 ^ v369 ^ v380) + v382;
- v385 = v379;
- v379 = __ROR__(v379, 2);
- v386 = __ROL__(v444 ^ v455 ^ v449 ^ v447, 1);
- v447 = v386;
- v387 = v386 + v364 - 899497514;
- v388 = __ROL__(v384, 5);
- v389 = v388 + (v369 ^ v374 ^ v385) + v387;
- v390 = v384;
- v384 = __ROR__(v384, 2);
- v391 = __ROL__(v445 ^ v456 ^ v450 ^ v448, 1);
- v448 = v391;
- v392 = v391 + v369 - 899497514;
- v393 = __ROL__(v389, 5);
- v394 = v393 + (v374 ^ v379 ^ v390) + v392;
- v395 = v389;
- v389 = __ROR__(v389, 2);
- v396 = __ROL__(v446 ^ v441 ^ v451 ^ v449, 1);
- v449 = v396;
- v397 = v396 + v374 - 899497514;
- v398 = __ROL__(v394, 5);
- v399 = v398 + (v379 ^ v384 ^ v395) + v397;
- v400 = v394;
- v394 = __ROR__(v394, 2);
- v401 = __ROL__(v447 ^ v442 ^ v452 ^ v450, 1);
- v450 = v401;
- v402 = v401 + v379 - 899497514;
- v403 = __ROL__(v399, 5);
- v404 = v403 + (v384 ^ v389 ^ v400) + v402;
- v405 = v399;
- v399 = __ROR__(v399, 2);
- v406 = __ROL__(v448 ^ v443 ^ v453 ^ v451, 1);
- v451 = v406;
- v407 = v406 + v384 - 899497514;
- v408 = __ROL__(v404, 5);
- v409 = v408 + (v389 ^ v394 ^ v405) + v407;
- v410 = v404;
- v404 = __ROR__(v404, 2);
- v411 = __ROL__(v449 ^ v444 ^ v454 ^ v452, 1);
- v452 = v411;
- v412 = v411 + v389 - 899497514;
- v413 = __ROL__(v409, 5);
- v414 = v413 + (v394 ^ v399 ^ v410) + v412;
- v415 = v409;
- v409 = __ROR__(v409, 2);
- v416 = __ROL__(v450 ^ v445 ^ v455 ^ v453, 1);
- v453 = v416;
- v417 = v416 + v394 - 899497514;
- v418 = __ROL__(v414, 5);
- v419 = v418 + (v399 ^ v404 ^ v415) + v417;
- v420 = v414;
- v414 = __ROR__(v414, 2);
- v421 = __ROL__(v451 ^ v446 ^ v456 ^ v454, 1);
- v454 = v421;
- v422 = v421 + v399 - 899497514;
- v423 = __ROL__(v419, 5);
- v424 = v423 + (v404 ^ v409 ^ v420) + v422;
- v425 = v419;
- v419 = __ROR__(v419, 2);
- v426 = __ROL__(v452 ^ v447 ^ v441 ^ v455, 1);
- v455 = v426;
- v427 = v426 + v404 - 899497514;
- v428 = __ROL__(v424, 5);
- v429 = v428 + (v409 ^ v414 ^ v425) + v427;
- v430 = v424;
- v424 = __ROR__(v424, 2);
- v431 = __ROL__(v453 ^ v448 ^ v442 ^ v456, 1);
- v456 = v431;
- v432 = v431 + v409 - 899497514;
- v433 = __ROL__(v429, 5);
- v434 = v433 + (v414 ^ v419 ^ v430) + v432;
- v5 = a1;
- v3 = v419 + *(_DWORD *)(a1 + 12);
- v435 = v429 + *(_DWORD *)(a1 + 4);
- v436 = v424;
- v437 = *(_DWORD *)a1;
- *(_DWORD *)(a1 + 12) = v3;
- v438 = v434 + v437;
- v6 = v414 + *(_DWORD *)(a1 + 16);
- v4 = v436 + *(_DWORD *)(a1 + 8);
- *(_DWORD *)a1 = v438;
- v439 = a2;
- *(_DWORD *)(a1 + 8) = v4;
- v7 = v439 + 64;
- result = v440;
- *(_DWORD *)(a1 + 16) = v6;
- *(_DWORD *)(a1 + 4) = v435;
- }
- while ( v7 < (unsigned int)result );
- return result;
- }
- //----- (0040696C) --------------------------------------------------------
- #error "4069FF: invalid basic block (funcsize=47)"
- #error "There were 2 decompilation failure(s) on 44 function(s)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement