// ref: 0x100028C2 void UNKCALL BNetGW_100028C2(_DWORD *arg) { return; } /* { _DWORD *v1; // esi unsigned char v2; // zf unsigned char v3; // sf int v4; // edi int v5; // eax int v6; // edi int v7; // ST08_4 int v8; // eax signed int v9; // eax struct _TIME_ZONE_INFORMATION TimeZoneInformation; // [esp+Ch] [ebp-B8h] char *v11; // [esp+B8h] [ebp-Ch] int v12; // [esp+BCh] [ebp-8h] int v13; // [esp+C0h] [ebp-4h] v1 = arg; arg[2] = 0; arg[3] = 0; arg[4] = 0; arg[5] = 0; arg[6] = 0; *(_BYTE *)arg = 0; BNetGW_10002C23(arg); if ( !v1[4] ) goto LABEL_15; if ( v1[6] < 0x3E8u ) { v1[1] = 0; BNetGW_10002A07(v1); SRegDeleteValue("Configuration", "Battle.net gateways", 2u); } if ( !v1[4] ) LABEL_15: BNetGW_10002C51(v1); if ( v1[6] >= 0x3E8u ) { v2 = v1[5] == 0; v3 = v1[5] < 0; v4 = v1[4]; v13 = -2; v12 = 0; if ( !v3 && !v2 ) { do { v5 = SStrLen(v4) + 1; v12 += v5; v4 += v5; ++v13; } while ( v12 < v1[5] ); } v6 = v1[4]; v7 = v1[4]; v1[2] = v13 / 3; v8 = SStrLen(v7); v9 = strtoul((const char *)(v6 + v8 + 1), &v11, 10); v1[3] = v9; v1[1] = 0; if ( v9 < 1 || v9 > v1[2] ) { SMemZero(&TimeZoneInformation, 172); GetTimeZoneInformation(&TimeZoneInformation); BNetGW_100029BF(v1, TimeZoneInformation.Bias); } } else { v1[2] = 0; v1[3] = 0; } } */ // 100103A0: using guessed type int __stdcall SStrLen(_DWORD); // 100103C4: using guessed type int __stdcall SMemZero(_DWORD, _DWORD); // 100103CA: using guessed type int __stdcall SRegDeleteValue(const char *, const char *, unsigned int); // ref: 0x100029BF void UNKCALL BNetGW_100029BF(_DWORD *arg, int a2) { return; } /* { _DWORD *v2; // esi char *v3; // edi signed int v4; // ebx signed int v5; // ebp int v6; // eax int v7; // eax v2 = arg; v3 = (char *)1; v4 = 1380; v5 = 1; if ( arg[2] >= 1 ) { do { v6 = BNetGW_10002AF0(v2, v3); v7 = abs(60 * v6 - a2); if ( v7 < v4 ) { v4 = v7; v5 = (signed int)v3; } ++v3; } while ( (signed int)v3 <= v2[2] ); } BNetGW_10002B51(v2, v5); } */ // ref: 0x10002A07 void *UNKCALL BNetGW_10002A07(_DWORD *arg) { return 0; } /* { _DWORD *v1; // esi int v2; // edi _BYTE *v3; // ecx const char *v4; // eax int result; // eax v1 = arg; if ( arg[1] ) { v2 = arg[4]; if ( v2 ) { v3 = (_BYTE *)(v2 + SStrLen(arg[4]) + 1); *v3 = v1[3] / 10 + 48; v4 = "Override Battle.net gateways"; v3[1] = v1[3] % 10 + 48; if ( !v1[7] ) v4 = "Battle.net gateways"; SRegSaveData("Configuration", v4, 0x82u, (void *)v1[4], v1[5]); } } result = v1[4]; if ( result ) { result = SMemFree(result, "C:\\Src\\Diablo\\DiabloUI\\BNetGW.cpp", 152, 0); v1[4] = 0; v1[5] = 0; } return result; } */ // 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD); // 100103A0: using guessed type int __stdcall SStrLen(_DWORD); // 100103D0: using guessed type int __stdcall SRegSaveData(const char *, const char *, unsigned int, void *, unsigned int); // ref: 0x10002A84 _DWORD *UNKCALL BNetGW_10002A84(_DWORD *arg, signed int a2) { return 0; } /* { signed int v2; // eax signed int v3; // ebx int v4; // esi int v5; // edi unsigned char v6; // sf unsigned char v7; // of int v8; // eax _DWORD *result; // eax _DWORD *v10; // [esp+8h] [ebp-4h] _DWORD *v11; // [esp+14h] [ebp+8h] v10 = arg; if ( !arg[4] ) return arg; v2 = a2; v3 = 1; if ( a2 < 1 || a2 > arg[2] ) return arg; v4 = 3 * a2; v5 = 0; v11 = (_DWORD *)arg[4]; if ( 3 * v2 <= 1 ) { LABEL_7: v7 = __OFSUB__(v5, arg[5]); v6 = v5 - arg[5] < 0; } else { while ( 1 ) { v7 = __OFSUB__(v5, arg[5]); v6 = v5 - arg[5] < 0; if ( v5 >= arg[5] ) break; v8 = SStrLen(v11); arg = v10; v11 = (_DWORD *)((char *)v11 + ++v8); v5 += v8; if ( ++v3 >= v4 ) goto LABEL_7; } } if ( !(v6 ^ v7) ) return arg; result = v11; if ( v3 > v4 ) return arg; return result; } */ // 100103A0: using guessed type int __stdcall SStrLen(_DWORD); // ref: 0x10002AE5 signed int BNetGW_10002AE5() { return 0; } /* { signed int result; // eax result = 2139095040; dword_10029478 = 2139095040; return result; } */ // 10029478: using guessed type int dword_10029478; // ref: 0x10002AF0 int UNKCALL BNetGW_10002AF0(_DWORD *arg, char *a2) { return 0; } /* { const char *v2; // eax const char *v3; // esi v2 = (const char *)BNetGW_10002A84(arg, (signed int)a2); v3 = v2; if ( *v2 ) v3 = &v2[SStrLen(v2) + 1]; return strtol(v3, &a2, 10); } */ // 100103A0: using guessed type int __stdcall SStrLen(_DWORD); // ref: 0x10002B21 _BYTE *UNKCALL BNetGW_10002B21(_DWORD *arg, signed int a2) { return 0; } /* { _DWORD *v2; // eax _BYTE *v3; // esi v2 = BNetGW_10002A84(arg, a2); v3 = v2; if ( *(_BYTE *)v2 ) { v3 = (char *)v2 + SStrLen(v2) + 1; if ( *v3 ) v3 += SStrLen(v3) + 1; } return v3; } */ // 100103A0: using guessed type int __stdcall SStrLen(_DWORD); // ref: 0x10002B51 void UNKCALL BNetGW_10002B51(_DWORD *arg, signed int a2) { return; } /* { signed int v2; // eax if ( arg[4] ) { v2 = a2; if ( a2 >= 1 && a2 <= arg[2] ) { if ( a2 > 99 ) v2 = 99; arg[3] = v2; arg[1] = 1; } } } */ // ref: 0x10002B78 char *UNKCALL BNetGW_10002B78(_DWORD *arg, char *a2) { return 0; } /* { _DWORD *v2; // esi char *result; // eax char *v4; // ST08_4 void *v5; // eax char *v6; // [esp+Ch] [ebp-4h] v2 = arg; v6 = 0; result = (char *)SRegLoadData("Configuration", a2, 0x82u, 0, 0, (unsigned int *)&v6); if ( result ) { result = v6; if ( v6 ) { v4 = v6; v2[5] = v6; v5 = (void *)SMemAlloc(v4, "C:\\Src\\Diablo\\DiabloUI\\BNetGW.cpp", 263, 0); v2[4] = v5; if ( !SRegLoadData("Configuration", a2, 0x82u, v5, v2[5], 0) ) { SMemFree(v2[4], "C:\\Src\\Diablo\\DiabloUI\\BNetGW.cpp", 271, 0); v2[4] = 0; v2[5] = 0; } result = (char *)v2[4]; v2[6] = 0; if ( result ) { a2 = result; v2[6] = strtoul(result, &a2, 10); result = (char *)v2[4]; if ( result == a2 ) v2[6] = 0; } } } return result; } */ // 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD); // 10010364: using guessed type int __stdcall SMemAlloc(_DWORD, _DWORD, _DWORD, _DWORD); // 100103D6: using guessed type int __stdcall SRegLoadData(const char *, const char *, unsigned int, void *, unsigned int, unsigned int *); // ref: 0x10002C23 char *UNKCALL BNetGW_10002C23(_DWORD *arg) { return 0; } /* { _DWORD *v1; // esi char *result; // eax v1 = arg; arg[7] = 0; result = BNetGW_10002B78(arg, "Override Battle.net gateways"); if ( !v1[4] ) return BNetGW_10002B78(v1, "Battle.net gateways"); v1[7] = 1; return result; } */ // ref: 0x10002C51 int UNKCALL BNetGW_10002C51(_DWORD *arg) { return 0; } /* { int result; // eax char *v2; // edi char *v3; // esi unsigned int v4; // ebx char *v5; // esi _BYTE *v6; // esi char *v7; // eax char *v8; // eax _BYTE *v9; // esi char *v10; // esi char v11; // al unsigned int v12; // esi char *v13; // [esp+4h] [ebp-10h] int v14; // [esp+8h] [ebp-Ch] int v15; // [esp+Ch] [ebp-8h] _DWORD *v16; // [esp+10h] [ebp-4h] v15 = 0; v16 = arg; result = BNetGW_10002DBF(&v15); v2 = (char *)result; v14 = result; if ( result ) { v3 = (char *)SMemAlloc(2 * v15, "C:\\Src\\Diablo\\DiabloUI\\BNetGW.cpp", 358, 0); v13 = v3; v4 = (unsigned int)&v2[v15]; sprintf(v3, "%d", 1000); v5 = &v3[SStrLen(v3) + 1]; *v5++ = 48; *v5++ = 48; *v5 = 0; v6 = v5 + 1; if ( (unsigned int)v2 < v4 ) { if ( (unsigned int)v2 >= v4 ) goto LABEL_8; do { if ( *v2 == 35 ) { v7 = BNetGW_10002DEB(v2, v4); v8 = BNetGW_10002E0B(v7, v4); } else { do { if ( isspace(*v2) ) break; *v6++ = *v2++; } while ( (unsigned int)v2 < v4 ); LABEL_8: *v6 = 0; v9 = v6 + 1; if ( (unsigned int)v2 < v4 ) { do { if ( !isspace(*v2) ) break; ++v2; } while ( (unsigned int)v2 < v4 ); while ( (unsigned int)v2 < v4 && !isspace(*v2) ) *v9++ = *v2++; } *v9 = 0; v10 = v9 + 1; if ( (unsigned int)v2 < v4 ) { do { if ( !isspace(*v2) ) break; ++v2; } while ( (unsigned int)v2 < v4 ); while ( (unsigned int)v2 < v4 ) { v11 = *v2; if ( *v2 == 13 || v11 == 10 ) break; *v10++ = v11; ++v2; } } *v10 = 0; v6 = v10 + 1; v8 = BNetGW_10002E0B(v2, v4); } v2 = v8; } while ( (unsigned int)v8 < v4 ); } *v6 = 0; v12 = v6 - v13 + 1; SRegSaveData("Configuration", "Battle.net gateways", 0x82u, v13, v12); SMemFree(v14, "C:\\Src\\Diablo\\DiabloUI\\BNetGW.cpp", 429, 0); result = (int)v16; v16[5] = v12; *(_DWORD *)(result + 16) = v13; *(_DWORD *)(result + 24) = 1000; } return result; } */ // 10010340: using guessed type int __stdcall SMemFree(_DWORD, _DWORD, _DWORD, _DWORD); // 10010364: using guessed type int __stdcall SMemAlloc(_DWORD, _DWORD, _DWORD, _DWORD); // 100103A0: using guessed type int __stdcall SStrLen(_DWORD); // 100103D0: using guessed type int __stdcall SRegSaveData(const char *, const char *, unsigned int, void *, unsigned int); // ref: 0x10002DBF int UNKCALL BNetGW_10002DBF(_DWORD *arg) { return 0; } /* { _DWORD *v1; // esi int v3; // [esp+4h] [ebp-8h] int v4; // [esp+8h] [ebp-4h] v4 = 0; v1 = arg; SFileLoadFile("rez\\gateways.txt", &v3, &v4, 0, 0); *v1 = v4; return v3; } */ // 100103DC: using guessed type int __stdcall SFileLoadFile(_DWORD, _DWORD, _DWORD, _DWORD, _DWORD); // ref: 0x10002DEB char *__stdcall BNetGW_10002DEB(char *a1, unsigned int a2) { return 0; } /* { char *result; // eax char v3; // cl for ( result = a1; (unsigned int)result < a2; ++result ) { v3 = *result; if ( !*result || v3 == 13 || v3 == 10 ) break; } return result; } */ // ref: 0x10002E0B char *__stdcall BNetGW_10002E0B(char *a1, unsigned int a2) { return 0; } /* { char *result; // eax char v3; // cl for ( result = a1; (unsigned int)result < a2; ++result ) { v3 = *result; if ( !*result || v3 != 13 && v3 != 10 ) break; } return result; } */