# SetupConfigUpdateDxeCLX64L

## Function Table

| Address | Name | Description |
|---------|------|-------------|
|  | **ReadUnaligned64** |  |
|  | **CompareGuidPair** |  |
|  | **DebugAssert** |  |
|  | **SetupConfigUpdateEntry** |  |
| Globals | **// ---------------------------------------------------------------------------** |  |
| UefiBootServicesTableLib | **/ UefiRuntimeServicesTableLib backing** |  |
| EFI_HANDLE | **gImageHandle     = NULL;** |  |
| Module | **globals** |  |
| EFI_HANDLE | **mImageHandle     = NULL;  ///< Saved image handle** |  |
| GUID | **instances** |  |
| EFI_GUID | **gSetupConfigUpdateProtocolGuid  = SETUP_CONFIG_UPDATE_PROTOCOL_GUID;** |  |
| Embedded | **HOB list GUID, split across two QWORD-aligned storage locations** |  |
| for | **efficient comparison in CompareGuidPair().** |  |
| gHobListGuid | **= {7739F24C-93D7-11D4-9A3A-0090273FC14D}** |  |
| Stored | **as two UINT64 values at gHobListGuidLo (0xB40) and** |  |
| gHobListGuidHi | **(0xB48) for the inline comparison function to access** |  |
| without | **loading the full GUID from .rdata.** |  |
| STATIC | **CONST UINT64  gHobListGuidLo  = 0x11D493D77739F24CULL;  ///< First  8 bytes** |  |
| Static | **PSET configuration data header for the CLX64L platform.** |  |
| The | **full configuration block (header + payload) occupies 0x48C bytes.** |  |
| STATIC | **CONST SETUP_CONFIG_DATA_HEADER  mSetupConfigDataHeader = {** |  |
| Helper | **functions** |  |
| Locate | **the debug assert protocol from Boot Services.** |  |
| STATIC | **VOID  *mAssertProtocol = NULL;** |  |
| Call | **the assert function at the protocol's standard offset.** |  |
| HOB | **list locator** |  |
| Return | **cached value if already resolved.** |  |
| if | **(mHobList != NULL) {** |  |
| if | **(gST->NumberOfTableEntries == 0) {** |  |
| No | **configuration table entries** | emit diagnostic and assert. |
| DEBUG | **((DEBUG_SETUP_CONFIG** |  |
| Fall | **through to the NULL check below.** |  |
| Walk | **the configuration table looking for the HOB list GUID.** |  |
| Each | **entry is an EFI_CONFIGURATION_TULE (16-byte GUID + pointer).** |  |
| ConfigTable | **= gST->ConfigurationTable;** |  |
| Compare | **as two QWORDs (first 8 bytes, then second 8 bytes).** |  |
| if | **((GuidEntry[0] == *HobGuidLo) && (GuidEntry[1] == *HobGuidHi)) {** |  |
| VendorTable | **follows the GUID in the configuration table entry.** |  |
| Cast | **through byte pointer arithmetic to avoid strict aliasing.** |  |
| mHobList | **= *(VOID **)((UINT8 *)GuidEntry + 16);** |  |
| If | **the HOB list was not found, emit a diagnostic.** |  |
| if | **(mHobList == NULL) {** |  |
| The | **HOB list must be non-NULL at this point.** |  |
| Module | **entry point** |  |
| gImageHandle | **= ImageHandle;** |  |
| mHobList | **= GetHobList ();** |  |
| Locate | **the configuration receiver protocol.** |  |
| Status | **= gBS->LocateProtocol (** |  |
| Registration | **(optional)** |  |
| Protocol | **not found** | return the error status. |
| return | **Status;** |  |
| Install | **the setup config via the receiver protocol.** |  |
| Function | **at offset 0x10 in the protocol interface.** |  |
| VOID | ***ConfigData, UINTN ConfigDataSize)** |  |
| Status | **= ((EFI_STATUS (EFIAPI *)(** |  |
| offset | **0x10 = index 2** |  |

---
*Generated by HR650X BIOS Decompilation Project*