// 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 a6) { return 0; } /* { int v6; // esi dword_1002A49C = a3; dword_1002A4AC = a2; dword_1002A4BC = a5; dword_1002A4A0 = a4; dword_1002A4A8 = a6; 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 dword_1002A4A8; // 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(); 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); LoadStringA(hInstance, v15 + 4, &v12, 31); LoadStringA(hInstance, 0x31u, &v9, 127); 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); 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); LoadStringA(hInstance, 0x2Au, (LPSTR)(dword_1002A4B4 + 140), 127); } 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, dword_1002A4A8, 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 dword_1002A4A8; // 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, dword_1002A4A8) ) return SelIPX_1000D3A0(v10, 1); if ( SErrGetLastError() == -2062548871 ) LoadStringA(hInstance, 0x32u, &Buffer, 127); else LoadStringA(hInstance, 0x25u, &Buffer, 127); 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 dword_1002A4A8; // 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; } */