You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1063 lines
28 KiB

// ref: 0x10002E2B
void *Connect_10002E2B() { return 0; }
/* {
int *v0; // edi
int result; // eax
if ( dword_100295D8 )
{
SMemFree(dword_100295D8, "C:\\Src\\Diablo\\DiabloUI\\Connect.cpp", 124, 0);
dword_100295D8 = 0;
}
if ( dword_100295DC )
{
SMemFree(dword_100295DC, "C:\\Src\\Diablo\\DiabloUI\\Connect.cpp", 129, 0);
dword_100295DC = 0;
}
v0 = dword_100295E8;
do
{
if ( *v0 )
{
STransDelete(*v0);
*v0 = 0;
}
++v0;
}
while ( (signed int)v0 < (signed int)&dword_10029610 );
if ( dword_100295E0 )
{
SMemFree(dword_100295E0, "C:\\Src\\Diablo\\DiabloUI\\Connect.cpp", 141, 0);
dword_100295E0 = 0;
}
result = dword_100295E4;
if ( dword_100295E4 )
{
result = SMemFree(dword_100295E4, "C:\\Src\\Diablo\\DiabloUI\\Connect.cpp", 146, 0);
dword_100295E4 = 0;
}
return result;
} */
// 1001033A: using guessed type int __stdcall STransDelete(_DWORD);
// 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD);
// 100295D8: using guessed type int dword_100295D8;
// 100295DC: using guessed type int dword_100295DC;
// 100295E0: using guessed type int dword_100295E0;
// 100295E4: using guessed type int dword_100295E4;
// 10029610: using guessed type int dword_10029610;
// ref: 0x10002EC4
signed int Connect_10002EC4() { return 0; }
/* {
int *v0; // esi
int v1; // ebx
int v3; // [esp+4h] [ebp-14h]
int v4; // [esp+8h] [ebp-10h]
int v5; // [esp+Ch] [ebp-Ch]
int v6; // [esp+10h] [ebp-8h]
int v7; // [esp+14h] [ebp-4h]
v7 = 0;
if ( !dword_100295D8 && !dword_100295E8[0] )
{
local_100078BE((int)"ui_art\\heroport.pcx", &dword_100295D8, &dword_100294A8);
local_100078BE((int)"ui_art\\spwnport.pcx", &dword_100295DC, 0);
local_100078BE((int)"ui_art\\heronum.pcx", &v7, &dword_100295C8);
local_100078BE((int)"ui_art\\special.pcx", &dword_100295E0, &dword_100295B8);
dword_100295D4 = 14;
dword_100295D0 = dword_100295CC / 10;
dword_100294A4 = dword_100295BC / 8;
dword_100295B0 = dword_100295CC / 10 * dword_100295C8;
dword_100295C0 = 14 * dword_100294A8;
v0 = dword_100295E8;
dword_100295E4 = SMemAlloc(14 * dword_100294A8, "C:\\Src\\Diablo\\DiabloUI\\Connect.cpp", 194, 0);
memset(dword_100295E8, 0, 0x28u);
if ( v7 )
{
v1 = 0;
do
{
v3 = 0;
v5 = dword_100295C8 - 1;
v4 = v1 * dword_100295D0;
v6 = dword_100295D0 + v1 * dword_100295D0 - 1;
STransCreateI(v7, dword_100295C8, dword_100295D0, 8, &v3, 16777455, v0);
++v0;
++v1;
}
while ( (signed int)v0 < (signed int)&dword_10029610 );
SMemFree(v7, "C:\\Src\\Diablo\\DiabloUI\\Connect.cpp", 218, 0);
}
}
return 1;
} */
// 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD);
// 10010346: using guessed type int __stdcall STransCreateI(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
// 10010364: using guessed type int __stdcall SMemAlloc(_DWORD, _DWORD, _DWORD, _DWORD);
// 100294A4: using guessed type int dword_100294A4;
// 100294A8: using guessed type int dword_100294A8;
// 100295B0: using guessed type int dword_100295B0;
// 100295B8: using guessed type int dword_100295B8;
// 100295BC: using guessed type int dword_100295BC;
// 100295C0: using guessed type int dword_100295C0;
// 100295C8: using guessed type int dword_100295C8;
// 100295CC: using guessed type int dword_100295CC;
// 100295D0: using guessed type int dword_100295D0;
// 100295D4: using guessed type int dword_100295D4;
// 100295D8: using guessed type int dword_100295D8;
// 100295DC: using guessed type int dword_100295DC;
// 100295E0: using guessed type int dword_100295E0;
// 100295E4: using guessed type int dword_100295E4;
// 10029610: using guessed type int dword_10029610;
// ref: 0x10003009
void __cdecl UiArtCallback() { return; }
//int __stdcall UiArtCallback(int a1, unsigned int a2, int a3, int a4, int a5, int a6, int a7, int a8) { return 0; }
/* {
int result; // eax
CHAR v9; // [esp+8h] [ebp-104h]
char v10; // [esp+9h] [ebp-103h]
short v11; // [esp+109h] [ebp-3h]
char v12; // [esp+10Bh] [ebp-1h]
v9 = byte_10029448;
memset(&v10, 0, 0x100u);
v11 = 0;
v12 = 0;
SStrCopy(&v9, "ui_art\\", 260);
if ( a1 == 1112425812 )
{
if ( a2 > 0x80000004 )
{
switch ( a2 )
{
case 0x80000005:
SStrPack(&v9, "bnconnbg.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x80000006:
SStrPack(&v9, "bnselchn.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x80000007:
SStrPack(&v9, "bnlogin.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x80000008:
SStrPack(&v9, "newaccount.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x80000009:
SStrPack(&v9, "changepassword.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x8000000A:
SStrPack(&v9, "bnladder.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x8000000B:
SStrPack(&v9, "badconn.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x8000000C:
SStrPack(&v9, "welcome.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x8000000D:
SStrPack(&v9, "lepopup.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x8000000E:
SStrPack(&v9, "tos.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
default:
break;
}
}
else
{
if ( a2 == -2147483644 )
{
SStrPack(&v9, "redlag.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
}
if ( a2 > 7 )
{
switch ( a2 )
{
case 8u:
LABEL_48:
SStrPack(&v9, "but_lrg.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x80000000:
SStrPack(&v9, "bnbuttns.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x80000001:
SStrPack(&v9, "chat_bkg.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x80000002:
SStrPack(&v9, "greenlag.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x80000003:
SStrPack(&v9, "yellolag.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
}
}
else
{
switch ( a2 )
{
case 7u:
LABEL_47:
SStrPack(&v9, "but_med.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0u:
SStrPack(&v9, "bn_bkg.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 2u:
SStrPack(&v9, "bnjoinbg.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 3u:
SStrPack(&v9, "hpopup.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 5u:
LABEL_46:
SStrPack(&v9, "but_xsm.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 6u:
LABEL_11:
SStrPack(&v9, "but_sml.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
}
}
}
}
else if ( a1 == 1230002254 )
{
if ( !a2 )
{
SStrPack(&v9, "ipx_bkg.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
}
}
else if ( !a1 && !a2 )
{
SStrPack(&v9, "connect.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
}
switch ( a2 )
{
case 0u:
case 2u:
SStrPack(&v9, "menu.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 1u:
case 8u:
goto LABEL_48;
case 3u:
case 4u:
SStrPack(&v9, "lpopup.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 5u:
goto LABEL_46;
case 6u:
goto LABEL_11;
case 7u:
goto LABEL_47;
case 9u:
SStrPack(&v9, "xsmlogo.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0xAu:
SStrPack(&v9, "prog_bg.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0xBu:
SStrPack(&v9, "prog_fil.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0xCu:
SStrPack(&v9, "spopup.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0xDu:
SStrPack(&v9, "scrlarrw.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0xEu:
SStrPack(&v9, "scrlthmb.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0xFu:
SStrPack(&v9, "scrlbar.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x10u:
SStrPack(&v9, "cmel.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x11u:
SStrPack(&v9, "cmml.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x12u:
SStrPack(&v9, "cmbl.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x13u:
SStrPack(&v9, "cmec.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x14u:
SStrPack(&v9, "cmmc.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x15u:
SStrPack(&v9, "cmbc.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x16u:
SStrPack(&v9, "cmer.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x17u:
SStrPack(&v9, "cmmr.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x18u:
SStrPack(&v9, "cmbr.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x19u:
SStrPack(&v9, "slgray.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x1Au:
SStrPack(&v9, "slthumb.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x1Bu:
SStrPack(&v9, "slfocus.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x1Cu:
SStrPack(&v9, "slleft.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x1Du:
SStrPack(&v9, "slmiddle.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x1Eu:
SStrPack(&v9, "slright.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x20u:
SStrPack(&v9, "but_checkoff.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
case 0x21u:
SStrPack(&v9, "but_checkon.pcx", 0x104u);
return SBmpLoadImage(&v9, a3, a4, a5, a6, a7, a8);
default:
result = 0;
break;
}
return result;
} */
// 100103BE: using guessed type int __stdcall SBmpLoadImage(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
// 100103E2: using guessed type unsigned int __stdcall SStrPack(char *, const char *, unsigned int);
// 100103E8: using guessed type int __stdcall SStrCopy(_DWORD, _DWORD, _DWORD);
// ref: 0x100033D1
signed int Connect_100033D1() { return 0; }
/* {
signed int result; // eax
result = 2139095040;
dword_100294A0 = 2139095040;
return result;
} */
// 100294A0: using guessed type int dword_100294A0;
// ref: 0x100033DC
void __cdecl UiGetDataCallback() { return; }
//BOOL __stdcall UiGetDataCallback(int a1, int a2, void *a3, int a4, int a5) { return 0; }
/* {
signed int v5; // edi
_DWORD *v6; // esi
HCURSOR v7; // eax
v5 = 0;
if ( a1 != 1112425812 || a2 != 0x80000000 )
{
switch ( a2 )
{
case 1:
v5 = 16;
if ( !a3 )
goto LABEL_24;
if ( (unsigned int)a4 >= 0x10 )
{
memcpy(a3, "\r", 0x10u);
goto LABEL_24;
}
return 0;
case 2:
v6 = a3;
v5 = 4;
if ( !a3 )
goto LABEL_24;
if ( (unsigned int)a4 < 4 )
return 0;
v7 = LoadCursorA(hInstance, "DIABLO_LINKCURSOR");
break;
case 3:
v6 = a3;
v5 = 4;
if ( !a3 )
goto LABEL_24;
if ( (unsigned int)a4 < 4 )
return 0;
v7 = LoadCursorA(hInstance, "DIABLO_ARROWCURSOR");
break;
case 4:
v6 = a3;
v5 = 4;
if ( !a3 )
goto LABEL_24;
if ( (unsigned int)a4 < 4 )
return 0;
v7 = LoadCursorA(hInstance, "DIABLOIBEAM");
break;
default:
goto LABEL_24;
}
*v6 = v7;
if ( v7 )
goto LABEL_24;
return 0;
}
v5 = 4;
if ( a3 )
{
if ( (unsigned int)a4 >= 4 )
{
*(_DWORD *)a3 = 54;
goto LABEL_24;
}
return 0;
}
LABEL_24:
if ( a5 )
*(_DWORD *)a5 = v5;
return v5 != 0;
} */
// ref: 0x100034AB
void __cdecl UiSoundCallback() { return; }
//int __stdcall UiSoundCallback(int a1, int a2, int a3) { return 0; }
/* {
if ( a2 )
{
if ( a2 == 1 )
TitleSnd_1001031F();
}
else
{
TitleSnd_10010315();
}
return 0;
} */
// ref: 0x100034C8
void __cdecl UiAuthCallback() { return; }
//int __stdcall UiAuthCallback(int a1, int a2, char *a3, char a4, char *a5, LPSTR lpBuffer, int cchBufferMax) { return 0; }
/* {
size_t v7; // edi
size_t v8; // ebx
int v9; // ebx
char *v10; // ebx
size_t v11; // eax
int v12; // eax
int v14; // eax
CHAR v15; // [esp+0h] [ebp-434h]
char v16; // [esp+100h] [ebp-334h]
char v17; // [esp+200h] [ebp-234h]
CHAR Buffer; // [esp+300h] [ebp-134h]
char v19; // [esp+400h] [ebp-34h]
unsigned short v20; // [esp+414h] [ebp-20h]
unsigned char v21; // [esp+416h] [ebp-1Eh]
char v22; // [esp+42Ch] [ebp-8h]
int v23; // [esp+430h] [ebp-4h]
v23 = 0;
if ( cchBufferMax )
*lpBuffer = 0;
v7 = strlen(a3) + 1;
v8 = strlen(a5) + 1;
if ( v7 > 0x100 || v8 > 0x100 )
{
if ( lpBuffer )
LoadStringA(hInstance, 0x413u, lpBuffer, cchBufferMax);
return 0;
}
memcpy(&v16, a3, v7);
memcpy(&v17, a5, v8);
if ( Connect_10003E61(&v16, &v19) )
{
if ( a1 == 1 )
{
if ( !(a4 & 9) )
{
v9 = 0;
while ( 1 )
{
LoadStringA(hInstance, v9 + 4, &Buffer, 256);
if ( strstr(&v17, &Buffer) )
break;
if ( ++v9 >= 3 )
goto LABEL_16;
}
if ( v21 != v9 )
goto LABEL_20;
v23 = 1;
LABEL_16:
LoadStringA(hInstance, 0x408u, &Buffer, 256);
v10 = strstr(&v17, &Buffer);
if ( v10 )
{
v11 = strlen(&Buffer);
v12 = atoi(&v10[v11]);
if ( v20 >= v12 )
return 1;
}
if ( v23 )
return 1;
LABEL_20:
if ( lpBuffer )
{
LoadStringA(hInstance, 0x415u, &v15, 256);
v14 = sprintf(&Buffer, &v15, &v17) + 1;
if ( cchBufferMax >= v14 )
{
memcpy(lpBuffer, &Buffer, v14);
}
else
{
memcpy(lpBuffer, &Buffer, cchBufferMax);
lpBuffer[cchBufferMax - 1] = 0;
}
}
return 0;
}
}
else if ( !(a4 & 8) )
{
Connect_10003DAF(&v17, (int)&v22, 0, 0);
if ( (_BYTE)v23 == 1 )
{
if ( v20 < 0x14u )
{
if ( lpBuffer )
LoadStringA(hInstance, 0x411u, lpBuffer, cchBufferMax);
return 0;
}
}
else if ( (_BYTE)v23 == 2 && v20 < 0x1Eu )
{
if ( lpBuffer )
LoadStringA(hInstance, 0x412u, lpBuffer, cchBufferMax);
return 0;
}
}
return 1;
}
if ( lpBuffer )
LoadStringA(hInstance, 0x414u, lpBuffer, cchBufferMax);
return 0;
} */
// ref: 0x10003710
void __cdecl UiDrawDescCallback() { return; }
//int __stdcall UiDrawDescCallback(int a1, COLORREF color, LPCSTR lpString, char *a4, int a5, UINT align, time_t a7, int a8) { return 0; }
/* {
int v8; // ebx
int v9; // esi
int v10; // esi
size_t v11; // eax
UINT v13; // eax
BOOL v14; // esi
int v15; // eax
int v16; // eax
HDC v17; // ST20_4
struct tm *v18; // eax
struct tm *v19; // edi
signed int v20; // eax
int v21; // eax
int v22; // eax
UINT v23; // eax
int v24; // esi
int v25; // eax
int v26; // eax
signed int v27; // [esp-4h] [ebp-2E8h]
char v28[4]; // [esp+Ch] [ebp-2D8h]
CHAR String; // [esp+10Ch] [ebp-1D8h]
CHAR Buffer; // [esp+18Ch] [ebp-158h]
char v31; // [esp+18Dh] [ebp-157h]
short v32; // [esp+209h] [ebp-DBh]
char v33; // [esp+20Bh] [ebp-D9h]
CHAR v34; // [esp+20Ch] [ebp-D8h]
int v35; // [esp+22Ch] [ebp-B8h]
struct tagPOINT v36; // [esp+248h] [ebp-9Ch]
struct tagTEXTMETRICA tm; // [esp+25Ch] [ebp-88h]
char v38; // [esp+294h] [ebp-50h]
CHAR v39; // [esp+2A0h] [ebp-44h]
unsigned short v40; // [esp+2A8h] [ebp-3Ch]
unsigned char v41; // [esp+2AAh] [ebp-3Ah]
unsigned char v42; // [esp+2ABh] [ebp-39h]
int v43; // [esp+2BCh] [ebp-28h]
struct tagPOINT pt; // [esp+2C0h] [ebp-24h]
char v45; // [esp+2C8h] [ebp-1Ch]
unsigned char v46; // [esp+2CCh] [ebp-18h]
struct tagRECT rc; // [esp+2D0h] [ebp-14h]
COLORREF v48; // [esp+2E0h] [ebp-4h]
LPCSTR lpStringa; // [esp+2F4h] [ebp+10h]
Buffer = byte_10029448;
v8 = a8;
memset(&v31, 0, 0x7Cu);
v9 = *(_DWORD *)(a8 + 16);
v32 = 0;
v33 = 0;
v10 = v9 & 1;
v11 = strlen(a4) + 1;
if ( v11 > 0x100 )
return 0;
memcpy(v28, a4, v11);
if ( color == 1 )
{
a8 = 0;
a4 = 0;
if ( !Connect_10003DAF(v28, (int)&v45, (int)&a8, (int)&a4) )
return 0;
color = SetTextColor(*(HDC *)(v8 + 24), 0xFFFFFFu);
v48 = SetBkColor(*(HDC *)(v8 + 24), v10 != 0 ? 0x808080 : 0);
if ( align & 1 )
{
v13 = strlen(lpString);
ExtTextOutA(
*(HDC *)(v8 + 24),
*(_DWORD *)(v8 + 28),
*(_DWORD *)(v8 + 32),
6u,
(const RECT *)(v8 + 28),
lpString,
v13,
0);
}
else
{
v14 = a8 && a4;
if ( v46 < 3u )
LoadStringA(hInstance, v46 + 1003, &Buffer, 128);
if ( align & 2 && v14 )
{
GetTextMetricsA(*(HDC *)(v8 + 24), &tm);
lpStringa = (LPCSTR)(tm.tmHeight + tm.tmExternalLeading);
MoveToEx(*(HDC *)(v8 + 24), *(_DWORD *)(v8 + 28), *(_DWORD *)(v8 + 32), &pt);
align = SetTextAlign(*(HDC *)(v8 + 24), 1u);
v15 = strlen(&Buffer);
TextOutA(*(HDC *)(v8 + 24), 0, 0, &Buffer, v15);
LoadStringA(hInstance, 0x409u, &String, 128);
MoveToEx(*(HDC *)(v8 + 24), *(_DWORD *)(v8 + 28), (int)&lpStringa[*(_DWORD *)(v8 + 32)], 0);
v16 = strlen(&String);
TextOutA(*(HDC *)(v8 + 24), 0, 0, &String, v16);
v17 = *(HDC *)(v8 + 24);
qmemcpy(&v35, (const void *)v8, 0x30u);
GetCurrentPositionEx(v17, &v36);
SetTextAlign(*(HDC *)(v8 + 24), 0);
dword_10029614 = 1;
UiDrawDescCallback(a1, 2u, (LPCSTR)a8, a4, 0, 1u, 0, (int)&v35);
dword_10029614 = 0;
if ( a7 )
{
SetTextAlign(*(HDC *)(v8 + 24), 1u);
LoadStringA(hInstance, 0x40Cu, &v39, 32);
LoadStringA(hInstance, 0x40Du, &v34, 32);
v18 = localtime(&a7);
v19 = v18;
if ( v18 )
{
LoadStringA(hInstance, (v18->tm_hour > 12) + 1034, (LPSTR)&rc.top, 10);
v20 = v19->tm_hour;
if ( v20 > 12 )
v19->tm_hour = v20 - 12;
if ( !v19->tm_hour )
v19->tm_hour = 12;
sprintf(&String, &v39, &v34, v19->tm_hour, v19->tm_min, &rc.top);
MoveToEx(
*(HDC *)(v8 + 24),
*(_DWORD *)(v8 + 28),
*(_DWORD *)(v8 + 32) + 2 * (_DWORD)lpStringa,
0);
v21 = strlen(&String);
TextOutA(*(HDC *)(v8 + 24), 0, 0, &String, v21);
}
}
MoveToEx(*(HDC *)(v8 + 24), pt.x, pt.y, 0);
SetTextAlign(*(HDC *)(v8 + 24), align);
}
else
{
v22 = strlen(&Buffer);
TextOutA(*(HDC *)(v8 + 24), *(_DWORD *)(v8 + 28), *(_DWORD *)(v8 + 32), &Buffer, v22);
}
}
goto LABEL_56;
}
GetTextMetricsA(*(HDC *)(v8 + 24), &tm);
a4 = (char *)((tm.tmHeight - dword_100295D4) / 2 + 1);
if ( !dword_10029614 )
{
color = SetTextColor(*(HDC *)(v8 + 24), 0xFFFFu);
v48 = SetBkColor(*(HDC *)(v8 + 24), v10 != 0 ? 0x808080 : 0);
}
if ( align & 1 )
{
v23 = strlen(lpString);
ExtTextOutA(
*(HDC *)(v8 + 24),
*(_DWORD *)(v8 + 28) + dword_100294A8 + 2,
*(_DWORD *)(v8 + 32),
6u,
(const RECT *)(v8 + 28),
lpString,
v23,
0);
}
if ( a5 )
{
if ( a5 & 0x20 )
{
v27 = 5;
LABEL_45:
v24 = v27;
goto LABEL_46;
}
if ( a5 & 1 )
{
v24 = 0;
LABEL_46:
SetRect(&rc, 0, 0, dword_100295B8 - 1, dword_100294A4 - 1);
OffsetRect(&rc, 0, dword_100294A4 * v24);
SDlgBltToWindowI(
*(_DWORD *)(v8 + 20),
0,
*(_DWORD *)(v8 + 28),
&a4[*(_DWORD *)(v8 + 32)],
dword_100295E0,
&rc,
&dword_100295B8,
-1,
0,
13369376);
goto LABEL_55;
}
if ( a5 & 2 )
{
v27 = 2;
goto LABEL_45;
}
if ( a5 & 4 )
{
v27 = 3;
goto LABEL_45;
}
if ( a5 & 8 )
{
v25 = (a1 != 1112425812) - 1;
LOBYTE(v25) = v25 & 0xFD;
v24 = v25 + 4;
goto LABEL_46;
}
}
if ( *(_DWORD *)v28 == 1128808788 )
{
v27 = 6;
goto LABEL_45;
}
if ( *(_DWORD *)v28 == 1397053520 || *(_DWORD *)v28 == 1397966930 || *(_DWORD *)v28 == 1398030674 )
{
v27 = 7;
goto LABEL_45;
}
if ( Connect_10003E61(v28, &v38) )
{
if ( v43 )
{
if ( dword_100295DC )
SBltROP3(
dword_100295E4,
dword_100295DC,
dword_100294A8,
dword_100295D4,
dword_100294A8,
dword_100294A8,
0,
13369376);
}
else
{
SBltROP3(
dword_100295E4,
dword_100295D8 + dword_100295C0 * (v41 + 3 * v42),
dword_100294A8,
dword_100295D4,
dword_100294A8,
dword_100294A8,
0,
13369376);
}
v26 = v40 / 10;
if ( v26 )
STransBlt(
dword_100294A8 + dword_100295E4 + 4 * dword_100294A8 + 14,
0,
0,
dword_100294A8,
dword_100295E8[v26]);
STransBlt(
dword_100295E4 + 4 * (dword_100294A8 + 4) + dword_100294A8 + 4,
0,
0,
dword_100294A8,
dword_100295E8[v40 % 10]);
SetRect(&rc, 0, 0, dword_100294A8 - 1, dword_100295D4 - 1);
SDlgBltToWindowI(
*(_DWORD *)(v8 + 20),
0,
*(_DWORD *)(v8 + 28),
&a4[*(_DWORD *)(v8 + 32)],
dword_100295E4,
&rc,
&dword_100294A8,
-1,
0,
13369376);
}
LABEL_55:
if ( !dword_10029614 )
{
LABEL_56:
SetTextColor(*(HDC *)(v8 + 24), color);
SetBkColor(*(HDC *)(v8 + 24), v48);
}
return 1;
} */
// 1001036A: using guessed type int __stdcall STransBlt(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
// 100103EE: using guessed type int __stdcall SDlgBltToWindowI(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
// 100103F4: using guessed type int __stdcall SBltROP3(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
// 100294A4: using guessed type int dword_100294A4;
// 100294A8: using guessed type int dword_100294A8;
// 100295B8: using guessed type int dword_100295B8;
// 100295C0: using guessed type int dword_100295C0;
// 100295D4: using guessed type int dword_100295D4;
// 100295D8: using guessed type int dword_100295D8;
// 100295DC: using guessed type int dword_100295DC;
// 100295E0: using guessed type int dword_100295E0;
// 100295E4: using guessed type int dword_100295E4;
// 10029614: using guessed type int dword_10029614;
// ref: 0x10003CE4
void __cdecl UiCategoryCallback() { return; }
//signed int __stdcall UiCategoryCallback(int a1, int a2, int a3, int a4, int a5, _DWORD *a6, _DWORD *a7) { return 0; }
/* {
*a7 = 0xFFFF;
*a6 = Connect_10003D04(byte_100294B0);
return 1;
} */
// ref: 0x10003D04
int UNKCALL Connect_10003D04(char *arg) { return 0; }
/* {
char v3; // [esp+0h] [ebp-22Ch]
char v4; // [esp+200h] [ebp-2Ch]
unsigned short v5; // [esp+214h] [ebp-18h]
strcpy(&v3, arg);
if ( !Connect_10003E61(&v3, &v4) || v5 == 1 )
return 0;
if ( (signed int)v5 < 4 )
return 1;
if ( (signed int)v5 < 6 )
return 2;
if ( (signed int)v5 < 8 )
return 3;
if ( (signed int)v5 < 10 )
return 4;
if ( (signed int)v5 < 13 )
return 5;
if ( (signed int)v5 < 17 )
return 6;
if ( (signed int)v5 < 20 )
return 7;
if ( (signed int)v5 < 25 )
return 8;
if ( (signed int)v5 < 30 )
return 9;
if ( (signed int)v5 < 35 )
return 10;
if ( (signed int)v5 < 40 )
return 11;
return ((signed int)v5 >= 48) + 12;
} */
// ref: 0x10003DAF
int __fastcall Connect_10003DAF(char *a1, int a2, int a3, int a4) { return 0; }
/* {
char *v4; // esi
int v5; // edi
unsigned char v6; // al
char *v8; // eax
const char *v9; // eax
char *v10; // eax
v4 = a1;
v5 = a2;
if ( !*a1 )
return 0;
v6 = atoi(a1);
*(_BYTE *)(v5 + 4) = v6;
if ( v6 >= 3u )
return 0;
v8 = strchr(v4, 13);
if ( v8 )
{
*v8 = 0;
v9 = v8 + 1;
if ( a3 )
*(_DWORD *)a3 = v9;
v10 = strchr(v9, 13);
if ( v10 )
{
*v10 = 0;
if ( a4 )
*(_DWORD *)a4 = v10 + 1;
}
}
return 1;
} */
// ref: 0x10003E0C
char *__fastcall Connect_10003E0C(int a1, const char *a2, char *a3, char *a4, int a5) { return 0; }
/* {
const char *v5; // edi
int v6; // esi
size_t v7; // ebx
size_t v8; // eax
bool v9; // zf
bool v10; // sf
unsigned char v11; // of
int v12; // eax
char *result; // eax
v5 = a2;
v6 = a1;
v7 = strlen(a2);
v8 = v7 + strlen(a3) + 5;
v11 = __OFSUB__(a5, v8);
v9 = a5 == v8;
v10 = (signed int)(a5 - v8) < 0;
v12 = *(unsigned char *)(v6 + 4);
if ( (unsigned char)(v10 ^ v11) | v9 )
result = _itoa(v12, a4, 10);
else
result = (char *)sprintf(a4, "%d\r%s\r%s", v12, v5, a3);
return result;
} */
// ref: 0x10003E61
signed int __fastcall Connect_10003E61(const char *a1, _BYTE *a2) { return 0; }
/* {
_BYTE *v2; // esi
const char *v3; // edi
int v4; // eax
int v5; // edi
int v6; // edx
short v7; // di
char v8; // cl
int v10; // [esp+Ch] [ebp-24h]
unsigned int v11; // [esp+10h] [ebp-20h]
unsigned int v12; // [esp+14h] [ebp-1Ch]
unsigned int v13; // [esp+18h] [ebp-18h]
int v14; // [esp+1Ch] [ebp-14h]
int v15; // [esp+20h] [ebp-10h]
int v16; // [esp+24h] [ebp-Ch]
int v17; // [esp+28h] [ebp-8h]
int v18; // [esp+2Ch] [ebp-4h]
v2 = a2;
v3 = a1;
memset(a2, 0, 0x2Cu);
if ( !*v3 )
return 0;
v4 = *(_DWORD *)v3;
if ( *(_DWORD *)v3 != 1146246220 && v4 != 1146308690 && v4 != 1146377044 )
return 0;
if ( sscanf(v3 + 4, "%d %d %d %d %d %d %d %d %d", &v13, &v12, &v11, &v18, &v17, &v16, &v15, &v10, &v14) != 9 )
return 0;
v5 = *(_DWORD *)v3;
v6 = v14;
if ( v5 == 1146246220 )
{
if ( v14 )
return 0;
}
if ( v5 == 1146308690 && !v14 )
return 0;
v7 = v13;
if ( !v13 )
return 0;
if ( v13 > 0x63 )
return 0;
v8 = v12;
if ( v12 >= 3 || v11 > 3 || v18 < 0 || v17 < 0 || v16 < 0 || v15 < 0 )
return 0;
v2[23] = v11;
*((_WORD *)v2 + 10) = v7;
*((_WORD *)v2 + 12) = (unsigned char)v18;
v2[22] = v8;
*((_WORD *)v2 + 13) = (unsigned char)v17;
*((_DWORD *)v2 + 10) = v6;
*((_WORD *)v2 + 14) = (unsigned char)v16;
*((_WORD *)v2 + 15) = (unsigned char)v15;
*((_DWORD *)v2 + 8) = v10;
return 1;
} */
// ref: 0x10003F6F
int __fastcall Connect_10003F6F(int a1, int a2, size_t a3) { return 0; }
/* {
*(_DWORD *)a2 = dword_10029610;
return _snprintf(
(char *)(a2 + 4),
a3,
" %d %d %d %d %d %d %d %d %d",
*(unsigned short *)(a1 + 20),
*(unsigned char *)(a1 + 22),
*(unsigned char *)(a1 + 23),
*(unsigned short *)(a1 + 24),
*(unsigned short *)(a1 + 26),
*(unsigned short *)(a1 + 28),
*(unsigned short *)(a1 + 30),
*(_DWORD *)(a1 + 32),
*(_DWORD *)(a1 + 40));
} */
// 10029610: using guessed type int dword_10029610;
// ref: 0x10003FB7
int __stdcall UiCreateGameCriteria(int a1, char *a2) { return 0; }
/* {
return sprintf(a2, "#%d?%d", 3, *(unsigned short *)(a1 + 20));
} */
// ref: 0x10003FD6
int __stdcall UiCreatePlayerDescription(_uiheroinfo *info, int mode, char *desc) { return 0; }
/* {
dword_10029610 = a2;
Connect_10003F6F(a1, a3, 0x80u);
return 1;
} */
// 10029610: using guessed type int dword_10029610;
// ref: 0x10003FF7
int __stdcall UiSetupPlayerInfo(char *str, _uiheroinfo *info, int mode) { return 0; }
/* {
dword_10029610 = a3;
SStrCopy(&unk_10029530, a1, 128);
return Connect_10003F6F(a2, (int)byte_100294B0, 0x80u);
} */
// 100103E8: using guessed type int __stdcall SStrCopy(_DWORD, _DWORD, _DWORD);
// 10029610: using guessed type int dword_10029610;
// ref: 0x10004028
int __fastcall Connect_10004028(int a1, int a2, int a3, int a4) { return 0; }
/* {
int result; // eax
if ( a1 )
result = SStrCopy(a1, &unk_10029530, a2);
if ( a3 )
result = SStrCopy(a3, byte_100294B0, a4);
return result;
} */
// 100103E8: using guessed type int __stdcall SStrCopy(_DWORD, _DWORD, _DWORD);