Newer
Older
AMI-Aptio-BIOS-Reversed / LenovoServerPkg / Driver / LnvDriverPei / ReadRtcDateTime.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Full restructure
char __thiscall ReadRtcDateTime(_BYTE *this)
{
  unsigned __int8 v3; // al
  char v4; // al
  unsigned __int8 v5; // al
  unsigned __int8 v6; // al
  unsigned __int8 v7; // al
  unsigned __int8 v8; // al
  unsigned __int8 v9; // al
  unsigned __int8 v10; // al
  unsigned __int8 v11; // al
  unsigned __int8 v12; // al
  unsigned __int8 v13; // al
  unsigned __int8 v14; // al
  unsigned __int8 v15; // al
  unsigned __int8 v16; // al
  bool v17; // zf
  unsigned __int8 v18; // al
  unsigned __int8 v19; // al
  char v20; // [esp+4h] [ebp-4h]

  if ( !this || !IsHobInitialized() )
    return 0;
  v3 = __inbyte(0x70u);
  __outbyte(0x70u, v3 & 0x80 | 0xB);
  v4 = __inbyte(0x71u);
  v20 = v4;
  v5 = __inbyte(0x70u);
  __outbyte(0x70u, v5 & 0x80);
  v6 = __inbyte(0x71u);
  *(this + 6) = v6;
  v7 = __inbyte(0x70u);
  __outbyte(0x70u, v7 & 0x80 | 2);
  v8 = __inbyte(0x71u);
  *(this + 5) = v8;
  v9 = __inbyte(0x70u);
  __outbyte(0x70u, v9 & 0x80 | 4);
  v10 = __inbyte(0x71u);
  *(this + 4) = v10;
  v11 = __inbyte(0x70u);
  __outbyte(0x70u, v11 & 0x80 | 7);
  v12 = __inbyte(0x71u);
  *(this + 3) = v12;
  v13 = __inbyte(0x70u);
  __outbyte(0x70u, v13 & 0x80 | 8);
  v14 = __inbyte(0x71u);
  *(this + 2) = v14;
  v15 = __inbyte(0x70u);
  __outbyte(0x70u, v15 & 0x80 | 9);
  v16 = __inbyte(0x71u);
  *(_WORD *)this = v16;
  RtcCenturySet(v20);
  v17 = IsLeapYear();
  v18 = __inbyte(0x70u);
  __outbyte(0x70u, v18 & 0x80 | 0x32);
  v19 = __inbyte(0x71u);
  if ( v17 )
    v19 &= ~0x80u;
  *(_WORD *)this += 100 * (unsigned __int8)(v19 - 6 * (v19 >> 4));
  return 1;
}