diff --git a/AmiModulePkg/NVRAM/NvramSmm/ArpDxe/ArpDxe.c b/AmiModulePkg/NVRAM/NvramSmm/ArpDxe/ArpDxe.c index 69cd1a5..1aba82d 100644 --- a/AmiModulePkg/NVRAM/NvramSmm/ArpDxe/ArpDxe.c +++ b/AmiModulePkg/NVRAM/NvramSmm/ArpDxe/ArpDxe.c @@ -13,30 +13,31 @@ // Function: ModuleEntryPoint EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { - __int64 v3; // rcx - __int64 v4; // rax - EFI_STATUS v5; // rbx + EFI_STATUS initStatus; + EFI_STATUS moduleStatus; - sub_584((__int64)ImageHandle, (__int64)SystemTable); - qword_11888 = 0x8000000000000001uLL; - if ( !sub_2C0(&unk_11790) ) + ArpAutoGenConstructor (ImageHandle, SystemTable); + moduleStatus = EFI_UNSUPPORTED; + + if ( !ArpInitHook (ArpAutoGenContext) ) { - v4 = sub_10F8(v3, SystemTable); - if ( v4 >= 0 || qword_11888 < 0 ) - qword_11888 = v4; - sub_8108(&unk_11790); - sub_360(&unk_11790, -1); - sub_8264( + initStatus = ArpDriverInit(ImageHandle, SystemTable); + if ( initStatus >= 0 || moduleStatus < 0 ) + moduleStatus = initStatus; + + ArpAutoGenDestructor (ArpAutoGenContext); + ArpAutoGenUnload (ArpAutoGenContext, -1); + ArpAutoGenDebugAssert( "e:\\hs\\Build\\HR6N0XMLK\\DEBUG_VS2015\\X64\\AmiModulePkg\\NVRAM\\NvramSmm\\DEBUG\\AutoGen.c", 528, "((BOOLEAN)(0==1))"); - sub_8264( + ArpAutoGenDebugAssert( "e:\\hs\\Build\\HR6N0XMLK\\DEBUG_VS2015\\X64\\AmiModulePkg\\NVRAM\\NvramSmm\\DEBUG\\AutoGen.c", 543, "((BOOLEAN)(0==1))"); } - v5 = qword_11888; - if ( qword_11888 < 0 ) - sub_8318(); - return v5; + + if ( moduleStatus < 0 ) + ArpAutoGenDebugBreak(); + return moduleStatus; } diff --git a/AmiModulePkg/NVRAM/NvramSmm/ArpDxe/ArpDxe.h b/AmiModulePkg/NVRAM/NvramSmm/ArpDxe/ArpDxe.h index e3de9f3..c060b40 100644 --- a/AmiModulePkg/NVRAM/NvramSmm/ArpDxe/ArpDxe.h +++ b/AmiModulePkg/NVRAM/NvramSmm/ArpDxe/ArpDxe.h @@ -30,8 +30,8 @@ struct _ARP_SERVICE { UINT32 Signature; /* 0x00: ARPS */ - EFI_SERVICE_BINDING_CREATE_CHILD ArpCreateChild; /* 0x08: sub_E3C */ - EFI_SERVICE_BINDING_DESTROY_CHILD ArpDestroyChild; /* 0x10: sub_104C */ + EFI_SERVICE_BINDING_CREATE_CHILD ArpCreateChild; + EFI_SERVICE_BINDING_DESTROY_CHILD ArpDestroyChild; EFI_HANDLE ServiceHandle; /* 0x18 */ EFI_HANDLE ControllerHandle; /* 0x20 */ EFI_HANDLE ImageHandle; /* 0x28 */ @@ -125,13 +125,13 @@ /* EFI_ARP_PROTOCOL (function pointer table, 0x4EC0) */ /* ------------------------------------------------------------------ */ typedef struct { - EFI_ARP_CONFIGURE ArpConfigure; /* 0x00: sub_26A4 */ - EFI_ARP_ADD ArpAdd; /* 0x08: sub_2750 */ - EFI_ARP_FIND ArpFind; /* 0x10: sub_2954 */ - EFI_ARP_DELETE ArpDelete; /* 0x18: sub_2A74 */ - EFI_ARP_FLUSH ArpFlush; /* 0x20: sub_2B40 */ - EFI_ARP_REQUEST ArpRequest; /* 0x28: sub_2BF0 */ - EFI_ARP_CANCEL ArpCancel; /* 0x30: sub_2EF8 */ + EFI_ARP_CONFIGURE ArpConfigure; + EFI_ARP_ADD ArpAdd; + EFI_ARP_FIND ArpFind; + EFI_ARP_DELETE ArpDelete; + EFI_ARP_FLUSH ArpFlush; + EFI_ARP_REQUEST ArpRequest; + EFI_ARP_CANCEL ArpCancel; } ARP_PROTOCOL_TABLE; /* ------------------------------------------------------------------ */ @@ -157,6 +157,51 @@ extern VOID *gDpcQueue; /* 0x4F30 */ extern VOID *gMnpProtocol; /* referenced */ +// +// Module AutoGen bootstrap context and helpers (entry-point flow) +// +extern VOID *ArpAutoGenContext; + +EFI_STATUS +EFIAPI +ArpAutoGenConstructor( + EFI_HANDLE ImageHandle, + EFI_SYSTEM_TABLE *SystemTable +); + +EFI_STATUS +EFIAPI +ArpInitHook( + VOID *Context +); + +EFI_STATUS +EFIAPI +ArpAutoGenDestructor( + VOID *Context +); + +EFI_STATUS +EFIAPI +ArpAutoGenUnload( + VOID *Context, + INTN Phase +); + +EFI_STATUS +EFIAPI +ArpAutoGenDebugAssert( + CHAR8 *FileName, + UINTN LineNumber, + CHAR8 *Expression +); + +VOID +EFIAPI +ArpAutoGenDebugBreak( + VOID +); + /* ------------------------------------------------------------------ */ /* Function Prototypes -- ArpDriver.c */ /* ------------------------------------------------------------------ */ @@ -383,4 +428,4 @@ IN EFI_EVENT ResolvedEvent OPTIONAL ); -#endif /* __ARP_DXE_H__ */ \ No newline at end of file +#endif /* __ARP_DXE_H__ */ diff --git a/AmiNetworkPkg/IScsiDxe/IScsiDxe/IScsiDxe.c b/AmiNetworkPkg/IScsiDxe/IScsiDxe/IScsiDxe.c index fe1e585..7b02fa5 100644 --- a/AmiNetworkPkg/IScsiDxe/IScsiDxe/IScsiDxe.c +++ b/AmiNetworkPkg/IScsiDxe/IScsiDxe/IScsiDxe.c @@ -273,17 +273,17 @@ * FUNCTION DISPATCH TABLES * ============================================================================ * off_202E0 (IScsiDxe DriverBinding): - * +0x00: sub_1868 (ISCSI_DRIVER_BINDING.Supported) - * +0x08: sub_1870 (ISCSI_DRIVER_BINDING.Start) - actually ISCSI_DRIVER_BINDING - * +0x10: sub_1898 (ISCSI_DRIVER_BINDING.Stop) + * +0x00: IscsiDriverBindingSupported (ISCSI_DRIVER_BINDING.Supported) + * +0x08: IscsiDriverBindingStart (ISCSI_DRIVER_BINDING.Start) - actual binding implementation + * +0x10: IscsiDriverBindingStop (ISCSI_DRIVER_BINDING.Stop) * +0x18: version=0x0A - * +0x40: sub_4B9C (ISCSI_COMPONENT_NAME_GET) - * +0x48: sub_4CEC (ISCSI_COMPONENT_NAME2) + * +0x40: IScsiComponentNameGetDriverName (ISCSI_COMPONENT_NAME_GET) + * +0x48: IScsiComponentName2GetDriverName (ISCSI_COMPONENT_NAME2) * * off_202A0 (ComponentName2): - * +0x00: sub_18AC (ComponentNameGetDriverName) - nullsub? - * +0x08: sub_18B4 (ComponentNameGetControllerName) - * +0x10: sub_18DC (ComponentName2.DriverName) + * +0x00: IScsiNullGetDriverName (ComponentNameGetDriverName) - null implementation + * +0x08: IScsiComponentNameGetControllerName (ComponentNameGetControllerName) + * +0x10: IScsiComponentName2GetDriverName (ComponentName2.DriverName) * +0x18: version=0x0A * +0x40: "IScsi Driver" language struct * @@ -391,4 +391,4 @@ * ============================================================================ * * See IScsiDxe.md for full function listing. - */ \ No newline at end of file + */ diff --git a/AmiNetworkPkg/IScsiDxe/IScsiDxe/IScsiDxe.h b/AmiNetworkPkg/IScsiDxe/IScsiDxe/IScsiDxe.h index 7055122..3422011 100644 --- a/AmiNetworkPkg/IScsiDxe/IScsiDxe/IScsiDxe.h +++ b/AmiNetworkPkg/IScsiDxe/IScsiDxe/IScsiDxe.h @@ -90,7 +90,7 @@ UINT8 NicSpecific; /* +0xfe: NIC-specific config */ UINT8 Reserved2; /* +0xff: */ /* --- iSCSI connection parameters --- */ - UINT8 ConnectetRetryCount; /* +0x100 */ + UINT8 ConnectRetryCount; /* +0x100 */ UINT8 ConnectTimeout; /* +0x101 */ UINT8 Reserved3[8]; /* +0x102..0x109 */ /* ISID */ @@ -100,7 +100,7 @@ UINT16 InitiatorSecret[128]; /* +0x230..0x34f */ UINT16 InitiatorSecretConfirm[128]; /* +0x350..0x46f */ /* --- Target --- */ - UInt16 TargetName[128]; /* +0x470..0x58f */ + UINT16 TargetName[128]; /* +0x470..0x58f */ UINT16 TargetAddress[64]; /* +0x590..0x62f */ UINT8 TargetPort; /* +0x630 */ UINT16 TargetTcpPort; /* +0x631 */ @@ -109,7 +109,7 @@ /* LUN */ UINT8 Lun[8]; /* +0x635.. */ /* --- Authentication --- */ - UInt8 AuthMethod; /* 0=None, 1=CHAP, 2=Reverse CHAP, 3=CHAP+Reverse */ + UINT8 AuthMethod; /* 0=None, 1=CHAP, 2=Reverse CHAP, 3=CHAP+Reverse */ UINT8 ChapType; /* CHAP type: 0=One-way, 1=Bidirectional */ UINT16 ChapUserName[128]; /* CHAP user name */ UINT16 ChapSecret[128]; /* CHAP secret */ @@ -140,7 +140,7 @@ EFI_EVENT TimerEvent; /* HII */ EFI_HII_HANDLE HiiHandle; - EFI_HII_CONIG_ACCESS_PROTOCOL ConfigAccess; + EFI_HII_CONFIG_ACCESS_PROTOCOL ConfigAccess; /* iSCSI4 protocol */ EFI_ISCSI4_PROTOCOL *Iii4; } ISCSI_DRIVER_DATA; @@ -154,8 +154,8 @@ UINT8 MacAddr[32]; /* / * +0x?? * / UINT16 VlanId; /* / +0x?? * / UINT8 NicIndex; /* / +0x?? */ - UInt8 Enabled; /* 1 = enabled */ - UInt8 Ipv6Available; /* IPv6 support available */ + UINT8 Enabled; /* 1 = enabled */ + UINT8 Ipv6Available; /* IPv6 support available */ } ISCSI_NIC_DATA; /* ==================================================================== @@ -208,7 +208,7 @@ /* ==================================================================== * iSCSI IFR NVDATA (HII config) * ====================================================================*/ -#define ISCSI_CONIG_VARSTORE_ID 0x1234 +#define ISCSI_CONFIG_VARSTORE_ID 0x1234 typedef struct { UINT8 InitialAttemptOrder[MAX_ATTEMPT_COUNT+1]; @@ -217,10 +217,10 @@ UINT8 SinglePathCount; UINT8 MpioCount; UINT8 Reserved; -} ISCSI_CONIG_IFR_NVDATA; +} ISCSI_CONFIG_IFR_NVDATA; /* ==================================================================== - * GRobbal data declarations + * Global data declarations * =====================================================================*/ #define ISCSI_PRIVATE_DATA_FROM_PROTOCOL(p) \ @@ -229,4 +229,4 @@ #define ISCSI_NIC_FROM_LINK(l) \ CR (l, ISCSI_NIC_DATA, Link, ISCSI_ATTEMPT_SIGNATURE) -#endif /* __ISCSI_DXE_H__ */ \ No newline at end of file +#endif /* __ISCSI_DXE_H__ */ diff --git a/LenovoServerPkg/POSTStatus/MultiSkuDistinctionDxe/MultiSkuDistinctionDxe.c b/LenovoServerPkg/POSTStatus/MultiSkuDistinctionDxe/MultiSkuDistinctionDxe.c index c645d94..a6f6ae7 100644 --- a/LenovoServerPkg/POSTStatus/MultiSkuDistinctionDxe/MultiSkuDistinctionDxe.c +++ b/LenovoServerPkg/POSTStatus/MultiSkuDistinctionDxe/MultiSkuDistinctionDxe.c @@ -49,7 +49,7 @@ EFI_GUID gLenovoSkuProtocolGuid = LENOVO_SKU_PROTOCOL_GUID; // --------------------------------------------------------------------------- -// Helper: unaligned read (sub_7BC) +// Helper: unaligned read // --------------------------------------------------------------------------- /** @@ -69,7 +69,7 @@ } // --------------------------------------------------------------------------- -// Helper: GUID comparison (sub_7EC) +// Helper: GUID comparison // --------------------------------------------------------------------------- /** @@ -101,7 +101,7 @@ } // --------------------------------------------------------------------------- -// Debug protocol lookup (sub_4C8) +// Locate and cache MsDebug protocol // --------------------------------------------------------------------------- /** @@ -147,7 +147,7 @@ } // --------------------------------------------------------------------------- -// Debug print wrapper (sub_548) +// Debug print wrapper for MsDebug protocol // --------------------------------------------------------------------------- /** @@ -222,7 +222,7 @@ } // --------------------------------------------------------------------------- -// Assert wrapper (sub_5D0) +// Assert wrapper for MsDebug protocol // --------------------------------------------------------------------------- /** @@ -252,7 +252,7 @@ } // --------------------------------------------------------------------------- -// HOB list retrieval (sub_610) +// HOB list retrieval from configuration table // --------------------------------------------------------------------------- /** @@ -315,7 +315,7 @@ } // --------------------------------------------------------------------------- -// HOB GUID-ext search (sub_6F0) +// HOB GUID-extension search // --------------------------------------------------------------------------- /** @@ -351,7 +351,7 @@ } // --------------------------------------------------------------------------- -// Extract Multi-SKU info from HOB (sub_740) +// Extract Multi-SKU info from HOB // --------------------------------------------------------------------------- /** @@ -412,7 +412,7 @@ } // --------------------------------------------------------------------------- -// SKU Protocol installation (sub_470) +// SKU protocol installation // --------------------------------------------------------------------------- /** @@ -460,7 +460,7 @@ } // --------------------------------------------------------------------------- -// Entry Point (sub_344 / _ModuleEntryPoint) +// Module entry point // --------------------------------------------------------------------------- /** @@ -579,4 +579,4 @@ // Non-'U' SKU: install protocol immediately. // return InstallSkuProtocol (); -} \ No newline at end of file +} diff --git a/LenovoServerPkg/POSTStatus/MultiSkuDistinctionDxe/MultiSkuDistinctionDxe.h b/LenovoServerPkg/POSTStatus/MultiSkuDistinctionDxe/MultiSkuDistinctionDxe.h index 27ea225..d619f43 100644 --- a/LenovoServerPkg/POSTStatus/MultiSkuDistinctionDxe/MultiSkuDistinctionDxe.h +++ b/LenovoServerPkg/POSTStatus/MultiSkuDistinctionDxe/MultiSkuDistinctionDxe.h @@ -13,307 +13,64 @@ // Function Prototypes // -EFI_STATUS -EFIAPI -ReadUnaligned64( +UINT64 +ReadUnaligned64 ( + IN VOID *Buffer + ); + +BOOLEAN +CompareGuid ( + IN EFI_GUID *Guid1, + IN EFI_GUID *Guid2 + ); + +MS_DEBUG_PROTOCOL * +GetMsDebugProtocol ( VOID -); + ); + +UINTN +EFIAPI +MsDebugPrint ( + IN UINTN ErrorLevel, + IN CHAR8 *Format, + ... + ); + +VOID +EFIAPI +MsDebugAssert ( + IN CHAR8 *FileName, + IN UINTN LineNumber, + IN CHAR8 *Description + ); + +VOID * +GetHobList ( + VOID + ); + +EFI_HOB_GENERIC_HEADER * +FindHobByGuid ( + IN CONST EFI_GUID *Guid, + IN VOID *HobStart + ); + +EFI_STATUS +GetMultiSkuInfoFromHob ( + OUT MULTI_SKU_INFO *SkuInfo + ); + +EFI_STATUS +InstallSkuProtocol ( + VOID + ); EFI_STATUS EFIAPI -CompareGuid( - VOID -); +MultiSkuDistinctionDxeEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); -EFI_STATUS -EFIAPI -MsDebugPrint( - VOID -); - -EFI_STATUS -EFIAPI -MsDebugAssert( - VOID -); - -EFI_STATUS -EFIAPI -GetMultiSkuInfoFromHob( - VOID -); - -EFI_STATUS -EFIAPI -InstallSkuProtocol( - VOID -); - -EFI_STATUS -EFIAPI -MultiSkuDistinctionDxeEntryPoint( - VOID -); - -EFI_STATUS -EFIAPI -globals( - VOID -); - -EFI_STATUS -EFIAPI -MsDebugProtocol pointer (0 until first successful Lookup).( - VOID -); - -EFI_STATUS -EFIAPI -*gMsDebugProtocol = NULL;( - VOID -); - -EFI_STATUS -EFIAPI -HOB list pointer (0 until first successful GetHobList).( - VOID -); - -EFI_STATUS -EFIAPI -*gHobList = NULL;( - VOID -); - -EFI_STATUS -EFIAPI -definitions( - VOID -); - -EFI_STATUS -EFIAPI -protocol lookup (sub_4C8)( - VOID -); - -EFI_STATUS -EFIAPI -print wrapper (sub_548)( - VOID -); - -/// system identification byte. -EFI_STATUS -EFIAPI -CMOS RTC index 0x4B( - VOID -); - -EFI_STATUS -EFIAPI -= IoRead8 (0x70);( - VOID -); - -EFI_STATUS -EFIAPI -mask based on SKU byte.( - VOID -); - -EFI_STATUS -EFIAPI -(SkuByte > 3) {( - VOID -); - -EFI_STATUS -EFIAPI -= (*(volatile UINT8 *)0xFDAF0490 & 2) | 1;( - VOID -); - -EFI_STATUS -EFIAPI -vtable entry [0] is the DebugPrint function.( - VOID -); - -EFI_STATUS -EFIAPI -Protocol->DebugPrint (ErrorLevel, Format, Args);( - VOID -); - -EFI_STATUS -EFIAPI -wrapper (sub_5D0)( - VOID -); - -EFI_STATUS -EFIAPI -vtable entry [1] is the DebugAssert function.( - VOID -); - -EFI_STATUS -EFIAPI -list retrieval (sub_610)( - VOID -); - -EFI_STATUS -EFIAPI -configuration table entries.( - VOID -); - -EFI_STATUS -EFIAPI -(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n", 0x800000000000000Eull);( - VOID -); - -EFI_STATUS -EFIAPI -GUID-ext search (sub_6F0)( - VOID -); - -EFI_STATUS -EFIAPI -Multi-SKU info from HOB (sub_740)( - VOID -); - -EFI_STATUS -EFIAPI -the HOB list looking for a GUID-ext HOB whose data matches( - VOID -); - -EFI_STATUS -EFIAPI -= FindHobByGuid (&gLenovoMultiSkuHobGuid, HobList);( - VOID -); - -EFI_STATUS -EFIAPI -3-byte SKU type is at offset 48 from the HOB base.( - VOID -); - -EFI_STATUS -EFIAPI -Protocol installation (sub_470)( - VOID -); - -/// still try to publish protocol -EFI_STATUS -EFIAPI -info not available( - VOID -); - -EFI_STATUS -EFIAPI -whatever we have (or the HOB info is not critical).( - VOID -); - -EFI_STATUS -EFIAPI -a unified SKU byte: publish the protocol.( - VOID -); - -EFI_STATUS -EFIAPI -= gBootServices->HandleProtocol (( - VOID -); - -EFI_STATUS -EFIAPI -Point (sub_344 / _ModuleEntryPoint)( - VOID -); - -EFI_STATUS -EFIAPI -global protocol references.( - VOID -); - -EFI_STATUS -EFIAPI -= ImageHandle;( - VOID -); - -EFI_STATUS -EFIAPI -();( - VOID -); - -EFI_STATUS -EFIAPI -SKU info from HOB.( - VOID -); - -EFI_STATUS -EFIAPI -= GetMultiSkuInfoFromHob (&SkuInfo);( - VOID -); - -EFI_STATUS -EFIAPI -the SKU type byte.( - VOID -); - -/// delay installation. -EFI_STATUS -EFIAPI -= 'U' (unified / unknown SKU)( - VOID -); - -EFI_STATUS -EFIAPI -(SkuInfo.SkuType[0] == 0x55) {( - VOID -); - -EFI_STATUS -EFIAPI -an ExitBootServices notification event.( - VOID -); - -EFI_STATUS -EFIAPI -= gBootServices->CreateEvent (( - VOID -); - -EFI_STATUS -EFIAPI -the configuration table entry for the SKU GUID.( - VOID -); - -EFI_STATUS -EFIAPI -InstallSkuProtocol ();( - VOID -); - -#endif /* __MULTISKUDISTINCTIONDXE_H__ */ \ No newline at end of file +#endif /* __MULTISKUDISTINCTIONDXE_H__ */ diff --git a/MdePkg/Library/PeiHobLib/CpuPei/CpuPei.c b/MdePkg/Library/PeiHobLib/CpuPei/CpuPei.c index 6eff305..e353913 100644 --- a/MdePkg/Library/PeiHobLib/CpuPei/CpuPei.c +++ b/MdePkg/Library/PeiHobLib/CpuPei/CpuPei.c @@ -317,12 +317,20 @@ v2 = v6; /*0xffc1acd9*/ __writemsr(0x2FFu, v6); /*0xffc1acf3*/ MtrrEnableCache((int)v3); /*0xffc1acf9*/ - sub_FFC1BEBD(v2, HIDWORD(v2)); /*0xffc1acfe*/ + MtrrWriteDefaultMemoryTypeMsr(v2, HIDWORD(v2)); /*0xffc1acfe*/ } return 0; /*0xffc1ad05*/ } /* + *MtrrWriteDefaultMemoryTypeMsr at 0xffc1acfe + */ +void MtrrWriteDefaultMemoryTypeMsr(unsigned int MsrValueLow, unsigned int MsrValueHigh) +{ + __writemsr(0x2FFu, ((unsigned __int64)MsrValueHigh << 32) | MsrValueLow); /*0xffc1acfe*/ +} + +/* *DebugGetDebugLib at 0xffc1ad09 */ int DebugGetDebugLib() @@ -1295,44 +1303,45 @@ } /* - *sub_FFC1BB36 at 0xffc1bb36 + *MtrrResolveMemoryTypeFromCap at 0xffc1bb36 */ -int sub_FFC1BB36(int n7, unsigned int a2, int a3) +unsigned int MtrrResolveMemoryTypeFromCap(int mtrrContext, unsigned int candidateType, int rawType) { - int v3; // ecx int result; // eax unsigned __int64 Result; // rax int n6; // [esp+0h] [ebp+0h] - int n5; // [esp+0h] [ebp+0h] - int n4; // [esp+0h] [ebp+0h] - unsigned int retaddr; // [esp+4h] [ebp+4h] + int v3; // ecx int result; // eax unsigned __int64 Result; // rax int v6; // [esp+0h] [ebp+0h] + int wcType; // [esp+0h] [ebp+0h] + int wpType; // [esp+0h] [ebp+0h] + unsigned int memoryTypeLimit; // [esp+4h] [ebp+4h] - if ( !a3 ) /*0xffc1bb3d*/ + v3 = mtrrContext; /*0xffc1bb33*/ + if ( !rawType ) /*0xffc1bb3d*/ { - n6 = 6; /*0xffc1bb42*/ - result = retaddr; /*0xffc1bb44*/ - if ( a2 <= retaddr ) /*0xffc1bb49*/ + v6 = 6; /*0xffc1bb42*/ + result = memoryTypeLimit; /*0xffc1bb44*/ + if ( candidateType <= memoryTypeLimit ) /*0xffc1bb49*/ { - switch ( a2 ) /*0xffc1bb4e*/ - { - case 0u: /*0xffc1bb4e*/ + switch ( candidateType ) /*0xffc1bb4e*/ + { + case 0u: /*0xffc1bb4e*/ return 0; /*0xffc1bb82*/ - case 1u: /*0xffc1bb4e*/ + case 1u: /*0xffc1bb4e*/ return 1; /*0xffc1bb7e*/ - case 4u: /*0xffc1bb4e*/ - n4 = 4; /*0xffc1bb75*/ + case 4u: /*0xffc1bb4e*/ + wpType = 4; /*0xffc1bb75*/ break; - case 5u: /*0xffc1bb4e*/ - n5 = 5; /*0xffc1bb71*/ + case 5u: /*0xffc1bb4e*/ + wcType = 5; /*0xffc1bb71*/ break; - case 6u: /*0xffc1bb4e*/ + case 6u: /*0xffc1bb4e*/ return result; /*0xffc1bb62*/ - default: - goto LABEL_8; /*0xffc1bb62*/ + default: + goto LABEL_8; /*0xffc1bb62*/ } - return retaddr; /*0xffc1bb79*/ + return memoryTypeLimit; /*0xffc1bb79*/ } - } +} LABEL_8: if ( v3 ) /*0xffc1bb66*/ - LODWORD(Result) = *(_DWORD *)(v3 + 600); /*0xffc1bb83*/ + Result = *(_DWORD *)(v3 + 600); /*0xffc1bb83*/ else Result = __readmsr(0x2FFu); /*0xffc1bb6d*/ return Result & 7; /*0xffc1bb78*/ } @@ -1364,76 +1373,76 @@ } /* - *sub_FFC1BC06 at 0xffc1bc06 + *MtrrMergeVariableMtrrType at 0xffc1bc06 */ -unsigned int sub_FFC1BC06(__int64 n7, unsigned int a2, __int64 n6) +unsigned int MtrrMergeVariableMtrrType(__int64 currentTypePacked, unsigned int currentAttributeMask, __int64 entryAttributePacked) { - unsigned int n6_1; // esi bool v4; // zf bool v5; // zf int n7_1; // [esp+8h] [ebp+0h] - int n4; // [esp+8h] [ebp+0h] + unsigned int mergedType; // esi bool isCacheTypeMatch; // zf bool isTypeAllowed; // zf int mergedTypeHint; // [esp+8h] [ebp+0h] + int requestedType; // [esp+8h] [ebp+0h] unsigned int n6_2; // [esp+Ch] [ebp+4h] - n7_1 = 7; /*0xffc1bc13*/ - n6_1 = n6_2; /*0xffc1bc15*/ - if ( __PAIR64__(a2, HIDWORD(n7)) <= n6_2 ) /*0xffc1bc24*/ + requestedType = 7; /*0xffc1bc13*/ + mergedType = n6_2; /*0xffc1bc15*/ + if ( __PAIR64__(currentAttributeMask, HIDWORD(currentTypePacked)) <= n6_2 ) /*0xffc1bc24*/ { - if ( HIDWORD(n7) ) /*0xffc1bc2c*/ + if ( HIDWORD(currentTypePacked) ) /*0xffc1bc2c*/ { - if ( HIDWORD(n7) == 1 ) /*0xffc1bc31*/ + if ( HIDWORD(currentTypePacked) == 1 ) /*0xffc1bc31*/ { - v5 = (_DWORD)n6 == 1; /*0xffc1bc87*/ + isTypeAllowed = (_DWORD)entryAttributePacked == 1; /*0xffc1bc87*/ goto LABEL_19; /*0xffc1bc87*/ } - if ( HIDWORD(n7) != 4 ) /*0xffc1bc36*/ + if ( HIDWORD(currentTypePacked) != 4 ) /*0xffc1bc36*/ { - if ( HIDWORD(n7) != 5 ) /*0xffc1bc3b*/ + if ( HIDWORD(currentTypePacked) != 5 ) /*0xffc1bc3b*/ { - if ( HIDWORD(n7) != 6 ) /*0xffc1bc40*/ + if ( HIDWORD(currentTypePacked) != 6 ) /*0xffc1bc40*/ { - v4 = HIDWORD(n7) == 7; /*0xffc1bc42*/ + isCacheTypeMatch = HIDWORD(currentTypePacked) == 7; /*0xffc1bc42*/ goto LABEL_22; /*0xffc1bc45*/ } - if ( n6 && n6 != 4 ) /*0xffc1bc50*/ + if ( entryAttributePacked && entryAttributePacked != 4 ) /*0xffc1bc50*/ { - if ( (_DWORD)n6 != 6 ) /*0xffc1bc59*/ + if ( (_DWORD)entryAttributePacked != 6 ) /*0xffc1bc59*/ goto LABEL_25; /*0xffc1bc59*/ - v4 = HIDWORD(n6) == 0; /*0xffc1bc5b*/ + isCacheTypeMatch = HIDWORD(entryAttributePacked) == 0; /*0xffc1bc5b*/ LABEL_22: - if ( !v4 ) /*0xffc1bc94*/ + if ( !isCacheTypeMatch ) /*0xffc1bc94*/ goto LABEL_25; /*0xffc1bc94*/ goto LABEL_23; /*0xffc1bc94*/ } goto LABEL_23; /*0xffc1bc50*/ } - v5 = (_DWORD)n6 == 5; /*0xffc1bc5f*/ + isTypeAllowed = (_DWORD)entryAttributePacked == 5; /*0xffc1bc5f*/ LABEL_19: - if ( !v5 || HIDWORD(n6) ) /*0xffc1bc8e*/ + if ( !isTypeAllowed || HIDWORD(entryAttributePacked) ) /*0xffc1bc8e*/ { - v4 = n6 == 0; /*0xffc1bc92*/ + isCacheTypeMatch = entryAttributePacked == 0; /*0xffc1bc92*/ goto LABEL_22; /*0xffc1bc92*/ } LABEL_23: - n6_1 = n6; /*0xffc1bc96*/ + mergedType = entryAttributePacked; /*0xffc1bc96*/ goto LABEL_25; /*0xffc1bc9a*/ } - if ( n6 == 4 || n6 == 6 ) /*0xffc1bc70*/ + if ( entryAttributePacked == 4 || entryAttributePacked == 6 ) /*0xffc1bc70*/ { - n4 = 4; /*0xffc1bc76*/ - n6_1 = n6_2; /*0xffc1bc78*/ + requestedType = 4; /*0xffc1bc76*/ + mergedType = n6_2; /*0xffc1bc78*/ } - else if ( !n6 ) /*0xffc1bc7f*/ + else if ( !entryAttributePacked ) /*0xffc1bc7f*/ { return 0; /*0xffc1bc85*/ } } else { - n6_1 = 0; /*0xffc1bc9c*/ + mergedType = 0; /*0xffc1bc9c*/ } - } +} LABEL_25: - if ( n6 == 7 ) /*0xffc1bca3*/ - return HIDWORD(n7); /*0xffc1bca9*/ - return n6_1; /*0xffc1bcb3*/ + if ( entryAttributePacked == 7 ) /*0xffc1bca3*/ + return HIDWORD(currentTypePacked); /*0xffc1bca9*/ + return mergedType; /*0xffc1bcb3*/ } /* @@ -1489,7 +1498,7 @@ MsrData = *((_QWORD *)this + MtrrIndex); /*0xffc1be97*/ else MsrData = __readmsr(dword_FFC1DA34[3 *MtrrIndex]); /*0xffc1be93*/ MtrrType = RShiftU64(MsrData); /*0xffc1bea5*/ - LODWORD(MsrValue) = sub_FFC1BB36(MtrrType, 0); /*0xffc1beb3*/ + LODWORD(MsrValue) = MtrrResolveMemoryTypeFromCap(MtrrType, 0, 0); /*0xffc1beb3*/ } else { @@ -1524,7 +1533,7 @@ if ( EntryPtr[28] ) /*0xffc1bdf8*/ { if ( n0x100000 >= *(_QWORD *)EntryPtr && n0x100000 < *((_QWORD *)EntryPtr + 1) + *(_QWORD *)EntryPtr ) /*0xffc1be25*/ - Result = sub_FFC1BC06(Result, *((_DWORD *)EntryPtr + 4), *((_DWORD *)EntryPtr + 5), Result2); /*0xffc1be37*/ + Result = MtrrMergeVariableMtrrType(Result, *((_DWORD *)EntryPtr + 4), *((_DWORD *)EntryPtr + 5)); /*0xffc1be37*/ EntryCount = v23[0]; /*0xffc1be3b*/ } EntryPtr += 32; /*0xffc1be3f*/ @@ -1533,7 +1542,7 @@ while ( EntryCount ); /*0xffc1be49*/ MtrrTypeResult = Result; /*0xffc1be4b*/ } - LODWORD(MsrValue) = sub_FFC1BB36(MtrrTypeResult, HIDWORD(Result)); /*0xffc1be5a*/ + LODWORD(MsrValue) = MtrrResolveMemoryTypeFromCap(MtrrTypeResult, HIDWORD(Result), 0); /*0xffc1be5a*/ } } return MsrValue; /*0xffc1be61*/ diff --git a/MdePkg/Library/UefiDriverEntryPoint/TlsDxe/TlsDxe.c b/MdePkg/Library/UefiDriverEntryPoint/TlsDxe/TlsDxe.c index c456594..3a04080 100644 --- a/MdePkg/Library/UefiDriverEntryPoint/TlsDxe/TlsDxe.c +++ b/MdePkg/Library/UefiDriverEntryPoint/TlsDxe/TlsDxe.c @@ -10,7 +10,34 @@ #include "TlsDxe.h" -// Function: ModuleEntryPoint -EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { __int64 v3; // rax __int64 v5; // [rsp+40h] [rbp+18h] BYREF sub_608((__int64)ImageHandle, SystemTable); v3 = (*(__int64 ( **)(EFI_HANDLE, void *, __int64 *))(BootServices + 152))(ImageHandle, &unk_17E8E0, &v5); if ( v3 < 0 ) { sub_1EA8(0x80000000LL, " +/** + Module entry point for the TLS DXE driver. +**/ +EFI_STATUS +EFIAPI +ModuleEntryPoint ( + EFI_HANDLE ImageHandle, + EFI_SYSTEM_TABLE *SystemTable + ) +{ + __int64 Status; + __int64 LoadedImageProtocol; + + InitializeUefiLibrary ((__int64)ImageHandle, SystemTable); + + Status = (*(__int64 ( **)(EFI_HANDLE, void *, __int64 *))(BootServices + 152))( + ImageHandle, + &unk_17E8E0, + &LoadedImageProtocol + ); + + if ( Status < 0 ) { + DebugPrintStatus (0x80000000LL, " ASSERT_EFI_ERROR (Status = %r) -", v3); sub_1F30("e:\\hs\\MdePkg\\Library\\UefiDriverEntryPoint\\DriverEntryPoint.c", 126, "!EFI_ERROR (Status)"); } *(_QWORD *)(v5 + 88) = sub_460; return sub_75C(ImageHandle); } +", Status); + AssertFailedFromDriverEntryPoint ("e:\\hs\\MdePkg\\Library\\UefiDriverEntryPoint\\DriverEntryPoint.c", 126, "!EFI_ERROR (Status)"); + } + + *(_QWORD *)(LoadedImageProtocol + 88) = TlsDxeUnload; + return ReturnFromModuleEntry (ImageHandle); +} diff --git a/MdePkg/Library/UefiDriverEntryPoint/TlsDxe/TlsDxe.h b/MdePkg/Library/UefiDriverEntryPoint/TlsDxe/TlsDxe.h index 5e7981b..23b9f62 100644 --- a/MdePkg/Library/UefiDriverEntryPoint/TlsDxe/TlsDxe.h +++ b/MdePkg/Library/UefiDriverEntryPoint/TlsDxe/TlsDxe.h @@ -20,52 +20,58 @@ EFI_STATUS EFIAPI ModuleEntryPoint( - VOID + EFI_HANDLE ImageHandle, + EFI_SYSTEM_TABLE * SystemTable ); /// -/// sub_608 +/// InitializeUefiLibrary /// EFI_STATUS EFIAPI -sub_608( - VOID +InitializeUefiLibrary( + EFI_HANDLE ImageHandle, + EFI_SYSTEM_TABLE * SystemTable ); /// -/// sub_1EA8 +/// DebugPrintStatus /// EFI_STATUS EFIAPI -sub_1EA8( - VOID +DebugPrintStatus( + __int64 ErrorLevel, + const CHAR8 *Format, + __int64 Status ); /// -/// sub_1F30 +/// AssertFailedFromDriverEntryPoint /// EFI_STATUS EFIAPI -sub_1F30( - VOID +AssertFailedFromDriverEntryPoint( + const CHAR8 *FileName, + UINTN Line, + const CHAR8 *Description ); /// -/// sub_460 +/// TlsDxeUnload /// EFI_STATUS EFIAPI -sub_460( +TlsDxeUnload( VOID ); /// -/// sub_75C +/// ReturnFromModuleEntry /// EFI_STATUS EFIAPI -sub_75C( - VOID +ReturnFromModuleEntry( + EFI_HANDLE ImageHandle ); -#endif /* __TLSDXE_H__ */ \ No newline at end of file +#endif /* __TLSDXE_H__ */ diff --git a/PurleyPlatPkg/Platform/RuntimeDxe/PlatformReset/PlatformReset.c b/PurleyPlatPkg/Platform/RuntimeDxe/PlatformReset/PlatformReset.c index b8a9712..9b4fe17 100644 --- a/PurleyPlatPkg/Platform/RuntimeDxe/PlatformReset/PlatformReset.c +++ b/PurleyPlatPkg/Platform/RuntimeDxe/PlatformReset/PlatformReset.c @@ -511,7 +511,7 @@ } } -STATIC VOID *mDebugOutputProtocol = NULL; // 0x40F8 +VOID *mDebugOutputProtocol = NULL; // 0x40F8 // // GetSystemConfigurationTableByGuid - Get system configuration table by GUID (UefiLib wrapper) diff --git a/PurleyPlatPkg/Platform/RuntimeDxe/PlatformReset/PlatformReset.h b/PurleyPlatPkg/Platform/RuntimeDxe/PlatformReset/PlatformReset.h index 1ad4b4e..669a9a9 100644 --- a/PurleyPlatPkg/Platform/RuntimeDxe/PlatformReset/PlatformReset.h +++ b/PurleyPlatPkg/Platform/RuntimeDxe/PlatformReset/PlatformReset.h @@ -9,584 +9,123 @@ #include "../uefi_headers/Uefi.h" -// -// Function Prototypes -// +extern EFI_HANDLE ImageHandle; +extern EFI_SYSTEM_TABLE *gST; +extern EFI_BOOT_SERVICES *gBS; +extern EFI_RUNTIME_SERVICES *gRT; +extern EFI_BOOT_SERVICES *mBS; +extern EFI_RUNTIME_SERVICES *mRT; +extern EFI_DS *gDS; +extern EFI_EVENT mRuntimePciEvent; +extern EFI_EVENT mEfiExitBootServiceEvent; +extern EFI_MM_PCI_USRA *mPciUsra; +extern VOID *mHobList; +extern EFI_EVENT mRuntimeEvent; +extern EFI_EVENT mEfiEventReadyToBoot; +extern EFI_EVENT mVirtualAddressChangeEvent; +extern EFI_RUNTIME_SERVICES *mRuntimeServices; +extern EFI_EVENT mSetVirtualAddressMapEvent; +extern EFI_RESET_SYSTEM mOriginalResetSystem; +extern UINTN mPciExpressRegBase; +extern UINTN mPciExpressMmBaseCount; +extern UINTN mPciExpressMmBaseIndex; +extern VOID *mPciExpressMmBaseRegBase; +extern PCD_PROTOCOL *mPcd; +extern BOOLEAN mRuntimeVirtualAddrMapDone; +extern BOOLEAN mRuntimePciExpressInitialized; +extern VOID *mDebugOutputProtocol; -EFI_STATUS -EFIAPI -ModuleEntryPoint( - VOID -); +EFI_STATUS EFIAPI ModuleEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); -EFI_STATUS -EFIAPI -PlatformResetDriverEntryPoint( - VOID -); +EFI_STATUS EFIAPI PlatformResetDriverEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); -EFI_STATUS -EFIAPI -PlatformResetUnload( - VOID -); +EFI_STATUS EFIAPI PlatformResetUnload (VOID); -EFI_STATUS -EFIAPI -PlatformResetEntryPoint( - VOID -); +EFI_STATUS EFIAPI PlatformResetEntryPoint ( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ); -EFI_STATUS -EFIAPI -PlatformResetSystem( - VOID -); +VOID EFIAPI PlatformResetSystem ( + IN EFI_RESET_TYPE ResetType, + IN EFI_STATUS ResetStatus, + IN UINTN DataSize, + IN VOID *ResetData OPTIONAL + ); -EFI_STATUS -EFIAPI -nullsub_1( - VOID -); +VOID EFIAPI NullNotification (VOID); -EFI_STATUS -EFIAPI -global variables( - VOID -); +EFI_STATUS EFIAPI SaveOriginalResetSystemNotify (VOID); -EFI_STATUS -EFIAPI -ImageHandle = NULL; // 0x40C8( - VOID -); +VOID *EFIAPI ZeroMemWrapper ( + IN VOID *Buffer, + IN UINTN Length + ); -EFI_STATUS -EFIAPI -EFI_BOOT_SERVICES *gBS = NULL; // 0x40C0( - VOID -); +VOID EFIAPI CpuPauseWrapper (VOID); +UINT64 EFIAPI AsmReadTscWrapper (VOID); +VOID EFIAPI EnableInterruptsWrapper (VOID); +VOID EFIAPI DisableInterruptsWrapper (VOID); +UINTN EFIAPI AsmReadEflagsWrapper (VOID); -EFI_STATUS -EFIAPI -STATIC EFI_BOOT_SERVICES *mBS = NULL; // 0x40F0( - VOID -); +EFI_STATUS EFIAPI ZeroMemValidated ( + IN VOID *Buffer, + IN UINTN Length + ); -EFI_STATUS -EFIAPI -STATIC EFI_DS *gDS = NULL; // 0x4100( - VOID -); +EFI_STATUS EFIAPI GetDebugOutputProtocol (VOID); -EFI_STATUS -EFIAPI -STATIC EFI_EVENT mEfiExitBootServiceEvent = NULL; // 0x40E8( - VOID -); +EFI_STATUS EFIAPI DebugPrintWrapper ( + IN EFI_STATUS ErrorLevel, + IN CONST CHAR8 *Format, + ... + ); -EFI_STATUS -EFIAPI -STATIC VOID *mHobList = NULL; // 0x4110( - VOID -); +EFI_STATUS EFIAPI DebugAssertWrapper ( + IN EFI_STATUS File, + IN EFI_STATUS Line, + IN EFI_STATUS Description + ); -EFI_STATUS -EFIAPI -STATIC EFI_EVENT mEfiEventReadyToBoot = NULL; // 0x4148( - VOID -); +VOID EFIAPI ClearBootServicesPointerNotify (VOID); +VOID EFIAPI ExitBootServicesNotify (VOID); -EFI_STATUS -EFIAPI -STATIC EFI_RUNTIME_SERVICES *mRuntimeServices = NULL; // 0x4160( - VOID -); +UINTN EFIAPI GetSystemConfigurationTableByGuid ( + IN EFI_GUID *TableGuid, + OUT VOID **Table + ); -EFI_STATUS -EFIAPI -STATIC EFI_RESET_SYSTEM mOriginalResetSystem = NULL; // 0x4170( - VOID -); +VOID *EFIAPI GetHobListPointer (VOID); +VOID EFIAPI SetVirtualAddressMapNotify (VOID); +VOID EFIAPI ConvertRuntimePointersNotify (VOID); +EFI_STATUS EFIAPI RuntimePciExpressCleanupNotify (VOID); -EFI_STATUS -EFIAPI -STATIC UINTN mPciExpressMmBaseCount = 0; // 0x4128( - VOID -); +UINTN EFIAPI GetPciExpressMmioConfigSpaceAddress ( + IN UINTN Address + ); -EFI_STATUS -EFIAPI -STATIC VOID *mPciExpressMmBaseRegBase = NULL; // 0x4130( - VOID -); +BOOLEAN EFIAPI CompareGuid64 ( + IN EFI_GUID *Guid1, + IN EFI_GUID *Guid2 + ); -EFI_STATUS -EFIAPI -STATIC BOOLEAN mRuntimeVirtualAddrMapDone = FALSE; // 0x4118( - VOID -); +UINT64 EFIAPI ReadUnaligned64 ( + IN CONST VOID *Buffer + ); -EFI_STATUS -EFIAPI -//( - VOID -); +VOID *EFIAPI GetPcdProtocolPointer (VOID); +VOID EFIAPI IoWrite16Wrapper ( + IN OUT volatile UINT16 *Port + ); +UINT32 EFIAPI IoRead32Wrapper ( + IN UINT16 Port + ); +EFI_STATUS EFIAPI FreeRuntimePciExpressMap (VOID); -EFI_STATUS -EFIAPI -*( - VOID -); - -EFI_STATUS -EFIAPI -- UEFI DXE driver entry point( - VOID -); - -EFI_STATUS -EFIAPI -EFIAPI( - VOID -); - -EFI_STATUS -EFIAPI -- Initialize driver globals( - VOID -); - -EFI_STATUS -EFIAPI -BS protocol notification events, configure( - VOID -); - -EFI_STATUS -EFIAPI -Express MMIO access and runtime services.( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v8; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v14; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v16; // bx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v18; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -::ImageHandle = ImageHandle; /*0x1159*/( - VOID -); - -EFI_STATUS -EFIAPI -- Driver unload handler( - VOID -); - -EFI_STATUS -EFIAPI -runtime PCI Express mappings, frees events.( - VOID -); - -EFI_STATUS -EFIAPI -PlatformResetUnload()( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -- Main entry point for PlatformReset driver.( - VOID -); - -EFI_STATUS -EFIAPI -the EFI Reset Architecture Protocol and registers( - VOID -); - -EFI_STATUS -EFIAPI -PlatformResetSystem() as the runtime ResetSystem handler.( - VOID -); - -EFI_STATUS -EFIAPI -PlatformResetEntryPoint (( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // [rsp+40h] [rbp+8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -- Runtime ResetSystem service handler.( - VOID -); - -EFI_STATUS -EFIAPI -cold reset (0), warm reset (1), shutdown (3)( - VOID -); - -EFI_STATUS -EFIAPI -platform-specific reset (4, 5).( - VOID -); - -EFI_STATUS -EFIAPI -through PCH SMBus controller or via PCH reset register.( - VOID -); - -EFI_STATUS -EFIAPI -int n3; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -- Null notification function( - VOID -); - -EFI_STATUS -EFIAPI -nullsub_1 (VOID)( - VOID -); - -EFI_STATUS -EFIAPI -- Save the original ResetSystem pointer to mOriginalResetSystem( - VOID -); - -EFI_STATUS -EFIAPI -- ZeroMem with validation (BaseMemoryLib wrapper)( - VOID -); - -EFI_STATUS -EFIAPI -__fastcall sub_1A48(__int64 a1, unsigned __int64 a2)( - VOID -); - -EFI_STATUS -EFIAPI -- Get the Debug Output protocol for ASSERT/DEBUG output( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n0x10; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -- Debug print wrapper (supports NMI lock via CMOS 0x4B)( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v6; // al( - VOID -); - -EFI_STATUS -EFIAPI -int n113; // edx( - VOID -); - -EFI_STATUS -EFIAPI -- Debug assert (via Debug Output protocol)( - VOID -); - -EFI_STATUS -EFIAPI -__fastcall sub_1BB4(__int64 a1, __int64 a2, __int64 a3)( - VOID -); - -EFI_STATUS -EFIAPI -result = sub_1AAC(); /*0x1bcc*/( - VOID -); - -EFI_STATUS -EFIAPI -- BS event notification: clear gBS pointer( - VOID -); - -EFI_STATUS -EFIAPI -- ExitBootServices notification handler( - VOID -); - -EFI_STATUS -EFIAPI -- Get system configuration table by GUID (UefiLib wrapper)( - VOID -); - -EFI_STATUS -EFIAPI -__int64 __fastcall sub_1C28(__int64 a1, _QWORD *a2)( - VOID -); - -EFI_STATUS -EFIAPI -if ( !a1 ) /*0x1c4a*/( - VOID -); - -EFI_STATUS -EFIAPI -- Get HOB list pointer (HobLib wrapper)( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v1; // rax( - VOID -); - -EFI_STATUS -EFIAPI -- SetVirtualAddressMap notification: mark VA map done( - VOID -); - -EFI_STATUS -EFIAPI -- Runtime event: convert RT pointers for virtual address mode( - VOID -); - -EFI_STATUS -EFIAPI -- Runtime PCI Express address map cleanup( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -result = qword_4120; /*0x1da6*/( - VOID -); - -EFI_STATUS -EFIAPI -- Get PCI Express MMIO config space address( - VOID -); - -EFI_STATUS -EFIAPI -a PCI Express address to its MMIO base + offset.( - VOID -); - -EFI_STATUS -EFIAPI -__fastcall sub_1E0C(__int64 n1024064)( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v3; // rax( - VOID -); - -EFI_STATUS -EFIAPI -if ( (n1024064 & 0xFFFFFFFFF0000000uLL) != 0 ) /*0x1e1c*/( - VOID -); - -EFI_STATUS -EFIAPI -- Compare two GUIDs for equality (ReadUnaligned64 wrapper)( - VOID -); - -EFI_STATUS -EFIAPI -__fastcall sub_1ED0(__int64 a1, __int64 a2)( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // rax( - VOID -); - -EFI_STATUS -EFIAPI -- Read unaligned 64-bit value (BaseLib wrapper)( - VOID -); - -EFI_STATUS -EFIAPI -__fastcall sub_1F38(__int64 a1)( - VOID -); - -EFI_STATUS -EFIAPI -- Get the PCD protocol pointer( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rax( - VOID -); - -EFI_STATUS -EFIAPI -- Write 16-bit I/O port (IoLib wrapper)( - VOID -); - -EFI_STATUS -EFIAPI -__fastcall sub_1FF4(_WORD *a1)( - VOID -); - -EFI_STATUS -EFIAPI -- Read 32-bit I/O port (IoLib wrapper)( - VOID -); - -EFI_STATUS -EFIAPI -__int32 __fastcall sub_2028(unsigned __int16 n1288)( - VOID -); - -EFI_STATUS -EFIAPI -- Free pool memory (MemoryAllocationLib wrapper)( - VOID -); - -EFI_STATUS -EFIAPI -result = (*(__int64 (__fastcall **)(__int64))(qword_40C0 + 72))(qword_4120); /*0x206a*/( - VOID -); - -#endif /* __PLATFORMRESET_H__ */ \ No newline at end of file +#endif /* __PLATFORMRESET_H__ */ diff --git a/PurleyPlatPkg/Ras/Smm/ErrHandling/AmiErrorHandlerMain/AmiErrorHandlerMain.c b/PurleyPlatPkg/Ras/Smm/ErrHandling/AmiErrorHandlerMain/AmiErrorHandlerMain.c index 5a5241c..5e99af7 100644 --- a/PurleyPlatPkg/Ras/Smm/ErrHandling/AmiErrorHandlerMain/AmiErrorHandlerMain.c +++ b/PurleyPlatPkg/Ras/Smm/ErrHandling/AmiErrorHandlerMain/AmiErrorHandlerMain.c @@ -33,7 +33,7 @@ VOID ) { - return sub_3E24(); + return InitializeAutoGenTables(); } EFI_STATUS @@ -43,7 +43,7 @@ IN EFI_SYSTEM_TABLE *SystemTable ) { - return sub_42EC(ImageHandle, SystemTable); + return InitializeErrorHandlerCore(ImageHandle, SystemTable); } EFI_STATUS @@ -53,5 +53,5 @@ IN EFI_SYSTEM_TABLE *SystemTable ) { - return sub_427C(ImageHandle, SystemTable); + return FinalizeErrorHandlerInitFailure(ImageHandle, SystemTable); } diff --git a/PurleyPlatPkg/Ras/Smm/ErrHandling/AmiErrorHandlerMain/AmiErrorHandlerMain.h b/PurleyPlatPkg/Ras/Smm/ErrHandling/AmiErrorHandlerMain/AmiErrorHandlerMain.h index f25da7a..af6a5ab 100644 --- a/PurleyPlatPkg/Ras/Smm/ErrHandling/AmiErrorHandlerMain/AmiErrorHandlerMain.h +++ b/PurleyPlatPkg/Ras/Smm/ErrHandling/AmiErrorHandlerMain/AmiErrorHandlerMain.h @@ -28,7 +28,7 @@ ); /// -/// AmiErrorHandlerAutoGenInit -- wrapper for AutoGen init entrypoint (`sub_3E24`) +/// AmiErrorHandlerAutoGenInit -- performs AutoGen table initialization. /// EFI_STATUS EFIAPI @@ -37,7 +37,7 @@ ); /// -/// AmiErrorHandlerInitialize -- wrapper for primary initialization entrypoint (`sub_42EC`) +/// AmiErrorHandlerInitialize -- performs core handler initialization. /// EFI_STATUS EFIAPI @@ -47,7 +47,7 @@ ); /// -/// AmiErrorHandlerInitFail -- wrapper for initialization failure entrypoint (`sub_427C`) +/// AmiErrorHandlerInitFail -- performs initialization failure recovery. /// EFI_STATUS EFIAPI @@ -57,30 +57,30 @@ ); /// -/// sub_3E24 -- legacy decompiler symbol retained for link compatibility +/// AutoGen initialization implementation. /// EFI_STATUS EFIAPI -sub_3E24( +InitializeAutoGenTables( VOID ); /// -/// sub_42EC -- legacy decompiler symbol retained for link compatibility +/// Core SMM error-handler initialization implementation. /// EFI_STATUS EFIAPI -sub_42EC( +InitializeErrorHandlerCore( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ); /// -/// sub_427C -- legacy decompiler symbol retained for link compatibility +/// Initialization failure handler implementation. /// EFI_STATUS EFIAPI -sub_427C( +FinalizeErrorHandlerInitFailure( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ); diff --git a/PurleyPlatPkg/Ras/Smm/ErrHandling/ProcessorErrorHandler/ProcessorErrorHandler/ProcessorErrorHandler.c b/PurleyPlatPkg/Ras/Smm/ErrHandling/ProcessorErrorHandler/ProcessorErrorHandler/ProcessorErrorHandler.c index a633d79..62ae231 100644 --- a/PurleyPlatPkg/Ras/Smm/ErrHandling/ProcessorErrorHandler/ProcessorErrorHandler/ProcessorErrorHandler.c +++ b/PurleyPlatPkg/Ras/Smm/ErrHandling/ProcessorErrorHandler/ProcessorErrorHandler/ProcessorErrorHandler.c @@ -1,7 +1,7 @@ /** @file ProcessorErrorHandler.c -- ProcessorErrorHandler - Auto-converted from IDA decompiler output. + Cleaned symbols from decompiler artifacts. Functions: 1 Copyright (c) HR650X BIOS Decompilation Project @@ -11,4 +11,38 @@ // Function: ModuleEntryPoint -EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { __int64 v2; // rax EFI_STATUS v3; // rbx DriverInit(ImageHandle, SystemTable); qword_14FD8 = 0x8000000000000001uLL; if ( !sub_300(&unk_14EE0) ) { v2 = LocateProtocolsAndRegisterHandlers(); if ( v2 >= 0 || qword_14FD8 < 0 ) qword_14FD8 = v2; sub_6F88(&unk_14EE0); sub_3E0(&unk_14EE0, -1); sub_6D40( "e:\\hs\\Build\\HR6N0XMLK\\DEBUG_VS2015\\X64\\PurleyPlatPkg\\Ras\\Smm\\ErrHandling\\ProcessorErrorHandler\\Processo" "rErrorHandler\\DEBUG\\AutoGen.c", 1297, "((BOOLEAN)(0==1))"); sub_6D40( "e:\\hs\\Build\\HR6N0XMLK\\DEBUG_VS2015\\X64\\PurleyPlatPkg\\Ras\\Smm\\ErrHandling\\ProcessorErrorHandler\\Processo" "rErrorHandler\\DEBUG\\AutoGen.c", 1312, "((BOOLEAN)(0==1))"); } v3 = qword_14FD8; if ( qword_14FD8 < 0 ) SmmLockBoxDestructor(); return v3; } +EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { + EFI_STATUS Status; + EFI_STATUS RegisterStatus; + STATIC EFI_STATUS LastStatus; + + DriverInit(ImageHandle, SystemTable); + LastStatus = EFI_LOAD_ERROR; + if (!HandlerSpinlockCheck(&gProcessorErrorHandlerLock)) { + RegisterStatus = LocateProtocolsAndRegisterHandlers(); + if (RegisterStatus >= 0 || LastStatus < 0) { + LastStatus = RegisterStatus; + } + + ReleaseProcessorErrorHandlerSpinlock(&gProcessorErrorHandlerLock); + CleanupAfterProcessorErrorHandler(&gProcessorErrorHandlerLock, (UINTN)-1); + AssertEfiErrorWrapper( + "e:\\hs\\Build\\HR6N0XMLK\\DEBUG_VS2015\\X64\\PurleyPlatPkg\\Ras\\Smm\\ErrHandling\\ProcessorErrorHandler\\Processo" + "rErrorHandler\\DEBUG\\AutoGen.c", + 1297, + "((BOOLEAN)(0==1))" + ); + AssertEfiErrorWrapper( + "e:\\hs\\Build\\HR6N0XMLK\\DEBUG_VS2015\\X64\\PurleyPlatPkg\\Ras\\Smm\\ErrHandling\\ProcessorErrorHandler\\Processo" + "rErrorHandler\\DEBUG\\AutoGen.c", + 1312, + "((BOOLEAN)(0==1))" + ); + } + + Status = LastStatus; + if (LastStatus < 0) { + SmmLockBoxDestructor(); + } + return Status; +} diff --git a/PurleyPlatPkg/Ras/Smm/ErrHandling/ProcessorErrorHandler/ProcessorErrorHandler/ProcessorErrorHandler.h b/PurleyPlatPkg/Ras/Smm/ErrHandling/ProcessorErrorHandler/ProcessorErrorHandler/ProcessorErrorHandler.h index 579e02c..128873f 100644 --- a/PurleyPlatPkg/Ras/Smm/ErrHandling/ProcessorErrorHandler/ProcessorErrorHandler/ProcessorErrorHandler.h +++ b/PurleyPlatPkg/Ras/Smm/ErrHandling/ProcessorErrorHandler/ProcessorErrorHandler/ProcessorErrorHandler.h @@ -22,7 +22,8 @@ EFI_STATUS EFIAPI ModuleEntryPoint( - VOID + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ); /// @@ -31,11 +32,13 @@ EFI_STATUS EFIAPI DriverInit( - VOID + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ); /// -/// LocateProtocolsAndRegisterHandlers +/// LocateProtocolsAndRegisterHandlers -- Finds processor error handling protocols and +/// registers all handler services. /// EFI_STATUS EFIAPI @@ -44,39 +47,42 @@ ); /// -/// sub_6F88 +/// ReleaseProcessorErrorHandlerSpinlock -- releases module spinlock /// EFI_STATUS EFIAPI -sub_6F88( - VOID +ReleaseProcessorErrorHandlerSpinlock( + VOID *ErrorHandlerLock ); /// -/// sub_3E0 +/// CleanupAfterProcessorErrorHandler -- performs teardown actions for startup path /// EFI_STATUS EFIAPI -sub_3E0( - VOID +CleanupAfterProcessorErrorHandler( + VOID *ErrorHandlerLock, + UINTN StatusCode ); /// -/// sub_6D40 +/// AssertEfiErrorWrapper -- wrapper around ASSERT_EFI_ERROR reporting. /// EFI_STATUS EFIAPI -sub_6D40( - VOID +AssertEfiErrorWrapper( + IN CONST CHAR8 *FileName, + IN UINTN LineNumber, + IN CONST CHAR8 *Message ); /// -/// sub_300 +/// HandlerSpinlockCheck -- gate to avoid re-entrant or duplicate init. /// EFI_STATUS EFIAPI -sub_300( - VOID +HandlerSpinlockCheck( + VOID *ErrorHandlerLock ); /// diff --git a/PurleyPlatPkg/Ras/Whea/LastBootErrorLog/LastBootErrorLog/DEBUG/LastBootErrorLog/LastBootErrorLog.c b/PurleyPlatPkg/Ras/Whea/LastBootErrorLog/LastBootErrorLog/DEBUG/LastBootErrorLog/LastBootErrorLog.c index 7bbd13b..332b62b 100644 --- a/PurleyPlatPkg/Ras/Whea/LastBootErrorLog/LastBootErrorLog/DEBUG/LastBootErrorLog/LastBootErrorLog.c +++ b/PurleyPlatPkg/Ras/Whea/LastBootErrorLog/LastBootErrorLog/DEBUG/LastBootErrorLog/LastBootErrorLog.c @@ -10,7 +10,7 @@ #include "LastBootErrorLog.h" -// Function: ModuleEntryPoint +// Driver entry point. EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { EFI_STATUS Status; diff --git a/PurleyPlatPkg/Ras/Whea/LastBootErrorLog/LastBootErrorLog/DEBUG/LastBootErrorLog/LastBootErrorLog.h b/PurleyPlatPkg/Ras/Whea/LastBootErrorLog/LastBootErrorLog/DEBUG/LastBootErrorLog/LastBootErrorLog.h index 9b1533a..4ac4343 100644 --- a/PurleyPlatPkg/Ras/Whea/LastBootErrorLog/LastBootErrorLog/DEBUG/LastBootErrorLog/LastBootErrorLog.h +++ b/PurleyPlatPkg/Ras/Whea/LastBootErrorLog/LastBootErrorLog/DEBUG/LastBootErrorLog/LastBootErrorLog.h @@ -54,27 +54,8 @@ ); // -// Driver entry points and helpers. +// Semantic names for the driver-level helpers and globals are used directly +// in the implementation. No decompiler aliases are kept here. // -#define LastBootErrorLogEntryPoint ModuleEntryPoint -#define LastBootErrorLogAutoGenInit LastBootErrorLogAutoGenInit -#define LastBootErrorLogMainEntry LastBootErrorLogMain -#define LastBootErrorLogUnloadEntry LastBootErrorLogUnload - -#define LastBootErrorLogWheaHooksInitEntry LastBootErrorLogWheaHooksInit -#define LastBootErrorLogProcessBootRecord LastBootErrorLogProcessLastBootError -#define LastBootErrorLogDecodeProcessorRecord LastBootErrorLogDecodeProcessorError -#define LastBootErrorLogFindAndDispatchError LastBootErrorLogFindAndDispatchWheaError -#define LastBootErrorLogProcessPlatformRecord LastBootErrorLogProcessPlatformError -#define LastBootErrorLogBuildNotification LastBootErrorLogBuildErrorNotification -#define LastBootErrorLogCmcHandler CmcErrorHandler -#define LastBootErrorLogSmiHandler SmiErrorHandler -#define LastBootErrorLogUeHandler UeErrorHandler - -#define gLastBootErrorHob gLastBootErrorHob -#define gWheaBootProtocol gWheaBootProtocol -#define gWheaBootProtocolTable gWheaBootProtocolTable -#define gWheaProtocolAlternate gWheaProtocolAlternate -#define gSmiCmcProtocol gSmiCmcProtocol #endif /* __LASTBOOTERRORLOG_H__ */ diff --git a/PurleySktPkg/Dxe/JedecNvDimm/JedecNvDimm/JedecNvDimm.c b/PurleySktPkg/Dxe/JedecNvDimm/JedecNvDimm/JedecNvDimm.c index 49f8848..effda79 100644 --- a/PurleySktPkg/Dxe/JedecNvDimm/JedecNvDimm/JedecNvDimm.c +++ b/PurleySktPkg/Dxe/JedecNvDimm/JedecNvDimm/JedecNvDimm.c @@ -1,39 +1,30 @@ #include "JedecNvDimm.h" -// -// JedecNvDimm - UEFI Module (Regenerated from IDA) -// Total functions: 150 -// - -// Function: IoWrite32 @ 0x1000 (0x42 bytes) -// Index: 1/150 - -// local variable allocation has failed, the output may be wrong! UINT32 __cdecl IoWrite32(UINTN Port, UINT32 Value) { - unsigned __int64 count; // r8 - UINT32 Port_1; // eax - unsigned __int64 count_1; // rcx - void *dst; // rdi - const void *src; // rsi + unsigned __int64 byteCount; // r8 + UINT32 ResultPort; // eax + unsigned __int64 qwordCount; // rcx + void *writePtr; // rdi + const void *readPtr; // rsi - Port_1 = Port; /*0x1010*/ - if ( *(_QWORD *)&Value < Port && *(_QWORD *)&Value + count - 1 >= Port ) /*0x1018*/ + ResultPort = Port; /*0x1010*/ + if ( *(_QWORD *)&Value < Port && *(_QWORD *)&Value + byteCount - 1 >= Port ) /*0x1018*/ { - src = (const void *)(*(_QWORD *)&Value + count - 1); /*0x1030*/ - dst = (void *)(Port + count - 1); /*0x1033*/ + readPtr = (const void *)(*(_QWORD *)&Value + byteCount - 1); /*0x1030*/ + writePtr = (void *)(Port + byteCount - 1); /*0x1033*/ } else { - count_1 = count; /*0x101a*/ - count &= 7u; /*0x101d*/ - count_1 >>= 3; /*0x1024*/ - qmemcpy((void *)Port, *(const void **)&Value, 8 * count_1); /*0x1028*/ - src = (const void *)(*(_QWORD *)&Value + 8 * count_1); /*0x1028*/ - dst = (void *)(Port + 8 * count_1); /*0x1028*/ + qwordCount = byteCount; /*0x101a*/ + byteCount &= 7u; /*0x101d*/ + qwordCount >>= 3; /*0x1024*/ + qmemcpy((void *)Port, *(const void **)&Value, 8 * qwordCount); /*0x1028*/ + readPtr = (const void *)(*(_QWORD *)&Value + 8 * qwordCount); /*0x1028*/ + writePtr = (void *)(Port + 8 * qwordCount); /*0x1028*/ } - qmemcpy(dst, src, count); /*0x103c*/ - return Port_1; /*0x103f*/ + qmemcpy(writePtr, readPtr, byteCount); /*0x103c*/ + return ResultPort; /*0x103f*/ } @@ -42,10 +33,10 @@ UINT32 __cdecl IoRead32(UINTN Port) { - unsigned __int64 v1; // rdx + unsigned __int64 byteCount; // rdx - memset((void *)Port, 0, 8 * (v1 >> 3)); /*0x1066*/ - memset((void *)(Port + 8 * (v1 >> 3)), 0, v1 & 7); /*0x106b*/ + memset((void *)Port, 0, 8 * (byteCount >> 3)); /*0x1066*/ + memset((void *)(Port + 8 * (byteCount >> 3)), 0, byteCount & 7); /*0x106b*/ return Port; /*0x106e*/ } @@ -85,13 +76,13 @@ EFI_STATUS JedecNvDimmEntry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { - signed __int64 v4; // rbx + signed __int64 status; // rbx DriverInitLibs((__int64)ImageHandle, SystemTable); /*0x1124*/ - v4 = JedecNvDimmMain(ImageHandle, SystemTable); /*0x1134*/ - if ( v4 < 0 ) /*0x113a*/ + status = JedecNvDimmMain(ImageHandle, SystemTable); /*0x1134*/ + if ( status < 0 ) /*0x113a*/ JedecNvDimmUnload(); /*0x113c*/ - return v4; /*0x1149*/ + return status; /*0x1149*/ } @@ -5231,21 +5222,21 @@ __int64 __fastcall AcpiOpenDevice(EFI_HANDLE *p_ImageHandle) { - psub_13030 = (__int64)NvdimmGetAcpiTable; /*0x135c2*/ - psub_130EC = (__int64)NvdimmPutAcpiTable; /*0x135d7*/ - psub_134B0 = (__int64)NvdimmGetSocketCount; /*0x135ec*/ - psub_134D8 = (__int64)NvdimmGetChannelCount; /*0x135fa*/ - psub_13500 = (__int64)NvdimmGetDimmPerCh; /*0x13608*/ - psub_13530 = (__int64)NvdimmGetSubChPerDimm; /*0x13616*/ - psub_13560 = (__int64)NvdimmGetDomainPerCh; /*0x13624*/ - nullsub = (__int64)NvdimmPlatformNullSub; /*0x13632*/ - nullsub_0 = (__int64)NvdimmPlatformNullSub; /*0x13640*/ - psub_1358C = (__int64)NvdimmPlatformNull; /*0x1364e*/ + NvdimmGetAcpiTableFn = (__int64)NvdimmGetAcpiTable; /*0x135c2*/ + NvdimmPutAcpiTableFn = (__int64)NvdimmPutAcpiTable; /*0x135d7*/ + NvdimmGetSocketCountFn = (__int64)NvdimmGetSocketCount; /*0x135ec*/ + NvdimmGetChannelCountFn = (__int64)NvdimmGetChannelCount; /*0x135fa*/ + NvdimmGetDimmPerChannelFn = (__int64)NvdimmGetDimmPerCh; /*0x13608*/ + NvdimmGetSubChannelPerDimmFn = (__int64)NvdimmGetSubChPerDimm; /*0x13616*/ + NvdimmGetDomainPerChannelFn = (__int64)NvdimmGetDomainPerCh; /*0x13624*/ + NvdimmPlatformNullSubFn = (__int64)NvdimmPlatformNullSub; /*0x13632*/ + NvdimmPlatformNullSubHook = (__int64)NvdimmPlatformNullSub; /*0x13640*/ + NvdimmPlatformNullFn = (__int64)NvdimmPlatformNull; /*0x1364e*/ return (*(__int64 (__fastcall **)(EFI_HANDLE *, void *, _QWORD, __int64 *))(BootServices + 128))( p_ImageHandle, &unk_190C0, 0, - &psub_13030); + &NvdimmGetAcpiTableFn); } @@ -7146,4 +7137,3 @@ "!EFI_ERROR (Status)"); } } - diff --git a/PurleySktPkg/Dxe/JedecNvDimm/JedecNvDimm/JedecNvDimm.h b/PurleySktPkg/Dxe/JedecNvDimm/JedecNvDimm/JedecNvDimm.h index 0cbea0e..288f693 100644 --- a/PurleySktPkg/Dxe/JedecNvDimm/JedecNvDimm/JedecNvDimm.h +++ b/PurleySktPkg/Dxe/JedecNvDimm/JedecNvDimm/JedecNvDimm.h @@ -1,2002 +1,30 @@ -/** @file - JedecNvDimm.h -- Header for JedecNvDimm - -Copyright (c) HR650X BIOS Decompilation Project -**/ - #ifndef __JEDECNVDIMM_H__ #define __JEDECNVDIMM_H__ #include "../uefi_headers/Uefi.h" -// -// Function Prototypes -// +EFI_STATUS EFIAPI JedecNvDimmEntry(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable); +EFI_STATUS EFIAPI JedecNvDimmUnload(VOID); +EFI_STATUS EFIAPI JedecNvDimmCommand(VOID); +EFI_STATUS EFIAPI NfitInit(VOID); +EFI_STATUS EFIAPI NfitSetFlushHint(VOID); +EFI_STATUS EFIAPI ArsDoScrub(VOID); +EFI_STATUS EFIAPI ArsGetCapabilities(VOID); +EFI_STATUS EFIAPI ArsCheckStatus(VOID); +EFI_STATUS EFIAPI ArsEventHandler(VOID); +EFI_STATUS EFIAPI ArsCheckCompletion(VOID); +EFI_STATUS EFIAPI NvdimmAcpiConfig(VOID); +EFI_STATUS EFIAPI NvdimmConfigRead(VOID); +EFI_STATUS EFIAPI NvdimmPlatformNullSub(VOID); +EFI_STATUS EFIAPI LocateProtocol(VOID); +EFI_STATUS EFIAPI DebugLibGetDebugLib(VOID); +EFI_STATUS EFIAPI DebugPrint(VOID); +EFI_STATUS EFIAPI DebugLevelEnabled(VOID); +EFI_STATUS EFIAPI BootSvcNullCallback(VOID); +EFI_STATUS EFIAPI BootSvcTimerCallback(VOID); +EFI_STATUS EFIAPI MmPciBaseInit(VOID); +EFI_STATUS EFIAPI RuntimeSvcNullCallback(VOID); +EFI_STATUS EFIAPI RuntimeSvcPciCallback(VOID); +EFI_STATUS EFIAPI PciExpressNotifyUninit(VOID); -EFI_STATUS -EFIAPI -IoWriteB2F( - VOID -); - -EFI_STATUS -EFIAPI -IoWriteB2_0( - VOID -); - -EFI_STATUS -EFIAPI -JedecNvDimmEntry( - VOID -); - -EFI_STATUS -EFIAPI -JedecNvDimmUnload( - VOID -); - -EFI_STATUS -EFIAPI -JedecNvDimmCommand( - VOID -); - -EFI_STATUS -EFIAPI -SmbusSendCommand( - VOID -); - -EFI_STATUS -EFIAPI -NfitInit( - VOID -); - -EFI_STATUS -EFIAPI -NfitSetFlushHint( - VOID -); - -EFI_STATUS -EFIAPI -ArsDoScrub( - VOID -); - -EFI_STATUS -EFIAPI -ArsGetCapabilities( - VOID -); - -EFI_STATUS -EFIAPI -ArsCheckStatus( - VOID -); - -EFI_STATUS -EFIAPI -ArsEventHandler( - VOID -); - -EFI_STATUS -EFIAPI -ArsCheckCompletion( - VOID -); - -EFI_STATUS -EFIAPI -NvdimmAcpiConfig( - VOID -); - -EFI_STATUS -EFIAPI -NvdimmConfigRead( - VOID -); - -EFI_STATUS -EFIAPI -NvdimmPlatformNullSub( - VOID -); - -EFI_STATUS -EFIAPI -LocateProtocol( - VOID -); - -EFI_STATUS -EFIAPI -DebugLibGetDebugLib( - VOID -); - -EFI_STATUS -EFIAPI -DebugPrint( - VOID -); - -EFI_STATUS -EFIAPI -DebugLevelEnabled( - VOID -); - -EFI_STATUS -EFIAPI -BootSvcNullCallback( - VOID -); - -EFI_STATUS -EFIAPI -BootSvcTimerCallback( - VOID -); - -EFI_STATUS -EFIAPI -MmPciBaseInit( - VOID -); - -EFI_STATUS -EFIAPI -RuntimeSvcNullCallback( - VOID -); - -EFI_STATUS -EFIAPI -RuntimeSvcPciCallback( - VOID -); - -EFI_STATUS -EFIAPI -PciExpressNotifyUninit( - VOID -); - -EFI_STATUS -EFIAPI -VARIABLES( - VOID -); - -EFI_STATUS -EFIAPI -variable allocation has failed, the output may be wrong!( - VOID -); - -EFI_STATUS -EFIAPI -UINT32 Port_1; // eax( - VOID -); - -EFI_STATUS -EFIAPI -void *dst; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -Port_1 = Port; /*0x1010*/( - VOID -); - -EFI_STATUS -EFIAPI -memset((void *)Port, 0, 8 * (v1 >> 3)); /*0x1066*/( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v8; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v14; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int16 callerseflags_w; // bx( - VOID -); - -EFI_STATUS -EFIAPI -int v18; // edi( - VOID -); - -EFI_STATUS -EFIAPI -::ImageHandle = ImageHandle; /*0x1169*/( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -int v2; // eax( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *v4; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v8; // eax( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *v10; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 i_1; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v2; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -char v5; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *v4; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v8; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v1; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v11; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v13; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v15; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v17; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v19; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v22; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v24; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v26; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v28; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v30; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v32; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v34; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v36; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+20h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -*a1 = (a5 >> 12) & 0xF; /*0x32d7*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 j; // [rsp+0h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -char v11; // [rsp+0h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v6; // rax( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *v5; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n2_1; // [rsp+20h] [rbp-58h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *v8; // [rsp+0h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+20h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 result; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v2; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v8; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v14; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v16; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v18; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v20; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v22; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -int v26; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v28; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v32; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v38; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v40; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v42; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+0h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v14; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v16; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v18; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v20; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE v10[8]; // [rsp+20h] [rbp-18h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *result; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v11; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v13; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v15; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE v17[8]; // [rsp+20h] [rbp-18h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *v22; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v25; // [rsp+30h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -char v7; // al( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v21; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v23; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v25; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -_QWORD *v27; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v29; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v31; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v33; // [rsp+30h] [rbp-68h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *j_2; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v17; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v21; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v27; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v29; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v33; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v35; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v37; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v39; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v41; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v43; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v45; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v47; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v49; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v51; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v53; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v55; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v57; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v59; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v61; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n2_2; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v65; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v67; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v69; // [rsp+30h] [rbp-E8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v23; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v26; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v32; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v44; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v46; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v48; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v50; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v52; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v54; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v56; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v58; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v60; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v62; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v64; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE v66[8]; // [rsp+20h] [rbp-58h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n3840; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -v2 = *(_WORD *)(a1 + 4); /*0xf902*/( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v1; // ax( - VOID -); - -EFI_STATUS -EFIAPI -v2 = NvdimmConfigRead(); /*0xf9c0*/( - VOID -); - -EFI_STATUS -EFIAPI -char v8; // dl( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n67453100; // ebp( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n67453112; // r12d( - VOID -); - -EFI_STATUS -EFIAPI -int v15; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n2; // r13d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v23; // r15d( - VOID -); - -EFI_STATUS -EFIAPI -int n4; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -bool v27; // zf( - VOID -); - -EFI_STATUS -EFIAPI -char v7; // r14( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v9; // r14( - VOID -); - -EFI_STATUS -EFIAPI -int v13; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v15; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -int v18; // [rsp+50h] [rbp+30h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -char v7; // bp( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 v9; // bp( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n67453088; // r15d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v17; // r13d( - VOID -); - -EFI_STATUS -EFIAPI -int v22; // [rsp+60h] [rbp+8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v5; // rax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v8; // [rsp+48h] [rbp+10h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v27; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -char n3; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_2; // rax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 *v17; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v19; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v25; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v41; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -char *v3; // [rsp+30h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *n4_2; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *dst_2; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *dst_5; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *dst_3; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *dst_7; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *dst_11; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+30h] [rbp-118h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n8; // esi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n3; // si( - VOID -); - -EFI_STATUS -EFIAPI -char v5; // al( - VOID -); - -EFI_STATUS -EFIAPI -if ( n0x2000000 >= 0x2000000 ) /*0x132c3*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n67; // al( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *v13; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v15; // si( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *v17; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *v19; // [rsp+40h] [rbp+8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 *buf_1; // r12( - VOID -); - -EFI_STATUS -EFIAPI -char buf_2; // r14( - VOID -); - -EFI_STATUS -EFIAPI -char v9; // bl( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v11; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v13; // edi( - VOID -); - -EFI_STATUS -EFIAPI -int v15; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 v17; // ax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v20; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v22; // [rsp+60h] [rbp+8h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v3; // r12( - VOID -); - -EFI_STATUS -EFIAPI -char v6; // r13( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v8; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -char v10; // r13( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v14; // r14( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v16; // esi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v18; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -int v22; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v24; // bl( - VOID -); - -EFI_STATUS -EFIAPI -char v26; // di( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v28; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v30; // r14( - VOID -); - -EFI_STATUS -EFIAPI -bool v32; // zf( - VOID -); - -EFI_STATUS -EFIAPI -char *buf_1; // r13( - VOID -); - -EFI_STATUS -EFIAPI -char v5; // r14( - VOID -); - -EFI_STATUS -EFIAPI -char v7; // si( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v19; // edi( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v23; // r14( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v25; // r12( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v27; // di( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n8; // al( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v31; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v34; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v4; // bp( - VOID -); - -EFI_STATUS -EFIAPI -char v6; // al( - VOID -); - -EFI_STATUS -EFIAPI -char v8; // r12( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v12; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v14; // r13( - VOID -); - -EFI_STATUS -EFIAPI -char v16; // si( - VOID -); - -EFI_STATUS -EFIAPI -char v24; // si( - VOID -); - -EFI_STATUS -EFIAPI -char v26; // al( - VOID -); - -EFI_STATUS -EFIAPI -char v30; // cl( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v32; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v34; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v36; // rbp( - VOID -); - -EFI_STATUS -EFIAPI -bool v39; // cf( - VOID -); - -EFI_STATUS -EFIAPI -char v5; // r10( - VOID -); - -EFI_STATUS -EFIAPI -int v8; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v10; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v12; // edx( - VOID -); - -EFI_STATUS -EFIAPI -char v6; // di( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v9; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -char v11; // dl( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v7; // eax( - VOID -); - -EFI_STATUS -EFIAPI -v6 = a2; /*0x14569*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n4_1; // r12( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n4_9; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -int v7; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v9; // r13( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v11; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v13; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v15; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -char v17; // di( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_2; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -char v21; // al( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4_3; // di( - VOID -); - -EFI_STATUS -EFIAPI -int v25; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n6; // bl( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v30; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v36; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v38; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v42; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_4; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -char *buf_1; // r14( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v5; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v7; // edi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n6; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -char v18; // r12( - VOID -); - -EFI_STATUS -EFIAPI -int v20; // edi( - VOID -); - -EFI_STATUS -EFIAPI -int v22; // esi( - VOID -); - -EFI_STATUS -EFIAPI -int v24; // esi( - VOID -); - -EFI_STATUS -EFIAPI -int v26; // esi( - VOID -); - -EFI_STATUS -EFIAPI -int v28; // edi( - VOID -); - -EFI_STATUS -EFIAPI -int v30; // esi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v32; // esi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v34; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -char v36; // dl( - VOID -); - -EFI_STATUS -EFIAPI -char v38; // cl( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v6; // rbp( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rax( - VOID -); - -EFI_STATUS -EFIAPI -v2 = LocateProtocol(); /*0x150f9*/( - VOID -); - -EFI_STATUS -EFIAPI -v2 = LocateProtocol(); /*0x15115*/( - VOID -); - -EFI_STATUS -EFIAPI -if ( n0x40_1 >= 0x40 ) /*0x15144*/( - VOID -); - -EFI_STATUS -EFIAPI -n0x40_1 = n0x40; /*0x151da*/( - VOID -); - -EFI_STATUS -EFIAPI -Count_1 = Count; /*0x1521a*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n0x10; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v6; // al( - VOID -); - -EFI_STATUS -EFIAPI -char n3; // dl( - VOID -); - -EFI_STATUS -EFIAPI -DebugLib = DebugLibGetDebugLib(); /*0x15408*/( - VOID -); - -EFI_STATUS -EFIAPI -if ( qword_1A350 ) /*0x15454*/( - VOID -); - -EFI_STATUS -EFIAPI -if ( !a1 ) /*0x15492*/( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v1; // rax( - VOID -); - -EFI_STATUS -EFIAPI -i_1 = i; /*0x155be*/( - VOID -); - -EFI_STATUS -EFIAPI -_WORD *v5; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -result = (*(__int64 (__fastcall **)(_QWORD, __int64 *))(RuntimeServices + 64))(0, &RuntimeServices_1); /*0x15668*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -result = qword_1A378; /*0x15682*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v3; // rax( - VOID -); - -EFI_STATUS -EFIAPI -if ( (n1024064 & 0xFFFFFFFFF0000000uLL) != 0 ) /*0x156f8*/( - VOID -); - -EFI_STATUS -EFIAPI -int n0x400000; // edi( - VOID -); - -EFI_STATUS -EFIAPI -result = (*(__int64 (__fastcall **)(__int64))(BootServices + 72))(qword_1A378); /*0x15832*/( - VOID -); - -#endif /* __JEDECNVDIMM_H__ */ \ No newline at end of file +#endif diff --git a/PurleySktPkg/Me/Heci/Dxe/HeciInitDxe/HeciInitDxe.c b/PurleySktPkg/Me/Heci/Dxe/HeciInitDxe/HeciInitDxe.c index 37a7f68..4059cd6 100644 --- a/PurleySktPkg/Me/Heci/Dxe/HeciInitDxe/HeciInitDxe.c +++ b/PurleySktPkg/Me/Heci/Dxe/HeciInitDxe/HeciInitDxe.c @@ -1,10 +1,7 @@ /** @file HeciInitDxe.c -- HeciInitDxe - Auto-converted from IDA decompiler output. - Functions: 1 - -Copyright (c) HR650X BIOS Decompilation Project + Copyright (c) HR650X BIOS Decompilation Project **/ #include "HeciInitDxe.h" @@ -15,9 +12,9 @@ { signed __int64 v3; // rbx - sub_3C0(ImageHandle, SystemTable); - v3 = sub_6AC(ImageHandle); + InitializeHeciDxe(ImageHandle, SystemTable); + v3 = InitializeHeciDxeProtocol(ImageHandle); if ( v3 < 0 ) - sub_66C(); + ShutdownHeciDxe(); return v3; } diff --git a/PurleySktPkg/Me/Heci/Dxe/HeciInitDxe/HeciInitDxe.h b/PurleySktPkg/Me/Heci/Dxe/HeciInitDxe/HeciInitDxe.h index c0614f7..da35296 100644 --- a/PurleySktPkg/Me/Heci/Dxe/HeciInitDxe/HeciInitDxe.h +++ b/PurleySktPkg/Me/Heci/Dxe/HeciInitDxe/HeciInitDxe.h @@ -24,30 +24,31 @@ ); /// -/// sub_3C0 +/// Initialize HECI DXE protocol and internal data /// EFI_STATUS EFIAPI -sub_3C0( - VOID +InitializeHeciDxe( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ); /// -/// sub_6AC +/// Initialize HECI DXE protocol interface /// EFI_STATUS EFIAPI -sub_6AC( - VOID +InitializeHeciDxeProtocol( + IN EFI_HANDLE ImageHandle ); /// -/// sub_66C +/// Shutdown HECI DXE services /// EFI_STATUS EFIAPI -sub_66C( +ShutdownHeciDxe( VOID ); -#endif /* __HECIINITDXE_H__ */ \ No newline at end of file +#endif /* __HECIINITDXE_H__ */ diff --git a/PurleySktPkg/Me/Sps/Dxe/SpsDxe/SpsDxe.c b/PurleySktPkg/Me/Sps/Dxe/SpsDxe/SpsDxe.c index 1511bde..a616dc2 100644 --- a/PurleySktPkg/Me/Sps/Dxe/SpsDxe/SpsDxe.c +++ b/PurleySktPkg/Me/Sps/Dxe/SpsDxe/SpsDxe.c @@ -15,9 +15,9 @@ { signed __int64 v2; // rbx - sub_3EC(ImageHandle, SystemTable); - v2 = sub_818(); + SpsDxeInitializeLibrary(ImageHandle, SystemTable); + v2 = InitializeSpsDxe(); if ( v2 < 0 ) - sub_6AC(); + HandleSpsDxeInitializationError(); return v2; } diff --git a/PurleySktPkg/Me/Sps/Dxe/SpsDxe/SpsDxe.h b/PurleySktPkg/Me/Sps/Dxe/SpsDxe/SpsDxe.h index e93f624..1e85d40 100644 --- a/PurleySktPkg/Me/Sps/Dxe/SpsDxe/SpsDxe.h +++ b/PurleySktPkg/Me/Sps/Dxe/SpsDxe/SpsDxe.h @@ -20,34 +20,36 @@ EFI_STATUS EFIAPI ModuleEntryPoint( - VOID + EFI_HANDLE ImageHandle, + EFI_SYSTEM_TABLE *SystemTable ); /// -/// sub_3EC +/// SpsDxeInitializeLibrary /// EFI_STATUS EFIAPI -sub_3EC( - VOID +SpsDxeInitializeLibrary( + EFI_HANDLE ImageHandle, + EFI_SYSTEM_TABLE *SystemTable ); /// -/// sub_818 +/// InitializeSpsDxe /// EFI_STATUS EFIAPI -sub_818( +InitializeSpsDxe( VOID ); /// -/// sub_6AC +/// HandleSpsDxeInitializationError /// EFI_STATUS EFIAPI -sub_6AC( +HandleSpsDxeInitializationError( VOID ); -#endif /* __SPSDXE_H__ */ \ No newline at end of file +#endif /* __SPSDXE_H__ */ diff --git a/PurleySktPkg/Pei/CrystalRidge/CrystalRidge/CrystalRidge.c b/PurleySktPkg/Pei/CrystalRidge/CrystalRidge/CrystalRidge.c index a158292..42a958b 100644 --- a/PurleySktPkg/Pei/CrystalRidge/CrystalRidge/CrystalRidge.c +++ b/PurleySktPkg/Pei/CrystalRidge/CrystalRidge/CrystalRidge.c @@ -1,253 +1,251 @@ #include "CrystalRidge.h" // -// CrystalRidge - UEFI Module (Regenerated from IDA) -// Total functions: 13 +// CrystalRidge - UEFI Module // -// Function: Memset @ 0xffd685fc (0x15 bytes) -// Index: 1/13 - -void *__cdecl Memset(void *buf, unsigned int count, char value) +void * +EFIAPI +Memset( + VOID *Buffer, + UINTN Count, + CHAR8 Value + ) { - memset(buf, value, count); /*0xffd68609*/ - return buf; /*0xffd6860f*/ + memset(Buffer, Value, Count); + return Buffer; } - -// Function: SetMem32Strided @ 0xffd6861c (0x1f bytes) -// Index: 2/13 - -int __cdecl SetMem32Strided(int Buffer, int Index, int ValueLo, int ValueHi) +INTN +EFIAPI +SetMem32Strided( + INTN Count, + INTN ValueLo, + INTN ValueHi, + VOID *Buffer + ) { - do /*0xffd68635*/ + do { + *(_DWORD *)((UINTN)Buffer + (8 * Count - 8)) = (UINT32)ValueLo; + *(_DWORD *)((UINTN)Buffer + (8 * Count-- - 4)) = (UINT32)ValueHi; + } while (Count); + return (INTN)Buffer; +} + +VOID * +EFIAPI +Memset32( + VOID *Buffer, + UINTN Count, + INT32 Value + ) +{ + memset32(Buffer, Value, Count); + return Buffer; +} + +CHAR8 * +EFIAPI +Memmove( + CHAR8 *Destination, + CHAR8 CONST *Source, + UINTN ByteCount + ) +{ + UINTN Remaining; + CHAR8 *DestinationCur; + CHAR8 *SourceCur; + + Remaining = ByteCount; + if (Source < Destination && &Source[ByteCount - 1] >= Destination) { - *(_DWORD *)(Buffer + 8 * Index - 8) = ValueLo; /*0xffd6862d*/ - *(_DWORD *)(Buffer + 8 * Index-- - 4) = ValueHi; /*0xffd68631*/ - } - while ( Index ); /*0xffd68635*/ - return Buffer; /*0xffd68639*/ -} - - -// Function: Memset32 @ 0xffd6863c (0x15 bytes) -// Index: 3/13 - -void *__cdecl Memset32(void *buf, unsigned int count, int value) -{ - memset32(buf, value, count); /*0xffd68649*/ - return buf; /*0xffd6864f*/ -} - - -// Function: Memmove @ 0xffd6865c (0x3f bytes) -// Index: 4/13 - -char *__cdecl Memmove(char *dst, char *src, unsigned int count) -{ - unsigned int count_1; // edx - char *dst_1; // edi - char *src_1; // esi - - count_1 = count; /*0xffd68666*/ - if ( src < dst && &src[count - 1] >= dst ) /*0xffd68674*/ - { - src_1 = &src[count - 1]; /*0xffd68688*/ - dst_1 = &dst[count - 1]; /*0xffd6868a*/ + SourceCur = &Source[ByteCount - 1]; + DestinationCur = &Destination[ByteCount - 1]; } else { - count_1 = count & 3; /*0xffd68678*/ - qmemcpy(dst, src, 4 * (count >> 2)); /*0xffd68681*/ - src_1 = &src[4 * (count >> 2)]; /*0xffd68681*/ - dst_1 = &dst[4 * (count >> 2)]; /*0xffd68681*/ + Remaining = ByteCount & 3; + qmemcpy(Destination, Source, 4 * (ByteCount >> 2)); + SourceCur = &Source[4 * (ByteCount >> 2)]; + DestinationCur = &Destination[4 * (ByteCount >> 2)]; } - qmemcpy(dst_1, src_1, count_1); /*0xffd68691*/ - return dst; /*0xffd68698*/ + qmemcpy(DestinationCur, SourceCur, Remaining); + return Destination; } - -// Function: _ModuleEntryPoint @ 0xffd686bc (0x5 bytes) -// Index: 5/13 - -// (too small: 0x5 bytes) - - -// Function: GenerateSwSmiForNonceRestore @ 0xffd686c1 (0x1c bytes) -// Index: 6/13 - +// // EndOfPei callback: print debug message, trigger SW SMI 0xFB via IO port 0xB2 to restore nonce -int GenerateSwSmiForNonceRestore() +// +EFI_STATUS +EFIAPI +GenerateSwSmiForNonceRestore( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ) { - CrystalRidgeDebugPrint(0x80000000, "[CR] (PEI) Generating SW SMI for Nonce restoration\n"); /*0xffd686cb*/ - __outbyte(0xB2u, 0xFBu); /*0xffd686d9*/ - return 0; /*0xffd686dc*/ + CrystalRidgeDebugPrint(0x80000000, "[CR] (PEI) Generating SW SMI for Nonce restoration\n"); + __outbyte(0xB2u, 0xFBu); + return EFI_SUCCESS; } - -// Function: CrystalRidgePeimEntry @ 0xffd686dd (0x7a bytes) -// Index: 7/13 - -// PEIM entry: registers EndOfPei notify for CrystalRidge nonce restoration. On production systems locates CrystalRidge PPI and triggers SW SMI (0xB2/0xFB) for nonce restore. -int CrystalRidgePeimEntry() +// +// PEIM entry: registers EndOfPei notify for CrystalRidge nonce restoration. +// On production systems locates CrystalRidge PPI and triggers SW SMI (0xB2/0xFB) for nonce restore. +// +EFI_STATUS +EFIAPI +CrystalRidgePeimEntry( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ) { - int Status; // esi - int PeiServicesTable; // eax - int PeiServices; // eax - int NotifyStatus; // eax - int CrystalRidgePpi; // eax - int BootMode; // [esp+8h] [ebp-4h] BYREF + EFI_STATUS Status; + EFI_PEI_SERVICES *PeiServicesTable; + EFI_PEI_SERVICES *PeiServicesPtr; + EFI_STATUS NotifyStatus; + CRYSTAL_RIDGE_PPI *CrystalRidgePpi; + EFI_BOOT_MODE BootMode; - Status = 0; /*0xffd686ed*/ - CrystalRidgeDebugPrint(0x80000000, "[CR] (PEI) Register EndOfPei Notify for Nonce restoration\n"); /*0xffd686f0*/ - PeiServicesTable = GetPeiServicesTable(); /*0xffd686f5*/ - (*(void (__cdecl **)(int, int *))(*(_DWORD *)PeiServicesTable + 40))(PeiServicesTable, &BootMode); /*0xffd68701*/ - if ( BootMode == 17 ) /*0xffd6870b*/ + Status = EFI_SUCCESS; + CrystalRidgeDebugPrint(0x80000000, "[CR] (PEI) Register EndOfPei Notify for Nonce restoration\n"); + PeiServicesTable = GetPeiServicesTable(); + (*(void (__cdecl **)(EFI_PEI_SERVICES *, EFI_BOOT_MODE *))(*(_DWORD *)PeiServicesTable + 40))(PeiServicesTable, &BootMode); + if (BootMode == 17) { - PeiServices = GetPeiServicesTable(); /*0xffd6870d*/ - NotifyStatus = (*(int (__cdecl **)(int, void *))(*(_DWORD *)PeiServices + 36))( /*0xffd6871a*/ - PeiServices, + PeiServicesPtr = GetPeiServicesTable(); + NotifyStatus = (*(int (__cdecl **)(EFI_PEI_SERVICES *, VOID *))(*(_DWORD *)PeiServicesPtr + 36))( + PeiServicesPtr, &gCrystalRidgeNotifyDescriptor); - Status = NotifyStatus; /*0xffd6871d*/ - if ( NotifyStatus < 0 ) /*0xffd68723*/ + Status = NotifyStatus; + if (NotifyStatus < 0) { - CrystalRidgeDebugPrint(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n", NotifyStatus); /*0xffd6872c*/ - CrystalRidgePpi = LocateCrystalRidgePpi(); /*0xffd68734*/ - if ( CrystalRidgePpi ) /*0xffd6873b*/ - (*(void (__cdecl **)(const char *, int, const char *))(CrystalRidgePpi + 4))( /*0xffd68749*/ + CrystalRidgeDebugPrint(0x80000000, "\nASSERT_EFI_ERROR (Status = %r)\n", NotifyStatus); + CrystalRidgePpi = LocateCrystalRidgePpi(); + if (CrystalRidgePpi) + (*(void (__cdecl **)(const char *, int, const char *))(CrystalRidgePpi + 4))( "e:\\hs\\PurleySktPkg\\Pei\\CrystalRidge\\CrystalRidgePeim.c", 109, "!EFI_ERROR (Status)"); } } - return Status; /*0xffd6874f*/ + return Status; } - -// Function: LocateCrystalRidgePpi @ 0xffd68757 (0x31 bytes) -// Index: 8/13 - -int LocateCrystalRidgePpi() +CRYSTAL_RIDGE_PPI * +EFIAPI +LocateCrystalRidgePpi( + VOID + ) { - int PeiServicesTable; // eax - _BYTE InterfaceBuffer[4]; // [esp+0h] [ebp-8h] BYREF - int PpiInterface; // [esp+4h] [ebp-4h] BYREF + EFI_STATUS Status; + EFI_PEI_SERVICES *PeiServicesTable; + _BYTE InterfaceBuffer[4]; + CRYSTAL_RIDGE_PPI *PpiInterface; - PeiServicesTable = GetPeiServicesTable(); /*0xffd6875c*/ - if ( (*(int (__cdecl **)(int, struct EFI_GUID *, _DWORD, _BYTE *, int *))(*(_DWORD *)PeiServicesTable + 32))( /*0xffd6877b*/ - PeiServicesTable, - &gCrystalRidgeGuid, - 0, - InterfaceBuffer, - &PpiInterface) >= 0 ) - return PpiInterface; /*0xffd68781*/ - else - return 0; /*0xffd6877d*/ + PeiServicesTable = GetPeiServicesTable(); + Status = (*(EFI_STATUS(__cdecl **)(EFI_PEI_SERVICES *, EFI_GUID *, UINTN, _BYTE *, CRYSTAL_RIDGE_PPI **))(*(_DWORD *)PeiServicesTable + 32))( + PeiServicesTable, + &gCrystalRidgeGuid, + 0, + InterfaceBuffer, + &PpiInterface); + if (Status >= 0) + return PpiInterface; + + return NULL; } - -// Function: CrystalRidgeDebugPrint @ 0xffd68788 (0x2a bytes) -// Index: 9/13 - -int CrystalRidgeDebugPrint(int ErrorLevel, char *[CR]_(PEI)_Generating_SW_SMI_for_Nonce_restoration_n, ...) +UINTN +EFIAPI +CrystalRidgeDebugPrint( + IN UINTN ErrorLevel, + IN CONST CHAR8 *Format, + ... + ) { - int PpiRawPtr; // eax - int (__cdecl **PpiFuncTable)(int, char *, char *); // esi - va_list va; // [esp+10h] [ebp+Ch] BYREF + UINTN Result; + INTN (__cdecl **PpiFuncTable)(UINTN, const CHAR8 *, char *); + va_list VaList; - va_start(va, [CR]_(PEI)_Generating_SW_SMI_for_Nonce_restoration_n); - PpiRawPtr = LocateCrystalRidgePpi(); /*0xffd68789*/ - PpiFuncTable = (int (__cdecl **)(int, char *, char *))PpiRawPtr; /*0xffd6878e*/ - if ( PpiRawPtr ) /*0xffd68792*/ + va_start(VaList, Format); + Result = (UINTN)LocateCrystalRidgePpi(); + PpiFuncTable = (INTN (__cdecl **)(UINTN, const CHAR8 *, char *))Result; + if (Result) { - PpiRawPtr = IsManufacturingMode(); /*0xffd68794*/ - if ( (PpiRawPtr & ErrorLevel) != 0 ) /*0xffd6879f*/ - return (*PpiFuncTable)(ErrorLevel, [CR]_(PEI)_Generating_SW_SMI_for_Nonce_restoration_n, (char *)va); /*0xffd687ab*/ + Result = IsManufacturingMode(); + if ((Result & ErrorLevel) != 0) + return (*PpiFuncTable)(ErrorLevel, Format, (char *)VaList); } - return PpiRawPtr; /*0xffd687b0*/ + + return Result; } - -// Function: CrystalRidgeDebugAssert @ 0xffd687b2 (0x1e bytes) -// Index: 10/13 - -int __cdecl CrystalRidgeDebugAssert(int PeiServices____((void__)_0), int PeiServicesVal, const char *Expression) +VOID +EFIAPI +CrystalRidgeDebugAssert( + IN CONST CHAR8 *FileName, + IN UINTN LineNumber, + IN CONST CHAR8 *Description + ) { - int LineNumber; // edx - int ParamExpression; // ecx - int LineNumber_1; // esi - int ParamExpression_1; // edi - int PpiInterface; // eax + CRYSTAL_RIDGE_PPI *PpiInterface; - LineNumber_1 = LineNumber; /*0xffd687b4*/ - ParamExpression_1 = ParamExpression; /*0xffd687b6*/ - PpiInterface = LocateCrystalRidgePpi(); /*0xffd687b8*/ - if ( PpiInterface ) /*0xffd687bf*/ - return (*(int (__cdecl **)(int, int, int))(PpiInterface + 4))( /*0xffd687c7*/ - ParamExpression_1, - LineNumber_1, - PeiServices____((void__)_0)); - return PpiInterface; /*0xffd687cd*/ + PpiInterface = LocateCrystalRidgePpi(); + if (PpiInterface) + (*(void (__cdecl **)(const char *, UINTN, const char *))(PpiInterface + 4))(FileName, LineNumber, Description); } - -// Function: IsManufacturingMode @ 0xffd687d0 (0x4f bytes) -// Index: 11/13 - -// Read CMOS 0x4A to detect manufacturing/debug mode. Returns: -// 0 = manufacturing mode -// -2147483644 (0x80000004) = debug mode -// -2147483578 (0x80000046) = unknown mode -// Checks memory at 0xFDAF0490 for override -int IsManufacturingMode() +UINTN +EFIAPI +IsManufacturingMode( + VOID + ) { - unsigned __int8 CmosSave; // al - char ModeByte; // al - char ModeDecoded; // cl + UINT8 CmosSelector; + UINT8 CmosValue; + UINT8 ManufacturingMode; - CmosSave = __inbyte(0x70u); /*0xffd687d6*/ - __outbyte(0x70u, CmosSave & 0x80 | 0x4A); /*0xffd687db*/ - ModeByte = __inbyte(0x71u); /*0xffd687e2*/ - ModeDecoded = ModeByte; /*0xffd687e3*/ - if ( (unsigned __int8)ModeByte <= 3u ) /*0xffd687e8*/ + CmosSelector = __inbyte(0x70u); + __outbyte(0x70u, CmosSelector & 0x80 | 0x4A); + CmosValue = __inbyte(0x71u); + ManufacturingMode = CmosValue; + if (CmosValue <= 3) { -LABEL_4: - if ( !ModeDecoded ) /*0xffd68803*/ - return 0; /*0xffd68803*/ - goto LABEL_5; /*0xffd68803*/ + if (!ManufacturingMode) + return 0; + goto ReturnMode; } - ModeDecoded = gManufacturingModeDetect; /*0xffd687ea*/ - if ( !gManufacturingModeDetect ) /*0xffd687f2*/ + + if (!gManufacturingModeDetect) { - ModeDecoded = MEMORY[0xFDAF0490] & 2 | 1; /*0xffd687fe*/ - goto LABEL_4; /*0xffd687fe*/ + ManufacturingMode = (MEMORY[0xFDAF0490] & 2) | 1; + if (!ManufacturingMode) + return 0; } -LABEL_5: - if ( ModeDecoded != -1 ) - return ModeDecoded != 1 ? -2147483578 : -2147483644; - return 0; /*0xffd6881b*/ + + if (ManufacturingMode != (UINT8)-1) + return ManufacturingMode != 1 ? 0x80000046 : 0x80000004; + +ReturnMode: + if (ManufacturingMode == 1) + return 0x80000004; + return 0; } - -// Function: GetPeiServicesTable @ 0xffd6881f (0x32 bytes) -// Index: 12/13 - -int GetPeiServicesTable() +EFI_PEI_SERVICES ** +EFIAPI +GetPeiServicesTable( + VOID + ) { - int PeiServices; // esi - int PeiServicesAddr; // [esp+0h] [ebp-Ch] - _BYTE Idtr[6]; // [esp+4h] [ebp-8h] BYREF + EFI_PEI_SERVICES *PeiServices; + IA32_DESCRIPTOR Idtr; - ReadIdtr(Idtr); /*0xffd68828*/ - PeiServices = *(_DWORD *)(*(_DWORD *)&Idtr[2] - 4); /*0xffd68830*/ - if ( !PeiServices ) /*0xffd68835*/ - CrystalRidgeDebugAssert((int)"PeiServices != ((void *) 0)", PeiServicesAddr, *(const char **)Idtr); /*0xffd68844*/ - return PeiServices; /*0xffd6884c*/ + AsmReadIdtr(&Idtr); + PeiServices = *(EFI_PEI_SERVICES **)(Idtr.Base - 4); + if (!PeiServices) + CrystalRidgeDebugAssert((CHAR8 *)"PeiServices != ((void *) 0)", (UINTN)NULL, (CHAR8 *)Idtr.Base); + + return (EFI_PEI_SERVICES **)PeiServices; } - - -// Function: ReadIdtr @ 0xffd68851 (0x23 bytes) -// Index: 13/13 - -// (decompile failed for ReadIdtr @ 0xffd68851) - diff --git a/PurleySktPkg/Pei/CrystalRidge/CrystalRidge/CrystalRidge.h b/PurleySktPkg/Pei/CrystalRidge/CrystalRidge/CrystalRidge.h index 4cba0fb..0207c46 100644 --- a/PurleySktPkg/Pei/CrystalRidge/CrystalRidge/CrystalRidge.h +++ b/PurleySktPkg/Pei/CrystalRidge/CrystalRidge/CrystalRidge.h @@ -1,3916 +1,71 @@ -/** @file - CrystalRidge.h -- Header for CrystalRidge - -Copyright (c) HR650X BIOS Decompilation Project -**/ - -#ifndef __CRYSTALRIDGE_H__ -#define __CRYSTALRIDGE_H__ +#ifndef CRYSTALRIDGE_H_ +#define CRYSTALRIDGE_H_ #include "../uefi_headers/Uefi.h" // -// Function Prototypes +// CrystalRidge PEIM entry points // EFI_STATUS EFIAPI -ModuleEntryPoint( - VOID -); +CrystalRidgePeimEntry( + IN EFI_PEI_FILE_HANDLE FileHandle, + IN CONST EFI_PEI_SERVICES **PeiServices + ); EFI_STATUS EFIAPI -nullsub_1( - VOID -); +GenerateSwSmiForNonceRestore( + IN EFI_PEI_SERVICES **PeiServices, + IN EFI_PEI_NOTIFY_DESCRIPTOR *NotifyDescriptor, + IN VOID *Ppi + ); EFI_STATUS EFIAPI -declarations( - VOID -); +CrystalRidgeDebugPrint( + IN UINTN ErrorLevel, + IN CONST CHAR8 *Format, + ... + ); -EFI_STATUS +VOID EFIAPI -decompiled code size: 591653 bytes( - VOID -); +CrystalRidgeDebugAssert( + IN CONST CHAR8 *FileName, + IN UINTN LineNumber, + IN CONST CHAR8 *Description + ); -EFI_STATUS +UINTN EFIAPI -unsigned __int64 count_1; // rcx( +IsManufacturingMode( VOID -); + ); -EFI_STATUS +EFI_PEI_SERVICES ** EFIAPI -char *src_1; // rsi( +GetPeiServicesTable( VOID -); + ); -EFI_STATUS +VOID EFIAPI -do /*0x10ab*/( - VOID -); +AsmReadIdtr( + OUT IA32_DESCRIPTOR *Idtr + ); -EFI_STATUS -EFIAPI -__int64 v4; // rax( +CRYSTAL_RIDGE_PPI * +LocateCrystalRidgePpi( VOID -); + ); -EFI_STATUS -EFIAPI -__int64 v6; // rax( - VOID -); +// +// Global descriptors for EndOfPei registration +// -EFI_STATUS -EFIAPI -__int64 v8; // rax( - VOID -); +extern EFI_GUID gCrystalRidgeGuid; +extern EFI_PEI_NOTIFY_DESCRIPTOR gCrystalRidgeNotifyDescriptor; -EFI_STATUS -EFIAPI -__int64 v10; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v14; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int16 callerseflags_w; // bx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v18; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -int i; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v22; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+20h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -int v9; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v11; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v13; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+20h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 j; // [rsp+20h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+0h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -int v8; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -char v10; // al( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+0h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -_QWORD *v3; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 i; // [rsp+30h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+60h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -int v1; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -int v3; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int v3; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v5; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 *v9; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n4_6; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n3_1; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_9; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_1; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_4; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_5; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n3_2; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v5; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_QWORD *v2; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n0x18; // [rsp+30h] [rbp-58h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 k; // [rsp+30h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+30h] [rbp-68h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 _RCX; // [rsp+20h] [rbp-118h]( - VOID -); - -EFI_STATUS -EFIAPI -int v7; // edx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // [rsp+20h] [rbp-88h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // [rsp+40h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -int v1; // [rsp+30h] [rbp-18h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v8; // r8( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // [rsp+30h] [rbp-1B8h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n9; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // di( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v5; // r14( - VOID -); - -EFI_STATUS -EFIAPI -int v7; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int buf__1; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v11; // [rsp+20h] [rbp-D8h]( - VOID -); - -EFI_STATUS -EFIAPI -int result; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v8; // cl( - VOID -); - -EFI_STATUS -EFIAPI -int v14; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -bool v16; // r10( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD v6[34]; // [rsp+50h] [rbp-88h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -int v4; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v6; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v8; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v10; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v12; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v14; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v16; // edx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int *v8; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -int buf; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v14; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v16; // [rsp+20h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf_1; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // r9( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int *v6; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf_1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // r14( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v8; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf_2; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // [rsp+60h] [rbp+8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 dst; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v11; // r8( - VOID -); - -EFI_STATUS -EFIAPI -char v5; // al( - VOID -); - -EFI_STATUS -EFIAPI -buf = buf; /*0xc998*/( - VOID -); - -EFI_STATUS -EFIAPI -char *src; // [rsp+50h] [rbp+8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -char *src_1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // r9( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v7; // dl( - VOID -); - -EFI_STATUS -EFIAPI -char v9; // di( - VOID -); - -EFI_STATUS -EFIAPI -int v11; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -char buf_1[1536]; // [rsp+30h] [rbp-608h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // r9( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v5; // r9( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v8; // [rsp+30h] [rbp+8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n4095; // edi( - VOID -); - -EFI_STATUS -EFIAPI -int v6; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v4; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v6; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v8; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf_3; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -int v12; // [rsp+30h] [rbp-28h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v1; // bp( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v3; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v5; // di( - VOID -); - -EFI_STATUS -EFIAPI -int v7; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int v9; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 v12; // ax( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *buf; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v16; // rax( - VOID -); - -EFI_STATUS -EFIAPI -int buf_2; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -int v11; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v13; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v15; // r9( - VOID -); - -EFI_STATUS -EFIAPI -int v18; // [rsp+60h] [rbp+8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -int buf_1; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v1; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v3; // di( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v6; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n0x80; // [rsp+20h] [rbp-58h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v1; // r13d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v5; // bp( - VOID -); - -EFI_STATUS -EFIAPI -char v7; // r9( - VOID -); - -EFI_STATUS -EFIAPI -__int16 n9_1; // ax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n0x80_1; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *buf_3; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -int v15; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *buf_1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int16 n9_2; // cx( - VOID -); - -EFI_STATUS -EFIAPI -int v21; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int n0x100000_1; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int v25; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v27; // rax( - VOID -); - -EFI_STATUS -EFIAPI -int v29; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -__int16 n9_3; // si( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v34; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v36; // rax( - VOID -); - -EFI_STATUS -EFIAPI -int *p_n255; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -int n255_2; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v42; // r11( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // bp( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v7; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // r9( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // si( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v5; // bl( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 v8; // ax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf; // r10( - VOID -); - -EFI_STATUS -EFIAPI -bool v12; // cf( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v8; // r9( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // r9( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n25; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int i; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v16; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -int v18; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v1; // si( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n0xC; // r8( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v11; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v13; // rax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // r12( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v5; // r15( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n2; // r8( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n0x18; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v14; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int16 n1029; // ax( - VOID -); - -EFI_STATUS -EFIAPI -int v18; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v20; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n0x80; // [rsp+20h] [rbp-B8h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // r13( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v14; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n0x80; // [rsp+20h] [rbp-D8h]( - VOID -); - -EFI_STATUS -EFIAPI -int v6; // r11d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v8; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -int v13; // r11d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v15; // rax( - VOID -); - -EFI_STATUS -EFIAPI -if ( *(_WORD *)a4 == 9 )( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // rbp( - VOID -); - -EFI_STATUS -EFIAPI -int v14; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -char buf_1[32]; // [rsp+50h] [rbp-48h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -if ( *(_WORD *)a4 == 259 )( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf; // rax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v5; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf_1; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *v10; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf; // r8( - VOID -); - -EFI_STATUS -EFIAPI -n8 = *(_DWORD *)(buf + 48); /*0xf54d*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n12; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v5; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v7; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v9; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n2; // di( - VOID -); - -EFI_STATUS -EFIAPI -__int64 dst; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v8; // r12( - VOID -); - -EFI_STATUS -EFIAPI -char v10; // r9( - VOID -); - -EFI_STATUS -EFIAPI -int n9; // r14d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n12; // r13d( - VOID -); - -EFI_STATUS -EFIAPI -int v16; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v18; // cx( - VOID -); - -EFI_STATUS -EFIAPI -int n0x80_1; // edx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v24; // rax( - VOID -); - -EFI_STATUS -EFIAPI -_QWORD *v26; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -int v28; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v30; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v32; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v34; // rax( - VOID -); - -EFI_STATUS -EFIAPI -int v36; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v38; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -int n0x80[2]; // [rsp+20h] [rbp-E0h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v5; // r15d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int16 n152; // ax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v6; // r15( - VOID -); - -EFI_STATUS -EFIAPI -int v9; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v11; // rax( - VOID -); - -EFI_STATUS -EFIAPI -int v13; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v15; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v17; // rax( - VOID -); - -EFI_STATUS -EFIAPI -int v19; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v21; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v23; // al( - VOID -); - -EFI_STATUS -EFIAPI -int v25; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int n7; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 j_3; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 j_2; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v13; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 j_1; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -int v17; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int v19; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 j_4; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v23; // r8( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v25; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -int v27; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int v29; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -int v7; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -int v11; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v15; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v17; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v19; // [rsp+20h] [rbp-78h]( - VOID -); - -EFI_STATUS -EFIAPI -int v10; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -char *src; // rax( - VOID -); - -EFI_STATUS -EFIAPI -int v14; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -int v16; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int v18; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v20; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -int v22; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -int v24; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int v26; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v28; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v30; // r8( - VOID -); - -EFI_STATUS -EFIAPI -int v32; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v34; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -char *v8; // [rsp+50h] [rbp-98h]( - VOID -); - -EFI_STATUS -EFIAPI -int v5; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -if ( (unsigned __int8)sub_2BAEC() && (unsigned __int8)sub_2BAF0(64) )( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *v8; // [rsp+40h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -int v5; // edx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 n48_1; // [rsp+40h] [rbp-88h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 i; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n1024; // [rsp+40h] [rbp-428h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // [rsp+30h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -int v6; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // [rsp+20h] [rbp-48h]( - VOID -); - -EFI_STATUS -EFIAPI -int v8; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v11; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v16; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v18; // r8( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v20; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v22; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -char v24; // [rsp+20h] [rbp-68h]( - VOID -); - -EFI_STATUS -EFIAPI -char buf_; // [rsp+50h] [rbp-A8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v8; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 result; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v16; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int i; // [rsp+50h] [rbp-B8h]( - VOID -); - -EFI_STATUS -EFIAPI -int v8; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v11; // [rsp+58h] [rbp-90h]( - VOID -); - -EFI_STATUS -EFIAPI -char buf[24]; // [rsp+50h] [rbp-18h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v11; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 j; // [rsp+0h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD v5[34]; // [rsp+60h] [rbp-88h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int count; // [rsp+50h] [rbp-B8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -int v12; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v14; // [rsp+50h] [rbp-A8h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n67453088; // [rsp+30h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v10; // [rsp+30h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // [rsp+40h] [rbp+8h]( - VOID -); - -EFI_STATUS -EFIAPI -if ( (unsigned __int8)sub_2BAEC(a1) && (unsigned __int8)sub_2BAF0(0x80000000LL) )( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v7; // edx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n0xFFF_1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 src; // rax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n0xFFF_1; // edi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v4; // rbp( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n0xFFF; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int i; // edi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 src_3; // r15( - VOID -); - -EFI_STATUS -EFIAPI -char *src_2; // r13( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v14; // r15( - VOID -); - -EFI_STATUS -EFIAPI -char *src_4; // [rsp+90h] [rbp+8h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n8; // esi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n3; // si( - VOID -); - -EFI_STATUS -EFIAPI -if ( n0x2000000 >= 0x2000000 ) /*0x1b223*/( - VOID -); - -EFI_STATUS -EFIAPI -if ( n0x10 >= 0x10u ) /*0x1b277*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *v12; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n67; // al( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *v16; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v18; // edi( - VOID -); - -EFI_STATUS -EFIAPI -_QWORD *v20; // r14( - VOID -); - -EFI_STATUS -EFIAPI -char *v22; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v24; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v26; // r12d( - VOID -); - -EFI_STATUS -EFIAPI -int v28; // r14d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *v30; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *v32; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -int v34; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v36; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *v38; // [rsp+20h] [rbp-48h]( - VOID -); - -EFI_STATUS -EFIAPI -if ( *(_BYTE *)a1 != 14 ) /*0x1b7f8*/( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n2_2; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // xmm3_8( - VOID -); - -EFI_STATUS -EFIAPI -__int128 *v12; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int128 *v14; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int128 v16; // xmm2( - VOID -); - -EFI_STATUS -EFIAPI -const char *[CR]_(ARS)_ERROR:_ArsStart:_no_interleave_sets_found_in_given_S; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_QWORD *v13; // r8( - VOID -); - -EFI_STATUS -EFIAPI -int v15; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v17; // r8( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v19; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v21; // r9( - VOID -); - -EFI_STATUS -EFIAPI -v1 = 0; /*0x1be00*/( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n24; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -char *v11; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v15; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -char v17; // al( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v19; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v21; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v23; // r9( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 *v5; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v2; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -char v6; // r8( - VOID -); - -EFI_STATUS -EFIAPI -const char *__scrubbable_region_not_found; // r8( - VOID -); - -EFI_STATUS -EFIAPI -if ( (_BYTE)word_3A708 || !HIBYTE(word_3A708) ) /*0x1c538*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 n0xAA8_2; // dx( - VOID -); - -EFI_STATUS -EFIAPI -__int16 n0xAA8; // ax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v2; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -n0xAA8 = n0xAA8; /*0x1c6e3*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 n0xAA8_1; // bp( - VOID -); - -EFI_STATUS -EFIAPI -if ( buf_ <= buf__1 )( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 i; // di( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n2_1; // r14( - VOID -); - -EFI_STATUS -EFIAPI -__int64 *v9; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 n0xAA8_1; // bx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n8; // r11d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v12; // edx( - VOID -); - -EFI_STATUS -EFIAPI -int v16; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -int v18; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -int n4_1; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v9; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v12; // bp( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v15; // [rsp+30h] [rbp-48h]( - VOID -); - -EFI_STATUS -EFIAPI -if ( count_1 == count ) /*0x1ce6c*/( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE v9[24]; // [rsp+30h] [rbp-18h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -int v8; // eax( - VOID -); - -EFI_STATUS -EFIAPI -char v10; // bp( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int count; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -int v10; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -char v14; // r14( - VOID -); - -EFI_STATUS -EFIAPI -int count; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int v4; // edi( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *dst; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v3; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -int v1; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -char n4; // [rsp+30h] [rbp+8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i_1; // cl( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n0x200; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v7; // rax( - VOID -); - -EFI_STATUS -EFIAPI -_WORD *i; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -if ( a1 ) /*0x1d96c*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n0xFFFF_1; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n0x20; // r14( - VOID -); - -EFI_STATUS -EFIAPI -__int64 *v9; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *v11; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int *v13; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -char *v13; // r13( - VOID -); - -EFI_STATUS -EFIAPI -char n255; // bl( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n3; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v19; // r14( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v21; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -char v23; // cl( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v25; // r14( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v27; // r12( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v29; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v31; // r15( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v33; // r12( - VOID -); - -EFI_STATUS -EFIAPI -char *src_1; // r8( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD **v37; // r9( - VOID -); - -EFI_STATUS -EFIAPI -int v39; // r15d( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v41... [11534 chars total]( - VOID -); - -EFI_STATUS -EFIAPI -const char *Mailbox_Failure:_Timeout_Occured; // rax( - VOID -); - -EFI_STATUS -EFIAPI -const char *Mailbox:_No_Long_Operation_Started_Yet; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_5; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -void *n4_1; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_2; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n6_3; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n0xFFFF_2; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 j; // [rsp+20h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n0x80; // [rsp+20h] [rbp-C8h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_1; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v15; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n6_2; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_3; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v24; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf; // [rsp+38h] [rbp-20h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_3; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n6; // [rsp+30h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -void *n4; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+30h] [rbp-48h]( - VOID -); - -EFI_STATUS -EFIAPI -void *n0xFFFF; // r8( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n6_1; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n6; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -if ( a3 && (unsigned __int8)n4 < 4u && n0x18 < 0x18u ) /*0x223fb*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+30h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // [rsp+30h] [rbp-F8h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // [rsp+60h] [rbp-38h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_6; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // [rsp+60h] [rbp-58h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n4_4; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // [rsp+60h] [rbp-118h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // [rsp+30h] [rbp-28h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 buf; // [rsp+28h] [rbp-20h]( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n6; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4_4; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v14; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v7; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -char v7; // al( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n2; // [rsp+20h] [rbp-18h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -char v8; // al( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n2; // [rsp+30h] [rbp-28h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v8; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 src[3]; // [rsp+20h] [rbp-18h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 dst; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n0x18; // [rsp+20h] [rbp-18h]( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v1; // ax( - VOID -); - -EFI_STATUS -EFIAPI -v2 = sub_264FC(); /*0x26534*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n67453100; // esi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n67453112; // r15d( - VOID -); - -EFI_STATUS -EFIAPI -int v10; // edi( - VOID -); - -EFI_STATUS -EFIAPI -int v12; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v19; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v6; // cx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v13; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v15; // r14d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v17; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v20; // ax( - VOID -); - -EFI_STATUS -EFIAPI -char v22; // [rsp+70h] [rbp+18h]( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n3840; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -int v11; // eax( - VOID -); - -EFI_STATUS -EFIAPI -int v15; // [rsp+20h] [rbp-28h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v10; // si( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v15[16]; // [rsp+20h] [rbp-20h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v9; // edi( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v11; // ax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n3; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v10; // r14d( - VOID -); - -EFI_STATUS -EFIAPI -char v12; // al( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v14; // di( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v23; // edi( - VOID -); - -EFI_STATUS -EFIAPI -int v25; // [rsp+78h] [rbp+48h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4; // r14( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v14; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -int v19; // [rsp+30h] [rbp-28h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -int v9; // ebp( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n0x41; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -int n0x41_4; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -int n700000_3; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -int v23; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -int v25; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v29; // di( - VOID -); - -EFI_STATUS -EFIAPI -int n84166660; // r9d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v33; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -_DWORD *v35; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v37; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -int v39; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -int n0x41_2; // r8d( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n700000_4; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n0x11; // r12d( - VOID -); - -EFI_STATUS -EFIAPI -int *p_n255_1; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -int n0x80; // edx( - VOID -); - -EFI_STATUS -EFIAPI -char buf_1[16]; // [rsp+50h] [rbp-B8h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n4_1; // di( - VOID -); - -EFI_STATUS -EFIAPI -char *v5; // r12( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // r8( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v5; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -n2_1 = n2; /*0x27955*/( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v12; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int16 v15; // dx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int n128; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -char buf_1[128]; // [rsp+40h] [rbp-98h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v4; // bp( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v8; // si( - VOID -); - -EFI_STATUS -EFIAPI -int n5; // ecx( - VOID -); - -EFI_STATUS -EFIAPI -v3 = 0; /*0x27d18*/( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v10; // rax( - VOID -); - -EFI_STATUS -EFIAPI -char n2_1; // cl( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n5; // cl( - VOID -); - -EFI_STATUS -EFIAPI -bool v16; // cf( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v18; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n4; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v11; // r13( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v13; // r15( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v15; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -const char *___non_PMEM_n; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v19; // [rsp+30h] [rbp-48h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v9; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v11; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v13; // r13( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n0x18; // r14( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v19; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v21; // rax( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 result; // rax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v11; // rax( - VOID -); - -EFI_STATUS -EFIAPI -char *v5; // r14( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v7; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v9; // rax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v11; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n0xE; // di( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v11; // rbp( - VOID -); - -EFI_STATUS -EFIAPI -int buf_1; // eax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n891; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 v1; // ax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 result; // al( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 v5; // [rsp+30h] [rbp+8h]( - VOID -); - -EFI_STATUS -EFIAPI -char v7; // dl( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int v7; // r13d( - VOID -); - -EFI_STATUS -EFIAPI -char *v11; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v13; // [rsp+20h] [rbp-58h]( - VOID -); - -EFI_STATUS -EFIAPI -int v6; // edi( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 buf_1; // al( - VOID -); - -EFI_STATUS -EFIAPI -const __int16 *False; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 i; // bp( - VOID -); - -EFI_STATUS -EFIAPI -const __int16 *False_2; // r8( - VOID -); - -EFI_STATUS -EFIAPI -const __int16 *False_4; // r8( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v13; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -char v2; // r13( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 n2; // si( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 n32_1; // di( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 v10; // dx( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v12; // rax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v3; // rcx( - VOID -); - -EFI_STATUS -EFIAPI -_QWORD *v5; // r8( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 i; // r14( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 n2_1; // di( - VOID -); - -EFI_STATUS -EFIAPI -__int16 n3_1; // ax( - VOID -); - -EFI_STATUS -EFIAPI -bool v14; // cf( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned int i; // ebx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v10; // cl( - VOID -); - -EFI_STATUS -EFIAPI -_QWORD *v12; // [rsp+20h] [rbp-69h]( - VOID -); - -EFI_STATUS -EFIAPI -if ( a1 ) /*0x29afb*/( - VOID -); - -EFI_STATUS -EFIAPI -const char *_(BLK); // rdx( - VOID -); - -EFI_STATUS -EFIAPI -if ( buf )( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v7; // rbp( - VOID -); - -EFI_STATUS -EFIAPI -buf_1 = (void *)buf; /*0x2a580*/( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v1; // rax( - VOID -); - -EFI_STATUS -EFIAPI -v2 = sub_2A774(); /*0x2a809*/( - VOID -); - -EFI_STATUS -EFIAPI -v2 = sub_2A774(); /*0x2a825*/( - VOID -); - -EFI_STATUS -EFIAPI -v2 = sub_2A774(); /*0x2a841*/( - VOID -); - -EFI_STATUS -EFIAPI -n0x40_1 = n0x40; /*0x2a8fe*/( - VOID -); - -EFI_STATUS -EFIAPI -char n3_1; // al( - VOID -); - -EFI_STATUS -EFIAPI -for ( i = 0; i < i_1; ++i ) /*0x2aa86*/( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *v6; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -*a1 = 0; /*0x2aacb*/( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v6; // r12( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v9; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n578; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -_BYTE *v14; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n2_2; // rsi( - VOID -); - -EFI_STATUS -EFIAPI -bool v18; // zf( - VOID -); - -EFI_STATUS -EFIAPI -const char *Mailbox_Failure:_Unknown_status_%d_3; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v22; // r9( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v24; // rdi( - VOID -); - -EFI_STATUS -EFIAPI -va_list va_1; // r10( - VOID -); - -EFI_STATUS -EFIAPI -int v28; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int16 *v30; // rax( - VOID -); - -EFI_STATUS -EFIAPI -const char *Mailbox_Failure:_Unknown_... [32404 chars total]( - VOID -); - -EFI_STATUS -EFIAPI -result = (*(__int64 (__fastcall **)(__int64))(qword_3A2F8 + 72))(qword_3A360); /*0x2b96a*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 n0x10; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int8 v6; // al( - VOID -); - -EFI_STATUS -EFIAPI -int n113; // edx( - VOID -); - -EFI_STATUS -EFIAPI -result = sub_2B9A4(); /*0x2bac4*/( - VOID -); - -EFI_STATUS -EFIAPI -if ( qword_3A338 ) /*0x2bb10*/( - VOID -); - -EFI_STATUS -EFIAPI -if ( !a1 ) /*0x2bb4e*/( - VOID -); - -EFI_STATUS -EFIAPI -signed __int64 v1; // rax( - VOID -); - -EFI_STATUS -EFIAPI -v2 = a2; /*0x2bcaa*/( - VOID -); - -EFI_STATUS -EFIAPI -_WORD *v5; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -result = (*(__int64 (__fastcall **)(_QWORD, __int64 *))(qword_3A308 + 64))(0, &qword_5E2D8); /*0x2bd58*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v1; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -result = qword_3A360; /*0x2bd72*/( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v3; // rax( - VOID -); - -EFI_STATUS -EFIAPI -if ( (n1024064 & 0xFFFFFFFFF0000000uLL) != 0 ) /*0x2bde8*/( - VOID -); - -EFI_STATUS -EFIAPI -int n0x400000; // edi( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v2; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 v4; // rbp( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n31; // rax( - VOID -); - -EFI_STATUS -EFIAPI -__int64 n31_1; // rdx( - VOID -); - -EFI_STATUS -EFIAPI -int v10; // eax( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v12; // rbx( - VOID -); - -EFI_STATUS -EFIAPI -unsigned __int64 v15; // [rsp+38h] [rbp+10h] BYREF( - VOID -); - -EFI_STATUS -EFIAPI -*p_i = sub_2A800(42); /*0x2c096*/( - VOID -); - -EFI_STATUS -EFIAPI -if ( ((unsigned __int8)Mailbox_Failure:_Unknown_status_%d & 1) != 0 ) /*0x2c210*/( - VOID -); - -EFI_STATUS -EFIAPI -n0xF4240 = 0; /*0x2c25c*/( - VOID -); - -#endif /* __CRYSTALRIDGE_H__ */ \ No newline at end of file +#endif // CRYSTALRIDGE_H_ diff --git a/PurleySktPkg/SouthClusterLbg/Gpio/Smm/PchGpioUnlockSmm/PchGpioUnlockSmm.c b/PurleySktPkg/SouthClusterLbg/Gpio/Smm/PchGpioUnlockSmm/PchGpioUnlockSmm.c index e239b6b..88ade36 100644 --- a/PurleySktPkg/SouthClusterLbg/Gpio/Smm/PchGpioUnlockSmm/PchGpioUnlockSmm.c +++ b/PurleySktPkg/SouthClusterLbg/Gpio/Smm/PchGpioUnlockSmm/PchGpioUnlockSmm.c @@ -1,23 +1,25 @@ /** @file PchGpioUnlockSmm.c -- PchGpioUnlockSmm - - Auto-converted from IDA decompiler output. - Functions: 1 - -Copyright (c) HR650X BIOS Decompilation Project **/ #include "PchGpioUnlockSmm.h" -// Function: ModuleEntryPoint -EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) +// Module entry point for SMM GPIO unlock flow. +EFI_STATUS +EFIAPI +ModuleEntryPoint( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable + ) { - signed __int64 v2; // rbx + EFI_STATUS UnlockStatus; - sub_48C(ImageHandle, SystemTable); - v2 = sub_75C(); - if ( v2 < 0 ) - sub_11D0(); - return v2; + InitializePchGpioUnlockSmm(ImageHandle, SystemTable); + UnlockStatus = ExecutePchGpioUnlockSequence(); + if (EFI_ERROR(UnlockStatus)) { + HandlePchGpioUnlockFailure(); + } + + return UnlockStatus; } diff --git a/PurleySktPkg/SouthClusterLbg/Gpio/Smm/PchGpioUnlockSmm/PchGpioUnlockSmm.h b/PurleySktPkg/SouthClusterLbg/Gpio/Smm/PchGpioUnlockSmm/PchGpioUnlockSmm.h index ce82d2d..e5d4b40 100644 --- a/PurleySktPkg/SouthClusterLbg/Gpio/Smm/PchGpioUnlockSmm/PchGpioUnlockSmm.h +++ b/PurleySktPkg/SouthClusterLbg/Gpio/Smm/PchGpioUnlockSmm/PchGpioUnlockSmm.h @@ -15,39 +15,41 @@ // /// -/// ModuleEntryPoint -- UEFI entry point / initialization function +/// ModuleEntryPoint -- module entry point for GPIO unlock in SMM /// EFI_STATUS EFIAPI ModuleEntryPoint( - VOID + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ); /// -/// sub_48C +/// InitializePchGpioUnlockSmm -- set up firmware/SMM context for GPIO unlock /// EFI_STATUS EFIAPI -sub_48C( - VOID +InitializePchGpioUnlockSmm( + IN EFI_HANDLE ImageHandle, + IN EFI_SYSTEM_TABLE *SystemTable ); /// -/// sub_75C +/// ExecutePchGpioUnlockSequence -- apply GPIO unlock policy and settings /// EFI_STATUS EFIAPI -sub_75C( +ExecutePchGpioUnlockSequence( VOID ); /// -/// sub_11D0 +/// HandlePchGpioUnlockFailure -- best-effort recovery for failed unlock attempts /// EFI_STATUS EFIAPI -sub_11D0( +HandlePchGpioUnlockFailure( VOID ); -#endif /* __PCHGPIOUNLOCKSMM_H__ */ \ No newline at end of file +#endif /* __PCHGPIOUNLOCKSMM_H__ */ diff --git a/ShellPkg/Application/Shell/FullShell.c b/ShellPkg/Application/Shell/FullShell.c index 843746d..98d432d 100644 --- a/ShellPkg/Application/Shell/FullShell.c +++ b/ShellPkg/Application/Shell/FullShell.c @@ -13,10 +13,10 @@ // Function: ModuleEntryPoint EFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable) { - EFI_STATUS v4; // rbx + EFI_STATUS Status; - sub_2E0(); - v4 = sub_C60(); - sub_718(ImageHandle, SystemTable); - return v4; + InitializeShellRuntime(); + Status = InitializeShellCore(); + EnterShellMainLoop(ImageHandle, SystemTable); + return Status; } diff --git a/ShellPkg/Application/Shell/FullShell.h b/ShellPkg/Application/Shell/FullShell.h index c4eb641..532e000 100644 --- a/ShellPkg/Application/Shell/FullShell.h +++ b/ShellPkg/Application/Shell/FullShell.h @@ -20,34 +20,36 @@ EFI_STATUS EFIAPI ModuleEntryPoint( + EFI_HANDLE ImageHandle, + EFI_SYSTEM_TABLE *SystemTable +); + +/// +/// InitializeShellRuntime +/// +VOID +EFIAPI +InitializeShellRuntime( VOID ); /// -/// sub_2E0 +/// InitializeShellCore /// EFI_STATUS EFIAPI -sub_2E0( +InitializeShellCore( VOID ); /// -/// sub_C60 +/// EnterShellMainLoop /// EFI_STATUS EFIAPI -sub_C60( - VOID +EnterShellMainLoop( + EFI_HANDLE ImageHandle, + EFI_SYSTEM_TABLE *SystemTable ); -/// -/// sub_718 -/// -EFI_STATUS -EFIAPI -sub_718( - VOID -); - -#endif /* __FULLSHELL_H__ */ \ No newline at end of file +#endif /* __FULLSHELL_H__ */