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