BOOL __stdcall DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID lpvReserved)
{
int v3; // ecx
void **v4; // eax
void **v5; // eax
const CHAR *v6; // eax
CHAR *v7; // ecx
int v8; // edx
int v9; // ecx
int v10; // eax
int v11; // ecx
LPCSTR *v12; // eax
LPCSTR *v13; // eax
unsigned int v14; // edi
struct std::_Facet_base *v15; // esi
int v16; // eax
struct std::_Facet_base *v17; // esi
void **v18; // esi
void **v19; // edx
CHAR *v20; // ecx
int v21; // edx
unsigned int v22; // eax
bool v23; // cf
bool v24; // zf
int *v25; // eax
void *v26; // edx
int v27; // ecx
int v28; // eax
int v29; // eax
int v30; // ecx
void **v31; // eax
void **v32; // eax
size_t v33; // ecx
size_t v34; // edi
void **v35; // eax
void **v36; // eax
void *v37; // eax
void **v38; // eax
int v39; // esi
int v40; // ecx
void **v41; // eax
void **v42; // eax
const CHAR *v43; // eax
CHAR *v44; // ecx
int v45; // edx
void (__thiscall ***v46)(_DWORD, signed int); // eax
void *v48; // [esp+10h] [ebp-248h]
int v49; // [esp+20h] [ebp-238h]
unsigned int v50; // [esp+24h] [ebp-234h]
void *v51; // [esp+28h] [ebp-230h]
int v52; // [esp+38h] [ebp-220h]
unsigned int v53; // [esp+3Ch] [ebp-21Ch]
LPCSTR lpText[4]; // [esp+40h] [ebp-218h]
__int64 v55; // [esp+50h] [ebp-208h]
void *v56; // [esp+58h] [ebp-200h]
size_t Size; // [esp+68h] [ebp-1F0h]
unsigned int v58; // [esp+6Ch] [ebp-1ECh]
void *v59[4]; // [esp+70h] [ebp-1E8h]
__int64 v60; // [esp+80h] [ebp-1D8h]
void *v61[4]; // [esp+88h] [ebp-1D0h]
size_t v62[2]; // [esp+98h] [ebp-1C0h]
void *v63[4]; // [esp+A0h] [ebp-1B8h]
__int64 v64; // [esp+B0h] [ebp-1A8h]
LPCSTR lpModuleName[4]; // [esp+B8h] [ebp-1A0h]
__int64 v66; // [esp+C8h] [ebp-190h]
void *Memory[4]; // [esp+D0h] [ebp-188h]
__int64 v68; // [esp+E0h] [ebp-178h]
bool v69; // [esp+EBh] [ebp-16Dh]
struct std::_Facet_base *v70; // [esp+ECh] [ebp-16Ch]
int Dst; // [esp+F0h] [ebp-168h]
char v72; // [esp+F4h] [ebp-164h]
__int128 v73; // [esp+F8h] [ebp-160h]
int v74; // [esp+108h] [ebp-150h]
char v75; // [esp+10Ch] [ebp-14Ch]
int v76; // [esp+110h] [ebp-148h]
int v77; // [esp+114h] [ebp-144h]
char v78; // [esp+118h] [ebp-140h]
int v79; // [esp+11Ch] [ebp-13Ch]
int v80; // [esp+120h] [ebp-138h]
char v81; // [esp+124h] [ebp-134h]
struct std::_Facet_base *v82; // [esp+12Ch] [ebp-12Ch]
__int128 v83; // [esp+130h] [ebp-128h]
struct std::locale::_Locimp *v84; // [esp+140h] [ebp-118h]
void *Src; // [esp+144h] [ebp-114h]
CHAR Filename; // [esp+148h] [ebp-110h]
int v87; // [esp+254h] [ebp-4h]
if ( fdwReason != 1 )
{
if ( !fdwReason && !byte_1000C63C )
{
SetWindowLongA((HWND)*MEMORY[0xC17054], -4, (LONG)dwNewLong);
byte_1000C63C = 1;
}
return 1;
}
v68 = 64424509440i64;
LOBYTE(Memory[0]) = 0;
sub_10002580(Memory, "WindowModeAltFixByCake", 0x16u);
v87 = 0;
v3 = v68;
if ( (unsigned int)(HIDWORD(v68) - v68) < 4 )
{
LOBYTE(v70) = 0;
v5 = (void **)sub_10002A60(Memory, 4, (int)v70, (int)".asi", 4u);
}
else
{
LODWORD(v68) = v68 + 4;
v4 = Memory;
if ( HIDWORD(v68) >= 0x10 )
v4 = (void **)Memory[0];
*(void **)((char *)v4 + v3) = (void *)1769169198;
*((_BYTE *)v4 + v3 + 4) = 0;
v5 = Memory;
}
*(_OWORD *)lpModuleName = *(_OWORD *)v5;
v66 = *((_QWORD *)v5 + 2);
v5[4] = 0;
v5[5] = (void *)15;
*(_BYTE *)v5 = 0;
v6 = (const CHAR *)lpModuleName;
if ( HIDWORD(v66) >= 0x10 )
v6 = lpModuleName[0];
v69 = GetModuleHandleA(v6) != hinstDLL;
if ( HIDWORD(v66) >= 0x10 )
{
v7 = (CHAR *)lpModuleName[0];
if ( (unsigned int)(HIDWORD(v66) + 1) >= 0x1000 )
{
v7 = (CHAR *)*((_DWORD *)lpModuleName[0] - 1);
v8 = HIDWORD(v66) + 36;
if ( (unsigned int)(lpModuleName[0] - (LPCSTR)v7 - 4) > 0x1F )
{
LABEL_16:
invalid_parameter_noinfo_noreturn(v7, v8);
goto LABEL_17;
}
}
sub_100086F1(v7);
}
v87 = -1;
v66 = 64424509440i64;
LOBYTE(lpModuleName[0]) = 0;
if ( HIDWORD(v68) < 0x10 )
goto LABEL_18;
v7 = (CHAR *)Memory[0];
if ( (unsigned int)(HIDWORD(v68) + 1) >= 0x1000 )
{
v7 = (CHAR *)*((_DWORD *)Memory[0] - 1);
v8 = HIDWORD(v68) + 36;
if ( (unsigned int)(Memory[0] - (void *)v7 - 4) > 0x1F )
goto LABEL_16;
}
LABEL_17:
sub_100086F1(v7);
LABEL_18:
if ( !v69 )
{
beginthread(sub_10002190, 0, 0);
return 1;
}
GetModuleFileNameA(hinstDLL, &Filename, 0x100u);
v84 = 0;
v49 = 0;
v83 = 0i64;
v50 = 15;
LOBYTE(v48) = 0;
sub_10002580(&v48, ".asi", 4u);
v87 = 1;
v10 = sub_10002BE0((int)&v48, v9, ".*\\\\(.*", 7u);
v66 = 0i64;
*(_OWORD *)lpModuleName = *(_OWORD *)v10;
v66 = *(_QWORD *)(v10 + 16);
*(_DWORD *)(v10 + 16) = 0;
*(_DWORD *)(v10 + 20) = 15;
*(_BYTE *)v10 = 0;
LOBYTE(v87) = 2;
v11 = v66;
if ( (unsigned int)(HIDWORD(v66) - v66) < 1 )
{
LOBYTE(v70) = 0;
v13 = (LPCSTR *)sub_10002A60(lpModuleName, 1, (int)v70, (int)")", 1u);
}
else
{
LODWORD(v66) = v66 + 1;
v12 = lpModuleName;
if ( HIDWORD(v66) >= 0x10 )
v12 = (LPCSTR *)lpModuleName[0];
*(_WORD *)((char *)v12 + v11) = 41;
v13 = lpModuleName;
}
v68 = 0i64;
*(_OWORD *)Memory = *(_OWORD *)v13;
v68 = *((_QWORD *)v13 + 2);
v13[4] = 0;
v13[5] = (LPCSTR)15;
*(_BYTE *)v13 = 0;
LODWORD(v83) = 0;
LOBYTE(v87) = 4;
v84 = std::locale::_Init(1);
LOBYTE(v87) = 5;
DWORD1(v83) = sub_10002EE0((char *)&v83 + 12);
std::_Lockit::_Lockit((std::_Lockit *)&Src, 0);
LOBYTE(v87) = 6;
v70 = (struct std::_Facet_base *)dword_1000C644;
v14 = std::locale::id::operator unsigned int(std::ctype<char>::id);
if ( v14 >= *((_DWORD *)v84 + 3) )
{
v15 = 0;
}
else
{
v15 = *(struct std::_Facet_base **)(*((_DWORD *)v84 + 2) + 4 * v14);
if ( v15 )
goto LABEL_35;
}
if ( !*((_BYTE *)v84 + 20) )
{
LABEL_31:
if ( v15 )
goto LABEL_35;
goto LABEL_32;
}
v16 = std::locale::_Getgloballocale();
if ( v14 < *(_DWORD *)(v16 + 12) )
{
v15 = *(struct std::_Facet_base **)(*(_DWORD *)(v16 + 8) + 4 * v14);
goto LABEL_31;
}
LABEL_32:
v15 = v70;
if ( !v70 )
{
if ( std::ctype<char>::_Getcat(&v70, (char *)&v83 + 12) == -1 )
sub_100011D0();
v17 = v70;
v82 = v70;
LOBYTE(v87) = 7;
std::_Facet_Register(v70);
(*(void (__thiscall **)(struct std::_Facet_base *))(*(_DWORD *)v17 + 4))(v17);
v15 = v70;
dword_1000C644 = (int)v70;
}
LABEL_35:
std::_Lockit::~_Lockit((std::_Lockit *)&Src);
DWORD2(v83) = v15;
LOBYTE(v87) = 8;
v18 = Memory;
v19 = Memory;
if ( HIDWORD(v68) >= 0x10 )
v18 = (void **)Memory[0];
if ( HIDWORD(v68) >= 0x10 )
v19 = (void **)Memory[0];
sub_10002C90(v19, (char *)v18 + v68, HIDWORD(v68), v82);
LOBYTE(v87) = 10;
if ( HIDWORD(v68) >= 0x10 )
{
v20 = (CHAR *)Memory[0];
if ( (unsigned int)(HIDWORD(v68) + 1) >= 0x1000 )
{
v20 = (CHAR *)*((_DWORD *)Memory[0] - 1);
v21 = HIDWORD(v68) + 36;
if ( (unsigned int)(Memory[0] - (void *)v20 - 4) > 0x1F )
goto LABEL_50;
}
sub_100086F1(v20);
}
v68 = 64424509440i64;
LOBYTE(Memory[0]) = 0;
LOBYTE(v87) = 11;
if ( HIDWORD(v66) < 0x10 )
goto LABEL_47;
v20 = (CHAR *)lpModuleName[0];
if ( (unsigned int)(HIDWORD(v66) + 1) >= 0x1000 )
{
v20 = (CHAR *)*((_DWORD *)lpModuleName[0] - 1);
v21 = HIDWORD(v66) + 36;
if ( (unsigned int)(lpModuleName[0] - (LPCSTR)v20 - 4) > 0x1F )
{
LABEL_50:
invalid_parameter_noinfo_noreturn(v20, v21);
goto LABEL_51;
}
}
sub_100086F1(v20);
LABEL_47:
v66 = 64424509440i64;
LOBYTE(lpModuleName[0]) = 0;
LOBYTE(v87) = 12;
if ( v50 < 0x10 )
goto LABEL_52;
v20 = (CHAR *)v48;
if ( v50 + 1 >= 0x1000 )
{
v20 = (CHAR *)*((_DWORD *)v48 - 1);
v21 = v50 + 36;
if ( (unsigned int)((_BYTE *)v48 - v20 - 4) > 0x1F )
goto LABEL_50;
}
LABEL_51:
sub_100086F1(v20);
LABEL_52:
memset(&Dst, 0, 0x38u);
Dst = 0;
v72 = 0;
v73 = 0i64;
v74 = 0;
v75 = 0;
v76 = 0;
v77 = 0;
v78 = 0;
v79 = 0;
v80 = 0;
v81 = 0;
LOBYTE(v87) = 13;
if ( !(unsigned __int8)sub_10002740(&v83) )
goto LABEL_109;
Size = 0;
v58 = 15;
LOBYTE(v56) = 0;
sub_10002580(&v56, "WindowModeAltFixByCake", 0x16u);
LOBYTE(v87) = 14;
v22 = (DWORD1(v73) - (signed int)v73) / 12;
v23 = v22 < 1;
v24 = v22 == 1;
v25 = &v79;
if ( !v23 && !v24 )
v25 = (int *)(v73 + 12);
if ( *((_BYTE *)v25 + 8) )
{
v26 = (void *)*v25;
v27 = *v25;
v28 = v25[1];
}
else
{
v26 = 0;
v28 = 0;
v27 = 0;
}
v52 = 0;
v53 = 15;
LOBYTE(v51) = 0;
if ( v27 != v28 )
sub_10002580(&v51, v26, v28 - v27);
LOBYTE(v87) = 15;
v29 = sub_10002BE0((int)&v51, v27, "Incorrect file name.\nPlease rename: ", 0x24u);
v60 = 0i64;
*(_OWORD *)v59 = *(_OWORD *)v29;
v60 = *(_QWORD *)(v29 + 16);
*(_DWORD *)(v29 + 16) = 0;
*(_DWORD *)(v29 + 20) = 15;
*(_BYTE *)v29 = 0;
LOBYTE(v87) = 16;
v30 = v60;
if ( (unsigned int)(HIDWORD(v60) - v60) < 4 )
{
LOBYTE(Src) = 0;
v32 = (void **)sub_10002A60(v59, 4, (int)Src, (int)" to ", 4u);
}
else
{
LODWORD(v60) = v60 + 4;
v31 = v59;
if ( HIDWORD(v60) >= 0x10 )
v31 = (void **)v59[0];
*(void **)((char *)v31 + v30) = (void *)544175136;
*((_BYTE *)v31 + v30 + 4) = 0;
v32 = v59;
}
v62[0] = 0;
v62[1] = 0;
*(_OWORD *)v61 = *(_OWORD *)v32;
*(_QWORD *)v62 = *((_QWORD *)v32 + 2);
v32[4] = 0;
v32[5] = (void *)15;
*(_BYTE *)v32 = 0;
LOBYTE(v87) = 17;
v33 = v62[0];
v34 = Size;
if ( Size <= v62[1] - v62[0] || v58 - Size < v62[0] )
{
v37 = &v56;
if ( v58 >= 0x10 )
v37 = v56;
Src = v37;
if ( Size > v62[1] - v62[0] )
{
LOBYTE(Src) = 0;
v36 = (void **)sub_10002A60(v61, Size, (int)Src, (int)v37, Size);
}
else
{
v62[0] += Size;
v38 = v61;
if ( v62[1] >= 0x10 )
v38 = (void **)v61[0];
v39 = (int)v38 + v33;
memmove((char *)v38 + v33, Src, Size);
*(_BYTE *)(v34 + v39) = 0;
v36 = v61;
}
}
else
{
v35 = v61;
if ( v62[1] >= 0x10 )
v35 = (void **)v61[0];
v36 = (void **)sub_10002BE0((int)&v56, v62[0], v35, v62[0]);
}
v64 = 0i64;
*(_OWORD *)v63 = *(_OWORD *)v36;
v64 = *((_QWORD *)v36 + 2);
*(_BYTE *)v36 = 0;
v36[5] = (void *)15;
v36[4] = 0;
LOBYTE(v87) = 18;
v40 = v64;
if ( (unsigned int)(HIDWORD(v64) - v64) < 4 )
{
LOBYTE(Src) = 0;
v42 = (void **)sub_10002A60(v63, 4, (int)Src, (int)".asi", 4u);
}
else
{
LODWORD(v64) = v64 + 4;
v41 = v63;
if ( HIDWORD(v64) >= 0x10 )
v41 = (void **)v63[0];
*(void **)((char *)v41 + v40) = (void *)1769169198;
*((_BYTE *)v41 + v40 + 4) = 0;
v42 = v63;
}
*(_OWORD *)lpText = *(_OWORD *)v42;
v55 = *((_QWORD *)v42 + 2);
v42[4] = 0;
v42[5] = (void *)15;
*(_BYTE *)v42 = 0;
v43 = (const CHAR *)lpText;
if ( HIDWORD(v55) >= 0x10 )
v43 = lpText[0];
MessageBoxA(0, v43, "WindowModeAltFixByCake", 0);
if ( HIDWORD(v55) >= 0x10 )
{
v44 = (CHAR *)lpText[0];
if ( (unsigned int)(HIDWORD(v55) + 1) >= 0x1000 )
{
v44 = (CHAR *)*((_DWORD *)lpText[0] - 1);
v45 = HIDWORD(v55) + 36;
if ( (unsigned int)(lpText[0] - (LPCSTR)v44 - 4) > 0x1F )
goto LABEL_107;
}
sub_100086F1(v44);
}
v55 = 64424509440i64;
LOBYTE(lpText[0]) = 0;
if ( HIDWORD(v64) >= 0x10 )
{
v44 = (CHAR *)v63[0];
if ( (unsigned int)(HIDWORD(v64) + 1) >= 0x1000 )
{
v44 = (CHAR *)*((_DWORD *)v63[0] - 1);
v45 = HIDWORD(v64) + 36;
if ( (unsigned int)(v63[0] - (void *)v44 - 4) > 0x1F )
goto LABEL_107;
}
sub_100086F1(v44);
}
v64 = 64424509440i64;
LOBYTE(v63[0]) = 0;
if ( v62[1] >= 0x10 )
{
v44 = (CHAR *)v61[0];
if ( v62[1] + 1 >= 0x1000 )
{
v44 = (CHAR *)*((_DWORD *)v61[0] - 1);
v45 = v62[1] + 36;
if ( (unsigned int)(v61[0] - (void *)v44 - 4) > 0x1F )
goto LABEL_107;
}
sub_100086F1(v44);
}
v62[0] = 0;
v62[1] = 15;
LOBYTE(v61[0]) = 0;
if ( HIDWORD(v60) >= 0x10 )
{
v44 = (CHAR *)v59[0];
if ( (unsigned int)(HIDWORD(v60) + 1) >= 0x1000 )
{
v44 = (CHAR *)*((_DWORD *)v59[0] - 1);
v45 = HIDWORD(v60) + 36;
if ( (unsigned int)(v59[0] - (void *)v44 - 4) > 0x1F )
goto LABEL_107;
}
sub_100086F1(v44);
}
v60 = 64424509440i64;
LOBYTE(v59[0]) = 0;
if ( v53 < 0x10 )
goto LABEL_104;
v44 = (CHAR *)v51;
if ( v53 + 1 >= 0x1000 )
{
v44 = (CHAR *)*((_DWORD *)v51 - 1);
v45 = v53 + 36;
if ( (unsigned int)((_BYTE *)v51 - v44 - 4) > 0x1F )
{
LABEL_107:
invalid_parameter_noinfo_noreturn(v44, v45);
LABEL_108:
sub_100086F1(v44);
goto LABEL_109;
}
}
sub_100086F1(v44);
LABEL_104:
v52 = 0;
v53 = 15;
LOBYTE(v51) = 0;
if ( v58 >= 0x10 )
{
v44 = (CHAR *)v56;
if ( v58 + 1 < 0x1000 )
goto LABEL_108;
v44 = (CHAR *)*((_DWORD *)v56 - 1);
v45 = v58 + 36;
if ( (unsigned int)((_BYTE *)v56 - v44 - 4) <= 0x1F )
goto LABEL_108;
goto LABEL_107;
}
LABEL_109:
sub_100021D0(&v73);
sub_10002530(&v83);
if ( v84 )
{
v46 = (void (__thiscall ***)(_DWORD, signed int))(*(int (**)(void))(*(_DWORD *)v84 + 8))();
if ( v46 )
(**v46)(v46, 1);
}
return 0;
}