Newer
Older
AMI-Aptio-BIOS-Reversed / ServerCommonPkg / Universal / GetSec / Pei / TxtPei / _ModuleEntryPoint.c
@Ajax Dong Ajax Dong 2 days ago 3 KB Restructure the repo
// Decompiled: 0xffe063d0
// Function: _ModuleEntryPoint
// Module: TxtPei.efi (TXTPEI)

EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)
{
  int v2; // ebp
  int v3; // eax
  int v4; // eax
  EFI_STATUS result; // eax
  int v6; // eax
  int v7; // eax
  int v8; // eax
  _BYTE v9[4]; // [esp+48h] [ebp-30h] BYREF
  int v10; // [esp+4Ch] [ebp-2Ch] BYREF
  _BYTE v11[4]; // [esp+50h] [ebp-28h] BYREF
  int v12; // [esp+54h] [ebp-24h] BYREF
  int v13; // [esp+58h] [ebp-20h]
  int v14; // [esp+74h] [ebp-4h]

  if ( *(char *)(CpuIdViaPeiService() + 1024068) >= 0 ) /*0xffe063e1*/
  {
    SetFeatureBit(); /*0xffe063e3*/
    v3 = CpuIdViaPeiService(); /*0xffe063e8*/
    *(_BYTE *)(v3 + 1024068) |= 0x80u; /*0xffe063f4*/
  }
  v14 = v2; /*0xffe0668f*/
  DebugPrint(64, "Enter TxtPei \n"); /*0xffe066a5*/
  if ( (*(int (__cdecl **)(EFI_SYSTEM_TABLE *, void *))(LODWORD(SystemTable->Hdr.Signature) + 36))( /*0xffe066c9*/
         SystemTable,
         &unk_FFE08CF8) < 0 )
  {
    DebugPrint(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n"); /*0xffe066d2*/
    v4 = DebugPrintProtocol(); /*0xffe066da*/
    if ( v4 ) /*0xffe066e1*/
      (*(void (__cdecl **)(const char *, int, const char *))(v4 + 4))( /*0xffe066ea*/
        "e:\\hs\\ServerCommonPkg\\Universal\\GetSec\\Pei\\TxtPei.c",
        442,
        "!EFI_ERROR (Status)");
  }
  result = TxtPeiInit(SystemTable, &v12); /*0xffe066f6*/
  if ( (result & 0x80000000) == 0 )
  {
    if ( (*(int (__cdecl **)(EFI_SYSTEM_TABLE *, void *))(LODWORD(SystemTable->Hdr.Signature) + 24))( /*0xffe06712*/
           SystemTable,
           &unk_FFE08D14) < 0 )
    {
      DebugPrint(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n"); /*0xffe0671b*/
      v6 = DebugPrintProtocol(); /*0xffe06723*/
      if ( v6 ) /*0xffe0672a*/
        (*(void (__cdecl **)(const char *, int, const char *))(v6 + 4))( /*0xffe06733*/
          "e:\\hs\\ServerCommonPkg\\Universal\\GetSec\\Pei\\TxtPei.c",
          457,
          "!EFI_ERROR (Status)");
    }
    if ( (*(int (__cdecl **)(EFI_SYSTEM_TABLE *, void *))(LODWORD(SystemTable->Hdr.Signature) + 24))( /*0xffe06748*/
           SystemTable,
           &unk_FFE08D04) < 0 )
    {
      DebugPrint(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n"); /*0xffe06751*/
      v7 = DebugPrintProtocol(); /*0xffe06759*/
      if ( v7 ) /*0xffe06760*/
        (*(void (__cdecl **)(const char *, int, const char *))(v7 + 4))( /*0xffe06769*/
          "e:\\hs\\ServerCommonPkg\\Universal\\GetSec\\Pei\\TxtPei.c",
          463,
          "!EFI_ERROR (Status)");
    }
    CpuRegRead(v9, &v10, v11); /*0xffe06782*/
    if ( (v10 & 0x40) != 0 )
    {
      if ( (unsigned __int8)DwrCheck() )
      {
        DebugPrint(0x80000000, "[TxtPei] WARNING: DWR detected - skip Tpm detection in TxtPei module\n");
        return -2147483645; /*0xffe067c2*/
      }
      if ( ((*(int (__cdecl **)(int, int, int, _DWORD))(v13 + 48))(v12, v13, -19660800, 0) & 1) == 0 /*0xffe06809*/
        && ((*(int (__cdecl **)(int, int, int, _DWORD))(v13 + 48))(v12, v13, -19726328, 0) & 0x40) != 0
        && (*(int (__cdecl **)(EFI_SYSTEM_TABLE *, void *))(LODWORD(SystemTable->Hdr.Signature) + 36))(
             SystemTable,
             &unk_FFE08CEC) < 0 )
      {
        DebugPrint(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n"); /*0xffe06812*/
        v8 = DebugPrintProtocol(); /*0xffe0681a*/
        if ( v8 ) /*0xffe06821*/
          (*(void (__cdecl **)(const char *, int, const char *))(v8 + 4))( /*0xffe0682a*/
            "e:\\hs\\ServerCommonPkg\\Universal\\GetSec\\Pei\\TxtPei.c",
            536,
            "!EFI_ERROR (Status)");
      }
    }
    else
    {
      DebugPrint(0x80000000, "LtPeim Error: CPU does not support TXT\n");
    }
    return 0; /*0xffe06830*/
  }
  return result; /*0xffe06839*/
}