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