// 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*/
}