//
// AmiCpuPeiPreMem.efi - Full Decompilation
// Source: IDA Pro MCP port 13383
// Functions: 19
//
#include <Uefi.h>
#include <PiPei.h>
{"addr":"0xffe2f03c","code":"char *Internal_memmove(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; /*0xffe2f046*/\n if ( src < dst && &src[count - 1] >= dst ) /*0xffe2f054*/\n {\n src_1 = &src[count - 1]; /*0xffe2f068*/\n dst_1 = &dst[count - 1]; /*0xffe2f06a*/\n }\n else\n {\n count_1 = count & 3; /*0xffe2f058*/\n qmemcpy(dst, src, 4 * (count >> 2)); /*0xffe2f061*/\n src_1 = &src[4 * (count >> 2)]; /*0xffe2f061*/\n dst_1 = &dst[4 * (count >> 2)]; /*0xffe2f061*/\n }\n qmemcpy(dst_1, src_1, count_1); /*0xffe2f071*/\n return dst; /*0xffe2f078*/\n}"}
{"addr":"0xffe2f07c","code":"void *memset(void *buf, unsigned int count, char value)\n{\n memset(buf, value, count); /*0xffe2f089*/\n return buf; /*0xffe2f08f*/\n}"}
{"addr":"0xffe2f0bc","code":"int Internal_memset64(int a1, int a2, int a3, int a4)\n{\n do /*0xffe2f0d5*/\n {\n *(_DWORD *)(a1 + 8 *a2 - 8) = a3; /*0xffe2f0cd*/\n *(_DWORD *)(a1 + 8 *a2-- - 4) = a4; /*0xffe2f0d1*/\n }\n while ( a2 ); /*0xffe2f0d5*/\n return a1; /*0xffe2f0d9*/\n}"}
{"addr":"0xffe2f0dc","code":"void *memset32(void *buf, unsigned int count, int value)\n{\n memset32(buf, value, count); /*0xffe2f0e9*/\n return buf; /*0xffe2f0ef*/\n}"}
{"addr":"0xffe2f0f1","code":"// attributes: thunk\nEFI_STATUS ModuleEntryPoint(EFI_HANDLE ImageHandle, EFI_SYSTEM_TABLE *SystemTable)\n{\n void *v2; // ecx\n\n return ModuleEntryPoint_0(v2);\n}","refs":[{"addr":"0xffe2f2c4","name":"_ModuleEntryPoint_0"}]}
{"addr":"0xffe2f0f6","code":"int PeiFindFvByGuid(int FvBaseAddr, unsigned int *FvGuidValOut, int *SizeOutPtr)\n{\n unsigned int FvEnd; // ecx\n bool IsFvValid; // zf\n unsigned int FvStartOffTemp; // ebx\n int ExtHdrOff; // eax\n unsigned int FvStartOff; // ebx\n int FfsSize; // edi\n unsigned __int64 MsrValue; // rax\n int MsrHi; // edi\n int MsrLo; // esi\n __int64 Mask23; // rax\n int ApicClustId; // eax\n unsigned int CurFfsAddr; // edi\n unsigned int SectEntryAddr; // ebx\n int SectEntryCnt; // edx\n int SectSize2; // esi\n unsigned int DepCnt; // eax\n int DepExprAddr; // edi\n char DepExprIdx; // dl\n unsigned int NextSectAddr; // esi\n int *SizeOutPtrLoc; // eax\n unsigned __int8 ClustAffMask; // [esp+13h] [ebp-1Dh]\n int CpuidEaxVal; // [esp+14h] [ebp-1Ch] BYREF\n unsigned int FvEndSav; // [esp+18h] [ebp-18h]\n unsigned int SectSize; // [esp+1Ch] [ebp-14h]\n _DWORD TargetGuid[4]; // [esp+20h] [ebp-10h] BYREF\n\n TargetGuid[0] = 386434418; /*0xffe2f0fe*/\n TargetGuid[1] = 1156527999; /*0xffe2f109*/\n TargetGuid[2] = -1615835505; /*0xffe2f111*/\n TargetGuid[3] = 1889552127; /*0xffe2f11c*/\n FvEnd = *(_DWORD *)(FvBaseAddr + 32) + FvBaseAddr - 1; /*0xffe2f124*/\n IsFvValid = *(_DWORD *)(FvBaseAddr + 40) == 1213613663; /*0xffe2f127*/\n FvEndSav = FvEnd; /*0xffe2f12e*/\n if ( !IsFvValid ) /*0xffe2f132*/\n return -2147483634; /*0xffe2f132*/\n FvStartOffTemp = FvBaseAddr + *(unsigned __int16 *)(FvBaseAddr + 48); /*0xffe2f138*/\n if ( FvEnd <= FvStartOffTemp ) /*0xffe2f13c*/\n return -2147483634; /*0xffe2f13c*/\n ExtHdrOff = *(unsigned __int16 *)(FvBaseAddr + 52); /*0xffe2f13e*/\n if ( (_WORD)ExtHdrOff ) /*0xffe2f145*/\n FvStartOffTemp = FvBaseAddr + ExtHdrOff + *(_DWORD *)(FvBaseAddr + ExtHdrOff + 16); /*0xffe2f14c*/\n FvStartOff = (FvStartOffTemp + 7) & 0xFFFFFFF8; /*0xffe2f151*/\n if ( FvStartOff >= FvEnd ) /*0xffe2f156*/\n return -2147483634; /*0xffe2f156*/\n while ( 1 ) /*0xffe2f15f*/\n {\n FfsSize = *(_DWORD *)(FvStartOff + 20) & 0xFFFFFF; /*0xffe2f15f*/\n SectSize = FfsSize; /*0xffe2f167*/\n if ( CompareGuid(FvStartOff, (int)TargetGuid) ) /*0xffe2f16b*/\n break; /*0xffe2f16b*/\n if ( FfsSize + FvStartOff > FvStartOff ) /*0xffe2f179*/\n {\n FvStartOff = (FfsSize + FvStartOff + 7) & 0xFFFFFFF8; /*0xffe2f17e*/\n if ( FvStartOff < FvEndSav ) /*0xffe2f185*/\n continue; /*0xffe2f185*/\n }\n return -2147483634; /*0xffe2f185*/\n }\n if ( FvBaseAddr != -15663104 ) /*0xffe2f19a*/\n {\n *FvGuidValOut = FvStartOff + 24; /*0xffe2f2ae*/\n SizeOutPtrLoc = SizeOutPtr; /*0xffe2f2b1*/\n *SizeOutPtr = FfsSize; /*0xffe2f2b5*/\n goto LABEL_30; /*0xffe2f2b5*/\n }\n MsrValue = __readmsr(0x17u); /*0xffe2f1a5*/\n MsrHi = HIDWORD(MsrValue); /*0xffe2f1a9*/\n MsrLo = MsrValue; /*0xffe2f1ab*/\n Mask23 = GetMask23(); /*0xffe2f1ad*/\n ApicClustId = RShift18(MsrLo & (unsigned int)~(_DWORD)Mask23, MsrHi & (unsigned int)~HIDWORD(Mask23)); /*0xffe2f1bc*/\n CurFfsAddr = FvStartOff + SectSize; /*0xffe2f1ce*/\n ClustAffMask = 1 << ApicClustId; /*0xffe2f1d0*/\n FvEndSav = FvStartOff + SectSize; /*0xffe2f1d8*/\n CpuId(ApicClustId, &CpuidEaxVal); /*0xffe2f1dc*/\n SectEntryAddr = FvStartOff + 24; /*0xffe2f1e1*/\n if ( *(_DWORD *)SectEntryAddr != 1 ) /*0xffe2f1ea*/\n return -2147483634; /*0xffe2f193*/\n while ( 1 ) /*0xffe2f1ee*/\n {\n SectEntryCnt = *(_DWORD *)(SectEntryAddr + 28); /*0xffe2f1ee*/\n if ( SectEntryCnt ) /*0xffe2f1f3*/\n SectSize2 = *(_DWORD *)(SectEntryAddr + 32); /*0xffe2f1f5*/\n else\n SectSize2 = 2048; /*0xffe2f1fa*/\n if ( *(_DWORD *)(SectEntryAddr + 12) == CpuidEaxVal && (ClustAffMask & *(_BYTE *)(SectEntryAddr + 24)) != 0 ) /*0xffe2f20f*/\n {\n *FvGuidValOut = SectEntryAddr; /*0xffe2f28c*/\n FvGuidValOut[1] = 0; /*0xffe2f28f*/\n *SizeOutPtr = SectSize2; /*0xffe2f292*/\n SizeOutPtr[1] = 0; /*0xffe2f294*/\n return 0; /*0xffe2f299*/\n }\n if ( *(_DWORD *)(SectEntryAddr + 32) > (unsigned int)(SectEntryCnt + 48) ) /*0xffe2f217*/\n break; /*0xffe2f217*/\nLABEL_24:\n NextSectAddr = (SectSize2 + 15) & 0xFFFFFFF0; /*0xffe2f258*/\n if ( SectEntryAddr + (unsigned __int64)NextSectAddr < CurFfsAddr ) /*0xffe2f272*/\n {\n SectEntryAddr += NextSectAddr; /*0xffe2f278*/\n if ( *(_DWORD *)SectEntryAddr == 1 ) /*0xffe2f27d*/\n continue; /*0xffe2f27d*/\n }\n return -2147483634; /*0xffe2f27d*/\n }\n DepCnt = *(_DWORD *)(SectEntryCnt + SectEntryAddr + 48); /*0xffe2f219*/\n DepExprAddr = SectEntryCnt + SectEntryAddr + 68; /*0xffe2f220*/\n SectSize = DepCnt; /*0xffe2f222*/\n if ( DepCnt >= 0x14 ) /*0xffe2f229*/\n return -2147483634; /*0xffe2f229*/\n DepExprIdx = 0; /*0xffe2f22f*/\n if ( !DepCnt ) /*0xffe2f233*/\n {\nLABEL_23:\n CurFfsAddr = FvEndSav; /*0xffe2f254*/\n goto LABEL_24; /*0xffe2f254*/\n }\n while ( *(_DWORD *)DepExprAddr != CpuidEaxVal || (ClustAffMask & *(_BYTE *)(DepExprAddr + 4)) == 0 ) /*0xffe2f244*/\n {\n DepExprAddr += 12; /*0xffe2f246*/\n if ( (unsigned __int8)++DepExprIdx >= SectSize ) /*0xffe2f252*/\n goto LABEL_23; /*0xffe2f252*/\n }\n SizeOutPtrLoc = SizeOutPtr; /*0xffe2f29e*/\n *FvGuidValOut = SectEntryAddr; /*0xffe2f2a2*/\n *SizeOutPtr = SectSize2; /*0xffe2f2a5*/\nLABEL_30:\n SizeOutPtrLoc[1] = 0; /*0xffe2f2b7*/\n FvGuidValOut[1] = 0; /*0xffe2f2bc*/\n return 0; /*0xffe2f18c*/\n}","refs":[{"addr":"0xffe2f3ae","name":"CompareGuid"},{"addr":"0xffe2f4f9","name":"GetMask23"},{"addr":"0xffe2f52c","name":"RShift18"},{"addr":"0xffe2f486","name":"CpuId"}]}
{"addr":"0xffe2f2c4","code":"int __thiscall ModuleEntryPoint_0(void *this)\n{\n _DWORD *PcdPpiPtr; // eax\n _DWORD *PcdPpi2; // eax\n int FvStatus; // eax\n void *ThisPtr1; // ecx\n int FvStatus2; // eax\n void *PcdPpi2Ptr; // eax\n void *ThisPtr2; // ecx\n void *Status4; // eax\n void *ThisSave1; // [esp-4h] [ebp-14h]\n void *ThisSave2; // [esp-4h] [ebp-14h]\n void *ThisSave3; // [esp-4h] [ebp-14h]\n __int64 FvGuidVal; // [esp+0h] [ebp-10h] BYREF\n __int64 FvBaseVal; // [esp+8h] [ebp-8h] BYREF\n\n PcdPpiPtr = GetPcdPpi(this); /*0xffe2f2cd*/\n FvGuidVal = ((__int64 ( *)(int))PcdPpiPtr[4])(113); /*0xffe2f2d8*/\n PcdPpi2 = GetPcdPpi(ThisSave1); /*0xffe2f2df*/\n FvBaseVal = ((__int64 ( *)(int))PcdPpi2[4])(114); /*0xffe2f2e9*/\n if ( !FvBaseVal ) /*0xffe2f2f4*/\n {\n FvStatus = PeiFindFvByGuid(-15663104, (unsigned int *)&FvGuidVal, (int *)&FvBaseVal); /*0xffe2f304*/\n ThisPtr1 = ThisSave2; /*0xffe2f309*/\n if ( FvStatus >= 0 /*0xffe2f324*/\n || (FvStatus2 = PeiFindFvByGuid(-4194304, (unsigned int *)&FvGuidVal, (int *)&FvBaseVal),\n ThisPtr1 = ThisSave3,\n FvStatus2 >= 0) )\n {\n PcdPpi2Ptr = GetPcdPpi(ThisPtr1); /*0xffe2f326*/\n (*((void ( **)(int, _DWORD, _DWORD))PcdPpi2Ptr + 18))(113, FvGuidVal, HIDWORD(FvGuidVal)); /*0xffe2f335*/\n Status4 = GetPcdPpi(ThisPtr2); /*0xffe2f33b*/\n (*((void ( **)(int, _DWORD, _DWORD))Status4 + 18))(114, FvBaseVal, HIDWORD(FvBaseVal)); /*0xffe2f34a*/\n }\n }\n return 0; /*0xffe2f352*/\n}","refs":[{"addr":"0xffe2f356","name":"GetPcdPpi"},{"addr":"0xffe2f0f6","name":"PeiFindFvByGuid"}]}
{"addr":"0xffe2f356","code":"void *__thiscall GetPcdPpi(void *this)\n{\n int PeiServices; // eax\n int Status; // eax\n int DebugProtocol; // eax\n void *This; // [esp+0h] [ebp-4h]\n\n This = this; /*0xffe2f359*/\n PeiServices = GetPeiServicesTablePointer(); /*0xffe2f35a*/\n Status = (*(int (__stdcall **)(int))(*(_DWORD *)PeiServices + 32))(PeiServices); /*0xffe2f36f*/\n if ( Status < 0 ) /*0xffe2f377*/\n {\n DebugAssert(0x80000000, \"\\nASSERT_EFI_ERROR (Status = %r)\\n\", Status); /*0xffe2f384*/\n DebugProtocol = DebugPrint(); /*0xffe2f38c*/\n if ( DebugProtocol ) /*0xffe2f393*/\n (*(void ( **)(const char *, int, const char *))(DebugProtocol + 4))( /*0xffe2f3a1*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiPcdLib\\\\PeiPcdLib.c\",\n 49,\n \"!EFI_ERROR (Status)\");\n }\n return This; /*0xffe2f3ac*/\n}","refs":[{"addr":"0xffe2f553","name":"GetPeiServicesTablePointer"},{"addr":"0xffe2f43e","name":"DebugAssert"},{"addr":"0xffe2f5fc","name":"aAssertEfiError","string":"\nASSERT_EFI_ERROR (Status = %r)\n"},{"addr":"0xffe2f40d","name":"DebugPrint"},{"addr":"0xffe2f634","name":"aEHsMdepkgLibra","string":"e:\\hs\\MdePkg\\Library\\PeiPcdLib\\PeiPcdLib.c"},{"addr":"0xffe2f620","name":"aEfiErrorStatus","string":"!EFI_ERROR (Status)"}]}
{"addr":"0xffe2f3ae","code":"bool CompareGuid(int Guid1, int Guid2)\n{\n __int64 Guid1Low; // rax\n int Guid1Low32_; // ebp\n __int64 Guid2Low; // rax\n int Guid1Low32; // edi\n __int64 Guid1High; // kr00_8\n __int64 Guid2High; // rax\n int Guid2LowHigh; // [esp+10h] [ebp-Ch]\n int Guid1LowHigh; // [esp+14h] [ebp-8h]\n\n Guid1Low = ReadUnaligned64((void *)Guid1); /*0xffe2f3b9*/\n Guid1LowHigh = HIDWORD(Guid1Low); /*0xffe2f3c0*/\n Guid1Low32_ = Guid1Low; /*0xffe2f3c4*/\n Guid2Low = ReadUnaligned64((void *)Guid2); /*0xffe2f3c6*/\n Guid2LowHigh = HIDWORD(Guid2Low); /*0xffe2f3ce*/\n Guid1Low32 = Guid2Low; /*0xffe2f3d2*/\n Guid1High = ReadUnaligned64((void *)(Guid1 + 8)); /*0xffe2f3e0*/\n Guid2High = ReadUnaligned64((void *)(Guid2 + 8)); /*0xffe2f3e2*/\n return Guid1Low32_ == Guid1Low32 && Guid1LowHigh == Guid2LowHigh && Guid1High == Guid2High; /*0xffe2f405*/\n}","refs":[{"addr":"0xffe2f4cd","name":"ReadUnaligned64"}]}
{"addr":"0xffe2f40d","code":"int DebugPrint()\n{\n int PeiServices; // eax\n int InterfacePtr; // [esp+0h] [ebp-8h] BYREF\n int DebugProtocol; // [esp+4h] [ebp-4h] BYREF\n\n PeiServices = GetPeiServicesTablePointer(); /*0xffe2f412*/\n if ( (*(int ( **)(int, void *, _DWORD, int *, int *))(*(_DWORD *)PeiServices + 32))( /*0xffe2f431*/\n PeiServices,\n &unk_FFE2F8BC,\n 0,\n &InterfacePtr,\n &DebugProtocol) >= 0 )\n return DebugProtocol; /*0xffe2f437*/\n else\n return 0; /*0xffe2f433*/\n}","refs":[{"addr":"0xffe2f553","name":"GetPeiServicesTablePointer"},{"addr":"0xffe2f8bc","name":"unk_FFE2F8BC"}]}
{"addr":"0xffe2f43e","code":"int DebugAssert(int a1, const char *_nASSERT_EFI_ERROR_(Status___%r)_n, ...)\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, _nASSERT_EFI_ERROR_(Status___%r)_n);\n result = DebugPrint(); /*0xffe2f43f*/\n v3 = (int ( **)(int, const char *, char *))result; /*0xffe2f444*/\n if ( result ) /*0xffe2f448*/\n {\n result = GetBootModeFromCmos(); /*0xffe2f44a*/\n if ( (result & a1) != 0 ) /*0xffe2f455*/\n return (*v3)(a1, _nASSERT_EFI_ERROR_(Status___%r)_n, (char *)va); /*0xffe2f461*/\n }\n return result; /*0xffe2f466*/\n}","refs":[{"addr":"0xffe2f40d","name":"DebugPrint"},{"addr":"0xffe2f585","name":"GetBootModeFromCmos"}]}
{"addr":"0xffe2f468","code":"int DebugAssertWithFunc(\n int e:__hs__MdePkg__Library__PeiServicesTablePointerLibIdt__PeiServ,\n int n48,\n int PeiServices____((void__)_0))\n{\n int result; // eax\n\n result = DebugPrint(); /*0xffe2f46e*/\n if ( result ) /*0xffe2f475*/\n return (*(int ( **)(int, int, int))(result + 4))( /*0xffe2f47d*/\n e:__hs__MdePkg__Library__PeiServicesTablePointerLibIdt__PeiServ,\n n48,\n PeiServices____((void__)_0));\n return result; /*0xffe2f483*/\n}","refs":[{"addr":"0xffe2f40d","name":"DebugPrint"}]}
{"addr":"0xffe2f486","code":"int CpuId(int ApicClustId, _DWORD *CpuidEaxOut)\n{\n _EAX = 1; /*0xffe2f4a2*/\n __asm { cpuid } /*0xffe2f4a5*/\n if ( CpuidEaxOut ) /*0xffe2f4ab*/\n *CpuidEaxOut = _EAX; /*0xffe2f4ad*/\n return 1; /*0xffe2f4c8*/\n}"}
{"addr":"0xffe2f4cd","code":"__int64 __thiscall ReadUnaligned64(void *this)\n{\n int v2; // eax\n\n if ( !this ) /*0xffe2f4d2*/\n {\n v2 = DebugPrint(); /*0xffe2f4d4*/\n if ( v2 ) /*0xffe2f4db*/\n (*(void ( **)(const char *, int, const char *))(v2 + 4))( /*0xffe2f4ec*/\n \"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\Unaligned.c\",\n 192,\n \"Buffer != ((void *) 0)\");\n }\n return *(_QWORD *)this; /*0xffe2f4f7*/\n}","refs":[{"addr":"0xffe2f40d","name":"DebugPrint"},{"addr":"0xffe2f678","name":"aEHsMdepkgLibra_0","string":"e:\\hs\\MdePkg\\Library\\BaseLib\\Unaligned.c"},{"addr":"0xffe2f660","name":"aBufferVoid0","string":"Buffer != ((void *) 0)"}]}
{"addr":"0xffe2f4f9","code":"__int64 GetMask23()\n{\n return 0xFFE0000000000000uLL; /*0xffe2f528*/\n}"}
{"addr":"0xffe2f52c","code":"unsigned __int64 RShift18(int a1, unsigned int a2)\n{\n return (unsigned __int64)a2 >> 18; /*0xffe2f54f*/\n}"}
{"addr":"0xffe2f553","code":"int GetPeiServicesTablePointer()\n{\n int PeiServices; // esi\n _BYTE IdtrBuf[2]; // [esp+4h] [ebp-8h] BYREF\n int IdtBase; // [esp+6h] [ebp-6h]\n\n ReadIdtr(IdtrBuf); /*0xffe2f55c*/\n PeiServices = *(_DWORD *)(IdtBase - 4); /*0xffe2f564*/\n if ( !PeiServices ) /*0xffe2f569*/\n DebugAssertWithFunc( /*0xffe2f578*/\n (int)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\PeiServicesTablePointerLibIdt\\\\PeiServicesTablePointer.c\",\n 48,\n (int)\"PeiServices != ((void *) 0)\");\n return PeiServices; /*0xffe2f580*/\n}","refs":[{"addr":"0xffe2f5d4","name":"ReadIdtr"},{"addr":"0xffe2f468","name":"DebugAssertWithFunc"},{"addr":"0xffe2f6c4","name":"aEHsMdepkgLibra_1","string":"e:\\hs\\MdePkg\\Library\\PeiServicesTablePointerLibIdt\\PeiServicesTablePointer.c"},{"addr":"0xffe2f6a4","name":"aPeiservicesVoi","string":"PeiServices != ((void *) 0)"}]}
{"addr":"0xffe2f585","code":"int GetBootModeFromCmos()\n{\n unsigned __int8 CmosReg; // al\n char BootModeRaw; // al\n char BootMode; // cl\n\n CmosReg = __inbyte(0x70u); /*0xffe2f58b*/\n __outbyte(0x70u, CmosReg & 0x80 | 0x4A); /*0xffe2f590*/\n BootModeRaw = __inbyte(0x71u); /*0xffe2f597*/\n BootMode = BootModeRaw; /*0xffe2f598*/\n if ( (unsigned __int8)BootModeRaw <= 3u ) /*0xffe2f59d*/\n {\nLABEL_4:\n if ( !BootMode ) /*0xffe2f5b8*/\n return 0; /*0xffe2f5b8*/\n goto LABEL_5; /*0xffe2f5b8*/\n }\n BootMode = n3; /*0xffe2f59f*/\n if ( !n3 ) /*0xffe2f5a7*/\n {\n BootMode = MEMORY[0xFDAF0490] & 2 | 1; /*0xffe2f5b3*/\n goto LABEL_4; /*0xffe2f5b3*/\n }\nLABEL_5:\n if ( BootMode != -1 )\n return BootMode != 1 ? -2147483578 : -2147483644;\n return 0; /*0xffe2f5d0*/\n}","refs":[{"addr":"0xffe2f8dc","name":"CmosBootModeReg"}]}
{"addr":"0xffe2f5d4","code":"void *__thiscall ReadIdtr(void *this)\n{\n void *this_1; // eax\n\n if ( !this ) /*0xffe2f5da*/\n DebugAssertWithFunc((int)\"e:\\\\hs\\\\MdePkg\\\\Library\\\\BaseLib\\\\X86ReadIdtr.c\", 37, (int)\"Idtr != ((void *) 0)\"); /*0xffe2f5e9*/\n this_1 = this; /*0xffe2f5ef*/\n __sidt(this); /*0xffe2f5f2*/\n return this_1; /*0xffe2f5f6*/\n}","refs":[{"addr":"0xffe2f468","name":"DebugAssertWithFunc"},{"addr":"0xffe2f72c","name":"aEHsMdepkgLibra_2","string":"e:\\hs\\MdePkg\\Library\\BaseLib\\X86ReadIdtr.c"},{"addr":"0xffe2f714","name":"aIdtrVoid0","string":"Idtr != ((void *) 0)"}]}