CmpGetBiosDate
UINT8 __stdcall CmpGetBiosDate(PSTR SearchArea, UINT64 SearchLength, PSTR DateString, UINT8 SystemBiosDate){
PSTR v4;
PSTR v5;
PSTR v6;
char *v7;
PSTR v8;
UINT8 result;
CHAR v10;
CHAR v11;
CHAR v12;
int v13;
int v14;
CHAR v15;
CHAR v16;
unsigned int v18;
CHAR Str[16];
_TBYTE buf1;
char v22;
buf1 = 0.0;
v4 = SearchArea + 2;
v22 = 0;
v5 = DateString;
v6 = SearchArea;
v7 = &SearchArea[(unsigned int)SearchLength - 5];
if( SearchArea + 2 < v7 )
{
v8 = SearchArea + 6;
do
{
if( *v4 == 47
&& v4[3] == 47
&& (unsigned __int8)(*(v4 - 1) - 48) <= 9u
&& (unsigned __int8)(v4[1] - 48) <= 9u
&& (unsigned __int8)(v4[2] - 48) <= 9u )
{
v10 = *v8;
if( (unsigned __int8)(*v8 - 48) <= 9u )
{
v11 = v4[5];
if( (unsigned __int8)(v11 - 48) <= 9u )
{
*(_DWORD *)&Str[5] = *(_DWORD *)v6;
v12 = Str[5];
Str[9] = v6[4];
Str[2] = v10;
Str[3] = v11;
Str[10] = 0;
if( (unsigned __int8)(Str[5] - 48) > 9u )
v12 = 48;
Str[7] = 0;
Str[5] = v12;
Str[4] = 0;
v18 = strtoul(&Str[2], 0i64, 16i64);
v13 = strtoul(&Str[5], 0i64, 16i64);
v14 = strtoul(&Str[8], 0i64, 16i64);
if( (unsigned int)(v13 - 1) <= 0x11 && (unsigned int)(v14 - 1) <= 0x30 )
{
if( SystemBiosDate
&& (v15 = v4[6], (unsigned __int8)(v15 - 48) <= 9u)
&& (v16 = v4[7], (unsigned __int8)(v16 - 48) <= 9u)
&& (*(_WORD *)v8 == 14641 || *(_WORD *)v8 == 12338) )
{
Str[0] = *v8;
Str[1] = v4[5];
Str[2] = v15;
Str[3] = v16;
}
else
{
*(_WORD *)Str = 12338;
if( v18 >= 0x80 )
*(_WORD *)Str = 14641;
}
Str[7] = 47;
Str[4] = 47;
if( memcmp(&buf1, Str, 0xAui64) < 0 )
buf1 = *(_TBYTE *)Str;
v4 += 2;
v6 += 2;
v8 += 2;
}
}
}
}
++v4;
++v6;
++v8;
}
while( v4 < v7 );
v5 = DateString;
}
if( LOBYTE(buf1) )
{
result = 1;
*(_DWORD *)v5 = *(_DWORD *)((char *)&buf1 + 5);
v5[4] = HIBYTE(buf1);
*((_WORD *)v5 + 3) = WORD1(buf1);
v5[5] = 47;
v5[8] = 0;
}
else
{
*v5 = 0;
return 0;
}
return result;
}Referenced by:
CmpSetSystemBiosInformation
CmpSetVideoBiosInformation