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
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);
|
|
|