Newer
Older
AMI-Aptio-BIOS-Reversed / Platform / SetupIfrStringLoader.c
@Ajax Dong Ajax Dong 2 days ago 2 KB Init
// SetupIfrStringLoader - decompiled from Platform.efi
void __fastcall SetupIfrStringLoader(_DWORD *a1, unsigned __int8 *a2)
{
  unsigned int v4; // r8d
  char v5; // al
  char v6; // al
  char v7; // al
  char v8; // al
  char v9; // al
  int v10; // ecx
  int v11; // ecx
  int v12; // ecx

  DebugPrint(0x40u, "[ME] UpdateMePolicyFromSetup: start\n");
  if ( a1 && a2 )
  {
    v4 = a1[2] & 0xFFFFFE01 | (2 * a2[9]); /*0x9425*/
    a1[2] = v4; /*0x9428*/
    a1[2] = v4 ^ ((unsigned __int16)v4 ^ (unsigned __int16)(a2[8] << 10)) & 0x400; /*0x943e*/
    v5 = SetupConfigExtract(0, a2[12]); /*0x9445*/
    a1[2] &= 0xFFFF3FFF; /*0x944a*/
    a1[2] |= (v5 & 3) << 14; /*0x945c*/
    v6 = SetupConfigExtract(1, a2[13]); /*0x9463*/
    a1[2] &= 0xFFFCFFFF; /*0x9468*/
    a1[2] |= (v6 & 3) << 16; /*0x947a*/
    v7 = SetupConfigExtract(4, a2[14]); /*0x9481*/
    a1[2] &= 0xFFF3FFFF; /*0x9486*/
    a1[2] |= (v7 & 3) << 18; /*0x9498*/
    v8 = SetupConfigExtract(2, a2[15]); /*0x949f*/
    a1[2] &= 0xFFCFFFFF; /*0x94a4*/
    a1[2] |= (v8 & 3) << 20; /*0x94b6*/
    v9 = SetupConfigExtract(3, a2[16]); /*0x94bd*/
    a1[2] &= 0xFF3FFFFF; /*0x94c2*/
    a1[2] |= (v9 & 3) << 22; /*0x94cf*/
    v10 = a1[2] ^ (a1[2] ^ (a2[18] << 24)) & 0x1000000; /*0x94e2*/
    a1[2] = v10; /*0x94e5*/
    a1[2] = v10 ^ (v10 ^ (a2[10] << 25)) & 0x2000000; /*0x94f8*/
    a1[3] ^= (a1[3] ^ a2[11]) & 3; /*0x9505*/
    v11 = a1[3] ^ (a1[3] ^ (4 * a2[17])) & 4; /*0x9515*/
    a1[3] = v11; /*0x9518*/
    a1[3] = v11 & 0x7FFFFFFF | (a2[20] << 31); /*0x9528*/
    a1[4] ^= (a1[4] ^ a2[21]) & 1; /*0x9535*/
    v12 = a1[4] ^ (a1[4] ^ (2 * a2[22])) & 2; /*0x9544*/
    a1[4] = v12; /*0x9547*/
    a1[4] = v12 ^ ((unsigned __int8)v12 ^ (unsigned __int8)(16 * a2[19])) & 0x10; /*0x9558*/
  }
  else
  {
    DebugPrint(0x80000000, "[ME] ERROR: UpdateMePolicyFromSetup: Wrong input parameters\n");
    if ( !a1 || !a2 ) /*0x9576*/
      Assert( /*0x958b*/
        (__int64)"e:\\hs\\PurleyPlatPkg\\Me\\Policy\\AMT\\Library\\DxePolicyUpdateLib\\DxeMePolicyUpdate.c",
        180,
        (__int64)"MePolicyInstance != ((void *) 0) && MeSetupPtr != ((void *) 0)");
  }
}