Newer
Older
AMI-Aptio-BIOS-Reversed / Platform / MeFirmwareUpdateHandler.c
@Ajax Dong Ajax Dong 2 days ago 1 KB Init
// MeFirmwareUpdateHandler - decompiled from Platform.efi
void __fastcall MeFirmwareUpdateHandler(unsigned __int8 *SourceBuffer)
{
  int v2; // edi
  __int64 v3; // rax
  _BYTE v4[18]; // [rsp+10h] [rbp-358h] BYREF
  char v5; // [rsp+22h] [rbp-346h]
  unsigned __int8 v6; // [rsp+370h] [rbp+8h] BYREF
  unsigned int v7; // [rsp+378h] [rbp+10h] BYREF
  __int64 n814; // [rsp+380h] [rbp+18h] BYREF

  if ( SourceBuffer && SourceBuffer[32] )
  {
    DebugPrint(0x40u, "[ME] Save to ME MeRcConfiguration->MePttEnabled: %d\n", SourceBuffer[23]);
    v2 = SourceBuffer[23]; /*0x4ce9*/
    DebugPrint(0x40u, "[ME] PttHeciUpdateState(%d)\n", v2); /*0x4cfc*/
    if ( SetupIfrKeywordHandle(&v6) >= 0 )
    {
      DebugPrint(0x40u, "[ME] Current Ptt State: %d\n", v6);
      if ( v6 != (_BYTE)v2 ) /*0x4d30*/
      {
        DebugPrint(0x40u, "[ME] Run PttHeciSetState(%d)\n", v2); /*0x4d3f*/
        SetupIfrSupplement(v2); /*0x4d47*/
      }
    }
    if ( SetupIfrKeywordHandle(&v6) >= 0 )
    {
      n814 = 814; /*0x4d66*/
      if ( (*(__int64 (__fastcall **)(const __int16 *, void *, unsigned int *, __int64 *, _BYTE *))(RuntimeServices + 72))(
             L"Setup",
             &unk_FB40,
             &v7,
             &n814,
             v4) >= 0
        && SourceBuffer[23] == 1
        && SourceBuffer[33] == 1
        && v6 == 1
        && v5 == 1 )
      {
        v5 = 0; /*0x4de8*/
        v3 = (*(__int64 (__fastcall **)(const __int16 *, void *, _QWORD, __int64, _BYTE *))(RuntimeServices + 88))( /*0x4ded*/
               L"Setup",
               &unk_FB40,
               v7,
               n814,
               v4);
        if ( v3 < 0 )
          DebugPrint(0x80000000, " ERROR: Cannot Update TpmSupport (%r) \n", v3);
      }
    }
  }
}