// ref: 0x1000C610
void * SelIPX_1000C610 ( ) { return 0 ; }
/* {
return SMemAlloc ( 268 , " C: \\ Src \\ Diablo \\ DiabloUI \\ SelIPX.cpp " , 105 , 0 ) ;
} */
// 10010364: using guessed type int __stdcall SMemAlloc(_DWORD, _DWORD, _DWORD, _DWORD);
// ref: 0x1000C629
signed int SelIPX_1000C629 ( ) { return 0 ; }
/* {
signed int result ; // eax
result = 2139095040 ;
dword_1002A4A4 = 2139095040 ;
return result ;
} */
// 1002A4A4: using guessed type int dword_1002A4A4;
// ref: 0x1000C634
BOOL __fastcall SelIPX_1000C634 ( int a1 , int a2 , int a3 , _DWORD * a4 , int a5 , int playerid ) { return 0 ; }
/* {
int v6 ; // esi
dword_1002A49C = a3 ;
dword_1002A4AC = a2 ;
dword_1002A4BC = a5 ;
dword_1002A4A0 = a4 ;
gnIpxPlayerid = playerid ;
artfont_10001159 ( ) ;
v6 = SDlgDialogBoxParam ( hInstance , " SELIPXGAME_DIALOG " , a4 [ 2 ] , SelIPX_1000C692 , 0 ) ;
artfont_100010C8 ( ) ;
return v6 = = 1 ;
} */
// 10010370: using guessed type int __stdcall SDlgDialogBoxParam(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
// 1002A49C: using guessed type int dword_1002A49C;
// 1002A4A8: using guessed type int gnIpxPlayerid;
// 1002A4AC: using guessed type int dword_1002A4AC;
// 1002A4BC: using guessed type int dword_1002A4BC;
// ref: 0x1000C692
int __stdcall SelIPX_1000C692 ( HWND hWnd , UINT Msg , WPARAM wParam , LPARAM lParam ) { return 0 ; }
/* {
HWND v4 ; // eax
HWND v6 ; // eax
int v7 ; // [esp+0h] [ebp-Ch]
int savedregs ; // [esp+Ch] [ebp+0h]
if ( Msg > 0x113 )
{
switch ( Msg )
{
case 0x201u :
goto LABEL_35 ;
case 0x202u :
v6 = GetDlgItem ( hWnd , 1105 ) ;
if ( ! Sbar_100099C0 ( v6 ) )
return SDlgDefDialogProc ( hWnd , Msg , wParam , lParam ) ;
goto LABEL_12 ;
case 0x203u :
LABEL_35 :
SelIPX_1000D696 ( hWnd , ( unsigned short ) lParam , ( unsigned int ) lParam > > 16 ) ;
return SDlgDefDialogProc ( hWnd , Msg , wParam , lParam ) ;
}
if ( Msg ! = 2024 )
return SDlgDefDialogProc ( hWnd , Msg , wParam , lParam ) ;
if ( ! Fade_1000739F ( ) )
Fade_100073FD ( hWnd , v7 ) ;
return 0 ;
}
if ( Msg = = 275 )
{
if ( wParam = = 3 )
SelIPX_1000C9DA ( hWnd ) ;
return 0 ;
}
if ( Msg = = 2 )
{
SelIPX_1000CC41 ( hWnd ) ;
return SDlgDefDialogProc ( hWnd , Msg , wParam , lParam ) ;
}
if ( Msg < = 0x103 )
return SDlgDefDialogProc ( hWnd , Msg , wParam , lParam ) ;
if ( Msg < = 0x105 )
{
v4 = ( HWND ) SDrawGetFrameWindow ( NULL ) ;
SendMessageA ( v4 , Msg , wParam , lParam ) ;
return SDlgDefDialogProc ( hWnd , Msg , wParam , lParam ) ;
}
if ( Msg = = 272 )
{
SelIPX_1000CD4A ( hWnd ) ;
PostMessageA ( hWnd , 0x7E8u , 0 , 0 ) ;
return 0 ;
}
if ( Msg = = 273 )
{
if ( HIWORD ( wParam ) = = 7 )
{
Focus_100075B7 ( hWnd , ( HWND ) lParam ) ;
return SDlgDefDialogProc ( hWnd , Msg , wParam , lParam ) ;
}
if ( HIWORD ( wParam ) ! = 6 )
{
if ( wParam = = 327681 )
{
SelIPX_1000D3C5 ( hWnd , ( int ) & savedregs ) ;
}
else if ( ( _WORD ) wParam = = 2 )
{
SelIPX_1000D3A0 ( ( int ) hWnd , 2 ) ;
}
return SDlgDefDialogProc ( hWnd , Msg , wParam , lParam ) ;
}
Focus_10007458 ( ( void * ) lParam ) ;
Focus_100075DC ( hWnd , ( HWND ) lParam ) ;
SelIPX_1000C818 ( hWnd , ( unsigned short ) wParam ) ;
LABEL_12 :
SelIPX_1000C982 ( hWnd ) ;
}
return SDlgDefDialogProc ( hWnd , Msg , wParam , lParam ) ;
} */
// 1001037C: using guessed type int __stdcall SDlgDefDialogProc(_DWORD, _DWORD, _DWORD, _DWORD);
// 10010382: using guessed type _DWORD __stdcall SDrawGetFrameWindow();
// ref: 0x1000C818
LONG __fastcall SelIPX_1000C818 ( HWND hDlg , int nIDDlgItem ) { return 0 ; }
/* {
HWND v2 ; // ebx
HWND v3 ; // edi
LONG result ; // eax
const char * v5 ; // edi
int v6 ; // eax
CHAR * v7 ; // edx
CHAR v8 ; // [esp+Ch] [ebp-280h]
CHAR v9 ; // [esp+10Ch] [ebp-180h]
char v10 ; // [esp+18Ch] [ebp-100h]
CHAR Buffer ; // [esp+20Ch] [ebp-80h]
CHAR v12 ; // [esp+22Ch] [ebp-60h]
char v13 ; // [esp+24Ch] [ebp-40h]
unsigned short v14 ; // [esp+260h] [ebp-2Ch]
unsigned char v15 ; // [esp+262h] [ebp-2Ah]
char v16 ; // [esp+278h] [ebp-14h]
unsigned char v17 ; // [esp+27Ch] [ebp-10h]
int v18 ; // [esp+280h] [ebp-Ch]
int v19 ; // [esp+284h] [ebp-8h]
HWND hWnd ; // [esp+288h] [ebp-4h]
v2 = hDlg ;
v3 = GetDlgItem ( hDlg , nIDDlgItem ) ;
hWnd = GetDlgItem ( v2 , 1098 ) ;
result = GetWindowLongA ( v3 , - 21 ) ;
if ( result )
{
result = * ( _DWORD * ) ( result + 12 ) ;
if ( result )
{
v5 = ( const char * ) ( result + 140 ) ;
if ( * ( _DWORD * ) ( result + 4 ) )
{
if ( result = = - 140 | | strlen ( ( const char * ) ( result + 140 ) ) < 0x10 )
{
v6 = GetWindowLongA ( hWnd , - 21 ) ;
v7 = ( CHAR * ) & byte_10029448 ;
}
else
{
v19 = ( int ) & byte_10029448 ;
v18 = ( int ) & byte_10029448 ;
strcpy ( & v10 , v5 ) ;
if ( Connect_10003DAF ( & v10 , ( int ) & v16 , ( int ) & v19 , ( int ) & v18 )
& & Connect_10003E61 ( ( const char * ) v18 , & v13 ) )
{
LoadStringA ( hInstance , v17 + 1003 , & Buffer , 31 ) ; //"Normal Difficulty","Nightmare Difficulty", "Hell Difficulty"
LoadStringA ( hInstance , v15 + 4 , & v12 , 31 ) ; //"Warrior","Rogue","Sorcerer"
LoadStringA ( hInstance , 0x31u , & v9 , 127 ) ; //"%s.\nCreated by %s, a level %d %s."
wsprintfA ( & v8 , & v9 , & Buffer , v19 , v14 , & v12 ) ;
v6 = GetWindowLongA ( hWnd , - 21 ) ;
v7 = & v8 ;
}
else
{
v6 = GetWindowLongA ( hWnd , - 21 ) ;
v7 = 0 ;
}
}
}
else
{
v6 = GetWindowLongA ( hWnd , - 21 ) ;
v7 = ( CHAR * ) v5 ;
}
local_10007FA4 ( v6 , v7 ) ;
result = Doom_10006A13 ( v2 , ( int * ) & unk_10023104 , 1 ) ;
}
}
return result ;
} */
// ref: 0x1000C982
HWND UNKCALL SelIPX_1000C982 ( HWND hDlg ) { return 0 ; }
/* {
HWND v1 ; // esi
int v2 ; // eax
v1 = hDlg ;
v2 = SelIPX_1000C99F ( ) ;
return Sbar_10009A99 ( v1 , 1105 , dword_1002A4B8 , v2 ) ;
} */
// ref: 0x1000C99F
int SelIPX_1000C99F ( ) { return 0 ; }
/* {
HWND v0 ; // eax
LONG v1 ; // eax
_DWORD * v2 ; // ecx
_DWORD * v3 ; // eax
int v5 ; // edx
v0 = GetFocus ( ) ;
if ( ! v0 )
return 0 ;
v1 = GetWindowLongA ( v0 , - 21 ) ;
if ( ! v1 )
return 0 ;
v2 = ( _DWORD * ) dword_1002A4B4 ;
if ( ! dword_1002A4B4 )
return 0 ;
v3 = * ( _DWORD * * ) ( v1 + 12 ) ;
if ( ! v3 )
return 0 ;
v5 = 0 ;
do
{
if ( v2 = = v3 )
break ;
v2 = ( _DWORD * ) * v2 ;
+ + v5 ;
}
while ( v2 ) ;
return v5 ;
} */
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000C9DA
const char * UNKCALL SelIPX_1000C9DA ( HWND hDlg ) { return 0 ; }
/* {
HWND v1 ; // esi
const char * result ; // eax
int v3 ; // ST0C_4
HWND v4 ; // eax
HWND v5 ; // eax
int v6 ; // eax
v1 = hDlg ;
dword_1002A4B0 = 0 ;
SelIPX_1000CA64 ( ( _DWORD * ) dword_1002A4B4 ) ;
SNetEnumGames ( 0 , 0 , SelIPX_1000CAD5 , 0 ) ;
result = ( const char * ) SelIPX_1000CA71 ( ( _DWORD * ) dword_1002A4B4 ) ;
dword_1002A4B4 = ( int ) result ;
if ( dword_1002A4B0 )
{
SelIPX_1000CB83 ( v1 , result ) ;
v3 = dword_1002A4B8 > 6 ;
v4 = GetDlgItem ( v1 , 1105 ) ;
ShowWindow ( v4 , v3 ) ;
v5 = GetFocus ( ) ;
v6 = GetWindowLongA ( v5 , - 12 ) ;
SelIPX_1000C818 ( v1 , v6 ) ;
result = ( const char * ) SelIPX_1000C982 ( v1 ) ;
}
return result ;
} */
// 10010436: using guessed type int __stdcall SNetEnumGames(_DWORD, _DWORD, _DWORD, _DWORD);
// 1002A4B0: using guessed type int dword_1002A4B0;
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000CA64
void __fastcall SelIPX_1000CA64 ( _DWORD * a1 ) { return ; }
/* {
while ( a1 )
{
a1 [ 2 ] = 0 ;
a1 = ( _DWORD * ) * a1 ;
}
} */
// ref: 0x1000CA71
_DWORD * * __fastcall SelIPX_1000CA71 ( _DWORD * a1 ) { return 0 ; }
/* {
_DWORD * * v1 ; // edi
_DWORD * v2 ; // esi
v1 = ( _DWORD * * ) a1 ;
v2 = 0 ;
while ( a1 )
{
if ( a1 [ 2 ] | | ! a1 [ 1 ] )
{
v2 = a1 ;
a1 = ( _DWORD * ) * a1 ;
}
else
{
if ( v2 )
* v2 = * a1 ;
else
v1 = ( _DWORD * * ) * a1 ;
SelIPX_1000CAC1 ( a1 ) ;
- - dword_1002A4B8 ;
dword_1002A4B0 = 1 ;
if ( v2 )
a1 = ( _DWORD * ) * v2 ;
else
a1 = * v1 ;
}
}
return v1 ;
} */
// 1002A4B0: using guessed type int dword_1002A4B0;
// ref: 0x1000CAC1
int UNKCALL SelIPX_1000CAC1 ( void * arg ) { return 0 ; }
/* {
int result ; // eax
if ( arg )
result = SMemFree ( arg , " C: \\ Src \\ Diablo \\ DiabloUI \\ SelIPX.cpp " , 110 , 0 ) ;
return result ;
} */
// 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD);
// ref: 0x1000CAD5
void * __stdcall SelIPX_1000CAD5 ( int a1 , char * a2 , char * a3 ) { return 0 ; }
/* {
_DWORD * v3 ; // eax
int result ; // eax
int v5 ; // esi
_DWORD * v6 ; // eax
v3 = SelIPX_1000CB73 ( ( _DWORD * ) dword_1002A4B4 , a1 ) ;
if ( v3 )
{
v3 [ 2 ] = 1 ;
}
else
{
result = SelIPX_1000C610 ( ) ;
v5 = result ;
if ( ! result )
return result ;
* ( _DWORD * ) result = 0 ;
* ( _DWORD * ) ( result + 4 ) = a1 ;
* ( _DWORD * ) ( result + 8 ) = 1 ;
strcpy ( ( char * ) ( result + 12 ) , a2 ) ;
strcpy ( ( char * ) ( v5 + 140 ) , a3 ) ;
v6 = SelIPX_1000CB50 ( ( _DWORD * ) dword_1002A4B4 , ( _DWORD * ) v5 ) ;
+ + dword_1002A4B8 ;
dword_1002A4B4 = ( int ) v6 ;
dword_1002A4B0 = 1 ;
}
return 1 ;
} */
// 1002A4B0: using guessed type int dword_1002A4B0;
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000CB50
_DWORD * __fastcall SelIPX_1000CB50 ( _DWORD * a1 , _DWORD * a2 ) { return 0 ; }
/* {
_DWORD * result ; // eax
_DWORD * v3 ; // edi
_DWORD * i ; // esi
result = a1 ;
v3 = 0 ;
for ( i = a1 ; i ; i = ( _DWORD * ) * i )
v3 = i ;
* a2 = i ;
if ( ! v3 )
return a2 ;
* v3 = a2 ;
return result ;
} */
// ref: 0x1000CB73
_DWORD * __fastcall SelIPX_1000CB73 ( _DWORD * a1 , int a2 ) { return 0 ; }
/* {
_DWORD * result ; // eax
for ( result = a1 ; result & & result [ 1 ] ! = a2 ; result = ( _DWORD * ) * result )
;
return result ;
} */
// ref: 0x1000CB83
int __fastcall SelIPX_1000CB83 ( HWND a1 , const char * a2 ) { return 0 ; }
/* {
int * v2 ; // ebp
HWND v3 ; // eax
HWND v4 ; // esi
int v5 ; // eax
int v6 ; // eax
const char * v8 ; // [esp+4h] [ebp-8h]
HWND hDlg ; // [esp+8h] [ebp-4h]
v8 = a2 ;
hDlg = a1 ;
v2 = & dword_10023118 ;
if ( dword_10023118 )
{
do
{
v3 = GetDlgItem ( hDlg , * v2 ) ;
v4 = v3 ;
if ( v3 )
{
if ( v8 )
{
EnableWindow ( v3 , 1 ) ;
v6 = GetWindowLongA ( v4 , - 21 ) ;
if ( v6 )
{
* ( _DWORD * ) ( v6 + 12 ) = v8 ;
local_10007FA4 ( v6 , v8 + 12 ) ;
}
v8 = * ( const char * * ) v8 ;
}
else
{
if ( v3 = = GetFocus ( ) )
SelIPX_1000CCD9 ( v4 ) ;
EnableWindow ( v4 , 0 ) ;
v5 = GetWindowLongA ( v4 , - 21 ) ;
if ( v5 )
{
* ( _DWORD * ) ( v5 + 12 ) = 0 ;
local_10007FA4 ( v5 , & byte_10029448 ) ;
}
}
}
+ + v2 ;
}
while ( * v2 ) ;
}
return Doom_1000680A ( hDlg , & dword_10023118 , 2 , 1 ) ;
} */
// 10023118: using guessed type int dword_10023118;
// ref: 0x1000CC41
int UNKCALL SelIPX_1000CC41 ( HWND hDlg ) { return 0 ; }
/* {
HWND v1 ; // esi
_DWORD * v2 ; // eax
v1 = hDlg ;
SelIPX_1000CCC5 ( ( _DWORD * ) dword_1002A4B4 ) ;
dword_1002A4B4 = 0 ;
Sbar_10009CD2 ( v1 , 1105 ) ;
Doom_10006C53 ( v1 , & dword_10023118 ) ;
Doom_10006C53 ( v1 , ( int * ) & unk_1002310C ) ;
Doom_10006C53 ( v1 , ( int * ) & unk_10023104 ) ;
Doom_10006C53 ( v1 , ( int * ) & unk_100230FC ) ;
Doom_10006C53 ( v1 , ( int * ) & unk_100230F0 ) ;
v2 = ( _DWORD * ) GetWindowLongA ( v1 , - 21 ) ;
local_10007F72 ( v2 ) ;
Title_100100E7 ( v1 ) ;
Focus_10007818 ( v1 ) ;
return SDrawClearSurface ( ) ;
} */
// 1001043C: using guessed type _DWORD __stdcall SDrawClearSurface();
// 10023118: using guessed type int dword_10023118;
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000CCC5
int __fastcall SelIPX_1000CCC5 ( _DWORD * a1 ) { return 0 ; }
/* {
_DWORD * v1 ; // esi
int result ; // eax
if ( a1 )
{
do
{
v1 = ( _DWORD * ) * a1 ;
result = SelIPX_1000CAC1 ( a1 ) ;
a1 = v1 ;
}
while ( v1 ) ;
}
return result ;
} */
// ref: 0x1000CCD9
HWND UNKCALL SelIPX_1000CCD9 ( HWND hWnd ) { return 0 ; }
/* {
HWND v1 ; // edi
HWND v2 ; // ebx
int nIDDlgItem [ 1085 ] ; // [esp+0h] [ebp-1118h]
int v5 ; // [esp+10F4h] [ebp-24h]
int v6 ; // [esp+1100h] [ebp-18h]
int v7 ; // [esp+1104h] [ebp-14h]
int v8 ; // [esp+1108h] [ebp-10h]
int v9 ; // [esp+110Ch] [ebp-Ch]
int v10 ; // [esp+1110h] [ebp-8h]
int v11 ; // [esp+1114h] [ebp-4h]
v1 = hWnd ;
v6 = 1093 ;
v7 = 1088 ;
v8 = 1089 ;
v9 = 1090 ;
v10 = 1091 ;
v11 = 1092 ;
v2 = GetParent ( hWnd ) ;
do
{
v5 = nIDDlgItem [ GetWindowLongA ( v1 , - 12 ) ] ;
v1 = GetDlgItem ( v2 , v5 ) ;
}
while ( ! IsWindowEnabled ( v1 ) ) ;
return SetFocus ( v1 ) ;
} */
// 1000CCD9: using guessed type int nIDDlgItem[1085];
// ref: 0x1000CD4A
HWND UNKCALL SelIPX_1000CD4A ( HWND hWnd ) { return 0 ; }
/* {
HWND v1 ; // esi
HWND v2 ; // ST1C_4
int v3 ; // eax
int * v4 ; // edi
HWND v5 ; // ebp
int v6 ; // eax
HWND result ; // eax
HWND v8 ; // eax
HWND v9 ; // [esp+0h] [ebp-4Ch]
CHAR Buffer ; // [esp+Ch] [ebp-40h]
v1 = hWnd ;
SelIPX_1000CEE6 ( hWnd ) ;
Focus_100077E9 ( ( int ) v1 , " ui_art \\ focus16.pcx " , v9 ) ;
Title_1001009E ( v1 , ( int ) " ui_art \\ smlogo.pcx " , v2 ) ;
v3 = local_10007F46 ( ) ;
v4 = ( int * ) v3 ;
if ( v3 )
{
SetWindowLongA ( v1 , - 21 , v3 ) ;
local_10007944 ( ( int ) v1 , 0 , & byte_10029448 , - 1 , 1 , ( int ) " ui_art \\ selgame.pcx " , v4 , v4 + 1 , 0 ) ;
Fade_100073C5 ( v1 , 1 ) ;
}
if ( SelGame_1000B67E ( ) ! = 1230002254 )
{
v5 = GetDlgItem ( v1 , 1038 ) ;
LoadStringA ( hInstance , 0x4Du , & Buffer , 63 ) ; //"Join Games"
SetWindowTextA ( v5 , & Buffer ) ;
}
Doom_100068AB ( v1 , ( int * ) & unk_100230F0 , 5 ) ;
Doom_100068AB ( v1 , ( int * ) & unk_100230FC , 3 ) ;
Doom_100068AB ( v1 , ( int * ) & unk_10023104 , 1 ) ;
Doom_1000658C ( v1 , ( int * ) & unk_1002310C , 4 , 0 ) ;
Doom_1000658C ( v1 , & dword_10023118 , 2 , 1 ) ;
dword_1002A4B8 = 0 ;
v6 = SelIPX_1000C610 ( ) ;
dword_1002A4B4 = v6 ;
if ( v6 )
{
+ + dword_1002A4B8 ;
* ( _DWORD * ) ( v6 + 4 ) = 0 ;
* ( _BYTE * ) ( dword_1002A4B4 + 140 ) = 0 ;
* ( _DWORD * ) dword_1002A4B4 = 0 ;
LoadStringA ( hInstance , 0x24u , ( LPSTR ) ( dword_1002A4B4 + 12 ) , 127 ) ; //"Create Game"
LoadStringA ( hInstance , 0x2Au , ( LPSTR ) ( dword_1002A4B4 + 140 ) , 127 ) ; //"Create a new game with a difficulty setting of your choice."
}
SNetEnumGames ( 0 , 0 , SelIPX_1000CAD5 , 0 ) ;
SelIPX_1000CB83 ( v1 , ( const char * ) dword_1002A4B4 ) ;
SDlgSetTimer ( v1 , 3 , 1000 , 0 ) ;
result = Sbar_10009BF1 ( v1 , 1105 ) ;
if ( dword_1002A4B8 < = 6 )
{
v8 = GetDlgItem ( v1 , 1105 ) ;
result = ( HWND ) ShowWindow ( v8 , 0 ) ;
}
return result ;
} */
// 10010412: using guessed type int __stdcall SDlgSetTimer(_DWORD, _DWORD, _DWORD, _DWORD);
// 10010436: using guessed type int __stdcall SNetEnumGames(_DWORD, _DWORD, _DWORD, _DWORD);
// 10023118: using guessed type int dword_10023118;
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000CEE6
void UNKCALL SelIPX_1000CEE6 ( HWND hDlg ) { return ; }
/* {
HWND v1 ; // ebx
int * v2 ; // edi
HWND v3 ; // eax
HWND v4 ; // esi
void * v5 ; // eax
v1 = hDlg ;
v2 = & dword_10023118 ;
if ( dword_10023118 )
{
do
{
v3 = GetDlgItem ( v1 , * v2 ) ;
v4 = v3 ;
if ( v3 )
{
v5 = ( void * ) GetWindowLongA ( v3 , - 4 ) ;
SetPropA ( v4 , " UIOLDPROC " , v5 ) ;
SetWindowLongA ( v4 , - 4 , ( LONG ) SelIPX_1000CF38 ) ;
}
+ + v2 ;
}
while ( * v2 ) ;
}
} */
// 10023118: using guessed type int dword_10023118;
// ref: 0x1000CF38
LRESULT __stdcall SelIPX_1000CF38 ( HWND hWnd , UINT Msg , WPARAM wParam , LPARAM lParam ) { return 0 ; }
/* {
LRESULT ( __stdcall * v4 ) ( HWND , UINT , WPARAM , LPARAM ) ; // edi
HWND v5 ; // eax
UINT v7 ; // [esp-Ch] [ebp-18h]
WPARAM v8 ; // [esp-8h] [ebp-14h]
LPARAM v9 ; // [esp-4h] [ebp-10h]
v4 = ( LRESULT ( __stdcall * ) ( HWND , UINT , WPARAM , LPARAM ) ) GetPropA ( hWnd , " UIOLDPROC " ) ;
switch ( Msg )
{
case 2u :
RemovePropA ( hWnd , " UIOLDPROC " ) ;
if ( ! v4 )
return DefWindowProcA ( hWnd , Msg , wParam , lParam ) ;
SetWindowLongA ( hWnd , - 4 , ( LONG ) v4 ) ;
break ;
case 0xFu :
local_10007C95 ( hWnd ) ;
return 0 ;
case 0x87u :
return 4 ;
case 0x100u :
if ( wParam > 0x21 )
{
if ( wParam = = 34 )
{
SelIPX_1000D0E1 ( hWnd ) ;
return 0 ;
}
if ( wParam > 0x24 )
{
if ( wParam < = 0x26 )
{
SelIPX_1000D31C ( hWnd ) ;
return 0 ;
}
if ( wParam < = 0x28 )
{
SelIPX_1000D284 ( hWnd ) ;
return 0 ;
}
if ( wParam = = 46 )
{
v9 = lParam ;
v8 = 46 ;
v7 = 256 ;
goto LABEL_24 ;
}
}
}
else
{
switch ( wParam )
{
case 0x21u :
SelIPX_1000D1D4 ( hWnd ) ;
break ;
case 9u :
if ( GetKeyState ( 16 ) > = 0 )
SelIPX_1000D070 ( hWnd ) ;
else
SelIPX_1000CCD9 ( hWnd ) ;
return 0 ;
case 0xDu :
goto LABEL_38 ;
case 0x1Bu :
v9 = 0 ;
v8 = 2 ;
goto LABEL_12 ;
case 0x20u :
LABEL_38 :
v9 = 0 ;
v8 = 1 ;
LABEL_12 :
v7 = 273 ;
LABEL_24 :
v5 = GetParent ( hWnd ) ;
SendMessageA ( v5 , v7 , v8 , v9 ) ;
return 0 ;
}
}
return 0 ;
}
if ( v4 )
return CallWindowProcA ( v4 , hWnd , Msg , wParam , lParam ) ;
return DefWindowProcA ( hWnd , Msg , wParam , lParam ) ;
} */
// ref: 0x1000D070
HWND UNKCALL SelIPX_1000D070 ( HWND hWnd ) { return 0 ; }
/* {
HWND v1 ; // edi
HWND v2 ; // ebx
int nIDDlgItem [ 1085 ] ; // [esp+0h] [ebp-1118h]
int v5 ; // [esp+10F4h] [ebp-24h]
int v6 ; // [esp+1100h] [ebp-18h]
int v7 ; // [esp+1104h] [ebp-14h]
int v8 ; // [esp+1108h] [ebp-10h]
int v9 ; // [esp+110Ch] [ebp-Ch]
int v10 ; // [esp+1110h] [ebp-8h]
int v11 ; // [esp+1114h] [ebp-4h]
v1 = hWnd ;
v6 = 1089 ;
v7 = 1090 ;
v8 = 1091 ;
v9 = 1092 ;
v10 = 1093 ;
v11 = 1088 ;
v2 = GetParent ( hWnd ) ;
do
{
v5 = nIDDlgItem [ GetWindowLongA ( v1 , - 12 ) ] ;
v1 = GetDlgItem ( v2 , v5 ) ;
}
while ( ! IsWindowEnabled ( v1 ) ) ;
return SetFocus ( v1 ) ;
} */
// 1000D070: using guessed type int nIDDlgItem[1085];
// ref: 0x1000D0E1
HWND UNKCALL SelIPX_1000D0E1 ( HWND hWnd ) { return 0 ; }
/* {
HWND v1 ; // ebp
HWND result ; // eax
HWND v3 ; // esi
HWND v4 ; // ebx
HWND v5 ; // eax
_DWORD * v6 ; // eax
int v7 ; // eax
const char * v8 ; // ebx
int v9 ; // eax
v1 = hWnd ;
result = GetParent ( hWnd ) ;
v3 = result ;
if ( result )
{
result = GetDlgItem ( result , 1088 ) ;
v4 = result ;
if ( result )
{
v5 = GetDlgItem ( v3 , 1093 ) ;
result = ( HWND ) GetWindowLongA ( v5 , - 21 ) ;
if ( result )
{
v6 = ( _DWORD * ) * ( ( _DWORD * ) result + 3 ) ;
if ( v6 & & * v6 )
{
v7 = SelIPX_1000D18C ( v4 ) + 6 ;
if ( v7 > dword_1002A4B8 - 6 )
v7 = dword_1002A4B8 - 6 ;
result = ( HWND ) SelIPX_1000D1C1 ( v7 ) ;
v8 = ( const char * ) result ;
if ( result )
{
TitleSnd_10010315 ( ) ;
SelIPX_1000CB83 ( v3 , v8 ) ;
v9 = GetWindowLongA ( v1 , - 12 ) ;
SelIPX_1000C818 ( v3 , v9 ) ;
result = SelIPX_1000C982 ( v3 ) ;
}
}
else
{
result = SelIPX_1000CCD9 ( v4 ) ;
}
}
}
}
return result ;
} */
// ref: 0x1000D18C
int UNKCALL SelIPX_1000D18C ( HWND hWnd ) { return 0 ; }
/* {
LONG v1 ; // eax
_DWORD * v2 ; // ecx
_DWORD * v3 ; // eax
int v5 ; // edx
if ( ! hWnd )
return 0 ;
v1 = GetWindowLongA ( hWnd , - 21 ) ;
if ( ! v1 )
return 0 ;
v2 = ( _DWORD * ) dword_1002A4B4 ;
if ( ! dword_1002A4B4 )
return 0 ;
v3 = * ( _DWORD * * ) ( v1 + 12 ) ;
if ( ! v3 )
return 0 ;
v5 = 0 ;
do
{
if ( v2 = = v3 )
break ;
v2 = ( _DWORD * ) * v2 ;
+ + v5 ;
}
while ( v2 ) ;
return v5 ;
} */
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000D1C1
_DWORD * __fastcall SelIPX_1000D1C1 ( int a1 ) { return 0 ; }
/* {
_DWORD * result ; // eax
result = ( _DWORD * ) dword_1002A4B4 ;
while ( result & & a1 )
{
result = ( _DWORD * ) * result ;
- - a1 ;
}
return result ;
} */
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000D1D4
HWND UNKCALL SelIPX_1000D1D4 ( HWND hWnd ) { return 0 ; }
/* {
HWND result ; // eax
HWND v2 ; // esi
HWND v3 ; // edi
HWND v4 ; // eax
int v5 ; // eax
const char * v6 ; // edi
int v7 ; // eax
HWND hWnda ; // [esp+10h] [ebp-4h]
hWnda = hWnd ;
result = GetParent ( hWnd ) ;
v2 = result ;
if ( result )
{
result = GetDlgItem ( result , 1088 ) ;
v3 = result ;
if ( result )
{
result = ( HWND ) GetWindowLongA ( result , - 21 ) ;
if ( result )
{
result = ( HWND ) * ( ( _DWORD * ) result + 3 ) ;
if ( result )
{
if ( result = = ( HWND ) dword_1002A4B4 )
{
v4 = GetDlgItem ( v2 , 1093 ) ;
result = SelIPX_1000D070 ( v4 ) ;
}
else
{
v5 = SelIPX_1000D18C ( v3 ) - 6 ;
if ( v5 < 0 )
v5 = 0 ;
result = ( HWND ) SelIPX_1000D1C1 ( v5 ) ;
v6 = ( const char * ) result ;
if ( result )
{
TitleSnd_10010315 ( ) ;
SelIPX_1000CB83 ( v2 , v6 ) ;
v7 = GetWindowLongA ( hWnda , - 12 ) ;
SelIPX_1000C818 ( v2 , v7 ) ;
result = SelIPX_1000C982 ( v2 ) ;
}
}
}
}
}
}
return result ;
} */
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000D284
HWND UNKCALL SelIPX_1000D284 ( HWND hWnd ) { return 0 ; }
/* {
HWND v1 ; // edi
HWND result ; // eax
HWND v3 ; // eax
const char * v4 ; // ebp
HWND v5 ; // eax
int v6 ; // ebx
HWND v7 ; // eax
HWND v8 ; // eax
v1 = hWnd ;
result = ( HWND ) GetWindowLongA ( hWnd , - 21 ) ;
if ( result )
{
result = ( HWND ) * ( ( _DWORD * ) result + 3 ) ;
if ( result )
{
if ( * ( _DWORD * ) result )
{
if ( GetWindowLongA ( v1 , - 12 ) > = 1093 )
{
v3 = GetParent ( v1 ) ;
result = GetDlgItem ( v3 , 1089 ) ;
if ( result )
{
result = ( HWND ) GetWindowLongA ( result , - 21 ) ;
if ( result )
{
v4 = ( const char * ) * ( ( _DWORD * ) result + 3 ) ;
if ( v4 )
{
TitleSnd_10010315 ( ) ;
v5 = GetParent ( v1 ) ;
SelIPX_1000CB83 ( v5 , v4 ) ;
v6 = GetWindowLongA ( v1 , - 12 ) ;
v7 = GetParent ( v1 ) ;
SelIPX_1000C818 ( v7 , v6 ) ;
v8 = GetParent ( v1 ) ;
result = SelIPX_1000C982 ( v8 ) ;
}
}
}
}
else
{
result = SelIPX_1000D070 ( v1 ) ;
}
}
}
}
return result ;
} */
// ref: 0x1000D31C
HWND UNKCALL SelIPX_1000D31C ( HWND hWnd ) { return 0 ; }
/* {
HWND v1 ; // edi
HWND result ; // eax
const char * v3 ; // ebx
HWND v4 ; // eax
int v5 ; // ebx
HWND v6 ; // eax
HWND v7 ; // eax
v1 = hWnd ;
if ( GetWindowLongA ( hWnd , - 12 ) > 1088 )
return SelIPX_1000CCD9 ( v1 ) ;
result = ( HWND ) GetWindowLongA ( v1 , - 21 ) ;
if ( result )
{
result = ( HWND ) * ( ( _DWORD * ) result + 3 ) ;
if ( result )
{
v3 = ( const char * ) dword_1002A4B4 ;
if ( result ! = ( HWND ) dword_1002A4B4 )
{
while ( v3 & & * ( HWND * ) v3 ! = result )
v3 = * ( const char * * ) v3 ;
TitleSnd_10010315 ( ) ;
v4 = GetParent ( v1 ) ;
SelIPX_1000CB83 ( v4 , v3 ) ;
v5 = GetWindowLongA ( v1 , - 12 ) ;
v6 = GetParent ( v1 ) ;
SelIPX_1000C818 ( v6 , v5 ) ;
v7 = GetParent ( v1 ) ;
result = SelIPX_1000C982 ( v7 ) ;
}
}
}
return result ;
} */
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000D3A0
int __fastcall SelIPX_1000D3A0 ( int a1 , int a2 ) { return 0 ; }
/* {
int v2 ; // edi
int v3 ; // esi
v2 = a2 ;
v3 = a1 ;
Fade_100073B4 ( ) ;
SDlgKillTimer ( v3 , 3 ) ;
Fade_100072BE ( 10 ) ;
return SDlgEndDialog ( v3 , v2 ) ;
} */
// 10010376: using guessed type int __stdcall SDlgEndDialog(_DWORD, _DWORD);
// 10010418: using guessed type int __stdcall SDlgKillTimer(_DWORD, _DWORD);
// ref: 0x1000D3C5
HWND USERCALL SelIPX_1000D3C5 ( HWND hDlg , int a2 ) { return 0 ; }
/* {
HWND v2 ; // edi
HWND v3 ; // eax
HWND v4 ; // esi
HWND result ; // eax
int v6 ; // esi
HWND v7 ; // esi
int v8 ; // eax
HWND v9 ; // edi
int v10 ; // [esp-DCh] [ebp-E4h]
signed int v11 ; // [esp-5Ch] [ebp-64h]
HWND v12 ; // [esp-54h] [ebp-5Ch]
signed int v13 ; // [esp-Ch] [ebp-14h]
signed int v14 ; // [esp-8h] [ebp-10h]
int v15 ; // [esp-4h] [ebp-Ch]
int v16 ; // [esp+0h] [ebp-8h]
int v17 ; // [esp+4h] [ebp-4h]
v2 = hDlg ;
v3 = GetFocus ( ) ;
v4 = v3 ;
result = GetParent ( v3 ) ;
if ( v2 = = result )
{
result = ( HWND ) GetWindowLongA ( v4 , - 21 ) ;
if ( result )
{
v6 = * ( ( _DWORD * ) result + 3 ) ;
TitleSnd_1001031F ( ) ;
if ( * ( _DWORD * ) ( v6 + 4 ) )
{
result = ( HWND ) SelIPX_1000D5B0 ( ( int ) v2 , v6 ) ;
}
else
{
v17 = a2 ;
v7 = v2 ;
SelIPX_1000C9DA ( v2 ) ;
memcpy ( & v11 , dword_1002A4A0 , 0x50u ) ;
v11 = 80 ;
v12 = v2 ;
memset ( & v13 , 0 , 0x10u ) ;
v13 = 16 ;
v14 = 1230002254 ;
v8 = * ( _DWORD * ) ( dword_1002A4AC + 24 ) ;
v16 = 0 ;
v15 = v8 ;
v9 = GetFocus ( ) ;
SelIPX_1000D4CA ( v7 , 0 ) ;
SelIPX_1000D520 ( ( char * ) & v10 ) ;
if ( CreaDung_100051D8 (
( int ) & v13 ,
dword_1002A4AC ,
dword_1002A49C ,
( int ) & v11 ,
dword_1002A4BC ,
gnIpxPlayerid ,
0 ,
( int ) & v10 ) )
{
result = ( HWND ) SelIPX_1000D3A0 ( ( int ) v7 , 1 ) ;
}
else
{
SelIPX_1000D4CA ( v7 , 1 ) ;
result = SetFocus ( v9 ) ;
}
}
}
}
return result ;
} */
// 1000D3C5: could not find valid save-restore pair for ebp
// 1002A49C: using guessed type int dword_1002A49C;
// 1002A4A8: using guessed type int gnIpxPlayerid;
// 1002A4AC: using guessed type int dword_1002A4AC;
// 1002A4BC: using guessed type int dword_1002A4BC;
// ref: 0x1000D4CA
BOOL __fastcall SelIPX_1000D4CA ( HWND hDlg , int a2 ) { return 0 ; }
/* {
HWND v2 ; // ebx
int v3 ; // ebp
HWND v4 ; // eax
HWND v5 ; // eax
BOOL result ; // eax
int nCmdShow ; // [esp+10h] [ebp-4h]
nCmdShow = a2 ;
v2 = hDlg ;
v3 = 1088 ;
do
{
v4 = GetDlgItem ( v2 , v3 ) ;
if ( v4 )
ShowWindow ( v4 , nCmdShow ) ;
+ + v3 ;
}
while ( v3 < = 1093 ) ;
v5 = GetDlgItem ( v2 , 1105 ) ;
if ( dword_1002A4B8 > 6 )
result = ShowWindow ( v5 , nCmdShow ) ;
else
result = ShowWindow ( v5 , 0 ) ;
return result ;
} */
// ref: 0x1000D520
char * UNKCALL SelIPX_1000D520 ( char * arg ) { return 0 ; }
/* {
char * v1 ; // esi
char * result ; // eax
signed int v3 ; // edi
signed int v4 ; // eax
char v5 ; // [esp+4h] [ebp-80h]
v1 = arg ;
Connect_10004028 ( ( int ) & v5 , 128 , 0 , 0 ) ;
if ( ! SelIPX_1000D58D ( ( const char * ) dword_1002A4B4 , & v5 ) )
return strcpy ( v1 , & v5 ) ;
v3 = 2 ;
do
{
v4 = v3 + + ;
wsprintfA ( v1 , " %s %d " , & v5 , v4 ) ;
result = ( char * ) SelIPX_1000D58D ( ( const char * ) dword_1002A4B4 , v1 ) ;
}
while ( result ) ;
return result ;
} */
// 1002A4B4: using guessed type int dword_1002A4B4;
// ref: 0x1000D58D
const char * __fastcall SelIPX_1000D58D ( const char * a1 , const char * a2 ) { return 0 ; }
/* {
const char * v2 ; // edi
const char * i ; // esi
v2 = a2 ;
for ( i = a1 ; i & & _strcmpi ( i + 12 , v2 ) ; i = * ( const char * * ) i )
;
return i ;
} */
// ref: 0x1000D5B0
int __fastcall SelIPX_1000D5B0 ( int a1 , int a2 ) { return 0 ; }
/* {
int v2 ; // esi
CHAR * v3 ; // edx
CHAR v5 ; // [esp+Ch] [ebp-384h]
CHAR v6 ; // [esp+10Ch] [ebp-284h]
char v7 ; // [esp+20Ch] [ebp-184h]
CHAR Buffer ; // [esp+28Ch] [ebp-104h]
int v9 ; // [esp+30Ch] [ebp-84h]
int v10 ; // [esp+38Ch] [ebp-4h]
v2 = a2 ;
v10 = a1 ;
Connect_10004028 ( ( int ) & v9 , 128 , ( int ) & v7 , 128 ) ;
if ( UiAuthCallback ( 2 , ( int ) & v9 , & v7 , 0 , ( char * ) ( v2 + 140 ) , & v6 , 256 ) )
{
if ( SNetJoinGame ( * ( _DWORD * ) ( v2 + 4 ) , v2 + 12 , 0 , & v9 , & v7 , gnIpxPlayerid ) )
return SelIPX_1000D3A0 ( v10 , 1 ) ;
if ( SErrGetLastError ( ) = = - 2062548871 )
LoadStringA ( hInstance , 0x32u , & Buffer , 127 ) ; //"\nUnable to join the detected game. Your version of Diablo is incompatible with the game creator's version."
else
LoadStringA ( hInstance , 0x25u , & Buffer , 127 ) ; //"\n\nUnable to join game \"%s.\""
wsprintfA ( & v5 , & Buffer , v2 + 12 ) ;
v3 = & v5 ;
}
else
{
v3 = & v6 ;
}
return SelYesNo_1000FD39 ( v10 , v3 , 0 , 0 ) ;
} */
// 10010406: using guessed type _DWORD __stdcall SErrGetLastError();
// 10010430: using guessed type int __stdcall SNetJoinGame(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD, _DWORD);
// 1002A4A8: using guessed type int gnIpxPlayerid;
// ref: 0x1000D696
HWND __fastcall SelIPX_1000D696 ( HWND hDlg , int a2 , int a3 ) { return 0 ; }
/* {
int v3 ; // ebx
HWND v4 ; // esi
int v5 ; // ST08_4
HWND v6 ; // eax
HWND result ; // eax
HWND v8 ; // eax
HWND v9 ; // eax
HWND v10 ; // eax
int v11 ; // eax
int v12 ; // eax
int v13 ; // eax
HWND v14 ; // eax
HWND v15 ; // eax
HWND v16 ; // eax
HWND v17 ; // eax
v3 = a2 ;
v4 = hDlg ;
v5 = a2 ;
v6 = GetDlgItem ( hDlg , 1056 ) ;
if ( local_10007C3B ( v4 , v6 , v5 , a3 ) )
return SelIPX_1000D3C5 ( v4 , a3 ) ;
v8 = GetDlgItem ( v4 , 1054 ) ;
if ( local_10007C3B ( v4 , v8 , v3 , a3 ) )
return ( HWND ) SelIPX_1000D3A0 ( ( int ) v4 , 2 ) ;
v9 = GetDlgItem ( v4 , 1105 ) ;
result = ( HWND ) local_10007C3B ( v4 , v9 , v3 , a3 ) ;
if ( result )
{
v10 = GetDlgItem ( v4 , 1105 ) ;
v11 = Sbar_100099DC ( v10 , v3 , a3 ) - 1 ;
if ( v11 )
{
v12 = v11 - 1 ;
if ( v12 )
{
v13 = v12 - 1 ;
if ( v13 )
{
result = ( HWND ) ( v13 - 1 ) ;
if ( ! result )
{
v14 = GetFocus ( ) ;
result = SelIPX_1000D0E1 ( v14 ) ;
}
}
else
{
v15 = GetFocus ( ) ;
result = SelIPX_1000D1D4 ( v15 ) ;
}
}
else
{
v16 = GetFocus ( ) ;
result = SelIPX_1000D284 ( v16 ) ;
}
}
else
{
v17 = GetFocus ( ) ;
result = SelIPX_1000D31C ( v17 ) ;
}
}
return result ;
} */