Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <defs.h>
- //-------------------------------------------------------------------------
- // Function declarations
- int sub_298();
- int sub_340();
- void sub_3A8();
- _DWORD *__fastcall sub_3C8(unsigned int a1, int a2);
- _DWORD *sub_400();
- int sub_4AC();
- int sub_510();
- unsigned int __fastcall sub_6F0(unsigned int result);
- unsigned int __fastcall sub_70E(unsigned int result);
- int sub_72C();
- signed int sub_D68();
- signed int __fastcall sub_E24(int a1);
- signed int sub_E54();
- unsigned int sub_FFC();
- int __fastcall sub_13A8(int a1);
- int __fastcall sub_13D0(int a1);
- int __fastcall sub_13E4(int a1);
- unsigned int __fastcall sub_140C(int a1);
- int __fastcall sub_1438(int a1);
- unsigned int __fastcall sub_144C(int a1);
- unsigned int __fastcall sub_1482(int a1);
- int __fastcall sub_14A0(int a1, int a2);
- int __fastcall sub_151C(int a1, int a2);
- int sub_1580();
- unsigned int __fastcall sub_15B0(int a1, int a2, int a3, _BYTE *a4, int a5);
- int __fastcall sub_1610(int a1);
- unsigned int sub_1688();
- int sub_16B4();
- int __fastcall sub_1DA8(int a1);
- int __fastcall sub_1E04(int a1);
- int __fastcall sub_1E14(int result);
- int __fastcall sub_1E6C(int result);
- unsigned int __fastcall sub_1EC4(int a1);
- unsigned int __fastcall sub_1ED8(int a1);
- unsigned int __fastcall sub_1EEC(int a1);
- unsigned int __fastcall sub_1F00(int a1);
- signed int __fastcall sub_1F14(char a1, int a2, unsigned int a3, int a4, unsigned int a5);
- int __fastcall sub_1F58(int a1);
- int __fastcall sub_2004(int result, int a2);
- int __fastcall sub_2008(int result, int a2);
- int __fastcall sub_200E(int a1, int a2);
- int __fastcall sub_2014(int result, int a2);
- int __fastcall sub_2026(int result, int a2, int a3, signed int a4);
- int __fastcall sub_206A(int result, int a2, int a3, signed int a4);
- int __fastcall sub_20A0(int result, int a2, signed int a3);
- unsigned int __fastcall sub_20F8(unsigned int result);
- _DWORD *__fastcall sub_2158(_DWORD *result);
- int __fastcall sub_2162(int result);
- _DWORD *__fastcall sub_2174(_DWORD *result);
- int __fastcall sub_217E(int a1, int a2, int a3, int a4, int a5, int a6);
- unsigned int __fastcall sub_21A8(unsigned int result);
- unsigned int *__fastcall sub_2228(unsigned int *result, int a2, int a3, int a4);
- _DWORD *__fastcall sub_223A(_DWORD *result);
- _DWORD *__fastcall sub_2244(_DWORD *result);
- _DWORD *__fastcall sub_224E(_DWORD *result);
- int __fastcall sub_2258(int result, int a2);
- int __fastcall sub_225C(int result, int a2);
- int __fastcall sub_2270(int result, int a2);
- int __fastcall sub_2274(int result, int a2);
- int __fastcall sub_22A8(int result, int a2);
- int __fastcall sub_22DC(int result, int a2, int a3);
- int __fastcall sub_2468(int result, int a2);
- int __fastcall sub_249C(int result, int a2);
- int __fastcall sub_2510(int result, int a2);
- int __fastcall sub_2584(int result, int a2);
- int __fastcall sub_25F8(int result, int a2);
- int __fastcall sub_2650(int result, int a2, int a3);
- int __fastcall sub_2670(int result);
- int __fastcall sub_2688(int result, int a2);
- int __fastcall sub_26B8(int result, int a2);
- int __fastcall sub_26CA(int result, int a2);
- int __fastcall sub_26D6(int result, int a2);
- int __fastcall sub_26E2(int result, int a2);
- int __fastcall sub_26EE(int result, int a2);
- int __fastcall sub_26FA(int result);
- unsigned int __fastcall sub_2704(int a1);
- int __fastcall sub_2718(unsigned int a1);
- int __fastcall sub_2754(int (**a1)(void), int a2, int a3, int a4, int a5, int a6, __int16 a7);
- signed int __fastcall sub_2C70(int a1, int a2);
- int __fastcall sub_31A8(int a1);
- int __fastcall sub_31B8(char a1);
- void sub_31D0();
- void sub_31E0();
- signed int __fastcall sub_31F0(unsigned int a1);
- int __fastcall sub_320C(int result);
- int *__fastcall sub_3898(int *result, unsigned __int8 a2, unsigned int a3);
- //-------------------------------------------------------------------------
- // Data declarations
- _UNKNOWN loc_2732; // weak
- //----- (00000298) --------------------------------------------------------
- int sub_298()
- {
- sub_31F0(0x43u);
- sub_31F0(0x2Au);
- sub_2026(1073872896, 2, 0, 6144);
- sub_20A0(1073872896, 10, 6144);
- sub_2026(1073875968, 1, 0, 4);
- sub_2008(1073875968, 4);
- sub_6F0(1u);
- sub_2004(1073875968, 4);
- v200001C8 = sub_2754((int (**)(void))0x8003F00, 0x8003A93, 0x8003A53, 0x20000000, 3, 536871237, 128);
- return sub_2C70(v200001C8, 134218237);
- }
- //----- (00000340) --------------------------------------------------------
- int sub_340()
- {
- sub_1F58(134233740);
- sub_2718(0x600u);
- sub_2718(0x601u);
- sub_2718(0x602u);
- sub_2718(0x603u);
- sub_2718(0x604u);
- sub_2718(0x884u);
- sub_2718(0x88Cu);
- sub_2718(0x80Eu);
- sub_2718(0x80Fu);
- sub_2718(0x800u);
- return sub_2718(0x687u);
- }
- //----- (000003A8) --------------------------------------------------------
- void sub_3A8()
- {
- sub_31A8(168000);
- sub_31B8(4);
- sub_31E0();
- sub_31D0();
- }
- //----- (000003C8) --------------------------------------------------------
- _DWORD *__fastcall sub_3C8(unsigned int a1, int a2)
- {
- _DWORD *v2; // r4@1
- int v3; // r5@1
- v2 = (_DWORD *)a1;
- v3 = a2;
- sub_20F8(a1);
- sub_217E((int)v2, v3, 0, 0, 2048, 0);
- sub_2162((int)v2);
- sub_2174(v2);
- return sub_2158(v2);
- }
- //----- (00000400) --------------------------------------------------------
- _DWORD *sub_400()
- {
- sub_2026(1073872896, 2, 0, 224);
- sub_20A0(1073872896, 5, 224);
- sub_206A(1073872896, 0, 2, 160);
- sub_3C8(0x40013000u, 32);
- sub_2026(1073873920, 2, 0, 57344);
- sub_20A0(1073873920, 5, 57344);
- sub_206A(1073873920, 0, 2, 40960);
- sub_3C8(0x40003800u, 24);
- sub_2026(1073874944, 2, 0, 7168);
- sub_20A0(1073874944, 6, 7168);
- sub_206A(1073874944, 0, 2, 5120);
- return sub_3C8(0x40003C00u, 24);
- }
- //----- (000004AC) --------------------------------------------------------
- int sub_4AC()
- {
- sub_2026(1073872896, 2, 1, 1536);
- sub_20A0(1073872896, 7, 1536);
- sub_2688(1073811456, 115200);
- sub_26B8(1073811456, 8);
- sub_26CA(1073811456, 0);
- sub_26E2(1073811456, 12);
- sub_26D6(1073811456, 0);
- sub_26EE(1073811456, 0);
- return sub_26FA(1073811456);
- }
- //----- (00000510) --------------------------------------------------------
- int sub_510()
- {
- sub_2026(1073872896, 2, 0, 2);
- sub_206A(1073872896, 0, 0, 2);
- sub_20A0(1073872896, 1, 2);
- sub_21A8(0x40000000u);
- sub_2228((unsigned int *)0x40000000, 0, 0, 0);
- sub_2270(0x40000000, 1680);
- sub_2258(0x40000000, 0);
- sub_225C(0x40000000, 0);
- sub_223A((_DWORD *)0x40000000);
- sub_2244((_DWORD *)0x40000000);
- sub_2584(0x40000000, 2);
- sub_2274(0x40000000, 2);
- sub_2468(0x40000000, 2);
- sub_22A8(0x40000000, 2);
- sub_22DC(0x40000000, 2, 6);
- sub_249C(0x40000000, 2);
- sub_25F8(0x40000000, 2);
- sub_2650(0x40000000, 2, 840);
- sub_223A((_DWORD *)0x40000000);
- sub_2670(0x40000000);
- sub_224E((_DWORD *)0x40000000);
- return sub_2510(0x40000000, 2);
- }
- //----- (Generate Big Delay) --------------------------------------------------------
- unsigned int __fastcall sub_6F0(unsigned int result)
- {
- unsigned int i; // r3@1
- signed int v2; // r2@3
- for ( i = 0; i < result; ++i )
- {
- v2 = 42000;
- do
- --v2;
- while ( v2 );
- }
- return result;
- }
- //----- (Generate Small Delay) --------------------------------------------------------
- unsigned int __fastcall sub_70E(unsigned int result)
- {
- unsigned int i; // r3@1
- signed int v2; // r2@3
- for ( i = 0; i < result; ++i )
- {
- v2 = 39;
- do
- --v2;
- while ( v2 );
- }
- return result;
- }
- //----- (0000072C) --------------------------------------------------------
- int sub_72C()
- {
- return v2000291C;
- }
- //----- (00000D68) --------------------------------------------------------
- signed int sub_D68()
- {
- signed int v0; // r4@1
- int v1; // r5@1
- sub_6F0(0x64u);
- v0 = 134232932;
- sub_2026(1073873920, 1, 0, 4096);
- sub_2004(1073873920, 4096);
- sub_2026(1073876992, 1, 0, 2);
- sub_2004(1073876992, 2);
- v1 = 0;
- do
- {
- sub_2026(*(_DWORD *)(v1 + 134233004), 0, 0, *(_WORD *)(v1 + 134233008));
- sub_2026(*(_DWORD *)v0, 1, 0, *(_WORD *)(v0 + 4));
- sub_2026(*(_DWORD *)(v0 + 8), 1, 0, *(_WORD *)(v0 + 12));
- v1 += 8;
- sub_2026(*(_DWORD *)(v0 + 16), 1, 0, *(_WORD *)(v0 + 20));
- v0 += 24;
- }
- while ( v1 != 24 );
- sub_2026(1073873920, 0, 0, 256);
- sub_2026(1073875968, 0, 0, 8);
- sub_2026(1073873920, 1, 0, 16);
- sub_2004(1073873920, 16);
- return 1;
- }
- //----- (00000E24) --------------------------------------------------------
- signed int __fastcall sub_E24(int a1)
- {
- int v1; // r5@1
- int v2; // r7@1
- signed int v3; // r4@1
- v1 = a1;
- v2 = *(_WORD *)(8 * a1 + 0x8003BB0);
- v3 = 10;
- while ( !sub_200E(*(_DWORD *)(8 * v1 + 0x8003BAC), v2) )
- {
- sub_6F0(1u);
- if ( !--v3 )
- return 0;
- }
- return 1;
- }
- //----- (00000E54) --------------------------------------------------------
- signed int sub_E54()
- {
- signed int v0; // r5@1
- signed int v1; // r4@1
- int v2; // r6@1
- int v3; // r11@4
- int v4; // r2@5
- int v5; // r8@5
- int v6; // ST0C_4@6
- char v7; // r0@6
- int v8; // r3@6
- int v9; // r10@8
- int v10; // r8@9
- int v11; // r11@9
- int v12; // r2@9
- int v13; // ST08_4@11
- int v14; // r0@11
- char v15; // r3@16
- int v16; // r0@18
- int v17; // r3@19
- int v19; // [sp+0h] [bp-38h]@4
- char v20; // [sp+4h] [bp-34h]@4
- v0 = 536874176;
- sub_3898((int *)0x20000CC0, 0, 0xA5Cu);
- sub_D68();
- sub_1688();
- v1 = 536874176;
- v2 = 0;
- do
- {
- sub_16B4();
- if ( !sub_E24(v2) )
- *(_BYTE *)(v1 + 800) = 1;
- v20 = 4 * v2;
- v19 = 884 * v2;
- v3 = 0;
- do
- {
- v4 = (unsigned __int8)(v20 + v3);
- v5 = 0;
- do
- {
- v6 = v4;
- v7 = v20000098(v4, v5);
- v8 = v19 + 192 * v3 + 12 * v5++ + 536874176;
- *(_BYTE *)(v8 + 8) = v7;
- sub_6F0(1u);
- v4 = v6;
- }
- while ( v5 != 16 );
- ++v3;
- }
- while ( v3 != 4 );
- v9 = 0;
- do
- {
- v10 = v19 + 192 * v9 + 536874176;
- v11 = 0;
- v12 = (unsigned __int8)(v20 + v9);
- do
- {
- if ( *(_BYTE *)(v10 + 8) == 3 )
- {
- v13 = v12;
- v14 = v2000009C(v12, v11);
- v12 = v13;
- if ( v14 )
- ++*(_BYTE *)(v1 + 768);
- else
- *(_BYTE *)(v10 + 8) = 2;
- }
- ++v11;
- v10 += 12;
- }
- while ( v11 != 16 );
- ++v9;
- }
- while ( v9 != 4 );
- if ( *(_BYTE *)(v1 + 768) == 64 )
- v15 = 3;
- else
- v15 = 2;
- *(_BYTE *)(v1 + 800) = v15;
- *(_BYTE *)(v1 + 770) = 26;
- *(_BYTE *)(v1 + 773) = 55;
- *(_BYTE *)(v1 + 774) = 50;
- *(_BYTE *)(v1 + 771) = 0;
- *(_BYTE *)(v1 + 772) = sub_1610(v2);
- *(_DWORD *)(v1 + 788) = sub_72C() + 5000;
- v16 = sub_72C();
- ++v2;
- *(_DWORD *)(v1 + 792) = v16;
- *(_DWORD *)(v1 + 784) = 0;
- *(_DWORD *)(v1 + 776) = 0;
- *(_DWORD *)(v1 + 796) = 0;
- v1 += 884;
- }
- while ( v2 != 3 );
- v17 = v200016A8 + v20001334 + v20000FC0;
- do
- {
- if ( v17 > 181 )
- {
- *(_BYTE *)(v0 + 769) = 64;
- *(_BYTE *)(v0 + 800) = 3;
- }
- else
- {
- LOBYTE(v16) = *(_BYTE *)(v0 + 768);
- }
- if ( v17 <= 181 )
- *(_BYTE *)(v0 + 769) = v16;
- v0 += 884;
- }
- while ( v0 != 536876828 );
- return 1;
- }
- // 20000098: using guessed type int (__fastcall *)(_DWORD, _DWORD);
- // 2000009C: using guessed type int (__fastcall *)(_DWORD, _DWORD);
- //----- (00000FFC) --------------------------------------------------------
- unsigned int sub_FFC()
- {
- signed int v0; // r11@1
- signed int v1; // r9@1
- signed int v2; // r7@1
- int v3; // r6@1
- int v4; // r8@4
- int v5; // r10@5
- int v6; // r4@5
- int v7; // r3@7
- int v8; // r5@9
- int v9; // r2@15
- int v10; // r3@16
- int v11; // r0@18
- int v12; // r2@18
- void (__cdecl *v13)(int); // r3@19
- signed int v14; // r4@21
- signed int v15; // r5@21
- signed int v16; // r6@21
- int v17; // r8@21
- int v18; // r0@23
- int v19; // r3@23
- int v20; // r10@26
- int v21; // r9@27
- int v22; // r7@27
- unsigned int result; // r0@33
- int v24; // r1@36
- int v25; // r0@36
- unsigned int v26; // r0@53
- int v27; // r1@53
- char v28; // cf@53
- int v29; // r0@53
- unsigned int v30; // r0@55
- int v31; // [sp+0h] [bp-38h]@27
- v0 = 536874176;
- v1 = 536876828;
- v2 = 536874176;
- v3 = 0;
- do
- {
- if ( *(_BYTE *)(v2 + 800) == 5 && *(_DWORD *)(v2 + 780) )
- {
- v4 = 0;
- do
- {
- v5 = 0;
- v6 = 884 * v3 + 192 * v4 + 536874176;
- do
- {
- if ( (unsigned int)*(_BYTE *)(v6 + 8) - 2 <= 1 )
- {
- v7 = 0;
- do
- {
- if ( !*(_BYTE *)(v1 + 12 * v7 + 11) )
- {
- v8 = 12 * v7 + 1536 * v3 + 536876828;
- goto LABEL_10;
- }
- ++v7;
- }
- while ( v7 != 128 );
- v8 = v1;
- LABEL_10:
- if ( v200000B4((unsigned __int8)(4 * v3 + v4), v5, v8) <= 0 )
- {
- ++*(_DWORD *)(v6 + 4);
- }
- else
- {
- *(_BYTE *)(v8 + 11) = 1;
- *(_DWORD *)(v2 + 784) = sub_72C() + 5000;
- ++*(_DWORD *)v6;
- }
- }
- ++v5;
- v6 += 12;
- }
- while ( v5 != 16 );
- ++v4;
- }
- while ( v4 != 4 );
- }
- ++v3;
- v2 += 884;
- v1 += 1536;
- }
- while ( v3 != 3 );
- v9 = v20000CB8;
- if ( v20000CB8 != v20000CBC )
- {
- v10 = (v20000CB8 + 1) & 7;
- if ( v20000CB8 + 1 <= 0 )
- v10 = -(-(v20000CB8 + 1) & 7);
- v20000CB8 = v10;
- v11 = 220 * v9 + 536872408;
- v12 = *(_BYTE *)(220 * v9 + 0x200005D9);
- if ( (unsigned int)(v12 - 1) <= 6 )
- {
- v13 = *(void (__cdecl **)(int))(8 * v12 + 0x8003B28);
- if ( v13 )
- v13(v11);
- }
- }
- v14 = 134232932;
- v15 = 536874176;
- v16 = 134232932;
- v17 = 0;
- do
- {
- if ( (unsigned int)sub_72C() >= *(_DWORD *)(v15 + 788) )
- {
- *(_BYTE *)(v15 + 772) = sub_1610(v17);
- v18 = sub_72C();
- v19 = *(_BYTE *)(v15 + 800);
- *(_DWORD *)(v15 + 788) = v18 + 10000;
- if ( v19 == 4 )
- {
- if ( *(_BYTE *)(v15 + 772) < (signed int)*(_BYTE *)(v15 + 773) )
- *(_BYTE *)(v15 + 800) = 5;
- }
- else if ( v19 == 5 && *(_BYTE *)(v15 + 772) > (signed int)*(_BYTE *)(v15 + 773) )
- {
- *(_BYTE *)(v15 + 800) = 4;
- sub_2004(*(_DWORD *)v16, *(_WORD *)(v16 + 4));
- sub_2004(*(_DWORD *)(v16 + 8), *(_WORD *)(v16 + 12));
- v20 = 0;
- do
- {
- v31 = (unsigned __int8)(4 * v17 + v20);
- v21 = 0;
- v22 = 884 * v17 + 192 * v20 + 536874176;
- do
- {
- if ( (unsigned int)*(_BYTE *)(v22 + 8) - 2 <= 1 )
- {
- v200000B0(v31, v21);
- v20000094(v31, v21);
- *(_BYTE *)(v22 + 9) = 0;
- }
- ++v21;
- v22 += 12;
- }
- while ( v21 != 16 );
- ++v20;
- }
- while ( v20 != 4 );
- }
- }
- ++v17;
- v15 += 884;
- v16 += 24;
- }
- while ( v17 != 3 );
- do
- {
- result = sub_72C();
- if ( result >= *(_DWORD *)(v0 + 792) )
- {
- *(_DWORD *)(v0 + 792) = sub_72C() + 1000;
- result = sub_72C();
- if ( result >= *(_DWORD *)(v0 + 796) )
- {
- switch ( *(_BYTE *)(v0 + 800) )
- {
- case 0:
- sub_2008(*(_DWORD *)v14, *(_WORD *)(v14 + 4));
- goto LABEL_48;
- case 1:
- sub_2014(*(_DWORD *)v14, *(_WORD *)(v14 + 4));
- goto LABEL_48;
- case 2:
- sub_2004(*(_DWORD *)v14, *(_WORD *)(v14 + 4));
- LABEL_48:
- sub_2008(*(_DWORD *)(v14 + 8), *(_WORD *)(v14 + 12));
- v24 = *(_WORD *)(v14 + 20);
- v25 = *(_DWORD *)(v14 + 16);
- goto LABEL_49;
- case 3:
- sub_2004(*(_DWORD *)v14, *(_WORD *)(v14 + 4));
- goto LABEL_36;
- case 5:
- sub_2004(*(_DWORD *)v14, *(_WORD *)(v14 + 4));
- v26 = sub_72C();
- v27 = *(_WORD *)(v14 + 20);
- v28 = v26 >= *(_DWORD *)(v0 + 776) + 5000;
- v29 = *(_DWORD *)(v14 + 16);
- if ( v28 )
- {
- sub_2014(v29, v27);
- *(_DWORD *)(v0 + 784) = 0;
- }
- else
- {
- sub_2004(v29, v27);
- }
- v30 = sub_72C();
- v24 = *(_WORD *)(v14 + 12);
- v28 = v30 >= *(_DWORD *)(v0 + 784);
- v25 = *(_DWORD *)(v14 + 8);
- if ( !v28 )
- goto LABEL_37;
- LABEL_49:
- result = sub_2008(v25, v24);
- break;
- case 4:
- sub_2014(*(_DWORD *)v14, *(_WORD *)(v14 + 4));
- sub_2014(*(_DWORD *)(v14 + 8), *(_WORD *)(v14 + 12));
- result = sub_2004(*(_DWORD *)(v14 + 16), *(_WORD *)(v14 + 20));
- break;
- default:
- break;
- }
- }
- else
- {
- sub_2014(*(_DWORD *)v14, *(_WORD *)(v14 + 4));
- LABEL_36:
- sub_2014(*(_DWORD *)(v14 + 8), *(_WORD *)(v14 + 12));
- v24 = *(_WORD *)(v14 + 20);
- v25 = *(_DWORD *)(v14 + 16);
- LABEL_37:
- result = sub_2014(v25, v24);
- }
- }
- v14 += 24;
- v0 += 884;
- }
- while ( v14 != 134233004 );
- return result;
- }
- // 20000094: using guessed type int (__fastcall *)(_DWORD, _DWORD);
- // 200000B0: using guessed type int (__fastcall *)(_DWORD, _DWORD);
- // 200000B4: using guessed type int (__fastcall *)(_DWORD, _DWORD, _DWORD);
- //----- (000013A8) --------------------------------------------------------
- int __fastcall sub_13A8(int a1)
- {
- int v1; // r0@1
- signed int v2; // r5@1
- int v3; // r4@1
- v1 = 16 * a1 + 134233148;
- v2 = *(_WORD *)(v1 + 12);
- v3 = *(_DWORD *)(v1 + 8);
- sub_2026(*(_DWORD *)(v1 + 8), 1, 0, v2);
- return sub_2004(v3, v2);
- }
- //----- (000013D0) --------------------------------------------------------
- int __fastcall sub_13D0(int a1)
- {
- return sub_2004(*(_DWORD *)(16 * a1 + 0x8003C3C), *(_WORD *)(16 * a1 + 0x8003C40));
- }
- //----- (000013E4) --------------------------------------------------------
- int __fastcall sub_13E4(int a1)
- {
- int v1; // r0@1
- signed int v2; // r5@1
- int v3; // r4@1
- v1 = 16 * a1 + 134233148;
- v2 = *(_WORD *)(v1 + 12);
- v3 = *(_DWORD *)(v1 + 8);
- sub_2026(*(_DWORD *)(v1 + 8), 1, 0, v2);
- return sub_2008(v3, v2);
- }
- //----- (0000140C) --------------------------------------------------------
- unsigned int __fastcall sub_140C(int a1)
- {
- int v1; // r4@1
- v1 = a1;
- sub_13E4(a1);
- sub_70E(1u);
- sub_13D0(v1);
- sub_70E(1u);
- sub_13A8(v1);
- return sub_70E(1u);
- }
- //----- (00001438) --------------------------------------------------------
- int __fastcall sub_1438(int a1)
- {
- return sub_2008(*(_DWORD *)(16 * a1 + 0x8003C3C), *(_WORD *)(16 * a1 + 0x8003C40));
- }
- //----- (0000144C) --------------------------------------------------------
- unsigned int __fastcall sub_144C(int a1)
- {
- int v1; // r4@1
- v1 = a1;
- sub_13A8(a1);
- sub_70E(1u);
- sub_13D0(v1);
- sub_70E(1u);
- sub_13E4(v1);
- sub_70E(1u);
- sub_1438(v1);
- return sub_70E(1u);
- }
- //----- (00001482) --------------------------------------------------------
- unsigned int __fastcall sub_1482(int a1)
- {
- int v1; // r4@1
- v1 = a1;
- sub_13D0(a1);
- sub_70E(1u);
- sub_1438(v1);
- return sub_70E(1u);
- }
- //----- (000014A0) --------------------------------------------------------
- int __fastcall sub_14A0(int a1, int a2)
- {
- int v2; // r7@1
- signed int v3; // r9@1
- int v4; // r4@1
- int v5; // r8@1
- int v6; // r6@1
- int v7; // r5@1
- v2 = *(_DWORD *)(16 * a1 + 0x8003C44);
- v3 = *(_WORD *)(16 * a1 + 0x8003C48);
- v4 = a1;
- v5 = a2;
- sub_2026(*(_DWORD *)(16 * a1 + 0x8003C44), 0, 0, v3);
- v6 = 0;
- v7 = 0;
- do
- {
- sub_70E(1u);
- sub_13D0(v4);
- sub_70E(1u);
- if ( sub_200E(v2, v3) )
- v7 = (unsigned __int8)(v7 | (128 >> v6));
- ++v6;
- sub_1438(v4);
- }
- while ( v6 != 8 );
- if ( v5 )
- sub_13A8(v4);
- else
- sub_13E4(v4);
- sub_1482(v4);
- return v7;
- }
- //----- (0000151C) --------------------------------------------------------
- int __fastcall sub_151C(int a1, int a2)
- {
- int v2; // r4@1
- int v3; // r6@1
- int v4; // r5@1
- int v5; // r5@5
- signed int v6; // r6@5
- v2 = a1;
- v3 = a2;
- v4 = 0;
- do
- {
- if ( (128 >> v4) & v3 )
- sub_13A8(v2);
- else
- sub_13E4(v2);
- ++v4;
- sub_1482(v2);
- }
- while ( v4 != 8 );
- v5 = *(_DWORD *)(16 * v2 + 0x8003C44);
- v6 = *(_WORD *)(16 * v2 + 0x8003C48);
- sub_2026(*(_DWORD *)(16 * v2 + 0x8003C44), 0, 0, v6);
- sub_13D0(v2);
- sub_70E(1u);
- sub_200E(v5, v6);
- return sub_1438(v2);
- }
- //----- (00001580) --------------------------------------------------------
- int sub_1580()
- {
- signed int v0; // r4@1
- int result; // r0@2
- v0 = 134233148;
- do
- {
- sub_2026(*(_DWORD *)v0, 1, 0, *(_WORD *)(v0 + 4));
- v0 += 16;
- result = sub_2026(*(_DWORD *)(v0 - 8), 1, 0, *(_WORD *)(v0 - 4));
- }
- while ( v0 != 134233196 );
- return result;
- }
- //----- (000015B0) --------------------------------------------------------
- unsigned int __fastcall sub_15B0(int a1, int a2, int a3, _BYTE *a4, int a5)
- {
- int v5; // r4@1
- int v6; // r7@1
- int v7; // r8@1
- _BYTE *v8; // r6@1
- _BYTE *v9; // r7@1
- unsigned int v10; // r5@1
- v5 = a1;
- v6 = a2;
- v7 = a3;
- v8 = a4;
- sub_144C(a1);
- sub_151C(v5, v6 & 0xFE);
- sub_151C(v5, v7);
- sub_144C(v5);
- sub_151C(v5, v6 | 1);
- v9 = v8;
- v10 = a5 - 1;
- while ( v10 > v9 - v8 )
- *v9++ = sub_14A0(v5, 0);
- v8[v10] = sub_14A0(v5, 1);
- return sub_140C(v5);
- }
- //----- (00001610) --------------------------------------------------------
- int __fastcall sub_1610(int a1)
- {
- int v1; // r4@1
- int v2; // r3@2
- signed int v3; // r0@3
- int v4; // r4@3
- int v5; // r2@3
- signed int v6; // r3@3
- char v8; // [sp+Fh] [bp-11h]@1
- v1 = a1;
- sub_15B0(a1, 144, 0, &v8, 1);
- if ( (unsigned __int8)(v8 - 1) <= 0x7Du )
- {
- v2 = *(_DWORD *)(4 * v1 + 0x20002930);
- *(_BYTE *)(5 * v1 + 536881440 + v2) = v8;
- *(_DWORD *)(4 * v1 + 0x20002930) = (v2 + 1) % 5;
- }
- v3 = 0;
- v4 = 5 * v1 + 536881440;
- v5 = 0;
- v6 = 0;
- do
- {
- if ( *(_BYTE *)(v4 + v5) )
- {
- v6 += *(_BYTE *)(v4 + v5);
- ++v3;
- }
- ++v5;
- }
- while ( v5 != 5 );
- if ( !v3 )
- v3 = 1;
- return (char)(v6 / v3);
- }
- //----- (00001688) --------------------------------------------------------
- unsigned int sub_1688()
- {
- sub_2004(1073876992, 2);
- sub_6F0(1u);
- sub_2008(1073876992, 2);
- return sub_6F0(2u);
- }
- //----- (000016B4) --------------------------------------------------------
- int sub_16B4()
- {
- int v0; // r5@1
- int v1; // r4@2
- int v2; // r7@3
- signed int v3; // r8@3
- int v4; // r7@3
- signed int v5; // r8@3
- v0 = 0;
- do
- {
- v1 = v0 + 134233196;
- do
- {
- v2 = *(_DWORD *)(v1 + 4);
- v3 = *(_WORD *)(v1 + 8);
- sub_2026(*(_DWORD *)(v1 + 4), 1, 0, v3);
- sub_206A(v2, 0, 2, v3);
- sub_2004(v2, v3);
- v4 = *(_DWORD *)(v1 + 20);
- v5 = *(_WORD *)(v1 + 24);
- sub_2026(*(_DWORD *)(v1 + 20), 1, 0, v5);
- sub_206A(v4, 0, 2, v5);
- v1 += 8;
- sub_2008(v4, v5);
- }
- while ( v1 != v0 + 134233212 );
- v0 += 36;
- }
- while ( v0 != 432 );
- v2000293C = v8003C80;
- v20002940 = v8003C84;
- return sub_2004(1073876992, 32);
- }
- //----- (00001DA8) --------------------------------------------------------
- int __fastcall sub_1DA8(int a1)
- {
- int result; // r0@2
- unsigned int *v2; // r3@4
- switch ( a1 )
- {
- case 0:
- return (v40023800 >> 25) & 1;
- case 3:
- return (v40023800 >> 17) & 1;
- case 4:
- v2 = (unsigned int *)1073887232;
- goto LABEL_5;
- case 5:
- v2 = (unsigned int *)1073887344;
- goto LABEL_5;
- case 6:
- v2 = (unsigned int *)1073887348;
- LABEL_5:
- result = (*v2 >> 1) & 1;
- break;
- case 1:
- result = (v40023800 >> 29) & 1;
- break;
- case 2:
- result = (v40023800 >> 27) & 1;
- break;
- default:
- result = 0;
- break;
- }
- return result;
- }
- //----- (00001E04) --------------------------------------------------------
- int __fastcall sub_1E04(int a1)
- {
- int v1; // r2@1
- int result; // r0@2
- v1 = a1;
- do
- result = sub_1DA8(v1);
- while ( !result );
- return result;
- }
- //----- (00001E14) --------------------------------------------------------
- int __fastcall sub_1E14(int result)
- {
- int *v1; // r2@2
- int v2; // r3@2
- switch ( result )
- {
- case 0:
- v1 = (int *)1073887232;
- v2 = v40023800 | 0x1000000;
- goto LABEL_3;
- case 3:
- v1 = (int *)1073887232;
- v2 = v40023800 | 0x10000;
- goto LABEL_3;
- case 4:
- v1 = (int *)1073887232;
- goto LABEL_6;
- case 5:
- v1 = (int *)1073887344;
- goto LABEL_6;
- case 6:
- v1 = (int *)1073887348;
- LABEL_6:
- v2 = *v1 | 1;
- goto LABEL_3;
- case 1:
- v1 = (int *)1073887232;
- v2 = v40023800 | 0x10000000;
- goto LABEL_3;
- case 2:
- v1 = (int *)1073887232;
- v2 = v40023800 | 0x4000000;
- LABEL_3:
- *v1 = v2;
- break;
- default:
- return result;
- }
- return result;
- }
- //----- (00001E6C) --------------------------------------------------------
- int __fastcall sub_1E6C(int result)
- {
- unsigned int *v1; // r2@2
- unsigned int v2; // r3@2
- switch ( result )
- {
- case 0:
- v1 = (unsigned int *)1073887232;
- v2 = v40023800 & 0xFEFFFFFF;
- goto LABEL_3;
- case 3:
- v1 = (unsigned int *)1073887232;
- v2 = v40023800 & 0xFFFEFFFF;
- goto LABEL_3;
- case 4:
- v1 = (unsigned int *)1073887232;
- goto LABEL_6;
- case 5:
- v1 = (unsigned int *)1073887344;
- goto LABEL_6;
- case 6:
- v1 = (unsigned int *)1073887348;
- LABEL_6:
- v2 = *v1 & 0xFFFFFFFE;
- goto LABEL_3;
- case 1:
- v1 = (unsigned int *)1073887232;
- v2 = v40023800 & 0xEFFFFFFF;
- goto LABEL_3;
- case 2:
- v1 = (unsigned int *)1073887232;
- v2 = v40023800 & 0xFBFFFFFF;
- LABEL_3:
- *v1 = v2;
- break;
- default:
- return result;
- }
- return result;
- }
- //----- (00001EC4) --------------------------------------------------------
- unsigned int __fastcall sub_1EC4(int a1)
- {
- unsigned int result; // r0@1
- result = a1 | v40023808 & 0xFFFFFFFC;
- v40023808 = result;
- return result;
- }
- //----- (00001ED8) --------------------------------------------------------
- unsigned int __fastcall sub_1ED8(int a1)
- {
- unsigned int result; // r0@1
- result = v40023808 & 0xFFFF1FFF | (a1 << 13);
- v40023808 = result;
- return result;
- }
- //----- (00001EEC) --------------------------------------------------------
- unsigned int __fastcall sub_1EEC(int a1)
- {
- unsigned int result; // r0@1
- result = v40023808 & 0xFFFFE3FF | (a1 << 10);
- v40023808 = result;
- return result;
- }
- //----- (00001F00) --------------------------------------------------------
- unsigned int __fastcall sub_1F00(int a1)
- {
- unsigned int result; // r0@1
- result = v40023808 & 0xFFFFFF0F | 16 * a1;
- v40023808 = result;
- return result;
- }
- //----- (00001F14) --------------------------------------------------------
- signed int __fastcall sub_1F14(char a1, int a2, unsigned int a3, int a4, unsigned int a5)
- {
- int v5; // r3@1
- signed int result; // r0@1
- int v7; // r3@1
- unsigned int v8; // r1@1
- signed int v9; // r2@1
- int v10; // r1@1
- v5 = (a4 << 24) & 0xF000000 | 0x400000 | a1 & 0x3F;
- result = 32704;
- v7 = v5 | (a2 << 6) & 0x7FC0;
- v8 = a3 >> 1;
- v9 = a5;
- v10 = (v8 - 1) << 16;
- if ( a5 < 2 )
- v9 = 2;
- v40023804 = v7 | v10 & 0x30000 | (v9 << 28) & 0x70000000;
- return result;
- }
- //----- (00001F58) --------------------------------------------------------
- int __fastcall sub_1F58(int a1)
- {
- int v1; // r4@1
- int v2; // r0@1
- v1 = a1;
- sub_1E14(4);
- sub_1E04(4);
- sub_1EC4(0);
- sub_1E14(3);
- sub_1E04(3);
- v2 = *(_BYTE *)(v1 + 15);
- if ( *(_BYTE *)(v1 + 15) )
- v2 = 1;
- sub_320C(v2);
- sub_1F00(*(_BYTE *)(v1 + 12));
- sub_1EEC(*(_BYTE *)(v1 + 13));
- sub_1ED8(*(_BYTE *)(v1 + 14));
- sub_1F14(*(_BYTE *)v1, *(_WORD *)(v1 + 2), *(_BYTE *)(v1 + 4), *(_BYTE *)(v1 + 5), *(_BYTE *)(v1 + 6));
- v40023800 |= 0x1000000u;
- sub_1E04(0);
- sub_2704(*(_DWORD *)(v1 + 8));
- sub_1EC4(2);
- while ( ((v40023808 >> 2) & 3) != 2 )
- ;
- v20000138 = *(_DWORD *)(v1 + 16);
- v2000013C = *(_DWORD *)(v1 + 20);
- v20000140 = *(_DWORD *)(v1 + 24);
- return sub_1E6C(4);
- }
- //----- (00002004) --------------------------------------------------------
- int __fastcall sub_2004(int result, int a2)
- {
- *(_DWORD *)(result + 24) = a2;
- return result;
- }
- //----- (00002008) --------------------------------------------------------
- int __fastcall sub_2008(int result, int a2)
- {
- *(_DWORD *)(result + 24) = a2 << 16;
- return result;
- }
- //----- (0000200E) --------------------------------------------------------
- int __fastcall sub_200E(int a1, int a2)
- {
- return *(_DWORD *)(a1 + 16) & a2;
- }
- //----- (00002014) --------------------------------------------------------
- int __fastcall sub_2014(int result, int a2)
- {
- *(_DWORD *)(result + 24) = a2 & ~*(_DWORD *)(result + 20) | ((*(_DWORD *)(result + 20) & a2) << 16);
- return result;
- }
- //----- (00002026) --------------------------------------------------------
- int __fastcall sub_2026(int result, int a2, int a3, signed int a4)
- {
- int v4; // r5@1
- int v5; // r4@1
- int v6; // r6@1
- int v7; // lr@3
- v4 = *(_DWORD *)result;
- v5 = *(_DWORD *)(result + 12);
- v6 = 0;
- do
- {
- if ( (a4 >> v6) & 1 )
- {
- v7 = ~(3 << 2 * v6);
- v4 = (a2 << 2 * v6) | v7 & v4;
- v5 = v7 & v5 | (a3 << 2 * v6);
- }
- ++v6;
- }
- while ( v6 != 16 );
- *(_DWORD *)result = v4;
- *(_DWORD *)(result + 12) = v5;
- return result;
- }
- //----- (0000206A) --------------------------------------------------------
- int __fastcall sub_206A(int result, int a2, int a3, signed int a4)
- {
- char v4; // zf@1
- int v5; // r1@1
- int v6; // r1@2
- int v7; // r1@4
- int v8; // r4@4
- v4 = a2 == 1;
- v5 = *(_DWORD *)(result + 4);
- if ( v4 )
- v6 = v5 | a4;
- else
- v6 = v5 & ~a4;
- *(_DWORD *)(result + 4) = v6;
- v7 = *(_DWORD *)(result + 8);
- v8 = 0;
- do
- {
- if ( (a4 >> v8) & 1 )
- v7 = v7 & ~(3 << 2 * v8) | (a3 << 2 * v8);
- ++v8;
- }
- while ( v8 != 16 );
- *(_DWORD *)(result + 8) = v7;
- return result;
- }
- //----- (000020A0) --------------------------------------------------------
- int __fastcall sub_20A0(int result, int a2, signed int a3)
- {
- int v3; // r7@1
- int v4; // r6@1
- int v5; // r3@1
- int v6; // r3@5
- v3 = *(_DWORD *)(result + 32);
- v4 = *(_DWORD *)(result + 36);
- v5 = 0;
- do
- {
- if ( (a3 >> v5) & 1 )
- v3 = v3 & ~(15 << 4 * v5) | (a2 << 4 * v5);
- ++v5;
- }
- while ( v5 != 8 );
- v6 = 0;
- do
- {
- if ( (a3 >> (v6 + 8)) & 1 )
- v4 = v4 & ~(15 << 4 * v6) | (a2 << 4 * v6);
- ++v6;
- }
- while ( v6 != 8 );
- *(_DWORD *)(result + 32) = v3;
- *(_DWORD *)(result + 36) = v4;
- return result;
- }
- //----- (000020F8) --------------------------------------------------------
- unsigned int __fastcall sub_20F8(unsigned int result)
- {
- unsigned int v1; // r0@9
- _DWORD *v2; // r3@11
- int v3; // r1@11
- signed int v4; // r0@11
- if ( result == 1073819648 )
- {
- v1 = 1164;
- LABEL_11:
- v2 = (_DWORD *)((v1 >> 5) + 1073887232);
- v3 = *(_DWORD *)((v1 >> 5) + 1073887232);
- v4 = 1 << (v1 & 0x1F);
- *v2 = v3 | v4;
- result = *v2 & ~v4;
- *v2 = result;
- return result;
- }
- if ( result > 0x40013000 )
- {
- if ( result == 1073827840 )
- {
- v1 = 1172;
- }
- else if ( result == 1073828864 )
- {
- v1 = 1173;
- }
- else
- {
- if ( result != 1073820672 )
- return result;
- v1 = 1165;
- }
- goto LABEL_11;
- }
- if ( result == 1073756160 )
- {
- v1 = 1038;
- goto LABEL_11;
- }
- if ( result == 1073757184 )
- {
- v1 = 1039;
- goto LABEL_11;
- }
- return result;
- }
- //----- (00002158) --------------------------------------------------------
- _DWORD *__fastcall sub_2158(_DWORD *result)
- {
- *result |= 0x40u;
- return result;
- }
- //----- (00002162) --------------------------------------------------------
- int __fastcall sub_2162(int result)
- {
- *(_DWORD *)result |= 0x200u;
- *(_DWORD *)(result + 4) &= 0xFFFFFFFB;
- return result;
- }
- //----- (00002174) --------------------------------------------------------
- _DWORD *__fastcall sub_2174(_DWORD *result)
- {
- *result |= 0x100u;
- return result;
- }
- //----- (0000217E) --------------------------------------------------------
- int __fastcall sub_217E(int a1, int a2, int a3, int a4, int a5, int a6)
- {
- int v6; // r4@1
- v6 = a6 | 4 | a5 | a4 | a3 | a2 | *(_DWORD *)a1 & 0x3040;
- *(_DWORD *)(a1 + 4) |= 4u;
- *(_DWORD *)a1 = v6;
- return 0;
- }
- //----- (000021A8) --------------------------------------------------------
- unsigned int __fastcall sub_21A8(unsigned int result)
- {
- if ( result == 1073744896 )
- goto LABEL_14;
- if ( result > 0x40000C00 )
- {
- if ( result == 1073746944 )
- goto LABEL_14;
- if ( result <= 0x40001400 )
- {
- if ( result == 1073745920 )
- goto LABEL_14;
- return result;
- }
- if ( result != 1073807360 && result != 1073808384 )
- return result;
- LABEL_14:
- JUMPOUT(&loc_2732);
- }
- if ( result == 1073742848 || result == 1073743872 || result == 0x40000000 )
- goto LABEL_14;
- return result;
- }
- //----- (00002228) --------------------------------------------------------
- unsigned int *__fastcall sub_2228(unsigned int *result, int a2, int a3, int a4)
- {
- *result = a4 | a3 | a2 | *result & 0xFFFFFC8F;
- return result;
- }
- //----- (0000223A) --------------------------------------------------------
- _DWORD *__fastcall sub_223A(_DWORD *result)
- {
- *result |= 0x80u;
- return result;
- }
- //----- (00002244) --------------------------------------------------------
- _DWORD *__fastcall sub_2244(_DWORD *result)
- {
- *result &= 0xFFFFFFF7;
- return result;
- }
- //----- (0000224E) --------------------------------------------------------
- _DWORD *__fastcall sub_224E(_DWORD *result)
- {
- *result |= 1u;
- return result;
- }
- //----- (00002258) --------------------------------------------------------
- int __fastcall sub_2258(int result, int a2)
- {
- *(_DWORD *)(result + 40) = a2;
- return result;
- }
- //----- (0000225C) --------------------------------------------------------
- int __fastcall sub_225C(int result, int a2)
- {
- if ( (result & 0xFFFFFBFF) == 1073807360 )
- *(_DWORD *)(result + 48) = a2;
- return result;
- }
- //----- (00002270) --------------------------------------------------------
- int __fastcall sub_2270(int result, int a2)
- {
- *(_DWORD *)(result + 44) = a2;
- return result;
- }
- //----- (00002274) --------------------------------------------------------
- int __fastcall sub_2274(int result, int a2)
- {
- unsigned int v2; // r3@2
- unsigned int v3; // r3@5
- switch ( a2 )
- {
- case 0:
- v2 = *(_DWORD *)(result + 24) & 0xFFFFFF7F;
- goto LABEL_3;
- case 2:
- v2 = *(_DWORD *)(result + 24) & 0xFFFF7FFF;
- LABEL_3:
- *(_DWORD *)(result + 24) = v2;
- return result;
- case 4:
- v3 = *(_DWORD *)(result + 28) & 0xFFFFFF7F;
- goto LABEL_6;
- default:
- return result;
- case 6:
- v3 = *(_DWORD *)(result + 28) & 0xFFFF7FFF;
- LABEL_6:
- *(_DWORD *)(result + 28) = v3;
- break;
- }
- return result;
- }
- //----- (000022A8) --------------------------------------------------------
- int __fastcall sub_22A8(int result, int a2)
- {
- unsigned int v2; // r3@2
- unsigned int v3; // r3@5
- switch ( a2 )
- {
- case 0:
- v2 = *(_DWORD *)(result + 24) & 0xFFFFFFFB;
- goto LABEL_3;
- case 2:
- v2 = *(_DWORD *)(result + 24) & 0xFFFFFBFF;
- LABEL_3:
- *(_DWORD *)(result + 24) = v2;
- return result;
- case 4:
- v3 = *(_DWORD *)(result + 28) & 0xFFFFFFFB;
- goto LABEL_6;
- default:
- return result;
- case 6:
- v3 = *(_DWORD *)(result + 28) & 0xFFFFFBFF;
- LABEL_6:
- *(_DWORD *)(result + 28) = v3;
- break;
- }
- return result;
- }
- //----- (000022DC) --------------------------------------------------------
- int __fastcall sub_22DC(int result, int a2, int a3)
- {
- int v3; // r3@3
- int v4; // r3@21
- switch ( a2 )
- {
- case 0:
- *(_DWORD *)(result + 24) &= 0xFFFFFFFC;
- *(_DWORD *)(result + 24) = *(_DWORD *)(result + 24);
- *(_DWORD *)(result + 24) &= 0xFFFFFF8F;
- switch ( a3 )
- {
- case 1:
- v3 = *(_DWORD *)(result + 24) | 0x10;
- goto LABEL_4;
- case 2:
- v3 = *(_DWORD *)(result + 24) | 0x20;
- goto LABEL_4;
- case 3:
- v3 = *(_DWORD *)(result + 24) | 0x30;
- goto LABEL_4;
- case 4:
- v3 = *(_DWORD *)(result + 24) | 0x40;
- goto LABEL_4;
- case 5:
- v3 = *(_DWORD *)(result + 24) | 0x50;
- goto LABEL_4;
- case 6:
- v3 = *(_DWORD *)(result + 24) | 0x60;
- goto LABEL_4;
- case 7:
- v3 = *(_DWORD *)(result + 24) | 0x70;
- goto LABEL_4;
- case 0:
- goto LABEL_12;
- default:
- return result;
- }
- case 2:
- *(_DWORD *)(result + 24) &= 0xFFFFFCFF;
- *(_DWORD *)(result + 24) = *(_DWORD *)(result + 24);
- *(_DWORD *)(result + 24) &= 0xFFFF8FFF;
- switch ( a3 )
- {
- case 0:
- LABEL_12:
- v3 = *(_DWORD *)(result + 24);
- goto LABEL_4;
- case 1:
- v3 = *(_DWORD *)(result + 24) | 0x1000;
- goto LABEL_4;
- case 2:
- v3 = *(_DWORD *)(result + 24) | 0x2000;
- goto LABEL_4;
- case 3:
- v3 = *(_DWORD *)(result + 24) | 0x3000;
- goto LABEL_4;
- case 4:
- v3 = *(_DWORD *)(result + 24) | 0x4000;
- goto LABEL_4;
- case 5:
- v3 = *(_DWORD *)(result + 24) | 0x5000;
- goto LABEL_4;
- case 6:
- v3 = *(_DWORD *)(result + 24) | 0x6000;
- goto LABEL_4;
- case 7:
- v3 = *(_DWORD *)(result + 24) | 0x7000;
- LABEL_4:
- *(_DWORD *)(result + 24) = v3;
- break;
- default:
- return result;
- }
- break;
- case 4:
- *(_DWORD *)(result + 28) &= 0xFFFFFFFC;
- *(_DWORD *)(result + 28) = *(_DWORD *)(result + 28);
- *(_DWORD *)(result + 28) &= 0xFFFFFF8F;
- switch ( a3 )
- {
- case 1:
- v4 = *(_DWORD *)(result + 28) | 0x10;
- goto LABEL_22;
- case 2:
- v4 = *(_DWORD *)(result + 28) | 0x20;
- goto LABEL_22;
- case 3:
- v4 = *(_DWORD *)(result + 28) | 0x30;
- goto LABEL_22;
- case 4:
- v4 = *(_DWORD *)(result + 28) | 0x40;
- goto LABEL_22;
- case 5:
- v4 = *(_DWORD *)(result + 28) | 0x50;
- goto LABEL_22;
- case 6:
- v4 = *(_DWORD *)(result + 28) | 0x60;
- goto LABEL_22;
- case 7:
- v4 = *(_DWORD *)(result + 28) | 0x70;
- goto LABEL_22;
- case 0:
- goto LABEL_30;
- default:
- return result;
- }
- default:
- return result;
- case 6:
- *(_DWORD *)(result + 28) &= 0xFFFFFCFF;
- *(_DWORD *)(result + 28) = *(_DWORD *)(result + 28);
- *(_DWORD *)(result + 28) &= 0xFFFF8FFF;
- switch ( a3 )
- {
- case 0:
- LABEL_30:
- v4 = *(_DWORD *)(result + 28);
- goto LABEL_22;
- case 1:
- v4 = *(_DWORD *)(result + 28) | 0x1000;
- goto LABEL_22;
- case 2:
- v4 = *(_DWORD *)(result + 28) | 0x2000;
- goto LABEL_22;
- case 3:
- v4 = *(_DWORD *)(result + 28) | 0x3000;
- goto LABEL_22;
- case 4:
- v4 = *(_DWORD *)(result + 28) | 0x4000;
- goto LABEL_22;
- case 5:
- v4 = *(_DWORD *)(result + 28) | 0x5000;
- goto LABEL_22;
- case 6:
- v4 = *(_DWORD *)(result + 28) | 0x6000;
- goto LABEL_22;
- case 7:
- v4 = *(_DWORD *)(result + 28) | 0x7000;
- LABEL_22:
- *(_DWORD *)(result + 28) = v4;
- break;
- default:
- return result;
- }
- break;
- }
- return result;
- }
- //----- (00002468) --------------------------------------------------------
- int __fastcall sub_2468(int result, int a2)
- {
- int v2; // r3@2
- int v3; // r3@5
- switch ( a2 )
- {
- case 0:
- v2 = *(_DWORD *)(result + 24) | 8;
- goto LABEL_3;
- case 2:
- v2 = *(_DWORD *)(result + 24) | 0x800;
- LABEL_3:
- *(_DWORD *)(result + 24) = v2;
- return result;
- case 4:
- v3 = *(_DWORD *)(result + 28) | 8;
- goto LABEL_6;
- default:
- return result;
- case 6:
- v3 = *(_DWORD *)(result + 28) | 0x800;
- LABEL_6:
- *(_DWORD *)(result + 28) = v3;
- break;
- }
- return result;
- }
- //----- (0000249C) --------------------------------------------------------
- int __fastcall sub_249C(int result, int a2)
- {
- unsigned int v2; // r3@2
- unsigned int v3; // r3@15
- switch ( a2 )
- {
- case 0:
- v2 = *(_DWORD *)(result + 32) & 0xFFFFFFFD;
- goto LABEL_3;
- case 2:
- v2 = *(_DWORD *)(result + 32) & 0xFFFFFFDF;
- goto LABEL_3;
- case 4:
- v2 = *(_DWORD *)(result + 32) & 0xFFFFFDFF;
- goto LABEL_3;
- case 6:
- v2 = *(_DWORD *)(result + 32) & 0xFFFFDFFF;
- LABEL_3:
- *(_DWORD *)(result + 32) = v2;
- if ( result == 1073807360 )
- return result;
- goto LABEL_13;
- default:
- if ( result == 1073807360 )
- goto LABEL_9;
- LABEL_13:
- if ( result != 1073808384 )
- return result;
- LABEL_9:
- if ( a2 == 3 )
- {
- v3 = *(_DWORD *)(result + 32) & 0xFFFFFF7F;
- }
- else if ( a2 == 5 )
- {
- v3 = *(_DWORD *)(result + 32) & 0xFFFFF7FF;
- }
- else
- {
- if ( a2 != 1 )
- return result;
- v3 = *(_DWORD *)(result + 32) & 0xFFFFFFF7;
- }
- *(_DWORD *)(result + 32) = v3;
- return result;
- }
- }
- //----- (00002510) --------------------------------------------------------
- int __fastcall sub_2510(int result, int a2)
- {
- int v2; // r3@2
- int v3; // r3@15
- switch ( a2 )
- {
- case 0:
- v2 = *(_DWORD *)(result + 32) | 1;
- goto LABEL_3;
- case 2:
- v2 = *(_DWORD *)(result + 32) | 0x10;
- goto LABEL_3;
- case 4:
- v2 = *(_DWORD *)(result + 32) | 0x100;
- goto LABEL_3;
- case 6:
- v2 = *(_DWORD *)(result + 32) | 0x1000;
- LABEL_3:
- *(_DWORD *)(result + 32) = v2;
- if ( result == 1073807360 )
- return result;
- goto LABEL_13;
- default:
- if ( result == 1073807360 )
- goto LABEL_9;
- LABEL_13:
- if ( result != 1073808384 )
- return result;
- LABEL_9:
- if ( a2 == 3 )
- {
- v3 = *(_DWORD *)(result + 32) | 0x40;
- }
- else if ( a2 == 5 )
- {
- v3 = *(_DWORD *)(result + 32) | 0x400;
- }
- else
- {
- if ( a2 != 1 )
- return result;
- v3 = *(_DWORD *)(result + 32) | 4;
- }
- *(_DWORD *)(result + 32) = v3;
- return result;
- }
- }
- //----- (00002584) --------------------------------------------------------
- int __fastcall sub_2584(int result, int a2)
- {
- unsigned int v2; // r3@2
- unsigned int v3; // r3@15
- switch ( a2 )
- {
- case 0:
- v2 = *(_DWORD *)(result + 32) & 0xFFFFFFFE;
- goto LABEL_3;
- case 2:
- v2 = *(_DWORD *)(result + 32) & 0xFFFFFFEF;
- goto LABEL_3;
- case 4:
- v2 = *(_DWORD *)(result + 32) & 0xFFFFFEFF;
- goto LABEL_3;
- case 6:
- v2 = *(_DWORD *)(result + 32) & 0xFFFFEFFF;
- LABEL_3:
- *(_DWORD *)(result + 32) = v2;
- if ( result == 1073807360 )
- return result;
- goto LABEL_13;
- default:
- if ( result == 1073807360 )
- goto LABEL_9;
- LABEL_13:
- if ( result != 1073808384 )
- return result;
- LABEL_9:
- if ( a2 == 3 )
- {
- v3 = *(_DWORD *)(result + 32) & 0xFFFFFFBF;
- }
- else if ( a2 == 5 )
- {
- v3 = *(_DWORD *)(result + 32) & 0xFFFFFBFF;
- }
- else
- {
- if ( a2 != 1 )
- return result;
- v3 = *(_DWORD *)(result + 32) & 0xFFFFFFFB;
- }
- *(_DWORD *)(result + 32) = v3;
- return result;
- }
- }
- //----- (000025F8) --------------------------------------------------------
- int __fastcall sub_25F8(int result, int a2)
- {
- int v2; // r3@3
- if ( (result & 0xFFFFFBFF) == 1073807360 )
- {
- switch ( a2 )
- {
- case 0:
- v2 = *(_DWORD *)(result + 4) | 0x100;
- goto LABEL_4;
- case 1:
- v2 = *(_DWORD *)(result + 4) | 0x200;
- goto LABEL_4;
- case 2:
- v2 = *(_DWORD *)(result + 4) | 0x400;
- goto LABEL_4;
- case 3:
- v2 = *(_DWORD *)(result + 4) | 0x800;
- goto LABEL_4;
- case 4:
- v2 = *(_DWORD *)(result + 4) | 0x1000;
- goto LABEL_4;
- case 5:
- v2 = *(_DWORD *)(result + 4) | 0x2000;
- goto LABEL_4;
- case 6:
- v2 = *(_DWORD *)(result + 4) | 0x4000;
- LABEL_4:
- *(_DWORD *)(result + 4) = v2;
- break;
- default:
- return result;
- }
- }
- return result;
- }
- //----- (00002650) --------------------------------------------------------
- int __fastcall sub_2650(int result, int a2, int a3)
- {
- switch ( a2 )
- {
- case 0:
- *(_DWORD *)(result + 52) = a3;
- break;
- case 2:
- *(_DWORD *)(result + 56) = a3;
- break;
- case 4:
- *(_DWORD *)(result + 60) = a3;
- break;
- case 6:
- *(_DWORD *)(result + 64) = a3;
- break;
- default:
- return result;
- }
- return result;
- }
- //----- (00002670) --------------------------------------------------------
- int __fastcall sub_2670(int result)
- {
- if ( (result & 0xFFFFFBFF) == 1073807360 )
- *(_DWORD *)(result + 68) |= 0x8000u;
- return result;
- }
- //----- (00002688) --------------------------------------------------------
- int __fastcall sub_2688(int result, int a2)
- {
- int v2; // r3@1
- v2 = v2000013C;
- if ( (result & 0xFFFFFBFF) == 1073811456 )
- v2 = v20000140;
- *(_DWORD *)(result + 8) = (a2 + 2 * v2) / (unsigned int)(2 * a2);
- return result;
- }
- //----- (000026B8) --------------------------------------------------------
- int __fastcall sub_26B8(int result, int a2)
- {
- int v2; // r3@1
- unsigned int v3; // r3@2
- v2 = *(_DWORD *)(result + 12);
- if ( a2 == 8 )
- v3 = v2 & 0xFFFFEFFF;
- else
- v3 = v2 | 0x1000;
- *(_DWORD *)(result + 12) = v3;
- return result;
- }
- //----- (000026CA) --------------------------------------------------------
- int __fastcall sub_26CA(int result, int a2)
- {
- *(_DWORD *)(result + 16) = a2 | *(_DWORD *)(result + 16) & 0xFFFFCFFF;
- return result;
- }
- //----- (000026D6) --------------------------------------------------------
- int __fastcall sub_26D6(int result, int a2)
- {
- *(_DWORD *)(result + 12) = a2 | *(_DWORD *)(result + 12) & 0xFFFFF9FF;
- return result;
- }
- //----- (000026E2) --------------------------------------------------------
- int __fastcall sub_26E2(int result, int a2)
- {
- *(_DWORD *)(result + 12) = a2 | *(_DWORD *)(result + 12) & 0xFFFFFFF3;
- return result;
- }
- //----- (000026EE) --------------------------------------------------------
- int __fastcall sub_26EE(int result, int a2)
- {
- *(_DWORD *)(result + 20) = a2 | *(_DWORD *)(result + 20) & 0xFFFFFCFF;
- return result;
- }
- //----- (000026FA) --------------------------------------------------------
- int __fastcall sub_26FA(int result)
- {
- *(_DWORD *)(result + 12) |= 0x2000u;
- return result;
- }
- //----- (00002704) --------------------------------------------------------
- unsigned int __fastcall sub_2704(int a1)
- {
- unsigned int result; // r0@1
- result = a1 | v40023C00 & 0xFFFFFFF8;
- v40023C00 = result;
- return result;
- }
- //----- (00002718) --------------------------------------------------------
- int __fastcall sub_2718(unsigned int a1)
- {
- int *v1; // r3@1
- int result; // r0@1
- v1 = (int *)((a1 >> 5) + 1073887232);
- result = (1 << (a1 & 0x1F)) | *(_DWORD *)((a1 >> 5) + 0x40023800);
- *v1 = result;
- return result;
- }
- //----- (00002754) --------------------------------------------------------
- int __fastcall sub_2754(int (**a1)(void), int a2, int a3, int a4, int a5, int a6, __int16 a7)
- {
- int v7; // r6@1
- int (**v8)(void); // r5@1
- int v9; // r8@1
- int v10; // r7@1
- int result; // r0@1
- v7 = a4;
- v8 = a1;
- v9 = a2;
- v10 = a3;
- result = (*a1)();
- *(_DWORD *)(result + 12) = a5;
- *(_DWORD *)(result + 16) = a6;
- *(_WORD *)(result + 20) = a7;
- *(_DWORD *)(result + 112) = 134229731;
- *(_DWORD *)(result + 108) = 134229843;
- *(_DWORD *)(result + 104) = 134229975;
- *(_DWORD *)(result + 220) = v8;
- *(_DWORD *)result = v9;
- *(_DWORD *)(result + 4) = v10;
- *(_DWORD *)(result + 8) = v7;
- *(_DWORD *)(result + 200) = 0;
- *(_DWORD *)(result + 204) = 0;
- *(_DWORD *)(result + 208) = 0;
- *(_DWORD *)(result + 212) = 0;
- return result;
- }
- //----- (00002C70) --------------------------------------------------------
- signed int __fastcall sub_2C70(int a1, int a2)
- {
- int v2; // r3@1
- int *v3; // r4@1
- int v4; // r2@2
- int v5; // t1@2
- v2 = 0;
- v3 = (int *)(a1 + 200);
- while ( 1 )
- {
- v5 = *v3;
- ++v3;
- v4 = v5;
- if ( !v5 )
- break;
- if ( ++v2 == 4 )
- return -1;
- }
- *(_DWORD *)(a1 + 4 * (v2 + 50)) = a2;
- return v4;
- }
- //----- (000031A8) --------------------------------------------------------
- int __fastcall sub_31A8(int a1)
- {
- int result; // r0@1
- result = a1 & 0xFFFFFF;
- vE000E014 = result;
- return result;
- }
- //----- (000031B8) --------------------------------------------------------
- int __fastcall sub_31B8(char a1)
- {
- int result; // r0@1
- result = a1 & 4;
- vE000E010 = vE000E010 & 0xFFFFFFFB | result;
- return result;
- }
- //----- (Set the second bit to 1) --------------------------------------------------------
- void sub_31D0()
- {
- vE000E010 |= 2u;
- }
- //----- (Set the first bit to 1) --------------------------------------------------------
- void sub_31E0()
- {
- vE000E010 |= 1u;
- }
- //----- (000031F0) --------------------------------------------------------
- signed int __fastcall sub_31F0(unsigned int a1)
- {
- _DWORD *v1; // r3@1
- signed int result; // r0@1
- v1 = (_DWORD *)(4 * (a1 >> 5) - 0x1FFF1F00);
- result = 1 << (a1 & 0x1F);
- *v1 = result;
- return result;
- }
- //----- (0000320C) --------------------------------------------------------
- int __fastcall sub_320C(int result)
- {
- int v1; // r3@2
- if ( !result )
- {
- v1 = v40007000 | 0x4000;
- LABEL_3:
- v40007000 = v1;
- return result;
- }
- if ( result == 1 )
- {
- v1 = v40007000 & 0x4000;
- goto LABEL_3;
- }
- return result;
- }
- //----- (00003898) --------------------------------------------------------
- int *__fastcall sub_3898(int *result, unsigned __int8 a2, unsigned int a3)
- {
- unsigned int v3; // r4@2
- int *v4; // r3@3
- unsigned __int8 v5; // cf@4
- int v6; // r2@9
- unsigned int v7; // r6@9
- unsigned int v8; // r2@11
- int *v9; // r6@12
- unsigned int v10; // r2@12
- int v11; // r4@16
- if ( (_DWORD)result << 30 )
- {
- v3 = a3 - 1;
- if ( !a3 )
- return result;
- v4 = result;
- while ( 1 )
- {
- *(_BYTE *)v4 = a2;
- v4 = (int *)((char *)v4 + 1);
- if ( !((_DWORD)v4 << 30) )
- break;
- v5 = __CFADD__(v3--, -1);
- if ( !v5 )
- return result;
- }
- }
- else
- {
- v3 = a3;
- v4 = result;
- }
- if ( v3 > 3 )
- {
- if ( v3 <= 0xF )
- goto LABEL_22;
- v6 = (int)(v4 + 4);
- v7 = v3;
- do
- {
- v7 -= 16;
- *(_DWORD *)(v6 - 16) = a2 | (a2 << 8) | ((a2 | (a2 << 8)) << 16);
- *(_DWORD *)(v6 - 12) = a2 | (a2 << 8) | ((a2 | (a2 << 8)) << 16);
- *(_DWORD *)(v6 - 8) = a2 | (a2 << 8) | ((a2 | (a2 << 8)) << 16);
- *(_DWORD *)(v6 - 4) = a2 | (a2 << 8) | ((a2 | (a2 << 8)) << 16);
- v6 += 16;
- }
- while ( v7 > 0xF );
- v8 = (v3 - 16) & 0xFFFFFFF0;
- v3 &= 0xFu;
- v4 = (int *)((char *)v4 + v8 + 16);
- if ( v3 > 3 )
- {
- LABEL_22:
- v9 = v4;
- v10 = v3;
- do
- {
- v10 -= 4;
- *v9 = a2 | (a2 << 8) | ((a2 | (a2 << 8)) << 16);
- ++v9;
- }
- while ( v10 > 3 );
- v4 = (int *)((char *)v4 + ((v3 - 4) & 0xFFFFFFFC) + 4);
- v3 &= 3u;
- }
- }
- if ( v3 )
- {
- v11 = (int)v4 + v3;
- do
- {
- *(_BYTE *)v4 = a2;
- v4 = (int *)((char *)v4 + 1);
- }
- while ( (int *)v11 != v4 );
- }
- return result;
- }
- // ALL OK, 86 function(s) have been successfully decompiled
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement