//
// PcdPeim.efi - Full Decompilation
// Source: IDA Pro MCP port 13394
// Functions: 81
//
#include <Uefi.h>
#include <PiPei.h>
{"addr":"0xffe4a6b8","code":"char *BaseCopyMem(char *dst, char *src, unsigned int count)\n{\n unsigned int count_1; // edx\n char *dst_1; // edi\n char *src_1; // esi\n\n count_1 = count; /*0xffe4a6c2*/\n if ( src < dst && &src[count - 1] >= dst ) /*0xffe4a6d0*/\n {\n src_1 = &src[count - 1]; /*0xffe4a6e4*/\n dst_1 = &dst[count - 1]; /*0xffe4a6e6*/\n }\n else\n {\n count_1 = count & 3; /*0xffe4a6d4*/\n qmemcpy(dst, src, 4 * (count >> 2)); /*0xffe4a6dd*/\n src_1 = &src[4 * (count >> 2)]; /*0xffe4a6dd*/\n dst_1 = &dst[4 * (count >> 2)]; /*0xffe4a6dd*/\n }\n qmemcpy(dst_1, src_1, count_1); /*0xffe4a6ed*/\n return dst; /*0xffe4a6f4*/\n}"}
{"addr":"0xffe4a6f8","code":"void *BaseZeroMem(void *buf, unsigned int count)\n{\n memset(buf, 0, count); /*0xffe4a70f*/\n return buf; /*0xffe4a716*/\n}"}
{"addr":"0xffe4a718","code":"void *BaseSetMem8(void *buf, unsigned int count, char value)\n{\n memset(buf, value, count); /*0xffe4a725*/\n return buf; /*0xffe4a72b*/\n}"}
{"addr":"0xffe4a738","code":"int BaseSetMem32(int a1, int a2, int a3, int a4)\n{\n do /*0xffe4a751*/\n {\n *(_DWORD *)(a1 + 8 *a2 - 8) = a3; /*0xffe4a749*/\n *(_DWORD *)(a1 + 8 *a2-- - 4) = a4; /*0xffe4a74d*/\n }\n while ( a2 ); /*0xffe4a751*/\n return a1; /*0xffe4a755*/\n}"}
{"addr":"0xffe4a758","code":"void *BaseSetMem(void *buf, unsigned int count, int value)\n{\n memset32(buf, value, count); /*0xffe4a765*/\n return buf; /*0xffe4a76b*/\n}"}
{"addr":"0xffe4a76d","code":"EFI_STATUS PcdPeimEntryPoint(EFI_HANDLE PeiServices, EFI_SYSTEM_TABLE *PeiServicesTbl)\n{\n int ServicesTbl; // eax\n int Status1; // eax\n int DebugLib; // eax\n int PeiServicesTable; // eax\n int Status2; // eax\n EFI_STATUS Status2_1; // esi\n int DebugLibPtr; // eax\n\n PeiPcdInit(PeiServices); /*0xffe4a77a*/\n ServicesTbl = GetPeiServicesTable(); /*0xffe4a77f*/\n Status1 = (*(int ( **)(int, void *))(*(_DWORD *)ServicesTbl + 24))(ServicesTbl, &unk_FFE4D230); /*0xffe4a78c*/\n if ( Status1 < 0 ) /*0xffe4a7a2*/\n {\n DebugPrint(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", Status1); /*0xffe4a7ab*/\n DebugLib = DebugGetDebugLib(); /*0xffe4a7b3*/\n if ( DebugLib ) /*0xffe4a7ba*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4a7c3*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Pcd.c\",\n 158,\n \"!EFI_ERROR (Status)\");\n }\n PeiServicesTable = GetPeiServicesTable(); /*0xffe4a7c9*/\n Status2 = (*(int ( **)(int, void *))(*(_DWORD *)PeiServicesTable + 24))(PeiServicesTable, &unk_FFE4D218); /*0xffe4a7d6*/\n Status2_1 = Status2; /*0xffe4a7d9*/\n if ( Status2 < 0 ) /*0xffe4a7df*/\n {\n DebugPrint(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", Status2); /*0xffe4a7e8*/\n DebugLibPtr = DebugGetDebugLib(); /*0xffe4a7f0*/\n if ( DebugLibPtr ) /*0xffe4a7f7*/\n (*(void ( **)(const char *, int, const char *))(DebugLibPtr + 4))( /*0xffe4a800*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Pcd.c\",\n 164,\n \"!EFI_ERROR (Status)\");\n }\n return Status2_1; /*0xffe4a80c*/\n}","refs":[{"addr":"0xffe4b49e","name":"PeiPcdInit"},{"addr":"0xffe4c4ef","name":"GetPeiServicesTable"},{"addr":"0xffe4d230","name":"unk_FFE4D230"},{"addr":"0xffe4be49","name":"DebugPrint"},{"addr":"0xffe4c598","name":"aAssertEfiError","string":"\nASSERT_EFI_ERROR (Status = %r)\n"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c5d0","name":"aEHsMdemodulepk","string":"e:\\hs\\MdeModulePkg\\Universal\\PCD\\Pei\\Pcd.c"},{"addr":"0xffe4c5bc","name":"aEfiErrorStatus","string":"!EFI_ERROR (Status)"},{"addr":"0xffe4d218","name":"unk_FFE4D218"}]}
{"addr":"0xffe4a80d","code":"int PeiPcdGet8Ppi(unsigned int a1, int *a2)\n{\n return PeiPcdGetInfo(0, a1, a2); /*0xffe4a81d*/\n}","refs":[{"addr":"0xffe4b206","name":"PeiPcdGetInfo"}]}
{"addr":"0xffe4a81e","code":"int PeiPcdGet32Ppi(int a1, unsigned int a2, int *a3)\n{\n return PeiPcdGetInfo(a1, a2, a3); /*0xffe4a830*/\n}","refs":[{"addr":"0xffe4b206","name":"PeiPcdGetInfo"}]}
{"addr":"0xffe4a831","code":"int PeiPcdGetSkuId()\n{\n return *(_DWORD *)(sub_FFE4BCAC() + 24); /*0xffe4a839*/\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"}]}
{"addr":"0xffe4a83a","code":"int PeiPcdSetSku(int SkuId)\n{\n int SkuId_1; // edi\n _DWORD *PcdDatabase; // esi\n unsigned int SkuIndex; // ecx\n int SkuId_2; // eax\n unsigned int *SkuTable; // eax\n unsigned int TableFlag; // ebx\n unsigned int SkuIndex_1; // edx\n _DWORD *SkuEntry; // eax\n\n SkuId_1 = SkuId; /*0xffe4a849*/\n PcdDatabase = (_DWORD *)PeiPcdGetPcdDb(); /*0xffe4a84c*/\n SkuIndex = 0; /*0xffe4a84e*/\n SkuId_2 = PcdDatabase[6]; /*0xffe4a854*/\n if ( SkuId != SkuId_2 || PcdDatabase[7] ) /*0xffe4a85b*/\n {\n if ( *((_QWORD *)PcdDatabase + 3) ) /*0xffe4a854*/\n {\n DebugPrint(0x80000000, \"PcdPei - The SKU Id could be changed only once.\"); /*0xffe4a874*/\n DebugPrint( /*0xffe4a889*/\n 0x80000000,\n \"PcdPei - The SKU Id was set to 0x%lx already, it could not be set to 0x%lx any more.\",\n PcdDatabase[6],\n PcdDatabase[7]);\n SkuId_2 = DebugGetDebugLib(); /*0xffe4a891*/\n if ( SkuId_2 ) /*0xffe4a898*/\n return (*(int ( **)(const char *, int, const char *))(SkuId_2 + 4))( /*0xffe4a8a9*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Pcd.c\",\n 281,\n \"((BOOLEAN)(0==1))\");\n }\n else\n {\n SkuTable = (_DWORD *)((char *)PcdDatabase + PcdDatabase[14]); /*0xffe4a8b4*/\n TableFlag = SkuTable[1]; /*0xffe4a8b6*/\n SkuIndex_1 = *SkuTable; /*0xffe4a8b9*/\n if ( TableFlag || SkuIndex_1 ) /*0xffe4a8c3*/\n {\n for ( SkuEntry = SkuTable + 2; ; SkuEntry += 2 ) /*0xffe4a8c5*/\n {\n if ( SkuId_1 == *SkuEntry ) /*0xffe4a8ca*/\n {\n SkuId_1 = SkuId; /*0xffe4a8d1*/\n if ( !SkuEntry[1] ) /*0xffe4a8ce*/\n break; /*0xffe4a8ce*/\n }\n ++SkuIndex; /*0xffe4a8d6*/\n if ( !TableFlag && SkuIndex >= SkuIndex_1 ) /*0xffe4a8e4*/\n return DebugPrint(64, \"PcdPei - Invalid input SkuId, the default SKU Id will be still used.\\n\"); /*0xffe4a8e4*/\n }\n SkuId_2 = DebugPrint(64, \"PcdPei - Set current SKU Id to 0x%lx.\\n\", SkuId); /*0xffe4a906*/\n PcdDatabase[6] = SkuId; /*0xffe4a90e*/\n PcdDatabase[7] = 0; /*0xffe4a911*/\n }\n else\n {\n return DebugPrint(64, \"PcdPei - Invalid input SkuId, the default SKU Id will be still used.\\n\"); /*0xffe4a8e6*/\n }\n }\n }\n return SkuId_2; /*0xffe4a8f4*/\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4be49","name":"DebugPrint"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c5d0","name":"aEHsMdemodulepk","string":"e:\\hs\\MdeModulePkg\\Universal\\PCD\\Pei\\Pcd.c"}]}
{"addr":"0xffe4a916","code":"char PeiPcdGet8(unsigned int a1)\n{\n return *(_BYTE *)sub_FFE4BA86(a1, 1u); /*0xffe4a924*/\n}","refs":[{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"}]}
{"addr":"0xffe4a925","code":"__int16 PeiPcdGet16(unsigned int a1)\n{\n int TokenValue; // esi\n int DebugLib; // eax\n\n TokenValue = PeiPcdGetTokenValue(a1, 2u); /*0xffe4be92*/\n if ( !TokenValue ) /*0xffe4be96*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4be98*/\n if ( DebugLib ) /*0xffe4be9f*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bead*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\",\n 38,\n \"Buffer != ((void *) 0)\");\n }\n return *(_WORD *)TokenValue; /*0xffe4beb7*/\n}","refs":[{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4a938","code":"int PeiPcdGet32(unsigned int a1)\n{\n int TokenValue; // esi\n int DebugLib; // eax\n\n TokenValue = PeiPcdGetTokenValue(a1, 4u); /*0xffe4beb9*/\n if ( !TokenValue ) /*0xffe4bebd*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bebf*/\n if ( DebugLib ) /*0xffe4bec6*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bed7*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\",\n 141,\n \"Buffer != ((void *) 0)\");\n }\n return *(_DWORD *)TokenValue; /*0xffe4bee0*/\n}","refs":[{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4a94b","code":"__int64 PeiPcdGet64(unsigned int a1)\n{\n void *TokenValue; // eax\n\n TokenValue = (void *)PeiPcdGetTokenValue(a1, 8u); /*0xffe4a952*/\n return BaseReadUnaligned64(TokenValue);\n}","refs":[{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"},{"addr":"0xffe4bee1","name":"BaseReadUnaligned64"}]}
{"addr":"0xffe4a95e","code":"int PeiPcdGetPtr(unsigned int a1)\n{\n return sub_FFE4BA86(a1, 0);\n}","refs":[{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"}]}
{"addr":"0xffe4a969","code":"int PeiPcdGetSize(unsigned int SizeOut)\n{\n unsigned int TokenCopy; // edi\n unsigned int SizeOut_1; // esi\n int PcdDatabase; // ebx\n unsigned int TokenIndex; // edi\n int DebugLib; // eax\n int result; // eax\n\n TokenCopy = SizeOut; /*0xffe4a96f*/\n SizeOut_1 = SizeOut; /*0xffe4a972*/\n PcdDatabase = PeiPcdGetPcdDb(); /*0xffe4a979*/\n TokenIndex = TokenCopy - 1; /*0xffe4a97b*/\n if ( SizeOut_1 >= (unsigned int)*(unsigned __int16 *)(PcdDatabase + 64) + 1 ) /*0xffe4a983*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4a985*/\n if ( DebugLib ) /*0xffe4a98c*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4a99d*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Pcd.c\",\n 459,\n \"TokenNumber + 1 < (LocalTokenCount + 1)\");\n }\n result = *(_BYTE *)(*(_DWORD *)(PcdDatabase + 36) + 4 *TokenIndex + PcdDatabase + 3) & 0xF; /*0xffe4a9ae*/\n if ( (*(_BYTE *)(*(_DWORD *)(PcdDatabase + 36) + 4 *TokenIndex + PcdDatabase + 3) & 0xF) == 0 ) /*0xffe4a9b1*/\n return PeiPcdGetSkuSize(TokenIndex, &SizeOut, (_DWORD *)PcdDatabase); /*0xffe4a9b9*/\n return result; /*0xffe4a9bf*/\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c5d0","name":"aEHsMdemodulepk","string":"e:\\hs\\MdeModulePkg\\Universal\\PCD\\Pei\\Pcd.c"},{"addr":"0xffe4adf5","name":"PeiPcdGetSkuSize"}]}
{"addr":"0xffe4a9c4","code":"char PeiPcdGet8Ex(int a1, int a2)\n{\n unsigned int v2; // eax\n\n v2 = sub_FFE4BC27(a1, a2); /*0xffe4a9cc*/\n return *(_BYTE *)sub_FFE4BA86(v2, 1u); /*0xffe4a9dd*/\n}","refs":[{"addr":"0xffe4bc27","name":"PeiPcdGetExTokenNumber"},{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"}]}
{"addr":"0xffe4a9de","code":"__int16 PeiPcdGet16Ex(int a1, int a2)\n{\n unsigned int v2; // eax\n int TokenValue; // esi\n int DebugLib; // eax\n\n v2 = PeiPcdGetExTokenNumber(a1, a2); /*0xffe4a9e6*/\n TokenValue = PeiPcdGetTokenValue(v2, 2u); /*0xffe4be92*/\n if ( !TokenValue ) /*0xffe4be96*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4be98*/\n if ( DebugLib ) /*0xffe4be9f*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bead*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\",\n 38,\n \"Buffer != ((void *) 0)\");\n }\n return *(_WORD *)TokenValue; /*0xffe4beb7*/\n}","refs":[{"addr":"0xffe4bc27","name":"PeiPcdGetExTokenNumber"},{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4a9fc","code":"int PeiPcdGet32Ex(int a1, int a2)\n{\n unsigned int v2; // eax\n int TokenValue; // esi\n int DebugLib; // eax\n\n v2 = PeiPcdGetExTokenNumber(a1, a2); /*0xffe4aa04*/\n TokenValue = PeiPcdGetTokenValue(v2, 4u); /*0xffe4beb9*/\n if ( !TokenValue ) /*0xffe4bebd*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bebf*/\n if ( DebugLib ) /*0xffe4bec6*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bed7*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\",\n 141,\n \"Buffer != ((void *) 0)\");\n }\n return *(_DWORD *)TokenValue; /*0xffe4bee0*/\n}","refs":[{"addr":"0xffe4bc27","name":"PeiPcdGetExTokenNumber"},{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4aa1a","code":"__int64 PeiPcdGet64Ex(int a1, int a2)\n{\n unsigned int v2; // eax\n void *TokenValue; // eax\n\n v2 = PeiPcdGetExTokenNumber(a1, a2); /*0xffe4aa22*/\n TokenValue = (void *)PeiPcdGetTokenValue(v2, 8u); /*0xffe4aa2c*/\n return BaseReadUnaligned64(TokenValue);\n}","refs":[{"addr":"0xffe4bc27","name":"PeiPcdGetExTokenNumber"},{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"},{"addr":"0xffe4bee1","name":"BaseReadUnaligned64"}]}
{"addr":"0xffe4aa38","code":"int PeiPcdGetPtrEx(int a1, int a2)\n{\n unsigned int v2; // eax\n\n v2 = sub_FFE4BC27(a1, a2); /*0xffe4aa40*/\n return sub_FFE4BA86(v2, 0);\n}","refs":[{"addr":"0xffe4bc27","name":"PeiPcdGetExTokenNumber"},{"addr":"0xffe4ba86","name":"PeiPcdGetTokenValue"}]}
{"addr":"0xffe4aa4e","code":"int PeiPcdGetSizeEx(int a1, int a2)\n{\n unsigned int v2; // eax\n\n v2 = PeiPcdGetExTokenNumber(a1, a2); /*0xffe4aa56*/\n return PeiPcdGetSize(v2); /*0xffe4aa62*/\n}","refs":[{"addr":"0xffe4bc27","name":"PeiPcdGetExTokenNumber"},{"addr":"0xffe4a969","name":"PeiPcdGetSize"}]}
{"addr":"0xffe4aa63","code":"int PeiPcdSet8(unsigned int a1, ...)\n{\n unsigned int v2; // [esp+0h] [ebp-4h] BYREF\n va_list va; // [esp+10h] [ebp+Ch] BYREF\n\n va_start(va, a1);\n v2 = 1; /*0xffe4aa73*/\n return PeiPcdSetTokenValue(a1, (int)va, &v2, 0); /*0xffe4aa83*/\n}","refs":[{"addr":"0xffe4b85f","name":"PeiPcdSetTokenValue"}]}
{"addr":"0xffe4aa85","code":"int PeiPcdSet16(unsigned int a1, ...)\n{\n unsigned int n2; // [esp+0h] [ebp-4h] BYREF\n va_list va; // [esp+10h] [ebp+Ch] BYREF\n\n va_start(va, a1);\n n2 = 2; /*0xffe4aa95*/\n return PeiPcdSetTokenValue(a1, (int)va, &n2, 0); /*0xffe4aaa5*/\n}","refs":[{"addr":"0xffe4b85f","name":"PeiPcdSetTokenValue"}]}
{"addr":"0xffe4aaa7","code":"int PeiPcdSet32(unsigned int a1, ...)\n{\n unsigned int n4; // [esp+0h] [ebp-4h] BYREF\n va_list va; // [esp+10h] [ebp+Ch] BYREF\n\n va_start(va, a1);\n n4 = 4; /*0xffe4aab7*/\n return PeiPcdSetTokenValue(a1, (int)va, &n4, 0); /*0xffe4aac7*/\n}","refs":[{"addr":"0xffe4b85f","name":"PeiPcdSetTokenValue"}]}
{"addr":"0xffe4aac9","code":"int PeiPcdSet64(unsigned int a1, ...)\n{\n unsigned int n8; // [esp+0h] [ebp-4h] BYREF\n va_list va; // [esp+10h] [ebp+Ch] BYREF\n\n va_start(va, a1);\n n8 = 8; /*0xffe4aad9*/\n return PeiPcdSetTokenValue(a1, (int)va, &n8, 0); /*0xffe4aae9*/\n}","refs":[{"addr":"0xffe4b85f","name":"PeiPcdSetTokenValue"}]}
{"addr":"0xffe4aaeb","code":"int PeiPcdSetPtr(unsigned int a1, unsigned int *a2, int va)\n{\n return PeiPcdSetTokenValue(a1, va, a2, 1); /*0xffe4ab00*/\n}","refs":[{"addr":"0xffe4b85f","name":"PeiPcdSetTokenValue"}]}
{"addr":"0xffe4ab01","code":"int PeiPcdSet8Ex(int a1, unsigned int a2, ...)\n{\n unsigned int n2; // [esp+0h] [ebp-4h] BYREF\n va_list va; // [esp+14h] [ebp+10h] BYREF\n\n va_start(va, a2);\n n2 = 1; /*0xffe4ab14*/\n return PeiPcdSetExTokenValue(a2, a1, (int)va, &n2, 0); /*0xffe4ab26*/\n}","refs":[{"addr":"0xffe4ba3c","name":"PeiPcdSetExTokenValue"}]}
{"addr":"0xffe4ab28","code":"int PeiPcdSet16Ex(int a1, unsigned int a2, ...)\n{\n unsigned int n2; // [esp+0h] [ebp-4h] BYREF\n va_list va; // [esp+14h] [ebp+10h] BYREF\n\n va_start(va, a2);\n n2 = 2; /*0xffe4ab3b*/\n return PeiPcdSetExTokenValue(a2, a1, (int)va, &n2, 0); /*0xffe4ab4d*/\n}","refs":[{"addr":"0xffe4ba3c","name":"PeiPcdSetExTokenValue"}]}
{"addr":"0xffe4ab4f","code":"int PeiPcdSet32Ex(int a1, unsigned int a2, ...)\n{\n unsigned int n4; // [esp+0h] [ebp-4h] BYREF\n va_list va; // [esp+14h] [ebp+10h] BYREF\n\n va_start(va, a2);\n n4 = 4; /*0xffe4ab62*/\n return PeiPcdSetExTokenValue(a2, a1, (int)va, &n4, 0); /*0xffe4ab74*/\n}","refs":[{"addr":"0xffe4ba3c","name":"PeiPcdSetExTokenValue"}]}
{"addr":"0xffe4ab76","code":"int PeiPcdSet64Ex(int a1, unsigned int a2, ...)\n{\n unsigned int n8; // [esp+0h] [ebp-4h] BYREF\n va_list va; // [esp+14h] [ebp+10h] BYREF\n\n va_start(va, a2);\n n8 = 8; /*0xffe4ab89*/\n return PeiPcdSetExTokenValue(a2, a1, (int)va, &n8, 0); /*0xffe4ab9b*/\n}","refs":[{"addr":"0xffe4ba3c","name":"PeiPcdSetExTokenValue"}]}
{"addr":"0xffe4ab9d","code":"int PeiPcdSetPtrEx(int a1, unsigned int a2, unsigned int *p_n2, int va)\n{\n return PeiPcdSetExTokenValue(a2, a1, va, p_n2, 1); /*0xffe4abb7*/\n}","refs":[{"addr":"0xffe4ba3c","name":"PeiPcdSetExTokenValue"}]}
{"addr":"0xffe4abb8","code":"int PeiPcdSetCallback(int a1, unsigned int a2, int a3)\n{\n if ( a3 ) /*0xffe4abbd*/\n return PeiPcdSetCallbackWorker(a2, a1, a3, 1); /*0xffe4abd3*/\n else\n return -2147483646; /*0xffe4abbf*/\n}","refs":[{"addr":"0xffe4b2a6","name":"PeiPcdSetCallbackWorker"}]}
{"addr":"0xffe4abdb","code":"int PeiPcdNotifySet(int a1, unsigned int a2, int a3)\n{\n if ( a3 ) /*0xffe4abe0*/\n return PeiPcdSetCallbackWorker(a2, a1, a3, 0); /*0xffe4abf6*/\n else\n return -2147483646; /*0xffe4abe2*/\n}","refs":[{"addr":"0xffe4b2a6","name":"PeiPcdSetCallbackWorker"}]}
{"addr":"0xffe4abfe","code":"int PeiPcdGetNextTokenSpace(int TokenSpaceGuid, unsigned int *TokenNumber)\n{\n int PcdDatabase; // esi\n int ExTokenCount; // eax\n unsigned int LocalTokenCount; // edx\n int ExMapBase; // edi\n unsigned int LocalTokenCount_1; // eax\n unsigned int GuidEntry; // eax\n unsigned int EntryCount; // edx\n unsigned int EntryCount_1; // ecx\n int GuidIdx; // ebx\n int TokenSpaceTbl; // edi\n unsigned __int16 *TblEntry; // esi\n unsigned __int16 *NextEntry; // ebp\n\n PcdDatabase = PeiPcdGetPcdDb(); /*0xffe4ac05*/\n ExTokenCount = *(unsigned __int16 *)(PcdDatabase + 66); /*0xffe4ac07*/\n LocalTokenCount = *(unsigned __int16 *)(PcdDatabase + 64) - ExTokenCount; /*0xffe4ac12*/\n ExMapBase = PcdDatabase + *(_DWORD *)(PcdDatabase + 44); /*0xffe4ac14*/\n if ( TokenSpaceGuid ) /*0xffe4ac1b*/\n {\n if ( !(_WORD)ExTokenCount ) /*0xffe4ac47*/\n return -2147483634; /*0xffe4ac47*/\n GuidEntry = ScanGuid( /*0xffe4ac57*/\n PcdDatabase + *(_DWORD *)(PcdDatabase + 44),\n 16 * *(unsigned __int16 *)(PcdDatabase + 68),\n TokenSpaceGuid);\n if ( !GuidEntry ) /*0xffe4ac61*/\n return -2147483634; /*0xffe4ac68*/\n EntryCount = *(unsigned __int16 *)(PcdDatabase + 66); /*0xffe4ac6a*/\n EntryCount_1 = 0; /*0xffe4ac73*/\n GuidIdx = (int)(GuidEntry - ExMapBase) >> 4; /*0xffe4ac75*/\n TokenSpaceTbl = PcdDatabase + *(_DWORD *)(PcdDatabase + 40); /*0xffe4ac78*/\n if ( *(_WORD *)(PcdDatabase + 66) ) /*0xffe4ac6a*/\n {\n for ( TblEntry = (unsigned __int16 *)(TokenSpaceTbl + 6); *TblEntry != GuidIdx; TblEntry += 4 ) /*0xffe4ac7f*/\n {\n if ( ++EntryCount_1 >= EntryCount ) /*0xffe4ac8f*/\n return -2147483634; /*0xffe4ac8f*/\n }\n if ( !*TokenNumber ) /*0xffe4ac97*/\n {\nLABEL_16:\n *TokenNumber = *(_DWORD *)(TokenSpaceTbl + 8 *EntryCount_1); /*0xffe4ac9d*/\n return 0; /*0xffe4aca4*/\n }\n while ( EntryCount_1 < EntryCount /*0xffe4acb2*/\n && (*(_DWORD *)(TokenSpaceTbl + 8 *EntryCount_1) != *TokenNumber\n || *(unsigned __int16 *)(TokenSpaceTbl + 8 *EntryCount_1 + 6) != GuidIdx) )\n ++EntryCount_1; /*0xffe4acb4*/\n if ( EntryCount_1 < EntryCount ) /*0xffe4acbb*/\n {\n NextEntry = (unsigned __int16 *)(TokenSpaceTbl + 6 + 8 *EntryCount_1); /*0xffe4acc0*/\n while ( 1 ) /*0xffe4acc4*/\n {\n ++EntryCount_1; /*0xffe4acc4*/\n NextEntry += 4; /*0xffe4acc5*/\n if ( EntryCount_1 == EntryCount ) /*0xffe4acca*/\n break; /*0xffe4acca*/\n if ( *NextEntry == GuidIdx ) /*0xffe4acd2*/\n goto LABEL_16; /*0xffe4acd2*/\n if ( EntryCount_1 >= EntryCount ) /*0xffe4acd6*/\n return -2147483634; /*0xffe4acd6*/\n }\n *TokenNumber = 0; /*0xffe4acda*/\n }\n }\n return -2147483634; /*0xffe4acdd*/\n }\n else\n {\n if ( *TokenNumber > LocalTokenCount ) /*0xffe4ac25*/\n return -2147483634; /*0xffe4ac2c*/\n LocalTokenCount_1 = *TokenNumber + 1; /*0xffe4ac31*/\n *TokenNumber = LocalTokenCount_1; /*0xffe4ac32*/\n if ( LocalTokenCount_1 > LocalTokenCount ) /*0xffe4ac36*/\n {\n *TokenNumber = 0; /*0xffe4ac38*/\n return -2147483634; /*0xffe4ac3b*/\n }\n return 0; /*0xffe4ac3d*/\n }\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4c374","name":"ScanGuid"}]}
{"addr":"0xffe4ace7","code":"int PeiPcdGetNextToken(int *TokenSpaceGuid)\n{\n int *TokenSpaceGuid_1; // edi\n int DebugLib; // eax\n int PcdDatabase; // esi\n unsigned int ExMapTable; // ebx\n int TokenSpaceTable; // ebp\n int NextTokenSpace; // eax\n unsigned int GuidEntry; // eax\n unsigned int Index; // ecx\n int TokenSpaceIdx; // ebx\n unsigned __int16 *TableEntry; // edx\n unsigned int Index_1; // eax\n _WORD *EntryCursor; // edx\n _WORD *PrevEntry; // eax\n int GuidIndex; // [esp+8h] [ebp-4h]\n unsigned int Index_2; // [esp+8h] [ebp-4h]\n\n TokenSpaceGuid_1 = TokenSpaceGuid; /*0xffe4acea*/\n if ( !TokenSpaceGuid ) /*0xffe4acf0*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4acf2*/\n if ( DebugLib ) /*0xffe4acf9*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4ad0a*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Pcd.c\",\n 1213,\n \"Guid != ((void *) 0)\");\n }\n PcdDatabase = PeiPcdGetPcdDb(); /*0xffe4ad15*/\n if ( !*(_WORD *)(PcdDatabase + 66) ) /*0xffe4ad19*/\n return -2147483634; /*0xffe4ad24*/\n ExMapTable = PcdDatabase + *(_DWORD *)(PcdDatabase + 44); /*0xffe4ad31*/\n TokenSpaceTable = PcdDatabase + *(_DWORD *)(PcdDatabase + 40); /*0xffe4ad33*/\n if ( !*TokenSpaceGuid ) /*0xffe4ad35*/\n {\n NextTokenSpace = ExMapTable + 16 * *(unsigned __int16 *)(TokenSpaceTable + 6); /*0xffe4ad40*/\n goto LABEL_22; /*0xffe4ad42*/\n }\n GuidEntry = ScanGuid(ExMapTable, 16 * *(unsigned __int16 *)(PcdDatabase + 68), *TokenSpaceGuid); /*0xffe4ad52*/\n if ( !GuidEntry ) /*0xffe4ad5a*/\n return -2147483634; /*0xffe4ad5a*/\n Index = 0; /*0xffe4ad62*/\n GuidIndex = (int)(GuidEntry - ExMapTable) >> 4; /*0xffe4ad67*/\n if ( !*(_WORD *)(PcdDatabase + 66) ) /*0xffe4ad6b*/\n return -2147483634; /*0xffe4ad71*/\n TokenSpaceIdx = (int)(GuidEntry - ExMapTable) >> 4; /*0xffe4ad73*/\n for ( TableEntry = (unsigned __int16 *)(TokenSpaceTable + 6); ; TableEntry += 4 ) /*0xffe4ad77*/\n {\n ++Index; /*0xffe4ad7d*/\n Index_1 = *(unsigned __int16 *)(PcdDatabase + 66); /*0xffe4ad80*/\n if ( *TableEntry == GuidIndex ) /*0xffe4ad84*/\n break; /*0xffe4ad84*/\n if ( Index >= Index_1 ) /*0xffe4ad8b*/\n return -2147483634; /*0xffe4ad8b*/\n }\n if ( Index >= Index_1 ) /*0xffe4ad91*/\n {\nLABEL_24:\n *TokenSpaceGuid_1 = 0; /*0xffe4ade7*/\n return -2147483634; /*0xffe4adea*/\n }\n EntryCursor = (_WORD *)(TokenSpaceTable + 8 *Index + 6); /*0xffe4ad9a*/\n while ( (unsigned __int16)*EntryCursor == TokenSpaceIdx ) /*0xffe4ada1*/\n {\nLABEL_23:\n ++Index; /*0xffe4addb*/\n EntryCursor += 4; /*0xffe4ade0*/\n if ( Index >= *(unsigned __int16 *)(PcdDatabase + 66) ) /*0xffe4ade5*/\n goto LABEL_24; /*0xffe4ade5*/\n }\n Index_2 = 0; /*0xffe4ada3*/\n if ( Index ) /*0xffe4adaa*/\n {\n PrevEntry = (_WORD *)(TokenSpaceTable + 6); /*0xffe4adac*/\n do /*0xffe4adb5*/\n {\n TokenSpaceGuid_1 = TokenSpaceGuid; /*0xffe4adb5*/\n if ( *PrevEntry == *EntryCursor ) /*0xffe4adb9*/\n goto LABEL_23; /*0xffe4adb9*/\n ++Index_2; /*0xffe4adbb*/\n PrevEntry += 4; /*0xffe4adbf*/\n }\n while ( Index_2 < Index ); /*0xffe4adb5*/\n }\n NextTokenSpace = PcdDatabase /*0xffe4adc8*/\n + *(_DWORD *)(PcdDatabase + 44)\n + 16 * *(unsigned __int16 *)(TokenSpaceTable + 8 *Index + 6);\nLABEL_22:\n *TokenSpaceGuid_1 = NextTokenSpace; /*0xffe4add5*/\n return 0; /*0xffe4adf1*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c5d0","name":"aEHsMdemodulepk","string":"e:\\hs\\MdeModulePkg\\Universal\\PCD\\Pei\\Pcd.c"},{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4c374","name":"ScanGuid"}]}
{"addr":"0xffe4adf5","code":"int PeiPcdGetSkuSize(unsigned int TokenIndex, _DWORD *SizeOut, _DWORD *PcdDatabase)\n{\n int DynIndex; // ebx\n int LocalTokenNum; // ebp\n int DebugLib; // eax\n char *SizeTable; // esi\n int result; // eax\n unsigned int *SkuTablePtr; // eax\n unsigned int SkuIndex; // ecx\n unsigned int SkuIndex_1; // edx\n int CurSkuId; // ebp\n _DWORD *SkuEntry; // eax\n int CurSkuSubId; // edi\n char *SizeTable_1; // [esp+18h] [ebp-4h]\n _DWORD *PcdDb; // [esp+20h] [ebp+4h]\n\n DynIndex = PeiPcdGetDynTokenCount(TokenIndex, (int)PcdDatabase); /*0xffe4ae14*/\n LocalTokenNum = *(_DWORD *)((char *)&PcdDatabase[TokenIndex] + PcdDatabase[9]); /*0xffe4ae19*/\n if ( (LocalTokenNum & 0xF000000) != 0 ) /*0xffe4ae22*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4ae24*/\n if ( DebugLib ) /*0xffe4ae2b*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4ae3c*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Pcd.c\",\n 1311,\n \"(LocalTokenNumber & ((0x0U << 24) | (0x1U << 24) | (0x2U << 24) | (0x4U << 24) | (0x8U << 24))) == (0x0U << 24)\");\n }\n SizeTable = (char *)PcdDatabase + PcdDatabase[13]; /*0xffe4ae49*/\n SizeTable_1 = SizeTable; /*0xffe4ae4b*/\n result = *(unsigned __int16 *)&SizeTable[2 *DynIndex]; /*0xffe4ae4f*/\n *SizeOut = result; /*0xffe4ae53*/\n if ( (LocalTokenNum & 0x40000000) == 0 ) /*0xffe4ae5b*/\n {\n if ( (LocalTokenNum & 0x20000000) != 0 /*0xffe4ae85*/\n && ((SkuTablePtr = (unsigned int *)PeiPcdGetSkuTable(TokenIndex, (int)PcdDatabase),\n SkuIndex = 0,\n SkuIndex_1 = *SkuTablePtr,\n (PcdDb = (_DWORD *)SkuTablePtr[1]) != 0)\n || SkuIndex_1) )\n {\n CurSkuId = PcdDatabase[6]; /*0xffe4ae87*/\n SkuEntry = SkuTablePtr + 2; /*0xffe4ae8a*/\n CurSkuSubId = PcdDatabase[7]; /*0xffe4ae8d*/\n while ( *SkuEntry != CurSkuId || SkuEntry[1] != CurSkuSubId ) /*0xffe4ae97*/\n {\n ++SkuIndex; /*0xffe4ae9b*/\n SkuEntry += 2; /*0xffe4ae9c*/\n SizeTable = SizeTable_1; /*0xffe4aea3*/\n if ( !PcdDb && SkuIndex >= SkuIndex_1 ) /*0xffe4aead*/\n return *(unsigned __int16 *)&SizeTable[2 *DynIndex + 2]; /*0xffe4aead*/\n }\n return *(unsigned __int16 *)&SizeTable[2 *SkuIndex + 2 + 2 *DynIndex]; /*0xffe4aebf*/\n }\n else\n {\n return *(unsigned __int16 *)&SizeTable[2 *DynIndex + 2]; /*0xffe4aeaf*/\n }\n }\n return result; /*0xffe4aeb4*/\n}","refs":[{"addr":"0xffe4bd22","name":"PeiPcdGetDynTokenCount"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c5d0","name":"aEHsMdemodulepk","string":"e:\\hs\\MdeModulePkg\\Universal\\PCD\\Pei\\Pcd.c"},{"addr":"0xffe4bce0","name":"PeiPcdGetSkuTable"}]}
{"addr":"0xffe4aec6","code":"char PeiPcdSetSkuSize(unsigned int i, unsigned int *p_count, _DWORD *PcdDb)\n{\n int DynTokenCount; // ebp\n int DebugLib; // eax\n char *PcdDba_1; // esi\n unsigned int v8; // eax\n int v9; // eax\n unsigned int *SkuTable; // eax\n unsigned int v12; // ecx\n unsigned int v13; // edx\n _DWORD *v14; // eax\n int v15; // ebx\n unsigned int ib; // [esp+10h] [ebp-Ch]\n int v18; // [esp+14h] [ebp-8h]\n unsigned int v19; // [esp+18h] [ebp-4h]\n char *PcdDba; // [esp+20h] [ebp+4h]\n\n DynTokenCount = PeiPcdGetDynTokenCount(i, (int)PcdDb); /*0xffe4aee3*/\n v18 = *(_DWORD *)((char *)&PcdDb[i] + PcdDb[9]); /*0xffe4aeef*/\n if ( (v18 & 0xF000000) != 0 ) /*0xffe4aef8*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4aefa*/\n if ( DebugLib ) /*0xffe4af01*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4af12*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Pcd.c\",\n 1385,\n \"(LocalTokenNumber & ((0x0U << 24) | (0x1U << 24) | (0x2U << 24) | (0x4U << 24) | (0x8U << 24))) == (0x0U << 24)\");\n }\n PcdDba_1 = (char *)PcdDb + PcdDb[13]; /*0xffe4af1f*/\n PcdDba = PcdDba_1; /*0xffe4af21*/\n v8 = *(unsigned __int16 *)&PcdDba_1[2 *DynTokenCount]; /*0xffe4af25*/\n if ( (v18 & 0x40000000) != 0 ) /*0xffe4af2f*/\n {\n v9 = DebugGetDebugLib(); /*0xffe4af31*/\n if ( v9 ) /*0xffe4af38*/\n (*(void ( **)(const char *, int, const char *))(v9 + 4))( /*0xffe4af4d*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Pcd.c\",\n 1398,\n \"((BOOLEAN)(0==1))\");\n return 0; /*0xffe4af53*/\n }\n if ( *p_count > v8 || *p_count == -1 ) /*0xffe4af63*/\n {\n *p_count = v8; /*0xffe4afe4*/\n return 0; /*0xffe4afe6*/\n }\n if ( (v18 & 0x20000000) != 0 /*0xffe4af9e*/\n && ((SkuTable = (unsigned int *)PeiPcdGetSkuTable(i, (int)PcdDb), v12 = 0, v13 = *SkuTable, (v19 = SkuTable[1]) != 0)\n || v13) )\n {\n v14 = SkuTable + 2; /*0xffe4afa3*/\n ib = PcdDb[7]; /*0xffe4afa9*/\n v15 = PcdDb[6]; /*0xffe4afad*/\n while ( *v14 != v15 || v14[1] != ib ) /*0xffe4afbe*/\n {\n ++v12; /*0xffe4afc2*/\n v14 += 2; /*0xffe4afc3*/\n PcdDba_1 = PcdDba; /*0xffe4afca*/\n if ( !v19 && v12 >= v13 ) /*0xffe4afd4*/\n goto LABEL_10; /*0xffe4afd4*/\n }\n *(_WORD *)&PcdDba[2 *DynTokenCount + 2 + 2 *v12] = *(_WORD *)p_count; /*0xffe4afdd*/\n }\n else\n {\nLABEL_10:\n *(_WORD *)&PcdDba_1[2 *DynTokenCount + 2] = *(_WORD *)p_count; /*0xffe4af6d*/\n }\n return 1; /*0xffe4afe8*/\n}","refs":[{"addr":"0xffe4bd22","name":"PeiPcdGetDynTokenCount"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c5d0","name":"aEHsMdemodulepk","string":"e:\\hs\\MdeModulePkg\\Universal\\PCD\\Pei\\Pcd.c"},{"addr":"0xffe4bce0","name":"PeiPcdGetSkuTable"}]}
{"addr":"0xffe4aff0","code":"unsigned int PeiPcdGetLocalTokenNumber(_DWORD *PcdDatabase, int SkuSizeOut)\n{\n unsigned int TokenIndex; // edi\n unsigned int LocalTokenNum; // esi\n int SkuSize_1; // edx\n int SkuSize; // [esp+8h] [ebp-4h] BYREF\n\n TokenIndex = SkuSizeOut - 1; /*0xffe4aff9*/\n LocalTokenNum = *(_DWORD *)((char *)&PcdDatabase[SkuSizeOut - 1] + PcdDatabase[9]); /*0xffe4afff*/\n SkuSize_1 = HIBYTE(LocalTokenNum) & 0xF; /*0xffe4b007*/\n if ( (LocalTokenNum & 0x20000000) != 0 ) /*0xffe4b010*/\n {\n if ( !SkuSize_1 ) /*0xffe4b014*/\n {\n PeiPcdGetSkuSize(TokenIndex, &SkuSize, PcdDatabase); /*0xffe4b01c*/\n SkuSize_1 = SkuSize; /*0xffe4b021*/\n }\n return PeiPcdResolveSkuData(LocalTokenNum & 0xDFFFFFFF, SkuSize_1); /*0xffe4b032*/\n }\n return LocalTokenNum; /*0xffe4b034*/\n}","refs":[{"addr":"0xffe4adf5","name":"PeiPcdGetSkuSize"},{"addr":"0xffe4b651","name":"PeiPcdResolveSkuData"}]}
{"addr":"0xffe4b03c","code":"unsigned int PeiPcdGetTokenTypeFromTokenNumber(unsigned int LocalTokenNumber)\n{\n unsigned int v1; // eax\n int DebugLib; // eax\n\n v1 = LocalTokenNumber & 0xF000000; /*0xffe4b03e*/\n if ( (LocalTokenNumber & 0xF000000) == 0 ) /*0xffe4b043*/\n return 5; /*0xffe4b096*/\n switch ( v1 ) /*0xffe4b04a*/\n {\n case 0x1000000u: /*0xffe4b04a*/\n return (LocalTokenNumber >> 18) & 4; /*0xffe4b091*/\n case 0x2000000u: /*0xffe4b04a*/\n return 1; /*0xffe4b089*/\n case 0x4000000u: /*0xffe4b04a*/\n return 2; /*0xffe4b085*/\n case 0x8000000u: /*0xffe4b04a*/\n return 3; /*0xffe4b081*/\n }\n DebugLib = DebugGetDebugLib(); /*0xffe4b061*/\n if ( DebugLib ) /*0xffe4b068*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b076*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 87,\n \"((BOOLEAN)(0==1))\");\n return 0; /*0xffe4b07e*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4b098","code":"int PeiPcdGetTokenName(char a1, int PcdDb, int a3)\n{\n int v3; // esi\n int v5; // ecx\n int v6; // eax\n _BYTE *v7; // ebx\n _BYTE *v8; // edi\n unsigned int v9; // eax\n int CopyPool; // esi\n unsigned int v11; // ebp\n void *n0xF4240; // ebp\n int DebugLib; // eax\n\n v3 = *(_DWORD *)(PcdDb + 60); /*0xffe4b09a*/\n if ( !v3 ) /*0xffe4b0a3*/\n return 0; /*0xffe4b0a5*/\n v5 = PcdDb + *(_DWORD *)(PcdDb + 48); /*0xffe4b0b4*/\n v6 = v3 + 8 *a3; /*0xffe4b0b6*/\n v7 = (_BYTE *)(v5 + *(_DWORD *)(v6 + PcdDb - 4)); /*0xffe4b0c2*/\n v8 = (_BYTE *)(v5 + *(_DWORD *)(v6 + PcdDb - 8)); /*0xffe4b0c4*/\n if ( a1 ) /*0xffe4b0cd*/\n {\n v9 = BaseAsciiStrLen(v8); /*0xffe4b0cf*/\n return PeiAllocateAndCopyPool(v9 + 1, (int)v8); /*0xffe4b0de*/\n }\n else\n {\n v11 = BaseAsciiStrLen(v8) + 1; /*0xffe4b0ea*/\n n0xF4240 = (void *)(BaseAsciiStrLen(v7) + 1 + v11); /*0xffe4b0f3*/\n CopyPool = PeiAllocateCopyPool(n0xF4240); /*0xffe4b0fc*/\n if ( !CopyPool ) /*0xffe4b100*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4b102*/\n if ( DebugLib ) /*0xffe4b109*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b11a*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 150,\n \"Name != ((void *) 0)\");\n }\n BaseAsciiStrCpyS(CopyPool, (unsigned int)n0xF4240, v8); /*0xffe4b125*/\n *(_BYTE *)(BaseAsciiStrLen(v8) + CopyPool) = 46; /*0xffe4b136*/\n BaseAsciiStrCpyS(CopyPool, (unsigned int)n0xF4240, v7); /*0xffe4b13a*/\n }\n return CopyPool; /*0xffe4b146*/\n}","refs":[{"addr":"0xffe4bf41","name":"BaseAsciiStrLen"},{"addr":"0xffe4bdb2","name":"PeiAllocateAndCopyPool"},{"addr":"0xffe4bd9a","name":"PeiAllocateCopyPool"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4bfe9","name":"BaseAsciiStrCpyS"}]}
{"addr":"0xffe4b149","code":"int PeiPcdGetInfoEx(int PcdDb, int TokenSpaceGuid, int a3, unsigned int *a4)\n{\n unsigned int ExMapTable; // esi\n unsigned int v6; // eax\n int v8; // ebp\n int v9; // edi\n unsigned int *v10; // esi\n unsigned int LocalTokenNumber; // eax\n int TokenName; // eax\n\n ExMapTable = PcdDb + *(_DWORD *)(PcdDb + 44); /*0xffe4b155*/\n v6 = ScanGuid(ExMapTable, 16 * *(unsigned __int16 *)(PcdDb + 68), TokenSpaceGuid); /*0xffe4b15c*/\n if ( !v6 ) /*0xffe4b166*/\n return -2147483634; /*0xffe4b16d*/\n v8 = PcdDb + *(_DWORD *)(PcdDb + 40); /*0xffe4b179*/\n v9 = 0; /*0xffe4b17f*/\n if ( !*(_WORD *)(PcdDb + 66) ) /*0xffe4b183*/\n return -2147483634; /*0xffe4b1aa*/\n while ( 1 ) /*0xffe4b189*/\n {\n if ( *(unsigned __int16 *)(v8 + 8 *v9 + 6) != (int)(v6 - ExMapTable) >> 4 ) /*0xffe4b190*/\n goto LABEL_7; /*0xffe4b190*/\n if ( !a3 ) /*0xffe4b194*/\n break; /*0xffe4b194*/\n if ( *(_DWORD *)(v8 + 8 *v9) == a3 ) /*0xffe4b19a*/\n {\n v10 = a4; /*0xffe4b1b6*/\n a4[1] = PeiPcdGetSize(*(unsigned __int16 *)(v8 + 8 *v9 + 4)); /*0xffe4b1bc*/\n LocalTokenNumber = PeiPcdGetLocalTokenNumber((_DWORD *)PcdDb, *(unsigned __int16 *)(v8 + 8 *v9 + 4)); /*0xffe4b1c4*/\n *a4 = PeiPcdGetTokenTypeFromTokenNumber(LocalTokenNumber); /*0xffe4b1d0*/\n TokenName = PeiPcdGetTokenName(0, PcdDb, *(unsigned __int16 *)(v8 + 8 *v9 + 4)); /*0xffe4b1dc*/\n goto LABEL_11; /*0xffe4b1e2*/\n }\nLABEL_7:\n if ( ++v9 >= (unsigned int)*(unsigned __int16 *)(PcdDb + 66) ) /*0xffe4b19f*/\n return -2147483634; /*0xffe4b19f*/\n }\n v10 = a4; /*0xffe4b1e4*/\n *a4 = 0; /*0xffe4b1ec*/\n a4[1] = 0; /*0xffe4b1ef*/\n TokenName = PeiPcdGetTokenName(1, PcdDb, *(unsigned __int16 *)(v8 + 8 *v9 + 4)); /*0xffe4b1f9*/\nLABEL_11:\n v10[2] = TokenName; /*0xffe4b1fe*/\n return 0; /*0xffe4b1a8*/\n}","refs":[{"addr":"0xffe4c374","name":"ScanGuid"},{"addr":"0xffe4a969","name":"PeiPcdGetSize"},{"addr":"0xffe4aff0","name":"PeiPcdGetLocalTokenNumber"},{"addr":"0xffe4b03c","name":"PeiPcdGetTokenTypeFromTokenNumber"},{"addr":"0xffe4b098","name":"PeiPcdGetTokenName"}]}
{"addr":"0xffe4b206","code":"int PeiPcdGetInfo(int TokenSpaceGuid, unsigned int TokenNumber, unsigned int *a3)\n{\n int DebugLib; // eax\n int PcdDb; // ebx\n int v7; // edx\n int TokenName; // eax\n unsigned int LocalTokenNumber; // eax\n\n if ( !a3 ) /*0xffe4b214*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4b216*/\n if ( DebugLib ) /*0xffe4b21d*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b22e*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 260,\n \"PcdInfo != ((void *) 0)\");\n }\n PcdDb = PeiPcdGetPcdDb(); /*0xffe4b239*/\n v7 = *(unsigned __int16 *)(PcdDb + 66); /*0xffe4b23b*/\n if ( TokenSpaceGuid ) /*0xffe4b247*/\n {\n if ( !(_WORD)v7 ) /*0xffe4b292*/\n return -2147483634; /*0xffe4b292*/\n return PeiPcdGetInfoEx(PcdDb, TokenSpaceGuid, TokenNumber, a3); /*0xffe4b29a*/\n }\n else\n {\n if ( TokenNumber > (unsigned int)*(unsigned __int16 *)(PcdDb + 64) - v7 ) /*0xffe4b24b*/\n return -2147483634; /*0xffe4b252*/\n if ( TokenNumber ) /*0xffe4b256*/\n {\n a3[1] = PeiPcdGetSize(TokenNumber); /*0xffe4b269*/\n LocalTokenNumber = PeiPcdGetLocalTokenNumber((_DWORD *)PcdDb, TokenNumber); /*0xffe4b26e*/\n *a3 = PeiPcdGetTokenTypeFromTokenNumber(LocalTokenNumber); /*0xffe4b27d*/\n TokenName = PeiPcdGetTokenName(0, PcdDb, TokenNumber); /*0xffe4b281*/\n }\n else\n {\n TokenName = 0; /*0xffe4b258*/\n *a3 = 0; /*0xffe4b25a*/\n a3[1] = 0; /*0xffe4b25c*/\n }\n a3[2] = TokenName; /*0xffe4b288*/\n return 0; /*0xffe4b28b*/\n }\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4b149","name":"PeiPcdGetInfoEx"},{"addr":"0xffe4a969","name":"PeiPcdGetSize"},{"addr":"0xffe4aff0","name":"PeiPcdGetLocalTokenNumber"},{"addr":"0xffe4b03c","name":"PeiPcdGetTokenTypeFromTokenNumber"},{"addr":"0xffe4b098","name":"PeiPcdGetTokenName"}]}
{"addr":"0xffe4b2a6","code":"int PeiPcdSetCallbackWorker(unsigned int a1, int a2, int a3, char a4)\n{\n int PcdDb; // eax\n int PcdDb_1; // ebx\n int v8; // edi\n int v9; // esi\n int v10; // eax\n int v11; // esi\n unsigned int v12; // ecx\n int DebugLib; // eax\n int v15; // edi\n int v16; // eax\n int v17; // eax\n int NextGuidHob; // edi\n int v19; // eax\n int v20; // esi\n int v21; // eax\n\n PcdDb = PeiPcdGetPcdDb(); /*0xffe4b2ae*/\n PcdDb_1 = PcdDb; /*0xffe4b2b3*/\n v8 = *(unsigned __int16 *)(PcdDb + 64); /*0xffe4b2b5*/\n if ( a2 ) /*0xffe4b2bb*/\n {\n v11 = PeiPcdGetExTokenNumber(a2, a1); /*0xffe4b2e9*/\n v12 = v11; /*0xffe4b2eb*/\n if ( !v11 ) /*0xffe4b2ef*/\n return -2147483634; /*0xffe4b2f6*/\n v9 = v11 - 1; /*0xffe4b2fe*/\n if ( v12 >= v8 + 1 ) /*0xffe4b301*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4b303*/\n if ( DebugLib ) /*0xffe4b30a*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b31b*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 363,\n \"(TokenNumber + 1) < (LocalTokenCount + 1)\");\n }\n }\n else\n {\n v9 = a1 - 1; /*0xffe4b2c1*/\n if ( a1 >= v8 - (unsigned int)*(unsigned __int16 *)(PcdDb + 66) + 1 ) /*0xffe4b2c9*/\n {\n v10 = DebugGetDebugLib(); /*0xffe4b2cb*/\n if ( v10 ) /*0xffe4b2d2*/\n (*(void ( **)(const char *, int, const char *))(v10 + 4))( /*0xffe4b2de*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 348,\n \"TokenNumber + 1 < (PeiNexTokenNumber + 1)\");\n }\n }\n v15 = *(_DWORD *)(*(_DWORD *)(PcdDb_1 + 36) + 4 *v9 + PcdDb_1); /*0xffe4b327*/\n if ( v15 < 0 ) /*0xffe4b32c*/\n {\n v16 = DebugGetDebugLib(); /*0xffe4b32e*/\n if ( v16 ) /*0xffe4b335*/\n (*(void ( **)(const char *, int, const char *))(v16 + 4))( /*0xffe4b346*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 373,\n \"(LocalTokenNumber & (0x8U << 28)) == 0\");\n }\n if ( (v15 & 0x40000000) != 0 ) /*0xffe4b352*/\n {\n v17 = DebugGetDebugLib(); /*0xffe4b354*/\n if ( v17 ) /*0xffe4b35b*/\n (*(void ( **)(const char *, int, const char *))(v17 + 4))( /*0xffe4b36c*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 374,\n \"(LocalTokenNumber & (0x4U << 28)) == 0\");\n }\n NextGuidHob = HobGetNextGuidHob(&unk_FFE4D128); /*0xffe4b37c*/\n if ( !NextGuidHob ) /*0xffe4b380*/\n {\n v19 = DebugGetDebugLib(); /*0xffe4b382*/\n if ( v19 ) /*0xffe4b389*/\n (*(void ( **)(const char *, int, const char *))(v19 + 4))( /*0xffe4b39a*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 377,\n \"GuidHob != ((void *) 0)\");\n }\n v20 = NextGuidHob + 32 *v9; /*0xffe4b3a7*/\n v21 = 0; /*0xffe4b3c1*/\n while ( *(_DWORD *)(v20 + 4 *v21 + 24) != (a4 == 0 ? a3 : 0) )\n {\n if ( (unsigned int)++v21 >= 8 )\n return a4 == 0 ? -2147483646 : -2147483639;\n }\n *(_DWORD *)(v20 + 4 *v21 + 24) = a4 != 0 ? a3 : 0;\n return 0; /*0xffe4b3e7*/\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4bc27","name":"PeiPcdGetExTokenNumber"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c1f0","name":"HobGetNextGuidHob"},{"addr":"0xffe4d128","name":"unk_FFE4D128"}]}
{"addr":"0xffe4b3ec","code":"int __thiscall PeiPcdGetDbBinary(EFI_HANDLE ImageHandle)\n{\n int DebugLib; // eax\n int PeiServicesTable; // eax\n int v4; // eax\n int v5; // eax\n int result; // eax\n int v7; // eax\n int v8; // [esp+8h] [ebp-4h] BYREF\n\n v8 = 0; /*0xffe4b3f0*/\n if ( !ImageHandle ) /*0xffe4b3ff*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4b401*/\n if ( DebugLib ) /*0xffe4b408*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b415*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 416,\n \"FileHandle != ((void *) 0)\");\n }\n PeiServicesTable = GetPeiServicesTable(); /*0xffe4b41b*/\n v4 = (*(int ( **)(int, int, EFI_HANDLE, int *))(*(_DWORD *)PeiServicesTable + 64))( /*0xffe4b42a*/\n PeiServicesTable,\n 25,\n ImageHandle,\n &v8);\n if ( v4 < 0 ) /*0xffe4b432*/\n {\n DebugPrint(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v4); /*0xffe4b43f*/\n v5 = DebugGetDebugLib(); /*0xffe4b447*/\n if ( v5 ) /*0xffe4b44e*/\n (*(void ( **)(const char *, int, const char *))(v5 + 4))( /*0xffe4b45b*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 419,\n \"!EFI_ERROR (Status)\");\n }\n if ( !CompareGuid(v8, (int)&unk_FFE4D118) || (result = v8, *(_DWORD *)(v8 + 16) != 6) ) /*0xffe4b479*/\n {\n v7 = DebugGetDebugLib(); /*0xffe4b47b*/\n if ( v7 ) /*0xffe4b482*/\n (*(void ( **)(const char *, int, const char *))(v7 + 4))( /*0xffe4b48f*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 426,\n \"((BOOLEAN)(0==1))\");\n return v8; /*0xffe4b495*/\n }\n return result; /*0xffe4b498*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c4ef","name":"GetPeiServicesTable"},{"addr":"0xffe4be49","name":"DebugPrint"},{"addr":"0xffe4c598","name":"aAssertEfiError","string":"\nASSERT_EFI_ERROR (Status = %r)\n"},{"addr":"0xffe4c5bc","name":"aEfiErrorStatus","string":"!EFI_ERROR (Status)"},{"addr":"0xffe4c315","name":"CompareGuid"},{"addr":"0xffe4d118","name":"unk_FFE4D118"}]}
{"addr":"0xffe4b49e","code":"int __thiscall PeiPcdInit(EFI_HANDLE ImageHandle)\n{\n int DbBinary; // esi\n int DebugLib; // eax\n int buf; // edi\n unsigned int n0xFFE0; // esi\n int buf_1; // eax\n\n DbBinary = PeiPcdGetDbBinary(ImageHandle); /*0xffe4b4a5*/\n if ( !DbBinary ) /*0xffe4b4a9*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4b4ab*/\n if ( DebugLib ) /*0xffe4b4b2*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b4c3*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 454,\n \"PeiPcdDbBinary != ((void *) 0)\");\n }\n buf = HobBuildGuidHob((int)&unk_FFE4D108, *(_DWORD *)(DbBinary + 20) + *(_DWORD *)(DbBinary + 32)); /*0xffe4b4dc*/\n ZeroMemWrapper(buf, *(_DWORD *)(DbBinary + 20) + *(_DWORD *)(DbBinary + 32)); /*0xffe4b4e3*/\n CopyMemWrapper(buf, DbBinary, *(_DWORD *)(DbBinary + 20)); /*0xffe4b4ef*/\n n0xFFE0 = 32 * *(unsigned __int16 *)(buf + 64); /*0xffe4b4f9*/\n buf_1 = HobBuildGuidHob((int)&unk_FFE4D128, n0xFFE0); /*0xffe4b503*/\n ZeroMemWrapper(buf_1, n0xFFE0); /*0xffe4b50c*/\n return buf; /*0xffe4b513*/\n}","refs":[{"addr":"0xffe4b3ec","name":"PeiPcdGetDbBinary"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c27a","name":"HobBuildGuidHob"},{"addr":"0xffe4d108","name":"unk_FFE4D108"},{"addr":"0xffe4c494","name":"ZeroMemWrapper"},{"addr":"0xffe4c423","name":"CopyMemWrapper"},{"addr":"0xffe4d128","name":"unk_FFE4D128"}]}
{"addr":"0xffe4b516","code":"int PeiPcdGetPeiServicesFv(int FvHandle, int FvBuffer, _DWORD *p_FvBufSize, _DWORD *p_TokenNumber)\n{\n int PeiServicesTable; // eax\n int v7; // eax\n int DebugLib; // eax\n int v9; // esi\n int v10; // eax\n int v11; // eax\n int v12; // eax\n int v13; // eax\n int v14; // eax\n int v16; // [esp+10h] [ebp-Ch] BYREF\n int ( **v17)(_DWORD, int, int, _DWORD, int *, int); // [esp+14h] [ebp-8h] BYREF\n int v18; // [esp+18h] [ebp-4h] BYREF\n\n PeiServicesTable = GetPeiServicesTable(); /*0xffe4b521*/\n v7 = (*(int ( **)(int, void *, _DWORD, _DWORD, int ( ***)(_DWORD, int, int, _DWORD, int *, int)))(*(_DWORD *)PeiServicesTable + 32))( /*0xffe4b537*/\n PeiServicesTable,\n &unk_FFE4D0C8,\n 0,\n 0,\n &v17);\n if ( v7 < 0 ) /*0xffe4b53f*/\n {\n DebugPrint(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v7); /*0xffe4b54c*/\n DebugLib = DebugGetDebugLib(); /*0xffe4b554*/\n if ( DebugLib ) /*0xffe4b55b*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b56c*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 500,\n \"!EFI_ERROR (Status)\");\n }\n v16 = 0; /*0xffe4b577*/\n if ( (*v17)(v17, FvBuffer, FvHandle, 0, &v16, 0) != -2147483643 ) /*0xffe4b58e*/\n return -2147483634; /*0xffe4b644*/\n v9 = v16; /*0xffe4b594*/\n v10 = GetPeiServicesTable(); /*0xffe4b598*/\n v11 = (*(int ( **)(int, int, int *))(*(_DWORD *)v10 + 76))(v10, v9, &v18); /*0xffe4b5a6*/\n if ( v11 < 0 ) /*0xffe4b5ae*/\n {\n DebugPrint(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v11); /*0xffe4b5bb*/\n v12 = DebugGetDebugLib(); /*0xffe4b5c3*/\n if ( v12 ) /*0xffe4b5ca*/\n (*(void ( **)(const char *, int, const char *))(v12 + 4))( /*0xffe4b5db*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 514,\n \"!EFI_ERROR (Status)\");\n }\n v13 = (*v17)(v17, FvBuffer, FvHandle, 0, &v16, v18); /*0xffe4b5f2*/\n if ( v13 < 0 ) /*0xffe4b5f9*/\n {\n DebugPrint(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v13); /*0xffe4b606*/\n v14 = DebugGetDebugLib(); /*0xffe4b60e*/\n if ( v14 ) /*0xffe4b615*/\n (*(void ( **)(const char *, int, const char *))(v14 + 4))( /*0xffe4b626*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 524,\n \"!EFI_ERROR (Status)\");\n }\n *p_TokenNumber = v16; /*0xffe4b634*/\n *p_FvBufSize = v18; /*0xffe4b63e*/\n return 0; /*0xffe4b649*/\n}","refs":[{"addr":"0xffe4c4ef","name":"GetPeiServicesTable"},{"addr":"0xffe4d0c8","name":"unk_FFE4D0C8"},{"addr":"0xffe4be49","name":"DebugPrint"},{"addr":"0xffe4c598","name":"aAssertEfiError","string":"\nASSERT_EFI_ERROR (Status = %r)\n"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c5bc","name":"aEfiErrorStatus","string":"!EFI_ERROR (Status)"}]}
{"addr":"0xffe4b651","code":"int PeiPcdResolveSkuData(int a1, int TokenNumber)\n{\n int PcdDb; // ebx\n int DebugLib; // eax\n unsigned int *v5; // edx\n int v6; // ebp\n unsigned int v7; // esi\n unsigned int v8; // ecx\n _DWORD *v9; // eax\n _DWORD *v10; // eax\n int v11; // eax\n unsigned int n0x10000000_1; // edi\n unsigned int n0x10000000; // ecx\n int v14; // eax\n int v15; // eax\n int v17; // eax\n\n PcdDb = PeiPcdGetPcdDb(); /*0xffe4b662*/\n if ( (a1 & 0x20000000) != 0 ) /*0xffe4b66a*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4b66c*/\n if ( DebugLib ) /*0xffe4b673*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b684*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 559,\n \"(LocalTokenNumber & (0x2U << 28)) == 0\");\n }\n v5 = (unsigned int *)(PcdDb + *(_DWORD *)((a1 & 0xEFFFFF) + PcdDb + 4)); /*0xffe4b698*/\n v6 = PcdDb + *(_DWORD *)((a1 & 0xEFFFFF) + PcdDb); /*0xffe4b69c*/\n v7 = 0; /*0xffe4b6a2*/\n v8 = v5[1]; /*0xffe4b6a4*/\n if ( v8 || *v5 ) /*0xffe4b6ad*/\n {\n v9 = v5 + 2; /*0xffe4b6b1*/\n while ( 1 ) /*0xffe4b6b9*/\n {\n v8 = v5[1]; /*0xffe4b6b9*/\n if ( *(_DWORD *)(PcdDb + 24) == *v9 ) /*0xffe4b6bc*/\n {\n v8 = v5[1]; /*0xffe4b6c4*/\n if ( *(_DWORD *)(PcdDb + 28) == v9[1] ) /*0xffe4b6c7*/\n break; /*0xffe4b6c7*/\n }\n ++v7; /*0xffe4b6c9*/\n v9 += 2; /*0xffe4b6ca*/\n if ( !v8 && v7 >= *v5 ) /*0xffe4b6d7*/\n goto LABEL_11; /*0xffe4b6d7*/\n }\n }\n else\n {\nLABEL_11:\n v7 = 0; /*0xffe4b6db*/\n if ( *v5 ) /*0xffe4b6e3*/\n {\n v10 = v5 + 2; /*0xffe4b6e7*/\n do /*0xffe4b703*/\n {\n if ( !*v10 && !v10[1] ) /*0xffe4b6ef*/\n break; /*0xffe4b6f3*/\n ++v7; /*0xffe4b6f5*/\n v10 += 2; /*0xffe4b6f6*/\n }\n while ( v7 < *v5 ); /*0xffe4b703*/\n }\n }\n if ( !v8 && v7 >= *v5 ) /*0xffe4b70f*/\n {\n v11 = DebugGetDebugLib(); /*0xffe4b711*/\n if ( v11 ) /*0xffe4b718*/\n (*(void ( **)(const char *, int, const char *))(v11 + 4))( /*0xffe4b729*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 586,\n \"Index < SkuIdTable[0]\");\n }\n n0x10000000_1 = a1 & 0xF0000000; /*0xffe4b72f*/\n if ( !n0x10000000_1 ) /*0xffe4b735*/\n return TokenNumber *v7 - PcdDb + v6; /*0xffe4b7b1*/\n n0x10000000 = 0x10000000; /*0xffe4b737*/\n if ( n0x10000000_1 == 0x10000000 || (n0x10000000 = 0x40000000, n0x10000000_1 == 0x40000000) ) /*0xffe4b747*/\n {\n v17 = 4 *v7; /*0xffe4b79f*/\n return n0x10000000 | (v6 + v17 - PcdDb); /*0xffe4b79f*/\n }\n n0x10000000 = 0x80000000; /*0xffe4b749*/\n if ( n0x10000000_1 == 0x80000000 || (n0x10000000 = -1879048192, n0x10000000_1 == -1879048192) ) /*0xffe4b759*/\n {\n v17 = 20 *v7; /*0xffe4b798*/\n return n0x10000000 | (v6 + v17 - PcdDb); /*0xffe4b7a8*/\n }\n v14 = DebugGetDebugLib(); /*0xffe4b75b*/\n if ( v14 ) /*0xffe4b767*/\n (*(void ( **)(const char *, int, const char *))(v14 + 4))( /*0xffe4b774*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 610,\n \"((BOOLEAN)(0==1))\");\n v15 = DebugGetDebugLib(); /*0xffe4b77a*/\n if ( v15 ) /*0xffe4b781*/\n (*(void ( **)(const char *, int, const char *))(v15 + 4))( /*0xffe4b78e*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 613,\n \"((BOOLEAN)(0==1))\");\n return 0; /*0xffe4b7b4*/\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4b7bb","code":"_WORD *PeiPcdNotifySetCallbacks(\n unsigned int TokenNumber_2,\n int a2,\n unsigned int TokenNumber,\n int va,\n int n2)\n{\n int PcdDb; // eax\n int DebugLib; // eax\n _WORD *result; // eax\n _WORD *v10; // edi\n _WORD *v11; // edi\n unsigned int i; // esi\n int ( *v13)(int, unsigned int, int, int); // ecx\n unsigned int TokenNumber_1; // eax\n\n PcdDb = PeiPcdGetPcdDb(); /*0xffe4b7ce*/\n if ( !a2 && TokenNumber >= (unsigned int)*(unsigned __int16 *)(PcdDb + 64) + 1 ) /*0xffe4b7de*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4b7e0*/\n if ( DebugLib ) /*0xffe4b7e7*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b7f8*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 660,\n \"TokenNumber + 1 < (LocalTokenCount + 1)\");\n }\n result = HobGetNextGuidHob(&unk_FFE4D128); /*0xffe4b803*/\n v10 = result; /*0xffe4b808*/\n if ( !result ) /*0xffe4b80c*/\n {\n result = (_WORD *)DebugGetDebugLib(); /*0xffe4b80e*/\n if ( result ) /*0xffe4b815*/\n result = (_WORD *)(*((int ( **)(const char *, int, const char *))result + 1))( /*0xffe4b826*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 664,\n \"GuidHob != ((void *) 0)\");\n }\n v11 = &v10[16 *TokenNumber - 16]; /*0xffe4b82f*/\n for ( i = 0; i < 8; ++i ) /*0xffe4b831*/\n {\n v13 = *(int ( **)(int, unsigned int, int, int))&v11[2 *i + 12]; /*0xffe4b833*/\n if ( v13 ) /*0xffe4b839*/\n {\n TokenNumber_1 = TokenNumber; /*0xffe4b83b*/\n if ( a2 ) /*0xffe4b841*/\n TokenNumber_1 = TokenNumber_2; /*0xffe4b843*/\n result = (_WORD *)v13(a2, TokenNumber_1, va, n2); /*0xffe4b84f*/\n }\n }\n return result; /*0xffe4b85a*/\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c1f0","name":"HobGetNextGuidHob"},{"addr":"0xffe4d128","name":"unk_FFE4D128"}]}
{"addr":"0xffe4b85f","code":"int PeiPcdSetTokenValue(unsigned int TokenNumber, int Buffer, unsigned int *SizePtr, char IsDynamic)\n{\n unsigned int TokenIndex; // ebx\n int PcdDatabase; // ebp\n int DebugLib; // eax\n unsigned int *Size; // ebx\n int DataSize; // esi\n unsigned int LocalTokenNumber; // eax\n char *SettingData; // esi\n unsigned int TokenTypeFlag; // eax\n int DebugLibPtr2; // eax\n int DebugLibPtr1; // eax\n char *SettingData_1; // ecx\n int DebugLibPtr3; // eax\n unsigned int TokenIdx2; // [esp+10h] [ebp-10h]\n unsigned int TokenNumber_3; // [esp+14h] [ebp-Ch] BYREF\n unsigned int TokenNumber_2; // [esp+18h] [ebp-8h]\n unsigned int TokenNumber_1; // [esp+1Ch] [ebp-4h]\n\n TokenNumber_1 = TokenNumber; /*0xffe4b867*/\n TokenNumber_2 = TokenNumber; /*0xffe4b86d*/\n TokenNumber_3 = TokenNumber; /*0xffe4b871*/\n TokenIndex = TokenNumber - 1; /*0xffe4b875*/\n TokenIdx2 = TokenNumber - 1; /*0xffe4b879*/\n PcdDatabase = PeiPcdGetPcdDb(); /*0xffe4b882*/\n if ( TokenNumber >= (unsigned int)*(unsigned __int16 *)(PcdDatabase + 64) + 1 ) /*0xffe4b88b*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4b88d*/\n if ( DebugLib ) /*0xffe4b894*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4b8a5*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 750,\n \"TokenNumber + 1 < (LocalTokenCount + 1)\");\n }\n if ( IsDynamic ) /*0xffe4b8b0*/\n {\n PeiPcdGetSkuSize(TokenIndex, &TokenNumber_3, (_DWORD *)PcdDatabase); /*0xffe4b8b9*/\n Size = SizePtr; /*0xffe4b8be*/\n DataSize = *SizePtr; /*0xffe4b8c7*/\n if ( *SizePtr > TokenNumber_3 ) /*0xffe4b8cb*/\n {\n *SizePtr = TokenNumber_3; /*0xffe4b8cd*/\n return -2147483646; /*0xffe4b8d4*/\n }\n }\n else\n {\n Size = SizePtr; /*0xffe4b8d9*/\n DataSize = *SizePtr; /*0xffe4b8e1*/\n if ( DataSize != PeiPcdGetSize(TokenNumber_3) ) /*0xffe4b8eb*/\n return -2147483646; /*0xffe4b8eb*/\n }\n if ( TokenNumber_2 < *(unsigned __int16 *)(PcdDatabase + 64) /*0xffe4b8fc*/\n - (unsigned int)*(unsigned __int16 *)(PcdDatabase + 66)\n + 1 )\n PeiPcdNotifySetCallbacks(0, 0, TokenNumber_1, Buffer, DataSize); /*0xffe4b908*/\n LocalTokenNumber = PeiPcdGetLocalTokenNumber((_DWORD *)PcdDatabase, TokenIdx2 + 1); /*0xffe4b917*/\n SettingData = (char *)(PcdDatabase + (LocalTokenNumber & 0xEFFFFF)); /*0xffe4b924*/\n TokenTypeFlag = LocalTokenNumber & 0xF0000000; /*0xffe4b926*/\n if ( TokenTypeFlag ) /*0xffe4b92b*/\n {\n if ( TokenTypeFlag != 0x10000000 ) /*0xffe4b936*/\n {\n if ( TokenTypeFlag == 0x40000000 || TokenTypeFlag == 0x80000000 || TokenTypeFlag == -1879048192 ) /*0xffe4b94b*/\n {\n DebugLibPtr1 = DebugGetDebugLib(); /*0xffe4b969*/\n if ( DebugLibPtr1 ) /*0xffe4b970*/\n (*(void ( **)(const char *, int, const char *))(DebugLibPtr1 + 4))( /*0xffe4b985*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 787,\n \"((BOOLEAN)(0==1))\");\n return -2147483646; /*0xffe4b98b*/\n }\n DebugLibPtr2 = DebugGetDebugLib(); /*0xffe4b94d*/\n if ( DebugLibPtr2 ) /*0xffe4b954*/\n (*(void ( **)(const char *, int, const char *))(DebugLibPtr2 + 4))( /*0xffe4b964*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 836,\n \"((BOOLEAN)(0==1))\");\n return -2147483634; /*0xffe4b964*/\n }\n if ( !PeiPcdSetSkuSize(TokenIdx2, Size, (_DWORD *)PcdDatabase) ) /*0xffe4b99f*/\n return -2147483646; /*0xffe4b99f*/\n SettingData_1 = (char *)(PcdDatabase + *(_DWORD *)SettingData + *(_DWORD *)(PcdDatabase + 48)); /*0xffe4b9aa*/\n goto LABEL_22; /*0xffe4b9aa*/\n }\n if ( IsDynamic ) /*0xffe4b9bd*/\n {\n if ( !PeiPcdSetSkuSize(TokenIdx2, Size, (_DWORD *)PcdDatabase) ) /*0xffe4b9ce*/\n return -2147483646; /*0xffe4b9ce*/\n SettingData_1 = SettingData; /*0xffe4b9d4*/\nLABEL_22:\n CopyMemWrapper(SettingData_1, (char *)Buffer, *Size); /*0xffe4b9ac*/\n return 0; /*0xffe4b9b6*/\n }\n switch ( *Size ) /*0xffe4b9dd*/\n {\n case 1u: /*0xffe4b9dd*/\n *SettingData = *(_BYTE *)Buffer; /*0xffe4ba30*/\n break;\n case 2u: /*0xffe4b9dd*/\n *(_WORD *)SettingData = *(_WORD *)Buffer; /*0xffe4ba29*/\n break;\n case 4u: /*0xffe4b9dd*/\n *(_DWORD *)SettingData = *(_DWORD *)Buffer; /*0xffe4ba22*/\n break;\n case 8u: /*0xffe4b9dd*/\n *(_DWORD *)SettingData = *(_DWORD *)Buffer; /*0xffe4ba16*/\n *((_DWORD *)SettingData + 1) = *(_DWORD *)(Buffer + 4); /*0xffe4ba1b*/\n break;\n default:\n DebugLibPtr3 = DebugGetDebugLib(); /*0xffe4b9ef*/\n if ( DebugLibPtr3 ) /*0xffe4b9f6*/\n (*(void ( **)(const char *, int, const char *))(DebugLibPtr3 + 4))( /*0xffe4ba07*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 829,\n \"((BOOLEAN)(0==1))\");\n return -2147483634; /*0xffe4ba12*/\n }\n return 0; /*0xffe4ba34*/\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4adf5","name":"PeiPcdGetSkuSize"},{"addr":"0xffe4a969","name":"PeiPcdGetSize"},{"addr":"0xffe4b7bb","name":"PeiPcdNotifySetCallbacks"},{"addr":"0xffe4aff0","name":"PeiPcdGetLocalTokenNumber"},{"addr":"0xffe4aec6","name":"PeiPcdSetSkuSize"},{"addr":"0xffe4c423","name":"CopyMemWrapper"}]}
{"addr":"0xffe4ba3c","code":"int PeiPcdSetExTokenValue(unsigned int TokenNumber, int a2, int va, unsigned int *p_n2, char a5)\n{\n unsigned int TokenNumber_1; // eax\n unsigned int TokenNumber_2; // edi\n\n TokenNumber_1 = PeiPcdGetExTokenNumber(a2, TokenNumber); /*0xffe4ba47*/\n TokenNumber_2 = TokenNumber_1; /*0xffe4ba4c*/\n if ( !TokenNumber_1 ) /*0xffe4ba50*/\n return -2147483634; /*0xffe4ba52*/\n PeiPcdNotifySetCallbacks(TokenNumber, a2, TokenNumber_1, va, *p_n2); /*0xffe4ba69*/\n return PeiPcdSetTokenValue(TokenNumber_2, va, p_n2, a5); /*0xffe4ba82*/\n}","refs":[{"addr":"0xffe4bc27","name":"PeiPcdGetExTokenNumber"},{"addr":"0xffe4b7bb","name":"PeiPcdNotifySetCallbacks"},{"addr":"0xffe4b85f","name":"PeiPcdSetTokenValue"}]}
{"addr":"0xffe4ba86","code":"char *PeiPcdGetTokenValue(unsigned int SkuSize, unsigned int GetSize_1)\n{\n unsigned int GetSize; // ebp\n int PcdDatabase; // ebx\n int DebugLib; // eax\n int DebugLibPtr; // eax\n unsigned int LocalTokenNumber; // eax\n int Offset; // esi\n int DataStart; // edx\n unsigned int TokenTypeFlag; // eax\n int DebugLib1; // eax\n int DebugLib2; // eax\n int FvHandle; // ecx\n char *SettingData; // edi\n int OffsetInBlock; // edx\n unsigned int TokenIndex; // [esp+10h] [ebp-14h]\n unsigned int SkuSize_1; // [esp+14h] [ebp-10h] BYREF\n unsigned int GetSize_2; // [esp+18h] [ebp-Ch] BYREF\n int FvBuffer; // [esp+1Ch] [ebp-8h]\n int FvBufSize; // [esp+20h] [ebp-4h] BYREF\n\n GetSize = GetSize_1; /*0xffe4ba8d*/\n SkuSize_1 = SkuSize; /*0xffe4ba91*/\n GetSize_2 = GetSize_1; /*0xffe4ba98*/\n TokenIndex = SkuSize - 1; /*0xffe4ba9c*/\n PcdDatabase = PeiPcdGetPcdDb(); /*0xffe4baa5*/\n if ( SkuSize >= (unsigned int)*(unsigned __int16 *)(PcdDatabase + 64) + 1 ) /*0xffe4baae*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bab0*/\n if ( DebugLib ) /*0xffe4babc*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bac9*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 974,\n \"TokenNumber + 1 < (LocalTokenCount + 1)\");\n }\n if ( GetSize != PeiPcdGetSize(SkuSize_1) ) /*0xffe4bae2*/\n {\n if ( GetSize ) /*0xffe4bae6*/\n {\n DebugLibPtr = DebugGetDebugLib(); /*0xffe4bae8*/\n if ( DebugLibPtr ) /*0xffe4baef*/\n (*(void ( **)(const char *, int, const char *))(DebugLibPtr + 4))( /*0xffe4bafc*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 976,\n \"(GetSize == PeiPcdGetSize(TokenNumber + 1)) || (GetSize == 0)\");\n }\n }\n LocalTokenNumber = PeiPcdGetLocalTokenNumber((_DWORD *)PcdDatabase, TokenIndex + 1); /*0xffe4bb09*/\n Offset = LocalTokenNumber & 0xEFFFFF; /*0xffe4bb13*/\n DataStart = PcdDatabase + *(_DWORD *)(PcdDatabase + 48); /*0xffe4bb19*/\n TokenTypeFlag = LocalTokenNumber & 0xF0000000; /*0xffe4bb1b*/\n switch ( TokenTypeFlag ) /*0xffe4bb20*/\n {\n case 0u: /*0xffe4bb20*/\n return (char *)(Offset + PcdDatabase); /*0xffe4bc1c*/\n case 0x10000000u: /*0xffe4bb20*/\n return (char *)(DataStart + *(_DWORD *)(Offset + PcdDatabase)); /*0xffe4bc18*/\n case 0x40000000u: /*0xffe4bb20*/\n return *(char **)(Offset + PcdDatabase); /*0xffe4bc10*/\n case 0x80000000: /*0xffe4bb20*/\n case 0x90000000: /*0xffe4bb20*/\n FvHandle = PcdDatabase + *(_DWORD *)(PcdDatabase + 44) + 16 * *(unsigned __int16 *)(Offset + PcdDatabase + 8); /*0xffe4bb92*/\n FvBuffer = DataStart + *(_DWORD *)(Offset + PcdDatabase); /*0xffe4bb94*/\n if ( TokenTypeFlag == -1879048192 ) /*0xffe4bb9d*/\n SettingData = (char *)(DataStart + *(_DWORD *)(*(_DWORD *)(Offset + PcdDatabase + 4) + PcdDatabase)); /*0xffe4bba6*/\n else\n SettingData = (char *)(PcdDatabase + *(_DWORD *)(Offset + PcdDatabase + 4)); /*0xffe4bbae*/\n if ( !PeiPcdGetPeiServicesFv(FvHandle, FvBuffer, &FvBufSize, &SkuSize_1) ) /*0xffe4bbbe*/\n {\n OffsetInBlock = *(unsigned __int16 *)(Offset + PcdDatabase + 10); /*0xffe4bbc9*/\n if ( SkuSize_1 >= OffsetInBlock + GetSize ) /*0xffe4bbd5*/\n {\n if ( !GetSize ) /*0xffe4bbd9*/\n {\n PeiPcdGetSkuSize(TokenIndex, &GetSize_2, (_DWORD *)PcdDatabase); /*0xffe4bbe4*/\n OffsetInBlock = *(unsigned __int16 *)(Offset + PcdDatabase + 10); /*0xffe4bbe9*/\n GetSize = GetSize_2; /*0xffe4bbf2*/\n if ( GetSize_2 > SkuSize_1 - OffsetInBlock ) /*0xffe4bbfb*/\n GetSize = SkuSize_1 - OffsetInBlock; /*0xffe4bbfd*/\n }\n CopyMemWrapper(SettingData, (char *)(FvBufSize + OffsetInBlock), GetSize); /*0xffe4bc06*/\n }\n }\n return SettingData; /*0xffe4bc0c*/\n default:\n DebugLib1 = DebugGetDebugLib(); /*0xffe4bb4a*/\n if ( DebugLib1 ) /*0xffe4bb56*/\n (*(void ( **)(const char *, int, const char *))(DebugLib1 + 4))( /*0xffe4bb5f*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 1040,\n \"((BOOLEAN)(0==1))\");\n DebugLib2 = DebugGetDebugLib(); /*0xffe4bb65*/\n if ( DebugLib2 ) /*0xffe4bb6c*/\n (*(void ( **)(const char *, int, const char *))(DebugLib2 + 4))( /*0xffe4bb75*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 1045,\n \"((BOOLEAN)(0==1))\");\n return 0; /*0xffe4bb7b*/\n }\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4a969","name":"PeiPcdGetSize"},{"addr":"0xffe4aff0","name":"PeiPcdGetLocalTokenNumber"},{"addr":"0xffe4adf5","name":"PeiPcdGetSkuSize"},{"addr":"0xffe4c423","name":"CopyMemWrapper"},{"addr":"0xffe4b516","name":"PeiPcdGetPeiServicesFv"}]}
{"addr":"0xffe4bc27","code":"int PeiPcdGetExTokenNumber(int TokenSpaceGuid, int TokenNumber)\n{\n int PcdDatabase; // ebx\n unsigned int ExMapTable; // ebp\n int ExTokenTbl; // edi\n unsigned int GuidEntry; // esi\n int DebugLib; // eax\n int GuidIndex; // esi\n int Index; // ecx\n\n PcdDatabase = PeiPcdGetPcdDb(); /*0xffe4bc37*/\n ExMapTable = PcdDatabase + *(_DWORD *)(PcdDatabase + 44); /*0xffe4bc41*/\n ExTokenTbl = PcdDatabase + *(_DWORD *)(PcdDatabase + 40); /*0xffe4bc4b*/\n GuidEntry = ScanGuid(ExMapTable, 16 * *(unsigned __int16 *)(PcdDatabase + 68), TokenSpaceGuid); /*0xffe4bc52*/\n if ( !GuidEntry ) /*0xffe4bc57*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bc59*/\n if ( DebugLib ) /*0xffe4bc60*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bc71*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 1087,\n \"MatchGuid != ((void *) 0)\");\n }\n GuidIndex = (int)(GuidEntry - ExMapTable) >> 4; /*0xffe4bc7d*/\n Index = 0; /*0xffe4bc80*/\n if ( !*(_WORD *)(PcdDatabase + 66) ) /*0xffe4bc77*/\n return 0; /*0xffe4bc9d*/\n while ( TokenNumber != *(_DWORD *)(ExTokenTbl + 8 *Index) /*0xffe4bc96*/\n || GuidIndex != *(unsigned __int16 *)(ExTokenTbl + 8 *Index + 6) )\n {\n if ( ++Index >= (unsigned int)*(unsigned __int16 *)(PcdDatabase + 66) ) /*0xffe4bc9b*/\n return 0; /*0xffe4bc9b*/\n }\n return *(unsigned __int16 *)(ExTokenTbl + 8 *Index + 4); /*0xffe4bc9f*/\n}","refs":[{"addr":"0xffe4bcac","name":"PeiPcdGetPcdDb"},{"addr":"0xffe4c374","name":"ScanGuid"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4bcac","code":"int PeiPcdGetPcdDb()\n{\n int NextGuidHob; // esi\n int DebugLib; // eax\n\n NextGuidHob = HobGetNextGuidHob(&unk_FFE4D108); /*0xffe4bcb7*/\n if ( !NextGuidHob ) /*0xffe4bcbb*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bcbd*/\n if ( DebugLib ) /*0xffe4bcc4*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bcd5*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 1115,\n \"GuidHob != ((void *) 0)\");\n }\n return NextGuidHob + 24; /*0xffe4bcde*/\n}","refs":[{"addr":"0xffe4c1f0","name":"HobGetNextGuidHob"},{"addr":"0xffe4d108","name":"unk_FFE4D108"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4bce0","code":"int PeiPcdGetSkuTable(unsigned int i, int PcdDb)\n{\n int v3; // esi\n int DebugLib; // eax\n\n v3 = *(_DWORD *)(*(_DWORD *)(PcdDb + 36) + 4 *i + PcdDb); /*0xffe4bcea*/\n if ( (v3 & 0x20000000) == 0 ) /*0xffe4bcf3*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bcf5*/\n if ( DebugLib ) /*0xffe4bcfc*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bd0d*/\n \"e:\\\\hs\\\\MdeModulePkg\\\\Universal\\\\PCD\\\\Pei\\\\Service.c\",\n 1140,\n \"(LocalTokenNumber & (0x2U << 28)) != 0\");\n }\n return PcdDb + *(_DWORD *)((v3 & 0xEFFFFF) + PcdDb + 4); /*0xffe4bd1f*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4bd22","code":"int PeiPcdGetDynTokenCount(unsigned int i, int PcdDb)\n{\n int v3; // esi\n unsigned int j; // edi\n int v6; // eax\n\n v3 = 0; /*0xffe4bd27*/\n for ( j = 0; j < i; ++j ) /*0xffe4bd30*/\n {\n v6 = *(_DWORD *)(PcdDb + 36) + 4 *j; /*0xffe4bd35*/\n if ( (*(_DWORD *)(v6 + PcdDb) & 0xF000000) == 0 ) /*0xffe4bd3f*/\n {\n if ( (*(_DWORD *)(v6 + PcdDb) & 0x40000000) == 0 && (*(_DWORD *)(v6 + PcdDb) & 0x20000000) != 0 ) /*0xffe4bd51*/\n v3 += *(_DWORD *)PeiPcdGetSkuTable(j, PcdDb) + 1; /*0xffe4bd62*/\n else\n v3 += 2; /*0xffe4bd53*/\n }\n }\n return v3; /*0xffe4bd69*/\n}","refs":[{"addr":"0xffe4bce0","name":"PeiPcdGetSkuTable"}]}
{"addr":"0xffe4bd70","code":"int __thiscall PeiAllocatePool(void *this)\n{\n int PeiServicesTable; // eax\n int v4; // [esp+4h] [ebp-4h] BYREF\n\n PeiServicesTable = GetPeiServicesTable(); /*0xffe4bd77*/\n if ( (*(int ( **)(int, void *, int *))(*(_DWORD *)PeiServicesTable + 76))(PeiServicesTable, this, &v4) >= 0 ) /*0xffe4bd8d*/\n return v4; /*0xffe4bd93*/\n else\n return 0; /*0xffe4bd8f*/\n}","refs":[{"addr":"0xffe4c4ef","name":"GetPeiServicesTable"}]}
{"addr":"0xffe4bd9a","code":"void *__thiscall PeiAllocateCopyPool(void *this)\n{\n void *buf; // eax\n\n buf = (void *)PeiAllocatePool(this); /*0xffe4bd9d*/\n if ( buf ) /*0xffe4bda4*/\n return ZeroMemWrapper((int)buf, (unsigned int)this); /*0xffe4bdab*/\n return buf; /*0xffe4bdaa*/\n}","refs":[{"addr":"0xffe4bd70","name":"PeiAllocatePool"},{"addr":"0xffe4c494","name":"ZeroMemWrapper"}]}
{"addr":"0xffe4bdb2","code":"char *PeiAllocateAndCopyPool(unsigned int count, char *DbBinary)\n{\n int DebugLib; // eax\n int v5; // eax\n char *buf; // eax\n\n if ( !DbBinary ) /*0xffe4bdc0*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bdc2*/\n if ( DebugLib ) /*0xffe4bdc9*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bdd6*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiMemoryAllocationLib\\\\MemoryAllocationLib.c\",\n 623,\n \"Buffer != ((void *) 0)\");\n }\n if ( count > -(int)DbBinary ) /*0xffe4bde2*/\n {\n v5 = DebugGetDebugLib(); /*0xffe4bde4*/\n if ( v5 ) /*0xffe4bdeb*/\n (*(void ( **)(const char *, int, const char *))(v5 + 4))( /*0xffe4bdf8*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiMemoryAllocationLib\\\\MemoryAllocationLib.c\",\n 624,\n \"AllocationSize <= (0xFFFFFFFF - (UINTN) Buffer + 1)\");\n }\n buf = (char *)PeiAllocatePool((void *)count); /*0xffe4be00*/\n if ( buf ) /*0xffe4be07*/\n return CopyMemWrapper(buf, DbBinary, count); /*0xffe4be0e*/\n return buf; /*0xffe4be14*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4bd70","name":"PeiAllocatePool"},{"addr":"0xffe4c423","name":"CopyMemWrapper"}]}
{"addr":"0xffe4be18","code":"int DebugGetDebugLib()\n{\n int PeiServicesTable; // eax\n _BYTE v2[4]; // [esp+0h] [ebp-8h] BYREF\n int v3; // [esp+4h] [ebp-4h] BYREF\n\n PeiServicesTable = GetPeiServicesTable(); /*0xffe4be1d*/\n if ( (*(int ( **)(int, void *, _DWORD, _BYTE *, int *))(*(_DWORD *)PeiServicesTable + 32))( /*0xffe4be3c*/\n PeiServicesTable,\n &unk_FFE4D0D8,\n 0,\n v2,\n &v3) >= 0 )\n return v3; /*0xffe4be42*/\n else\n return 0; /*0xffe4be3e*/\n}","refs":[{"addr":"0xffe4c4ef","name":"GetPeiServicesTable"},{"addr":"0xffe4d0d8","name":"unk_FFE4D0D8"}]}
{"addr":"0xffe4be49","code":"int DebugPrint(int a1, const char *a2, ...)\n{\n int result; // eax\n int ( **v3)(int, const char *, char *); // esi\n va_list va; // [esp+10h] [ebp+Ch] BYREF\n\n va_start(va, a2);\n result = DebugGetDebugLib(); /*0xffe4be4a*/\n v3 = (int ( **)(int, const char *, char *))result; /*0xffe4be4f*/\n if ( result ) /*0xffe4be53*/\n {\n result = DebugGetDebugLevel(); /*0xffe4be55*/\n if ( (result & a1) != 0 ) /*0xffe4be60*/\n return (*v3)(a1, a2, (char *)va); /*0xffe4be6c*/\n }\n return result; /*0xffe4be71*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c521","name":"DebugGetDebugLevel"}]}
{"addr":"0xffe4be73","code":"int DebugAssert(\n int e:__hs__MdePkg__Library__PeiServicesTablePointerLibIdt__PeiServ,\n int n48,\n const char *PeiServices____((void__)_0))\n{\n int result; // eax\n\n result = DebugGetDebugLib(); /*0xffe4be79*/\n if ( result ) /*0xffe4be80*/\n return (*(int ( **)(int, int, const char *))(result + 4))( /*0xffe4be88*/\n e:__hs__MdePkg__Library__PeiServicesTablePointerLibIdt__PeiServ,\n n48,\n PeiServices____((void__)_0));\n return result; /*0xffe4be8e*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4bee1","code":"__int64 __thiscall BaseReadUnaligned64(void *this)\n{\n int DebugLib; // eax\n\n if ( !this ) /*0xffe4bee6*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bee8*/\n if ( DebugLib ) /*0xffe4beef*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bf00*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\",\n 192,\n \"Buffer != ((void *) 0)\");\n }\n return *(_QWORD *)this; /*0xffe4bf0b*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4bf0d","code":"int BaseWriteUnaligned64(int Unaligned64, int a2)\n{\n _DWORD *v2; // ecx\n _DWORD *v3; // esi\n int DebugLib; // eax\n\n v3 = v2; /*0xffe4bf0e*/\n if ( !v2 ) /*0xffe4bf12*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bf14*/\n if ( DebugLib ) /*0xffe4bf1b*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bf2c*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\",\n 219,\n \"Buffer != ((void *) 0)\");\n }\n *v3 = Unaligned64; /*0xffe4bf3a*/\n v3[1] = a2; /*0xffe4bf3c*/\n return Unaligned64; /*0xffe4bf3f*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4bf41","code":"unsigned int __thiscall BaseAsciiStrLen(_BYTE *this)\n{\n _BYTE *this_1; // esi\n int DebugLib; // eax\n unsigned int n0xF4240; // edi\n int v4; // eax\n\n this_1 = this; /*0xffe4bf43*/\n if ( !this ) /*0xffe4bf4d*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bf4f*/\n if ( DebugLib ) /*0xffe4bf56*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4bf63*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\String.c\",\n 1082,\n \"String != ((void *) 0)\");\n }\n n0xF4240 = 0; /*0xffe4bf69*/\n while ( *this_1 ) /*0xffe4bf94*/\n {\n if ( n0xF4240 >= 0xF4240 ) /*0xffe4bf73*/\n {\n v4 = DebugGetDebugLib(); /*0xffe4bf75*/\n if ( v4 ) /*0xffe4bf7c*/\n (*(void ( **)(const char *, int, const char *))(v4 + 4))( /*0xffe4bf89*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\String.c\",\n 1090,\n \"Length < _gPcd_FixedAtBuild_PcdMaximumAsciiStringLength\");\n }\n ++this_1; /*0xffe4bf8f*/\n ++n0xF4240; /*0xffe4bf90*/\n }\n return n0xF4240; /*0xffe4bf98*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4bf9c","code":"char InternalSafeStringNoOverlap(unsigned int CopyPool, int n0xF4240, unsigned int CopyPoola, int a4)\n{\n if ( CopyPoola > CopyPool ) /*0xffe4bfa3*/\n goto LABEL_4; /*0xffe4bfa3*/\n if ( CopyPool < CopyPoola + a4 ) /*0xffe4bfad*/\n return 1; /*0xffe4bfbd*/\n if ( CopyPoola >= CopyPool ) /*0xffe4bfb1*/\n {\nLABEL_4:\n if ( CopyPoola < CopyPool + n0xF4240 ) /*0xffe4bfb8*/\n return 1; /*0xffe4bfb8*/\n }\n return 0; /*0xffe4bfbc*/\n}"}
{"addr":"0xffe4bfc2","code":"unsigned int BaseAsciiStrnLenS(_BYTE *CopyPool, int n0xF4240)\n{\n unsigned int result; // eax\n\n if ( !CopyPool || !n0xF4240 ) /*0xffe4bfc9*/\n return 0; /*0xffe4bfe5*/\n result = 0; /*0xffe4bfcb*/\n if ( *CopyPool ) /*0xffe4bfcd*/\n {\n while ( result < n0xF4240 - 1 ) /*0xffe4bfd6*/\n {\n if ( !CopyPool[++result] ) /*0xffe4bfd9*/\n return result; /*0xffe4bfdd*/\n }\n return n0xF4240; /*0xffe4bfe1*/\n }\n return result; /*0xffe4bfdf*/\n}"}
{"addr":"0xffe4bfe9","code":"int BaseAsciiStrCpyS(_BYTE *CopyPool, unsigned int n0xF4240, _BYTE *CopyPoola)\n{\n unsigned int v5; // ebp\n int v6; // edx\n int n0xF4240_1; // edx\n int DebugLib; // eax\n _BYTE *CopyPoola_1; // edi\n int v11; // eax\n int v12; // eax\n int v13; // eax\n int v14; // eax\n unsigned int v15; // eax\n unsigned int v16; // edx\n int v17; // eax\n int v19; // eax\n _BYTE *v20; // esi\n\n v5 = BaseAsciiStrnLenS(CopyPool, n0xF4240); /*0xffe4bff5*/\n n0xF4240_1 = v6 - v5; /*0xffe4bff7*/\n if ( !CopyPool ) /*0xffe4bffb*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4bffd*/\n if ( DebugLib ) /*0xffe4c004*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4c015*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\SafeString.c\",\n 1996,\n \"(Destination != ((void *) 0))\");\n return -2147483646; /*0xffe4c020*/\n }\n CopyPoola_1 = CopyPoola; /*0xffe4c026*/\n if ( !CopyPoola ) /*0xffe4c02c*/\n {\n v11 = DebugGetDebugLib(); /*0xffe4c02e*/\n if ( v11 ) /*0xffe4c035*/\n (*(void ( **)(const char *, int, const char *))(v11 + 4))( /*0xffe4c041*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\SafeString.c\",\n 1997,\n \"(Source != ((void *) 0))\");\n return -2147483646; /*0xffe4c087*/\n }\n if ( n0xF4240 > 0xF4240 ) /*0xffe4c049*/\n {\n v12 = DebugGetDebugLib(); /*0xffe4c04b*/\n if ( v12 ) /*0xffe4c052*/\n (*(void ( **)(const char *, int, const char *))(v12 + 4))( /*0xffe4c05e*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\SafeString.c\",\n 2003,\n \"(DestMax <= (_gPcd_FixedAtBuild_PcdMaximumAsciiStringLength))\");\n return -2147483646; /*0xffe4c05e*/\n }\n if ( !n0xF4240 ) /*0xffe4c062*/\n {\n v13 = DebugGetDebugLib(); /*0xffe4c064*/\n if ( v13 ) /*0xffe4c06b*/\n (*(void ( **)(const char *, int, const char *))(v13 + 4))( /*0xffe4c07c*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\SafeString.c\",\n 2009,\n \"(DestMax != 0)\");\n return -2147483646; /*0xffe4c07c*/\n }\n if ( n0xF4240_1 ) /*0xffe4c08e*/\n {\n v15 = BaseAsciiStrnLenS(CopyPoola, n0xF4240_1); /*0xffe4c0ba*/\n if ( v16 > v15 ) /*0xffe4c0c1*/\n {\n if ( InternalSafeStringNoOverlap((unsigned int)CopyPool, n0xF4240, (unsigned int)CopyPoola, v15 + 1) ) /*0xffe4c0ef*/\n {\n v19 = DebugGetDebugLib(); /*0xffe4c0fd*/\n if ( v19 ) /*0xffe4c104*/\n (*(void ( **)(const char *, int, const char *))(v19 + 4))( /*0xffe4c115*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\SafeString.c\",\n 2025,\n \"InternalSafeStringNoAsciiStrOverlap (Destination, DestMax, (CHAR8 *)Source, SourceLen + 1)\");\n return -2147483633; /*0xffe4c11f*/\n }\n else\n {\n v20 = &CopyPool[v5]; /*0xffe4c126*/\n while ( *CopyPoola_1 ) /*0xffe4c132*/\n *v20++ = *CopyPoola_1++; /*0xffe4c12a*/\n *v20 = 0; /*0xffe4c134*/\n return 0; /*0xffe4c136*/\n }\n }\n else\n {\n v17 = DebugGetDebugLib(); /*0xffe4c0c3*/\n if ( v17 ) /*0xffe4c0ca*/\n (*(void ( **)(const char *, int, const char *))(v17 + 4))( /*0xffe4c0db*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\SafeString.c\",\n 2020,\n \"(CopyLen > SourceLen)\");\n return -2147483643; /*0xffe4c0e1*/\n }\n }\n else\n {\n v14 = DebugGetDebugLib(); /*0xffe4c090*/\n if ( v14 ) /*0xffe4c097*/\n (*(void ( **)(const char *, int, const char *))(v14 + 4))( /*0xffe4c0a8*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\SafeString.c\",\n 2014,\n \"(CopyLen != 0)\");\n return -2147483644; /*0xffe4c0ae*/\n }\n}","refs":[{"addr":"0xffe4bfc2","name":"BaseAsciiStrnLenS"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4bf9c","name":"InternalSafeStringNoOverlap"}]}
{"addr":"0xffe4c13d","code":"int HobGetHobList()\n{\n int PeiServicesTable; // eax\n int v1; // eax\n int DebugLib; // eax\n int v3; // eax\n int v5; // [esp+4h] [ebp-4h] BYREF\n\n PeiServicesTable = GetPeiServicesTable(); /*0xffe4c142*/\n v1 = (*(int ( **)(int, int *))(*(_DWORD *)PeiServicesTable + 48))(PeiServicesTable, &v5); /*0xffe4c14e*/\n if ( v1 < 0 ) /*0xffe4c15a*/\n {\n DebugPrint(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", v1); /*0xffe4c167*/\n DebugLib = DebugGetDebugLib(); /*0xffe4c16f*/\n if ( DebugLib ) /*0xffe4c176*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4c180*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiHobLib\\\\HobLib.c\",\n 50,\n \"!EFI_ERROR (Status)\");\n }\n if ( !v5 ) /*0xffe4c18a*/\n {\n v3 = DebugGetDebugLib(); /*0xffe4c18c*/\n if ( v3 ) /*0xffe4c193*/\n (*(void ( **)(const char *, int, const char *))(v3 + 4))( /*0xffe4c19d*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiHobLib\\\\HobLib.c\",\n 51,\n \"HobList != ((void *) 0)\");\n }\n return v5; /*0xffe4c1a6*/\n}","refs":[{"addr":"0xffe4c4ef","name":"GetPeiServicesTable"},{"addr":"0xffe4be49","name":"DebugPrint"},{"addr":"0xffe4c598","name":"aAssertEfiError","string":"\nASSERT_EFI_ERROR (Status = %r)\n"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c5bc","name":"aEfiErrorStatus","string":"!EFI_ERROR (Status)"}]}
{"addr":"0xffe4c1ab","code":"_WORD *HobGetNextHob(int a1, _WORD *i)\n{\n _WORD *i_1; // esi\n int DebugLib; // eax\n\n i_1 = i; /*0xffe4c1ac*/\n if ( !i ) /*0xffe4c1b0*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4c1b2*/\n if ( DebugLib ) /*0xffe4c1b9*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4c1c7*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiHobLib\\\\HobLib.c\",\n 82,\n \"HobStart != ((void *) 0)\");\n }\n while ( 1 ) /*0xffe4c1e0*/\n {\n if ( *i_1 == 0xFFFF ) /*0xffe4c1e6*/\n return 0; /*0xffe4c1eb*/\n if ( *i_1 == 4 ) /*0xffe4c1d8*/\n break; /*0xffe4c1d8*/\n i_1 = (_WORD *)((char *)i_1 + (unsigned __int16)i_1[1]); /*0xffe4c1de*/\n }\n return i_1; /*0xffe4c1ea*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4c1f0","code":"_WORD *__thiscall HobGetNextGuidHob(void *this)\n{\n _WORD *i; // edx\n int v3; // ecx\n _WORD *NextHob; // eax\n _WORD *NextHob_1; // esi\n\n for ( i = (_WORD *)HobGetHobList(); ; i = (_WORD *)((char *)NextHob_1 + (unsigned __int16)NextHob_1[1]) ) /*0xffe4c1ff*/\n {\n NextHob = HobGetNextHob(v3, i); /*0xffe4c217*/\n NextHob_1 = NextHob; /*0xffe4c21c*/\n if ( !NextHob || CompareGuid((int)this, (int)(NextHob + 4)) ) /*0xffe4c208*/\n break; /*0xffe4c208*/\n }\n return NextHob_1; /*0xffe4c222*/\n}","refs":[{"addr":"0xffe4c13d","name":"HobGetHobList"},{"addr":"0xffe4c1ab","name":"HobGetNextHob"},{"addr":"0xffe4c315","name":"CompareGuid"}]}
{"addr":"0xffe4c22a","code":"int HobGetFirstGuidHob(int a1, int a2)\n{\n int PeiServicesTable; // eax\n int DebugLib; // eax\n int v6; // [esp+4h] [ebp-4h] BYREF\n\n PeiServicesTable = GetPeiServicesTable(); /*0xffe4c231*/\n if ( (*(int ( **)(int, int, int, int *))(*(_DWORD *)PeiServicesTable + 52))(PeiServicesTable, 4, a2, &v6) < 0 ) /*0xffe4c249*/\n v6 = 0; /*0xffe4c24b*/\n if ( !v6 ) /*0xffe4c253*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4c255*/\n if ( DebugLib ) /*0xffe4c25c*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4c26d*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiHobLib\\\\HobLib.c\",\n 250,\n \"Hob != ((void *) 0)\");\n }\n return v6; /*0xffe4c246*/\n}","refs":[{"addr":"0xffe4c4ef","name":"GetPeiServicesTable"},{"addr":"0xffe4be18","name":"DebugGetDebugLib"}]}
{"addr":"0xffe4c27a","code":"int HobBuildGuidHob(int a1, unsigned int n0xFFE0)\n{\n int DebugLib; // eax\n int v5; // eax\n int result; // eax\n int v7; // esi\n\n if ( !a1 ) /*0xffe4c288*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4c28a*/\n if ( DebugLib ) /*0xffe4c291*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4c29e*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiHobLib\\\\HobLib.c\",\n 416,\n \"Guid != ((void *) 0)\");\n }\n if ( n0xFFE0 > 0xFFE0 ) /*0xffe4c2aa*/\n {\n v5 = DebugGetDebugLib(); /*0xffe4c2ac*/\n if ( v5 ) /*0xffe4c2b3*/\n (*(void ( **)(const char *, int, const char *))(v5 + 4))( /*0xffe4c2c0*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiHobLib\\\\HobLib.c\",\n 421,\n \"DataLength <= (0xFFF8 - sizeof (EFI_HOB_GUID_TYPE))\");\n }\n result = HobGetFirstGuidHob(a1, n0xFFE0 + 24); /*0xffe4c2c9*/\n v7 = result; /*0xffe4c2ce*/\n if ( result ) /*0xffe4c2d2*/\n {\n HobCopyGuid(result + 8, a1); /*0xffe4c2d9*/\n return v7 + 24; /*0xffe4c2de*/\n }\n return result; /*0xffe4c2e1*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c22a","name":"HobGetFirstGuidHob"},{"addr":"0xffe4c2e5","name":"HobCopyGuid"}]}
{"addr":"0xffe4c2e5","code":"int HobCopyGuid(int a1, int a2)\n{\n __int64 Unaligned64; // rax\n __int64 Unaligned64_1; // rax\n\n Unaligned64 = BaseReadUnaligned64((void *)a2); /*0xffe4c2ed*/\n BaseWriteUnaligned64(Unaligned64, SHIDWORD(Unaligned64)); /*0xffe4c2f6*/\n Unaligned64_1 = BaseReadUnaligned64((void *)(a2 + 8)); /*0xffe4c2fe*/\n BaseWriteUnaligned64(Unaligned64_1, SHIDWORD(Unaligned64_1)); /*0xffe4c308*/\n return a1; /*0xffe4c312*/\n}","refs":[{"addr":"0xffe4bee1","name":"BaseReadUnaligned64"},{"addr":"0xffe4bf0d","name":"BaseWriteUnaligned64"}]}
{"addr":"0xffe4c315","code":"bool CompareGuid(int this, int a2)\n{\n __int64 Unaligned64; // rax\n int Unaligned64_1; // ebp\n __int64 Unaligned64_3; // rax\n int Unaligned64_2; // edi\n __int64 v8; // kr00_8\n __int64 v9; // rax\n int v11; // [esp+10h] [ebp-Ch]\n int v12; // [esp+14h] [ebp-8h]\n\n Unaligned64 = BaseReadUnaligned64((void *)this); /*0xffe4c320*/\n v12 = HIDWORD(Unaligned64); /*0xffe4c327*/\n Unaligned64_1 = Unaligned64; /*0xffe4c32b*/\n Unaligned64_3 = BaseReadUnaligned64((void *)a2); /*0xffe4c32d*/\n v11 = HIDWORD(Unaligned64_3); /*0xffe4c335*/\n Unaligned64_2 = Unaligned64_3; /*0xffe4c339*/\n v8 = BaseReadUnaligned64((void *)(this + 8)); /*0xffe4c347*/\n v9 = BaseReadUnaligned64((void *)(a2 + 8)); /*0xffe4c349*/\n return Unaligned64_1 == Unaligned64_2 && v12 == v11 && v8 == v9; /*0xffe4c36c*/\n}","refs":[{"addr":"0xffe4bee1","name":"BaseReadUnaligned64"}]}
{"addr":"0xffe4c374","code":"unsigned int ScanGuid(unsigned int ExMapTable, unsigned int a2, int TokenSpaceGuid)\n{\n unsigned int ExMapTable_1; // eax\n int DebugLib; // eax\n int v6; // eax\n int v7; // eax\n unsigned int ExMapTable_2; // esi\n\n ExMapTable_1 = ExMapTable; /*0xffe4c37c*/\n if ( (ExMapTable & 3) != 0 ) /*0xffe4c38d*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4c38f*/\n if ( DebugLib ) /*0xffe4c396*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4c3a3*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\MemLibGuid.c\",\n 129,\n \"((UINTN)Buffer & (sizeof (Guid->Data1) - 1)) == 0\");\n ExMapTable_1 = ExMapTable; /*0xffe4c3a9*/\n }\n if ( a2 > -ExMapTable_1 ) /*0xffe4c3b1*/\n {\n v6 = DebugGetDebugLib(); /*0xffe4c3b3*/\n if ( v6 ) /*0xffe4c3ba*/\n (*(void ( **)(const char *, int, const char *))(v6 + 4))( /*0xffe4c3c7*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\MemLibGuid.c\",\n 130,\n \"Length <= (0xFFFFFFFF - (UINTN)Buffer + 1)\");\n }\n if ( (a2 & 0xF) != 0 ) /*0xffe4c3d0*/\n {\n v7 = DebugGetDebugLib(); /*0xffe4c3d2*/\n if ( v7 ) /*0xffe4c3d9*/\n (*(void ( **)(const char *, int, const char *))(v7 + 4))( /*0xffe4c3e6*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\MemLibGuid.c\",\n 131,\n \"(Length & (sizeof (*GuidPtr) - 1)) == 0\");\n }\n ExMapTable_2 = ExMapTable; /*0xffe4c3f3*/\n if ( ExMapTable >= (a2 & 0xFFFFFFF0) + ExMapTable ) /*0xffe4c3fd*/\n return 0; /*0xffe4c416*/\n while ( !CompareGuid(ExMapTable_2, TokenSpaceGuid) ) /*0xffe4c40d*/\n {\n ExMapTable_2 += 16; /*0xffe4c40f*/\n if ( ExMapTable_2 >= (a2 & 0xFFFFFFF0) + ExMapTable ) /*0xffe4c414*/\n return 0; /*0xffe4c414*/\n }\n return ExMapTable_2; /*0xffe4c418*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4c315","name":"CompareGuid"}]}
{"addr":"0xffe4c423","code":"char *CopyMemWrapper(char *buf, char *DbBinary, unsigned int count)\n{\n char *buf_1; // eax\n int DebugLib; // eax\n int v7; // eax\n\n buf_1 = buf; /*0xffe4c42b*/\n if ( count ) /*0xffe4c432*/\n {\n if ( count - 1 > ~(unsigned int)buf ) /*0xffe4c43c*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4c43e*/\n if ( DebugLib ) /*0xffe4c445*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4c453*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\CopyMemWrapper.c\",\n 56,\n \"(Length - 1) <= (0xFFFFFFFF - (UINTN)DestinationBuffer)\");\n }\n if ( count - 1 > ~(unsigned int)DbBinary ) /*0xffe4c460*/\n {\n v7 = DebugGetDebugLib(); /*0xffe4c462*/\n if ( v7 ) /*0xffe4c469*/\n (*(void ( **)(const char *, int, const char *))(v7 + 4))( /*0xffe4c477*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\CopyMemWrapper.c\",\n 57,\n \"(Length - 1) <= (0xFFFFFFFF - (UINTN)SourceBuffer)\");\n }\n if ( buf == DbBinary ) /*0xffe4c47f*/\n return buf; /*0xffe4c481*/\n else\n return BaseCopyMem(buf, DbBinary, count); /*0xffe4c488*/\n }\n return buf_1; /*0xffe4c490*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4a6b8","name":"BaseCopyMem"}]}
{"addr":"0xffe4c494","code":"void *ZeroMemWrapper(int buf, unsigned int this)\n{\n int DebugLib; // eax\n int v6; // eax\n\n if ( !this ) /*0xffe4c49c*/\n return (void *)buf; /*0xffe4c49e*/\n if ( !buf ) /*0xffe4c4aa*/\n {\n DebugLib = DebugGetDebugLib(); /*0xffe4c4ac*/\n if ( DebugLib ) /*0xffe4c4b3*/\n (*(void ( **)(const char *, int, const char *))(DebugLib + 4))( /*0xffe4c4bd*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\ZeroMemWrapper.c\",\n 53,\n \"Buffer != ((void *) 0)\");\n }\n if ( this > -buf ) /*0xffe4c4c9*/\n {\n v6 = DebugGetDebugLib(); /*0xffe4c4cb*/\n if ( v6 ) /*0xffe4c4d2*/\n (*(void ( **)(const char *, int, const char *))(v6 + 4))( /*0xffe4c4dc*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseMemoryLibRepStr\\\\ZeroMemWrapper.c\",\n 54,\n \"Length <= (0xFFFFFFFF - (UINTN)Buffer + 1)\");\n }\n return BaseZeroMem((void *)buf, this); /*0xffe4c4ec*/\n}","refs":[{"addr":"0xffe4be18","name":"DebugGetDebugLib"},{"addr":"0xffe4a6f8","name":"BaseZeroMem"}]}
{"addr":"0xffe4c4ef","code":"int GetPeiServicesTable()\n{\n int v0; // esi\n _BYTE v2[8]; // [esp+4h] [ebp-8h] BYREF\n\n GetIdtr(v2); /*0xffe4c4f8*/\n v0 = *(_DWORD *)(*(_DWORD *)&v2[2] - 4); /*0xffe4c500*/\n if ( !v0 ) /*0xffe4c505*/\n DebugAssert( /*0xffe4c514*/\n (int)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiServicesTablePointerLibIdt\\\\PeiServicesTablePointer.c\",\n 48,\n \"PeiServices != ((void *) 0)\");\n return v0; /*0xffe4c51c*/\n}","refs":[{"addr":"0xffe4c570","name":"GetIdtr"},{"addr":"0xffe4be73","name":"DebugAssert"},{"addr":"0xffe4ce9c","name":"PeiServices____((void__)_0)","string":"PeiServices != ((void *) 0)"}]}
{"addr":"0xffe4c521","code":"int DebugGetDebugLevel()\n{\n unsigned __int8 v0; // al\n char n3; // al\n char n3_1; // cl\n\n v0 = __inbyte(0x70u); /*0xffe4c527*/\n __outbyte(0x70u, v0 & 0x80 | 0x4A); /*0xffe4c52c*/\n n3 = __inbyte(0x71u); /*0xffe4c533*/\n n3_1 = n3; /*0xffe4c534*/\n if ( (unsigned __int8)n3 <= 3u ) /*0xffe4c539*/\n {\nLABEL_4:\n if ( !n3_1 ) /*0xffe4c554*/\n return 0; /*0xffe4c554*/\n goto LABEL_5; /*0xffe4c554*/\n }\n n3_1 = n3; /*0xffe4c53b*/\n if ( !n3 ) /*0xffe4c543*/\n {\n n3_1 = MEMORY[0xFDAF0490] & 2 | 1; /*0xffe4c54f*/\n goto LABEL_4; /*0xffe4c54f*/\n }\nLABEL_5:\n if ( n3_1 != -1 )\n return n3_1 != 1 ? -2147483578 : -2147483644;\n return 0; /*0xffe4c56c*/\n}","refs":[{"addr":"0xffe4d254","name":"n3"}]}
{"addr":"0xffe4c570","code":"void *__thiscall GetIdtr(void *this)\n{\n void *this_1; // eax\n\n if ( !this ) /*0xffe4c576*/\n DebugAssert((int)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\X86ReadIdtr.c\", 37, \"Idtr != ((void *) 0)\"); /*0xffe4c585*/\n this_1 = this; /*0xffe4c58b*/\n __sidt(this); /*0xffe4c58e*/\n return this_1; /*0xffe4c592*/\n}","refs":[{"addr":"0xffe4be73","name":"DebugAssert"}]}