]> git.proxmox.com Git - mirror_edk2.git/commitdiff
UefiCpuPkg: Apply uncrustify changes
authorMichael Kubacki <michael.kubacki@microsoft.com>
Sun, 5 Dec 2021 22:54:17 +0000 (14:54 -0800)
committermergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Tue, 7 Dec 2021 17:24:28 +0000 (17:24 +0000)
REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3737

Apply uncrustify changes to .c/.h files in the UefiCpuPkg package

Cc: Andrew Fish <afish@apple.com>
Cc: Leif Lindholm <leif@nuviainc.com>
Cc: Michael D Kinney <michael.d.kinney@intel.com>
Signed-off-by: Michael Kubacki <michael.kubacki@microsoft.com>
Reviewed-by: Ray Ni <ray.ni@intel.com>
143 files changed:
UefiCpuPkg/Application/Cpuid/Cpuid.c
UefiCpuPkg/CpuDxe/CpuDxe.c
UefiCpuPkg/CpuDxe/CpuDxe.h
UefiCpuPkg/CpuDxe/CpuGdt.c
UefiCpuPkg/CpuDxe/CpuGdt.h
UefiCpuPkg/CpuDxe/CpuMp.c
UefiCpuPkg/CpuDxe/CpuMp.h
UefiCpuPkg/CpuDxe/CpuPageTable.c
UefiCpuPkg/CpuDxe/CpuPageTable.h
UefiCpuPkg/CpuDxe/Ia32/PagingAttribute.c
UefiCpuPkg/CpuDxe/X64/PagingAttribute.c
UefiCpuPkg/CpuFeatures/CpuFeaturesDxe.c
UefiCpuPkg/CpuFeatures/CpuFeaturesPei.c
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.c
UefiCpuPkg/CpuIo2Dxe/CpuIo2Dxe.h
UefiCpuPkg/CpuIo2Smm/CpuIo2Mm.c
UefiCpuPkg/CpuIo2Smm/CpuIo2Mm.h
UefiCpuPkg/CpuIoPei/CpuIoPei.c
UefiCpuPkg/CpuIoPei/CpuIoPei.h
UefiCpuPkg/CpuMpPei/CpuBist.c
UefiCpuPkg/CpuMpPei/CpuMp2Pei.c
UefiCpuPkg/CpuMpPei/CpuMpPei.c
UefiCpuPkg/CpuMpPei/CpuMpPei.h
UefiCpuPkg/CpuMpPei/CpuPaging.c
UefiCpuPkg/CpuS3DataDxe/CpuS3Data.c
UefiCpuPkg/Include/AcpiCpuData.h
UefiCpuPkg/Include/CpuHotPlugData.h
UefiCpuPkg/Include/Guid/CpuFeaturesInitDone.h
UefiCpuPkg/Include/Guid/CpuFeaturesSetDone.h
UefiCpuPkg/Include/Guid/MicrocodePatchHob.h
UefiCpuPkg/Include/Guid/MsegSmram.h
UefiCpuPkg/Include/Library/CpuCacheInfoLib.h
UefiCpuPkg/Include/Library/LocalApicLib.h
UefiCpuPkg/Include/Library/MicrocodeLib.h
UefiCpuPkg/Include/Library/MpInitLib.h
UefiCpuPkg/Include/Library/MtrrLib.h
UefiCpuPkg/Include/Library/PlatformSecLib.h
UefiCpuPkg/Include/Library/RegisterCpuFeaturesLib.h
UefiCpuPkg/Include/Library/SmmCpuFeaturesLib.h
UefiCpuPkg/Include/Library/SmmCpuPlatformHookLib.h
UefiCpuPkg/Include/Library/UefiCpuLib.h
UefiCpuPkg/Include/Library/VmgExitLib.h
UefiCpuPkg/Include/Ppi/MpServices2.h
UefiCpuPkg/Include/Ppi/RepublishSecPpi.h
UefiCpuPkg/Include/Ppi/ShadowMicrocode.h
UefiCpuPkg/Include/Protocol/SmMonitorInit.h
UefiCpuPkg/Include/Protocol/SmmCpuService.h
UefiCpuPkg/Include/Register/LocalApic.h
UefiCpuPkg/Library/BaseUefiCpuLib/BaseUefiCpuLib.c
UefiCpuPkg/Library/BaseXApicLib/BaseXApicLib.c
UefiCpuPkg/Library/BaseXApicX2ApicLib/BaseXApicX2ApicLib.c
UefiCpuPkg/Library/CpuCacheInfoLib/CpuCacheInfoLib.c
UefiCpuPkg/Library/CpuCacheInfoLib/DxeCpuCacheInfoLib.c
UefiCpuPkg/Library/CpuCacheInfoLib/InternalCpuCacheInfoLib.h
UefiCpuPkg/Library/CpuCacheInfoLib/PeiCpuCacheInfoLib.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/Aesni.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/C1e.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/ClockModulation.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeatures.h
UefiCpuPkg/Library/CpuCommonFeaturesLib/CpuCommonFeaturesLib.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/Eist.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/FastStrings.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/FeatureControl.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/LimitCpuIdMaxval.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/MachineCheck.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/MonitorMwait.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/PendingBreak.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/Ppin.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/ProcTrace.c
UefiCpuPkg/Library/CpuCommonFeaturesLib/X2Apic.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/CpuExceptionCommon.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/CpuExceptionCommon.h
UefiCpuPkg/Library/CpuExceptionHandlerLib/DxeException.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/Ia32/ArchExceptionHandler.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/Ia32/ArchInterruptDefs.h
UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiCpuException.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/PeiDxeSmmCpuException.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/SecPeiCpuException.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/SmmException.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ArchExceptionHandler.c
UefiCpuPkg/Library/CpuExceptionHandlerLib/X64/ArchInterruptDefs.h
UefiCpuPkg/Library/CpuTimerLib/BaseCpuTimerLib.c
UefiCpuPkg/Library/CpuTimerLib/CpuTimerLib.c
UefiCpuPkg/Library/MicrocodeLib/MicrocodeLib.c
UefiCpuPkg/Library/MpInitLib/DxeMpLib.c
UefiCpuPkg/Library/MpInitLib/Microcode.c
UefiCpuPkg/Library/MpInitLib/MpLib.c
UefiCpuPkg/Library/MpInitLib/MpLib.h
UefiCpuPkg/Library/MpInitLib/PeiMpLib.c
UefiCpuPkg/Library/MpInitLibUp/MpInitLibUp.c
UefiCpuPkg/Library/MtrrLib/MtrrLib.c
UefiCpuPkg/Library/MtrrLib/UnitTest/MtrrLibUnitTest.c
UefiCpuPkg/Library/MtrrLib/UnitTest/MtrrLibUnitTest.h
UefiCpuPkg/Library/MtrrLib/UnitTest/RandomNumber.c
UefiCpuPkg/Library/MtrrLib/UnitTest/Support.c
UefiCpuPkg/Library/PlatformSecLibNull/PlatformSecLibNull.c
UefiCpuPkg/Library/RegisterCpuFeaturesLib/CpuFeaturesInitialize.c
UefiCpuPkg/Library/RegisterCpuFeaturesLib/DxeRegisterCpuFeaturesLib.c
UefiCpuPkg/Library/RegisterCpuFeaturesLib/PeiRegisterCpuFeaturesLib.c
UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeatures.h
UefiCpuPkg/Library/RegisterCpuFeaturesLib/RegisterCpuFeaturesLib.c
UefiCpuPkg/Library/SecPeiDxeTimerLibUefiCpu/X86TimerLib.c
UefiCpuPkg/Library/SmmCpuFeaturesLib/Ia32/SmmStmSupport.c
UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmCpuFeaturesLibCommon.c
UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmStm.c
UefiCpuPkg/Library/SmmCpuFeaturesLib/SmmStm.h
UefiCpuPkg/Library/SmmCpuFeaturesLib/X64/SmmStmSupport.c
UefiCpuPkg/Library/SmmCpuPlatformHookLibNull/SmmCpuPlatformHookLibNull.c
UefiCpuPkg/Library/VmgExitLibNull/VmgExitLibNull.c
UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPei.c
UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationPrivate.h
UefiCpuPkg/PiSmmCommunication/PiSmmCommunicationSmm.c
UefiCpuPkg/PiSmmCpuDxeSmm/CpuS3.c
UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.c
UefiCpuPkg/PiSmmCpuDxeSmm/CpuService.h
UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/PageTbl.c
UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/Semaphore.c
UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmFuncsArch.c
UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.c
UefiCpuPkg/PiSmmCpuDxeSmm/Ia32/SmmProfileArch.h
UefiCpuPkg/PiSmmCpuDxeSmm/MpService.c
UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.c
UefiCpuPkg/PiSmmCpuDxeSmm/PiSmmCpuDxeSmm.h
UefiCpuPkg/PiSmmCpuDxeSmm/SmmCpuMemoryManagement.c
UefiCpuPkg/PiSmmCpuDxeSmm/SmmMp.c
UefiCpuPkg/PiSmmCpuDxeSmm/SmmMp.h
UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.c
UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfile.h
UefiCpuPkg/PiSmmCpuDxeSmm/SmmProfileInternal.h
UefiCpuPkg/PiSmmCpuDxeSmm/SmramSaveState.c
UefiCpuPkg/PiSmmCpuDxeSmm/SyncTimer.c
UefiCpuPkg/PiSmmCpuDxeSmm/X64/PageTbl.c
UefiCpuPkg/PiSmmCpuDxeSmm/X64/Semaphore.c
UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmFuncsArch.c
UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.c
UefiCpuPkg/PiSmmCpuDxeSmm/X64/SmmProfileArch.h
UefiCpuPkg/SecCore/FindPeiCore.c
UefiCpuPkg/SecCore/SecBist.c
UefiCpuPkg/SecCore/SecMain.c
UefiCpuPkg/SecCore/SecMain.h
UefiCpuPkg/SecMigrationPei/SecMigrationPei.c
UefiCpuPkg/SecMigrationPei/SecMigrationPei.h
UefiCpuPkg/Universal/Acpi/S3Resume2Pei/S3Resume.c

index cee64f2fb5fc17388341f91ff9f5b7d8d470acd9..372c6ef87d36e70c20541f55c837128e84f3204d 100644 (file)
 /// Structure for cache description lookup table\r
 ///\r
 typedef struct {\r
-  UINT8  CacheDescriptor;\r
-  CHAR8  *Type;\r
-  CHAR8  *Description;\r
+  UINT8    CacheDescriptor;\r
+  CHAR8    *Type;\r
+  CHAR8    *Description;\r
 } CPUID_CACHE_INFO_DESCRIPTION;\r
 \r
 ///\r
 /// Cache description lookup table\r
 ///\r
 CPUID_CACHE_INFO_DESCRIPTION  mCpuidCacheInfoDescription[] = {\r
-  { 0x00 , "General"  , "Null descriptor, this byte contains no information" },\r
-  { 0x01 , "TLB"      , "Instruction TLB: 4 KByte pages, 4-way set associative, 32 entries" },\r
-  { 0x02 , "TLB"      , "Instruction TLB: 4 MByte pages, fully associative, 2 entries" },\r
-  { 0x03 , "TLB"      , "Data TLB: 4 KByte pages, 4-way set associative, 64 entries" },\r
-  { 0x04 , "TLB"      , "Data TLB: 4 MByte pages, 4-way set associative, 8 entries" },\r
-  { 0x05 , "TLB"      , "Data TLB1: 4 MByte pages, 4-way set associative, 32 entries" },\r
-  { 0x06 , "Cache"    , "1st-level instruction cache: 8 KBytes, 4-way set associative, 32 byte line size" },\r
-  { 0x08 , "Cache"    , "1st-level instruction cache: 16 KBytes, 4-way set associative, 32 byte line size" },\r
-  { 0x09 , "Cache"    , "1st-level instruction cache: 32KBytes, 4-way set associative, 64 byte line size" },\r
-  { 0x0A , "Cache"    , "1st-level data cache: 8 KBytes, 2-way set associative, 32 byte line size" },\r
-  { 0x0B , "TLB"      , "Instruction TLB: 4 MByte pages, 4-way set associative, 4 entries" },\r
-  { 0x0C , "Cache"    , "1st-level data cache: 16 KBytes, 4-way set associative, 32 byte line size" },\r
-  { 0x0D , "Cache"    , "1st-level data cache: 16 KBytes, 4-way set associative, 64 byte line size" },\r
-  { 0x0E , "Cache"    , "1st-level data cache: 24 KBytes, 6-way set associative, 64 byte line size" },\r
-  { 0x1D , "Cache"    , "2nd-level cache: 128 KBytes, 2-way set associative, 64 byte line size" },\r
-  { 0x21 , "Cache"    , "2nd-level cache: 256 KBytes, 8-way set associative, 64 byte line size" },\r
-  { 0x22 , "Cache"    , "3rd-level cache: 512 KBytes, 4-way set associative, 64 byte line size, 2 lines per sector" },\r
-  { 0x23 , "Cache"    , "3rd-level cache: 1 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector" },\r
-  { 0x24 , "Cache"    , "2nd-level cache: 1 MBytes, 16-way set associative, 64 byte line size" },\r
-  { 0x25 , "Cache"    , "3rd-level cache: 2 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector" },\r
-  { 0x29 , "Cache"    , "3rd-level cache: 4 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector" },\r
-  { 0x2C , "Cache"    , "1st-level data cache: 32 KBytes, 8-way set associative, 64 byte line size" },\r
-  { 0x30 , "Cache"    , "1st-level instruction cache: 32 KBytes, 8-way set associative, 64 byte line size" },\r
-  { 0x40 , "Cache"    , "No 2nd-level cache or, if processor contains a valid 2nd-level cache, no 3rd-level cache" },\r
-  { 0x41 , "Cache"    , "2nd-level cache: 128 KBytes, 4-way set associative, 32 byte line size" },\r
-  { 0x42 , "Cache"    , "2nd-level cache: 256 KBytes, 4-way set associative, 32 byte line size" },\r
-  { 0x43 , "Cache"    , "2nd-level cache: 512 KBytes, 4-way set associative, 32 byte line size" },\r
-  { 0x44 , "Cache"    , "2nd-level cache: 1 MByte, 4-way set associative, 32 byte line size" },\r
-  { 0x45 , "Cache"    , "2nd-level cache: 2 MByte, 4-way set associative, 32 byte line size" },\r
-  { 0x46 , "Cache"    , "3rd-level cache: 4 MByte, 4-way set associative, 64 byte line size" },\r
-  { 0x47 , "Cache"    , "3rd-level cache: 8 MByte, 8-way set associative, 64 byte line size" },\r
-  { 0x48 , "Cache"    , "2nd-level cache: 3MByte, 12-way set associative, 64 byte line size" },\r
-  { 0x49 , "Cache"    , "3rd-level cache: 4MB, 16-way set associative, 64-byte line size (Intel Xeon processor MP, Family 0FH, Model 06H). 2nd-level cache: 4 MByte, 16-way set associative, 64 byte line size" },\r
-  { 0x4A , "Cache"    , "3rd-level cache: 6MByte, 12-way set associative, 64 byte line size" },\r
-  { 0x4B , "Cache"    , "3rd-level cache: 8MByte, 16-way set associative, 64 byte line size" },\r
-  { 0x4C , "Cache"    , "3rd-level cache: 12MByte, 12-way set associative, 64 byte line size" },\r
-  { 0x4D , "Cache"    , "3rd-level cache: 16MByte, 16-way set associative, 64 byte line size" },\r
-  { 0x4E , "Cache"    , "2nd-level cache: 6MByte, 24-way set associative, 64 byte line size" },\r
-  { 0x4F , "TLB"      , "Instruction TLB: 4 KByte pages, 32 entries" },\r
-  { 0x50 , "TLB"      , "Instruction TLB: 4 KByte and 2-MByte or 4-MByte pages, 64 entries" },\r
-  { 0x51 , "TLB"      , "Instruction TLB: 4 KByte and 2-MByte or 4-MByte pages, 128 entries" },\r
-  { 0x52 , "TLB"      , "Instruction TLB: 4 KByte and 2-MByte or 4-MByte pages, 256 entries" },\r
-  { 0x55 , "TLB"      , "Instruction TLB: 2-MByte or 4-MByte pages, fully associative, 7 entries" },\r
-  { 0x56 , "TLB"      , "Data TLB0: 4 MByte pages, 4-way set associative, 16 entries" },\r
-  { 0x57 , "TLB"      , "Data TLB0: 4 KByte pages, 4-way associative, 16 entries" },\r
-  { 0x59 , "TLB"      , "Data TLB0: 4 KByte pages, fully associative, 16 entries" },\r
-  { 0x5A , "TLB"      , "Data TLB0: 2 MByte or 4 MByte pages, 4-way set associative, 32 entries" },\r
-  { 0x5B , "TLB"      , "Data TLB: 4 KByte and 4 MByte pages, 64 entries" },\r
-  { 0x5C , "TLB"      , "Data TLB: 4 KByte and 4 MByte pages,128 entries" },\r
-  { 0x5D , "TLB"      , "Data TLB: 4 KByte and 4 MByte pages,256 entries" },\r
-  { 0x60 , "Cache"    , "1st-level data cache: 16 KByte, 8-way set associative, 64 byte line size" },\r
-  { 0x61 , "TLB"      , "Instruction TLB: 4 KByte pages, fully associative, 48 entries" },\r
-  { 0x63 , "TLB"      , "Data TLB: 2 MByte or 4 MByte pages, 4-way set associative, 32 entries and a separate array with 1 GByte pages, 4-way set associative, 4 entries" },\r
-  { 0x64 , "TLB"      , "Data TLB: 4 KByte pages, 4-way set associative, 512 entries" },\r
-  { 0x66 , "Cache"    , "1st-level data cache: 8 KByte, 4-way set associative, 64 byte line size" },\r
-  { 0x67 , "Cache"    , "1st-level data cache: 16 KByte, 4-way set associative, 64 byte line size" },\r
-  { 0x68 , "Cache"    , "1st-level data cache: 32 KByte, 4-way set associative, 64 byte line size" },\r
-  { 0x6A , "Cache"    , "uTLB: 4 KByte pages, 8-way set associative, 64 entries" },\r
-  { 0x6B , "Cache"    , "DTLB: 4 KByte pages, 8-way set associative, 256 entries" },\r
-  { 0x6C , "Cache"    , "DTLB: 2M/4M pages, 8-way set associative, 128 entries" },\r
-  { 0x6D , "Cache"    , "DTLB: 1 GByte pages, fully associative, 16 entries" },\r
-  { 0x70 , "Cache"    , "Trace cache: 12 K-uop, 8-way set associative" },\r
-  { 0x71 , "Cache"    , "Trace cache: 16 K-uop, 8-way set associative" },\r
-  { 0x72 , "Cache"    , "Trace cache: 32 K-uop, 8-way set associative" },\r
-  { 0x76 , "TLB"      , "Instruction TLB: 2M/4M pages, fully associative, 8 entries" },\r
-  { 0x78 , "Cache"    , "2nd-level cache: 1 MByte, 4-way set associative, 64byte line size" },\r
-  { 0x79 , "Cache"    , "2nd-level cache: 128 KByte, 8-way set associative, 64 byte line size, 2 lines per sector" },\r
-  { 0x7A , "Cache"    , "2nd-level cache: 256 KByte, 8-way set associative, 64 byte line size, 2 lines per sector" },\r
-  { 0x7B , "Cache"    , "2nd-level cache: 512 KByte, 8-way set associative, 64 byte line size, 2 lines per sector" },\r
-  { 0x7C , "Cache"    , "2nd-level cache: 1 MByte, 8-way set associative, 64 byte line size, 2 lines per sector" },\r
-  { 0x7D , "Cache"    , "2nd-level cache: 2 MByte, 8-way set associative, 64byte line size" },\r
-  { 0x7F , "Cache"    , "2nd-level cache: 512 KByte, 2-way set associative, 64-byte line size" },\r
-  { 0x80 , "Cache"    , "2nd-level cache: 512 KByte, 8-way set associative, 64-byte line size" },\r
-  { 0x82 , "Cache"    , "2nd-level cache: 256 KByte, 8-way set associative, 32 byte line size" },\r
-  { 0x83 , "Cache"    , "2nd-level cache: 512 KByte, 8-way set associative, 32 byte line size" },\r
-  { 0x84 , "Cache"    , "2nd-level cache: 1 MByte, 8-way set associative, 32 byte line size" },\r
-  { 0x85 , "Cache"    , "2nd-level cache: 2 MByte, 8-way set associative, 32 byte line size" },\r
-  { 0x86 , "Cache"    , "2nd-level cache: 512 KByte, 4-way set associative, 64 byte line size" },\r
-  { 0x87 , "Cache"    , "2nd-level cache: 1 MByte, 8-way set associative, 64 byte line size" },\r
-  { 0xA0 , "DTLB"     , "DTLB: 4k pages, fully associative, 32 entries" },\r
-  { 0xB0 , "TLB"      , "Instruction TLB: 4 KByte pages, 4-way set associative, 128 entries" },\r
-  { 0xB1 , "TLB"      , "Instruction TLB: 2M pages, 4-way, 8 entries or 4M pages, 4-way, 4 entries" },\r
-  { 0xB2 , "TLB"      , "Instruction TLB: 4KByte pages, 4-way set associative, 64 entries" },\r
-  { 0xB3 , "TLB"      , "Data TLB: 4 KByte pages, 4-way set associative, 128 entries" },\r
-  { 0xB4 , "TLB"      , "Data TLB1: 4 KByte pages, 4-way associative, 256 entries" },\r
-  { 0xB5 , "TLB"      , "Instruction TLB: 4KByte pages, 8-way set associative, 64 entries" },\r
-  { 0xB6 , "TLB"      , "Instruction TLB: 4KByte pages, 8-way set associative, 128 entries" },\r
-  { 0xBA , "TLB"      , "Data TLB1: 4 KByte pages, 4-way associative, 64 entries" },\r
-  { 0xC0 , "TLB"      , "Data TLB: 4 KByte and 4 MByte pages, 4-way associative, 8 entries" },\r
-  { 0xC1 , "STLB"     , "Shared 2nd-Level TLB: 4 KByte/2MByte pages, 8-way associative, 1024 entries" },\r
-  { 0xC2 , "DTLB"     , "DTLB: 4 KByte/2 MByte pages, 4-way associative, 16 entries" },\r
-  { 0xC3 , "STLB"     , "Shared 2nd-Level TLB: 4 KByte /2 MByte pages, 6-way associative, 1536 entries. Also 1GBbyte pages, 4-way, 16 entries." },\r
-  { 0xC4 , "DTLB"     , "DTLB: 2M/4M Byte pages, 4-way associative, 32 entries" },\r
-  { 0xCA , "STLB"     , "Shared 2nd-Level TLB: 4 KByte pages, 4-way associative, 512 entries" },\r
-  { 0xD0 , "Cache"    , "3rd-level cache: 512 KByte, 4-way set associative, 64 byte line size" },\r
-  { 0xD1 , "Cache"    , "3rd-level cache: 1 MByte, 4-way set associative, 64 byte line size" },\r
-  { 0xD2 , "Cache"    , "3rd-level cache: 2 MByte, 4-way set associative, 64 byte line size" },\r
-  { 0xD6 , "Cache"    , "3rd-level cache: 1 MByte, 8-way set associative, 64 byte line size" },\r
-  { 0xD7 , "Cache"    , "3rd-level cache: 2 MByte, 8-way set associative, 64 byte line size" },\r
-  { 0xD8 , "Cache"    , "3rd-level cache: 4 MByte, 8-way set associative, 64 byte line size" },\r
-  { 0xDC , "Cache"    , "3rd-level cache: 1.5 MByte, 12-way set associative, 64 byte line size" },\r
-  { 0xDD , "Cache"    , "3rd-level cache: 3 MByte, 12-way set associative, 64 byte line size" },\r
-  { 0xDE , "Cache"    , "3rd-level cache: 6 MByte, 12-way set associative, 64 byte line size" },\r
-  { 0xE2 , "Cache"    , "3rd-level cache: 2 MByte, 16-way set associative, 64 byte line size" },\r
-  { 0xE3 , "Cache"    , "3rd-level cache: 4 MByte, 16-way set associative, 64 byte line size" },\r
-  { 0xE4 , "Cache"    , "3rd-level cache: 8 MByte, 16-way set associative, 64 byte line size" },\r
-  { 0xEA , "Cache"    , "3rd-level cache: 12MByte, 24-way set associative, 64 byte line size" },\r
-  { 0xEB , "Cache"    , "3rd-level cache: 18MByte, 24-way set associative, 64 byte line size" },\r
-  { 0xEC , "Cache"    , "3rd-level cache: 24MByte, 24-way set associative, 64 byte line size" },\r
-  { 0xF0 , "Prefetch" , "64-Byte prefetching" },\r
-  { 0xF1 , "Prefetch" , "128-Byte prefetching" },\r
-  { 0xFE , "General"  , "CPUID leaf 2 does not report TLB descriptor information; use CPUID leaf 18H to query TLB and other address translation parameters." },\r
-  { 0xFF , "General"  , "CPUID leaf 2 does not report cache descriptor information, use CPUID leaf 4 to query cache parameters" }\r
+  { 0x00, "General",  "Null descriptor, this byte contains no information"                                                                                                                                    },\r
+  { 0x01, "TLB",      "Instruction TLB: 4 KByte pages, 4-way set associative, 32 entries"                                                                                                                     },\r
+  { 0x02, "TLB",      "Instruction TLB: 4 MByte pages, fully associative, 2 entries"                                                                                                                          },\r
+  { 0x03, "TLB",      "Data TLB: 4 KByte pages, 4-way set associative, 64 entries"                                                                                                                            },\r
+  { 0x04, "TLB",      "Data TLB: 4 MByte pages, 4-way set associative, 8 entries"                                                                                                                             },\r
+  { 0x05, "TLB",      "Data TLB1: 4 MByte pages, 4-way set associative, 32 entries"                                                                                                                           },\r
+  { 0x06, "Cache",    "1st-level instruction cache: 8 KBytes, 4-way set associative, 32 byte line size"                                                                                                       },\r
+  { 0x08, "Cache",    "1st-level instruction cache: 16 KBytes, 4-way set associative, 32 byte line size"                                                                                                      },\r
+  { 0x09, "Cache",    "1st-level instruction cache: 32KBytes, 4-way set associative, 64 byte line size"                                                                                                       },\r
+  { 0x0A, "Cache",    "1st-level data cache: 8 KBytes, 2-way set associative, 32 byte line size"                                                                                                              },\r
+  { 0x0B, "TLB",      "Instruction TLB: 4 MByte pages, 4-way set associative, 4 entries"                                                                                                                      },\r
+  { 0x0C, "Cache",    "1st-level data cache: 16 KBytes, 4-way set associative, 32 byte line size"                                                                                                             },\r
+  { 0x0D, "Cache",    "1st-level data cache: 16 KBytes, 4-way set associative, 64 byte line size"                                                                                                             },\r
+  { 0x0E, "Cache",    "1st-level data cache: 24 KBytes, 6-way set associative, 64 byte line size"                                                                                                             },\r
+  { 0x1D, "Cache",    "2nd-level cache: 128 KBytes, 2-way set associative, 64 byte line size"                                                                                                                 },\r
+  { 0x21, "Cache",    "2nd-level cache: 256 KBytes, 8-way set associative, 64 byte line size"                                                                                                                 },\r
+  { 0x22, "Cache",    "3rd-level cache: 512 KBytes, 4-way set associative, 64 byte line size, 2 lines per sector"                                                                                             },\r
+  { 0x23, "Cache",    "3rd-level cache: 1 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector"                                                                                               },\r
+  { 0x24, "Cache",    "2nd-level cache: 1 MBytes, 16-way set associative, 64 byte line size"                                                                                                                  },\r
+  { 0x25, "Cache",    "3rd-level cache: 2 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector"                                                                                               },\r
+  { 0x29, "Cache",    "3rd-level cache: 4 MBytes, 8-way set associative, 64 byte line size, 2 lines per sector"                                                                                               },\r
+  { 0x2C, "Cache",    "1st-level data cache: 32 KBytes, 8-way set associative, 64 byte line size"                                                                                                             },\r
+  { 0x30, "Cache",    "1st-level instruction cache: 32 KBytes, 8-way set associative, 64 byte line size"                                                                                                      },\r
+  { 0x40, "Cache",    "No 2nd-level cache or, if processor contains a valid 2nd-level cache, no 3rd-level cache"                                                                                              },\r
+  { 0x41, "Cache",    "2nd-level cache: 128 KBytes, 4-way set associative, 32 byte line size"                                                                                                                 },\r
+  { 0x42, "Cache",    "2nd-level cache: 256 KBytes, 4-way set associative, 32 byte line size"                                                                                                                 },\r
+  { 0x43, "Cache",    "2nd-level cache: 512 KBytes, 4-way set associative, 32 byte line size"                                                                                                                 },\r
+  { 0x44, "Cache",    "2nd-level cache: 1 MByte, 4-way set associative, 32 byte line size"                                                                                                                    },\r
+  { 0x45, "Cache",    "2nd-level cache: 2 MByte, 4-way set associative, 32 byte line size"                                                                                                                    },\r
+  { 0x46, "Cache",    "3rd-level cache: 4 MByte, 4-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0x47, "Cache",    "3rd-level cache: 8 MByte, 8-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0x48, "Cache",    "2nd-level cache: 3MByte, 12-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0x49, "Cache",    "3rd-level cache: 4MB, 16-way set associative, 64-byte line size (Intel Xeon processor MP, Family 0FH, Model 06H). 2nd-level cache: 4 MByte, 16-way set associative, 64 byte line size" },\r
+  { 0x4A, "Cache",    "3rd-level cache: 6MByte, 12-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0x4B, "Cache",    "3rd-level cache: 8MByte, 16-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0x4C, "Cache",    "3rd-level cache: 12MByte, 12-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0x4D, "Cache",    "3rd-level cache: 16MByte, 16-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0x4E, "Cache",    "2nd-level cache: 6MByte, 24-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0x4F, "TLB",      "Instruction TLB: 4 KByte pages, 32 entries"                                                                                                                                            },\r
+  { 0x50, "TLB",      "Instruction TLB: 4 KByte and 2-MByte or 4-MByte pages, 64 entries"                                                                                                                     },\r
+  { 0x51, "TLB",      "Instruction TLB: 4 KByte and 2-MByte or 4-MByte pages, 128 entries"                                                                                                                    },\r
+  { 0x52, "TLB",      "Instruction TLB: 4 KByte and 2-MByte or 4-MByte pages, 256 entries"                                                                                                                    },\r
+  { 0x55, "TLB",      "Instruction TLB: 2-MByte or 4-MByte pages, fully associative, 7 entries"                                                                                                               },\r
+  { 0x56, "TLB",      "Data TLB0: 4 MByte pages, 4-way set associative, 16 entries"                                                                                                                           },\r
+  { 0x57, "TLB",      "Data TLB0: 4 KByte pages, 4-way associative, 16 entries"                                                                                                                               },\r
+  { 0x59, "TLB",      "Data TLB0: 4 KByte pages, fully associative, 16 entries"                                                                                                                               },\r
+  { 0x5A, "TLB",      "Data TLB0: 2 MByte or 4 MByte pages, 4-way set associative, 32 entries"                                                                                                                },\r
+  { 0x5B, "TLB",      "Data TLB: 4 KByte and 4 MByte pages, 64 entries"                                                                                                                                       },\r
+  { 0x5C, "TLB",      "Data TLB: 4 KByte and 4 MByte pages,128 entries"                                                                                                                                       },\r
+  { 0x5D, "TLB",      "Data TLB: 4 KByte and 4 MByte pages,256 entries"                                                                                                                                       },\r
+  { 0x60, "Cache",    "1st-level data cache: 16 KByte, 8-way set associative, 64 byte line size"                                                                                                              },\r
+  { 0x61, "TLB",      "Instruction TLB: 4 KByte pages, fully associative, 48 entries"                                                                                                                         },\r
+  { 0x63, "TLB",      "Data TLB: 2 MByte or 4 MByte pages, 4-way set associative, 32 entries and a separate array with 1 GByte pages, 4-way set associative, 4 entries"                                       },\r
+  { 0x64, "TLB",      "Data TLB: 4 KByte pages, 4-way set associative, 512 entries"                                                                                                                           },\r
+  { 0x66, "Cache",    "1st-level data cache: 8 KByte, 4-way set associative, 64 byte line size"                                                                                                               },\r
+  { 0x67, "Cache",    "1st-level data cache: 16 KByte, 4-way set associative, 64 byte line size"                                                                                                              },\r
+  { 0x68, "Cache",    "1st-level data cache: 32 KByte, 4-way set associative, 64 byte line size"                                                                                                              },\r
+  { 0x6A, "Cache",    "uTLB: 4 KByte pages, 8-way set associative, 64 entries"                                                                                                                                },\r
+  { 0x6B, "Cache",    "DTLB: 4 KByte pages, 8-way set associative, 256 entries"                                                                                                                               },\r
+  { 0x6C, "Cache",    "DTLB: 2M/4M pages, 8-way set associative, 128 entries"                                                                                                                                 },\r
+  { 0x6D, "Cache",    "DTLB: 1 GByte pages, fully associative, 16 entries"                                                                                                                                    },\r
+  { 0x70, "Cache",    "Trace cache: 12 K-uop, 8-way set associative"                                                                                                                                          },\r
+  { 0x71, "Cache",    "Trace cache: 16 K-uop, 8-way set associative"                                                                                                                                          },\r
+  { 0x72, "Cache",    "Trace cache: 32 K-uop, 8-way set associative"                                                                                                                                          },\r
+  { 0x76, "TLB",      "Instruction TLB: 2M/4M pages, fully associative, 8 entries"                                                                                                                            },\r
+  { 0x78, "Cache",    "2nd-level cache: 1 MByte, 4-way set associative, 64byte line size"                                                                                                                     },\r
+  { 0x79, "Cache",    "2nd-level cache: 128 KByte, 8-way set associative, 64 byte line size, 2 lines per sector"                                                                                              },\r
+  { 0x7A, "Cache",    "2nd-level cache: 256 KByte, 8-way set associative, 64 byte line size, 2 lines per sector"                                                                                              },\r
+  { 0x7B, "Cache",    "2nd-level cache: 512 KByte, 8-way set associative, 64 byte line size, 2 lines per sector"                                                                                              },\r
+  { 0x7C, "Cache",    "2nd-level cache: 1 MByte, 8-way set associative, 64 byte line size, 2 lines per sector"                                                                                                },\r
+  { 0x7D, "Cache",    "2nd-level cache: 2 MByte, 8-way set associative, 64byte line size"                                                                                                                     },\r
+  { 0x7F, "Cache",    "2nd-level cache: 512 KByte, 2-way set associative, 64-byte line size"                                                                                                                  },\r
+  { 0x80, "Cache",    "2nd-level cache: 512 KByte, 8-way set associative, 64-byte line size"                                                                                                                  },\r
+  { 0x82, "Cache",    "2nd-level cache: 256 KByte, 8-way set associative, 32 byte line size"                                                                                                                  },\r
+  { 0x83, "Cache",    "2nd-level cache: 512 KByte, 8-way set associative, 32 byte line size"                                                                                                                  },\r
+  { 0x84, "Cache",    "2nd-level cache: 1 MByte, 8-way set associative, 32 byte line size"                                                                                                                    },\r
+  { 0x85, "Cache",    "2nd-level cache: 2 MByte, 8-way set associative, 32 byte line size"                                                                                                                    },\r
+  { 0x86, "Cache",    "2nd-level cache: 512 KByte, 4-way set associative, 64 byte line size"                                                                                                                  },\r
+  { 0x87, "Cache",    "2nd-level cache: 1 MByte, 8-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0xA0, "DTLB",     "DTLB: 4k pages, fully associative, 32 entries"                                                                                                                                         },\r
+  { 0xB0, "TLB",      "Instruction TLB: 4 KByte pages, 4-way set associative, 128 entries"                                                                                                                    },\r
+  { 0xB1, "TLB",      "Instruction TLB: 2M pages, 4-way, 8 entries or 4M pages, 4-way, 4 entries"                                                                                                             },\r
+  { 0xB2, "TLB",      "Instruction TLB: 4KByte pages, 4-way set associative, 64 entries"                                                                                                                      },\r
+  { 0xB3, "TLB",      "Data TLB: 4 KByte pages, 4-way set associative, 128 entries"                                                                                                                           },\r
+  { 0xB4, "TLB",      "Data TLB1: 4 KByte pages, 4-way associative, 256 entries"                                                                                                                              },\r
+  { 0xB5, "TLB",      "Instruction TLB: 4KByte pages, 8-way set associative, 64 entries"                                                                                                                      },\r
+  { 0xB6, "TLB",      "Instruction TLB: 4KByte pages, 8-way set associative, 128 entries"                                                                                                                     },\r
+  { 0xBA, "TLB",      "Data TLB1: 4 KByte pages, 4-way associative, 64 entries"                                                                                                                               },\r
+  { 0xC0, "TLB",      "Data TLB: 4 KByte and 4 MByte pages, 4-way associative, 8 entries"                                                                                                                     },\r
+  { 0xC1, "STLB",     "Shared 2nd-Level TLB: 4 KByte/2MByte pages, 8-way associative, 1024 entries"                                                                                                           },\r
+  { 0xC2, "DTLB",     "DTLB: 4 KByte/2 MByte pages, 4-way associative, 16 entries"                                                                                                                            },\r
+  { 0xC3, "STLB",     "Shared 2nd-Level TLB: 4 KByte /2 MByte pages, 6-way associative, 1536 entries. Also 1GBbyte pages, 4-way, 16 entries."                                                                 },\r
+  { 0xC4, "DTLB",     "DTLB: 2M/4M Byte pages, 4-way associative, 32 entries"                                                                                                                                 },\r
+  { 0xCA, "STLB",     "Shared 2nd-Level TLB: 4 KByte pages, 4-way associative, 512 entries"                                                                                                                   },\r
+  { 0xD0, "Cache",    "3rd-level cache: 512 KByte, 4-way set associative, 64 byte line size"                                                                                                                  },\r
+  { 0xD1, "Cache",    "3rd-level cache: 1 MByte, 4-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0xD2, "Cache",    "3rd-level cache: 2 MByte, 4-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0xD6, "Cache",    "3rd-level cache: 1 MByte, 8-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0xD7, "Cache",    "3rd-level cache: 2 MByte, 8-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0xD8, "Cache",    "3rd-level cache: 4 MByte, 8-way set associative, 64 byte line size"                                                                                                                    },\r
+  { 0xDC, "Cache",    "3rd-level cache: 1.5 MByte, 12-way set associative, 64 byte line size"                                                                                                                 },\r
+  { 0xDD, "Cache",    "3rd-level cache: 3 MByte, 12-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0xDE, "Cache",    "3rd-level cache: 6 MByte, 12-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0xE2, "Cache",    "3rd-level cache: 2 MByte, 16-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0xE3, "Cache",    "3rd-level cache: 4 MByte, 16-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0xE4, "Cache",    "3rd-level cache: 8 MByte, 16-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0xEA, "Cache",    "3rd-level cache: 12MByte, 24-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0xEB, "Cache",    "3rd-level cache: 18MByte, 24-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0xEC, "Cache",    "3rd-level cache: 24MByte, 24-way set associative, 64 byte line size"                                                                                                                   },\r
+  { 0xF0, "Prefetch", "64-Byte prefetching"                                                                                                                                                                   },\r
+  { 0xF1, "Prefetch", "128-Byte prefetching"                                                                                                                                                                  },\r
+  { 0xFE, "General",  "CPUID leaf 2 does not report TLB descriptor information; use CPUID leaf 18H to query TLB and other address translation parameters."                                                    },\r
+  { 0xFF, "General",  "CPUID leaf 2 does not report cache descriptor information, use CPUID leaf 4 to query cache parameters"                                                                                 }\r
 };\r
 \r
 ///\r
 /// The maximum supported CPUID leaf index starting from leaf 0x00000000.\r
 ///\r
-UINT32  gMaximumBasicFunction    = CPUID_SIGNATURE;\r
+UINT32  gMaximumBasicFunction = CPUID_SIGNATURE;\r
 \r
 ///\r
 /// The maximum supported CPUID leaf index starting from leaf 0x80000000.\r
@@ -170,11 +170,11 @@ CpuidSignature (
   VOID\r
   )\r
 {\r
-  UINT32 Eax;\r
-  UINT32 Ebx;\r
-  UINT32 Ecx;\r
-  UINT32 Edx;\r
-  CHAR8  Signature[13];\r
+  UINT32  Eax;\r
+  UINT32  Ebx;\r
+  UINT32  Ecx;\r
+  UINT32  Edx;\r
+  CHAR8   Signature[13];\r
 \r
   AsmCpuid (CPUID_SIGNATURE, &Eax, &Ebx, &Ecx, &Edx);\r
 \r
@@ -184,7 +184,7 @@ CpuidSignature (
   *(UINT32 *)(Signature + 0) = Ebx;\r
   *(UINT32 *)(Signature + 4) = Edx;\r
   *(UINT32 *)(Signature + 8) = Ecx;\r
-  Signature [12] = 0;\r
+  Signature[12]              = 0;\r
   Print (L"  Signature = %a\n", Signature);\r
 \r
   gMaximumBasicFunction = Eax;\r
@@ -221,7 +221,7 @@ CpuidVersionInfo (
   }\r
 \r
   DisplayModel = Eax.Bits.Model;\r
-  if (Eax.Bits.FamilyId == 0x06 || Eax.Bits.FamilyId == 0x0f) {\r
+  if ((Eax.Bits.FamilyId == 0x06) || (Eax.Bits.FamilyId == 0x0f)) {\r
     DisplayModel |= (Eax.Bits.ExtendedModelId << 4);\r
   }\r
 \r
@@ -314,12 +314,14 @@ LookupCacheDescription (
   if (CacheDescriptor == 0x00) {\r
     return NULL;\r
   }\r
+\r
   NumDescriptors = sizeof (mCpuidCacheInfoDescription)/sizeof (mCpuidCacheInfoDescription[0]);\r
   for (Descriptor = 0; Descriptor < NumDescriptors; Descriptor++) {\r
     if (CacheDescriptor == mCpuidCacheInfoDescription[Descriptor].CacheDescriptor) {\r
       return &mCpuidCacheInfoDescription[Descriptor];\r
     }\r
   }\r
+\r
   return NULL;\r
 }\r
 \r
@@ -354,13 +356,15 @@ CpuidCacheInfo (
     for (Index = 1; Index < 4; Index++) {\r
       CacheDescription = LookupCacheDescription (Eax.CacheDescriptor[Index]);\r
       if (CacheDescription != NULL) {\r
-        Print (L"  %-8a %a\n",\r
+        Print (\r
+          L"  %-8a %a\n",\r
           CacheDescription->Type,\r
           CacheDescription->Description\r
           );\r
       }\r
     }\r
   }\r
+\r
   if (Ebx.Bits.NotValid == 0) {\r
     //\r
     // Process Ebx.CacheDescriptor[0..3]\r
@@ -368,13 +372,15 @@ CpuidCacheInfo (
     for (Index = 0; Index < 4; Index++) {\r
       CacheDescription = LookupCacheDescription (Ebx.CacheDescriptor[Index]);\r
       if (CacheDescription != NULL) {\r
-        Print (L"  %-8a %a\n",\r
+        Print (\r
+          L"  %-8a %a\n",\r
           CacheDescription->Type,\r
           CacheDescription->Description\r
           );\r
       }\r
     }\r
   }\r
+\r
   if (Ecx.Bits.NotValid == 0) {\r
     //\r
     // Process Ecx.CacheDescriptor[0..3]\r
@@ -382,13 +388,15 @@ CpuidCacheInfo (
     for (Index = 0; Index < 4; Index++) {\r
       CacheDescription = LookupCacheDescription (Ecx.CacheDescriptor[Index]);\r
       if (CacheDescription != NULL) {\r
-        Print (L"  %-8a %a\n",\r
+        Print (\r
+          L"  %-8a %a\n",\r
           CacheDescription->Type,\r
           CacheDescription->Description\r
           );\r
       }\r
     }\r
   }\r
+\r
   if (Edx.Bits.NotValid == 0) {\r
     //\r
     // Process Edx.CacheDescriptor[0..3]\r
@@ -396,7 +404,8 @@ CpuidCacheInfo (
     for (Index = 0; Index < 4; Index++) {\r
       CacheDescription = LookupCacheDescription (Edx.CacheDescriptor[Index]);\r
       if (CacheDescription != NULL) {\r
-        Print (L"  %-8a %a\n",\r
+        Print (\r
+          L"  %-8a %a\n",\r
           CacheDescription->Type,\r
           CacheDescription->Description\r
           );\r
@@ -457,8 +466,12 @@ CpuidCacheParams (
   CacheLevel = 0;\r
   do {\r
     AsmCpuidEx (\r
-      CPUID_CACHE_PARAMS, CacheLevel,\r
-      &Eax.Uint32, &Ebx.Uint32, &Ecx, &Edx.Uint32\r
+      CPUID_CACHE_PARAMS,\r
+      CacheLevel,\r
+      &Eax.Uint32,\r
+      &Ebx.Uint32,\r
+      &Ecx,\r
+      &Edx.Uint32\r
       );\r
     if (Eax.Bits.CacheType != CPUID_CACHE_PARAMS_CACHE_TYPE_NULL) {\r
       Print (L"CPUID_CACHE_PARAMS (Leaf %08x, Sub-Leaf %08x)\n", CPUID_CACHE_PARAMS, CacheLevel);\r
@@ -472,11 +485,12 @@ CpuidCacheParams (
       PRINT_BIT_FIELD (Ebx, LineSize);\r
       PRINT_BIT_FIELD (Ebx, LinePartitions);\r
       PRINT_BIT_FIELD (Ebx, Ways);\r
-      PRINT_VALUE     (Ecx, NumberOfSets);\r
+      PRINT_VALUE (Ecx, NumberOfSets);\r
       PRINT_BIT_FIELD (Edx, Invalidate);\r
       PRINT_BIT_FIELD (Edx, CacheInclusiveness);\r
       PRINT_BIT_FIELD (Edx, ComplexCacheIndexing);\r
     }\r
+\r
     CacheLevel++;\r
   } while (Eax.Bits.CacheType != CPUID_CACHE_PARAMS_CACHE_TYPE_NULL);\r
 }\r
@@ -585,15 +599,21 @@ CpuidStructuredExtendedFeatureFlags (
   AsmCpuidEx (\r
     CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS,\r
     CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_SUB_LEAF_INFO,\r
-    &Eax, NULL, NULL, NULL\r
+    &Eax,\r
+    NULL,\r
+    NULL,\r
+    NULL\r
     );\r
   for (SubLeaf = 0; SubLeaf <= Eax; SubLeaf++) {\r
     AsmCpuidEx (\r
       CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS,\r
       SubLeaf,\r
-      NULL, &Ebx.Uint32, &Ecx.Uint32, &Edx.Uint32\r
+      NULL,\r
+      &Ebx.Uint32,\r
+      &Ecx.Uint32,\r
+      &Edx.Uint32\r
       );\r
-    if (Ebx.Uint32 != 0 || Ecx.Uint32 != 0 || Edx.Uint32 != 0) {\r
+    if ((Ebx.Uint32 != 0) || (Ecx.Uint32 != 0) || (Edx.Uint32 != 0)) {\r
       Print (L"CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS (Leaf %08x, Sub-Leaf %08x)\n", CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS, SubLeaf);\r
       Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax, Ebx.Uint32, Ecx.Uint32, Edx.Uint32);\r
       PRINT_BIT_FIELD (Ebx, FSGSBASE);\r
@@ -713,7 +733,7 @@ CpuidArchitecturalPerformanceMonitoring (
 **/\r
 VOID\r
 CpuidExtendedTopology (\r
-  UINT32                       LeafFunction\r
+  UINT32  LeafFunction\r
   )\r
 {\r
   CPUID_EXTENDED_TOPOLOGY_EAX  Eax;\r
@@ -725,6 +745,7 @@ CpuidExtendedTopology (
   if (LeafFunction > gMaximumBasicFunction) {\r
     return;\r
   }\r
+\r
   if ((LeafFunction != CPUID_EXTENDED_TOPOLOGY) && (LeafFunction != CPUID_V2_EXTENDED_TOPOLOGY)) {\r
     return;\r
   }\r
@@ -732,23 +753,29 @@ CpuidExtendedTopology (
   LevelNumber = 0;\r
   for (LevelNumber = 0; ; LevelNumber++) {\r
     AsmCpuidEx (\r
-      LeafFunction, LevelNumber,\r
-      &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx\r
+      LeafFunction,\r
+      LevelNumber,\r
+      &Eax.Uint32,\r
+      &Ebx.Uint32,\r
+      &Ecx.Uint32,\r
+      &Edx\r
       );\r
     if (Ecx.Bits.LevelType == CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_INVALID) {\r
       break;\r
     }\r
+\r
     Print (\r
       L"%a (Leaf %08x, Sub-Leaf %08x)\n",\r
       LeafFunction == CPUID_EXTENDED_TOPOLOGY ? "CPUID_EXTENDED_TOPOLOGY" : "CPUID_V2_EXTENDED_TOPOLOGY",\r
-      LeafFunction, LevelNumber\r
+      LeafFunction,\r
+      LevelNumber\r
       );\r
     Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx.Uint32, Ecx.Uint32, Edx);\r
     PRINT_BIT_FIELD (Eax, ApicIdShift);\r
     PRINT_BIT_FIELD (Ebx, LogicalProcessors);\r
     PRINT_BIT_FIELD (Ecx, LevelNumber);\r
     PRINT_BIT_FIELD (Ecx, LevelType);\r
-    PRINT_VALUE     (Edx, x2APIC_ID);\r
+    PRINT_VALUE (Edx, x2APIC_ID);\r
   }\r
 }\r
 \r
@@ -767,8 +794,12 @@ CpuidExtendedStateSubLeaf (
   UINT32                             Edx;\r
 \r
   AsmCpuidEx (\r
-    CPUID_EXTENDED_STATE, CPUID_EXTENDED_STATE_SUB_LEAF,\r
-    &Eax.Uint32, &Ebx, &Ecx.Uint32, &Edx\r
+    CPUID_EXTENDED_STATE,\r
+    CPUID_EXTENDED_STATE_SUB_LEAF,\r
+    &Eax.Uint32,\r
+    &Ebx,\r
+    &Ecx.Uint32,\r
+    &Edx\r
     );\r
   Print (L"CPUID_EXTENDED_STATE (Leaf %08x, Sub-Leaf %08x)\n", CPUID_EXTENDED_STATE, CPUID_EXTENDED_STATE_SUB_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx, Ecx.Uint32, Edx);\r
@@ -776,12 +807,12 @@ CpuidExtendedStateSubLeaf (
   PRINT_BIT_FIELD (Eax, XSAVEC);\r
   PRINT_BIT_FIELD (Eax, XGETBV);\r
   PRINT_BIT_FIELD (Eax, XSAVES);\r
-  PRINT_VALUE     (Ebx, EnabledSaveStateSize_XCR0_IA32_XSS);\r
+  PRINT_VALUE (Ebx, EnabledSaveStateSize_XCR0_IA32_XSS);\r
   PRINT_BIT_FIELD (Ecx, XCR0);\r
   PRINT_BIT_FIELD (Ecx, HWPState);\r
   PRINT_BIT_FIELD (Ecx, PT);\r
   PRINT_BIT_FIELD (Ecx, XCR0_1);\r
-  PRINT_VALUE     (Edx, IA32_XSS_Supported_32_63);\r
+  PRINT_VALUE (Edx, IA32_XSS_Supported_32_63);\r
 }\r
 \r
 /**\r
@@ -801,14 +832,18 @@ CpuidExtendedStateSizeOffset (
 \r
   for (SubLeaf = CPUID_EXTENDED_STATE_SIZE_OFFSET; SubLeaf < 32; SubLeaf++) {\r
     AsmCpuidEx (\r
-      CPUID_EXTENDED_STATE, SubLeaf,\r
-      &Eax, &Ebx, &Ecx.Uint32, &Edx\r
+      CPUID_EXTENDED_STATE,\r
+      SubLeaf,\r
+      &Eax,\r
+      &Ebx,\r
+      &Ecx.Uint32,\r
+      &Edx\r
       );\r
     if (Edx != 0) {\r
       Print (L"CPUID_EXTENDED_STATE (Leaf %08x, Sub-Leaf %08x)\n", CPUID_EXTENDED_STATE, SubLeaf);\r
       Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax, Ebx, Ecx.Uint32, Edx);\r
-      PRINT_VALUE     (Eax, FeatureSaveStateSize);\r
-      PRINT_VALUE     (Ebx, FeatureSaveStateOffset);\r
+      PRINT_VALUE (Eax, FeatureSaveStateSize);\r
+      PRINT_VALUE (Ebx, FeatureSaveStateOffset);\r
       PRINT_BIT_FIELD (Ecx, XSS);\r
       PRINT_BIT_FIELD (Ecx, Compacted);\r
     }\r
@@ -834,8 +869,12 @@ CpuidExtendedStateMainLeaf (
   }\r
 \r
   AsmCpuidEx (\r
-    CPUID_EXTENDED_STATE, CPUID_EXTENDED_STATE_MAIN_LEAF,\r
-    &Eax.Uint32, &Ebx, &Ecx, &Edx\r
+    CPUID_EXTENDED_STATE,\r
+    CPUID_EXTENDED_STATE_MAIN_LEAF,\r
+    &Eax.Uint32,\r
+    &Ebx,\r
+    &Ecx,\r
+    &Edx\r
     );\r
   Print (L"CPUID_EXTENDED_STATE (Leaf %08x, Sub-Leaf %08x)\n", CPUID_EXTENDED_STATE, CPUID_EXTENDED_STATE_MAIN_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx, Ecx, Edx);\r
@@ -847,9 +886,9 @@ CpuidExtendedStateMainLeaf (
   PRINT_BIT_FIELD (Eax, IA32_XSS);\r
   PRINT_BIT_FIELD (Eax, PKRU);\r
   PRINT_BIT_FIELD (Eax, IA32_XSS_2);\r
-  PRINT_VALUE     (Ebx, EnabledSaveStateSize);\r
-  PRINT_VALUE     (Ecx, SupportedSaveStateSize);\r
-  PRINT_VALUE     (Edx, XCR0_Supported_32_63);\r
+  PRINT_VALUE (Ebx, EnabledSaveStateSize);\r
+  PRINT_VALUE (Ecx, SupportedSaveStateSize);\r
+  PRINT_VALUE (Edx, XCR0_Supported_32_63);\r
 \r
   CpuidExtendedStateSubLeaf ();\r
   CpuidExtendedStateSizeOffset ();\r
@@ -864,20 +903,24 @@ CpuidIntelRdtMonitoringEnumerationSubLeaf (
   VOID\r
   )\r
 {\r
-  UINT32                                                  Ebx;\r
-  CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF_EDX     Edx;\r
+  UINT32                                               Ebx;\r
+  CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF_EDX  Edx;\r
 \r
   if (CPUID_INTEL_RDT_MONITORING > gMaximumBasicFunction) {\r
     return;\r
   }\r
 \r
   AsmCpuidEx (\r
-    CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF,\r
-    NULL, &Ebx, NULL, &Edx.Uint32\r
+    CPUID_INTEL_RDT_MONITORING,\r
+    CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF,\r
+    NULL,\r
+    &Ebx,\r
+    NULL,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_INTEL_RDT_MONITORING (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_ENUMERATION_SUB_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", 0, Ebx, 0, Edx.Uint32);\r
-  PRINT_VALUE     (Ebx, Maximum_RMID_Range);\r
+  PRINT_VALUE (Ebx, Maximum_RMID_Range);\r
   PRINT_BIT_FIELD (Edx, L3CacheRDT_M);\r
 }\r
 \r
@@ -890,22 +933,26 @@ CpuidIntelRdtMonitoringL3CacheCapabilitySubLeaf (
   VOID\r
   )\r
 {\r
-  UINT32                                                 Ebx;\r
-  UINT32                                                 Ecx;\r
-  CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF_EDX       Edx;\r
+  UINT32                                            Ebx;\r
+  UINT32                                            Ecx;\r
+  CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF_EDX  Edx;\r
 \r
   if (CPUID_INTEL_RDT_MONITORING > gMaximumBasicFunction) {\r
     return;\r
   }\r
 \r
   AsmCpuidEx (\r
-    CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF,\r
-    NULL, &Ebx, &Ecx, &Edx.Uint32\r
+    CPUID_INTEL_RDT_MONITORING,\r
+    CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF,\r
+    NULL,\r
+    &Ebx,\r
+    &Ecx,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_INTEL_RDT_MONITORING (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_MONITORING, CPUID_INTEL_RDT_MONITORING_L3_CACHE_SUB_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", 0, Ebx, Ecx, Edx.Uint32);\r
-  PRINT_VALUE     (Ebx, OccupancyConversionFactor);\r
-  PRINT_VALUE     (Ecx, Maximum_RMID_Range);\r
+  PRINT_VALUE (Ebx, OccupancyConversionFactor);\r
+  PRINT_VALUE (Ecx, Maximum_RMID_Range);\r
   PRINT_BIT_FIELD (Edx, L3CacheOccupancyMonitoring);\r
   PRINT_BIT_FIELD (Edx, L3CacheTotalBandwidthMonitoring);\r
   PRINT_BIT_FIELD (Edx, L3CacheLocalBandwidthMonitoring);\r
@@ -927,13 +974,17 @@ CpuidIntelRdtAllocationMemoryBandwidthSubLeaf (
   CPUID_INTEL_RDT_ALLOCATION_MEMORY_BANDWIDTH_SUB_LEAF_EDX  Edx;\r
 \r
   AsmCpuidEx (\r
-    CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_MEMORY_BANDWIDTH_SUB_LEAF,\r
-    &Eax.Uint32, &Ebx, &Ecx.Uint32, &Edx.Uint32\r
+    CPUID_INTEL_RDT_ALLOCATION,\r
+    CPUID_INTEL_RDT_ALLOCATION_MEMORY_BANDWIDTH_SUB_LEAF,\r
+    &Eax.Uint32,\r
+    &Ebx,\r
+    &Ecx.Uint32,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_INTEL_RDT_ALLOCATION (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_MEMORY_BANDWIDTH_SUB_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx, Ecx.Uint32, Edx.Uint32);\r
   PRINT_BIT_FIELD (Eax, MaximumMBAThrottling);\r
-  PRINT_VALUE     (Ebx, AllocationUnitBitMap);\r
+  PRINT_VALUE (Ebx, AllocationUnitBitMap);\r
   PRINT_BIT_FIELD (Ecx, Liner);\r
   PRINT_BIT_FIELD (Edx, HighestCosNumber);\r
 }\r
@@ -954,13 +1005,17 @@ CpuidIntelRdtAllocationL3CacheSubLeaf (
   CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF_EDX  Edx;\r
 \r
   AsmCpuidEx (\r
-    CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF,\r
-    &Eax.Uint32, &Ebx, &Ecx.Uint32, &Edx.Uint32\r
+    CPUID_INTEL_RDT_ALLOCATION,\r
+    CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF,\r
+    &Eax.Uint32,\r
+    &Ebx,\r
+    &Ecx.Uint32,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_INTEL_RDT_ALLOCATION (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L3_CACHE_SUB_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx, Ecx.Uint32, Edx.Uint32);\r
   PRINT_BIT_FIELD (Eax, CapacityLength);\r
-  PRINT_VALUE     (Ebx, AllocationUnitBitMap);\r
+  PRINT_VALUE (Ebx, AllocationUnitBitMap);\r
   PRINT_BIT_FIELD (Ecx, CodeDataPrioritization);\r
   PRINT_BIT_FIELD (Edx, HighestCosNumber);\r
 }\r
@@ -980,13 +1035,17 @@ CpuidIntelRdtAllocationL2CacheSubLeaf (
   CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF_EDX  Edx;\r
 \r
   AsmCpuidEx (\r
-    CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF,\r
-    &Eax.Uint32, &Ebx, NULL, &Edx.Uint32\r
+    CPUID_INTEL_RDT_ALLOCATION,\r
+    CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF,\r
+    &Eax.Uint32,\r
+    &Ebx,\r
+    NULL,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_INTEL_RDT_ALLOCATION (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_L2_CACHE_SUB_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx, 0, Edx.Uint32);\r
   PRINT_BIT_FIELD (Eax, CapacityLength);\r
-  PRINT_VALUE     (Ebx, AllocationUnitBitMap);\r
+  PRINT_VALUE (Ebx, AllocationUnitBitMap);\r
   PRINT_BIT_FIELD (Edx, HighestCosNumber);\r
 }\r
 \r
@@ -1006,8 +1065,12 @@ CpuidIntelRdtAllocationMainLeaf (
   }\r
 \r
   AsmCpuidEx (\r
-    CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF,\r
-    NULL, &Ebx.Uint32, NULL, NULL\r
+    CPUID_INTEL_RDT_ALLOCATION,\r
+    CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF,\r
+    NULL,\r
+    &Ebx.Uint32,\r
+    NULL,\r
+    NULL\r
     );\r
   Print (L"CPUID_INTEL_RDT_ALLOCATION (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_RDT_ALLOCATION, CPUID_INTEL_RDT_ALLOCATION_ENUMERATION_SUB_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", 0, Ebx.Uint32, 0, 0);\r
@@ -1033,8 +1096,12 @@ CpuidEnumerationOfIntelSgxCapabilities0SubLeaf (
   CPUID_INTEL_SGX_CAPABILITIES_0_SUB_LEAF_EDX  Edx;\r
 \r
   AsmCpuidEx (\r
-    CPUID_INTEL_SGX, CPUID_INTEL_SGX_CAPABILITIES_0_SUB_LEAF,\r
-    &Eax.Uint32, &Ebx, NULL, &Edx.Uint32\r
+    CPUID_INTEL_SGX,\r
+    CPUID_INTEL_SGX_CAPABILITIES_0_SUB_LEAF,\r
+    &Eax.Uint32,\r
+    &Ebx,\r
+    NULL,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_INTEL_SGX (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_SGX, CPUID_INTEL_SGX_CAPABILITIES_0_SUB_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx, 0, Edx.Uint32);\r
@@ -1055,14 +1122,18 @@ CpuidEnumerationOfIntelSgxCapabilities1SubLeaf (
   VOID\r
   )\r
 {\r
-  UINT32                                       Eax;\r
-  UINT32                                       Ebx;\r
-  UINT32                                       Ecx;\r
-  UINT32                                       Edx;\r
+  UINT32  Eax;\r
+  UINT32  Ebx;\r
+  UINT32  Ecx;\r
+  UINT32  Edx;\r
 \r
   AsmCpuidEx (\r
-    CPUID_INTEL_SGX, CPUID_INTEL_SGX_CAPABILITIES_1_SUB_LEAF,\r
-    &Eax, &Ebx, &Ecx, &Edx\r
+    CPUID_INTEL_SGX,\r
+    CPUID_INTEL_SGX_CAPABILITIES_1_SUB_LEAF,\r
+    &Eax,\r
+    &Ebx,\r
+    &Ecx,\r
+    &Edx\r
     );\r
   Print (L"CPUID_INTEL_SGX (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_SGX, CPUID_INTEL_SGX_CAPABILITIES_1_SUB_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax, Ebx, Ecx, Edx);\r
@@ -1086,8 +1157,12 @@ CpuidEnumerationOfIntelSgxResourcesSubLeaf (
   SubLeaf = CPUID_INTEL_SGX_CAPABILITIES_RESOURCES_SUB_LEAF;\r
   do {\r
     AsmCpuidEx (\r
-      CPUID_INTEL_SGX, SubLeaf,\r
-      &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx.Uint32\r
+      CPUID_INTEL_SGX,\r
+      SubLeaf,\r
+      &Eax.Uint32,\r
+      &Ebx.Uint32,\r
+      &Ecx.Uint32,\r
+      &Edx.Uint32\r
       );\r
     if (Eax.Bits.SubLeafType == 0x1) {\r
       Print (L"CPUID_INTEL_SGX (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_SGX, SubLeaf);\r
@@ -1099,6 +1174,7 @@ CpuidEnumerationOfIntelSgxResourcesSubLeaf (
       PRINT_BIT_FIELD (Ecx, LowSizeOfEpcSection);\r
       PRINT_BIT_FIELD (Edx, HighSizeOfEpcSection);\r
     }\r
+\r
     SubLeaf++;\r
   } while (Eax.Bits.SubLeafType == 0x1);\r
 }\r
@@ -1121,7 +1197,10 @@ CpuidEnumerationOfIntelSgx (
   AsmCpuidEx (\r
     CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS,\r
     CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_SUB_LEAF_INFO,\r
-    NULL, &Ebx.Uint32, NULL, NULL\r
+    NULL,\r
+    &Ebx.Uint32,\r
+    NULL,\r
+    NULL\r
     );\r
   if (Ebx.Bits.SGX != 1) {\r
     //\r
@@ -1153,8 +1232,12 @@ CpuidIntelProcessorTraceSubLeaf (
 \r
   for (SubLeaf = CPUID_INTEL_PROCESSOR_TRACE_SUB_LEAF; SubLeaf <= MaximumSubLeaf; SubLeaf++) {\r
     AsmCpuidEx (\r
-      CPUID_INTEL_PROCESSOR_TRACE, SubLeaf,\r
-      &Eax.Uint32, &Ebx.Uint32, NULL, NULL\r
+      CPUID_INTEL_PROCESSOR_TRACE,\r
+      SubLeaf,\r
+      &Eax.Uint32,\r
+      &Ebx.Uint32,\r
+      NULL,\r
+      NULL\r
       );\r
     Print (L"CPUID_INTEL_PROCESSOR_TRACE (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_PROCESSOR_TRACE, SubLeaf);\r
     Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx.Uint32, 0, 0);\r
@@ -1183,12 +1266,16 @@ CpuidIntelProcessorTraceMainLeaf (
   }\r
 \r
   AsmCpuidEx (\r
-    CPUID_INTEL_PROCESSOR_TRACE, CPUID_INTEL_PROCESSOR_TRACE_MAIN_LEAF,\r
-    &Eax, &Ebx.Uint32, &Ecx.Uint32, NULL\r
+    CPUID_INTEL_PROCESSOR_TRACE,\r
+    CPUID_INTEL_PROCESSOR_TRACE_MAIN_LEAF,\r
+    &Eax,\r
+    &Ebx.Uint32,\r
+    &Ecx.Uint32,\r
+    NULL\r
     );\r
   Print (L"CPUID_INTEL_PROCESSOR_TRACE (Leaf %08x, Sub-Leaf %08x)\n", CPUID_INTEL_PROCESSOR_TRACE, CPUID_INTEL_PROCESSOR_TRACE_MAIN_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax, Ebx.Uint32, Ecx.Uint32, 0);\r
-  PRINT_VALUE     (Eax, MaximumSubLeaf);\r
+  PRINT_VALUE (Eax, MaximumSubLeaf);\r
   PRINT_BIT_FIELD (Ebx, Cr3Filter);\r
   PRINT_BIT_FIELD (Ebx, ConfigurablePsb);\r
   PRINT_BIT_FIELD (Ebx, IpTraceStopFiltering);\r
@@ -1270,11 +1357,15 @@ CpuidSocVendorBrandString (
   // 4 32-bit brand string values per leaf and an extra value to\r
   // null terminate the string.\r
   //\r
-  UINT32                              BrandString[3 * 4 + 1];\r
+  UINT32  BrandString[3 * 4 + 1];\r
 \r
   AsmCpuidEx (\r
-    CPUID_SOC_VENDOR, CPUID_SOC_VENDOR_BRAND_STRING1,\r
-    &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx.Uint32\r
+    CPUID_SOC_VENDOR,\r
+    CPUID_SOC_VENDOR_BRAND_STRING1,\r
+    &Eax.Uint32,\r
+    &Ebx.Uint32,\r
+    &Ecx.Uint32,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_SOC_VENDOR (Leaf %08x, Sub-Leaf %08x)\n", CPUID_SOC_VENDOR, CPUID_SOC_VENDOR_BRAND_STRING1);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx.Uint32, Ecx.Uint32, Edx.Uint32);\r
@@ -1284,8 +1375,12 @@ CpuidSocVendorBrandString (
   BrandString[3] = Edx.Uint32;\r
 \r
   AsmCpuidEx (\r
-    CPUID_SOC_VENDOR, CPUID_SOC_VENDOR_BRAND_STRING2,\r
-    &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx.Uint32\r
+    CPUID_SOC_VENDOR,\r
+    CPUID_SOC_VENDOR_BRAND_STRING2,\r
+    &Eax.Uint32,\r
+    &Ebx.Uint32,\r
+    &Ecx.Uint32,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_SOC_VENDOR (Leaf %08x, Sub-Leaf %08x)\n", CPUID_SOC_VENDOR, CPUID_SOC_VENDOR_BRAND_STRING2);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx.Uint32, Ecx.Uint32, Edx.Uint32);\r
@@ -1295,8 +1390,12 @@ CpuidSocVendorBrandString (
   BrandString[7] = Edx.Uint32;\r
 \r
   AsmCpuidEx (\r
-    CPUID_SOC_VENDOR, CPUID_SOC_VENDOR_BRAND_STRING3,\r
-    &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx.Uint32\r
+    CPUID_SOC_VENDOR,\r
+    CPUID_SOC_VENDOR_BRAND_STRING3,\r
+    &Eax.Uint32,\r
+    &Ebx.Uint32,\r
+    &Ecx.Uint32,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_SOC_VENDOR (Leaf %08x, Sub-Leaf %08x)\n", CPUID_SOC_VENDOR, CPUID_SOC_VENDOR_BRAND_STRING3);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax.Uint32, Ebx.Uint32, Ecx.Uint32, Edx.Uint32);\r
@@ -1329,8 +1428,12 @@ CpuidSocVendor (
   }\r
 \r
   AsmCpuidEx (\r
-    CPUID_SOC_VENDOR, CPUID_SOC_VENDOR_MAIN_LEAF,\r
-    &Eax, &Ebx.Uint32, &Ecx, &Edx\r
+    CPUID_SOC_VENDOR,\r
+    CPUID_SOC_VENDOR_MAIN_LEAF,\r
+    &Eax,\r
+    &Ebx.Uint32,\r
+    &Ecx,\r
+    &Edx\r
     );\r
   Print (L"CPUID_SOC_VENDOR (Leaf %08x, Sub-Leaf %08x)\n", CPUID_SOC_VENDOR, CPUID_SOC_VENDOR_MAIN_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax, Ebx.Uint32, Ecx, Edx);\r
@@ -1338,11 +1441,12 @@ CpuidSocVendor (
     Print (L"  Not Supported\n");\r
     return;\r
   }\r
-  PRINT_VALUE     (Eax, MaxSOCID_Index);\r
+\r
+  PRINT_VALUE (Eax, MaxSOCID_Index);\r
   PRINT_BIT_FIELD (Ebx, SocVendorId);\r
   PRINT_BIT_FIELD (Ebx, IsVendorScheme);\r
-  PRINT_VALUE     (Ecx, ProjectID);\r
-  PRINT_VALUE     (Edx, SteppingID);\r
+  PRINT_VALUE (Ecx, ProjectID);\r
+  PRINT_VALUE (Edx, SteppingID);\r
   CpuidSocVendorBrandString ();\r
 }\r
 \r
@@ -1367,12 +1471,15 @@ CpuidDeterministicAddressTranslationParameters (
   AsmCpuidEx (\r
     CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS,\r
     CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS_MAIN_LEAF,\r
-    &Eax, &Ebx.Uint32, &Ecx, &Edx.Uint32\r
+    &Eax,\r
+    &Ebx.Uint32,\r
+    &Ecx,\r
+    &Edx.Uint32\r
     );\r
   Print (L"CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS (Leaf %08x, Sub-Leaf %08x)\n", CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS, CPUID_DETERMINISTIC_ADDRESS_TRANSLATION_PARAMETERS_MAIN_LEAF);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax, Ebx.Uint32, Ecx, Edx.Uint32);\r
 \r
-  PRINT_VALUE     (Eax, MaxID_Index);\r
+  PRINT_VALUE (Eax, MaxID_Index);\r
   PRINT_BIT_FIELD (Ebx, Page4K);\r
   PRINT_BIT_FIELD (Ebx, Page2M);\r
   PRINT_BIT_FIELD (Ebx, Page4M);\r
@@ -1380,7 +1487,7 @@ CpuidDeterministicAddressTranslationParameters (
   PRINT_BIT_FIELD (Ebx, Partitioning);\r
   PRINT_BIT_FIELD (Ebx, Way);\r
 \r
-  PRINT_VALUE     (Ecx, NumberOfSets);\r
+  PRINT_VALUE (Ecx, NumberOfSets);\r
 \r
   PRINT_BIT_FIELD (Edx, TranslationCacheType);\r
   PRINT_BIT_FIELD (Edx, TranslationCacheLevel);\r
@@ -1402,7 +1509,7 @@ CpuidExtendedFunction (
   AsmCpuid (CPUID_EXTENDED_FUNCTION, &Eax, NULL, NULL, NULL);\r
   Print (L"CPUID_EXTENDED_FUNCTION (Leaf %08x)\n", CPUID_EXTENDED_FUNCTION);\r
   Print (L"  EAX:%08x  EBX:%08x  ECX:%08x  EDX:%08x\n", Eax, 0, 0, 0);\r
-  PRINT_VALUE     (Eax, MaximumExtendedFunction);\r
+  PRINT_VALUE (Eax, MaximumExtendedFunction);\r
 \r
   gMaximumExtendedFunction = Eax;\r
 }\r
@@ -1456,7 +1563,7 @@ CpuidProcessorBrandString (
   // 4 32-bit brand string values per leaf and an extra value to\r
   // null terminate the string.\r
   //\r
-  UINT32                   BrandString[3 * 4 + 1];\r
+  UINT32  BrandString[3 * 4 + 1];\r
 \r
   if (CPUID_BRAND_STRING1 <= gMaximumExtendedFunction) {\r
     AsmCpuid (CPUID_BRAND_STRING1, &Eax.Uint32, &Ebx.Uint32, &Ecx.Uint32, &Edx.Uint32);\r
@@ -1583,11 +1690,11 @@ UefiMain (
   CpuidVersionInfo ();\r
   CpuidCacheInfo ();\r
   CpuidSerialNumber ();\r
-  CpuidCacheParams();\r
+  CpuidCacheParams ();\r
   CpuidMonitorMwait ();\r
   CpuidThermalPowerManagement ();\r
   CpuidStructuredExtendedFeatureFlags ();\r
-  CpuidDirectCacheAccessInfo();\r
+  CpuidDirectCacheAccessInfo ();\r
   CpuidArchitecturalPerformanceMonitoring ();\r
   CpuidExtendedTopology (CPUID_EXTENDED_TOPOLOGY);\r
   CpuidExtendedStateMainLeaf ();\r
index efa0bc33084e62ff6cf082b93b75d828e3726e81..00f3cb09572cfcb2308d0fef50ab269b74fe90cb 100644 (file)
 //\r
 // Global Variables\r
 //\r
-BOOLEAN                   InterruptState = FALSE;\r
-EFI_HANDLE                mCpuHandle = NULL;\r
-BOOLEAN                   mIsFlushingGCD;\r
-BOOLEAN                   mIsAllocatingPageTable = FALSE;\r
-UINT64                    mValidMtrrAddressMask;\r
-UINT64                    mValidMtrrBitsMask;\r
-UINT64                    mTimerPeriod = 0;\r
-\r
-FIXED_MTRR    mFixedMtrrTable[] = {\r
+BOOLEAN     InterruptState = FALSE;\r
+EFI_HANDLE  mCpuHandle     = NULL;\r
+BOOLEAN     mIsFlushingGCD;\r
+BOOLEAN     mIsAllocatingPageTable = FALSE;\r
+UINT64      mValidMtrrAddressMask;\r
+UINT64      mValidMtrrBitsMask;\r
+UINT64      mTimerPeriod = 0;\r
+\r
+FIXED_MTRR  mFixedMtrrTable[] = {\r
   {\r
     MSR_IA32_MTRR_FIX64K_00000,\r
     0,\r
@@ -79,7 +79,6 @@ FIXED_MTRR    mFixedMtrrTable[] = {
   },\r
 };\r
 \r
-\r
 EFI_CPU_ARCH_PROTOCOL  gCpu = {\r
   CpuFlushCpuDataCache,\r
   CpuEnableInterrupt,\r
@@ -115,10 +114,10 @@ EFI_CPU_ARCH_PROTOCOL  gCpu = {
 EFI_STATUS\r
 EFIAPI\r
 CpuFlushCpuDataCache (\r
-  IN EFI_CPU_ARCH_PROTOCOL     *This,\r
-  IN EFI_PHYSICAL_ADDRESS      Start,\r
-  IN UINT64                    Length,\r
-  IN EFI_CPU_FLUSH_TYPE        FlushType\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This,\r
+  IN EFI_PHYSICAL_ADDRESS   Start,\r
+  IN UINT64                 Length,\r
+  IN EFI_CPU_FLUSH_TYPE     FlushType\r
   )\r
 {\r
   if (FlushType == EfiCpuFlushTypeWriteBackInvalidate) {\r
@@ -132,7 +131,6 @@ CpuFlushCpuDataCache (
   }\r
 }\r
 \r
-\r
 /**\r
   Enables CPU interrupts.\r
 \r
@@ -145,7 +143,7 @@ CpuFlushCpuDataCache (
 EFI_STATUS\r
 EFIAPI\r
 CpuEnableInterrupt (\r
-  IN EFI_CPU_ARCH_PROTOCOL          *This\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This\r
   )\r
 {\r
   EnableInterrupts ();\r
@@ -154,7 +152,6 @@ CpuEnableInterrupt (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
 /**\r
   Disables CPU interrupts.\r
 \r
@@ -167,7 +164,7 @@ CpuEnableInterrupt (
 EFI_STATUS\r
 EFIAPI\r
 CpuDisableInterrupt (\r
-  IN EFI_CPU_ARCH_PROTOCOL     *This\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This\r
   )\r
 {\r
   DisableInterrupts ();\r
@@ -176,7 +173,6 @@ CpuDisableInterrupt (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
 /**\r
   Return the state of interrupts.\r
 \r
@@ -190,8 +186,8 @@ CpuDisableInterrupt (
 EFI_STATUS\r
 EFIAPI\r
 CpuGetInterruptState (\r
-  IN  EFI_CPU_ARCH_PROTOCOL     *This,\r
-  OUT BOOLEAN                   *State\r
+  IN  EFI_CPU_ARCH_PROTOCOL  *This,\r
+  OUT BOOLEAN                *State\r
   )\r
 {\r
   if (State == NULL) {\r
@@ -202,7 +198,6 @@ CpuGetInterruptState (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
 /**\r
   Generates an INIT to the CPU.\r
 \r
@@ -218,14 +213,13 @@ CpuGetInterruptState (
 EFI_STATUS\r
 EFIAPI\r
 CpuInit (\r
-  IN EFI_CPU_ARCH_PROTOCOL      *This,\r
-  IN EFI_CPU_INIT_TYPE          InitType\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This,\r
+  IN EFI_CPU_INIT_TYPE      InitType\r
   )\r
 {\r
   return EFI_UNSUPPORTED;\r
 }\r
 \r
-\r
 /**\r
   Registers a function to be called from the CPU interrupt handler.\r
 \r
@@ -249,15 +243,14 @@ CpuInit (
 EFI_STATUS\r
 EFIAPI\r
 CpuRegisterInterruptHandler (\r
-  IN EFI_CPU_ARCH_PROTOCOL         *This,\r
-  IN EFI_EXCEPTION_TYPE            InterruptType,\r
-  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
+  IN EFI_CPU_ARCH_PROTOCOL      *This,\r
+  IN EFI_EXCEPTION_TYPE         InterruptType,\r
+  IN EFI_CPU_INTERRUPT_HANDLER  InterruptHandler\r
   )\r
 {\r
   return RegisterCpuInterruptHandler (InterruptType, InterruptHandler);\r
 }\r
 \r
-\r
 /**\r
   Returns a timer value from one of the CPU's internal timers. There is no\r
   inherent time interval between ticks but is a function of the CPU frequency.\r
@@ -284,14 +277,14 @@ CpuRegisterInterruptHandler (
 EFI_STATUS\r
 EFIAPI\r
 CpuGetTimerValue (\r
-  IN  EFI_CPU_ARCH_PROTOCOL     *This,\r
-  IN  UINT32                    TimerIndex,\r
-  OUT UINT64                    *TimerValue,\r
-  OUT UINT64                    *TimerPeriod OPTIONAL\r
+  IN  EFI_CPU_ARCH_PROTOCOL  *This,\r
+  IN  UINT32                 TimerIndex,\r
+  OUT UINT64                 *TimerValue,\r
+  OUT UINT64                 *TimerPeriod OPTIONAL\r
   )\r
 {\r
-  UINT64          BeginValue;\r
-  UINT64          EndValue;\r
+  UINT64  BeginValue;\r
+  UINT64  EndValue;\r
 \r
   if (TimerValue == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -310,7 +303,7 @@ CpuGetTimerValue (
       //\r
       BeginValue = AsmReadTsc ();\r
       MicroSecondDelay (100);\r
-      EndValue   = AsmReadTsc ();\r
+      EndValue = AsmReadTsc ();\r
       //\r
       // Calculate the actual frequency\r
       //\r
@@ -323,6 +316,7 @@ CpuGetTimerValue (
                        NULL\r
                        );\r
     }\r
+\r
     *TimerPeriod = mTimerPeriod;\r
   }\r
 \r
@@ -339,7 +333,7 @@ CpuGetTimerValue (
 VOID\r
 EFIAPI\r
 SetMtrrsFromBuffer (\r
-  IN VOID *Buffer\r
+  IN VOID  *Buffer\r
   )\r
 {\r
   MtrrSetAllMtrrs (Buffer);\r
@@ -373,10 +367,10 @@ SetMtrrsFromBuffer (
 EFI_STATUS\r
 EFIAPI\r
 CpuSetMemoryAttributes (\r
-  IN EFI_CPU_ARCH_PROTOCOL     *This,\r
-  IN EFI_PHYSICAL_ADDRESS      BaseAddress,\r
-  IN UINT64                    Length,\r
-  IN UINT64                    Attributes\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This,\r
+  IN EFI_PHYSICAL_ADDRESS   BaseAddress,\r
+  IN UINT64                 Length,\r
+  IN UINT64                 Attributes\r
   )\r
 {\r
   RETURN_STATUS             Status;\r
@@ -395,7 +389,7 @@ CpuSetMemoryAttributes (
   // to avoid unnecessary computing.\r
   //\r
   if (mIsFlushingGCD) {\r
-    DEBUG((DEBUG_VERBOSE, "  Flushing GCD\n"));\r
+    DEBUG ((DEBUG_VERBOSE, "  Flushing GCD\n"));\r
     return EFI_SUCCESS;\r
   }\r
 \r
@@ -410,11 +404,11 @@ CpuSetMemoryAttributes (
   // by page table memory allocation.\r
   //\r
   if (mIsAllocatingPageTable) {\r
-    DEBUG((DEBUG_VERBOSE, "  Allocating page table memory\n"));\r
+    DEBUG ((DEBUG_VERBOSE, "  Allocating page table memory\n"));\r
     return EFI_SUCCESS;\r
   }\r
 \r
-  CacheAttributes = Attributes & EFI_CACHE_ATTRIBUTE_MASK;\r
+  CacheAttributes  = Attributes & EFI_CACHE_ATTRIBUTE_MASK;\r
   MemoryAttributes = Attributes & EFI_MEMORY_ATTRIBUTE_MASK;\r
 \r
   if (Attributes != (CacheAttributes | MemoryAttributes)) {\r
@@ -427,30 +421,31 @@ CpuSetMemoryAttributes (
     }\r
 \r
     switch (CacheAttributes) {\r
-    case EFI_MEMORY_UC:\r
-      CacheType = CacheUncacheable;\r
-      break;\r
+      case EFI_MEMORY_UC:\r
+        CacheType = CacheUncacheable;\r
+        break;\r
 \r
-    case EFI_MEMORY_WC:\r
-      CacheType = CacheWriteCombining;\r
-      break;\r
+      case EFI_MEMORY_WC:\r
+        CacheType = CacheWriteCombining;\r
+        break;\r
 \r
-    case EFI_MEMORY_WT:\r
-      CacheType = CacheWriteThrough;\r
-      break;\r
+      case EFI_MEMORY_WT:\r
+        CacheType = CacheWriteThrough;\r
+        break;\r
 \r
-    case EFI_MEMORY_WP:\r
-      CacheType = CacheWriteProtected;\r
-      break;\r
+      case EFI_MEMORY_WP:\r
+        CacheType = CacheWriteProtected;\r
+        break;\r
 \r
-    case EFI_MEMORY_WB:\r
-      CacheType = CacheWriteBack;\r
-      break;\r
+      case EFI_MEMORY_WB:\r
+        CacheType = CacheWriteBack;\r
+        break;\r
 \r
-    default:\r
-      return EFI_INVALID_PARAMETER;\r
+      default:\r
+        return EFI_INVALID_PARAMETER;\r
     }\r
-    CurrentCacheType = MtrrGetMemoryAttribute(BaseAddress);\r
+\r
+    CurrentCacheType = MtrrGetMemoryAttribute (BaseAddress);\r
     if (CurrentCacheType != CacheType) {\r
       //\r
       // call MTRR library function\r
@@ -484,7 +479,8 @@ CpuSetMemoryAttributes (
           ASSERT (MpStatus == EFI_SUCCESS || MpStatus == EFI_NOT_STARTED);\r
         }\r
       }\r
-      if (EFI_ERROR(Status)) {\r
+\r
+      if (EFI_ERROR (Status)) {\r
         return Status;\r
       }\r
     }\r
@@ -507,15 +503,15 @@ InitializeMtrrMask (
   VOID\r
   )\r
 {\r
-  UINT32                              RegEax;\r
-  UINT8                               PhysicalAddressBits;\r
+  UINT32  RegEax;\r
+  UINT8   PhysicalAddressBits;\r
 \r
   AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
 \r
   if (RegEax >= 0x80000008) {\r
     AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL);\r
 \r
-    PhysicalAddressBits = (UINT8) RegEax;\r
+    PhysicalAddressBits = (UINT8)RegEax;\r
   } else {\r
     PhysicalAddressBits = 36;\r
   }\r
@@ -536,22 +532,22 @@ InitializeMtrrMask (
 **/\r
 UINT64\r
 GetMemorySpaceAttributeFromMtrrType (\r
-  IN UINT8                MtrrAttributes\r
+  IN UINT8  MtrrAttributes\r
   )\r
 {\r
   switch (MtrrAttributes) {\r
-  case MTRR_CACHE_UNCACHEABLE:\r
-    return EFI_MEMORY_UC;\r
-  case MTRR_CACHE_WRITE_COMBINING:\r
-    return EFI_MEMORY_WC;\r
-  case MTRR_CACHE_WRITE_THROUGH:\r
-    return EFI_MEMORY_WT;\r
-  case MTRR_CACHE_WRITE_PROTECTED:\r
-    return EFI_MEMORY_WP;\r
-  case MTRR_CACHE_WRITE_BACK:\r
-    return EFI_MEMORY_WB;\r
-  default:\r
-    return 0;\r
+    case MTRR_CACHE_UNCACHEABLE:\r
+      return EFI_MEMORY_UC;\r
+    case MTRR_CACHE_WRITE_COMBINING:\r
+      return EFI_MEMORY_WC;\r
+    case MTRR_CACHE_WRITE_THROUGH:\r
+      return EFI_MEMORY_WT;\r
+    case MTRR_CACHE_WRITE_PROTECTED:\r
+      return EFI_MEMORY_WP;\r
+    case MTRR_CACHE_WRITE_BACK:\r
+      return EFI_MEMORY_WB;\r
+    default:\r
+      return 0;\r
   }\r
 }\r
 \r
@@ -575,29 +571,33 @@ GetMemorySpaceAttributeFromMtrrType (
 **/\r
 EFI_STATUS\r
 SearchGcdMemorySpaces (\r
-  IN EFI_GCD_MEMORY_SPACE_DESCRIPTOR     *MemorySpaceMap,\r
-  IN UINTN                               NumberOfDescriptors,\r
-  IN EFI_PHYSICAL_ADDRESS                BaseAddress,\r
-  IN UINT64                              Length,\r
-  OUT UINTN                              *StartIndex,\r
-  OUT UINTN                              *EndIndex\r
+  IN EFI_GCD_MEMORY_SPACE_DESCRIPTOR  *MemorySpaceMap,\r
+  IN UINTN                            NumberOfDescriptors,\r
+  IN EFI_PHYSICAL_ADDRESS             BaseAddress,\r
+  IN UINT64                           Length,\r
+  OUT UINTN                           *StartIndex,\r
+  OUT UINTN                           *EndIndex\r
   )\r
 {\r
-  UINTN           Index;\r
+  UINTN  Index;\r
 \r
   *StartIndex = 0;\r
   *EndIndex   = 0;\r
   for (Index = 0; Index < NumberOfDescriptors; Index++) {\r
-    if (BaseAddress >= MemorySpaceMap[Index].BaseAddress &&\r
-        BaseAddress < MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length) {\r
+    if ((BaseAddress >= MemorySpaceMap[Index].BaseAddress) &&\r
+        (BaseAddress < MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length))\r
+    {\r
       *StartIndex = Index;\r
     }\r
-    if (BaseAddress + Length - 1 >= MemorySpaceMap[Index].BaseAddress &&\r
-        BaseAddress + Length - 1 < MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length) {\r
+\r
+    if ((BaseAddress + Length - 1 >= MemorySpaceMap[Index].BaseAddress) &&\r
+        (BaseAddress + Length - 1 < MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length))\r
+    {\r
       *EndIndex = Index;\r
       return EFI_SUCCESS;\r
     }\r
   }\r
+\r
   return EFI_NOT_FOUND;\r
 }\r
 \r
@@ -619,11 +619,11 @@ SearchGcdMemorySpaces (
 **/\r
 EFI_STATUS\r
 SetGcdMemorySpaceAttributes (\r
-  IN EFI_GCD_MEMORY_SPACE_DESCRIPTOR     *MemorySpaceMap,\r
-  IN UINTN                               NumberOfDescriptors,\r
-  IN EFI_PHYSICAL_ADDRESS                BaseAddress,\r
-  IN UINT64                              Length,\r
-  IN UINT64                              Attributes\r
+  IN EFI_GCD_MEMORY_SPACE_DESCRIPTOR  *MemorySpaceMap,\r
+  IN UINTN                            NumberOfDescriptors,\r
+  IN EFI_PHYSICAL_ADDRESS             BaseAddress,\r
+  IN UINT64                           Length,\r
+  IN UINT64                           Attributes\r
   )\r
 {\r
   EFI_STATUS            Status;\r
@@ -655,6 +655,7 @@ SetGcdMemorySpaceAttributes (
     if (MemorySpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeNonExistent) {\r
       continue;\r
     }\r
+\r
     //\r
     // Calculate the start and end address of the overlapping range\r
     //\r
@@ -663,11 +664,13 @@ SetGcdMemorySpaceAttributes (
     } else {\r
       RegionStart = MemorySpaceMap[Index].BaseAddress;\r
     }\r
+\r
     if (BaseAddress + Length - 1 < MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length) {\r
       RegionLength = BaseAddress + Length - RegionStart;\r
     } else {\r
       RegionLength = MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - RegionStart;\r
     }\r
+\r
     //\r
     // Set memory attributes according to MTRR attribute and the original attribute of descriptor\r
     //\r
@@ -681,7 +684,6 @@ SetGcdMemorySpaceAttributes (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
 /**\r
   Refreshes the GCD Memory Space attributes according to MTRRs.\r
 \r
@@ -693,22 +695,22 @@ RefreshMemoryAttributesFromMtrr (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                          Status;\r
-  UINTN                               Index;\r
-  UINTN                               SubIndex;\r
-  UINT64                              RegValue;\r
-  EFI_PHYSICAL_ADDRESS                BaseAddress;\r
-  UINT64                              Length;\r
-  UINT64                              Attributes;\r
-  UINT64                              CurrentAttributes;\r
-  UINT8                               MtrrType;\r
-  UINTN                               NumberOfDescriptors;\r
-  EFI_GCD_MEMORY_SPACE_DESCRIPTOR     *MemorySpaceMap;\r
-  UINT64                              DefaultAttributes;\r
-  VARIABLE_MTRR                       VariableMtrr[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
-  MTRR_FIXED_SETTINGS                 MtrrFixedSettings;\r
-  UINT32                              FirmwareVariableMtrrCount;\r
-  UINT8                               DefaultMemoryType;\r
+  EFI_STATUS                       Status;\r
+  UINTN                            Index;\r
+  UINTN                            SubIndex;\r
+  UINT64                           RegValue;\r
+  EFI_PHYSICAL_ADDRESS             BaseAddress;\r
+  UINT64                           Length;\r
+  UINT64                           Attributes;\r
+  UINT64                           CurrentAttributes;\r
+  UINT8                            MtrrType;\r
+  UINTN                            NumberOfDescriptors;\r
+  EFI_GCD_MEMORY_SPACE_DESCRIPTOR  *MemorySpaceMap;\r
+  UINT64                           DefaultAttributes;\r
+  VARIABLE_MTRR                    VariableMtrr[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
+  MTRR_FIXED_SETTINGS              MtrrFixedSettings;\r
+  UINT32                           FirmwareVariableMtrrCount;\r
+  UINT8                            DefaultMemoryType;\r
 \r
   FirmwareVariableMtrrCount = GetFirmwareVariableMtrrCount ();\r
   ASSERT (FirmwareVariableMtrrCount <= MTRR_NUMBER_OF_VARIABLE_MTRR);\r
@@ -738,7 +740,7 @@ RefreshMemoryAttributesFromMtrr (
                   );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  DefaultMemoryType = (UINT8) MtrrGetDefaultMemoryType ();\r
+  DefaultMemoryType = (UINT8)MtrrGetDefaultMemoryType ();\r
   DefaultAttributes = GetMemorySpaceAttributeFromMtrrType (DefaultMemoryType);\r
 \r
   //\r
@@ -748,6 +750,7 @@ RefreshMemoryAttributesFromMtrr (
     if (MemorySpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeNonExistent) {\r
       continue;\r
     }\r
+\r
     gDS->SetMemorySpaceAttributes (\r
            MemorySpaceMap[Index].BaseAddress,\r
            MemorySpaceMap[Index].Length,\r
@@ -761,7 +764,8 @@ RefreshMemoryAttributesFromMtrr (
   //\r
   for (Index = 0; Index < FirmwareVariableMtrrCount; Index++) {\r
     if (VariableMtrr[Index].Valid &&\r
-        VariableMtrr[Index].Type == MTRR_CACHE_WRITE_BACK) {\r
+        (VariableMtrr[Index].Type == MTRR_CACHE_WRITE_BACK))\r
+    {\r
       SetGcdMemorySpaceAttributes (\r
         MemorySpaceMap,\r
         NumberOfDescriptors,\r
@@ -777,9 +781,10 @@ RefreshMemoryAttributesFromMtrr (
   //\r
   for (Index = 0; Index < FirmwareVariableMtrrCount; Index++) {\r
     if (VariableMtrr[Index].Valid &&\r
-        VariableMtrr[Index].Type != MTRR_CACHE_WRITE_BACK &&\r
-        VariableMtrr[Index].Type != MTRR_CACHE_UNCACHEABLE) {\r
-      Attributes = GetMemorySpaceAttributeFromMtrrType ((UINT8) VariableMtrr[Index].Type);\r
+        (VariableMtrr[Index].Type != MTRR_CACHE_WRITE_BACK) &&\r
+        (VariableMtrr[Index].Type != MTRR_CACHE_UNCACHEABLE))\r
+    {\r
+      Attributes = GetMemorySpaceAttributeFromMtrrType ((UINT8)VariableMtrr[Index].Type);\r
       SetGcdMemorySpaceAttributes (\r
         MemorySpaceMap,\r
         NumberOfDescriptors,\r
@@ -795,7 +800,8 @@ RefreshMemoryAttributesFromMtrr (
   //\r
   for (Index = 0; Index < FirmwareVariableMtrrCount; Index++) {\r
     if (VariableMtrr[Index].Valid &&\r
-        VariableMtrr[Index].Type == MTRR_CACHE_UNCACHEABLE) {\r
+        (VariableMtrr[Index].Type == MTRR_CACHE_UNCACHEABLE))\r
+    {\r
       SetGcdMemorySpaceAttributes (\r
         MemorySpaceMap,\r
         NumberOfDescriptors,\r
@@ -819,7 +825,7 @@ RefreshMemoryAttributesFromMtrr (
     // Check for continuous fixed MTRR sections\r
     //\r
     for (SubIndex = 0; SubIndex < 8; SubIndex++) {\r
-      MtrrType = (UINT8) RShiftU64 (RegValue, SubIndex * 8);\r
+      MtrrType          = (UINT8)RShiftU64 (RegValue, SubIndex * 8);\r
       CurrentAttributes = GetMemorySpaceAttributeFromMtrrType (MtrrType);\r
       if (Length == 0) {\r
         //\r
@@ -839,13 +845,15 @@ RefreshMemoryAttributesFromMtrr (
             Attributes\r
             );\r
           BaseAddress = mFixedMtrrTable[Index].BaseAddress + mFixedMtrrTable[Index].Length * SubIndex;\r
-          Length = 0;\r
-          Attributes = CurrentAttributes;\r
+          Length      = 0;\r
+          Attributes  = CurrentAttributes;\r
         }\r
       }\r
+\r
       Length += mFixedMtrrTable[Index].Length;\r
     }\r
   }\r
+\r
   //\r
   // Handle the last fixed MTRR region\r
   //\r
@@ -916,20 +924,20 @@ InitInterruptDescriptorTable (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                     Status;\r
-  EFI_VECTOR_HANDOFF_INFO        *VectorInfoList;\r
-  EFI_VECTOR_HANDOFF_INFO        *VectorInfo;\r
+  EFI_STATUS               Status;\r
+  EFI_VECTOR_HANDOFF_INFO  *VectorInfoList;\r
+  EFI_VECTOR_HANDOFF_INFO  *VectorInfo;\r
 \r
   VectorInfo = NULL;\r
-  Status = EfiGetSystemConfigurationTable (&gEfiVectorHandoffTableGuid, (VOID **) &VectorInfoList);\r
-  if (Status == EFI_SUCCESS && VectorInfoList != NULL) {\r
+  Status     = EfiGetSystemConfigurationTable (&gEfiVectorHandoffTableGuid, (VOID **)&VectorInfoList);\r
+  if ((Status == EFI_SUCCESS) && (VectorInfoList != NULL)) {\r
     VectorInfo = VectorInfoList;\r
   }\r
+\r
   Status = InitializeCpuInterruptHandlers (VectorInfo);\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
-\r
 /**\r
   Callback function for idle events.\r
 \r
@@ -941,8 +949,8 @@ InitInterruptDescriptorTable (
 VOID\r
 EFIAPI\r
 IdleLoopEventCallback (\r
-  IN EFI_EVENT                Event,\r
-  IN VOID                     *Context\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
   )\r
 {\r
   CpuSleep ();\r
@@ -989,24 +997,27 @@ IdleLoopEventCallback (
 **/\r
 EFI_STATUS\r
 IntersectMemoryDescriptor (\r
-  IN  UINT64                                Base,\r
-  IN  UINT64                                Length,\r
-  IN  UINT64                                Capabilities,\r
-  IN  CONST EFI_GCD_MEMORY_SPACE_DESCRIPTOR *Descriptor\r
+  IN  UINT64                                 Base,\r
+  IN  UINT64                                 Length,\r
+  IN  UINT64                                 Capabilities,\r
+  IN  CONST EFI_GCD_MEMORY_SPACE_DESCRIPTOR  *Descriptor\r
   )\r
 {\r
-  UINT64                                    IntersectionBase;\r
-  UINT64                                    IntersectionEnd;\r
-  EFI_STATUS                                Status;\r
+  UINT64      IntersectionBase;\r
+  UINT64      IntersectionEnd;\r
+  EFI_STATUS  Status;\r
 \r
-  if (Descriptor->GcdMemoryType == EfiGcdMemoryTypeMemoryMappedIo &&\r
-      (Descriptor->Capabilities & Capabilities) == Capabilities) {\r
+  if ((Descriptor->GcdMemoryType == EfiGcdMemoryTypeMemoryMappedIo) &&\r
+      ((Descriptor->Capabilities & Capabilities) == Capabilities))\r
+  {\r
     return EFI_SUCCESS;\r
   }\r
 \r
   IntersectionBase = MAX (Base, Descriptor->BaseAddress);\r
-  IntersectionEnd = MIN (Base + Length,\r
-                      Descriptor->BaseAddress + Descriptor->Length);\r
+  IntersectionEnd  = MIN (\r
+                       Base + Length,\r
+                       Descriptor->BaseAddress + Descriptor->Length\r
+                       );\r
   if (IntersectionBase >= IntersectionEnd) {\r
     //\r
     // The descriptor and the aperture don't overlap.\r
@@ -1015,21 +1026,39 @@ IntersectMemoryDescriptor (
   }\r
 \r
   if (Descriptor->GcdMemoryType == EfiGcdMemoryTypeNonExistent) {\r
-    Status = gDS->AddMemorySpace (EfiGcdMemoryTypeMemoryMappedIo,\r
-                    IntersectionBase, IntersectionEnd - IntersectionBase,\r
-                    Capabilities);\r
-\r
-    DEBUG ((EFI_ERROR (Status) ? DEBUG_ERROR : DEBUG_VERBOSE,\r
-      "%a: %a: add [%Lx, %Lx): %r\n", gEfiCallerBaseName, __FUNCTION__,\r
-      IntersectionBase, IntersectionEnd, Status));\r
+    Status = gDS->AddMemorySpace (\r
+                    EfiGcdMemoryTypeMemoryMappedIo,\r
+                    IntersectionBase,\r
+                    IntersectionEnd - IntersectionBase,\r
+                    Capabilities\r
+                    );\r
+\r
+    DEBUG ((\r
+      EFI_ERROR (Status) ? DEBUG_ERROR : DEBUG_VERBOSE,\r
+      "%a: %a: add [%Lx, %Lx): %r\n",\r
+      gEfiCallerBaseName,\r
+      __FUNCTION__,\r
+      IntersectionBase,\r
+      IntersectionEnd,\r
+      Status\r
+      ));\r
     return Status;\r
   }\r
 \r
-  DEBUG ((DEBUG_ERROR, "%a: %a: desc [%Lx, %Lx) type %u cap %Lx conflicts "\r
-    "with aperture [%Lx, %Lx) cap %Lx\n", gEfiCallerBaseName, __FUNCTION__,\r
-    Descriptor->BaseAddress, Descriptor->BaseAddress + Descriptor->Length,\r
-    (UINT32)Descriptor->GcdMemoryType, Descriptor->Capabilities,\r
-    Base, Base + Length, Capabilities));\r
+  DEBUG ((\r
+    DEBUG_ERROR,\r
+    "%a: %a: desc [%Lx, %Lx) type %u cap %Lx conflicts "\r
+    "with aperture [%Lx, %Lx) cap %Lx\n",\r
+    gEfiCallerBaseName,\r
+    __FUNCTION__,\r
+    Descriptor->BaseAddress,\r
+    Descriptor->BaseAddress + Descriptor->Length,\r
+    (UINT32)Descriptor->GcdMemoryType,\r
+    Descriptor->Capabilities,\r
+    Base,\r
+    Base + Length,\r
+    Capabilities\r
+    ));\r
   return EFI_INVALID_PARAMETER;\r
 }\r
 \r
@@ -1046,49 +1075,60 @@ IntersectMemoryDescriptor (
 **/\r
 EFI_STATUS\r
 AddMemoryMappedIoSpace (\r
-  IN  UINT64                            Base,\r
-  IN  UINT64                            Length,\r
-  IN  UINT64                            Capabilities\r
+  IN  UINT64  Base,\r
+  IN  UINT64  Length,\r
+  IN  UINT64  Capabilities\r
   )\r
 {\r
-  EFI_STATUS                            Status;\r
-  UINTN                                 Index;\r
-  UINTN                                 NumberOfDescriptors;\r
-  EFI_GCD_MEMORY_SPACE_DESCRIPTOR       *MemorySpaceMap;\r
+  EFI_STATUS                       Status;\r
+  UINTN                            Index;\r
+  UINTN                            NumberOfDescriptors;\r
+  EFI_GCD_MEMORY_SPACE_DESCRIPTOR  *MemorySpaceMap;\r
 \r
   Status = gDS->GetMemorySpaceMap (&NumberOfDescriptors, &MemorySpaceMap);\r
   if (EFI_ERROR (Status)) {\r
-    DEBUG ((DEBUG_ERROR, "%a: %a: GetMemorySpaceMap(): %r\n",\r
-      gEfiCallerBaseName, __FUNCTION__, Status));\r
+    DEBUG ((\r
+      DEBUG_ERROR,\r
+      "%a: %a: GetMemorySpaceMap(): %r\n",\r
+      gEfiCallerBaseName,\r
+      __FUNCTION__,\r
+      Status\r
+      ));\r
     return Status;\r
   }\r
 \r
   for (Index = 0; Index < NumberOfDescriptors; Index++) {\r
-    Status = IntersectMemoryDescriptor (Base, Length, Capabilities,\r
-               &MemorySpaceMap[Index]);\r
+    Status = IntersectMemoryDescriptor (\r
+               Base,\r
+               Length,\r
+               Capabilities,\r
+               &MemorySpaceMap[Index]\r
+               );\r
     if (EFI_ERROR (Status)) {\r
       goto FreeMemorySpaceMap;\r
     }\r
   }\r
 \r
   DEBUG_CODE_BEGIN ();\r
-    //\r
-    // Make sure there are adjacent descriptors covering [Base, Base + Length).\r
-    // It is possible that they have not been merged; merging can be prevented\r
-    // by allocation and different capabilities.\r
-    //\r
-    UINT64                          CheckBase;\r
-    EFI_STATUS                      CheckStatus;\r
-    EFI_GCD_MEMORY_SPACE_DESCRIPTOR Descriptor;\r
-\r
-    for (CheckBase = Base;\r
-         CheckBase < Base + Length;\r
-         CheckBase = Descriptor.BaseAddress + Descriptor.Length) {\r
-      CheckStatus = gDS->GetMemorySpaceDescriptor (CheckBase, &Descriptor);\r
-      ASSERT_EFI_ERROR (CheckStatus);\r
-      ASSERT (Descriptor.GcdMemoryType == EfiGcdMemoryTypeMemoryMappedIo);\r
-      ASSERT ((Descriptor.Capabilities & Capabilities) == Capabilities);\r
-    }\r
+  //\r
+  // Make sure there are adjacent descriptors covering [Base, Base + Length).\r
+  // It is possible that they have not been merged; merging can be prevented\r
+  // by allocation and different capabilities.\r
+  //\r
+  UINT64                           CheckBase;\r
+  EFI_STATUS                       CheckStatus;\r
+  EFI_GCD_MEMORY_SPACE_DESCRIPTOR  Descriptor;\r
+\r
+  for (CheckBase = Base;\r
+       CheckBase < Base + Length;\r
+       CheckBase = Descriptor.BaseAddress + Descriptor.Length)\r
+  {\r
+    CheckStatus = gDS->GetMemorySpaceDescriptor (CheckBase, &Descriptor);\r
+    ASSERT_EFI_ERROR (CheckStatus);\r
+    ASSERT (Descriptor.GcdMemoryType == EfiGcdMemoryTypeMemoryMappedIo);\r
+    ASSERT ((Descriptor.Capabilities & Capabilities) == Capabilities);\r
+  }\r
+\r
   DEBUG_CODE_END ();\r
 \r
 FreeMemorySpaceMap:\r
@@ -1105,14 +1145,14 @@ FreeMemorySpaceMap:
 **/\r
 VOID\r
 AddLocalApicMemorySpace (\r
-  IN EFI_HANDLE               ImageHandle\r
+  IN EFI_HANDLE  ImageHandle\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
-  EFI_PHYSICAL_ADDRESS    BaseAddress;\r
+  EFI_STATUS            Status;\r
+  EFI_PHYSICAL_ADDRESS  BaseAddress;\r
 \r
-  BaseAddress = (EFI_PHYSICAL_ADDRESS) GetLocalApicBaseAddress();\r
-  Status = AddMemoryMappedIoSpace (BaseAddress, SIZE_4KB, EFI_MEMORY_UC);\r
+  BaseAddress = (EFI_PHYSICAL_ADDRESS)GetLocalApicBaseAddress ();\r
+  Status      = AddMemoryMappedIoSpace (BaseAddress, SIZE_4KB, EFI_MEMORY_UC);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   //\r
@@ -1130,8 +1170,13 @@ AddLocalApicMemorySpace (
                   NULL\r
                   );\r
   if (EFI_ERROR (Status)) {\r
-    DEBUG ((DEBUG_INFO, "%a: %a: AllocateMemorySpace() Status - %r\n",\r
-                         gEfiCallerBaseName, __FUNCTION__, Status));\r
+    DEBUG ((\r
+      DEBUG_INFO,\r
+      "%a: %a: AllocateMemorySpace() Status - %r\n",\r
+      gEfiCallerBaseName,\r
+      __FUNCTION__,\r
+      Status\r
+      ));\r
   }\r
 }\r
 \r
@@ -1149,14 +1194,14 @@ AddLocalApicMemorySpace (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpu (\r
-  IN EFI_HANDLE                            ImageHandle,\r
-  IN EFI_SYSTEM_TABLE                      *SystemTable\r
+  IN EFI_HANDLE        ImageHandle,\r
+  IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
   EFI_STATUS  Status;\r
   EFI_EVENT   IdleLoopEvent;\r
 \r
-  InitializePageTableLib();\r
+  InitializePageTableLib ();\r
 \r
   InitializeFloatingPointUnits ();\r
 \r
@@ -1180,7 +1225,8 @@ InitializeCpu (
   //\r
   Status = gBS->InstallMultipleProtocolInterfaces (\r
                   &mCpuHandle,\r
-                  &gEfiCpuArchProtocolGuid, &gCpu,\r
+                  &gEfiCpuArchProtocolGuid,\r
+                  &gCpu,\r
                   NULL\r
                   );\r
   ASSERT_EFI_ERROR (Status);\r
index 9771ec8336fcbd9d5f872491aee9a76fe0334d11..2208671cb93275f3ab1daf81b0ecb2c1f313454c 100644 (file)
 EFI_STATUS\r
 EFIAPI\r
 CpuFlushCpuDataCache (\r
-  IN EFI_CPU_ARCH_PROTOCOL     *This,\r
-  IN EFI_PHYSICAL_ADDRESS      Start,\r
-  IN UINT64                    Length,\r
-  IN EFI_CPU_FLUSH_TYPE        FlushType\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This,\r
+  IN EFI_PHYSICAL_ADDRESS   Start,\r
+  IN UINT64                 Length,\r
+  IN EFI_CPU_FLUSH_TYPE     FlushType\r
   );\r
 \r
 /**\r
@@ -81,7 +81,7 @@ CpuFlushCpuDataCache (
 EFI_STATUS\r
 EFIAPI\r
 CpuEnableInterrupt (\r
-  IN EFI_CPU_ARCH_PROTOCOL     *This\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This\r
   );\r
 \r
 /**\r
@@ -96,7 +96,7 @@ CpuEnableInterrupt (
 EFI_STATUS\r
 EFIAPI\r
 CpuDisableInterrupt (\r
-  IN EFI_CPU_ARCH_PROTOCOL     *This\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This\r
   );\r
 \r
 /**\r
@@ -112,8 +112,8 @@ CpuDisableInterrupt (
 EFI_STATUS\r
 EFIAPI\r
 CpuGetInterruptState (\r
-  IN  EFI_CPU_ARCH_PROTOCOL     *This,\r
-  OUT BOOLEAN                   *State\r
+  IN  EFI_CPU_ARCH_PROTOCOL  *This,\r
+  OUT BOOLEAN                *State\r
   );\r
 \r
 /**\r
@@ -131,8 +131,8 @@ CpuGetInterruptState (
 EFI_STATUS\r
 EFIAPI\r
 CpuInit (\r
-  IN EFI_CPU_ARCH_PROTOCOL     *This,\r
-  IN EFI_CPU_INIT_TYPE         InitType\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This,\r
+  IN EFI_CPU_INIT_TYPE      InitType\r
   );\r
 \r
 /**\r
@@ -158,9 +158,9 @@ CpuInit (
 EFI_STATUS\r
 EFIAPI\r
 CpuRegisterInterruptHandler (\r
-  IN EFI_CPU_ARCH_PROTOCOL         *This,\r
-  IN EFI_EXCEPTION_TYPE            InterruptType,\r
-  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
+  IN EFI_CPU_ARCH_PROTOCOL      *This,\r
+  IN EFI_EXCEPTION_TYPE         InterruptType,\r
+  IN EFI_CPU_INTERRUPT_HANDLER  InterruptHandler\r
   );\r
 \r
 /**\r
@@ -189,10 +189,10 @@ CpuRegisterInterruptHandler (
 EFI_STATUS\r
 EFIAPI\r
 CpuGetTimerValue (\r
-  IN  EFI_CPU_ARCH_PROTOCOL       *This,\r
-  IN  UINT32                      TimerIndex,\r
-  OUT UINT64                      *TimerValue,\r
-  OUT UINT64                      *TimerPeriod OPTIONAL\r
+  IN  EFI_CPU_ARCH_PROTOCOL  *This,\r
+  IN  UINT32                 TimerIndex,\r
+  OUT UINT64                 *TimerValue,\r
+  OUT UINT64                 *TimerPeriod OPTIONAL\r
   );\r
 \r
 /**\r
@@ -214,10 +214,10 @@ CpuGetTimerValue (
 EFI_STATUS\r
 EFIAPI\r
 CpuSetMemoryAttributes (\r
-  IN EFI_CPU_ARCH_PROTOCOL      *This,\r
-  IN EFI_PHYSICAL_ADDRESS       BaseAddress,\r
-  IN UINT64                     Length,\r
-  IN UINT64                     Attributes\r
+  IN EFI_CPU_ARCH_PROTOCOL  *This,\r
+  IN EFI_PHYSICAL_ADDRESS   BaseAddress,\r
+  IN UINT64                 Length,\r
+  IN UINT64                 Attributes\r
   );\r
 \r
 /**\r
@@ -238,7 +238,7 @@ InitGlobalDescriptorTable (
 VOID\r
 EFIAPI\r
 SetCodeSelector (\r
-  UINT16 Selector\r
+  UINT16  Selector\r
   );\r
 \r
 /**\r
@@ -250,7 +250,7 @@ SetCodeSelector (
 VOID\r
 EFIAPI\r
 SetDataSelectors (\r
-  UINT16 Selector\r
+  UINT16  Selector\r
   );\r
 \r
 /**\r
@@ -273,8 +273,8 @@ RefreshGcdMemoryAttributesFromPaging (
 VOID\r
 EFIAPI\r
 DebugExceptionHandler (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   );\r
 \r
 /**\r
@@ -289,12 +289,11 @@ DebugExceptionHandler (
 VOID\r
 EFIAPI\r
 PageFaultExceptionHandler (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   );\r
 \r
-extern BOOLEAN mIsAllocatingPageTable;\r
-extern UINTN   mNumberOfProcessors;\r
+extern BOOLEAN  mIsAllocatingPageTable;\r
+extern UINTN    mNumberOfProcessors;\r
 \r
 #endif\r
-\r
index 692402c55df4aaa77bebfde7a422989ff8936fec..cf571138e5768913b8e74b3d7492b5e50b6adbc9 100644 (file)
@@ -13,7 +13,7 @@
 //\r
 // Global descriptor table (GDT) Template\r
 //\r
-STATIC GDT_ENTRIES mGdtTemplate = {\r
+STATIC GDT_ENTRIES  mGdtTemplate = {\r
   //\r
   // NULL_SEL\r
   //\r
@@ -143,7 +143,7 @@ InitGlobalDescriptorTable (
                   );\r
   ASSERT_EFI_ERROR (Status);\r
   ASSERT ((Memory != 0) && (Memory < SIZE_4GB));\r
-  Gdt = (GDT_ENTRIES *) (UINTN) Memory;\r
+  Gdt = (GDT_ENTRIES *)(UINTN)Memory;\r
 \r
   //\r
   // Initialize all GDT entries\r
@@ -153,8 +153,8 @@ InitGlobalDescriptorTable (
   //\r
   // Write GDT register\r
   //\r
-  Gdtr.Base  = (UINT32) (UINTN) Gdt;\r
-  Gdtr.Limit = (UINT16) (sizeof (mGdtTemplate) - 1);\r
+  Gdtr.Base  = (UINT32)(UINTN)Gdt;\r
+  Gdtr.Limit = (UINT16)(sizeof (mGdtTemplate) - 1);\r
   AsmWriteGdtr (&Gdtr);\r
 \r
   //\r
index 1c94487cbee8a36986c71fc0141d0e6750f4cab9..b09f15725a5d75acfab5f9598f5f0297919482e0 100644 (file)
 //\r
 \r
 typedef struct _GDT_ENTRY {\r
-  UINT16 Limit15_0;\r
-  UINT16 Base15_0;\r
-  UINT8  Base23_16;\r
-  UINT8  Type;\r
-  UINT8  Limit19_16_and_flags;\r
-  UINT8  Base31_24;\r
+  UINT16    Limit15_0;\r
+  UINT16    Base15_0;\r
+  UINT8     Base23_16;\r
+  UINT8     Type;\r
+  UINT8     Limit19_16_and_flags;\r
+  UINT8     Base31_24;\r
 } GDT_ENTRY;\r
 \r
 typedef\r
-struct _GDT_ENTRIES {\r
-  GDT_ENTRY Null;\r
-  GDT_ENTRY Linear;\r
-  GDT_ENTRY LinearCode;\r
-  GDT_ENTRY SysData;\r
-  GDT_ENTRY SysCode;\r
-  GDT_ENTRY SysCode16;\r
-  GDT_ENTRY LinearData64;\r
-  GDT_ENTRY LinearCode64;\r
-  GDT_ENTRY Spare5;\r
+  struct _GDT_ENTRIES {\r
+  GDT_ENTRY    Null;\r
+  GDT_ENTRY    Linear;\r
+  GDT_ENTRY    LinearCode;\r
+  GDT_ENTRY    SysData;\r
+  GDT_ENTRY    SysCode;\r
+  GDT_ENTRY    SysCode16;\r
+  GDT_ENTRY    LinearData64;\r
+  GDT_ENTRY    LinearCode64;\r
+  GDT_ENTRY    Spare5;\r
 } GDT_ENTRIES;\r
 \r
 #pragma pack ()\r
 \r
-#define NULL_SEL          OFFSET_OF (GDT_ENTRIES, Null)\r
-#define LINEAR_SEL        OFFSET_OF (GDT_ENTRIES, Linear)\r
-#define LINEAR_CODE_SEL   OFFSET_OF (GDT_ENTRIES, LinearCode)\r
-#define SYS_DATA_SEL      OFFSET_OF (GDT_ENTRIES, SysData)\r
-#define SYS_CODE_SEL      OFFSET_OF (GDT_ENTRIES, SysCode)\r
-#define SYS_CODE16_SEL    OFFSET_OF (GDT_ENTRIES, SysCode16)\r
-#define LINEAR_DATA64_SEL OFFSET_OF (GDT_ENTRIES, LinearData64)\r
-#define LINEAR_CODE64_SEL OFFSET_OF (GDT_ENTRIES, LinearCode64)\r
-#define SPARE5_SEL        OFFSET_OF (GDT_ENTRIES, Spare5)\r
+#define NULL_SEL           OFFSET_OF (GDT_ENTRIES, Null)\r
+#define LINEAR_SEL         OFFSET_OF (GDT_ENTRIES, Linear)\r
+#define LINEAR_CODE_SEL    OFFSET_OF (GDT_ENTRIES, LinearCode)\r
+#define SYS_DATA_SEL       OFFSET_OF (GDT_ENTRIES, SysData)\r
+#define SYS_CODE_SEL       OFFSET_OF (GDT_ENTRIES, SysCode)\r
+#define SYS_CODE16_SEL     OFFSET_OF (GDT_ENTRIES, SysCode16)\r
+#define LINEAR_DATA64_SEL  OFFSET_OF (GDT_ENTRIES, LinearData64)\r
+#define LINEAR_CODE64_SEL  OFFSET_OF (GDT_ENTRIES, LinearCode64)\r
+#define SPARE5_SEL         OFFSET_OF (GDT_ENTRIES, Spare5)\r
 \r
 #if defined (MDE_CPU_IA32)\r
-#define CPU_CODE_SEL LINEAR_CODE_SEL\r
-#define CPU_DATA_SEL LINEAR_SEL\r
+#define CPU_CODE_SEL  LINEAR_CODE_SEL\r
+#define CPU_DATA_SEL  LINEAR_SEL\r
 #elif defined (MDE_CPU_X64)\r
-#define CPU_CODE_SEL LINEAR_CODE64_SEL\r
-#define CPU_DATA_SEL LINEAR_DATA64_SEL\r
+#define CPU_CODE_SEL  LINEAR_CODE64_SEL\r
+#define CPU_DATA_SEL  LINEAR_DATA64_SEL\r
 #else\r
-#error CPU type not supported for CPU GDT initialization!\r
+  #error CPU type not supported for CPU GDT initialization!\r
 #endif\r
 \r
 #endif // _CPU_GDT_H_\r
-\r
index 60ede38df4fccf377b7606d4514fea60b4e770c7..1f218367b3a155cd2a86db495c3938a42e8b26f9 100644 (file)
@@ -9,8 +9,8 @@
 #include "CpuDxe.h"\r
 #include "CpuMp.h"\r
 \r
-EFI_HANDLE     mMpServiceHandle       = NULL;\r
-UINTN          mNumberOfProcessors    = 1;\r
+EFI_HANDLE  mMpServiceHandle    = NULL;\r
+UINTN       mNumberOfProcessors = 1;\r
 \r
 EFI_MP_SERVICES_PROTOCOL  mMpServicesTemplate = {\r
   GetNumberOfProcessors,\r
@@ -509,7 +509,7 @@ WhoAmI (
   OUT UINTN                    *ProcessorNumber\r
   )\r
 {\r
-  return MpInitLibWhoAmI (ProcessorNumber);;\r
+  return MpInitLibWhoAmI (ProcessorNumber);\r
 }\r
 \r
 /**\r
@@ -547,8 +547,8 @@ CollectBistDataFromHob (
     // Sec Platform Information2 PPI includes BSP/APs' BIST information\r
     //\r
     SecPlatformInformation2 = GET_GUID_HOB_DATA (GuidHob);\r
-    NumberOfData = SecPlatformInformation2->NumberOfCpus;\r
-    CpuInstance  = SecPlatformInformation2->CpuInstance;\r
+    NumberOfData            = SecPlatformInformation2->NumberOfCpus;\r
+    CpuInstance             = SecPlatformInformation2->CpuInstance;\r
   } else {\r
     //\r
     // Otherwise, get gEfiSecPlatformInformationPpiGuid Guided HOB\r
@@ -556,14 +556,14 @@ CollectBistDataFromHob (
     GuidHob = GetFirstGuidHob (&gEfiSecPlatformInformationPpiGuid);\r
     if (GuidHob != NULL) {\r
       SecPlatformInformation = GET_GUID_HOB_DATA (GuidHob);\r
-      NumberOfData = 1;\r
+      NumberOfData           = 1;\r
       //\r
       // SEC Platform Information only includes BSP's BIST information\r
       // does not have BSP's APIC ID\r
       //\r
-      BspCpuInstance.CpuLocation = GetApicId ();\r
-      BspCpuInstance.InfoRecord.IA32HealthFlags.Uint32  = SecPlatformInformation->IA32HealthFlags.Uint32;\r
-      CpuInstance = &BspCpuInstance;\r
+      BspCpuInstance.CpuLocation                       = GetApicId ();\r
+      BspCpuInstance.InfoRecord.IA32HealthFlags.Uint32 = SecPlatformInformation->IA32HealthFlags.Uint32;\r
+      CpuInstance                                      = &BspCpuInstance;\r
     } else {\r
       DEBUG ((DEBUG_INFO, "Does not find any HOB stored CPU BIST information!\n"));\r
       //\r
@@ -583,6 +583,7 @@ CollectBistDataFromHob (
         BistData = CpuInstance[CpuInstanceNumber].InfoRecord.IA32HealthFlags;\r
       }\r
     }\r
+\r
     if (BistData.Uint32 != 0) {\r
       //\r
       // Report Status Code that self test is failed\r
@@ -607,7 +608,7 @@ CollectBistDataFromHob (
 VOID\r
 EFIAPI\r
 GetGdtr (\r
-  IN OUT VOID *Buffer\r
+  IN OUT VOID  *Buffer\r
   )\r
 {\r
   AsmReadGdtr ((IA32_DESCRIPTOR *)Buffer);\r
@@ -625,12 +626,12 @@ GetGdtr (
 VOID\r
 EFIAPI\r
 InitializeExceptionStackSwitchHandlers (\r
-  IN OUT VOID *Buffer\r
+  IN OUT VOID  *Buffer\r
   )\r
 {\r
-  CPU_EXCEPTION_INIT_DATA           *EssData;\r
-  IA32_DESCRIPTOR                   Idtr;\r
-  EFI_STATUS                        Status;\r
+  CPU_EXCEPTION_INIT_DATA  *EssData;\r
+  IA32_DESCRIPTOR          Idtr;\r
+  EFI_STATUS               Status;\r
 \r
   EssData = Buffer;\r
   //\r
@@ -638,9 +639,9 @@ InitializeExceptionStackSwitchHandlers (
   // the AP's IDT is the same as BSP's IDT either.\r
   //\r
   AsmReadIdtr (&Idtr);\r
-  EssData->Ia32.IdtTable = (VOID *)Idtr.Base;\r
+  EssData->Ia32.IdtTable     = (VOID *)Idtr.Base;\r
   EssData->Ia32.IdtTableSize = Idtr.Limit + 1;\r
-  Status = InitializeCpuExceptionHandlersEx (NULL, EssData);\r
+  Status                     = InitializeCpuExceptionHandlersEx (NULL, EssData);\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
@@ -656,19 +657,19 @@ InitializeMpExceptionStackSwitchHandlers (
   VOID\r
   )\r
 {\r
-  UINTN                           Index;\r
-  UINTN                           Bsp;\r
-  UINTN                           ExceptionNumber;\r
-  UINTN                           OldGdtSize;\r
-  UINTN                           NewGdtSize;\r
-  UINTN                           NewStackSize;\r
-  IA32_DESCRIPTOR                 Gdtr;\r
-  CPU_EXCEPTION_INIT_DATA         EssData;\r
-  UINT8                           *GdtBuffer;\r
-  UINT8                           *StackTop;\r
+  UINTN                    Index;\r
+  UINTN                    Bsp;\r
+  UINTN                    ExceptionNumber;\r
+  UINTN                    OldGdtSize;\r
+  UINTN                    NewGdtSize;\r
+  UINTN                    NewStackSize;\r
+  IA32_DESCRIPTOR          Gdtr;\r
+  CPU_EXCEPTION_INIT_DATA  EssData;\r
+  UINT8                    *GdtBuffer;\r
+  UINT8                    *StackTop;\r
 \r
   ExceptionNumber = FixedPcdGetSize (PcdCpuStackSwitchExceptionList);\r
-  NewStackSize = FixedPcdGet32 (PcdCpuKnownGoodStackSize) * ExceptionNumber;\r
+  NewStackSize    = FixedPcdGet32 (PcdCpuKnownGoodStackSize) * ExceptionNumber;\r
 \r
   StackTop = AllocateRuntimeZeroPool (NewStackSize * mNumberOfProcessors);\r
   ASSERT (StackTop != NULL);\r
@@ -678,17 +679,17 @@ InitializeMpExceptionStackSwitchHandlers (
   // The default exception handlers must have been initialized. Let's just skip\r
   // it in this method.\r
   //\r
-  EssData.Ia32.Revision = CPU_EXCEPTION_INIT_DATA_REV;\r
+  EssData.Ia32.Revision            = CPU_EXCEPTION_INIT_DATA_REV;\r
   EssData.Ia32.InitDefaultHandlers = FALSE;\r
 \r
-  EssData.Ia32.StackSwitchExceptions = FixedPcdGetPtr(PcdCpuStackSwitchExceptionList);\r
+  EssData.Ia32.StackSwitchExceptions      = FixedPcdGetPtr (PcdCpuStackSwitchExceptionList);\r
   EssData.Ia32.StackSwitchExceptionNumber = ExceptionNumber;\r
-  EssData.Ia32.KnownGoodStackSize = FixedPcdGet32(PcdCpuKnownGoodStackSize);\r
+  EssData.Ia32.KnownGoodStackSize         = FixedPcdGet32 (PcdCpuKnownGoodStackSize);\r
 \r
   //\r
   // Initialize Gdtr to suppress incorrect compiler/analyzer warnings.\r
   //\r
-  Gdtr.Base = 0;\r
+  Gdtr.Base  = 0;\r
   Gdtr.Limit = 0;\r
   MpInitLibWhoAmI (&Bsp);\r
   for (Index = 0; Index < mNumberOfProcessors; ++Index) {\r
@@ -733,7 +734,7 @@ InitializeMpExceptionStackSwitchHandlers (
     //    |                              |\r
     //    --------------------------------\r
     //\r
-    OldGdtSize = Gdtr.Limit + 1;\r
+    OldGdtSize                        = Gdtr.Limit + 1;\r
     EssData.Ia32.ExceptionTssDescSize = sizeof (IA32_TSS_DESCRIPTOR) *\r
                                         (ExceptionNumber + 1);\r
     EssData.Ia32.ExceptionTssSize = sizeof (IA32_TASK_STATE_SEGMENT) *\r
@@ -749,19 +750,21 @@ InitializeMpExceptionStackSwitchHandlers (
     //\r
     // Make sure GDT table alignment\r
     //\r
-    EssData.Ia32.GdtTable = ALIGN_POINTER(GdtBuffer, sizeof (IA32_TSS_DESCRIPTOR));\r
-    NewGdtSize -= ((UINT8 *)EssData.Ia32.GdtTable - GdtBuffer);\r
+    EssData.Ia32.GdtTable     = ALIGN_POINTER (GdtBuffer, sizeof (IA32_TSS_DESCRIPTOR));\r
+    NewGdtSize               -= ((UINT8 *)EssData.Ia32.GdtTable - GdtBuffer);\r
     EssData.Ia32.GdtTableSize = NewGdtSize;\r
 \r
     EssData.Ia32.ExceptionTssDesc = ((UINT8 *)EssData.Ia32.GdtTable + OldGdtSize);\r
-    EssData.Ia32.ExceptionTss = ((UINT8 *)EssData.Ia32.GdtTable + OldGdtSize +\r
-                                 EssData.Ia32.ExceptionTssDescSize);\r
+    EssData.Ia32.ExceptionTss     = ((UINT8 *)EssData.Ia32.GdtTable + OldGdtSize +\r
+                                     EssData.Ia32.ExceptionTssDescSize);\r
 \r
     EssData.Ia32.KnownGoodStackTop = (UINTN)StackTop;\r
-    DEBUG ((DEBUG_INFO,\r
-            "Exception stack top[cpu%lu]: 0x%lX\n",\r
-            (UINT64)(UINTN)Index,\r
-            (UINT64)(UINTN)StackTop));\r
+    DEBUG ((\r
+      DEBUG_INFO,\r
+      "Exception stack top[cpu%lu]: 0x%lX\n",\r
+      (UINT64)(UINTN)Index,\r
+      (UINT64)(UINTN)StackTop\r
+      ));\r
 \r
     if (Index == Bsp) {\r
       InitializeExceptionStackSwitchHandlers (&EssData);\r
@@ -776,7 +779,7 @@ InitializeMpExceptionStackSwitchHandlers (
         );\r
     }\r
 \r
-    StackTop  -= NewStackSize;\r
+    StackTop -= NewStackSize;\r
   }\r
 }\r
 \r
@@ -815,9 +818,9 @@ InitializeMpSupport (
   VOID\r
   )\r
 {\r
-  EFI_STATUS     Status;\r
-  UINTN          NumberOfProcessors;\r
-  UINTN          NumberOfEnabledProcessors;\r
+  EFI_STATUS  Status;\r
+  UINTN       NumberOfProcessors;\r
+  UINTN       NumberOfEnabledProcessors;\r
 \r
   //\r
   // Wakeup APs to do initialization\r
@@ -841,9 +844,9 @@ InitializeMpSupport (
 \r
   Status = gBS->InstallMultipleProtocolInterfaces (\r
                   &mMpServiceHandle,\r
-                  &gEfiMpServiceProtocolGuid,  &mMpServicesTemplate,\r
+                  &gEfiMpServiceProtocolGuid,\r
+                  &mMpServicesTemplate,\r
                   NULL\r
                   );\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
-\r
index 4ee171d8c49110b23f9ff3feb6d8ba87fcff19f0..b4617535105c728e562b97c7877009c54a481fd6 100644 (file)
@@ -467,4 +467,3 @@ WhoAmI (
   );\r
 \r
 #endif // _CPU_MP_H_\r
-\r
index c34059f87f0bb707660197a54cfc4c1437f5a5e8..d9e65ab4b22a626084366340fbeb7da9a7deb00a 100644 (file)
 ///\r
 /// Page Table Entry\r
 ///\r
-#define IA32_PG_P                   BIT0\r
-#define IA32_PG_RW                  BIT1\r
-#define IA32_PG_U                   BIT2\r
-#define IA32_PG_WT                  BIT3\r
-#define IA32_PG_CD                  BIT4\r
-#define IA32_PG_A                   BIT5\r
-#define IA32_PG_D                   BIT6\r
-#define IA32_PG_PS                  BIT7\r
-#define IA32_PG_PAT_2M              BIT12\r
-#define IA32_PG_PAT_4K              IA32_PG_PS\r
-#define IA32_PG_PMNT                BIT62\r
-#define IA32_PG_NX                  BIT63\r
-\r
-#define PAGE_ATTRIBUTE_BITS         (IA32_PG_D | IA32_PG_A | IA32_PG_U | IA32_PG_RW | IA32_PG_P)\r
+#define IA32_PG_P       BIT0\r
+#define IA32_PG_RW      BIT1\r
+#define IA32_PG_U       BIT2\r
+#define IA32_PG_WT      BIT3\r
+#define IA32_PG_CD      BIT4\r
+#define IA32_PG_A       BIT5\r
+#define IA32_PG_D       BIT6\r
+#define IA32_PG_PS      BIT7\r
+#define IA32_PG_PAT_2M  BIT12\r
+#define IA32_PG_PAT_4K  IA32_PG_PS\r
+#define IA32_PG_PMNT    BIT62\r
+#define IA32_PG_NX      BIT63\r
+\r
+#define PAGE_ATTRIBUTE_BITS  (IA32_PG_D | IA32_PG_A | IA32_PG_U | IA32_PG_RW | IA32_PG_P)\r
 //\r
 // Bits 1, 2, 5, 6 are reserved in the IA32 PAE PDPTE\r
 // X64 PAE PDPTE does not have such restriction\r
 //\r
-#define IA32_PAE_PDPTE_ATTRIBUTE_BITS    (IA32_PG_P)\r
+#define IA32_PAE_PDPTE_ATTRIBUTE_BITS  (IA32_PG_P)\r
 \r
-#define PAGE_PROGATE_BITS           (IA32_PG_NX | PAGE_ATTRIBUTE_BITS)\r
+#define PAGE_PROGATE_BITS  (IA32_PG_NX | PAGE_ATTRIBUTE_BITS)\r
 \r
 #define PAGING_4K_MASK  0xFFF\r
 #define PAGING_2M_MASK  0x1FFFFF\r
@@ -52,9 +52,9 @@
 \r
 #define PAGING_PAE_INDEX_MASK  0x1FF\r
 \r
-#define PAGING_4K_ADDRESS_MASK_64 0x000FFFFFFFFFF000ull\r
-#define PAGING_2M_ADDRESS_MASK_64 0x000FFFFFFFE00000ull\r
-#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull\r
+#define PAGING_4K_ADDRESS_MASK_64  0x000FFFFFFFFFF000ull\r
+#define PAGING_2M_ADDRESS_MASK_64  0x000FFFFFFFE00000ull\r
+#define PAGING_1G_ADDRESS_MASK_64  0x000FFFFFC0000000ull\r
 \r
 #define MAX_PF_ENTRY_COUNT        10\r
 #define MAX_DEBUG_MESSAGE_LENGTH  0x100\r
@@ -68,9 +68,9 @@ typedef enum {
 } PAGE_ATTRIBUTE;\r
 \r
 typedef struct {\r
-  PAGE_ATTRIBUTE   Attribute;\r
-  UINT64           Length;\r
-  UINT64           AddressMask;\r
+  PAGE_ATTRIBUTE    Attribute;\r
+  UINT64            Length;\r
+  UINT64            AddressMask;\r
 } PAGE_ATTRIBUTE_TABLE;\r
 \r
 typedef enum {\r
@@ -79,21 +79,21 @@ typedef enum {
   PageActionClear,\r
 } PAGE_ACTION;\r
 \r
-PAGE_ATTRIBUTE_TABLE mPageAttributeTable[] = {\r
-  {Page4K,  SIZE_4KB, PAGING_4K_ADDRESS_MASK_64},\r
-  {Page2M,  SIZE_2MB, PAGING_2M_ADDRESS_MASK_64},\r
-  {Page1G,  SIZE_1GB, PAGING_1G_ADDRESS_MASK_64},\r
+PAGE_ATTRIBUTE_TABLE  mPageAttributeTable[] = {\r
+  { Page4K, SIZE_4KB, PAGING_4K_ADDRESS_MASK_64 },\r
+  { Page2M, SIZE_2MB, PAGING_2M_ADDRESS_MASK_64 },\r
+  { Page1G, SIZE_1GB, PAGING_1G_ADDRESS_MASK_64 },\r
 };\r
 \r
-PAGE_TABLE_POOL                   *mPageTablePool = NULL;\r
-BOOLEAN                           mPageTablePoolLock = FALSE;\r
-PAGE_TABLE_LIB_PAGING_CONTEXT     mPagingContext;\r
-EFI_SMM_BASE2_PROTOCOL            *mSmmBase2 = NULL;\r
+PAGE_TABLE_POOL                *mPageTablePool    = NULL;\r
+BOOLEAN                        mPageTablePoolLock = FALSE;\r
+PAGE_TABLE_LIB_PAGING_CONTEXT  mPagingContext;\r
+EFI_SMM_BASE2_PROTOCOL         *mSmmBase2 = NULL;\r
 \r
 //\r
 // Record the page fault exception count for one instruction execution.\r
 //\r
-UINTN                     *mPFEntryCount;\r
+UINTN  *mPFEntryCount;\r
 UINT64                    *(*mLastPFEntryPointer)[MAX_PF_ENTRY_COUNT];\r
 \r
 /**\r
@@ -119,7 +119,7 @@ IsInSmm (
   VOID\r
   )\r
 {\r
-  BOOLEAN                 InSmm;\r
+  BOOLEAN  InSmm;\r
 \r
   InSmm = FALSE;\r
   if (mSmmBase2 == NULL) {\r
@@ -137,7 +137,7 @@ IsInSmm (
   // load its own page table.\r
   //\r
   return (InSmm &&\r
-          mPagingContext.ContextData.X64.PageTableBase != (UINT64)AsmReadCr3());\r
+          mPagingContext.ContextData.X64.PageTableBase != (UINT64)AsmReadCr3 ());\r
 }\r
 \r
 /**\r
@@ -147,23 +147,23 @@ IsInSmm (
 **/\r
 VOID\r
 GetCurrentPagingContext (\r
-  IN OUT PAGE_TABLE_LIB_PAGING_CONTEXT     *PagingContext\r
+  IN OUT PAGE_TABLE_LIB_PAGING_CONTEXT  *PagingContext\r
   )\r
 {\r
-  UINT32                          RegEax;\r
-  CPUID_EXTENDED_CPU_SIG_EDX      RegEdx;\r
-  MSR_IA32_EFER_REGISTER          MsrEfer;\r
-  IA32_CR4                        Cr4;\r
-  IA32_CR0                        Cr0;\r
-  UINT32                          *Attributes;\r
-  UINTN                           *PageTableBase;\r
+  UINT32                      RegEax;\r
+  CPUID_EXTENDED_CPU_SIG_EDX  RegEdx;\r
+  MSR_IA32_EFER_REGISTER      MsrEfer;\r
+  IA32_CR4                    Cr4;\r
+  IA32_CR0                    Cr0;\r
+  UINT32                      *Attributes;\r
+  UINTN                       *PageTableBase;\r
 \r
   //\r
   // Don't retrieve current paging context from processor if in SMM mode.\r
   //\r
   if (!IsInSmm ()) {\r
-    ZeroMem (&mPagingContext, sizeof(mPagingContext));\r
-    if (sizeof(UINTN) == sizeof(UINT64)) {\r
+    ZeroMem (&mPagingContext, sizeof (mPagingContext));\r
+    if (sizeof (UINTN) == sizeof (UINT64)) {\r
       mPagingContext.MachineType = IMAGE_FILE_MACHINE_X64;\r
     } else {\r
       mPagingContext.MachineType = IMAGE_FILE_MACHINE_I386;\r
@@ -179,15 +179,19 @@ GetCurrentPagingContext (
     } else {\r
       *PageTableBase = 0;\r
     }\r
+\r
     if (Cr0.Bits.WP  != 0) {\r
       *Attributes |= PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_WP_ENABLE;\r
     }\r
+\r
     if (Cr4.Bits.PSE != 0) {\r
       *Attributes |= PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_PSE;\r
     }\r
+\r
     if (Cr4.Bits.PAE != 0) {\r
       *Attributes |= PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_PAE;\r
     }\r
+\r
     if (Cr4.Bits.LA57 != 0) {\r
       *Attributes |= PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_5_LEVEL;\r
     }\r
@@ -198,7 +202,7 @@ GetCurrentPagingContext (
 \r
       if (RegEdx.Bits.NX != 0) {\r
         // XD supported\r
-        MsrEfer.Uint64 = AsmReadMsr64(MSR_CORE_IA32_EFER);\r
+        MsrEfer.Uint64 = AsmReadMsr64 (MSR_CORE_IA32_EFER);\r
         if (MsrEfer.Bits.NXE != 0) {\r
           // XD activated\r
           *Attributes |= PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_XD_ACTIVATED;\r
@@ -231,11 +235,13 @@ PageAttributeToLength (
   )\r
 {\r
   UINTN  Index;\r
-  for (Index = 0; Index < sizeof(mPageAttributeTable)/sizeof(mPageAttributeTable[0]); Index++) {\r
+\r
+  for (Index = 0; Index < sizeof (mPageAttributeTable)/sizeof (mPageAttributeTable[0]); Index++) {\r
     if (PageAttribute == mPageAttributeTable[Index].Attribute) {\r
       return (UINTN)mPageAttributeTable[Index].Length;\r
     }\r
   }\r
+\r
   return 0;\r
 }\r
 \r
@@ -252,11 +258,13 @@ PageAttributeToMask (
   )\r
 {\r
   UINTN  Index;\r
-  for (Index = 0; Index < sizeof(mPageAttributeTable)/sizeof(mPageAttributeTable[0]); Index++) {\r
+\r
+  for (Index = 0; Index < sizeof (mPageAttributeTable)/sizeof (mPageAttributeTable[0]); Index++) {\r
     if (PageAttribute == mPageAttributeTable[Index].Attribute) {\r
       return (UINTN)mPageAttributeTable[Index].AddressMask;\r
     }\r
   }\r
+\r
   return 0;\r
 }\r
 \r
@@ -271,22 +279,22 @@ PageAttributeToMask (
 **/\r
 VOID *\r
 GetPageTableEntry (\r
-  IN  PAGE_TABLE_LIB_PAGING_CONTEXT     *PagingContext,\r
-  IN  PHYSICAL_ADDRESS                  Address,\r
-  OUT PAGE_ATTRIBUTE                    *PageAttribute\r
+  IN  PAGE_TABLE_LIB_PAGING_CONTEXT  *PagingContext,\r
+  IN  PHYSICAL_ADDRESS               Address,\r
+  OUT PAGE_ATTRIBUTE                 *PageAttribute\r
   )\r
 {\r
-  UINTN                 Index1;\r
-  UINTN                 Index2;\r
-  UINTN                 Index3;\r
-  UINTN                 Index4;\r
-  UINTN                 Index5;\r
-  UINT64                *L1PageTable;\r
-  UINT64                *L2PageTable;\r
-  UINT64                *L3PageTable;\r
-  UINT64                *L4PageTable;\r
-  UINT64                *L5PageTable;\r
-  UINT64                AddressEncMask;\r
+  UINTN   Index1;\r
+  UINTN   Index2;\r
+  UINTN   Index3;\r
+  UINTN   Index4;\r
+  UINTN   Index5;\r
+  UINT64  *L1PageTable;\r
+  UINT64  *L2PageTable;\r
+  UINT64  *L3PageTable;\r
+  UINT64  *L4PageTable;\r
+  UINT64  *L5PageTable;\r
+  UINT64  AddressEncMask;\r
 \r
   ASSERT (PagingContext != NULL);\r
 \r
@@ -312,6 +320,7 @@ GetPageTableEntry (
     } else {\r
       L4PageTable = (UINT64 *)(UINTN)PagingContext->ContextData.X64.PageTableBase;\r
     }\r
+\r
     if (L4PageTable[Index4] == 0) {\r
       *PageAttribute = PageNone;\r
       return NULL;\r
@@ -319,13 +328,15 @@ GetPageTableEntry (
 \r
     L3PageTable = (UINT64 *)(UINTN)(L4PageTable[Index4] & ~AddressEncMask & PAGING_4K_ADDRESS_MASK_64);\r
   } else {\r
-    ASSERT((PagingContext->ContextData.Ia32.Attributes & PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_PAE) != 0);\r
+    ASSERT ((PagingContext->ContextData.Ia32.Attributes & PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_PAE) != 0);\r
     L3PageTable = (UINT64 *)(UINTN)PagingContext->ContextData.Ia32.PageTableBase;\r
   }\r
+\r
   if (L3PageTable[Index3] == 0) {\r
     *PageAttribute = PageNone;\r
     return NULL;\r
   }\r
+\r
   if ((L3PageTable[Index3] & IA32_PG_PS) != 0) {\r
     // 1G\r
     *PageAttribute = Page1G;\r
@@ -337,6 +348,7 @@ GetPageTableEntry (
     *PageAttribute = PageNone;\r
     return NULL;\r
   }\r
+\r
   if ((L2PageTable[Index2] & IA32_PG_PS) != 0) {\r
     // 2M\r
     *PageAttribute = Page2M;\r
@@ -349,6 +361,7 @@ GetPageTableEntry (
     *PageAttribute = PageNone;\r
     return NULL;\r
   }\r
+\r
   *PageAttribute = Page4K;\r
   return &L1PageTable[Index1];\r
 }\r
@@ -362,20 +375,24 @@ GetPageTableEntry (
 **/\r
 UINT64\r
 GetAttributesFromPageEntry (\r
-  IN  UINT64                            *PageEntry\r
+  IN  UINT64  *PageEntry\r
   )\r
 {\r
   UINT64  Attributes;\r
+\r
   Attributes = 0;\r
   if ((*PageEntry & IA32_PG_P) == 0) {\r
     Attributes |= EFI_MEMORY_RP;\r
   }\r
+\r
   if ((*PageEntry & IA32_PG_RW) == 0) {\r
     Attributes |= EFI_MEMORY_RO;\r
   }\r
+\r
   if ((*PageEntry & IA32_PG_NX) != 0) {\r
     Attributes |= EFI_MEMORY_XP;\r
   }\r
+\r
   return Attributes;\r
 }\r
 \r
@@ -390,11 +407,11 @@ GetAttributesFromPageEntry (
 **/\r
 VOID\r
 ConvertPageEntryAttribute (\r
-  IN  PAGE_TABLE_LIB_PAGING_CONTEXT     *PagingContext,\r
-  IN  UINT64                            *PageEntry,\r
-  IN  UINT64                            Attributes,\r
-  IN  PAGE_ACTION                       PageAction,\r
-  OUT BOOLEAN                           *IsModified\r
+  IN  PAGE_TABLE_LIB_PAGING_CONTEXT  *PagingContext,\r
+  IN  UINT64                         *PageEntry,\r
+  IN  UINT64                         Attributes,\r
+  IN  PAGE_ACTION                    PageAction,\r
+  OUT BOOLEAN                        *IsModified\r
   )\r
 {\r
   UINT64  CurrentPageEntry;\r
@@ -402,45 +419,46 @@ ConvertPageEntryAttribute (
   UINT32  *PageAttributes;\r
 \r
   CurrentPageEntry = *PageEntry;\r
-  NewPageEntry = CurrentPageEntry;\r
+  NewPageEntry     = CurrentPageEntry;\r
   if ((Attributes & EFI_MEMORY_RP) != 0) {\r
     switch (PageAction) {\r
-    case PageActionAssign:\r
-    case PageActionSet:\r
-      NewPageEntry &= ~(UINT64)IA32_PG_P;\r
-      break;\r
-    case PageActionClear:\r
-      NewPageEntry |= IA32_PG_P;\r
-      break;\r
+      case PageActionAssign:\r
+      case PageActionSet:\r
+        NewPageEntry &= ~(UINT64)IA32_PG_P;\r
+        break;\r
+      case PageActionClear:\r
+        NewPageEntry |= IA32_PG_P;\r
+        break;\r
     }\r
   } else {\r
     switch (PageAction) {\r
-    case PageActionAssign:\r
-      NewPageEntry |= IA32_PG_P;\r
-      break;\r
-    case PageActionSet:\r
-    case PageActionClear:\r
-      break;\r
+      case PageActionAssign:\r
+        NewPageEntry |= IA32_PG_P;\r
+        break;\r
+      case PageActionSet:\r
+      case PageActionClear:\r
+        break;\r
     }\r
   }\r
+\r
   if ((Attributes & EFI_MEMORY_RO) != 0) {\r
     switch (PageAction) {\r
-    case PageActionAssign:\r
-    case PageActionSet:\r
-      NewPageEntry &= ~(UINT64)IA32_PG_RW;\r
-      break;\r
-    case PageActionClear:\r
-      NewPageEntry |= IA32_PG_RW;\r
-      break;\r
+      case PageActionAssign:\r
+      case PageActionSet:\r
+        NewPageEntry &= ~(UINT64)IA32_PG_RW;\r
+        break;\r
+      case PageActionClear:\r
+        NewPageEntry |= IA32_PG_RW;\r
+        break;\r
     }\r
   } else {\r
     switch (PageAction) {\r
-    case PageActionAssign:\r
-      NewPageEntry |= IA32_PG_RW;\r
-      break;\r
-    case PageActionSet:\r
-    case PageActionClear:\r
-      break;\r
+      case PageActionAssign:\r
+        NewPageEntry |= IA32_PG_RW;\r
+        break;\r
+      case PageActionSet:\r
+      case PageActionClear:\r
+        break;\r
     }\r
   }\r
 \r
@@ -449,25 +467,26 @@ ConvertPageEntryAttribute (
   if ((*PageAttributes & PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_XD_ACTIVATED) != 0) {\r
     if ((Attributes & EFI_MEMORY_XP) != 0) {\r
       switch (PageAction) {\r
-      case PageActionAssign:\r
-      case PageActionSet:\r
-        NewPageEntry |= IA32_PG_NX;\r
-        break;\r
-      case PageActionClear:\r
-        NewPageEntry &= ~IA32_PG_NX;\r
-        break;\r
+        case PageActionAssign:\r
+        case PageActionSet:\r
+          NewPageEntry |= IA32_PG_NX;\r
+          break;\r
+        case PageActionClear:\r
+          NewPageEntry &= ~IA32_PG_NX;\r
+          break;\r
       }\r
     } else {\r
       switch (PageAction) {\r
-      case PageActionAssign:\r
-        NewPageEntry &= ~IA32_PG_NX;\r
-        break;\r
-      case PageActionSet:\r
-      case PageActionClear:\r
-        break;\r
+        case PageActionAssign:\r
+          NewPageEntry &= ~IA32_PG_NX;\r
+          break;\r
+        case PageActionSet:\r
+        case PageActionClear:\r
+          break;\r
       }\r
     }\r
   }\r
+\r
   *PageEntry = NewPageEntry;\r
   if (CurrentPageEntry != NewPageEntry) {\r
     *IsModified = TRUE;\r
@@ -490,13 +509,13 @@ ConvertPageEntryAttribute (
 **/\r
 PAGE_ATTRIBUTE\r
 NeedSplitPage (\r
-  IN  PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                            Length,\r
-  IN  UINT64                            *PageEntry,\r
-  IN  PAGE_ATTRIBUTE                    PageAttribute\r
+  IN  PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64            Length,\r
+  IN  UINT64            *PageEntry,\r
+  IN  PAGE_ATTRIBUTE    PageAttribute\r
   )\r
 {\r
-  UINT64                PageEntryLength;\r
+  UINT64  PageEntryLength;\r
 \r
   PageEntryLength = PageAttributeToLength (PageAttribute);\r
 \r
@@ -525,16 +544,16 @@ NeedSplitPage (
 **/\r
 RETURN_STATUS\r
 SplitPage (\r
-  IN  UINT64                            *PageEntry,\r
-  IN  PAGE_ATTRIBUTE                    PageAttribute,\r
-  IN  PAGE_ATTRIBUTE                    SplitAttribute,\r
-  IN  PAGE_TABLE_LIB_ALLOCATE_PAGES     AllocatePagesFunc\r
+  IN  UINT64                         *PageEntry,\r
+  IN  PAGE_ATTRIBUTE                 PageAttribute,\r
+  IN  PAGE_ATTRIBUTE                 SplitAttribute,\r
+  IN  PAGE_TABLE_LIB_ALLOCATE_PAGES  AllocatePagesFunc\r
   )\r
 {\r
-  UINT64   BaseAddress;\r
-  UINT64   *NewPageEntry;\r
-  UINTN    Index;\r
-  UINT64   AddressEncMask;\r
+  UINT64  BaseAddress;\r
+  UINT64  *NewPageEntry;\r
+  UINTN   Index;\r
+  UINT64  AddressEncMask;\r
 \r
   ASSERT (PageAttribute == Page2M || PageAttribute == Page1G);\r
 \r
@@ -555,10 +574,12 @@ SplitPage (
       if (NewPageEntry == NULL) {\r
         return RETURN_OUT_OF_RESOURCES;\r
       }\r
+\r
       BaseAddress = *PageEntry & ~AddressEncMask & PAGING_2M_ADDRESS_MASK_64;\r
-      for (Index = 0; Index < SIZE_4KB / sizeof(UINT64); Index++) {\r
+      for (Index = 0; Index < SIZE_4KB / sizeof (UINT64); Index++) {\r
         NewPageEntry[Index] = (BaseAddress + SIZE_4KB * Index) | AddressEncMask | ((*PageEntry) & PAGE_PROGATE_BITS);\r
       }\r
+\r
       (*PageEntry) = (UINT64)(UINTN)NewPageEntry | AddressEncMask | ((*PageEntry) & PAGE_ATTRIBUTE_BITS);\r
       return RETURN_SUCCESS;\r
     } else {\r
@@ -570,16 +591,18 @@ SplitPage (
     // No need support 1G->4K directly, we should use 1G->2M, then 2M->4K to get more compact page table.\r
     //\r
     ASSERT (SplitAttribute == Page2M || SplitAttribute == Page4K);\r
-    if ((SplitAttribute == Page2M || SplitAttribute == Page4K)) {\r
+    if (((SplitAttribute == Page2M) || (SplitAttribute == Page4K))) {\r
       NewPageEntry = AllocatePagesFunc (1);\r
       DEBUG ((DEBUG_VERBOSE, "Split - 0x%x\n", NewPageEntry));\r
       if (NewPageEntry == NULL) {\r
         return RETURN_OUT_OF_RESOURCES;\r
       }\r
+\r
       BaseAddress = *PageEntry & ~AddressEncMask  & PAGING_1G_ADDRESS_MASK_64;\r
-      for (Index = 0; Index < SIZE_4KB / sizeof(UINT64); Index++) {\r
+      for (Index = 0; Index < SIZE_4KB / sizeof (UINT64); Index++) {\r
         NewPageEntry[Index] = (BaseAddress + SIZE_2MB * Index) | AddressEncMask | IA32_PG_PS | ((*PageEntry) & PAGE_PROGATE_BITS);\r
       }\r
+\r
       (*PageEntry) = (UINT64)(UINTN)NewPageEntry | AddressEncMask | ((*PageEntry) & PAGE_ATTRIBUTE_BITS);\r
       return RETURN_SUCCESS;\r
     } else {\r
@@ -603,14 +626,16 @@ IsReadOnlyPageWriteProtected (
   )\r
 {\r
   IA32_CR0  Cr0;\r
+\r
   //\r
   // To avoid unforseen consequences, don't touch paging settings in SMM mode\r
   // in this driver.\r
   //\r
   if (!IsInSmm ()) {\r
     Cr0.UintN = AsmReadCr0 ();\r
-    return (BOOLEAN) (Cr0.Bits.WP != 0);\r
+    return (BOOLEAN)(Cr0.Bits.WP != 0);\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -623,12 +648,13 @@ DisableReadOnlyPageWriteProtect (
   )\r
 {\r
   IA32_CR0  Cr0;\r
+\r
   //\r
   // To avoid unforseen consequences, don't touch paging settings in SMM mode\r
   // in this driver.\r
   //\r
   if (!IsInSmm ()) {\r
-    Cr0.UintN = AsmReadCr0 ();\r
+    Cr0.UintN   = AsmReadCr0 ();\r
     Cr0.Bits.WP = 0;\r
     AsmWriteCr0 (Cr0.UintN);\r
   }\r
@@ -643,12 +669,13 @@ EnableReadOnlyPageWriteProtect (
   )\r
 {\r
   IA32_CR0  Cr0;\r
+\r
   //\r
   // To avoid unforseen consequences, don't touch paging settings in SMM mode\r
   // in this driver.\r
   //\r
   if (!IsInSmm ()) {\r
-    Cr0.UintN = AsmReadCr0 ();\r
+    Cr0.UintN   = AsmReadCr0 ();\r
     Cr0.Bits.WP = 1;\r
     AsmWriteCr0 (Cr0.UintN);\r
   }\r
@@ -685,33 +712,35 @@ EnableReadOnlyPageWriteProtect (
 **/\r
 RETURN_STATUS\r
 ConvertMemoryPageAttributes (\r
-  IN  PAGE_TABLE_LIB_PAGING_CONTEXT     *PagingContext OPTIONAL,\r
-  IN  PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                            Length,\r
-  IN  UINT64                            Attributes,\r
-  IN  PAGE_ACTION                       PageAction,\r
-  IN  PAGE_TABLE_LIB_ALLOCATE_PAGES     AllocatePagesFunc OPTIONAL,\r
-  OUT BOOLEAN                           *IsSplitted   OPTIONAL,\r
-  OUT BOOLEAN                           *IsModified   OPTIONAL\r
+  IN  PAGE_TABLE_LIB_PAGING_CONTEXT  *PagingContext OPTIONAL,\r
+  IN  PHYSICAL_ADDRESS               BaseAddress,\r
+  IN  UINT64                         Length,\r
+  IN  UINT64                         Attributes,\r
+  IN  PAGE_ACTION                    PageAction,\r
+  IN  PAGE_TABLE_LIB_ALLOCATE_PAGES  AllocatePagesFunc OPTIONAL,\r
+  OUT BOOLEAN                        *IsSplitted   OPTIONAL,\r
+  OUT BOOLEAN                        *IsModified   OPTIONAL\r
   )\r
 {\r
-  PAGE_TABLE_LIB_PAGING_CONTEXT     CurrentPagingContext;\r
-  UINT64                            *PageEntry;\r
-  PAGE_ATTRIBUTE                    PageAttribute;\r
-  UINTN                             PageEntryLength;\r
-  PAGE_ATTRIBUTE                    SplitAttribute;\r
-  RETURN_STATUS                     Status;\r
-  BOOLEAN                           IsEntryModified;\r
-  BOOLEAN                           IsWpEnabled;\r
+  PAGE_TABLE_LIB_PAGING_CONTEXT  CurrentPagingContext;\r
+  UINT64                         *PageEntry;\r
+  PAGE_ATTRIBUTE                 PageAttribute;\r
+  UINTN                          PageEntryLength;\r
+  PAGE_ATTRIBUTE                 SplitAttribute;\r
+  RETURN_STATUS                  Status;\r
+  BOOLEAN                        IsEntryModified;\r
+  BOOLEAN                        IsWpEnabled;\r
 \r
   if ((BaseAddress & (SIZE_4KB - 1)) != 0) {\r
     DEBUG ((DEBUG_ERROR, "BaseAddress(0x%lx) is not aligned!\n", BaseAddress));\r
     return EFI_UNSUPPORTED;\r
   }\r
+\r
   if ((Length & (SIZE_4KB - 1)) != 0) {\r
     DEBUG ((DEBUG_ERROR, "Length(0x%lx) is not aligned!\n", Length));\r
     return EFI_UNSUPPORTED;\r
   }\r
+\r
   if (Length == 0) {\r
     DEBUG ((DEBUG_ERROR, "Length is 0!\n"));\r
     return RETURN_INVALID_PARAMETER;\r
@@ -725,44 +754,50 @@ ConvertMemoryPageAttributes (
   if (PagingContext == NULL) {\r
     GetCurrentPagingContext (&CurrentPagingContext);\r
   } else {\r
-    CopyMem (&CurrentPagingContext, PagingContext, sizeof(CurrentPagingContext));\r
+    CopyMem (&CurrentPagingContext, PagingContext, sizeof (CurrentPagingContext));\r
   }\r
-  switch(CurrentPagingContext.MachineType) {\r
-  case IMAGE_FILE_MACHINE_I386:\r
-    if (CurrentPagingContext.ContextData.Ia32.PageTableBase == 0) {\r
-      if (Attributes == 0) {\r
-        return EFI_SUCCESS;\r
-      } else {\r
-        DEBUG ((DEBUG_ERROR, "PageTable is 0!\n"));\r
+\r
+  switch (CurrentPagingContext.MachineType) {\r
+    case IMAGE_FILE_MACHINE_I386:\r
+      if (CurrentPagingContext.ContextData.Ia32.PageTableBase == 0) {\r
+        if (Attributes == 0) {\r
+          return EFI_SUCCESS;\r
+        } else {\r
+          DEBUG ((DEBUG_ERROR, "PageTable is 0!\n"));\r
+          return EFI_UNSUPPORTED;\r
+        }\r
+      }\r
+\r
+      if ((CurrentPagingContext.ContextData.Ia32.Attributes & PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_PAE) == 0) {\r
+        DEBUG ((DEBUG_ERROR, "Non-PAE Paging!\n"));\r
         return EFI_UNSUPPORTED;\r
       }\r
-    }\r
-    if ((CurrentPagingContext.ContextData.Ia32.Attributes & PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_PAE) == 0) {\r
-      DEBUG ((DEBUG_ERROR, "Non-PAE Paging!\n"));\r
-      return EFI_UNSUPPORTED;\r
-    }\r
-    if ((BaseAddress + Length) > BASE_4GB) {\r
-      DEBUG ((DEBUG_ERROR, "Beyond 4GB memory in 32-bit mode!\n"));\r
+\r
+      if ((BaseAddress + Length) > BASE_4GB) {\r
+        DEBUG ((DEBUG_ERROR, "Beyond 4GB memory in 32-bit mode!\n"));\r
+        return EFI_UNSUPPORTED;\r
+      }\r
+\r
+      break;\r
+    case IMAGE_FILE_MACHINE_X64:\r
+      ASSERT (CurrentPagingContext.ContextData.X64.PageTableBase != 0);\r
+      break;\r
+    default:\r
+      ASSERT (FALSE);\r
       return EFI_UNSUPPORTED;\r
-    }\r
-    break;\r
-  case IMAGE_FILE_MACHINE_X64:\r
-    ASSERT (CurrentPagingContext.ContextData.X64.PageTableBase != 0);\r
-    break;\r
-  default:\r
-    ASSERT(FALSE);\r
-    return EFI_UNSUPPORTED;\r
-    break;\r
+      break;\r
   }\r
 \r
-//  DEBUG ((DEBUG_ERROR, "ConvertMemoryPageAttributes(%x) - %016lx, %016lx, %02lx\n", IsSet, BaseAddress, Length, Attributes));\r
+  //  DEBUG ((DEBUG_ERROR, "ConvertMemoryPageAttributes(%x) - %016lx, %016lx, %02lx\n", IsSet, BaseAddress, Length, Attributes));\r
 \r
   if (IsSplitted != NULL) {\r
     *IsSplitted = FALSE;\r
   }\r
+\r
   if (IsModified != NULL) {\r
     *IsModified = FALSE;\r
   }\r
+\r
   if (AllocatePagesFunc == NULL) {\r
     AllocatePagesFunc = AllocatePageTableMemory;\r
   }\r
@@ -785,8 +820,9 @@ ConvertMemoryPageAttributes (
       Status = RETURN_UNSUPPORTED;\r
       goto Done;\r
     }\r
+\r
     PageEntryLength = PageAttributeToLength (PageAttribute);\r
-    SplitAttribute = NeedSplitPage (BaseAddress, Length, PageEntry, PageAttribute);\r
+    SplitAttribute  = NeedSplitPage (BaseAddress, Length, PageEntry, PageAttribute);\r
     if (SplitAttribute == PageNone) {\r
       ConvertPageEntryAttribute (&CurrentPagingContext, PageEntry, Attributes, PageAction, &IsEntryModified);\r
       if (IsEntryModified) {\r
@@ -794,27 +830,32 @@ ConvertMemoryPageAttributes (
           *IsModified = TRUE;\r
         }\r
       }\r
+\r
       //\r
       // Convert success, move to next\r
       //\r
       BaseAddress += PageEntryLength;\r
-      Length -= PageEntryLength;\r
+      Length      -= PageEntryLength;\r
     } else {\r
       if (AllocatePagesFunc == NULL) {\r
         Status = RETURN_UNSUPPORTED;\r
         goto Done;\r
       }\r
+\r
       Status = SplitPage (PageEntry, PageAttribute, SplitAttribute, AllocatePagesFunc);\r
       if (RETURN_ERROR (Status)) {\r
         Status = RETURN_UNSUPPORTED;\r
         goto Done;\r
       }\r
+\r
       if (IsSplitted != NULL) {\r
         *IsSplitted = TRUE;\r
       }\r
+\r
       if (IsModified != NULL) {\r
         *IsModified = TRUE;\r
       }\r
+\r
       //\r
       // Just split current page\r
       // Convert success in next around\r
@@ -829,6 +870,7 @@ Done:
   if (IsWpEnabled) {\r
     EnableReadOnlyPageWriteProtect ();\r
   }\r
+\r
   return Status;\r
 }\r
 \r
@@ -863,20 +905,20 @@ Done:
 RETURN_STATUS\r
 EFIAPI\r
 AssignMemoryPageAttributes (\r
-  IN  PAGE_TABLE_LIB_PAGING_CONTEXT     *PagingContext OPTIONAL,\r
-  IN  PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                            Length,\r
-  IN  UINT64                            Attributes,\r
-  IN  PAGE_TABLE_LIB_ALLOCATE_PAGES     AllocatePagesFunc OPTIONAL\r
+  IN  PAGE_TABLE_LIB_PAGING_CONTEXT  *PagingContext OPTIONAL,\r
+  IN  PHYSICAL_ADDRESS               BaseAddress,\r
+  IN  UINT64                         Length,\r
+  IN  UINT64                         Attributes,\r
+  IN  PAGE_TABLE_LIB_ALLOCATE_PAGES  AllocatePagesFunc OPTIONAL\r
   )\r
 {\r
   RETURN_STATUS  Status;\r
   BOOLEAN        IsModified;\r
   BOOLEAN        IsSplitted;\r
 \r
-//  DEBUG((DEBUG_INFO, "AssignMemoryPageAttributes: 0x%lx - 0x%lx (0x%lx)\n", BaseAddress, Length, Attributes));\r
+  //  DEBUG((DEBUG_INFO, "AssignMemoryPageAttributes: 0x%lx - 0x%lx (0x%lx)\n", BaseAddress, Length, Attributes));\r
   Status = ConvertMemoryPageAttributes (PagingContext, BaseAddress, Length, Attributes, PageActionAssign, AllocatePagesFunc, &IsSplitted, &IsModified);\r
-  if (!EFI_ERROR(Status)) {\r
+  if (!EFI_ERROR (Status)) {\r
     if ((PagingContext == NULL) && IsModified) {\r
       //\r
       // Flush TLB as last step.\r
@@ -885,7 +927,7 @@ AssignMemoryPageAttributes (
       // TLB flush in MWAIT loop mode, there's no need to flush TLB for them\r
       // here.\r
       //\r
-      CpuFlushTlb();\r
+      CpuFlushTlb ();\r
     }\r
   }\r
 \r
@@ -900,7 +942,7 @@ IsExecuteDisableEnabled (
   VOID\r
   )\r
 {\r
-  MSR_CORE_IA32_EFER_REGISTER    MsrEfer;\r
+  MSR_CORE_IA32_EFER_REGISTER  MsrEfer;\r
 \r
   MsrEfer.Uint64 = AsmReadMsr64 (MSR_IA32_EFER);\r
   return (MsrEfer.Bits.NXE == 1);\r
@@ -914,21 +956,21 @@ RefreshGcdMemoryAttributesFromPaging (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                          Status;\r
-  UINTN                               NumberOfDescriptors;\r
-  EFI_GCD_MEMORY_SPACE_DESCRIPTOR     *MemorySpaceMap;\r
-  PAGE_TABLE_LIB_PAGING_CONTEXT       PagingContext;\r
-  PAGE_ATTRIBUTE                      PageAttribute;\r
-  UINT64                              *PageEntry;\r
-  UINT64                              PageLength;\r
-  UINT64                              MemorySpaceLength;\r
-  UINT64                              Length;\r
-  UINT64                              BaseAddress;\r
-  UINT64                              PageStartAddress;\r
-  UINT64                              Attributes;\r
-  UINT64                              Capabilities;\r
-  UINT64                              NewAttributes;\r
-  UINTN                               Index;\r
+  EFI_STATUS                       Status;\r
+  UINTN                            NumberOfDescriptors;\r
+  EFI_GCD_MEMORY_SPACE_DESCRIPTOR  *MemorySpaceMap;\r
+  PAGE_TABLE_LIB_PAGING_CONTEXT    PagingContext;\r
+  PAGE_ATTRIBUTE                   PageAttribute;\r
+  UINT64                           *PageEntry;\r
+  UINT64                           PageLength;\r
+  UINT64                           MemorySpaceLength;\r
+  UINT64                           Length;\r
+  UINT64                           BaseAddress;\r
+  UINT64                           PageStartAddress;\r
+  UINT64                           Attributes;\r
+  UINT64                           Capabilities;\r
+  UINT64                           NewAttributes;\r
+  UINTN                            Index;\r
 \r
   //\r
   // Assuming that memory space map returned is sorted already; otherwise sort\r
@@ -939,10 +981,10 @@ RefreshGcdMemoryAttributesFromPaging (
 \r
   GetCurrentPagingContext (&PagingContext);\r
 \r
-  Attributes      = 0;\r
-  NewAttributes   = 0;\r
-  BaseAddress     = 0;\r
-  PageLength      = 0;\r
+  Attributes    = 0;\r
+  NewAttributes = 0;\r
+  BaseAddress   = 0;\r
+  PageLength    = 0;\r
 \r
   if (IsExecuteDisableEnabled ()) {\r
     Capabilities = EFI_MEMORY_RO | EFI_MEMORY_RP | EFI_MEMORY_XP;\r
@@ -975,7 +1017,8 @@ RefreshGcdMemoryAttributesFromPaging (
       DEBUG ((\r
         DEBUG_WARN,\r
         "Failed to update capability: [%lu] %016lx - %016lx (%016lx -> %016lx)\r\n",\r
-        (UINT64)Index, MemorySpaceMap[Index].BaseAddress,\r
+        (UINT64)Index,\r
+        MemorySpaceMap[Index].BaseAddress,\r
         MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length - 1,\r
         MemorySpaceMap[Index].Capabilities,\r
         MemorySpaceMap[Index].Capabilities | Capabilities\r
@@ -1011,14 +1054,15 @@ RefreshGcdMemoryAttributesFromPaging (
         //\r
         // Note current memory space might start in the middle of a page\r
         //\r
-        PageStartAddress  = (*PageEntry) & (UINT64)PageAttributeToMask(PageAttribute);\r
-        PageLength        = PageAttributeToLength (PageAttribute) - (BaseAddress - PageStartAddress);\r
-        Attributes        = GetAttributesFromPageEntry (PageEntry);\r
+        PageStartAddress = (*PageEntry) & (UINT64)PageAttributeToMask (PageAttribute);\r
+        PageLength       = PageAttributeToLength (PageAttribute) - (BaseAddress - PageStartAddress);\r
+        Attributes       = GetAttributesFromPageEntry (PageEntry);\r
       }\r
 \r
       Length = MIN (PageLength, MemorySpaceLength);\r
       if (Attributes != (MemorySpaceMap[Index].Attributes &\r
-                         EFI_MEMORY_ATTRIBUTE_MASK)) {\r
+                         EFI_MEMORY_ATTRIBUTE_MASK))\r
+      {\r
         NewAttributes = (MemorySpaceMap[Index].Attributes &\r
                          ~EFI_MEMORY_ATTRIBUTE_MASK) | Attributes;\r
         Status = gDS->SetMemorySpaceAttributes (\r
@@ -1030,7 +1074,9 @@ RefreshGcdMemoryAttributesFromPaging (
         DEBUG ((\r
           DEBUG_VERBOSE,\r
           "Updated memory space attribute: [%lu] %016lx - %016lx (%016lx -> %016lx)\r\n",\r
-          (UINT64)Index, BaseAddress, BaseAddress + Length - 1,\r
+          (UINT64)Index,\r
+          BaseAddress,\r
+          BaseAddress + Length - 1,\r
           MemorySpaceMap[Index].Attributes,\r
           NewAttributes\r
           ));\r
@@ -1064,11 +1110,11 @@ RefreshGcdMemoryAttributesFromPaging (
 **/\r
 BOOLEAN\r
 InitializePageTablePool (\r
-  IN  UINTN                           PoolPages\r
+  IN  UINTN  PoolPages\r
   )\r
 {\r
-  VOID                      *Buffer;\r
-  BOOLEAN                   IsModified;\r
+  VOID     *Buffer;\r
+  BOOLEAN  IsModified;\r
 \r
   //\r
   // Do not allow re-entrance.\r
@@ -1078,15 +1124,15 @@ InitializePageTablePool (
   }\r
 \r
   mPageTablePoolLock = TRUE;\r
-  IsModified = FALSE;\r
+  IsModified         = FALSE;\r
 \r
   //\r
   // Always reserve at least PAGE_TABLE_POOL_UNIT_PAGES, including one page for\r
   // header.\r
   //\r
   PoolPages += 1;   // Add one page for header.\r
-  PoolPages = ((PoolPages - 1) / PAGE_TABLE_POOL_UNIT_PAGES + 1) *\r
-              PAGE_TABLE_POOL_UNIT_PAGES;\r
+  PoolPages  = ((PoolPages - 1) / PAGE_TABLE_POOL_UNIT_PAGES + 1) *\r
+               PAGE_TABLE_POOL_UNIT_PAGES;\r
   Buffer = AllocateAlignedPages (PoolPages, PAGE_TABLE_POOL_ALIGNMENT);\r
   if (Buffer == NULL) {\r
     DEBUG ((DEBUG_ERROR, "ERROR: Out of aligned pages\r\n"));\r
@@ -1103,19 +1149,19 @@ InitializePageTablePool (
   // Link all pools into a list for easier track later.\r
   //\r
   if (mPageTablePool == NULL) {\r
-    mPageTablePool = Buffer;\r
+    mPageTablePool           = Buffer;\r
     mPageTablePool->NextPool = mPageTablePool;\r
   } else {\r
     ((PAGE_TABLE_POOL *)Buffer)->NextPool = mPageTablePool->NextPool;\r
-    mPageTablePool->NextPool = Buffer;\r
-    mPageTablePool = Buffer;\r
+    mPageTablePool->NextPool              = Buffer;\r
+    mPageTablePool                        = Buffer;\r
   }\r
 \r
   //\r
   // Reserve one page for pool header.\r
   //\r
-  mPageTablePool->FreePages  = PoolPages - 1;\r
-  mPageTablePool->Offset = EFI_PAGES_TO_SIZE (1);\r
+  mPageTablePool->FreePages = PoolPages - 1;\r
+  mPageTablePool->Offset    = EFI_PAGES_TO_SIZE (1);\r
 \r
   //\r
   // Mark the whole pool pages as read-only.\r
@@ -1157,10 +1203,10 @@ Done:
 VOID *\r
 EFIAPI\r
 AllocatePageTableMemory (\r
-  IN UINTN           Pages\r
+  IN UINTN  Pages\r
   )\r
 {\r
-  VOID                            *Buffer;\r
+  VOID  *Buffer;\r
 \r
   if (Pages == 0) {\r
     return NULL;\r
@@ -1169,8 +1215,9 @@ AllocatePageTableMemory (
   //\r
   // Renew the pool if necessary.\r
   //\r
-  if (mPageTablePool == NULL ||\r
-      Pages > mPageTablePool->FreePages) {\r
+  if ((mPageTablePool == NULL) ||\r
+      (Pages > mPageTablePool->FreePages))\r
+  {\r
     if (!InitializePageTablePool (Pages)) {\r
       return NULL;\r
     }\r
@@ -1178,8 +1225,8 @@ AllocatePageTableMemory (
 \r
   Buffer = (UINT8 *)mPageTablePool + mPageTablePool->Offset;\r
 \r
-  mPageTablePool->Offset     += EFI_PAGES_TO_SIZE (Pages);\r
-  mPageTablePool->FreePages  -= Pages;\r
+  mPageTablePool->Offset    += EFI_PAGES_TO_SIZE (Pages);\r
+  mPageTablePool->FreePages -= Pages;\r
 \r
   return Buffer;\r
 }\r
@@ -1196,13 +1243,13 @@ AllocatePageTableMemory (
 VOID\r
 EFIAPI\r
 DebugExceptionHandler (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
-  UINTN     CpuIndex;\r
-  UINTN     PFEntry;\r
-  BOOLEAN   IsWpEnabled;\r
+  UINTN    CpuIndex;\r
+  UINTN    PFEntry;\r
+  BOOLEAN  IsWpEnabled;\r
 \r
   MpInitLibWhoAmI (&CpuIndex);\r
 \r
@@ -1238,9 +1285,9 @@ DebugExceptionHandler (
   // Clear TF in EFLAGS\r
   //\r
   if (mPagingContext.MachineType == IMAGE_FILE_MACHINE_I386) {\r
-    SystemContext.SystemContextIa32->Eflags &= (UINT32)~BIT8;\r
+    SystemContext.SystemContextIa32->Eflags &= (UINT32) ~BIT8;\r
   } else {\r
-    SystemContext.SystemContextX64->Rflags &= (UINT64)~BIT8;\r
+    SystemContext.SystemContextX64->Rflags &= (UINT64) ~BIT8;\r
   }\r
 }\r
 \r
@@ -1256,20 +1303,20 @@ DebugExceptionHandler (
 VOID\r
 EFIAPI\r
 PageFaultExceptionHandler (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
-  EFI_STATUS                      Status;\r
-  UINT64                          PFAddress;\r
-  PAGE_TABLE_LIB_PAGING_CONTEXT   PagingContext;\r
-  PAGE_ATTRIBUTE                  PageAttribute;\r
-  UINT64                          Attributes;\r
-  UINT64                          *PageEntry;\r
-  UINTN                           Index;\r
-  UINTN                           CpuIndex;\r
-  UINTN                           PageNumber;\r
-  BOOLEAN                         NonStopMode;\r
+  EFI_STATUS                     Status;\r
+  UINT64                         PFAddress;\r
+  PAGE_TABLE_LIB_PAGING_CONTEXT  PagingContext;\r
+  PAGE_ATTRIBUTE                 PageAttribute;\r
+  UINT64                         Attributes;\r
+  UINT64                         *PageEntry;\r
+  UINTN                          Index;\r
+  UINTN                          CpuIndex;\r
+  UINTN                          PageNumber;\r
+  BOOLEAN                        NonStopMode;\r
 \r
   PFAddress = AsmReadCr2 () & ~EFI_PAGE_MASK;\r
   if (PFAddress < BASE_4KB) {\r
@@ -1289,23 +1336,28 @@ PageFaultExceptionHandler (
     PageNumber = 2;\r
     while (PageNumber > 0) {\r
       PageEntry = GetPageTableEntry (&PagingContext, PFAddress, &PageAttribute);\r
-      ASSERT(PageEntry != NULL);\r
+      ASSERT (PageEntry != NULL);\r
 \r
       if (PageEntry != NULL) {\r
         Attributes = GetAttributesFromPageEntry (PageEntry);\r
         if ((Attributes & EFI_MEMORY_RP) != 0) {\r
           Attributes &= ~EFI_MEMORY_RP;\r
-          Status = AssignMemoryPageAttributes (&PagingContext, PFAddress,\r
-                                               EFI_PAGE_SIZE, Attributes, NULL);\r
-          if (!EFI_ERROR(Status)) {\r
+          Status      = AssignMemoryPageAttributes (\r
+                          &PagingContext,\r
+                          PFAddress,\r
+                          EFI_PAGE_SIZE,\r
+                          Attributes,\r
+                          NULL\r
+                          );\r
+          if (!EFI_ERROR (Status)) {\r
             Index = mPFEntryCount[CpuIndex];\r
             //\r
             // Re-retrieve page entry because above calling might update page\r
             // table due to table split.\r
             //\r
-            PageEntry = GetPageTableEntry (&PagingContext, PFAddress, &PageAttribute);\r
+            PageEntry                              = GetPageTableEntry (&PagingContext, PFAddress, &PageAttribute);\r
             mLastPFEntryPointer[CpuIndex][Index++] = PageEntry;\r
-            mPFEntryCount[CpuIndex] = Index;\r
+            mPFEntryCount[CpuIndex]                = Index;\r
           }\r
         }\r
       }\r
@@ -1345,9 +1397,9 @@ InitializePageTableLib (
   VOID\r
   )\r
 {\r
-  PAGE_TABLE_LIB_PAGING_CONTEXT     CurrentPagingContext;\r
-  UINT32                            *Attributes;\r
-  UINTN                             *PageTableBase;\r
+  PAGE_TABLE_LIB_PAGING_CONTEXT  CurrentPagingContext;\r
+  UINT32                         *Attributes;\r
+  UINTN                          *PageTableBase;\r
 \r
   GetCurrentPagingContext (&CurrentPagingContext);\r
 \r
@@ -1357,7 +1409,8 @@ InitializePageTableLib (
   // Reserve memory of page tables for future uses, if paging is enabled.\r
   //\r
   if ((*PageTableBase != 0) &&\r
-      (*Attributes & PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_PAE) != 0) {\r
+      ((*Attributes & PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_PAE) != 0))\r
+  {\r
     DisableReadOnlyPageWriteProtect ();\r
     InitializePageTablePool (1);\r
     EnableReadOnlyPageWriteProtect ();\r
@@ -1377,5 +1430,5 @@ InitializePageTableLib (
   DEBUG ((DEBUG_INFO, "  PageTableBase - 0x%Lx\n", (UINT64)*PageTableBase));\r
   DEBUG ((DEBUG_INFO, "  Attributes    - 0x%x\n", *Attributes));\r
 \r
-  return ;\r
+  return;\r
 }\r
index 0b2a02a2be5c35629ec69c32105c92fbbb147673..607e936b8ac7b5e05b5f255ed48f5ed8e5d317cf 100644 (file)
 #define PAGE_TABLE_LIB_PAGING_CONTEXT_IA32_X64_ATTRIBUTES_XD_ACTIVATED     BIT31\r
 // Other bits are reserved for future use\r
 typedef struct {\r
-  UINT32  PageTableBase;\r
-  UINT32  Reserved;\r
-  UINT32  Attributes;\r
+  UINT32    PageTableBase;\r
+  UINT32    Reserved;\r
+  UINT32    Attributes;\r
 } PAGE_TABLE_LIB_PAGING_CONTEXT_IA32;\r
 \r
 typedef struct {\r
-  UINT64  PageTableBase;\r
-  UINT32  Attributes;\r
+  UINT64    PageTableBase;\r
+  UINT32    Attributes;\r
 } PAGE_TABLE_LIB_PAGING_CONTEXT_X64;\r
 \r
 typedef union {\r
-  PAGE_TABLE_LIB_PAGING_CONTEXT_IA32  Ia32;\r
-  PAGE_TABLE_LIB_PAGING_CONTEXT_X64   X64;\r
+  PAGE_TABLE_LIB_PAGING_CONTEXT_IA32    Ia32;\r
+  PAGE_TABLE_LIB_PAGING_CONTEXT_X64     X64;\r
 } PAGE_TABLE_LIB_PAGING_CONTEXT_DATA;\r
 \r
 typedef struct {\r
@@ -41,8 +41,8 @@ typedef struct {
   // #define IMAGE_FILE_MACHINE_I386            0x014c\r
   // #define IMAGE_FILE_MACHINE_X64             0x8664\r
   //\r
-  UINT16                                 MachineType;\r
-  PAGE_TABLE_LIB_PAGING_CONTEXT_DATA     ContextData;\r
+  UINT16                                MachineType;\r
+  PAGE_TABLE_LIB_PAGING_CONTEXT_DATA    ContextData;\r
 } PAGE_TABLE_LIB_PAGING_CONTEXT;\r
 \r
 #define PAGE_TABLE_POOL_ALIGNMENT   BASE_2MB\r
@@ -52,12 +52,11 @@ typedef struct {
   (~(EFI_PHYSICAL_ADDRESS)(PAGE_TABLE_POOL_ALIGNMENT - 1))\r
 \r
 typedef struct {\r
-  VOID            *NextPool;\r
-  UINTN           Offset;\r
-  UINTN           FreePages;\r
+  VOID     *NextPool;\r
+  UINTN    Offset;\r
+  UINTN    FreePages;\r
 } PAGE_TABLE_POOL;\r
 \r
-\r
 /**\r
   Allocates one or more 4KB pages for page table.\r
 \r
@@ -68,7 +67,7 @@ typedef struct {
 **/\r
 typedef\r
 VOID *\r
-(EFIAPI *PAGE_TABLE_LIB_ALLOCATE_PAGES) (\r
+(EFIAPI *PAGE_TABLE_LIB_ALLOCATE_PAGES)(\r
   IN UINTN  Pages\r
   );\r
 \r
@@ -103,11 +102,11 @@ VOID *
 RETURN_STATUS\r
 EFIAPI\r
 AssignMemoryPageAttributes (\r
-  IN  PAGE_TABLE_LIB_PAGING_CONTEXT     *PagingContext OPTIONAL,\r
-  IN  PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                            Length,\r
-  IN  UINT64                            Attributes,\r
-  IN  PAGE_TABLE_LIB_ALLOCATE_PAGES     AllocatePagesFunc OPTIONAL\r
+  IN  PAGE_TABLE_LIB_PAGING_CONTEXT  *PagingContext OPTIONAL,\r
+  IN  PHYSICAL_ADDRESS               BaseAddress,\r
+  IN  UINT64                         Length,\r
+  IN  UINT64                         Attributes,\r
+  IN  PAGE_TABLE_LIB_ALLOCATE_PAGES  AllocatePagesFunc OPTIONAL\r
   );\r
 \r
 /**\r
@@ -136,7 +135,7 @@ InitializePageTableLib (
 VOID *\r
 EFIAPI\r
 AllocatePageTableMemory (\r
-  IN UINTN           Pages\r
+  IN UINTN  Pages\r
   );\r
 \r
 /**\r
@@ -149,9 +148,9 @@ AllocatePageTableMemory (
 **/\r
 VOID\r
 GetPagingDetails (\r
-  IN  PAGE_TABLE_LIB_PAGING_CONTEXT_DATA *PagingContextData,\r
-  OUT UINTN                              **PageTableBase     OPTIONAL,\r
-  OUT UINT32                             **Attributes        OPTIONAL\r
+  IN  PAGE_TABLE_LIB_PAGING_CONTEXT_DATA  *PagingContextData,\r
+  OUT UINTN                               **PageTableBase     OPTIONAL,\r
+  OUT UINT32                              **Attributes        OPTIONAL\r
   );\r
 \r
 #endif\r
index 3325a42dd2d49fcfe4bbbd8d7de0cca960f88d6e..9145c17ad2761c75a490d8135625ea05b5bac7bd 100644 (file)
@@ -8,7 +8,6 @@
 \r
 #include "CpuPageTable.h"\r
 \r
-\r
 /**\r
   Get paging details.\r
 \r
 **/\r
 VOID\r
 GetPagingDetails (\r
-  IN  PAGE_TABLE_LIB_PAGING_CONTEXT_DATA *PagingContextData,\r
-  OUT UINTN                              **PageTableBase     OPTIONAL,\r
-  OUT UINT32                             **Attributes        OPTIONAL\r
+  IN  PAGE_TABLE_LIB_PAGING_CONTEXT_DATA  *PagingContextData,\r
+  OUT UINTN                               **PageTableBase     OPTIONAL,\r
+  OUT UINT32                              **Attributes        OPTIONAL\r
   )\r
 {\r
   if (PageTableBase != NULL) {\r
     *PageTableBase = &PagingContextData->Ia32.PageTableBase;\r
   }\r
+\r
   if (Attributes != NULL) {\r
     *Attributes = &PagingContextData->Ia32.Attributes;\r
   }\r
 }\r
-\r
index 79679356122c057a41c8020e86901d5292cbb84d..31ec0caff82191770c4dfa33ca1a4da938b4132c 100644 (file)
@@ -8,7 +8,6 @@
 \r
 #include "CpuPageTable.h"\r
 \r
-\r
 /**\r
   Get paging details.\r
 \r
 **/\r
 VOID\r
 GetPagingDetails (\r
-  IN  PAGE_TABLE_LIB_PAGING_CONTEXT_DATA *PagingContextData,\r
-  OUT UINTN                              **PageTableBase     OPTIONAL,\r
-  OUT UINT32                             **Attributes        OPTIONAL\r
+  IN  PAGE_TABLE_LIB_PAGING_CONTEXT_DATA  *PagingContextData,\r
+  OUT UINTN                               **PageTableBase     OPTIONAL,\r
+  OUT UINT32                              **Attributes        OPTIONAL\r
   )\r
 {\r
   if (PageTableBase != NULL) {\r
     *PageTableBase = &PagingContextData->X64.PageTableBase;\r
   }\r
+\r
   if (Attributes != NULL) {\r
     *Attributes = &PagingContextData->X64.Attributes;\r
   }\r
 }\r
-\r
index 230b9fad7ed778c724a95e7ee65f91b96d1776fb..0a0e14a134303382e50bdebc72d3b2c804aa861a 100644 (file)
@@ -18,7 +18,6 @@
 #include <Protocol/SmmConfiguration.h>\r
 #include <Guid/CpuFeaturesInitDone.h>\r
 \r
-\r
 /**\r
   Worker function to perform CPU feature initialization.\r
 \r
@@ -28,8 +27,8 @@ CpuFeaturesInitializeWorker (
   VOID\r
   )\r
 {\r
-  EFI_STATUS             Status;\r
-  EFI_HANDLE             Handle;\r
+  EFI_STATUS  Status;\r
+  EFI_HANDLE  Handle;\r
 \r
   CpuFeaturesDetect ();\r
 \r
@@ -57,12 +56,12 @@ CpuFeaturesInitializeWorker (
 VOID\r
 EFIAPI\r
 SmmConfigurationEventNotify (\r
-  IN EFI_EVENT                         Event,\r
-  IN VOID                              *Context\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  EFI_SMM_CONFIGURATION_PROTOCOL       *SmmConfiguration;\r
+  EFI_STATUS                      Status;\r
+  EFI_SMM_CONFIGURATION_PROTOCOL  *SmmConfiguration;\r
 \r
   //\r
   // Make sure this notification is for this handler\r
@@ -91,8 +90,8 @@ SmmConfigurationEventNotify (
 EFI_STATUS\r
 EFIAPI\r
 CpuFeaturesDxeInitialize (\r
-  IN EFI_HANDLE                            ImageHandle,\r
-  IN EFI_SYSTEM_TABLE                      *SystemTable\r
+  IN EFI_HANDLE        ImageHandle,\r
+  IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
   VOID        *Registration;\r
@@ -133,4 +132,3 @@ CpuFeaturesDxeInitialize (
 \r
   return EFI_SUCCESS;\r
 }\r
-\r
index be559a959555048dda3932f076cc06e803b01f32..8448668e5ad1bd50f2a1c879ab35272e69bc6e48 100644 (file)
@@ -16,7 +16,7 @@
 \r
 #include <Guid/CpuFeaturesInitDone.h>\r
 \r
-EFI_PEI_PPI_DESCRIPTOR           mPeiCpuFeaturesInitDonePpiDesc = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPeiCpuFeaturesInitDonePpiDesc = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEdkiiCpuFeaturesInitDoneGuid,\r
   NULL\r
@@ -40,14 +40,15 @@ CpuFeaturesPeimInitialize (
   IN CONST EFI_PEI_SERVICES     **PeiServices\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  EFI_BOOT_MODE              BootMode;\r
+  EFI_STATUS     Status;\r
+  EFI_BOOT_MODE  BootMode;\r
 \r
   Status = PeiServicesGetBootMode (&BootMode);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  if (BootMode == BOOT_ON_S3_RESUME &&\r
-      !PcdGetBool (PcdCpuFeaturesInitOnS3Resume)) {\r
+  if ((BootMode == BOOT_ON_S3_RESUME) &&\r
+      !PcdGetBool (PcdCpuFeaturesInitOnS3Resume))\r
+  {\r
     //\r
     // Does nothing when if PcdCpuFeaturesInitOnS3Resume is FLASE\r
     // on S3 boot mode\r
@@ -62,7 +63,7 @@ CpuFeaturesPeimInitialize (
   //\r
   // Install CPU Features Init Done PPI\r
   //\r
-  Status = PeiServicesInstallPpi(&mPeiCpuFeaturesInitDonePpiDesc);\r
+  Status = PeiServicesInstallPpi (&mPeiCpuFeaturesInitDonePpiDesc);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   //\r
@@ -72,4 +73,3 @@ CpuFeaturesPeimInitialize (
 \r
   return EFI_SUCCESS;\r
 }\r
-\r
index ade8207288b97eedffcaa2312df7210338716f35..87f4f805caf0258251d028a425dd611d503ce01f 100644 (file)
@@ -18,7 +18,7 @@ EFI_HANDLE  mHandle = NULL;
 //\r
 // CPU I/O 2 Protocol instance\r
 //\r
-EFI_CPU_IO2_PROTOCOL mCpuIo2 = {\r
+EFI_CPU_IO2_PROTOCOL  mCpuIo2 = {\r
   {\r
     CpuMemoryServiceRead,\r
     CpuMemoryServiceWrite\r
@@ -32,7 +32,7 @@ EFI_CPU_IO2_PROTOCOL mCpuIo2 = {
 //\r
 // Lookup table for increment values based on transfer widths\r
 //\r
-UINT8 mInStride[] = {\r
+UINT8  mInStride[] = {\r
   1, // EfiCpuIoWidthUint8\r
   2, // EfiCpuIoWidthUint16\r
   4, // EfiCpuIoWidthUint32\r
@@ -50,7 +50,7 @@ UINT8 mInStride[] = {
 //\r
 // Lookup table for increment values based on transfer widths\r
 //\r
-UINT8 mOutStride[] = {\r
+UINT8  mOutStride[] = {\r
   1, // EfiCpuIoWidthUint8\r
   2, // EfiCpuIoWidthUint16\r
   4, // EfiCpuIoWidthUint32\r
@@ -120,14 +120,14 @@ CpuIoCheckParameter (
   // For FIFO type, the target address won't increase during the access,\r
   // so treat Count as 1\r
   //\r
-  if (Width >= EfiCpuIoWidthFifoUint8 && Width <= EfiCpuIoWidthFifoUint64) {\r
+  if ((Width >= EfiCpuIoWidthFifoUint8) && (Width <= EfiCpuIoWidthFifoUint64)) {\r
     Count = 1;\r
   }\r
 \r
   //\r
   // Check to see if Width is in the valid range for I/O Port operations\r
   //\r
-  Width = (EFI_CPU_IO_PROTOCOL_WIDTH) (Width & 0x03);\r
+  Width = (EFI_CPU_IO_PROTOCOL_WIDTH)(Width & 0x03);\r
   if (!MmioOperation && (Width == EfiCpuIoWidthUint64)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -164,6 +164,7 @@ CpuIoCheckParameter (
     if (MaxCount < (Count - 1)) {\r
       return EFI_UNSUPPORTED;\r
     }\r
+\r
     if (Address > LShiftU64 (MaxCount - Count + 1, Width)) {\r
       return EFI_UNSUPPORTED;\r
     }\r
@@ -243,9 +244,9 @@ CpuMemoryServiceRead (
   //\r
   // Select loop based on the width of the transfer\r
   //\r
-  InStride = mInStride[Width];\r
-  OutStride = mOutStride[Width];\r
-  OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH) (Width & 0x03);\r
+  InStride       = mInStride[Width];\r
+  OutStride      = mOutStride[Width];\r
+  OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH)(Width & 0x03);\r
   for (Uint8Buffer = Buffer; Count > 0; Address += InStride, Uint8Buffer += OutStride, Count--) {\r
     if (OperationWidth == EfiCpuIoWidthUint8) {\r
       *Uint8Buffer = MmioRead8 ((UINTN)Address);\r
@@ -257,6 +258,7 @@ CpuMemoryServiceRead (
       *((UINT64 *)Uint8Buffer) = MmioRead64 ((UINTN)Address);\r
     }\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -323,9 +325,9 @@ CpuMemoryServiceWrite (
   //\r
   // Select loop based on the width of the transfer\r
   //\r
-  InStride = mInStride[Width];\r
-  OutStride = mOutStride[Width];\r
-  OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH) (Width & 0x03);\r
+  InStride       = mInStride[Width];\r
+  OutStride      = mOutStride[Width];\r
+  OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH)(Width & 0x03);\r
   for (Uint8Buffer = Buffer; Count > 0; Address += InStride, Uint8Buffer += OutStride, Count--) {\r
     if (OperationWidth == EfiCpuIoWidthUint8) {\r
       MmioWrite8 ((UINTN)Address, *Uint8Buffer);\r
@@ -337,6 +339,7 @@ CpuMemoryServiceWrite (
       MmioWrite64 ((UINTN)Address, *((UINT64 *)Uint8Buffer));\r
     }\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -403,31 +406,31 @@ CpuIoServiceRead (
   //\r
   // Select loop based on the width of the transfer\r
   //\r
-  InStride = mInStride[Width];\r
-  OutStride = mOutStride[Width];\r
-  OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH) (Width & 0x03);\r
+  InStride       = mInStride[Width];\r
+  OutStride      = mOutStride[Width];\r
+  OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH)(Width & 0x03);\r
 \r
   //\r
   // Fifo operations supported for (mInStride[Width] == 0)\r
   //\r
   if (InStride == 0) {\r
     switch (OperationWidth) {\r
-    case EfiCpuIoWidthUint8:\r
-      IoReadFifo8 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    case EfiCpuIoWidthUint16:\r
-      IoReadFifo16 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    case EfiCpuIoWidthUint32:\r
-      IoReadFifo32 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    default:\r
-      //\r
-      // The CpuIoCheckParameter call above will ensure that this\r
-      // path is not taken.\r
-      //\r
-      ASSERT (FALSE);\r
-      break;\r
+      case EfiCpuIoWidthUint8:\r
+        IoReadFifo8 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      case EfiCpuIoWidthUint16:\r
+        IoReadFifo16 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      case EfiCpuIoWidthUint32:\r
+        IoReadFifo32 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      default:\r
+        //\r
+        // The CpuIoCheckParameter call above will ensure that this\r
+        // path is not taken.\r
+        //\r
+        ASSERT (FALSE);\r
+        break;\r
     }\r
   }\r
 \r
@@ -510,31 +513,31 @@ CpuIoServiceWrite (
   //\r
   // Select loop based on the width of the transfer\r
   //\r
-  InStride = mInStride[Width];\r
-  OutStride = mOutStride[Width];\r
-  OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH) (Width & 0x03);\r
+  InStride       = mInStride[Width];\r
+  OutStride      = mOutStride[Width];\r
+  OperationWidth = (EFI_CPU_IO_PROTOCOL_WIDTH)(Width & 0x03);\r
 \r
   //\r
   // Fifo operations supported for (mInStride[Width] == 0)\r
   //\r
   if (InStride == 0) {\r
     switch (OperationWidth) {\r
-    case EfiCpuIoWidthUint8:\r
-      IoWriteFifo8 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    case EfiCpuIoWidthUint16:\r
-      IoWriteFifo16 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    case EfiCpuIoWidthUint32:\r
-      IoWriteFifo32 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    default:\r
-      //\r
-      // The CpuIoCheckParameter call above will ensure that this\r
-      // path is not taken.\r
-      //\r
-      ASSERT (FALSE);\r
-      break;\r
+      case EfiCpuIoWidthUint8:\r
+        IoWriteFifo8 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      case EfiCpuIoWidthUint16:\r
+        IoWriteFifo16 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      case EfiCpuIoWidthUint32:\r
+        IoWriteFifo32 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      default:\r
+        //\r
+        // The CpuIoCheckParameter call above will ensure that this\r
+        // path is not taken.\r
+        //\r
+        ASSERT (FALSE);\r
+        break;\r
     }\r
   }\r
 \r
@@ -568,12 +571,13 @@ CpuIo2Initialize (
   IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
-  EFI_STATUS Status;\r
+  EFI_STATUS  Status;\r
 \r
   ASSERT_PROTOCOL_ALREADY_INSTALLED (NULL, &gEfiCpuIo2ProtocolGuid);\r
   Status = gBS->InstallMultipleProtocolInterfaces (\r
                   &mHandle,\r
-                  &gEfiCpuIo2ProtocolGuid, &mCpuIo2,\r
+                  &gEfiCpuIo2ProtocolGuid,\r
+                  &mCpuIo2,\r
                   NULL\r
                   );\r
   ASSERT_EFI_ERROR (Status);\r
index 3b16b205f69b44189c1a5ffe61764aee4c06dec8..7ebde0759ba9a67e077e27943a7a4bdd336d47d9 100644 (file)
@@ -18,7 +18,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include <Library/IoLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 \r
-#define MAX_IO_PORT_ADDRESS   0xFFFF\r
+#define MAX_IO_PORT_ADDRESS  0xFFFF\r
 \r
 /**\r
   Reads memory-mapped registers.\r
index 7e314eaa1558073e071d018403448094bc59b272..44e52562a89f50d7e4090088bfa81ee9dcf80c23 100644 (file)
@@ -16,7 +16,7 @@ EFI_HANDLE  mHandle = NULL;
 //\r
 // SMM CPU I/O Protocol instance\r
 //\r
-EFI_SMM_CPU_IO2_PROTOCOL mSmmCpuIo2 = {\r
+EFI_SMM_CPU_IO2_PROTOCOL  mSmmCpuIo2 = {\r
   {\r
     CpuMemoryServiceRead,\r
     CpuMemoryServiceWrite\r
@@ -30,7 +30,7 @@ EFI_SMM_CPU_IO2_PROTOCOL mSmmCpuIo2 = {
 //\r
 // Lookup table for increment values based on transfer widths\r
 //\r
-UINT8 mStride[] = {\r
+UINT8  mStride[] = {\r
   1, // SMM_IO_UINT8\r
   2, // SMM_IO_UINT16\r
   4, // SMM_IO_UINT32\r
@@ -112,6 +112,7 @@ CpuIoCheckParameter (
     if (MaxCount < (Count - 1)) {\r
       return EFI_UNSUPPORTED;\r
     }\r
+\r
     if (Address > LShiftU64 (MaxCount - Count + 1, Width)) {\r
       return EFI_UNSUPPORTED;\r
     }\r
@@ -184,6 +185,7 @@ CpuMemoryServiceRead (
       *((UINT64 *)Uint8Buffer) = MmioRead64 ((UINTN)Address);\r
     }\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -244,6 +246,7 @@ CpuMemoryServiceWrite (
       MmioWrite64 ((UINTN)Address, *((UINT64 *)Uint8Buffer));\r
     }\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
index eda9fbb090cdca98f914be9e84ecff8d48bb406e..840451355432fc25abcf62ade2e1e9b119c19273 100644 (file)
@@ -19,7 +19,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include <Library/MmServicesTableLib.h>\r
 #include <Library/BaseMemoryLib.h>\r
 \r
-#define MAX_IO_PORT_ADDRESS   0xFFFF\r
+#define MAX_IO_PORT_ADDRESS  0xFFFF\r
 \r
 /**\r
   Reads memory-mapped registers.\r
index 98bae46e2970b9597e6c940d3677363dcdd5ea79..0d0fe3d4bc96a6d713bbc6e8aa1caedda484f0ba 100644 (file)
@@ -43,7 +43,7 @@ EFI_PEI_CPU_IO_PPI  gCpuIoPpi = {
 //\r
 // PPI Descriptor used to install the CPU I/O PPI\r
 //\r
-EFI_PEI_PPI_DESCRIPTOR gPpiList = {\r
+EFI_PEI_PPI_DESCRIPTOR  gPpiList = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiPeiCpuIoPpiInstalledGuid,\r
   NULL\r
@@ -52,7 +52,7 @@ EFI_PEI_PPI_DESCRIPTOR gPpiList = {
 //\r
 // Lookup table for increment values based on transfer widths\r
 //\r
-UINT8 mInStride[] = {\r
+UINT8  mInStride[] = {\r
   1, // EfiPeiCpuIoWidthUint8\r
   2, // EfiPeiCpuIoWidthUint16\r
   4, // EfiPeiCpuIoWidthUint32\r
@@ -70,7 +70,7 @@ UINT8 mInStride[] = {
 //\r
 // Lookup table for increment values based on transfer widths\r
 //\r
-UINT8 mOutStride[] = {\r
+UINT8  mOutStride[] = {\r
   1, // EfiPeiCpuIoWidthUint8\r
   2, // EfiPeiCpuIoWidthUint16\r
   4, // EfiPeiCpuIoWidthUint32\r
@@ -131,14 +131,14 @@ CpuIoCheckParameter (
   // For FIFO type, the target address won't increase during the access,\r
   // so treat Count as 1\r
   //\r
-  if (Width >= EfiPeiCpuIoWidthFifoUint8 && Width <= EfiPeiCpuIoWidthFifoUint64) {\r
+  if ((Width >= EfiPeiCpuIoWidthFifoUint8) && (Width <= EfiPeiCpuIoWidthFifoUint64)) {\r
     Count = 1;\r
   }\r
 \r
   //\r
   // Check to see if Width is in the valid range for I/O Port operations\r
   //\r
-  Width = (EFI_PEI_CPU_IO_PPI_WIDTH) (Width & 0x03);\r
+  Width = (EFI_PEI_CPU_IO_PPI_WIDTH)(Width & 0x03);\r
   if (!MmioOperation && (Width == EfiPeiCpuIoWidthUint64)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -168,6 +168,7 @@ CpuIoCheckParameter (
     if (MaxCount < (Count - 1)) {\r
       return EFI_UNSUPPORTED;\r
     }\r
+\r
     if (Address > LShiftU64 (MaxCount - Count + 1, Width)) {\r
       return EFI_UNSUPPORTED;\r
     }\r
@@ -220,10 +221,10 @@ CpuMemoryServiceRead (
   //\r
   // Select loop based on the width of the transfer\r
   //\r
-  InStride = mInStride[Width];\r
-  OutStride = mOutStride[Width];\r
-  OperationWidth = (EFI_PEI_CPU_IO_PPI_WIDTH) (Width & 0x03);\r
-  Aligned = (BOOLEAN)(((UINTN)Buffer & (mInStride[OperationWidth] - 1)) == 0x00);\r
+  InStride       = mInStride[Width];\r
+  OutStride      = mOutStride[Width];\r
+  OperationWidth = (EFI_PEI_CPU_IO_PPI_WIDTH)(Width & 0x03);\r
+  Aligned        = (BOOLEAN)(((UINTN)Buffer & (mInStride[OperationWidth] - 1)) == 0x00);\r
   for (Uint8Buffer = Buffer; Count > 0; Address += InStride, Uint8Buffer += OutStride, Count--) {\r
     if (OperationWidth == EfiPeiCpuIoWidthUint8) {\r
       *Uint8Buffer = MmioRead8 ((UINTN)Address);\r
@@ -247,6 +248,7 @@ CpuMemoryServiceRead (
       }\r
     }\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -294,10 +296,10 @@ CpuMemoryServiceWrite (
   //\r
   // Select loop based on the width of the transfer\r
   //\r
-  InStride = mInStride[Width];\r
-  OutStride = mOutStride[Width];\r
-  OperationWidth = (EFI_PEI_CPU_IO_PPI_WIDTH) (Width & 0x03);\r
-  Aligned = (BOOLEAN)(((UINTN)Buffer & (mInStride[OperationWidth] - 1)) == 0x00);\r
+  InStride       = mInStride[Width];\r
+  OutStride      = mOutStride[Width];\r
+  OperationWidth = (EFI_PEI_CPU_IO_PPI_WIDTH)(Width & 0x03);\r
+  Aligned        = (BOOLEAN)(((UINTN)Buffer & (mInStride[OperationWidth] - 1)) == 0x00);\r
   for (Uint8Buffer = Buffer; Count > 0; Address += InStride, Uint8Buffer += OutStride, Count--) {\r
     if (OperationWidth == EfiPeiCpuIoWidthUint8) {\r
       MmioWrite8 ((UINTN)Address, *Uint8Buffer);\r
@@ -321,6 +323,7 @@ CpuMemoryServiceWrite (
       }\r
     }\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -368,31 +371,31 @@ CpuIoServiceRead (
   //\r
   // Select loop based on the width of the transfer\r
   //\r
-  InStride = mInStride[Width];\r
-  OutStride = mOutStride[Width];\r
-  OperationWidth = (EFI_PEI_CPU_IO_PPI_WIDTH) (Width & 0x03);\r
+  InStride       = mInStride[Width];\r
+  OutStride      = mOutStride[Width];\r
+  OperationWidth = (EFI_PEI_CPU_IO_PPI_WIDTH)(Width & 0x03);\r
 \r
   //\r
   // Fifo operations supported for (mInStride[Width] == 0)\r
   //\r
   if (InStride == 0) {\r
     switch (OperationWidth) {\r
-    case EfiPeiCpuIoWidthUint8:\r
-      IoReadFifo8 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    case EfiPeiCpuIoWidthUint16:\r
-      IoReadFifo16 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    case EfiPeiCpuIoWidthUint32:\r
-      IoReadFifo32 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    default:\r
-      //\r
-      // The CpuIoCheckParameter call above will ensure that this\r
-      // path is not taken.\r
-      //\r
-      ASSERT (FALSE);\r
-      break;\r
+      case EfiPeiCpuIoWidthUint8:\r
+        IoReadFifo8 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      case EfiPeiCpuIoWidthUint16:\r
+        IoReadFifo16 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      case EfiPeiCpuIoWidthUint32:\r
+        IoReadFifo32 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      default:\r
+        //\r
+        // The CpuIoCheckParameter call above will ensure that this\r
+        // path is not taken.\r
+        //\r
+        ASSERT (FALSE);\r
+        break;\r
     }\r
   }\r
 \r
@@ -465,31 +468,31 @@ CpuIoServiceWrite (
   //\r
   // Select loop based on the width of the transfer\r
   //\r
-  InStride = mInStride[Width];\r
-  OutStride = mOutStride[Width];\r
-  OperationWidth = (EFI_PEI_CPU_IO_PPI_WIDTH) (Width & 0x03);\r
+  InStride       = mInStride[Width];\r
+  OutStride      = mOutStride[Width];\r
+  OperationWidth = (EFI_PEI_CPU_IO_PPI_WIDTH)(Width & 0x03);\r
 \r
   //\r
   // Fifo operations supported for (mInStride[Width] == 0)\r
   //\r
   if (InStride == 0) {\r
     switch (OperationWidth) {\r
-    case EfiPeiCpuIoWidthUint8:\r
-      IoWriteFifo8 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    case EfiPeiCpuIoWidthUint16:\r
-      IoWriteFifo16 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    case EfiPeiCpuIoWidthUint32:\r
-      IoWriteFifo32 ((UINTN)Address, Count, Buffer);\r
-      return EFI_SUCCESS;\r
-    default:\r
-      //\r
-      // The CpuIoCheckParameter call above will ensure that this\r
-      // path is not taken.\r
-      //\r
-      ASSERT (FALSE);\r
-      break;\r
+      case EfiPeiCpuIoWidthUint8:\r
+        IoWriteFifo8 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      case EfiPeiCpuIoWidthUint16:\r
+        IoWriteFifo16 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      case EfiPeiCpuIoWidthUint32:\r
+        IoWriteFifo32 ((UINTN)Address, Count, Buffer);\r
+        return EFI_SUCCESS;\r
+      default:\r
+        //\r
+        // The CpuIoCheckParameter call above will ensure that this\r
+        // path is not taken.\r
+        //\r
+        ASSERT (FALSE);\r
+        break;\r
     }\r
   }\r
 \r
@@ -572,9 +575,9 @@ CpuIoRead16 (
 UINT32\r
 EFIAPI\r
 CpuIoRead32 (\r
-  IN CONST EFI_PEI_SERVICES     **PeiServices,\r
-  IN CONST EFI_PEI_CPU_IO_PPI   *This,\r
-  IN UINT64                     Address\r
+  IN CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN UINT64                    Address\r
   )\r
 {\r
   return IoRead32 ((UINTN)Address);\r
index e8676df906c259d9753ced3f86b872249fbf9031..eb1982f9470bd8efdbd56d69240698a6aeabfc3d 100644 (file)
@@ -18,7 +18,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include <Library/IoLib.h>\r
 #include <Library/PeiServicesLib.h>\r
 \r
-#define MAX_IO_PORT_ADDRESS   0xFFFF\r
+#define MAX_IO_PORT_ADDRESS  0xFFFF\r
 \r
 /**\r
   Reads memory-mapped registers.\r
@@ -149,9 +149,9 @@ CpuIoServiceWrite (
 UINT8\r
 EFIAPI\r
 CpuIoRead8 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address\r
   );\r
 \r
 /**\r
@@ -168,9 +168,9 @@ CpuIoRead8 (
 UINT16\r
 EFIAPI\r
 CpuIoRead16 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address\r
   );\r
 \r
 /**\r
@@ -187,9 +187,9 @@ CpuIoRead16 (
 UINT32\r
 EFIAPI\r
 CpuIoRead32 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address\r
   );\r
 \r
 /**\r
@@ -206,9 +206,9 @@ CpuIoRead32 (
 UINT64\r
 EFIAPI\r
 CpuIoRead64 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address\r
   );\r
 \r
 /**\r
@@ -224,10 +224,10 @@ CpuIoRead64 (
 VOID\r
 EFIAPI\r
 CpuIoWrite8 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address,\r
-  IN  UINT8                       Data\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address,\r
+  IN  UINT8                     Data\r
   );\r
 \r
 /**\r
@@ -243,10 +243,10 @@ CpuIoWrite8 (
 VOID\r
 EFIAPI\r
 CpuIoWrite16 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address,\r
-  IN  UINT16                      Data\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address,\r
+  IN  UINT16                    Data\r
   );\r
 \r
 /**\r
@@ -262,10 +262,10 @@ CpuIoWrite16 (
 VOID\r
 EFIAPI\r
 CpuIoWrite32 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address,\r
-  IN  UINT32                      Data\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address,\r
+  IN  UINT32                    Data\r
   );\r
 \r
 /**\r
@@ -281,10 +281,10 @@ CpuIoWrite32 (
 VOID\r
 EFIAPI\r
 CpuIoWrite64 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address,\r
-  IN  UINT64                      Data\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address,\r
+  IN  UINT64                    Data\r
   );\r
 \r
 /**\r
@@ -301,9 +301,9 @@ CpuIoWrite64 (
 UINT8\r
 EFIAPI\r
 CpuMemRead8 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address\r
   );\r
 \r
 /**\r
@@ -320,9 +320,9 @@ CpuMemRead8 (
 UINT16\r
 EFIAPI\r
 CpuMemRead16 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address\r
   );\r
 \r
 /**\r
@@ -339,9 +339,9 @@ CpuMemRead16 (
 UINT32\r
 EFIAPI\r
 CpuMemRead32 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address\r
   );\r
 \r
 /**\r
@@ -358,9 +358,9 @@ CpuMemRead32 (
 UINT64\r
 EFIAPI\r
 CpuMemRead64 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address\r
   );\r
 \r
 /**\r
@@ -376,10 +376,10 @@ CpuMemRead64 (
 VOID\r
 EFIAPI\r
 CpuMemWrite8 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address,\r
-  IN  UINT8                       Data\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address,\r
+  IN  UINT8                     Data\r
   );\r
 \r
 /**\r
@@ -395,10 +395,10 @@ CpuMemWrite8 (
 VOID\r
 EFIAPI\r
 CpuMemWrite16 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address,\r
-  IN  UINT16                      Data\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address,\r
+  IN  UINT16                    Data\r
   );\r
 \r
 /**\r
@@ -414,10 +414,10 @@ CpuMemWrite16 (
 VOID\r
 EFIAPI\r
 CpuMemWrite32 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address,\r
-  IN  UINT32                      Data\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address,\r
+  IN  UINT32                    Data\r
   );\r
 \r
 /**\r
@@ -433,10 +433,10 @@ CpuMemWrite32 (
 VOID\r
 EFIAPI\r
 CpuMemWrite64 (\r
-  IN  CONST EFI_PEI_SERVICES      **PeiServices,\r
-  IN  CONST EFI_PEI_CPU_IO_PPI    *This,\r
-  IN  UINT64                      Address,\r
-  IN  UINT64                      Data\r
+  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
+  IN  CONST EFI_PEI_CPU_IO_PPI  *This,\r
+  IN  UINT64                    Address,\r
+  IN  UINT64                    Data\r
   );\r
 \r
 #endif\r
index bb35bb434728bd97af9af5537eadb122f88f0ef5..7dc93cd784d4ae01774ad3b252fc8292a6a329f1 100644 (file)
@@ -8,11 +8,11 @@
 \r
 #include "CpuMpPei.h"\r
 \r
-EFI_SEC_PLATFORM_INFORMATION2_PPI mSecPlatformInformation2Ppi = {\r
+EFI_SEC_PLATFORM_INFORMATION2_PPI  mSecPlatformInformation2Ppi = {\r
   SecPlatformInformation2\r
 };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR mPeiSecPlatformInformation2Ppi = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPeiSecPlatformInformation2Ppi = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiSecPlatformInformation2PpiGuid,\r
   &mSecPlatformInformation2Ppi\r
@@ -33,14 +33,14 @@ EFI_PEI_PPI_DESCRIPTOR mPeiSecPlatformInformation2Ppi = {
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformation2 (\r
-  IN CONST EFI_PEI_SERVICES                   **PeiServices,\r
-  IN OUT UINT64                               *StructureSize,\r
-     OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2\r
+  IN CONST EFI_PEI_SERVICES                 **PeiServices,\r
+  IN OUT UINT64                             *StructureSize,\r
+  OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2  *PlatformInformationRecord2\r
   )\r
 {\r
-  EFI_HOB_GUID_TYPE       *GuidHob;\r
-  VOID                    *DataInHob;\r
-  UINTN                   DataSize;\r
+  EFI_HOB_GUID_TYPE  *GuidHob;\r
+  VOID               *DataInHob;\r
+  UINTN              DataSize;\r
 \r
   GuidHob = GetFirstGuidHob (&gEfiSecPlatformInformation2PpiGuid);\r
   if (GuidHob == NULL) {\r
@@ -54,12 +54,12 @@ SecPlatformInformation2 (
   //\r
   // return the information from BistHob\r
   //\r
-  if ((*StructureSize) < (UINT64) DataSize) {\r
-    *StructureSize = (UINT64) DataSize;\r
+  if ((*StructureSize) < (UINT64)DataSize) {\r
+    *StructureSize = (UINT64)DataSize;\r
     return EFI_BUFFER_TOO_SMALL;\r
   }\r
 \r
-  *StructureSize = (UINT64) DataSize;\r
+  *StructureSize = (UINT64)DataSize;\r
   CopyMem (PlatformInformationRecord2, DataInHob, DataSize);\r
   return EFI_SUCCESS;\r
 }\r
@@ -82,11 +82,11 @@ SecPlatformInformation2 (
 **/\r
 EFI_STATUS\r
 GetBistInfoFromPpi (\r
-  IN CONST EFI_PEI_SERVICES     **PeiServices,\r
-  IN CONST EFI_GUID             *Guid,\r
-     OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,\r
-     OUT VOID                   **BistInformationData,\r
-     OUT UINT64                 *BistInformationSize OPTIONAL\r
+  IN CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN CONST EFI_GUID           *Guid,\r
+  OUT EFI_PEI_PPI_DESCRIPTOR  **PpiDescriptor,\r
+  OUT VOID                    **BistInformationData,\r
+  OUT UINT64                  *BistInformationSize OPTIONAL\r
   )\r
 {\r
   EFI_STATUS                            Status;\r
@@ -110,15 +110,15 @@ GetBistInfoFromPpi (
     //\r
     InformationSize         = 0;\r
     SecPlatformInformation2 = NULL;\r
-    Status = SecPlatformInformation2Ppi->PlatformInformation2 (\r
-                                           PeiServices,\r
-                                           &InformationSize,\r
-                                           SecPlatformInformation2\r
-                                           );\r
+    Status                  = SecPlatformInformation2Ppi->PlatformInformation2 (\r
+                                                            PeiServices,\r
+                                                            &InformationSize,\r
+                                                            SecPlatformInformation2\r
+                                                            );\r
     if (Status == EFI_BUFFER_TOO_SMALL) {\r
       Status = PeiServicesAllocatePool (\r
-                 (UINTN) InformationSize,\r
-                 (VOID **) &SecPlatformInformation2\r
+                 (UINTN)InformationSize,\r
+                 (VOID **)&SecPlatformInformation2\r
                  );\r
       if (Status == EFI_SUCCESS) {\r
         //\r
@@ -134,6 +134,7 @@ GetBistInfoFromPpi (
           if (BistInformationSize != NULL) {\r
             *BistInformationSize = InformationSize;\r
           }\r
+\r
           return EFI_SUCCESS;\r
         }\r
       }\r
@@ -154,7 +155,7 @@ GetBistInfoFromPpi (
 **/\r
 VOID\r
 CollectBistDataFromPpi (\r
-  IN CONST EFI_PEI_SERVICES             **PeiServices\r
+  IN CONST EFI_PEI_SERVICES  **PeiServices\r
   )\r
 {\r
   EFI_STATUS                            Status;\r
@@ -174,14 +175,13 @@ CollectBistDataFromPpi (
   EFI_SEC_PLATFORM_INFORMATION_RECORD2  *PlatformInformationRecord2;\r
   EFI_SEC_PLATFORM_INFORMATION_CPU      *CpuInstanceInHob;\r
 \r
-\r
-  MpInitLibGetNumberOfProcessors(&NumberOfProcessors, &NumberOfEnabledProcessors);\r
+  MpInitLibGetNumberOfProcessors (&NumberOfProcessors, &NumberOfEnabledProcessors);\r
 \r
   BistInformationSize = sizeof (EFI_SEC_PLATFORM_INFORMATION_RECORD2) +\r
                         sizeof (EFI_SEC_PLATFORM_INFORMATION_CPU) * NumberOfProcessors;\r
   Status = PeiServicesAllocatePool (\r
-             (UINTN) BistInformationSize,\r
-             (VOID **) &PlatformInformationRecord2\r
+             (UINTN)BistInformationSize,\r
+             (VOID **)&PlatformInformationRecord2\r
              );\r
   ASSERT_EFI_ERROR (Status);\r
   PlatformInformationRecord2->NumberOfCpus = (UINT32)NumberOfProcessors;\r
@@ -197,7 +197,7 @@ CollectBistDataFromPpi (
              PeiServices,\r
              &gEfiSecPlatformInformation2PpiGuid,\r
              &SecInformationDescriptor,\r
-             (VOID *) &SecPlatformInformation2,\r
+             (VOID *)&SecPlatformInformation2,\r
              NULL\r
              );\r
   if (Status == EFI_SUCCESS) {\r
@@ -214,7 +214,7 @@ CollectBistDataFromPpi (
                PeiServices,\r
                &gEfiSecPlatformInformationPpiGuid,\r
                &SecInformationDescriptor,\r
-               (VOID *) &SecPlatformInformation,\r
+               (VOID *)&SecPlatformInformation,\r
                NULL\r
                );\r
     if (Status == EFI_SUCCESS) {\r
@@ -223,16 +223,17 @@ CollectBistDataFromPpi (
       // SEC Platform Information only includes BSP's BIST information\r
       // and does not have BSP's APIC ID\r
       //\r
-      BspCpuInstance.CpuLocation = GetInitialApicId ();\r
-      BspCpuInstance.InfoRecord.IA32HealthFlags.Uint32  = SecPlatformInformation->IA32HealthFlags.Uint32;\r
-      CpuInstance = &BspCpuInstance;\r
+      BspCpuInstance.CpuLocation                       = GetInitialApicId ();\r
+      BspCpuInstance.InfoRecord.IA32HealthFlags.Uint32 = SecPlatformInformation->IA32HealthFlags.Uint32;\r
+      CpuInstance                                      = &BspCpuInstance;\r
     } else {\r
       DEBUG ((DEBUG_INFO, "Does not find any stored CPU BIST information from PPI!\n"));\r
     }\r
   }\r
-  for (ProcessorNumber = 0; ProcessorNumber < NumberOfProcessors; ProcessorNumber ++) {\r
+\r
+  for (ProcessorNumber = 0; ProcessorNumber < NumberOfProcessors; ProcessorNumber++) {\r
     MpInitLibGetProcessorInfo (ProcessorNumber, &ProcessorInfo, &BistData);\r
-    for (CpuIndex = 0; CpuIndex < NumberOfData; CpuIndex ++) {\r
+    for (CpuIndex = 0; CpuIndex < NumberOfData; CpuIndex++) {\r
       ASSERT (CpuInstance != NULL);\r
       if (ProcessorInfo.ProcessorId == CpuInstance[CpuIndex].CpuLocation) {\r
         //\r
@@ -241,6 +242,7 @@ CollectBistDataFromPpi (
         BistData = CpuInstance[CpuIndex].InfoRecord.IA32HealthFlags;\r
       }\r
     }\r
+\r
     if (BistData.Uint32 != 0) {\r
       //\r
       // Report Status Code that self test is failed\r
@@ -250,12 +252,15 @@ CollectBistDataFromPpi (
         (EFI_COMPUTING_UNIT_HOST_PROCESSOR | EFI_CU_HP_EC_SELF_TEST)\r
         );\r
     }\r
-    DEBUG ((DEBUG_INFO, "  APICID - 0x%08x, BIST - 0x%08x\n",\r
-            (UINT32) ProcessorInfo.ProcessorId,\r
-            BistData\r
-            ));\r
-    CpuInstanceInHob = PlatformInformationRecord2->CpuInstance;\r
-    CpuInstanceInHob[ProcessorNumber].CpuLocation = (UINT32) ProcessorInfo.ProcessorId;\r
+\r
+    DEBUG ((\r
+      DEBUG_INFO,\r
+      "  APICID - 0x%08x, BIST - 0x%08x\n",\r
+      (UINT32)ProcessorInfo.ProcessorId,\r
+      BistData\r
+      ));\r
+    CpuInstanceInHob                                             = PlatformInformationRecord2->CpuInstance;\r
+    CpuInstanceInHob[ProcessorNumber].CpuLocation                = (UINT32)ProcessorInfo.ProcessorId;\r
     CpuInstanceInHob[ProcessorNumber].InfoRecord.IA32HealthFlags = BistData;\r
   }\r
 \r
@@ -266,7 +271,7 @@ CollectBistDataFromPpi (
   BuildGuidDataHob (\r
     &gEfiSecPlatformInformation2PpiGuid,\r
     PlatformInformationRecord2,\r
-    (UINTN) BistInformationSize\r
+    (UINTN)BistInformationSize\r
     );\r
 \r
   if (SecPlatformInformation2 != NULL) {\r
@@ -285,6 +290,6 @@ CollectBistDataFromPpi (
     // Install SecPlatformInformation2 PPI\r
     //\r
     Status = PeiServicesInstallPpi (&mPeiSecPlatformInformation2Ppi);\r
-    ASSERT_EFI_ERROR(Status);\r
+    ASSERT_EFI_ERROR (Status);\r
   }\r
 }\r
index c1116a5b7736c07d8da1a71a34e552f6e0d9d4bd..9c55eadb18828ef7c6f5042b0c5411494c411e97 100644 (file)
@@ -43,9 +43,9 @@
 EFI_STATUS\r
 EFIAPI\r
 EdkiiPeiGetNumberOfProcessors (\r
-  IN  EDKII_PEI_MP_SERVICES2_PPI   *This,\r
-  OUT UINTN                     *NumberOfProcessors,\r
-  OUT UINTN                     *NumberOfEnabledProcessors\r
+  IN  EDKII_PEI_MP_SERVICES2_PPI  *This,\r
+  OUT UINTN                       *NumberOfProcessors,\r
+  OUT UINTN                       *NumberOfEnabledProcessors\r
   )\r
 {\r
   if ((NumberOfProcessors == NULL) || (NumberOfEnabledProcessors == NULL)) {\r
@@ -85,9 +85,9 @@ EdkiiPeiGetNumberOfProcessors (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiPeiGetProcessorInfo (\r
-  IN  EDKII_PEI_MP_SERVICES2_PPI    *This,\r
-  IN  UINTN                         ProcessorNumber,\r
-  OUT EFI_PROCESSOR_INFORMATION     *ProcessorInfoBuffer\r
+  IN  EDKII_PEI_MP_SERVICES2_PPI  *This,\r
+  IN  UINTN                       ProcessorNumber,\r
+  OUT EFI_PROCESSOR_INFORMATION   *ProcessorInfoBuffer\r
   )\r
 {\r
   return MpInitLibGetProcessorInfo (ProcessorNumber, ProcessorInfoBuffer, NULL);\r
@@ -157,11 +157,11 @@ EdkiiPeiGetProcessorInfo (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiPeiStartupAllAPs (\r
-  IN  EDKII_PEI_MP_SERVICES2_PPI   *This,\r
-  IN  EFI_AP_PROCEDURE             Procedure,\r
-  IN  BOOLEAN                      SingleThread,\r
-  IN  UINTN                        TimeoutInMicroSeconds,\r
-  IN  VOID                         *ProcedureArgument      OPTIONAL\r
+  IN  EDKII_PEI_MP_SERVICES2_PPI  *This,\r
+  IN  EFI_AP_PROCEDURE            Procedure,\r
+  IN  BOOLEAN                     SingleThread,\r
+  IN  UINTN                       TimeoutInMicroSeconds,\r
+  IN  VOID                        *ProcedureArgument      OPTIONAL\r
   )\r
 {\r
   return MpInitLibStartupAllAPs (\r
@@ -221,11 +221,11 @@ EdkiiPeiStartupAllAPs (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiPeiStartupThisAP (\r
-  IN  EDKII_PEI_MP_SERVICES2_PPI   *This,\r
-  IN  EFI_AP_PROCEDURE             Procedure,\r
-  IN  UINTN                        ProcessorNumber,\r
-  IN  UINTN                        TimeoutInMicroseconds,\r
-  IN  VOID                         *ProcedureArgument      OPTIONAL\r
+  IN  EDKII_PEI_MP_SERVICES2_PPI  *This,\r
+  IN  EFI_AP_PROCEDURE            Procedure,\r
+  IN  UINTN                       ProcessorNumber,\r
+  IN  UINTN                       TimeoutInMicroseconds,\r
+  IN  VOID                        *ProcedureArgument      OPTIONAL\r
   )\r
 {\r
   return MpInitLibStartupThisAP (\r
@@ -321,10 +321,10 @@ EdkiiPeiSwitchBSP (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiPeiEnableDisableAP (\r
-  IN  EDKII_PEI_MP_SERVICES2_PPI   *This,\r
-  IN  UINTN                        ProcessorNumber,\r
-  IN  BOOLEAN                      EnableAP,\r
-  IN  UINT32                       *HealthFlag OPTIONAL\r
+  IN  EDKII_PEI_MP_SERVICES2_PPI  *This,\r
+  IN  UINTN                       ProcessorNumber,\r
+  IN  BOOLEAN                     EnableAP,\r
+  IN  UINT32                      *HealthFlag OPTIONAL\r
   )\r
 {\r
   return MpInitLibEnableDisableAP (ProcessorNumber, EnableAP, HealthFlag);\r
@@ -388,10 +388,10 @@ EdkiiPeiWhoAmI (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiPeiStartupAllCPUs (\r
-  IN  EDKII_PEI_MP_SERVICES2_PPI   *This,\r
-  IN  EFI_AP_PROCEDURE             Procedure,\r
-  IN  UINTN                        TimeoutInMicroSeconds,\r
-  IN  VOID                         *ProcedureArgument      OPTIONAL\r
+  IN  EDKII_PEI_MP_SERVICES2_PPI  *This,\r
+  IN  EFI_AP_PROCEDURE            Procedure,\r
+  IN  UINTN                       TimeoutInMicroSeconds,\r
+  IN  VOID                        *ProcedureArgument      OPTIONAL\r
   )\r
 {\r
   return MpInitLibStartupAllCPUs (\r
@@ -404,7 +404,7 @@ EdkiiPeiStartupAllCPUs (
 //\r
 // CPU MP2 PPI to be installed\r
 //\r
-EDKII_PEI_MP_SERVICES2_PPI            mMpServices2Ppi = {\r
+EDKII_PEI_MP_SERVICES2_PPI  mMpServices2Ppi = {\r
   EdkiiPeiGetNumberOfProcessors,\r
   EdkiiPeiGetProcessorInfo,\r
   EdkiiPeiStartupAllAPs,\r
@@ -414,4 +414,3 @@ EDKII_PEI_MP_SERVICES2_PPI            mMpServices2Ppi = {
   EdkiiPeiWhoAmI,\r
   EdkiiPeiStartupAllCPUs\r
 };\r
-\r
index 3c1bad64701d43c601936b37c6b0556fd959c87f..1e68c91d95f31c579d5d5e86d58259cf70077599 100644 (file)
@@ -8,12 +8,12 @@
 \r
 #include "CpuMpPei.h"\r
 \r
-extern EDKII_PEI_MP_SERVICES2_PPI            mMpServices2Ppi;\r
+extern EDKII_PEI_MP_SERVICES2_PPI  mMpServices2Ppi;\r
 \r
 //\r
 // CPU MP PPI to be installed\r
 //\r
-EFI_PEI_MP_SERVICES_PPI                mMpServicesPpi = {\r
+EFI_PEI_MP_SERVICES_PPI  mMpServicesPpi = {\r
   PeiGetNumberOfProcessors,\r
   PeiGetProcessorInfo,\r
   PeiStartupAllAPs,\r
@@ -23,7 +23,7 @@ EFI_PEI_MP_SERVICES_PPI                mMpServicesPpi = {
   PeiWhoAmI,\r
 };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR           mPeiCpuMpPpiList[] = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPeiCpuMpPpiList[] = {\r
   {\r
     EFI_PEI_PPI_DESCRIPTOR_PPI,\r
     &gEdkiiPeiMpServices2PpiGuid,\r
@@ -73,10 +73,10 @@ EFI_PEI_PPI_DESCRIPTOR           mPeiCpuMpPpiList[] = {
 EFI_STATUS\r
 EFIAPI\r
 PeiGetNumberOfProcessors (\r
-  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
-  IN  EFI_PEI_MP_SERVICES_PPI   *This,\r
-  OUT UINTN                     *NumberOfProcessors,\r
-  OUT UINTN                     *NumberOfEnabledProcessors\r
+  IN  CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN  EFI_PEI_MP_SERVICES_PPI  *This,\r
+  OUT UINTN                    *NumberOfProcessors,\r
+  OUT UINTN                    *NumberOfEnabledProcessors\r
   )\r
 {\r
   if ((NumberOfProcessors == NULL) || (NumberOfEnabledProcessors == NULL)) {\r
@@ -193,12 +193,12 @@ PeiGetProcessorInfo (
 EFI_STATUS\r
 EFIAPI\r
 PeiStartupAllAPs (\r
-  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
-  IN  EFI_PEI_MP_SERVICES_PPI   *This,\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  BOOLEAN                   SingleThread,\r
-  IN  UINTN                     TimeoutInMicroSeconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL\r
+  IN  CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN  EFI_PEI_MP_SERVICES_PPI  *This,\r
+  IN  EFI_AP_PROCEDURE         Procedure,\r
+  IN  BOOLEAN                  SingleThread,\r
+  IN  UINTN                    TimeoutInMicroSeconds,\r
+  IN  VOID                     *ProcedureArgument      OPTIONAL\r
   )\r
 {\r
   return MpInitLibStartupAllAPs (\r
@@ -260,12 +260,12 @@ PeiStartupAllAPs (
 EFI_STATUS\r
 EFIAPI\r
 PeiStartupThisAP (\r
-  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
-  IN  EFI_PEI_MP_SERVICES_PPI   *This,\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL\r
+  IN  CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN  EFI_PEI_MP_SERVICES_PPI  *This,\r
+  IN  EFI_AP_PROCEDURE         Procedure,\r
+  IN  UINTN                    ProcessorNumber,\r
+  IN  UINTN                    TimeoutInMicroseconds,\r
+  IN  VOID                     *ProcedureArgument      OPTIONAL\r
   )\r
 {\r
   return MpInitLibStartupThisAP (\r
@@ -366,11 +366,11 @@ PeiSwitchBSP (
 EFI_STATUS\r
 EFIAPI\r
 PeiEnableDisableAP (\r
-  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
-  IN  EFI_PEI_MP_SERVICES_PPI   *This,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  BOOLEAN                   EnableAP,\r
-  IN  UINT32                    *HealthFlag OPTIONAL\r
+  IN  CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN  EFI_PEI_MP_SERVICES_PPI  *This,\r
+  IN  UINTN                    ProcessorNumber,\r
+  IN  BOOLEAN                  EnableAP,\r
+  IN  UINT32                   *HealthFlag OPTIONAL\r
   )\r
 {\r
   return MpInitLibEnableDisableAP (ProcessorNumber, EnableAP, HealthFlag);\r
@@ -423,7 +423,7 @@ PeiWhoAmI (
 VOID\r
 EFIAPI\r
 GetGdtr (\r
-  IN OUT VOID *Buffer\r
+  IN OUT VOID  *Buffer\r
   )\r
 {\r
   AsmReadGdtr ((IA32_DESCRIPTOR *)Buffer);\r
@@ -441,12 +441,12 @@ GetGdtr (
 VOID\r
 EFIAPI\r
 InitializeExceptionStackSwitchHandlers (\r
-  IN OUT VOID *Buffer\r
+  IN OUT VOID  *Buffer\r
   )\r
 {\r
-  CPU_EXCEPTION_INIT_DATA           *EssData;\r
-  IA32_DESCRIPTOR                   Idtr;\r
-  EFI_STATUS                        Status;\r
+  CPU_EXCEPTION_INIT_DATA  *EssData;\r
+  IA32_DESCRIPTOR          Idtr;\r
+  EFI_STATUS               Status;\r
 \r
   EssData = Buffer;\r
   //\r
@@ -454,9 +454,9 @@ InitializeExceptionStackSwitchHandlers (
   // the AP's IDT is the same as BSP's IDT either.\r
   //\r
   AsmReadIdtr (&Idtr);\r
-  EssData->Ia32.IdtTable = (VOID *)Idtr.Base;\r
+  EssData->Ia32.IdtTable     = (VOID *)Idtr.Base;\r
   EssData->Ia32.IdtTableSize = Idtr.Limit + 1;\r
-  Status = InitializeCpuExceptionHandlersEx (NULL, EssData);\r
+  Status                     = InitializeCpuExceptionHandlersEx (NULL, EssData);\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
@@ -472,58 +472,59 @@ InitializeMpExceptionStackSwitchHandlers (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                      Status;\r
-  UINTN                           Index;\r
-  UINTN                           Bsp;\r
-  UINTN                           ExceptionNumber;\r
-  UINTN                           OldGdtSize;\r
-  UINTN                           NewGdtSize;\r
-  UINTN                           NewStackSize;\r
-  IA32_DESCRIPTOR                 Gdtr;\r
-  CPU_EXCEPTION_INIT_DATA         EssData;\r
-  UINT8                           *GdtBuffer;\r
-  UINT8                           *StackTop;\r
-  UINTN                           NumberOfProcessors;\r
+  EFI_STATUS               Status;\r
+  UINTN                    Index;\r
+  UINTN                    Bsp;\r
+  UINTN                    ExceptionNumber;\r
+  UINTN                    OldGdtSize;\r
+  UINTN                    NewGdtSize;\r
+  UINTN                    NewStackSize;\r
+  IA32_DESCRIPTOR          Gdtr;\r
+  CPU_EXCEPTION_INIT_DATA  EssData;\r
+  UINT8                    *GdtBuffer;\r
+  UINT8                    *StackTop;\r
+  UINTN                    NumberOfProcessors;\r
 \r
   if (!PcdGetBool (PcdCpuStackGuard)) {\r
     return;\r
   }\r
 \r
-  MpInitLibGetNumberOfProcessors(&NumberOfProcessors, NULL);\r
+  MpInitLibGetNumberOfProcessors (&NumberOfProcessors, NULL);\r
   MpInitLibWhoAmI (&Bsp);\r
 \r
   ExceptionNumber = FixedPcdGetSize (PcdCpuStackSwitchExceptionList);\r
-  NewStackSize = FixedPcdGet32 (PcdCpuKnownGoodStackSize) * ExceptionNumber;\r
+  NewStackSize    = FixedPcdGet32 (PcdCpuKnownGoodStackSize) * ExceptionNumber;\r
 \r
   StackTop = AllocatePages (EFI_SIZE_TO_PAGES (NewStackSize * NumberOfProcessors));\r
-  ASSERT(StackTop != NULL);\r
+  ASSERT (StackTop != NULL);\r
   if (StackTop == NULL) {\r
     return;\r
   }\r
+\r
   StackTop += NewStackSize  * NumberOfProcessors;\r
 \r
   //\r
   // The default exception handlers must have been initialized. Let's just skip\r
   // it in this method.\r
   //\r
-  EssData.Ia32.Revision = CPU_EXCEPTION_INIT_DATA_REV;\r
+  EssData.Ia32.Revision            = CPU_EXCEPTION_INIT_DATA_REV;\r
   EssData.Ia32.InitDefaultHandlers = FALSE;\r
 \r
-  EssData.Ia32.StackSwitchExceptions = FixedPcdGetPtr(PcdCpuStackSwitchExceptionList);\r
+  EssData.Ia32.StackSwitchExceptions      = FixedPcdGetPtr (PcdCpuStackSwitchExceptionList);\r
   EssData.Ia32.StackSwitchExceptionNumber = ExceptionNumber;\r
-  EssData.Ia32.KnownGoodStackSize = FixedPcdGet32(PcdCpuKnownGoodStackSize);\r
+  EssData.Ia32.KnownGoodStackSize         = FixedPcdGet32 (PcdCpuKnownGoodStackSize);\r
 \r
   //\r
   // Initialize Gdtr to suppress incorrect compiler/analyzer warnings.\r
   //\r
-  Gdtr.Base = 0;\r
+  Gdtr.Base  = 0;\r
   Gdtr.Limit = 0;\r
   for (Index = 0; Index < NumberOfProcessors; ++Index) {\r
     //\r
     // To support stack switch, we need to re-construct GDT but not IDT.\r
     //\r
     if (Index == Bsp) {\r
-      GetGdtr(&Gdtr);\r
+      GetGdtr (&Gdtr);\r
     } else {\r
       //\r
       // AP might have different size of GDT from BSP.\r
@@ -560,7 +561,7 @@ InitializeMpExceptionStackSwitchHandlers (
     //    |                              |\r
     //    --------------------------------\r
     //\r
-    OldGdtSize = Gdtr.Limit + 1;\r
+    OldGdtSize                        = Gdtr.Limit + 1;\r
     EssData.Ia32.ExceptionTssDescSize = sizeof (IA32_TSS_DESCRIPTOR) *\r
                                         (ExceptionNumber + 1);\r
     EssData.Ia32.ExceptionTssSize = sizeof (IA32_TASK_STATE_SEGMENT) *\r
@@ -583,19 +584,21 @@ InitializeMpExceptionStackSwitchHandlers (
     //\r
     // Make sure GDT table alignment\r
     //\r
-    EssData.Ia32.GdtTable = ALIGN_POINTER(GdtBuffer, sizeof (IA32_TSS_DESCRIPTOR));\r
-    NewGdtSize -= ((UINT8 *)EssData.Ia32.GdtTable - GdtBuffer);\r
+    EssData.Ia32.GdtTable     = ALIGN_POINTER (GdtBuffer, sizeof (IA32_TSS_DESCRIPTOR));\r
+    NewGdtSize               -= ((UINT8 *)EssData.Ia32.GdtTable - GdtBuffer);\r
     EssData.Ia32.GdtTableSize = NewGdtSize;\r
 \r
     EssData.Ia32.ExceptionTssDesc = ((UINT8 *)EssData.Ia32.GdtTable + OldGdtSize);\r
-    EssData.Ia32.ExceptionTss = ((UINT8 *)EssData.Ia32.GdtTable + OldGdtSize +\r
-                                 EssData.Ia32.ExceptionTssDescSize);\r
+    EssData.Ia32.ExceptionTss     = ((UINT8 *)EssData.Ia32.GdtTable + OldGdtSize +\r
+                                     EssData.Ia32.ExceptionTssDescSize);\r
 \r
     EssData.Ia32.KnownGoodStackTop = (UINTN)StackTop;\r
-    DEBUG ((DEBUG_INFO,\r
-            "Exception stack top[cpu%lu]: 0x%lX\n",\r
-            (UINT64)(UINTN)Index,\r
-            (UINT64)(UINTN)StackTop));\r
+    DEBUG ((\r
+      DEBUG_INFO,\r
+      "Exception stack top[cpu%lu]: 0x%lX\n",\r
+      (UINT64)(UINTN)Index,\r
+      (UINT64)(UINTN)StackTop\r
+      ));\r
 \r
     if (Index == Bsp) {\r
       InitializeExceptionStackSwitchHandlers (&EssData);\r
@@ -610,7 +613,7 @@ InitializeMpExceptionStackSwitchHandlers (
         );\r
     }\r
 \r
-    StackTop  -= NewStackSize;\r
+    StackTop -= NewStackSize;\r
   }\r
 }\r
 \r
@@ -625,23 +628,23 @@ InitializeMpExceptionStackSwitchHandlers (
 **/\r
 EFI_STATUS\r
 InitializeCpuMpWorker (\r
-  IN CONST EFI_PEI_SERVICES     **PeiServices\r
+  IN CONST EFI_PEI_SERVICES  **PeiServices\r
   )\r
 {\r
-  EFI_STATUS                      Status;\r
-  EFI_VECTOR_HANDOFF_INFO         *VectorInfo;\r
-  EFI_PEI_VECTOR_HANDOFF_INFO_PPI *VectorHandoffInfoPpi;\r
+  EFI_STATUS                       Status;\r
+  EFI_VECTOR_HANDOFF_INFO          *VectorInfo;\r
+  EFI_PEI_VECTOR_HANDOFF_INFO_PPI  *VectorHandoffInfoPpi;\r
 \r
   //\r
   // Get Vector Hand-off Info PPI\r
   //\r
   VectorInfo = NULL;\r
-  Status = PeiServicesLocatePpi (\r
-             &gEfiVectorHandoffInfoPpiGuid,\r
-             0,\r
-             NULL,\r
-             (VOID **)&VectorHandoffInfoPpi\r
-             );\r
+  Status     = PeiServicesLocatePpi (\r
+                 &gEfiVectorHandoffInfoPpiGuid,\r
+                 0,\r
+                 NULL,\r
+                 (VOID **)&VectorHandoffInfoPpi\r
+                 );\r
   if (Status == EFI_SUCCESS) {\r
     VectorInfo = VectorHandoffInfoPpi->Info;\r
   }\r
@@ -672,7 +675,7 @@ InitializeCpuMpWorker (
   //\r
   // Install CPU MP PPI\r
   //\r
-  Status = PeiServicesInstallPpi(mPeiCpuMpPpiList);\r
+  Status = PeiServicesInstallPpi (mPeiCpuMpPpiList);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   return Status;\r
@@ -697,7 +700,7 @@ CpuMpPeimInit (
   IN CONST EFI_PEI_SERVICES     **PeiServices\r
   )\r
 {\r
-  EFI_STATUS           Status;\r
+  EFI_STATUS  Status;\r
 \r
   //\r
   // For the sake of special initialization needing to be done right after\r
index c6870656ca645117b29478c82b9de76fab23c9d1..0649c48d14f099b9f76800e3df6956c07788fe96 100644 (file)
@@ -29,7 +29,7 @@
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/MemoryAllocationLib.h>\r
 \r
-extern EFI_PEI_PPI_DESCRIPTOR   mPeiCpuMpPpiDesc;\r
+extern EFI_PEI_PPI_DESCRIPTOR  mPeiCpuMpPpiDesc;\r
 \r
 /**\r
   This service retrieves the number of logical processor in the platform\r
@@ -68,10 +68,10 @@ extern EFI_PEI_PPI_DESCRIPTOR   mPeiCpuMpPpiDesc;
 EFI_STATUS\r
 EFIAPI\r
 PeiGetNumberOfProcessors (\r
-  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
-  IN  EFI_PEI_MP_SERVICES_PPI   *This,\r
-  OUT UINTN                     *NumberOfProcessors,\r
-  OUT UINTN                     *NumberOfEnabledProcessors\r
+  IN  CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN  EFI_PEI_MP_SERVICES_PPI  *This,\r
+  OUT UINTN                    *NumberOfProcessors,\r
+  OUT UINTN                    *NumberOfEnabledProcessors\r
   );\r
 \r
 /**\r
@@ -175,12 +175,12 @@ PeiGetProcessorInfo (
 EFI_STATUS\r
 EFIAPI\r
 PeiStartupAllAPs (\r
-  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
-  IN  EFI_PEI_MP_SERVICES_PPI   *This,\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  BOOLEAN                   SingleThread,\r
-  IN  UINTN                     TimeoutInMicroSeconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL\r
+  IN  CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN  EFI_PEI_MP_SERVICES_PPI  *This,\r
+  IN  EFI_AP_PROCEDURE         Procedure,\r
+  IN  BOOLEAN                  SingleThread,\r
+  IN  UINTN                    TimeoutInMicroSeconds,\r
+  IN  VOID                     *ProcedureArgument      OPTIONAL\r
   );\r
 \r
 /**\r
@@ -232,12 +232,12 @@ PeiStartupAllAPs (
 EFI_STATUS\r
 EFIAPI\r
 PeiStartupThisAP (\r
-  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
-  IN  EFI_PEI_MP_SERVICES_PPI   *This,\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL\r
+  IN  CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN  EFI_PEI_MP_SERVICES_PPI  *This,\r
+  IN  EFI_AP_PROCEDURE         Procedure,\r
+  IN  UINTN                    ProcessorNumber,\r
+  IN  UINTN                    TimeoutInMicroseconds,\r
+  IN  VOID                     *ProcedureArgument      OPTIONAL\r
   );\r
 \r
 /**\r
@@ -325,11 +325,11 @@ PeiSwitchBSP (
 EFI_STATUS\r
 EFIAPI\r
 PeiEnableDisableAP (\r
-  IN  CONST EFI_PEI_SERVICES    **PeiServices,\r
-  IN  EFI_PEI_MP_SERVICES_PPI   *This,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  BOOLEAN                   EnableAP,\r
-  IN  UINT32                    *HealthFlag OPTIONAL\r
+  IN  CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN  EFI_PEI_MP_SERVICES_PPI  *This,\r
+  IN  UINTN                    ProcessorNumber,\r
+  IN  BOOLEAN                  EnableAP,\r
+  IN  UINT32                   *HealthFlag OPTIONAL\r
   );\r
 \r
 /**\r
@@ -375,7 +375,7 @@ PeiWhoAmI (
 **/\r
 VOID\r
 CollectBistDataFromPpi (\r
-  IN CONST EFI_PEI_SERVICES             **PeiServices\r
+  IN CONST EFI_PEI_SERVICES  **PeiServices\r
   );\r
 \r
 /**\r
@@ -393,9 +393,9 @@ CollectBistDataFromPpi (
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformation2 (\r
-  IN CONST EFI_PEI_SERVICES                   **PeiServices,\r
-  IN OUT UINT64                               *StructureSize,\r
-     OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2\r
+  IN CONST EFI_PEI_SERVICES                 **PeiServices,\r
+  IN OUT UINT64                             *StructureSize,\r
+  OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2  *PlatformInformationRecord2\r
   );\r
 \r
 /**\r
@@ -421,7 +421,7 @@ MigrateGdt (
 **/\r
 EFI_STATUS\r
 InitializeCpuMpWorker (\r
-  IN CONST EFI_PEI_SERVICES     **PeiServices\r
+  IN CONST EFI_PEI_SERVICES  **PeiServices\r
   );\r
 \r
 /**\r
index 3e261d6657b305619534b3c9fd3df77d54e583ab..1354222253400c80d4678a0a065697c8c923f9cf 100644 (file)
@@ -16,23 +16,23 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 \r
 #include "CpuMpPei.h"\r
 \r
-#define IA32_PG_P             BIT0\r
-#define IA32_PG_RW            BIT1\r
-#define IA32_PG_U             BIT2\r
-#define IA32_PG_A             BIT5\r
-#define IA32_PG_D             BIT6\r
-#define IA32_PG_PS            BIT7\r
-#define IA32_PG_NX            BIT63\r
-\r
-#define PAGE_ATTRIBUTE_BITS   (IA32_PG_RW | IA32_PG_P)\r
-#define PAGE_PROGATE_BITS     (IA32_PG_D | IA32_PG_A | IA32_PG_NX | IA32_PG_U |\\r
+#define IA32_PG_P   BIT0\r
+#define IA32_PG_RW  BIT1\r
+#define IA32_PG_U   BIT2\r
+#define IA32_PG_A   BIT5\r
+#define IA32_PG_D   BIT6\r
+#define IA32_PG_PS  BIT7\r
+#define IA32_PG_NX  BIT63\r
+\r
+#define PAGE_ATTRIBUTE_BITS  (IA32_PG_RW | IA32_PG_P)\r
+#define PAGE_PROGATE_BITS    (IA32_PG_D | IA32_PG_A | IA32_PG_NX | IA32_PG_U | \\r
                                PAGE_ATTRIBUTE_BITS)\r
 \r
-#define PAGING_PAE_INDEX_MASK       0x1FF\r
-#define PAGING_4K_ADDRESS_MASK_64   0x000FFFFFFFFFF000ull\r
-#define PAGING_2M_ADDRESS_MASK_64   0x000FFFFFFFE00000ull\r
-#define PAGING_1G_ADDRESS_MASK_64   0x000FFFFFC0000000ull\r
-#define PAGING_512G_ADDRESS_MASK_64 0x000FFF8000000000ull\r
+#define PAGING_PAE_INDEX_MASK        0x1FF\r
+#define PAGING_4K_ADDRESS_MASK_64    0x000FFFFFFFFFF000ull\r
+#define PAGING_2M_ADDRESS_MASK_64    0x000FFFFFFFE00000ull\r
+#define PAGING_1G_ADDRESS_MASK_64    0x000FFFFFC0000000ull\r
+#define PAGING_512G_ADDRESS_MASK_64  0x000FFF8000000000ull\r
 \r
 typedef enum {\r
   PageNone = 0,\r
@@ -45,19 +45,19 @@ typedef enum {
 } PAGE_ATTRIBUTE;\r
 \r
 typedef struct {\r
-  PAGE_ATTRIBUTE   Attribute;\r
-  UINT64           Length;\r
-  UINT64           AddressMask;\r
-  UINTN            AddressBitOffset;\r
-  UINTN            AddressBitLength;\r
+  PAGE_ATTRIBUTE    Attribute;\r
+  UINT64            Length;\r
+  UINT64            AddressMask;\r
+  UINTN             AddressBitOffset;\r
+  UINTN             AddressBitLength;\r
 } PAGE_ATTRIBUTE_TABLE;\r
 \r
-PAGE_ATTRIBUTE_TABLE mPageAttributeTable[] = {\r
-  {PageNone,          0,                           0,  0, 0},\r
-  {Page4K,     SIZE_4KB,   PAGING_4K_ADDRESS_MASK_64, 12, 9},\r
-  {Page2M,     SIZE_2MB,   PAGING_2M_ADDRESS_MASK_64, 21, 9},\r
-  {Page1G,     SIZE_1GB,   PAGING_1G_ADDRESS_MASK_64, 30, 9},\r
-  {Page512G, SIZE_512GB, PAGING_512G_ADDRESS_MASK_64, 39, 9},\r
+PAGE_ATTRIBUTE_TABLE  mPageAttributeTable[] = {\r
+  { PageNone, 0,          0,                           0,  0 },\r
+  { Page4K,   SIZE_4KB,   PAGING_4K_ADDRESS_MASK_64,   12, 9 },\r
+  { Page2M,   SIZE_2MB,   PAGING_2M_ADDRESS_MASK_64,   21, 9 },\r
+  { Page1G,   SIZE_1GB,   PAGING_1G_ADDRESS_MASK_64,   30, 9 },\r
+  { Page512G, SIZE_512GB, PAGING_512G_ADDRESS_MASK_64, 39, 9 },\r
 };\r
 \r
 EFI_PEI_NOTIFY_DESCRIPTOR  mPostMemNotifyList[] = {\r
@@ -80,8 +80,8 @@ IsIa32PaeSupported (
   VOID\r
   )\r
 {\r
-  UINT32                    RegEax;\r
-  CPUID_VERSION_INFO_EDX    RegEdx;\r
+  UINT32                  RegEax;\r
+  CPUID_VERSION_INFO_EDX  RegEdx;\r
 \r
   AsmCpuid (CPUID_SIGNATURE, &RegEax, NULL, NULL, NULL);\r
   if (RegEax >= CPUID_VERSION_INFO) {\r
@@ -104,14 +104,14 @@ IsIa32PaeSupported (
 **/\r
 VOID *\r
 AllocatePageTableMemory (\r
-  IN UINTN           Pages\r
+  IN UINTN  Pages\r
   )\r
 {\r
-  VOID      *Address;\r
+  VOID  *Address;\r
 \r
-  Address = AllocatePages(Pages);\r
+  Address = AllocatePages (Pages);\r
   if (Address != NULL) {\r
-    ZeroMem(Address, EFI_PAGES_TO_SIZE (Pages));\r
+    ZeroMem (Address, EFI_PAGES_TO_SIZE (Pages));\r
   }\r
 \r
   return Address;\r
@@ -129,13 +129,13 @@ GetPhysicalAddressWidth (
   VOID\r
   )\r
 {\r
-  UINT32          RegEax;\r
+  UINT32  RegEax;\r
 \r
-  if (sizeof(UINTN) == 4) {\r
+  if (sizeof (UINTN) == 4) {\r
     return 32;\r
   }\r
 \r
-  AsmCpuid(CPUID_EXTENDED_FUNCTION, &RegEax, NULL, NULL, NULL);\r
+  AsmCpuid (CPUID_EXTENDED_FUNCTION, &RegEax, NULL, NULL, NULL);\r
   if (RegEax >= CPUID_VIR_PHY_ADDRESS_SIZE) {\r
     AsmCpuid (CPUID_VIR_PHY_ADDRESS_SIZE, &RegEax, NULL, NULL, NULL);\r
     RegEax &= 0xFF;\r
@@ -161,7 +161,7 @@ GetPageTableTopLevelType (
   VOID\r
   )\r
 {\r
-  MSR_IA32_EFER_REGISTER      MsrEfer;\r
+  MSR_IA32_EFER_REGISTER  MsrEfer;\r
 \r
   MsrEfer.Uint64 = AsmReadMsr64 (MSR_CORE_IA32_EFER);\r
 \r
@@ -178,19 +178,19 @@ GetPageTableTopLevelType (
 **/\r
 VOID *\r
 GetPageTableEntry (\r
-  IN  PHYSICAL_ADDRESS                  Address,\r
-  OUT PAGE_ATTRIBUTE                    *PageAttribute\r
+  IN  PHYSICAL_ADDRESS  Address,\r
+  OUT PAGE_ATTRIBUTE    *PageAttribute\r
   )\r
 {\r
-  INTN                  Level;\r
-  UINTN                 Index;\r
-  UINT64                *PageTable;\r
-  UINT64                AddressEncMask;\r
+  INTN    Level;\r
+  UINTN   Index;\r
+  UINT64  *PageTable;\r
+  UINT64  AddressEncMask;\r
 \r
   AddressEncMask = PcdGet64 (PcdPteMemoryEncryptionAddressOrMask);\r
-  PageTable = (UINT64 *)(UINTN)(AsmReadCr3 () & PAGING_4K_ADDRESS_MASK_64);\r
+  PageTable      = (UINT64 *)(UINTN)(AsmReadCr3 () & PAGING_4K_ADDRESS_MASK_64);\r
   for (Level = (INTN)GetPageTableTopLevelType (); Level > 0; --Level) {\r
-    Index = (UINTN)RShiftU64 (Address, mPageAttributeTable[Level].AddressBitOffset);\r
+    Index  = (UINTN)RShiftU64 (Address, mPageAttributeTable[Level].AddressBitOffset);\r
     Index &= PAGING_PAE_INDEX_MASK;\r
 \r
     //\r
@@ -204,7 +204,7 @@ GetPageTableEntry (
     //\r
     // Page memory?\r
     //\r
-    if ((PageTable[Index] & IA32_PG_PS) != 0 || Level == PageMin) {\r
+    if (((PageTable[Index] & IA32_PG_PS) != 0) || (Level == PageMin)) {\r
       *PageAttribute = (PAGE_ATTRIBUTE)Level;\r
       return &PageTable[Index];\r
     }\r
@@ -235,19 +235,19 @@ GetPageTableEntry (
 **/\r
 RETURN_STATUS\r
 SplitPage (\r
-  IN  UINT64                            *PageEntry,\r
-  IN  PAGE_ATTRIBUTE                    PageAttribute,\r
-  IN  PAGE_ATTRIBUTE                    SplitAttribute,\r
-  IN  BOOLEAN                           Recursively\r
+  IN  UINT64          *PageEntry,\r
+  IN  PAGE_ATTRIBUTE  PageAttribute,\r
+  IN  PAGE_ATTRIBUTE  SplitAttribute,\r
+  IN  BOOLEAN         Recursively\r
   )\r
 {\r
-  UINT64            BaseAddress;\r
-  UINT64            *NewPageEntry;\r
-  UINTN             Index;\r
-  UINT64            AddressEncMask;\r
-  PAGE_ATTRIBUTE    SplitTo;\r
+  UINT64          BaseAddress;\r
+  UINT64          *NewPageEntry;\r
+  UINTN           Index;\r
+  UINT64          AddressEncMask;\r
+  PAGE_ATTRIBUTE  SplitTo;\r
 \r
-  if (SplitAttribute == PageNone || SplitAttribute >= PageAttribute) {\r
+  if ((SplitAttribute == PageNone) || (SplitAttribute >= PageAttribute)) {\r
     ASSERT (SplitAttribute != PageNone);\r
     ASSERT (SplitAttribute < PageAttribute);\r
     return RETURN_INVALID_PARAMETER;\r
@@ -262,13 +262,13 @@ SplitPage (
   //\r
   // One level down each step to achieve more compact page table.\r
   //\r
-  SplitTo = PageAttribute - 1;\r
+  SplitTo        = PageAttribute - 1;\r
   AddressEncMask = PcdGet64 (PcdPteMemoryEncryptionAddressOrMask) &\r
                    mPageAttributeTable[SplitTo].AddressMask;\r
-  BaseAddress    = *PageEntry &\r
-                   ~PcdGet64 (PcdPteMemoryEncryptionAddressOrMask) &\r
-                   mPageAttributeTable[PageAttribute].AddressMask;\r
-  for (Index = 0; Index < SIZE_4KB / sizeof(UINT64); Index++) {\r
+  BaseAddress = *PageEntry &\r
+                ~PcdGet64 (PcdPteMemoryEncryptionAddressOrMask) &\r
+                mPageAttributeTable[PageAttribute].AddressMask;\r
+  for (Index = 0; Index < SIZE_4KB / sizeof (UINT64); Index++) {\r
     NewPageEntry[Index] = BaseAddress | AddressEncMask |\r
                           ((*PageEntry) & PAGE_PROGATE_BITS);\r
 \r
@@ -276,7 +276,7 @@ SplitPage (
       NewPageEntry[Index] |= IA32_PG_PS;\r
     }\r
 \r
-    if (Recursively && SplitTo > SplitAttribute) {\r
+    if (Recursively && (SplitTo > SplitAttribute)) {\r
       SplitPage (&NewPageEntry[Index], SplitTo, SplitAttribute, Recursively);\r
     }\r
 \r
@@ -313,20 +313,20 @@ SplitPage (
 RETURN_STATUS\r
 EFIAPI\r
 ConvertMemoryPageAttributes (\r
-  IN  PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                            Length,\r
-  IN  UINT64                            Attributes\r
+  IN  PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64            Length,\r
+  IN  UINT64            Attributes\r
   )\r
 {\r
-  UINT64                            *PageEntry;\r
-  PAGE_ATTRIBUTE                    PageAttribute;\r
-  RETURN_STATUS                     Status;\r
-  EFI_PHYSICAL_ADDRESS              MaximumAddress;\r
-\r
-  if (Length == 0 ||\r
-      (BaseAddress & (SIZE_4KB - 1)) != 0 ||\r
-      (Length & (SIZE_4KB - 1)) != 0) {\r
-\r
+  UINT64                *PageEntry;\r
+  PAGE_ATTRIBUTE        PageAttribute;\r
+  RETURN_STATUS         Status;\r
+  EFI_PHYSICAL_ADDRESS  MaximumAddress;\r
+\r
+  if ((Length == 0) ||\r
+      ((BaseAddress & (SIZE_4KB - 1)) != 0) ||\r
+      ((Length & (SIZE_4KB - 1)) != 0))\r
+  {\r
     ASSERT (Length > 0);\r
     ASSERT ((BaseAddress & (SIZE_4KB - 1)) == 0);\r
     ASSERT ((Length & (SIZE_4KB - 1)) == 0);\r
@@ -335,9 +335,10 @@ ConvertMemoryPageAttributes (
   }\r
 \r
   MaximumAddress = (EFI_PHYSICAL_ADDRESS)MAX_UINT32;\r
-  if (BaseAddress > MaximumAddress ||\r
-      Length > MaximumAddress ||\r
-      (BaseAddress > MaximumAddress - (Length - 1))) {\r
+  if ((BaseAddress > MaximumAddress) ||\r
+      (Length > MaximumAddress) ||\r
+      (BaseAddress > MaximumAddress - (Length - 1)))\r
+  {\r
     return RETURN_UNSUPPORTED;\r
   }\r
 \r
@@ -355,6 +356,7 @@ ConvertMemoryPageAttributes (
       if (RETURN_ERROR (Status)) {\r
         return Status;\r
       }\r
+\r
       //\r
       // Do it again until the page is 4K.\r
       //\r
@@ -374,7 +376,7 @@ ConvertMemoryPageAttributes (
     // Convert success, move to next\r
     //\r
     BaseAddress += SIZE_4KB;\r
-    Length -= SIZE_4KB;\r
+    Length      -= SIZE_4KB;\r
   }\r
 \r
   return RETURN_SUCCESS;\r
@@ -394,8 +396,8 @@ GetMaxMemoryPage (
   IN  PAGE_ATTRIBUTE  TopLevelType\r
   )\r
 {\r
-  UINT32          RegEax;\r
-  UINT32          RegEdx;\r
+  UINT32  RegEax;\r
+  UINT32  RegEdx;\r
 \r
   if (TopLevelType == Page512G) {\r
     AsmCpuid (CPUID_EXTENDED_FUNCTION, &RegEax, NULL, NULL, NULL);\r
@@ -421,31 +423,31 @@ CreatePageTable (
   VOID\r
   )\r
 {\r
-  RETURN_STATUS           Status;\r
-  UINTN                   PhysicalAddressBits;\r
-  UINTN                   NumberOfEntries;\r
-  PAGE_ATTRIBUTE          TopLevelPageAttr;\r
-  UINTN                   PageTable;\r
-  PAGE_ATTRIBUTE          MaxMemoryPage;\r
-  UINTN                   Index;\r
-  UINT64                  AddressEncMask;\r
-  UINT64                  *PageEntry;\r
-  EFI_PHYSICAL_ADDRESS    PhysicalAddress;\r
-\r
-  TopLevelPageAttr = (PAGE_ATTRIBUTE)GetPageTableTopLevelType ();\r
+  RETURN_STATUS         Status;\r
+  UINTN                 PhysicalAddressBits;\r
+  UINTN                 NumberOfEntries;\r
+  PAGE_ATTRIBUTE        TopLevelPageAttr;\r
+  UINTN                 PageTable;\r
+  PAGE_ATTRIBUTE        MaxMemoryPage;\r
+  UINTN                 Index;\r
+  UINT64                AddressEncMask;\r
+  UINT64                *PageEntry;\r
+  EFI_PHYSICAL_ADDRESS  PhysicalAddress;\r
+\r
+  TopLevelPageAttr    = (PAGE_ATTRIBUTE)GetPageTableTopLevelType ();\r
   PhysicalAddressBits = GetPhysicalAddressWidth ();\r
-  NumberOfEntries = (UINTN)1 << (PhysicalAddressBits -\r
-                                 mPageAttributeTable[TopLevelPageAttr].AddressBitOffset);\r
+  NumberOfEntries     = (UINTN)1 << (PhysicalAddressBits -\r
+                                     mPageAttributeTable[TopLevelPageAttr].AddressBitOffset);\r
 \r
-  PageTable = (UINTN) AllocatePageTableMemory (1);\r
+  PageTable = (UINTN)AllocatePageTableMemory (1);\r
   if (PageTable == 0) {\r
     return 0;\r
   }\r
 \r
-  AddressEncMask = PcdGet64 (PcdPteMemoryEncryptionAddressOrMask);\r
+  AddressEncMask  = PcdGet64 (PcdPteMemoryEncryptionAddressOrMask);\r
   AddressEncMask &= mPageAttributeTable[TopLevelPageAttr].AddressMask;\r
-  MaxMemoryPage = GetMaxMemoryPage (TopLevelPageAttr);\r
-  PageEntry = (UINT64 *)PageTable;\r
+  MaxMemoryPage   = GetMaxMemoryPage (TopLevelPageAttr);\r
+  PageEntry       = (UINT64 *)PageTable;\r
 \r
   PhysicalAddress = 0;\r
   for (Index = 0; Index < NumberOfEntries; ++Index) {\r
@@ -455,7 +457,7 @@ CreatePageTable (
     // Split the top page table down to the maximum page size supported\r
     //\r
     if (MaxMemoryPage < TopLevelPageAttr) {\r
-      Status = SplitPage(PageEntry, TopLevelPageAttr, MaxMemoryPage, TRUE);\r
+      Status = SplitPage (PageEntry, TopLevelPageAttr, MaxMemoryPage, TRUE);\r
       ASSERT_EFI_ERROR (Status);\r
     }\r
 \r
@@ -466,11 +468,10 @@ CreatePageTable (
       *PageEntry &= ~(UINT64)(IA32_PG_RW | IA32_PG_U);\r
     }\r
 \r
-    PageEntry += 1;\r
+    PageEntry       += 1;\r
     PhysicalAddress += mPageAttributeTable[TopLevelPageAttr].Length;\r
   }\r
 \r
-\r
   return PageTable;\r
 }\r
 \r
@@ -483,12 +484,12 @@ EnablePaging (
   VOID\r
   )\r
 {\r
-  UINTN                       PageTable;\r
+  UINTN  PageTable;\r
 \r
   PageTable = CreatePageTable ();\r
   ASSERT (PageTable != 0);\r
   if (PageTable != 0) {\r
-    AsmWriteCr3(PageTable);\r
+    AsmWriteCr3 (PageTable);\r
     AsmWriteCr4 (AsmReadCr4 () | BIT5);   // CR4.PAE\r
     AsmWriteCr0 (AsmReadCr0 () | BIT31);  // CR0.PG\r
   }\r
@@ -509,15 +510,15 @@ EnablePaging (
 VOID\r
 EFIAPI\r
 GetStackBase (\r
-  IN OUT VOID *Buffer\r
+  IN OUT VOID  *Buffer\r
   )\r
 {\r
-  EFI_PHYSICAL_ADDRESS    StackBase;\r
+  EFI_PHYSICAL_ADDRESS  StackBase;\r
 \r
-  StackBase = (EFI_PHYSICAL_ADDRESS)(UINTN)&StackBase;\r
+  StackBase  = (EFI_PHYSICAL_ADDRESS)(UINTN)&StackBase;\r
   StackBase += BASE_4KB;\r
   StackBase &= ~((EFI_PHYSICAL_ADDRESS)BASE_4KB - 1);\r
-  StackBase -= PcdGet32(PcdCpuApStackSize);\r
+  StackBase -= PcdGet32 (PcdCpuApStackSize);\r
 \r
   *(EFI_PHYSICAL_ADDRESS *)Buffer = StackBase;\r
 }\r
@@ -532,21 +533,21 @@ SetupStackGuardPage (
   VOID\r
   )\r
 {\r
-  EFI_PEI_HOB_POINTERS        Hob;\r
-  EFI_PHYSICAL_ADDRESS        StackBase;\r
-  UINTN                       NumberOfProcessors;\r
-  UINTN                       Bsp;\r
-  UINTN                       Index;\r
+  EFI_PEI_HOB_POINTERS  Hob;\r
+  EFI_PHYSICAL_ADDRESS  StackBase;\r
+  UINTN                 NumberOfProcessors;\r
+  UINTN                 Bsp;\r
+  UINTN                 Index;\r
 \r
   //\r
   // One extra page at the bottom of the stack is needed for Guard page.\r
   //\r
-  if (PcdGet32(PcdCpuApStackSize) <= EFI_PAGE_SIZE) {\r
+  if (PcdGet32 (PcdCpuApStackSize) <= EFI_PAGE_SIZE) {\r
     DEBUG ((DEBUG_ERROR, "PcdCpuApStackSize is not big enough for Stack Guard!\n"));\r
     ASSERT (FALSE);\r
   }\r
 \r
-  MpInitLibGetNumberOfProcessors(&NumberOfProcessors, NULL);\r
+  MpInitLibGetNumberOfProcessors (&NumberOfProcessors, NULL);\r
   MpInitLibWhoAmI (&Bsp);\r
   for (Index = 0; Index < NumberOfProcessors; ++Index) {\r
     StackBase = 0;\r
@@ -554,26 +555,35 @@ SetupStackGuardPage (
     if (Index == Bsp) {\r
       Hob.Raw = GetHobList ();\r
       while ((Hob.Raw = GetNextHob (EFI_HOB_TYPE_MEMORY_ALLOCATION, Hob.Raw)) != NULL) {\r
-        if (CompareGuid (&gEfiHobMemoryAllocStackGuid,\r
-                         &(Hob.MemoryAllocationStack->AllocDescriptor.Name))) {\r
+        if (CompareGuid (\r
+              &gEfiHobMemoryAllocStackGuid,\r
+              &(Hob.MemoryAllocationStack->AllocDescriptor.Name)\r
+              ))\r
+        {\r
           StackBase = Hob.MemoryAllocationStack->AllocDescriptor.MemoryBaseAddress;\r
           break;\r
         }\r
+\r
         Hob.Raw = GET_NEXT_HOB (Hob);\r
       }\r
     } else {\r
       //\r
       // Ask AP to return is stack base address.\r
       //\r
-      MpInitLibStartupThisAP(GetStackBase, Index, NULL, 0, (VOID *)&StackBase, NULL);\r
+      MpInitLibStartupThisAP (GetStackBase, Index, NULL, 0, (VOID *)&StackBase, NULL);\r
     }\r
+\r
     ASSERT (StackBase != 0);\r
     //\r
     // Set Guard page at stack base address.\r
     //\r
-    ConvertMemoryPageAttributes(StackBase, EFI_PAGE_SIZE, 0);\r
-    DEBUG ((DEBUG_INFO, "Stack Guard set at %lx [cpu%lu]!\n",\r
-            (UINT64)StackBase, (UINT64)Index));\r
+    ConvertMemoryPageAttributes (StackBase, EFI_PAGE_SIZE, 0);\r
+    DEBUG ((\r
+      DEBUG_INFO,\r
+      "Stack Guard set at %lx [cpu%lu]!\n",\r
+      (UINT64)StackBase,\r
+      (UINT64)Index\r
+      ));\r
   }\r
 \r
   //\r
@@ -614,13 +624,13 @@ MemoryDiscoveredPpiNotifyCallback (
   // the task switch (for the sake of stack switch).\r
   //\r
   InitStackGuard = FALSE;\r
-  Hob.Raw = NULL;\r
+  Hob.Raw        = NULL;\r
   if (IsIa32PaeSupported ()) {\r
-    Hob.Raw  = GetFirstGuidHob (&gEdkiiMigratedFvInfoGuid);\r
+    Hob.Raw        = GetFirstGuidHob (&gEdkiiMigratedFvInfoGuid);\r
     InitStackGuard = PcdGetBool (PcdCpuStackGuard);\r
   }\r
 \r
-  if (InitStackGuard || Hob.Raw != NULL) {\r
+  if (InitStackGuard || (Hob.Raw != NULL)) {\r
     EnablePaging ();\r
   }\r
 \r
@@ -643,8 +653,8 @@ MemoryDiscoveredPpiNotifyCallback (
     Hob.Raw = GET_NEXT_HOB (Hob);\r
     Hob.Raw = GetNextGuidHob (&gEdkiiMigratedFvInfoGuid, Hob.Raw);\r
   }\r
+\r
   CpuFlushTlb ();\r
 \r
   return Status;\r
 }\r
-\r
index 6100799a79160bed7040a314e93dfa3a1d3d6b6b..59a5d932eee203b255cb627c75845033274e004c 100644 (file)
@@ -34,10 +34,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 // Data structure used to allocate ACPI_CPU_DATA and its supporting structures\r
 //\r
 typedef struct {\r
-  ACPI_CPU_DATA             AcpiCpuData;\r
-  MTRR_SETTINGS             MtrrTable;\r
-  IA32_DESCRIPTOR           GdtrProfile;\r
-  IA32_DESCRIPTOR           IdtrProfile;\r
+  ACPI_CPU_DATA      AcpiCpuData;\r
+  MTRR_SETTINGS      MtrrTable;\r
+  IA32_DESCRIPTOR    GdtrProfile;\r
+  IA32_DESCRIPTOR    IdtrProfile;\r
 } ACPI_CPU_DATA_EX;\r
 \r
 /**\r
@@ -57,12 +57,12 @@ AllocateAcpiNvsMemory (
   EFI_STATUS            Status;\r
   VOID                  *Buffer;\r
 \r
-  Status  = gBS->AllocatePages (\r
-                   AllocateAnyPages,\r
-                   EfiACPIMemoryNVS,\r
-                   EFI_SIZE_TO_PAGES (Size),\r
-                   &Address\r
-                   );\r
+  Status = gBS->AllocatePages (\r
+                  AllocateAnyPages,\r
+                  EfiACPIMemoryNVS,\r
+                  EFI_SIZE_TO_PAGES (Size),\r
+                  &Address\r
+                  );\r
   if (EFI_ERROR (Status)) {\r
     return NULL;\r
   }\r
@@ -86,7 +86,7 @@ AllocateZeroPages (
   IN UINTN  Size\r
   )\r
 {\r
-  VOID                  *Buffer;\r
+  VOID  *Buffer;\r
 \r
   Buffer = AllocatePages (EFI_SIZE_TO_PAGES (Size));\r
   if (Buffer != NULL) {\r
@@ -95,6 +95,7 @@ AllocateZeroPages (
 \r
   return Buffer;\r
 }\r
+\r
 /**\r
   Callback function executed when the EndOfDxe event group is signaled.\r
 \r
@@ -110,20 +111,20 @@ CpuS3DataOnEndOfDxe (
   OUT VOID       *Context\r
   )\r
 {\r
-  EFI_STATUS         Status;\r
-  ACPI_CPU_DATA_EX   *AcpiCpuDataEx;\r
+  EFI_STATUS        Status;\r
+  ACPI_CPU_DATA_EX  *AcpiCpuDataEx;\r
 \r
-  AcpiCpuDataEx = (ACPI_CPU_DATA_EX *) Context;\r
+  AcpiCpuDataEx = (ACPI_CPU_DATA_EX *)Context;\r
   //\r
   // Allocate a 4KB reserved page below 1MB\r
   //\r
   AcpiCpuDataEx->AcpiCpuData.StartupVector = BASE_1MB - 1;\r
-  Status = gBS->AllocatePages (\r
-                  AllocateMaxAddress,\r
-                  EfiReservedMemoryType,\r
-                  1,\r
-                  &AcpiCpuDataEx->AcpiCpuData.StartupVector\r
-                  );\r
+  Status                                   = gBS->AllocatePages (\r
+                                                    AllocateMaxAddress,\r
+                                                    EfiReservedMemoryType,\r
+                                                    1,\r
+                                                    &AcpiCpuDataEx->AcpiCpuData.StartupVector\r
+                                                    );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   DEBUG ((DEBUG_VERBOSE, "%a\n", __FUNCTION__));\r
@@ -158,19 +159,19 @@ CpuS3DataInitialize (
   IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  ACPI_CPU_DATA_EX           *AcpiCpuDataEx;\r
-  ACPI_CPU_DATA              *AcpiCpuData;\r
-  EFI_MP_SERVICES_PROTOCOL   *MpServices;\r
-  UINTN                      NumberOfCpus;\r
-  UINTN                      NumberOfEnabledProcessors;\r
-  VOID                       *Stack;\r
-  UINTN                      GdtSize;\r
-  UINTN                      IdtSize;\r
-  VOID                       *Gdt;\r
-  VOID                       *Idt;\r
-  EFI_EVENT                  Event;\r
-  ACPI_CPU_DATA              *OldAcpiCpuData;\r
+  EFI_STATUS                Status;\r
+  ACPI_CPU_DATA_EX          *AcpiCpuDataEx;\r
+  ACPI_CPU_DATA             *AcpiCpuData;\r
+  EFI_MP_SERVICES_PROTOCOL  *MpServices;\r
+  UINTN                     NumberOfCpus;\r
+  UINTN                     NumberOfEnabledProcessors;\r
+  VOID                      *Stack;\r
+  UINTN                     GdtSize;\r
+  UINTN                     IdtSize;\r
+  VOID                      *Gdt;\r
+  VOID                      *Idt;\r
+  EFI_EVENT                 Event;\r
+  ACPI_CPU_DATA             *OldAcpiCpuData;\r
 \r
   if (!PcdGetBool (PcdAcpiS3Enable)) {\r
     return EFI_UNSUPPORTED;\r
@@ -179,7 +180,7 @@ CpuS3DataInitialize (
   //\r
   // Set PcdCpuS3DataAddress to the base address of the ACPI_CPU_DATA structure\r
   //\r
-  OldAcpiCpuData = (ACPI_CPU_DATA *) (UINTN) PcdGet64 (PcdCpuS3DataAddress);\r
+  OldAcpiCpuData = (ACPI_CPU_DATA *)(UINTN)PcdGet64 (PcdCpuS3DataAddress);\r
 \r
   AcpiCpuDataEx = AllocateZeroPages (sizeof (ACPI_CPU_DATA_EX));\r
   ASSERT (AcpiCpuDataEx != NULL);\r
@@ -212,9 +213,9 @@ CpuS3DataInitialize (
   AcpiCpuData->StackSize                 = PcdGet32 (PcdCpuApStackSize);\r
   AcpiCpuData->ApMachineCheckHandlerBase = 0;\r
   AcpiCpuData->ApMachineCheckHandlerSize = 0;\r
-  AcpiCpuData->GdtrProfile  = (EFI_PHYSICAL_ADDRESS)(UINTN)&AcpiCpuDataEx->GdtrProfile;\r
-  AcpiCpuData->IdtrProfile  = (EFI_PHYSICAL_ADDRESS)(UINTN)&AcpiCpuDataEx->IdtrProfile;\r
-  AcpiCpuData->MtrrTable    = (EFI_PHYSICAL_ADDRESS)(UINTN)&AcpiCpuDataEx->MtrrTable;\r
+  AcpiCpuData->GdtrProfile               = (EFI_PHYSICAL_ADDRESS)(UINTN)&AcpiCpuDataEx->GdtrProfile;\r
+  AcpiCpuData->IdtrProfile               = (EFI_PHYSICAL_ADDRESS)(UINTN)&AcpiCpuDataEx->IdtrProfile;\r
+  AcpiCpuData->MtrrTable                 = (EFI_PHYSICAL_ADDRESS)(UINTN)&AcpiCpuDataEx->MtrrTable;\r
 \r
   //\r
   // Allocate stack space for all CPUs.\r
@@ -238,7 +239,7 @@ CpuS3DataInitialize (
   //\r
   GdtSize = AcpiCpuDataEx->GdtrProfile.Limit + 1;\r
   IdtSize = AcpiCpuDataEx->IdtrProfile.Limit + 1;\r
-  Gdt = AllocateZeroPages (GdtSize + IdtSize);\r
+  Gdt     = AllocateZeroPages (GdtSize + IdtSize);\r
   ASSERT (Gdt != NULL);\r
   Idt = (VOID *)((UINTN)Gdt + GdtSize);\r
   CopyMem (Gdt, (VOID *)AcpiCpuDataEx->GdtrProfile.Base, GdtSize);\r
index 659821072d0d74cdddfc180fd684c32aadb0f2bc..161a43c27835b6fd8e861ef1d4d269916c42b423 100644 (file)
@@ -52,19 +52,19 @@ typedef struct {
   //\r
   // Record the package count in this CPU.\r
   //\r
-  UINT32                      PackageCount;\r
+  UINT32    PackageCount;\r
   //\r
   // Record the max core count in this CPU.\r
   // Different packages may have different core count, this value\r
   // save the max core count in all the packages.\r
   //\r
-  UINT32                      MaxCoreCount;\r
+  UINT32    MaxCoreCount;\r
   //\r
   // Record the max thread count in this CPU.\r
   // Different cores may have different thread count, this value\r
   // save the max thread count in all the cores.\r
   //\r
-  UINT32                      MaxThreadCount;\r
+  UINT32    MaxThreadCount;\r
   //\r
   // This field points to an array.\r
   // This array saves thread count (type UINT32) of each package.\r
@@ -74,7 +74,7 @@ typedef struct {
   // therefore it doesn't need the dependency semaphores, it should set\r
   // this field to 0.\r
   //\r
-  EFI_PHYSICAL_ADDRESS        ThreadCountPerPackage;\r
+  EFI_PHYSICAL_ADDRESS    ThreadCountPerPackage;\r
   //\r
   // This field points to an array.\r
   // This array saves thread count (type UINT8) of each core.\r
@@ -84,21 +84,21 @@ typedef struct {
   // therefore it doesn't need the dependency semaphores, it should set\r
   // this field to 0.\r
   //\r
-  EFI_PHYSICAL_ADDRESS        ThreadCountPerCore;\r
+  EFI_PHYSICAL_ADDRESS    ThreadCountPerCore;\r
 } CPU_STATUS_INFORMATION;\r
 \r
 //\r
 // Element of register table entry\r
 //\r
 typedef struct {\r
-  REGISTER_TYPE  RegisterType;          // offset 0 - 3\r
-  UINT32         Index;                 // offset 4 - 7\r
-  UINT8          ValidBitStart;         // offset 8\r
-  UINT8          ValidBitLength;        // offset 9\r
-  BOOLEAN        TestThenWrite;         // offset 10\r
-  UINT8          Reserved1;             // offset 11\r
-  UINT32         HighIndex;             // offset 12-15, only valid for MemoryMapped\r
-  UINT64         Value;                 // offset 16-23\r
+  REGISTER_TYPE    RegisterType;        // offset 0 - 3\r
+  UINT32           Index;               // offset 4 - 7\r
+  UINT8            ValidBitStart;       // offset 8\r
+  UINT8            ValidBitLength;      // offset 9\r
+  BOOLEAN          TestThenWrite;       // offset 10\r
+  UINT8            Reserved1;           // offset 11\r
+  UINT32           HighIndex;           // offset 12-15, only valid for MemoryMapped\r
+  UINT64           Value;               // offset 16-23\r
 } CPU_REGISTER_TABLE_ENTRY;\r
 \r
 //\r
@@ -109,20 +109,20 @@ typedef struct {
   //\r
   // The number of valid entries in the RegisterTableEntry buffer\r
   //\r
-  UINT32                    TableLength;\r
-  UINT32                    NumberBeforeReset;\r
+  UINT32                  TableLength;\r
+  UINT32                  NumberBeforeReset;\r
   //\r
   // The size, in bytes, of the RegisterTableEntry buffer\r
   //\r
-  UINT32                    AllocatedSize;\r
+  UINT32                  AllocatedSize;\r
   //\r
   // The initial APIC ID of the CPU this register table applies to\r
   //\r
-  UINT32                    InitialApicId;\r
+  UINT32                  InitialApicId;\r
   //\r
   // Physical address of CPU_REGISTER_TABLE_ENTRY structures.\r
   //\r
-  EFI_PHYSICAL_ADDRESS      RegisterTableEntry;\r
+  EFI_PHYSICAL_ADDRESS    RegisterTableEntry;\r
 } CPU_REGISTER_TABLE;\r
 \r
 //\r
@@ -151,11 +151,11 @@ typedef struct {
   // If a register table is not required for any one of the CPUs, then\r
   // RegisterTable may be set to 0.\r
   //\r
-  EFI_PHYSICAL_ADDRESS    RegisterTable;\r
+  EFI_PHYSICAL_ADDRESS      RegisterTable;\r
   //\r
   // CPU information which is required when set the register table.\r
   //\r
-  CPU_STATUS_INFORMATION  CpuStatus;\r
+  CPU_STATUS_INFORMATION    CpuStatus;\r
   //\r
   // Location info for each AP.\r
   // It points to an array which saves all APs location info.\r
@@ -180,7 +180,7 @@ typedef struct {
   // it is recommended that the buffer be zero-filled.  This buffer is used to\r
   // wake APs during an ACPI S3 resume.\r
   //\r
-  EFI_PHYSICAL_ADDRESS  StartupVector;\r
+  EFI_PHYSICAL_ADDRESS     StartupVector;\r
   //\r
   // Physical address of structure of type IA32_DESCRIPTOR. The\r
   // IA32_DESCRIPTOR structure provides the base address and length of a GDT\r
@@ -188,7 +188,7 @@ typedef struct {
   // used during an ACPI S3 resume.  This is typically the contents of the GDT\r
   // used by the boot processor when the platform is booted.\r
   //\r
-  EFI_PHYSICAL_ADDRESS  GdtrProfile;\r
+  EFI_PHYSICAL_ADDRESS     GdtrProfile;\r
   //\r
   // Physical address of structure of type IA32_DESCRIPTOR.  The\r
   // IA32_DESCRIPTOR structure provides the base address and length of an IDT.\r
@@ -196,31 +196,31 @@ typedef struct {
   // used during an ACPI S3 resume.  This is typically the contents of the IDT\r
   // used by the boot processor when the platform is booted.\r
   //\r
-  EFI_PHYSICAL_ADDRESS  IdtrProfile;\r
+  EFI_PHYSICAL_ADDRESS     IdtrProfile;\r
   //\r
   // Physical address of a buffer that is used as stacks during ACPI S3 resume.\r
   // The total size of this buffer, in bytes, is NumberOfCpus * StackSize.  This\r
   // structure must be allocated from memory of type EfiACPIMemoryNVS.\r
   //\r
-  EFI_PHYSICAL_ADDRESS  StackAddress;\r
+  EFI_PHYSICAL_ADDRESS     StackAddress;\r
   //\r
   // The size, in bytes, of the stack provided to each CPU during ACPI S3 resume.\r
   //\r
-  UINT32                StackSize;\r
+  UINT32                   StackSize;\r
   //\r
   // The number of CPUs.  If a platform does not support hot plug CPUs, then\r
   // this is the number of CPUs detected when the platform is booted, regardless\r
   // of being enabled or disabled.  If a platform does support hot plug CPUs,\r
   // then this is the maximum number of CPUs that the platform supports.\r
   //\r
-  UINT32                NumberOfCpus;\r
+  UINT32                   NumberOfCpus;\r
   //\r
   // Physical address of structure of type MTRR_SETTINGS that contains a copy\r
   // of the MTRR settings that are compatible with the MTRR settings used by\r
   // the boot processor when the platform was booted.  These MTRR settings are\r
   // used during an ACPI S3 resume.\r
   //\r
-  EFI_PHYSICAL_ADDRESS  MtrrTable;\r
+  EFI_PHYSICAL_ADDRESS     MtrrTable;\r
   //\r
   // Physical address of a buffer that contains the machine check handler that\r
   // is used during an ACPI S3 Resume.  In order for this machine check\r
@@ -228,18 +228,18 @@ typedef struct {
   // vector in the IDT provided by IdtrProfile must be initialized to transfer\r
   // control to this physical address.\r
   //\r
-  EFI_PHYSICAL_ADDRESS  ApMachineCheckHandlerBase;\r
+  EFI_PHYSICAL_ADDRESS     ApMachineCheckHandlerBase;\r
   //\r
   // The size, in bytes, of the machine check handler that is used during an\r
   // ACPI S3 Resume.  If this field is 0, then a machine check handler is not\r
   // provided.\r
   //\r
-  UINT32                ApMachineCheckHandlerSize;\r
+  UINT32                   ApMachineCheckHandlerSize;\r
   //\r
   // Data structure that is used for CPU feature initialization during ACPI S3\r
   // resume.\r
   //\r
-  CPU_FEATURE_INIT_DATA CpuFeatureInitData;\r
+  CPU_FEATURE_INIT_DATA    CpuFeatureInitData;\r
 } ACPI_CPU_DATA;\r
 \r
 #endif\r
index 6321a149fa52484da114a72de865c645b6cb8d56..dd0d7b9f3e9d1672f1ea5fa1c54a27148a82ff02 100644 (file)
@@ -9,7 +9,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #ifndef _CPU_HOT_PLUG_DATA_H_\r
 #define _CPU_HOT_PLUG_DATA_H_\r
 \r
-#define  CPU_HOT_PLUG_DATA_REVISION_1      0x00000001\r
+#define  CPU_HOT_PLUG_DATA_REVISION_1  0x00000001\r
 \r
 typedef struct {\r
   UINT32    Revision;          // Used for version identification for this structure\r
index 81c8ff63d48bceb830eec5aba5e7c56d62d5e0e8..b23580f1dafdbb507e855d63820a7902ab82e757 100644 (file)
@@ -15,6 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
     { 0xc77c3a41, 0x61ab, 0x4143, { 0x98, 0x3e, 0x33, 0x39, 0x28, 0x6, 0x28, 0xe5 } \\r
   }\r
 \r
-extern EFI_GUID gEdkiiCpuFeaturesInitDoneGuid;\r
+extern EFI_GUID  gEdkiiCpuFeaturesInitDoneGuid;\r
 \r
 #endif\r
index a005a51fd6565a868d41f5b849586f55f18982b7..28eb5c7076db8cb6788890a16feeabf7ee740d72 100644 (file)
@@ -15,6 +15,6 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
     { 0xa82485ce, 0xad6b, 0x4101, { 0x99, 0xd3, 0xe1, 0x35, 0x8c, 0x9e, 0x7e, 0x37 } \\r
   }\r
 \r
-extern EFI_GUID gEdkiiCpuFeaturesSetDoneGuid;\r
+extern EFI_GUID  gEdkiiCpuFeaturesSetDoneGuid;\r
 \r
 #endif\r
index 2d307fbffbf1d8711166103800df36ae25be9c06..2772c41a16a40673bc73e9376ad48224b314d61f 100644 (file)
@@ -11,7 +11,7 @@
 #ifndef _MICROCODE_PATCH_HOB_H_\r
 #define _MICROCODE_PATCH_HOB_H_\r
 \r
-extern EFI_GUID gEdkiiMicrocodePatchHobGuid;\r
+extern EFI_GUID  gEdkiiMicrocodePatchHobGuid;\r
 \r
 //\r
 // The EDKII microcode patch HOB will be produced by MpInitLib and it can be\r
index 01001c4730d8f3f5a67bc7f8a79ea471edfa6ef6..77dd3eda054f58211bd549e69a326a8967c6942e 100644 (file)
@@ -15,7 +15,7 @@
     0x5802bce4, 0xeeee, 0x4e33, { 0xa1, 0x30, 0xeb, 0xad, 0x27, 0xf0, 0xe4, 0x39 } \\r
   }\r
 \r
-extern EFI_GUID gMsegSmramGuid;\r
+extern EFI_GUID  gMsegSmramGuid;\r
 \r
 //\r
 // The data portion of this HOB is type EFI_SMRAM_DESCRIPTOR\r
index 3422997f54fcb87c0be2e03c0d2bf1d05e4408e4..022d9f2ca8c2c3785dc6e06e7c85599f7e05dda8 100644 (file)
@@ -13,49 +13,49 @@ typedef struct {
   //\r
   // Package number.\r
   //\r
-  UINT32        Package;\r
+  UINT32    Package;\r
   //\r
   // Core type of logical processor.\r
   // Value = CPUID.1Ah:EAX[31:24]\r
   //\r
-  UINT8         CoreType;\r
+  UINT8     CoreType;\r
   //\r
   // Level of the cache that this package's this type of logical processor corresponds to.\r
   // Value = CPUID.04h:EAX[07:05]\r
   //\r
-  UINT8         CacheLevel : 3;\r
+  UINT8     CacheLevel            : 3;\r
   //\r
   // Type of the cache that this package's this type of logical processor corresponds to.\r
   // Value = CPUID.04h:EAX[04:00]\r
   //\r
-  UINT8         CacheType : 5;\r
+  UINT8     CacheType             : 5;\r
   //\r
   // Ways of associativity.\r
   // Value = CPUID.04h:EBX[31:22]\r
   //\r
-  UINT16        CacheWays : 10;\r
+  UINT16    CacheWays             : 10;\r
   //\r
   // Fully associative cache.\r
   // Value = CPUID.04h:EAX[09]\r
   //\r
-  UINT16        FullyAssociativeCache : 1;\r
+  UINT16    FullyAssociativeCache : 1;\r
   //\r
   // Direct mapped cache.\r
   // Value = CPUID.04h:EDX[02]\r
   //\r
-  UINT16        DirectMappedCache : 1;\r
-  UINT16        Reserved : 4;\r
+  UINT16    DirectMappedCache     : 1;\r
+  UINT16    Reserved              : 4;\r
   //\r
   // Size of single cache that this package's this type of logical processor corresponds to.\r
   // Value = (CPUID.04h:EBX[31:22] + 1) * (CPUID.04h:EBX[21:12] + 1) *\r
   //         (CPUID.04h:EBX[11:00] + 1) * (CPUID.04h:ECX[31:00] + 1)\r
   //\r
-  UINT32        CacheSizeinKB;\r
+  UINT32    CacheSizeinKB;\r
   //\r
   // Number of the cache that this package's this type of logical processor corresponds to.\r
   // Have subtracted the number of caches that are shared.\r
   //\r
-  UINT16        CacheCount;\r
+  UINT16    CacheCount;\r
 } CPU_CACHE_INFO;\r
 \r
 /**\r
@@ -78,8 +78,8 @@ typedef struct {
 EFI_STATUS\r
 EFIAPI\r
 GetCpuCacheInfo (\r
-  IN OUT CPU_CACHE_INFO     *CpuCacheInfo,\r
-  IN OUT UINTN              *CpuCacheInfoCount\r
+  IN OUT CPU_CACHE_INFO  *CpuCacheInfo,\r
+  IN OUT UINTN           *CpuCacheInfoCount\r
   );\r
 \r
 #endif\r
index 96b93aa347ace4a2d6ec3e684ce5d732523b30ff..b55d88b0f52c874117ec5c61fce24ff22da5f1d4 100644 (file)
@@ -38,7 +38,7 @@ GetLocalApicBaseAddress (
 VOID\r
 EFIAPI\r
 SetLocalApicBaseAddress (\r
-  IN UINTN                BaseAddress\r
+  IN UINTN  BaseAddress\r
   );\r
 \r
 /**\r
@@ -120,8 +120,8 @@ GetApicVersion (
 VOID\r
 EFIAPI\r
 SendFixedIpi (\r
-  IN UINT32          ApicId,\r
-  IN UINT8           Vector\r
+  IN UINT32  ApicId,\r
+  IN UINT8   Vector\r
   );\r
 \r
 /**\r
@@ -134,7 +134,7 @@ SendFixedIpi (
 VOID\r
 EFIAPI\r
 SendFixedIpiAllExcludingSelf (\r
-  IN UINT8           Vector\r
+  IN UINT8  Vector\r
   );\r
 \r
 /**\r
@@ -147,7 +147,7 @@ SendFixedIpiAllExcludingSelf (
 VOID\r
 EFIAPI\r
 SendSmiIpi (\r
-  IN UINT32          ApicId\r
+  IN UINT32  ApicId\r
   );\r
 \r
 /**\r
@@ -171,7 +171,7 @@ SendSmiIpiAllExcludingSelf (
 VOID\r
 EFIAPI\r
 SendInitIpi (\r
-  IN UINT32          ApicId\r
+  IN UINT32  ApicId\r
   );\r
 \r
 /**\r
@@ -200,8 +200,8 @@ SendInitIpiAllExcludingSelf (
 VOID\r
 EFIAPI\r
 SendInitSipiSipi (\r
-  IN UINT32          ApicId,\r
-  IN UINT32          StartupRoutine\r
+  IN UINT32  ApicId,\r
+  IN UINT32  StartupRoutine\r
   );\r
 \r
 /**\r
@@ -218,7 +218,7 @@ SendInitSipiSipi (
 VOID\r
 EFIAPI\r
 SendInitSipiSipiAllExcludingSelf (\r
-  IN UINT32          StartupRoutine\r
+  IN UINT32  StartupRoutine\r
   );\r
 \r
 /**\r
@@ -296,10 +296,10 @@ GetApicTimerCurrentCount (
 VOID\r
 EFIAPI\r
 InitializeApicTimer (\r
-  IN UINTN   DivideValue,\r
-  IN UINT32  InitCount,\r
-  IN BOOLEAN PeriodicMode,\r
-  IN UINT8   Vector\r
+  IN UINTN    DivideValue,\r
+  IN UINT32   InitCount,\r
+  IN BOOLEAN  PeriodicMode,\r
+  IN UINT8    Vector\r
   );\r
 \r
 /**\r
@@ -453,5 +453,5 @@ GetProcessorLocation2ByApicId (
   OUT UINT32  *Core     OPTIONAL,\r
   OUT UINT32  *Thread   OPTIONAL\r
   );\r
-#endif\r
 \r
+#endif\r
index f14d56ba5f7ab617f3d86e57092c8a7925e2e227..1890b5084023329a01295f11e9b79edf20c761d9 100644 (file)
@@ -52,7 +52,7 @@ GetProcessorMicrocodeCpuId (
 UINT32\r
 EFIAPI\r
 GetMicrocodeLength (\r
-  IN CPU_MICROCODE_HEADER *Microcode\r
+  IN CPU_MICROCODE_HEADER  *Microcode\r
   );\r
 \r
 /**\r
@@ -65,7 +65,7 @@ GetMicrocodeLength (
 VOID\r
 EFIAPI\r
 LoadMicrocode (\r
-  IN CPU_MICROCODE_HEADER *Microcode\r
+  IN CPU_MICROCODE_HEADER  *Microcode\r
   );\r
 \r
 /**\r
@@ -109,12 +109,12 @@ LoadMicrocode (
 BOOLEAN\r
 EFIAPI\r
 IsValidMicrocode (\r
-  IN CPU_MICROCODE_HEADER       *Microcode,\r
-  IN UINTN                      MicrocodeLength,\r
-  IN UINT32                     MinimumRevision,\r
-  IN EDKII_PEI_MICROCODE_CPU_ID *MicrocodeCpuIds,\r
-  IN UINTN                      MicrocodeCpuIdCount,\r
-  IN BOOLEAN                    VerifyChecksum\r
+  IN CPU_MICROCODE_HEADER        *Microcode,\r
+  IN UINTN                       MicrocodeLength,\r
+  IN UINT32                      MinimumRevision,\r
+  IN EDKII_PEI_MICROCODE_CPU_ID  *MicrocodeCpuIds,\r
+  IN UINTN                       MicrocodeCpuIdCount,\r
+  IN BOOLEAN                     VerifyChecksum\r
   );\r
 \r
 #endif\r
index d6a1e6c067f2f349115bf3157815f3fa17b7c3fd..1853c464154cbeafff5a8387681ff0ebd3784457 100644 (file)
@@ -54,8 +54,8 @@ MpInitLibInitialize (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibGetNumberOfProcessors (\r
-  OUT UINTN                     *NumberOfProcessors        OPTIONAL,\r
-  OUT UINTN                     *NumberOfEnabledProcessors OPTIONAL\r
+  OUT UINTN  *NumberOfProcessors        OPTIONAL,\r
+  OUT UINTN  *NumberOfEnabledProcessors OPTIONAL\r
   );\r
 \r
 /**\r
@@ -161,12 +161,12 @@ MpInitLibGetProcessorInfo (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupAllAPs (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  BOOLEAN                   SingleThread,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT UINTN                     **FailedCpuList         OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  BOOLEAN           SingleThread,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT UINTN             **FailedCpuList         OPTIONAL\r
   );\r
 \r
 /**\r
@@ -243,12 +243,12 @@ MpInitLibStartupAllAPs (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupThisAP (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT BOOLEAN                   *Finished               OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  UINTN             ProcessorNumber,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT BOOLEAN           *Finished               OPTIONAL\r
   );\r
 \r
 /**\r
@@ -280,8 +280,8 @@ MpInitLibStartupThisAP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibSwitchBSP (\r
-  IN UINTN                     ProcessorNumber,\r
-  IN BOOLEAN                   EnableOldBSP\r
+  IN UINTN    ProcessorNumber,\r
+  IN BOOLEAN  EnableOldBSP\r
   );\r
 \r
 /**\r
@@ -317,9 +317,9 @@ MpInitLibSwitchBSP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibEnableDisableAP (\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  BOOLEAN                   EnableAP,\r
-  IN  UINT32                    *HealthFlag OPTIONAL\r
+  IN  UINTN    ProcessorNumber,\r
+  IN  BOOLEAN  EnableAP,\r
+  IN  UINT32   *HealthFlag OPTIONAL\r
   );\r
 \r
 /**\r
@@ -341,7 +341,7 @@ MpInitLibEnableDisableAP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibWhoAmI (\r
-  OUT UINTN                    *ProcessorNumber\r
+  OUT UINTN  *ProcessorNumber\r
   );\r
 \r
 /**\r
@@ -373,9 +373,9 @@ MpInitLibWhoAmI (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupAllCPUs (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL\r
   );\r
 \r
 #endif\r
index 9110787067b531b4bd41cdb0616509ba6570ca9c..683d9f2c14470d1e387eb14ebc3a881a012c379a 100644 (file)
 //\r
 #define  RESERVED_FIRMWARE_VARIABLE_MTRR_NUMBER  2\r
 \r
-#define  MTRR_NUMBER_OF_FIXED_MTRR      11\r
+#define  MTRR_NUMBER_OF_FIXED_MTRR  11\r
 \r
 //\r
 // Structure to describe a fixed MTRR\r
 //\r
 typedef struct {\r
-  UINT32  Msr;\r
-  UINT32  BaseAddress;\r
-  UINT32  Length;\r
+  UINT32    Msr;\r
+  UINT32    BaseAddress;\r
+  UINT32    Length;\r
 } FIXED_MTRR;\r
 \r
 //\r
 // Structure to describe a variable MTRR\r
 //\r
 typedef struct {\r
-  UINT64  BaseAddress;\r
-  UINT64  Length;\r
-  UINT64  Type;\r
-  UINT32  Msr;\r
-  BOOLEAN Valid;\r
-  BOOLEAN Used;\r
+  UINT64     BaseAddress;\r
+  UINT64     Length;\r
+  UINT64     Type;\r
+  UINT32     Msr;\r
+  BOOLEAN    Valid;\r
+  BOOLEAN    Used;\r
 } VARIABLE_MTRR;\r
 \r
 //\r
@@ -59,14 +59,14 @@ typedef struct _MTRR_VARIABLE_SETTING_ {
 // Array for variable MTRRs\r
 //\r
 typedef struct _MTRR_VARIABLE_SETTINGS_ {\r
-  MTRR_VARIABLE_SETTING   Mtrr[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
+  MTRR_VARIABLE_SETTING    Mtrr[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
 } MTRR_VARIABLE_SETTINGS;\r
 \r
 //\r
 // Array for fixed MTRRs\r
 //\r
 typedef  struct  _MTRR_FIXED_SETTINGS_ {\r
-  UINT64       Mtrr[MTRR_NUMBER_OF_FIXED_MTRR];\r
+  UINT64    Mtrr[MTRR_NUMBER_OF_FIXED_MTRR];\r
 } MTRR_FIXED_SETTINGS;\r
 \r
 //\r
@@ -98,9 +98,9 @@ typedef enum {
 #define  MTRR_CACHE_INVALID_TYPE     7\r
 \r
 typedef struct {\r
-  UINT64                 BaseAddress;\r
-  UINT64                 Length;\r
-  MTRR_MEMORY_CACHE_TYPE Type;\r
+  UINT64                    BaseAddress;\r
+  UINT64                    Length;\r
+  MTRR_MEMORY_CACHE_TYPE    Type;\r
 } MTRR_MEMORY_RANGE;\r
 \r
 /**\r
@@ -168,7 +168,6 @@ MtrrSetMemoryAttribute (
   IN MTRR_MEMORY_CACHE_TYPE  Attribute\r
   );\r
 \r
-\r
 /**\r
   This function will get the memory cache type of the specific address.\r
   This function is mainly for debugging purposes.\r
@@ -181,10 +180,9 @@ MtrrSetMemoryAttribute (
 MTRR_MEMORY_CACHE_TYPE\r
 EFIAPI\r
 MtrrGetMemoryAttribute (\r
-  IN PHYSICAL_ADDRESS   Address\r
+  IN PHYSICAL_ADDRESS  Address\r
   );\r
 \r
-\r
 /**\r
   This function gets the content in fixed MTRRs\r
 \r
@@ -193,13 +191,12 @@ MtrrGetMemoryAttribute (
   @return The pointer of FixedSettings\r
 \r
 **/\r
-MTRR_FIXED_SETTINGS*\r
+MTRR_FIXED_SETTINGS *\r
 EFIAPI\r
 MtrrGetFixedMtrr (\r
-  OUT MTRR_FIXED_SETTINGS         *FixedSettings\r
+  OUT MTRR_FIXED_SETTINGS  *FixedSettings\r
   );\r
 \r
-\r
 /**\r
   This function gets the content in all MTRRs (variable and fixed)\r
 \r
@@ -211,10 +208,9 @@ MtrrGetFixedMtrr (
 MTRR_SETTINGS *\r
 EFIAPI\r
 MtrrGetAllMtrrs (\r
-  OUT MTRR_SETTINGS                *MtrrSetting\r
+  OUT MTRR_SETTINGS  *MtrrSetting\r
   );\r
 \r
-\r
 /**\r
   This function sets all MTRRs (variable and fixed)\r
 \r
@@ -226,10 +222,9 @@ MtrrGetAllMtrrs (
 MTRR_SETTINGS *\r
 EFIAPI\r
 MtrrSetAllMtrrs (\r
-  IN MTRR_SETTINGS                *MtrrSetting\r
+  IN MTRR_SETTINGS  *MtrrSetting\r
   );\r
 \r
-\r
 /**\r
   Get the attribute of variable MTRRs.\r
 \r
@@ -248,12 +243,11 @@ MtrrSetAllMtrrs (
 UINT32\r
 EFIAPI\r
 MtrrGetMemoryAttributeInVariableMtrr (\r
-  IN  UINT64                    MtrrValidBitsMask,\r
-  IN  UINT64                    MtrrValidAddressMask,\r
-  OUT VARIABLE_MTRR             *VariableMtrr\r
+  IN  UINT64         MtrrValidBitsMask,\r
+  IN  UINT64         MtrrValidAddressMask,\r
+  OUT VARIABLE_MTRR  *VariableMtrr\r
   );\r
 \r
-\r
 /**\r
   This function prints all MTRRs for debugging.\r
 **/\r
@@ -355,10 +349,11 @@ MtrrSetMemoryAttributeInMtrrSettings (
 RETURN_STATUS\r
 EFIAPI\r
 MtrrSetMemoryAttributesInMtrrSettings (\r
-  IN OUT MTRR_SETTINGS           *MtrrSetting,\r
-  IN     VOID                    *Scratch,\r
-  IN OUT UINTN                   *ScratchSize,\r
-  IN     CONST MTRR_MEMORY_RANGE *Ranges,\r
-  IN     UINTN                   RangeCount\r
+  IN OUT MTRR_SETTINGS            *MtrrSetting,\r
+  IN     VOID                     *Scratch,\r
+  IN OUT UINTN                    *ScratchSize,\r
+  IN     CONST MTRR_MEMORY_RANGE  *Ranges,\r
+  IN     UINTN                    RangeCount\r
   );\r
+\r
 #endif // _MTRR_LIB_H_\r
index c27ecfaf94b2def6c1e8866f5e4a1e53e08a13ec..564fc31542435ea0ef4b0b504e8c65fad4307d75 100644 (file)
@@ -30,7 +30,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 EFI_PEI_PPI_DESCRIPTOR *\r
 EFIAPI\r
 SecPlatformMain (\r
-  IN OUT   EFI_SEC_PEI_HAND_OFF        *SecCoreData\r
+  IN OUT   EFI_SEC_PEI_HAND_OFF  *SecCoreData\r
   );\r
 \r
 /**\r
@@ -47,9 +47,9 @@ SecPlatformMain (
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformation (\r
-  IN CONST EFI_PEI_SERVICES                     **PeiServices,\r
-  IN OUT   UINT64                               *StructureSize,\r
-     OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
+  IN CONST EFI_PEI_SERVICES                  **PeiServices,\r
+  IN OUT   UINT64                            *StructureSize,\r
+  OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
   );\r
 \r
 /**\r
index 60caf313bf4f2366c6fff6af023ac2271fe2c0e2..36459afc5e242dfec9c358574d605b99561a3197 100644 (file)
 /// modifiers of a CPU feature.  When used in a list, the define value\r
 /// CPU_FEATURE_END is used to terminate a list of CPU feature values.\r
 /// @{\r
-#define CPU_FEATURE_AESNI                           0\r
-#define CPU_FEATURE_TURBO_MODE                      1\r
-#define CPU_FEATURE_MWAIT                           2\r
-#define CPU_FEATURE_ACPI                            3\r
-#define CPU_FEATURE_EIST                            4\r
-#define CPU_FEATURE_RESERVED_5                      5\r
-#define CPU_FEATURE_FASTSTRINGS                     6\r
-#define CPU_FEATURE_VMX                             7\r
-#define CPU_FEATURE_SMX                             8\r
-#define CPU_FEATURE_LMCE                            9\r
-#define CPU_FEATURE_LOCK_FEATURE_CONTROL_REGISTER   10\r
-#define CPU_FEATURE_LIMIT_CPUID_MAX_VAL             11\r
-#define CPU_FEATURE_MCE                             12\r
-#define CPU_FEATURE_MCA                             13\r
-#define CPU_FEATURE_MCG_CTL                         14\r
-#define CPU_FEATURE_PENDING_BREAK                   15\r
-#define CPU_FEATURE_C1E                             16\r
-#define CPU_FEATURE_C1_AUTO_DEMOTION                17\r
-#define CPU_FEATURE_C3_AUTO_DEMOTION                18\r
-#define CPU_FEATURE_C1_UNDEMOTION                   19\r
-#define CPU_FEATURE_C3_UNDEMOTION                   20\r
-#define CPU_FEATURE_C_STATE                         21\r
-#define CPU_FEATURE_TM                              22\r
-#define CPU_FEATURE_TM2                             23\r
-#define CPU_FEATURE_X2APIC                          24\r
-#define CPU_FEATURE_RESERVED_25                     25\r
-#define CPU_FEATURE_RESERVED_26                     26\r
-#define CPU_FEATURE_RESERVED_27                     27\r
-#define CPU_FEATURE_RESERVED_28                     28\r
-#define CPU_FEATURE_RESERVED_29                     29\r
-#define CPU_FEATURE_RESERVED_30                     30\r
-#define CPU_FEATURE_RESERVED_31                     31\r
-\r
-#define CPU_FEATURE_L2_PREFETCHER                   (32+0)\r
-#define CPU_FEATURE_L1_DATA_PREFETCHER              (32+1)\r
-#define CPU_FEATURE_HARDWARE_PREFETCHER             (32+2)\r
-#define CPU_FEATURE_ADJACENT_CACHE_LINE_PREFETCH    (32+3)\r
-#define CPU_FEATURE_DCU_PREFETCHER                  (32+4)\r
-#define CPU_FEATURE_IP_PREFETCHER                   (32+5)\r
-#define CPU_FEATURE_MLC_STREAMER_PREFETCHER         (32+6)\r
-#define CPU_FEATURE_MLC_SPATIAL_PREFETCHER          (32+7)\r
-#define CPU_FEATURE_THREE_STRIKE_COUNTER            (32+8)\r
-#define CPU_FEATURE_APIC_TPR_UPDATE_MESSAGE         (32+9)\r
-#define CPU_FEATURE_ENERGY_PERFORMANCE_BIAS         (32+10)\r
-#define CPU_FEATURE_PPIN                            (32+11)\r
-#define CPU_FEATURE_PROC_TRACE                      (32+12)\r
-\r
-#define CPU_FEATURE_BEFORE_ALL                      BIT23\r
-#define CPU_FEATURE_AFTER_ALL                       BIT24\r
-#define CPU_FEATURE_THREAD_BEFORE                   BIT25\r
-#define CPU_FEATURE_THREAD_AFTER                    BIT26\r
-#define CPU_FEATURE_CORE_BEFORE                     BIT27\r
-#define CPU_FEATURE_CORE_AFTER                      BIT28\r
-#define CPU_FEATURE_PACKAGE_BEFORE                  BIT29\r
-#define CPU_FEATURE_PACKAGE_AFTER                   BIT30\r
-#define CPU_FEATURE_END                             MAX_UINT32\r
+#define CPU_FEATURE_AESNI                          0\r
+#define CPU_FEATURE_TURBO_MODE                     1\r
+#define CPU_FEATURE_MWAIT                          2\r
+#define CPU_FEATURE_ACPI                           3\r
+#define CPU_FEATURE_EIST                           4\r
+#define CPU_FEATURE_RESERVED_5                     5\r
+#define CPU_FEATURE_FASTSTRINGS                    6\r
+#define CPU_FEATURE_VMX                            7\r
+#define CPU_FEATURE_SMX                            8\r
+#define CPU_FEATURE_LMCE                           9\r
+#define CPU_FEATURE_LOCK_FEATURE_CONTROL_REGISTER  10\r
+#define CPU_FEATURE_LIMIT_CPUID_MAX_VAL            11\r
+#define CPU_FEATURE_MCE                            12\r
+#define CPU_FEATURE_MCA                            13\r
+#define CPU_FEATURE_MCG_CTL                        14\r
+#define CPU_FEATURE_PENDING_BREAK                  15\r
+#define CPU_FEATURE_C1E                            16\r
+#define CPU_FEATURE_C1_AUTO_DEMOTION               17\r
+#define CPU_FEATURE_C3_AUTO_DEMOTION               18\r
+#define CPU_FEATURE_C1_UNDEMOTION                  19\r
+#define CPU_FEATURE_C3_UNDEMOTION                  20\r
+#define CPU_FEATURE_C_STATE                        21\r
+#define CPU_FEATURE_TM                             22\r
+#define CPU_FEATURE_TM2                            23\r
+#define CPU_FEATURE_X2APIC                         24\r
+#define CPU_FEATURE_RESERVED_25                    25\r
+#define CPU_FEATURE_RESERVED_26                    26\r
+#define CPU_FEATURE_RESERVED_27                    27\r
+#define CPU_FEATURE_RESERVED_28                    28\r
+#define CPU_FEATURE_RESERVED_29                    29\r
+#define CPU_FEATURE_RESERVED_30                    30\r
+#define CPU_FEATURE_RESERVED_31                    31\r
+\r
+#define CPU_FEATURE_L2_PREFETCHER                 (32+0)\r
+#define CPU_FEATURE_L1_DATA_PREFETCHER            (32+1)\r
+#define CPU_FEATURE_HARDWARE_PREFETCHER           (32+2)\r
+#define CPU_FEATURE_ADJACENT_CACHE_LINE_PREFETCH  (32+3)\r
+#define CPU_FEATURE_DCU_PREFETCHER                (32+4)\r
+#define CPU_FEATURE_IP_PREFETCHER                 (32+5)\r
+#define CPU_FEATURE_MLC_STREAMER_PREFETCHER       (32+6)\r
+#define CPU_FEATURE_MLC_SPATIAL_PREFETCHER        (32+7)\r
+#define CPU_FEATURE_THREE_STRIKE_COUNTER          (32+8)\r
+#define CPU_FEATURE_APIC_TPR_UPDATE_MESSAGE       (32+9)\r
+#define CPU_FEATURE_ENERGY_PERFORMANCE_BIAS       (32+10)\r
+#define CPU_FEATURE_PPIN                          (32+11)\r
+#define CPU_FEATURE_PROC_TRACE                    (32+12)\r
+\r
+#define CPU_FEATURE_BEFORE_ALL      BIT23\r
+#define CPU_FEATURE_AFTER_ALL       BIT24\r
+#define CPU_FEATURE_THREAD_BEFORE   BIT25\r
+#define CPU_FEATURE_THREAD_AFTER    BIT26\r
+#define CPU_FEATURE_CORE_BEFORE     BIT27\r
+#define CPU_FEATURE_CORE_AFTER      BIT28\r
+#define CPU_FEATURE_PACKAGE_BEFORE  BIT29\r
+#define CPU_FEATURE_PACKAGE_AFTER   BIT30\r
+#define CPU_FEATURE_END             MAX_UINT32\r
 /// @}\r
 \r
 ///\r
@@ -85,28 +85,28 @@ typedef struct {
   //\r
   // Set to 1 when current processor is the first thread in the core it resides in.\r
   //\r
-  UINT32 Thread   : 1;\r
+  UINT32    Thread   : 1;\r
   //\r
   // Set to 1 when current processor is a thread of the first core in the module it resides in.\r
   //\r
-  UINT32 Core     : 1;\r
+  UINT32    Core     : 1;\r
   //\r
   // Set to 1 when current processor is a thread of the first module in the tile it resides in.\r
   //\r
-  UINT32 Module   : 1;\r
+  UINT32    Module   : 1;\r
   //\r
   // Set to 1 when current processor is a thread of the first tile in the die it resides in.\r
   //\r
-  UINT32 Tile     : 1;\r
+  UINT32    Tile     : 1;\r
   //\r
   // Set to 1 when current processor is a thread of the first die in the package it resides in.\r
   //\r
-  UINT32 Die      : 1;\r
+  UINT32    Die      : 1;\r
   //\r
   // Set to 1 when current processor is a thread of the first package in the system.\r
   //\r
-  UINT32 Package  : 1;\r
-  UINT32 Reserved : 26;\r
+  UINT32    Package  : 1;\r
+  UINT32    Reserved : 26;\r
 } REGISTER_CPU_FEATURE_FIRST_PROCESSOR;\r
 \r
 ///\r
@@ -118,36 +118,36 @@ typedef struct {
   ///\r
   /// The package that the CPU resides\r
   ///\r
-  EFI_PROCESSOR_INFORMATION            ProcessorInfo;\r
+  EFI_PROCESSOR_INFORMATION               ProcessorInfo;\r
 \r
   ///\r
   /// The bit flag indicating whether the CPU is the first Thread/Core/Module/Tile/Die/Package in its parent scope.\r
   ///\r
-  REGISTER_CPU_FEATURE_FIRST_PROCESSOR First;\r
+  REGISTER_CPU_FEATURE_FIRST_PROCESSOR    First;\r
   ///\r
   /// The Display Family of the CPU computed from CPUID leaf CPUID_VERSION_INFO\r
   ///\r
-  UINT32                               DisplayFamily;\r
+  UINT32                                  DisplayFamily;\r
   ///\r
   /// The Display Model of the CPU computed from CPUID leaf CPUID_VERSION_INFO\r
   ///\r
-  UINT32                               DisplayModel;\r
+  UINT32                                  DisplayModel;\r
   ///\r
   /// The Stepping ID of the CPU computed from CPUID leaf CPUID_VERSION_INFO\r
   ///\r
-  UINT32                               SteppingId;\r
+  UINT32                                  SteppingId;\r
   ///\r
   /// The Processor Type of the CPU computed from CPUID leaf CPUID_VERSION_INFO\r
   ///\r
-  UINT32                               ProcessorType;\r
+  UINT32                                  ProcessorType;\r
   ///\r
   /// Bit field structured returned in ECX from CPUID leaf CPUID_VERSION_INFO\r
   ///\r
-  CPUID_VERSION_INFO_ECX               CpuIdVersionInfoEcx;\r
+  CPUID_VERSION_INFO_ECX                  CpuIdVersionInfoEcx;\r
   ///\r
   /// Bit field structured returned in EDX from CPUID leaf CPUID_VERSION_INFO\r
   ///\r
-  CPUID_VERSION_INFO_EDX               CpuIdVersionInfoEdx;\r
+  CPUID_VERSION_INFO_EDX                  CpuIdVersionInfoEdx;\r
 } REGISTER_CPU_FEATURE_INFORMATION;\r
 \r
 /**\r
@@ -167,7 +167,7 @@ typedef struct {
 BOOLEAN\r
 EFIAPI\r
 IsCpuFeatureSupported (\r
-  IN UINT32              Feature\r
+  IN UINT32  Feature\r
   );\r
 \r
 /**\r
@@ -184,7 +184,7 @@ IsCpuFeatureSupported (
 BOOLEAN\r
 EFIAPI\r
 IsCpuFeatureInSetting (\r
-  IN UINT32              Feature\r
+  IN UINT32  Feature\r
   );\r
 \r
 /**\r
@@ -303,10 +303,10 @@ RETURN_STATUS
 RETURN_STATUS\r
 EFIAPI\r
 RegisterCpuFeature (\r
-  IN CHAR8                             *FeatureName        OPTIONAL,\r
-  IN CPU_FEATURE_GET_CONFIG_DATA       GetConfigDataFunc   OPTIONAL,\r
-  IN CPU_FEATURE_SUPPORT               SupportFunc         OPTIONAL,\r
-  IN CPU_FEATURE_INITIALIZE            InitializeFunc      OPTIONAL,\r
+  IN CHAR8                        *FeatureName        OPTIONAL,\r
+  IN CPU_FEATURE_GET_CONFIG_DATA  GetConfigDataFunc   OPTIONAL,\r
+  IN CPU_FEATURE_SUPPORT          SupportFunc         OPTIONAL,\r
+  IN CPU_FEATURE_INITIALIZE       InitializeFunc      OPTIONAL,\r
   ...\r
   );\r
 \r
@@ -348,7 +348,7 @@ CpuFeaturesInitialize (
 VOID\r
 EFIAPI\r
 SwitchBspAfterFeaturesInitialize (\r
-  IN UINTN               ProcessorNumber\r
+  IN UINTN  ProcessorNumber\r
   );\r
 \r
 /**\r
@@ -368,11 +368,11 @@ SwitchBspAfterFeaturesInitialize (
 VOID\r
 EFIAPI\r
 CpuRegisterTableWrite (\r
-  IN UINTN               ProcessorNumber,\r
-  IN REGISTER_TYPE       RegisterType,\r
-  IN UINT64              Index,\r
-  IN UINT64              ValueMask,\r
-  IN UINT64              Value\r
+  IN UINTN          ProcessorNumber,\r
+  IN REGISTER_TYPE  RegisterType,\r
+  IN UINT64         Index,\r
+  IN UINT64         ValueMask,\r
+  IN UINT64         Value\r
   );\r
 \r
 /**\r
@@ -394,11 +394,11 @@ CpuRegisterTableWrite (
 VOID\r
 EFIAPI\r
 CpuRegisterTableTestThenWrite (\r
-  IN UINTN               ProcessorNumber,\r
-  IN REGISTER_TYPE       RegisterType,\r
-  IN UINT64              Index,\r
-  IN UINT64              ValueMask,\r
-  IN UINT64              Value\r
+  IN UINTN          ProcessorNumber,\r
+  IN REGISTER_TYPE  RegisterType,\r
+  IN UINT64         Index,\r
+  IN UINT64         ValueMask,\r
+  IN UINT64         Value\r
   );\r
 \r
 /**\r
@@ -418,11 +418,11 @@ CpuRegisterTableTestThenWrite (
 VOID\r
 EFIAPI\r
 PreSmmCpuRegisterTableWrite (\r
-  IN UINTN               ProcessorNumber,\r
-  IN REGISTER_TYPE       RegisterType,\r
-  IN UINT64              Index,\r
-  IN UINT64              ValueMask,\r
-  IN UINT64              Value\r
+  IN UINTN          ProcessorNumber,\r
+  IN REGISTER_TYPE  RegisterType,\r
+  IN UINT64         Index,\r
+  IN UINT64         ValueMask,\r
+  IN UINT64         Value\r
   );\r
 \r
 /**\r
index dbcd57e0ad42dc0758407dcd57d4ddc143db8b6c..54cae865a28ea686c1ac46949986535e4129e03f 100644 (file)
@@ -408,7 +408,7 @@ SmmCpuFeaturesCompleteSmmReadyToLock (
 VOID *\r
 EFIAPI\r
 SmmCpuFeaturesAllocatePageTableMemory (\r
-  IN UINTN           Pages\r
+  IN UINTN  Pages\r
   );\r
 \r
 #endif\r
index fdb756de9db7e90a29384f3203611be2d7390be8..f9cc3f7249e8490269a41eb38d10ad58e0c34d05 100644 (file)
 /// SMM Page Size Type\r
 ///\r
 typedef enum {\r
-    SmmPageSize4K,\r
-    SmmPageSize2M,\r
-    SmmPageSize1G,\r
-    MaxSmmPageSizeType\r
+  SmmPageSize4K,\r
+  SmmPageSize2M,\r
+  SmmPageSize1G,\r
+  MaxSmmPageSizeType\r
 } SMM_PAGE_SIZE_TYPE;\r
 \r
 /**\r
@@ -74,7 +74,7 @@ ClearTopLevelSmiStatus (
 EFI_STATUS\r
 EFIAPI\r
 PlatformSmmBspElection (\r
-  OUT BOOLEAN     *IsBsp\r
+  OUT BOOLEAN  *IsBsp\r
   );\r
 \r
 /**\r
@@ -94,10 +94,10 @@ PlatformSmmBspElection (
 EFI_STATUS\r
 EFIAPI\r
 GetPlatformPageTableAttribute (\r
-  IN  UINT64                Address,\r
-  OUT SMM_PAGE_SIZE_TYPE    *PageSize,\r
-  OUT UINTN                 *NumOfPages,\r
-  OUT UINTN                 *PageAttribute\r
+  IN  UINT64              Address,\r
+  OUT SMM_PAGE_SIZE_TYPE  *PageSize,\r
+  OUT UINTN               *NumOfPages,\r
+  OUT UINTN               *PageAttribute\r
   );\r
 \r
 #endif\r
index 092c1d2116c3bbf54c88447d016acc37d543b449..0ff4a35774c15ce7ddc72b248eca4f1f2fb7e68b 100644 (file)
@@ -13,8 +13,6 @@
 #ifndef __UEFI_CPU_LIB_H__\r
 #define __UEFI_CPU_LIB_H__\r
 \r
-\r
-\r
 /**\r
   Initializes floating point units for requirement of UEFI specification.\r
 \r
index 061948cf840df0b88beeafe8c90bc34238db7544..ebda1c3d907c9028165f8a529ca7fd9edde9625e 100644 (file)
@@ -15,7 +15,6 @@
 #include <Protocol/DebugSupport.h>\r
 #include <Register/Amd/Ghcb.h>\r
 \r
-\r
 /**\r
   Perform VMGEXIT.\r
 \r
 UINT64\r
 EFIAPI\r
 VmgExit (\r
-  IN OUT GHCB                *Ghcb,\r
-  IN     UINT64              ExitCode,\r
-  IN     UINT64              ExitInfo1,\r
-  IN     UINT64              ExitInfo2\r
+  IN OUT GHCB    *Ghcb,\r
+  IN     UINT64  ExitCode,\r
+  IN     UINT64  ExitInfo1,\r
+  IN     UINT64  ExitInfo2\r
   );\r
 \r
 /**\r
@@ -58,8 +57,8 @@ VmgExit (
 VOID\r
 EFIAPI\r
 VmgInit (\r
-  IN OUT GHCB                *Ghcb,\r
-  IN OUT BOOLEAN             *InterruptState\r
+  IN OUT GHCB     *Ghcb,\r
+  IN OUT BOOLEAN  *InterruptState\r
   );\r
 \r
 /**\r
@@ -76,8 +75,8 @@ VmgInit (
 VOID\r
 EFIAPI\r
 VmgDone (\r
-  IN OUT GHCB                *Ghcb,\r
-  IN     BOOLEAN             InterruptState\r
+  IN OUT GHCB     *Ghcb,\r
+  IN     BOOLEAN  InterruptState\r
   );\r
 \r
 /**\r
@@ -93,8 +92,8 @@ VmgDone (
 VOID\r
 EFIAPI\r
 VmgSetOffsetValid (\r
-  IN OUT GHCB                *Ghcb,\r
-  IN     GHCB_REGISTER       Offset\r
+  IN OUT GHCB           *Ghcb,\r
+  IN     GHCB_REGISTER  Offset\r
   );\r
 \r
 /**\r
@@ -113,8 +112,8 @@ VmgSetOffsetValid (
 BOOLEAN\r
 EFIAPI\r
 VmgIsOffsetValid (\r
-  IN GHCB                    *Ghcb,\r
-  IN GHCB_REGISTER           Offset\r
+  IN GHCB           *Ghcb,\r
+  IN GHCB_REGISTER  Offset\r
   );\r
 \r
 /**\r
index 3e224ed99521d7daf5a2b50033b4e95ef7fd60a0..36feac5237e3793cf169934af0967042a1dfa409 100644 (file)
@@ -16,7 +16,7 @@
     0x5cb9cb3d, 0x31a4, 0x480c, { 0x94, 0x98, 0x29, 0xd2, 0x69, 0xba, 0xcf, 0xba} \\r
   }\r
 \r
-typedef struct _EDKII_PEI_MP_SERVICES2_PPI  EDKII_PEI_MP_SERVICES2_PPI;\r
+typedef struct _EDKII_PEI_MP_SERVICES2_PPI EDKII_PEI_MP_SERVICES2_PPI;\r
 \r
 /**\r
   Get the number of CPU's.\r
@@ -35,7 +35,7 @@ typedef struct _EDKII_PEI_MP_SERVICES2_PPI  EDKII_PEI_MP_SERVICES2_PPI;
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EDKII_PEI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS) (\r
+(EFIAPI *EDKII_PEI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS)(\r
   IN  EDKII_PEI_MP_SERVICES2_PPI     *This,\r
   OUT UINTN                          *NumberOfProcessors,\r
   OUT UINTN                          *NumberOfEnabledProcessors\r
@@ -57,7 +57,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EDKII_PEI_MP_SERVICES_GET_PROCESSOR_INFO) (\r
+(EFIAPI *EDKII_PEI_MP_SERVICES_GET_PROCESSOR_INFO)(\r
   IN  EDKII_PEI_MP_SERVICES2_PPI     *This,\r
   IN  UINTN                          ProcessorNumber,\r
   OUT EFI_PROCESSOR_INFORMATION     *ProcessorInfoBuffer\r
@@ -97,7 +97,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EDKII_PEI_MP_SERVICES_STARTUP_ALL_APS) (\r
+(EFIAPI *EDKII_PEI_MP_SERVICES_STARTUP_ALL_APS)(\r
   IN  EDKII_PEI_MP_SERVICES2_PPI     *This,\r
   IN  EFI_AP_PROCEDURE               Procedure,\r
   IN  BOOLEAN                        SingleThread,\r
@@ -139,7 +139,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EDKII_PEI_MP_SERVICES_STARTUP_THIS_AP) (\r
+(EFIAPI *EDKII_PEI_MP_SERVICES_STARTUP_THIS_AP)(\r
   IN  EDKII_PEI_MP_SERVICES2_PPI     *This,\r
   IN  EFI_AP_PROCEDURE               Procedure,\r
   IN  UINTN                          ProcessorNumber,\r
@@ -171,7 +171,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EDKII_PEI_MP_SERVICES_SWITCH_BSP) (\r
+(EFIAPI *EDKII_PEI_MP_SERVICES_SWITCH_BSP)(\r
   IN  EDKII_PEI_MP_SERVICES2_PPI     *This,\r
   IN  UINTN                          ProcessorNumber,\r
   IN  BOOLEAN                        EnableOldBSP\r
@@ -205,7 +205,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EDKII_PEI_MP_SERVICES_ENABLEDISABLEAP) (\r
+(EFIAPI *EDKII_PEI_MP_SERVICES_ENABLEDISABLEAP)(\r
   IN  EDKII_PEI_MP_SERVICES2_PPI     *This,\r
   IN  UINTN                          ProcessorNumber,\r
   IN  BOOLEAN                        EnableAP,\r
@@ -227,12 +227,11 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EDKII_PEI_MP_SERVICES_WHOAMI) (\r
+(EFIAPI *EDKII_PEI_MP_SERVICES_WHOAMI)(\r
   IN  EDKII_PEI_MP_SERVICES2_PPI     *This,\r
   OUT UINTN                          *ProcessorNumber\r
   );\r
 \r
-\r
 /**\r
   Activate all of the application proessors.\r
 \r
@@ -256,7 +255,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EDKII_PEI_MP_SERVICES_STARTUP_ALL_CPUS) (\r
+(EFIAPI *EDKII_PEI_MP_SERVICES_STARTUP_ALL_CPUS)(\r
   IN  EDKII_PEI_MP_SERVICES2_PPI     *This,\r
   IN  EFI_AP_PROCEDURE               Procedure,\r
   IN  UINTN                          TimeoutInMicroSeconds,\r
@@ -264,16 +263,16 @@ EFI_STATUS
   );\r
 \r
 struct _EDKII_PEI_MP_SERVICES2_PPI {\r
-  EDKII_PEI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS  GetNumberOfProcessors;\r
-  EDKII_PEI_MP_SERVICES_GET_PROCESSOR_INFO        GetProcessorInfo;\r
-  EDKII_PEI_MP_SERVICES_STARTUP_ALL_APS           StartupAllAPs;\r
-  EDKII_PEI_MP_SERVICES_STARTUP_THIS_AP           StartupThisAP;\r
-  EDKII_PEI_MP_SERVICES_SWITCH_BSP                SwitchBSP;\r
-  EDKII_PEI_MP_SERVICES_ENABLEDISABLEAP           EnableDisableAP;\r
-  EDKII_PEI_MP_SERVICES_WHOAMI                    WhoAmI;\r
-  EDKII_PEI_MP_SERVICES_STARTUP_ALL_CPUS          StartupAllCPUs;\r
+  EDKII_PEI_MP_SERVICES_GET_NUMBER_OF_PROCESSORS    GetNumberOfProcessors;\r
+  EDKII_PEI_MP_SERVICES_GET_PROCESSOR_INFO          GetProcessorInfo;\r
+  EDKII_PEI_MP_SERVICES_STARTUP_ALL_APS             StartupAllAPs;\r
+  EDKII_PEI_MP_SERVICES_STARTUP_THIS_AP             StartupThisAP;\r
+  EDKII_PEI_MP_SERVICES_SWITCH_BSP                  SwitchBSP;\r
+  EDKII_PEI_MP_SERVICES_ENABLEDISABLEAP             EnableDisableAP;\r
+  EDKII_PEI_MP_SERVICES_WHOAMI                      WhoAmI;\r
+  EDKII_PEI_MP_SERVICES_STARTUP_ALL_CPUS            StartupAllCPUs;\r
 };\r
 \r
-extern EFI_GUID gEdkiiPeiMpServices2PpiGuid;\r
+extern EFI_GUID  gEdkiiPeiMpServices2PpiGuid;\r
 \r
 #endif\r
index ea865acbb5c846b13d91f17a2d577aa50671f497..2ea99394a9b1dfae97dea680bf74fe32d398007b 100644 (file)
@@ -46,9 +46,9 @@ EFI_STATUS
 /// Republish SEC PPIs\r
 ///\r
 struct _REPUBLISH_SEC_PPI_PPI {\r
-  REPUBLISH_SEC_PPI_REPUBLISH_SEC_PPIS  RepublishSecPpis;\r
+  REPUBLISH_SEC_PPI_REPUBLISH_SEC_PPIS    RepublishSecPpis;\r
 };\r
 \r
-extern EFI_GUID gRepublishSecPpiPpiGuid;\r
+extern EFI_GUID  gRepublishSecPpiPpiGuid;\r
 \r
 #endif\r
index be48965422d9fde32a508581a5a3e43dc6b0d164..ee20e30414b384c5749c0f672de3e7c58ccfb87e 100644 (file)
     0x430f6965, 0x9a69, 0x41c5, { 0x93, 0xed, 0x8b, 0xf0, 0x64, 0x35, 0xc1, 0xc6 } \\r
   }\r
 \r
-typedef struct _EDKII_PEI_SHADOW_MICROCODE_PPI  EDKII_PEI_SHADOW_MICROCODE_PPI;\r
+typedef struct _EDKII_PEI_SHADOW_MICROCODE_PPI EDKII_PEI_SHADOW_MICROCODE_PPI;\r
 \r
 typedef struct {\r
-  UINT32         ProcessorSignature;\r
-  UINT8          PlatformId;\r
+  UINT32    ProcessorSignature;\r
+  UINT8     PlatformId;\r
 } EDKII_PEI_MICROCODE_CPU_ID;\r
 \r
 /**\r
@@ -44,7 +44,7 @@ typedef struct {
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EDKII_PEI_SHADOW_MICROCODE) (\r
+(EFIAPI *EDKII_PEI_SHADOW_MICROCODE)(\r
   IN  EDKII_PEI_SHADOW_MICROCODE_PPI        *This,\r
   IN  UINTN                                 CpuIdCount,\r
   IN  EDKII_PEI_MICROCODE_CPU_ID            *MicrocodeCpuId,\r
@@ -57,10 +57,9 @@ EFI_STATUS
 /// abstracts handling microcode shadow support.\r
 ///\r
 struct _EDKII_PEI_SHADOW_MICROCODE_PPI {\r
-  EDKII_PEI_SHADOW_MICROCODE          ShadowMicrocode;\r
+  EDKII_PEI_SHADOW_MICROCODE    ShadowMicrocode;\r
 };\r
 \r
-extern EFI_GUID gEdkiiPeiShadowMicrocodePpiGuid;\r
+extern EFI_GUID  gEdkiiPeiShadowMicrocodePpiGuid;\r
 \r
 #endif\r
-\r
index db2ce11f1e093d59f041e697cec06178f4ab3d7f..0f77897e03ff04d8e5b371dcfd972b0804c86831 100644 (file)
@@ -34,7 +34,7 @@
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_SM_MONITOR_LOAD_MONITOR) (\r
+(EFIAPI *EFI_SM_MONITOR_LOAD_MONITOR)(\r
   IN EFI_PHYSICAL_ADDRESS StmImage,\r
   IN UINTN                StmImageSize\r
   );\r
@@ -54,7 +54,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_SM_MONITOR_ADD_PI_RESOURCE) (\r
+(EFIAPI *EFI_SM_MONITOR_ADD_PI_RESOURCE)(\r
   IN STM_RSC *ResourceList,\r
   IN UINT32   NumEntries OPTIONAL\r
   );\r
@@ -74,7 +74,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_SM_MONITOR_DELETE_PI_RESOURCE) (\r
+(EFIAPI *EFI_SM_MONITOR_DELETE_PI_RESOURCE)(\r
   IN STM_RSC *ResourceList OPTIONAL,\r
   IN UINT32   NumEntries OPTIONAL\r
   );\r
@@ -94,14 +94,14 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_SM_MONITOR_GET_PI_RESOURCE) (\r
+(EFIAPI *EFI_SM_MONITOR_GET_PI_RESOURCE)(\r
   OUT    STM_RSC *ResourceList,\r
   IN OUT UINT32  *ResourceSize\r
   );\r
 \r
 typedef UINT32 EFI_SM_MONITOR_STATE;\r
-#define EFI_SM_MONITOR_STATE_ENABLED     0x1\r
-#define EFI_SM_MONITOR_STATE_ACTIVATED   0x2\r
+#define EFI_SM_MONITOR_STATE_ENABLED    0x1\r
+#define EFI_SM_MONITOR_STATE_ACTIVATED  0x2\r
 \r
 /**\r
 \r
@@ -112,7 +112,7 @@ typedef UINT32 EFI_SM_MONITOR_STATE;
 **/\r
 typedef\r
 EFI_SM_MONITOR_STATE\r
-(EFIAPI *EFI_SM_MONITOR_GET_MONITOR_STATE) (\r
+(EFIAPI *EFI_SM_MONITOR_GET_MONITOR_STATE)(\r
   VOID\r
   );\r
 \r
@@ -120,16 +120,16 @@ typedef struct _EFI_SM_MONITOR_INIT_PROTOCOL {
   //\r
   // Valid at boot-time only\r
   //\r
-  EFI_SM_MONITOR_LOAD_MONITOR                      LoadMonitor;\r
-  EFI_SM_MONITOR_ADD_PI_RESOURCE                   AddPiResource;\r
-  EFI_SM_MONITOR_DELETE_PI_RESOURCE                DeletePiResource;\r
-  EFI_SM_MONITOR_GET_PI_RESOURCE                   GetPiResource;\r
+  EFI_SM_MONITOR_LOAD_MONITOR          LoadMonitor;\r
+  EFI_SM_MONITOR_ADD_PI_RESOURCE       AddPiResource;\r
+  EFI_SM_MONITOR_DELETE_PI_RESOURCE    DeletePiResource;\r
+  EFI_SM_MONITOR_GET_PI_RESOURCE       GetPiResource;\r
   //\r
   // Valid at runtime\r
   //\r
-  EFI_SM_MONITOR_GET_MONITOR_STATE                 GetMonitorState;\r
+  EFI_SM_MONITOR_GET_MONITOR_STATE     GetMonitorState;\r
 } EFI_SM_MONITOR_INIT_PROTOCOL;\r
 \r
-extern EFI_GUID gEfiSmMonitorInitProtocolGuid;\r
+extern EFI_GUID  gEfiSmMonitorInitProtocolGuid;\r
 \r
 #endif\r
index 13ba1feeba6b92687ba77e6ba7f9c05badb9d9f9..952767afce755ddfa22906ec443052b94b38d5a7 100644 (file)
@@ -44,7 +44,7 @@ typedef struct _EFI_SMM_CPU_SERVICE_PROTOCOL EFI_SMM_CPU_SERVICE_PROTOCOL;
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_SMM_GET_PROCESSOR_INFO) (\r
+(EFIAPI *EFI_SMM_GET_PROCESSOR_INFO)(\r
   IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,\r
   IN       UINTN                        ProcessorNumber,\r
   OUT      EFI_PROCESSOR_INFORMATION    *ProcessorInfoBuffer\r
@@ -82,7 +82,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_SMM_SWITCH_BSP) (\r
+(EFIAPI *EFI_SMM_SWITCH_BSP)(\r
   IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,\r
   IN       UINTN                        ProcessorNumber\r
   );\r
@@ -106,7 +106,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_SMM_ADD_PROCESSOR) (\r
+(EFIAPI *EFI_SMM_ADD_PROCESSOR)(\r
   IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
   IN       UINT64                        ProcessorId,\r
   OUT      UINTN                         *ProcessorNumber\r
@@ -128,7 +128,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_SMM_REMOVE_PROCESSOR) (\r
+(EFIAPI *EFI_SMM_REMOVE_PROCESSOR)(\r
   IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
   IN       UINTN                         ProcessorNumber\r
   );\r
@@ -156,7 +156,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI * EFI_SMM_WHOAMI) (\r
+(EFIAPI *EFI_SMM_WHOAMI)(\r
   IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,\r
   OUT      UINTN                        *ProcessorNumber\r
   );\r
@@ -180,7 +180,7 @@ EFI_STATUS
 **/\r
 typedef\r
 EFI_STATUS\r
-(EFIAPI *EFI_SMM_REGISTER_EXCEPTION_HANDLER) (\r
+(EFIAPI *EFI_SMM_REGISTER_EXCEPTION_HANDLER)(\r
   IN EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
   IN EFI_EXCEPTION_TYPE            ExceptionType,\r
   IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
@@ -190,14 +190,14 @@ EFI_STATUS
 //  This protocol provides CPU services from SMM.\r
 //\r
 struct _EFI_SMM_CPU_SERVICE_PROTOCOL {\r
-  EFI_SMM_GET_PROCESSOR_INFO          GetProcessorInfo;\r
-  EFI_SMM_SWITCH_BSP                  SwitchBsp;\r
-  EFI_SMM_ADD_PROCESSOR               AddProcessor;\r
-  EFI_SMM_REMOVE_PROCESSOR            RemoveProcessor;\r
-  EFI_SMM_WHOAMI                      WhoAmI;\r
-  EFI_SMM_REGISTER_EXCEPTION_HANDLER  RegisterExceptionHandler;\r
+  EFI_SMM_GET_PROCESSOR_INFO            GetProcessorInfo;\r
+  EFI_SMM_SWITCH_BSP                    SwitchBsp;\r
+  EFI_SMM_ADD_PROCESSOR                 AddProcessor;\r
+  EFI_SMM_REMOVE_PROCESSOR              RemoveProcessor;\r
+  EFI_SMM_WHOAMI                        WhoAmI;\r
+  EFI_SMM_REGISTER_EXCEPTION_HANDLER    RegisterExceptionHandler;\r
 };\r
 \r
-extern EFI_GUID gEfiSmmCpuServiceProtocolGuid;\r
+extern EFI_GUID  gEfiSmmCpuServiceProtocolGuid;\r
 \r
 #endif\r
index 689c8257772394a008b4c9521f5562062dd5089b..55498ce3ea10d208e66f1938f798be3d3df3693b 100644 (file)
@@ -11,4 +11,3 @@
 #include <Register/Intel/LocalApic.h>\r
 \r
 #endif\r
-\r
index 50891618c458b3ca8c651577e817ac89aa3fcbb9..5d925bc273f8f6c1ff0d989143a84a34fcd86518 100644 (file)
@@ -77,5 +77,5 @@ GetCpuSteppingId (
 \r
   AsmCpuid (CPUID_VERSION_INFO, &Eax.Uint32, NULL, NULL, NULL);\r
 \r
-  return (UINT8) Eax.Bits.SteppingId;\r
+  return (UINT8)Eax.Bits.SteppingId;\r
 }\r
index 7b4e730f984f443c2efd043df62174e925c80451..f9e06b2fca4588c11808a8e85f5c9f2772f5d32b 100644 (file)
@@ -44,13 +44,14 @@ LocalApicBaseAddressMsrSupported (
 \r
   AsmCpuid (1, &RegEax, NULL, NULL, NULL);\r
   FamilyId = BitFieldRead32 (RegEax, 8, 11);\r
-  if (FamilyId == 0x04 || FamilyId == 0x05) {\r
+  if ((FamilyId == 0x04) || (FamilyId == 0x05)) {\r
     //\r
     // CPUs with a FamilyId of 0x04 or 0x05 do not support the\r
     // Local APIC Base Address MSR\r
     //\r
     return FALSE;\r
   }\r
+\r
   return TRUE;\r
 }\r
 \r
@@ -78,8 +79,8 @@ GetLocalApicBaseAddress (
 \r
   ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
 \r
-  return (UINTN)(LShiftU64 ((UINT64) ApicBaseMsr.Bits.ApicBaseHi, 32)) +\r
-           (((UINTN)ApicBaseMsr.Bits.ApicBase) << 12);\r
+  return (UINTN)(LShiftU64 ((UINT64)ApicBaseMsr.Bits.ApicBaseHi, 32)) +\r
+         (((UINTN)ApicBaseMsr.Bits.ApicBase) << 12);\r
 }\r
 \r
 /**\r
@@ -93,7 +94,7 @@ GetLocalApicBaseAddress (
 VOID\r
 EFIAPI\r
 SetLocalApicBaseAddress (\r
-  IN UINTN                BaseAddress\r
+  IN UINTN  BaseAddress\r
   )\r
 {\r
   MSR_IA32_APIC_BASE_REGISTER  ApicBaseMsr;\r
@@ -109,8 +110,8 @@ SetLocalApicBaseAddress (
 \r
   ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
 \r
-  ApicBaseMsr.Bits.ApicBase   = (UINT32) (BaseAddress >> 12);\r
-  ApicBaseMsr.Bits.ApicBaseHi = (UINT32) (RShiftU64((UINT64) BaseAddress, 32));\r
+  ApicBaseMsr.Bits.ApicBase   = (UINT32)(BaseAddress >> 12);\r
+  ApicBaseMsr.Bits.ApicBaseHi = (UINT32)(RShiftU64 ((UINT64)BaseAddress, 32));\r
 \r
   AsmWriteMsr64 (MSR_IA32_APIC_BASE, ApicBaseMsr.Uint64);\r
 }\r
@@ -137,7 +138,7 @@ ReadLocalApicReg (
   ASSERT ((MmioOffset & 0xf) == 0);\r
   ASSERT (GetApicMode () == LOCAL_APIC_MODE_XAPIC);\r
 \r
-  return MmioRead32 (GetLocalApicBaseAddress() + MmioOffset);\r
+  return MmioRead32 (GetLocalApicBaseAddress () + MmioOffset);\r
 }\r
 \r
 /**\r
@@ -157,14 +158,14 @@ ReadLocalApicReg (
 VOID\r
 EFIAPI\r
 WriteLocalApicReg (\r
-  IN UINTN  MmioOffset,\r
-  IN UINT32 Value\r
+  IN UINTN   MmioOffset,\r
+  IN UINT32  Value\r
   )\r
 {\r
   ASSERT ((MmioOffset & 0xf) == 0);\r
   ASSERT (GetApicMode () == LOCAL_APIC_MODE_XAPIC);\r
 \r
-  MmioWrite32 (GetLocalApicBaseAddress() + MmioOffset, Value);\r
+  MmioWrite32 (GetLocalApicBaseAddress () + MmioOffset, Value);\r
 }\r
 \r
 /**\r
@@ -177,13 +178,13 @@ WriteLocalApicReg (
 **/\r
 VOID\r
 SendIpi (\r
-  IN UINT32          IcrLow,\r
-  IN UINT32          ApicId\r
+  IN UINT32  IcrLow,\r
+  IN UINT32  ApicId\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLowReg;\r
-  UINT32             IcrHigh;\r
-  BOOLEAN            InterruptState;\r
+  LOCAL_APIC_ICR_LOW  IcrLowReg;\r
+  UINT32              IcrHigh;\r
+  BOOLEAN             InterruptState;\r
 \r
   ASSERT (GetApicMode () == LOCAL_APIC_MODE_XAPIC);\r
   ASSERT (ApicId <= 0xff);\r
@@ -222,7 +223,6 @@ SendIpi (
   WriteLocalApicReg (XAPIC_ICR_HIGH_OFFSET, IcrHigh);\r
 \r
   SetInterruptState (InterruptState);\r
-\r
 }\r
 \r
 //\r
@@ -244,21 +244,21 @@ GetApicMode (
   )\r
 {\r
   DEBUG_CODE_BEGIN ();\r
-    {\r
-      MSR_IA32_APIC_BASE_REGISTER  ApicBaseMsr;\r
+  {\r
+    MSR_IA32_APIC_BASE_REGISTER  ApicBaseMsr;\r
 \r
+    //\r
+    // Check to see if the CPU supports the APIC Base Address MSR\r
+    //\r
+    if (LocalApicBaseAddressMsrSupported ()) {\r
+      ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
       //\r
-      // Check to see if the CPU supports the APIC Base Address MSR\r
+      // Local APIC should have been enabled\r
       //\r
-      if (LocalApicBaseAddressMsrSupported ()) {\r
-        ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
-        //\r
-        // Local APIC should have been enabled\r
-        //\r
-        ASSERT (ApicBaseMsr.Bits.EN != 0);\r
-        ASSERT (ApicBaseMsr.Bits.EXTD == 0);\r
-      }\r
+      ASSERT (ApicBaseMsr.Bits.EN != 0);\r
+      ASSERT (ApicBaseMsr.Bits.EXTD == 0);\r
     }\r
+  }\r
   DEBUG_CODE_END ();\r
   return LOCAL_APIC_MODE_XAPIC;\r
 }\r
@@ -299,9 +299,9 @@ GetInitialApicId (
   VOID\r
   )\r
 {\r
-  UINT32 ApicId;\r
-  UINT32 MaxCpuIdIndex;\r
-  UINT32 RegEbx;\r
+  UINT32  ApicId;\r
+  UINT32  MaxCpuIdIndex;\r
+  UINT32  RegEbx;\r
 \r
   ASSERT (GetApicMode () == LOCAL_APIC_MODE_XAPIC);\r
 \r
@@ -338,7 +338,7 @@ GetApicId (
   VOID\r
   )\r
 {\r
-  UINT32 ApicId;\r
+  UINT32  ApicId;\r
 \r
   ASSERT (GetApicMode () == LOCAL_APIC_MODE_XAPIC);\r
 \r
@@ -347,9 +347,10 @@ GetApicId (
     // If the initial local APIC ID is less 0x100, read APIC ID from\r
     // XAPIC_ID_OFFSET, otherwise return the initial local APIC ID.\r
     //\r
-    ApicId = ReadLocalApicReg (XAPIC_ID_OFFSET);\r
+    ApicId   = ReadLocalApicReg (XAPIC_ID_OFFSET);\r
     ApicId >>= 24;\r
   }\r
+\r
   return ApicId;\r
 }\r
 \r
@@ -378,16 +379,16 @@ GetApicVersion (
 VOID\r
 EFIAPI\r
 SendFixedIpi (\r
-  IN UINT32          ApicId,\r
-  IN UINT8           Vector\r
+  IN UINT32  ApicId,\r
+  IN UINT8   Vector\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
+  IcrLow.Uint32            = 0;\r
   IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_FIXED;\r
-  IcrLow.Bits.Level = 1;\r
-  IcrLow.Bits.Vector = Vector;\r
+  IcrLow.Bits.Level        = 1;\r
+  IcrLow.Bits.Vector       = Vector;\r
   SendIpi (IcrLow.Uint32, ApicId);\r
 }\r
 \r
@@ -401,16 +402,16 @@ SendFixedIpi (
 VOID\r
 EFIAPI\r
 SendFixedIpiAllExcludingSelf (\r
-  IN UINT8           Vector\r
+  IN UINT8  Vector\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_FIXED;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Uint32                    = 0;\r
+  IcrLow.Bits.DeliveryMode         = LOCAL_APIC_DELIVERY_MODE_FIXED;\r
+  IcrLow.Bits.Level                = 1;\r
   IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF;\r
-  IcrLow.Bits.Vector = Vector;\r
+  IcrLow.Bits.Vector               = Vector;\r
   SendIpi (IcrLow.Uint32, 0);\r
 }\r
 \r
@@ -424,14 +425,14 @@ SendFixedIpiAllExcludingSelf (
 VOID\r
 EFIAPI\r
 SendSmiIpi (\r
-  IN UINT32          ApicId\r
+  IN UINT32  ApicId\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
+  IcrLow.Uint32            = 0;\r
   IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_SMI;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Bits.Level        = 1;\r
   SendIpi (IcrLow.Uint32, ApicId);\r
 }\r
 \r
@@ -446,11 +447,11 @@ SendSmiIpiAllExcludingSelf (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_SMI;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Uint32                    = 0;\r
+  IcrLow.Bits.DeliveryMode         = LOCAL_APIC_DELIVERY_MODE_SMI;\r
+  IcrLow.Bits.Level                = 1;\r
   IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF;\r
   SendIpi (IcrLow.Uint32, 0);\r
 }\r
@@ -465,14 +466,14 @@ SendSmiIpiAllExcludingSelf (
 VOID\r
 EFIAPI\r
 SendInitIpi (\r
-  IN UINT32          ApicId\r
+  IN UINT32  ApicId\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
+  IcrLow.Uint32            = 0;\r
   IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_INIT;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Bits.Level        = 1;\r
   SendIpi (IcrLow.Uint32, ApicId);\r
 }\r
 \r
@@ -487,11 +488,11 @@ SendInitIpiAllExcludingSelf (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_INIT;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Uint32                    = 0;\r
+  IcrLow.Bits.DeliveryMode         = LOCAL_APIC_DELIVERY_MODE_INIT;\r
+  IcrLow.Bits.Level                = 1;\r
   IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF;\r
   SendIpi (IcrLow.Uint32, 0);\r
 }\r
@@ -511,21 +512,21 @@ SendInitIpiAllExcludingSelf (
 VOID\r
 EFIAPI\r
 SendInitSipiSipi (\r
-  IN UINT32          ApicId,\r
-  IN UINT32          StartupRoutine\r
+  IN UINT32  ApicId,\r
+  IN UINT32  StartupRoutine\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
   ASSERT (StartupRoutine < 0x100000);\r
   ASSERT ((StartupRoutine & 0xfff) == 0);\r
 \r
   SendInitIpi (ApicId);\r
-  MicroSecondDelay (PcdGet32(PcdCpuInitIpiDelayInMicroSeconds));\r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.Vector = (StartupRoutine >> 12);\r
+  MicroSecondDelay (PcdGet32 (PcdCpuInitIpiDelayInMicroSeconds));\r
+  IcrLow.Uint32            = 0;\r
+  IcrLow.Bits.Vector       = (StartupRoutine >> 12);\r
   IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_STARTUP;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Bits.Level        = 1;\r
   SendIpi (IcrLow.Uint32, ApicId);\r
   if (!StandardSignatureIsAuthenticAMD ()) {\r
     MicroSecondDelay (200);\r
@@ -547,20 +548,20 @@ SendInitSipiSipi (
 VOID\r
 EFIAPI\r
 SendInitSipiSipiAllExcludingSelf (\r
-  IN UINT32          StartupRoutine\r
+  IN UINT32  StartupRoutine\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
   ASSERT (StartupRoutine < 0x100000);\r
   ASSERT ((StartupRoutine & 0xfff) == 0);\r
 \r
   SendInitIpiAllExcludingSelf ();\r
-  MicroSecondDelay (PcdGet32(PcdCpuInitIpiDelayInMicroSeconds));\r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.Vector = (StartupRoutine >> 12);\r
-  IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_STARTUP;\r
-  IcrLow.Bits.Level = 1;\r
+  MicroSecondDelay (PcdGet32 (PcdCpuInitIpiDelayInMicroSeconds));\r
+  IcrLow.Uint32                    = 0;\r
+  IcrLow.Bits.Vector               = (StartupRoutine >> 12);\r
+  IcrLow.Bits.DeliveryMode         = LOCAL_APIC_DELIVERY_MODE_STARTUP;\r
+  IcrLow.Bits.Level                = 1;\r
   IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF;\r
   SendIpi (IcrLow.Uint32, 0);\r
   if (!StandardSignatureIsAuthenticAMD ()) {\r
@@ -616,13 +617,13 @@ ProgramVirtualWireMode (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_SVR      Svr;\r
-  LOCAL_APIC_LVT_LINT Lint;\r
+  LOCAL_APIC_SVR       Svr;\r
+  LOCAL_APIC_LVT_LINT  Lint;\r
 \r
   //\r
   // Enable the APIC via SVR and set the spurious interrupt to use Int 00F.\r
   //\r
-  Svr.Uint32 = ReadLocalApicReg (XAPIC_SPURIOUS_VECTOR_OFFSET);\r
+  Svr.Uint32              = ReadLocalApicReg (XAPIC_SPURIOUS_VECTOR_OFFSET);\r
   Svr.Bits.SpuriousVector = 0xf;\r
   Svr.Bits.SoftwareEnable = 1;\r
   WriteLocalApicReg (XAPIC_SPURIOUS_VECTOR_OFFSET, Svr.Uint32);\r
@@ -630,21 +631,21 @@ ProgramVirtualWireMode (
   //\r
   // Program the LINT0 vector entry as ExtInt. Not masked, edge, active high.\r
   //\r
-  Lint.Uint32 = ReadLocalApicReg (XAPIC_LVT_LINT0_OFFSET);\r
-  Lint.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_EXTINT;\r
+  Lint.Uint32                = ReadLocalApicReg (XAPIC_LVT_LINT0_OFFSET);\r
+  Lint.Bits.DeliveryMode     = LOCAL_APIC_DELIVERY_MODE_EXTINT;\r
   Lint.Bits.InputPinPolarity = 0;\r
-  Lint.Bits.TriggerMode = 0;\r
-  Lint.Bits.Mask = 0;\r
+  Lint.Bits.TriggerMode      = 0;\r
+  Lint.Bits.Mask             = 0;\r
   WriteLocalApicReg (XAPIC_LVT_LINT0_OFFSET, Lint.Uint32);\r
 \r
   //\r
   // Program the LINT0 vector entry as NMI. Not masked, edge, active high.\r
   //\r
-  Lint.Uint32 = ReadLocalApicReg (XAPIC_LVT_LINT1_OFFSET);\r
-  Lint.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_NMI;\r
+  Lint.Uint32                = ReadLocalApicReg (XAPIC_LVT_LINT1_OFFSET);\r
+  Lint.Bits.DeliveryMode     = LOCAL_APIC_DELIVERY_MODE_NMI;\r
   Lint.Bits.InputPinPolarity = 0;\r
-  Lint.Bits.TriggerMode = 0;\r
-  Lint.Bits.Mask = 0;\r
+  Lint.Bits.TriggerMode      = 0;\r
+  Lint.Bits.Mask             = 0;\r
   WriteLocalApicReg (XAPIC_LVT_LINT1_OFFSET, Lint.Uint32);\r
 }\r
 \r
@@ -659,13 +660,13 @@ DisableLvtInterrupts (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_LVT_LINT LvtLint;\r
+  LOCAL_APIC_LVT_LINT  LvtLint;\r
 \r
-  LvtLint.Uint32 = ReadLocalApicReg (XAPIC_LVT_LINT0_OFFSET);\r
+  LvtLint.Uint32    = ReadLocalApicReg (XAPIC_LVT_LINT0_OFFSET);\r
   LvtLint.Bits.Mask = 1;\r
   WriteLocalApicReg (XAPIC_LVT_LINT0_OFFSET, LvtLint.Uint32);\r
 \r
-  LvtLint.Uint32 = ReadLocalApicReg (XAPIC_LVT_LINT1_OFFSET);\r
+  LvtLint.Uint32    = ReadLocalApicReg (XAPIC_LVT_LINT1_OFFSET);\r
   LvtLint.Bits.Mask = 1;\r
   WriteLocalApicReg (XAPIC_LVT_LINT1_OFFSET, LvtLint.Uint32);\r
 }\r
@@ -712,15 +713,15 @@ GetApicTimerCurrentCount (
 VOID\r
 EFIAPI\r
 InitializeApicTimer (\r
-  IN UINTN   DivideValue,\r
-  IN UINT32  InitCount,\r
-  IN BOOLEAN PeriodicMode,\r
-  IN UINT8   Vector\r
+  IN UINTN    DivideValue,\r
+  IN UINT32   InitCount,\r
+  IN BOOLEAN  PeriodicMode,\r
+  IN UINT8    Vector\r
   )\r
 {\r
-  LOCAL_APIC_DCR       Dcr;\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
-  UINT32               Divisor;\r
+  LOCAL_APIC_DCR        Dcr;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
+  UINT32                Divisor;\r
 \r
   //\r
   // Ensure local APIC is in software-enabled state.\r
@@ -734,10 +735,10 @@ InitializeApicTimer (
 \r
   if (DivideValue != 0) {\r
     ASSERT (DivideValue <= 128);\r
-    ASSERT (DivideValue == GetPowerOfTwo32((UINT32)DivideValue));\r
+    ASSERT (DivideValue == GetPowerOfTwo32 ((UINT32)DivideValue));\r
     Divisor = (UINT32)((HighBitSet32 ((UINT32)DivideValue) - 1) & 0x7);\r
 \r
-    Dcr.Uint32 = ReadLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET);\r
+    Dcr.Uint32            = ReadLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET);\r
     Dcr.Bits.DivideValue1 = (Divisor & 0x3);\r
     Dcr.Bits.DivideValue2 = (Divisor >> 2);\r
     WriteLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET, Dcr.Uint32);\r
@@ -752,7 +753,8 @@ InitializeApicTimer (
   } else {\r
     LvtTimer.Bits.TimerMode = 0;\r
   }\r
-  LvtTimer.Bits.Mask = 0;\r
+\r
+  LvtTimer.Bits.Mask   = 0;\r
   LvtTimer.Bits.Vector = Vector;\r
   WriteLocalApicReg (XAPIC_LVT_TIMER_OFFSET, LvtTimer.Uint32);\r
 }\r
@@ -774,25 +776,25 @@ GetApicTimerState (
   OUT UINT8    *Vector  OPTIONAL\r
   )\r
 {\r
-  UINT32 Divisor;\r
-  LOCAL_APIC_DCR Dcr;\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
+  UINT32                Divisor;\r
+  LOCAL_APIC_DCR        Dcr;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
 \r
   //\r
   // Check the APIC Software Enable/Disable bit (bit 8) in Spurious-Interrupt\r
   // Vector Register.\r
   // This bit will be 1, if local APIC is software enabled.\r
   //\r
-  ASSERT ((ReadLocalApicReg(XAPIC_SPURIOUS_VECTOR_OFFSET) & BIT8) != 0);\r
+  ASSERT ((ReadLocalApicReg (XAPIC_SPURIOUS_VECTOR_OFFSET) & BIT8) != 0);\r
 \r
   if (DivideValue != NULL) {\r
-    Dcr.Uint32 = ReadLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET);\r
-    Divisor = Dcr.Bits.DivideValue1 | (Dcr.Bits.DivideValue2 << 2);\r
-    Divisor = (Divisor + 1) & 0x7;\r
+    Dcr.Uint32   = ReadLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET);\r
+    Divisor      = Dcr.Bits.DivideValue1 | (Dcr.Bits.DivideValue2 << 2);\r
+    Divisor      = (Divisor + 1) & 0x7;\r
     *DivideValue = ((UINTN)1) << Divisor;\r
   }\r
 \r
-  if (PeriodicMode != NULL || Vector != NULL) {\r
+  if ((PeriodicMode != NULL) || (Vector != NULL)) {\r
     LvtTimer.Uint32 = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
     if (PeriodicMode != NULL) {\r
       if (LvtTimer.Bits.TimerMode == 1) {\r
@@ -801,8 +803,9 @@ GetApicTimerState (
         *PeriodicMode = FALSE;\r
       }\r
     }\r
+\r
     if (Vector != NULL) {\r
-      *Vector = (UINT8) LvtTimer.Bits.Vector;\r
+      *Vector = (UINT8)LvtTimer.Bits.Vector;\r
     }\r
   }\r
 }\r
@@ -816,9 +819,9 @@ EnableApicTimerInterrupt (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
 \r
-  LvtTimer.Uint32 = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
+  LvtTimer.Uint32    = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
   LvtTimer.Bits.Mask = 0;\r
   WriteLocalApicReg (XAPIC_LVT_TIMER_OFFSET, LvtTimer.Uint32);\r
 }\r
@@ -832,9 +835,9 @@ DisableApicTimerInterrupt (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
 \r
-  LvtTimer.Uint32 = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
+  LvtTimer.Uint32    = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
   LvtTimer.Bits.Mask = 1;\r
   WriteLocalApicReg (XAPIC_LVT_TIMER_OFFSET, LvtTimer.Uint32);\r
 }\r
@@ -851,7 +854,7 @@ GetApicTimerInterruptState (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
 \r
   LvtTimer.Uint32 = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
   return (BOOLEAN)(LvtTimer.Bits.Mask == 0);\r
@@ -944,6 +947,7 @@ GetApicMsiValue (
       MsiData.Bits.Level = 1;\r
     }\r
   }\r
+\r
   return MsiData.Uint64;\r
 }\r
 \r
@@ -995,12 +999,15 @@ GetProcessorLocationByApicId (
     if (Thread != NULL) {\r
       *Thread = 0;\r
     }\r
+\r
     if (Core != NULL) {\r
       *Core = 0;\r
     }\r
+\r
     if (Package != NULL) {\r
       *Package = 0;\r
     }\r
+\r
     return;\r
   }\r
 \r
@@ -1008,7 +1015,7 @@ GetProcessorLocationByApicId (
   // Assume three-level mapping of APIC ID: Package|Core|Thread.\r
   //\r
   ThreadBits = 0;\r
-  CoreBits = 0;\r
+  CoreBits   = 0;\r
 \r
   //\r
   // Get max index of CPUID\r
@@ -1022,7 +1029,7 @@ GetProcessorLocationByApicId (
   //\r
   TopologyLeafSupported = FALSE;\r
   if (MaxStandardCpuIdIndex >= CPUID_EXTENDED_TOPOLOGY) {\r
-    AsmCpuidEx(\r
+    AsmCpuidEx (\r
       CPUID_EXTENDED_TOPOLOGY,\r
       0,\r
       &ExtendedTopologyEax.Uint32,\r
@@ -1065,6 +1072,7 @@ GetProcessorLocationByApicId (
           CoreBits = ExtendedTopologyEax.Bits.ApicIdShift - ThreadBits;\r
           break;\r
         }\r
+\r
         SubIndex++;\r
       } while (LevelType != CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_INVALID);\r
     }\r
@@ -1085,7 +1093,7 @@ GetProcessorLocationByApicId (
     //\r
     // Check for topology extensions on AMD processor\r
     //\r
-    if (StandardSignatureIsAuthenticAMD()) {\r
+    if (StandardSignatureIsAuthenticAMD ()) {\r
       if (MaxExtendedCpuIdIndex >= CPUID_AMD_PROCESSOR_TOPOLOGY) {\r
         AsmCpuid (CPUID_EXTENDED_CPU_SIG, NULL, NULL, &AmdExtendedCpuSigEcx.Uint32, NULL);\r
         if (AmdExtendedCpuSigEcx.Bits.TopologyExtensions != 0) {\r
@@ -1102,8 +1110,7 @@ GetProcessorLocationByApicId (
           MaxCoresPerPackage = MaxLogicProcessorsPerPackage / (AmdProcessorTopologyEbx.Bits.ThreadsPerCore + 1);\r
         }\r
       }\r
-    }\r
-    else {\r
+    } else {\r
       //\r
       // Extract core count based on CACHE information\r
       //\r
@@ -1115,16 +1122,18 @@ GetProcessorLocationByApicId (
       }\r
     }\r
 \r
-    ThreadBits = (UINTN)(HighBitSet32(MaxLogicProcessorsPerPackage / MaxCoresPerPackage - 1) + 1);\r
-    CoreBits = (UINTN)(HighBitSet32(MaxCoresPerPackage - 1) + 1);\r
+    ThreadBits = (UINTN)(HighBitSet32 (MaxLogicProcessorsPerPackage / MaxCoresPerPackage - 1) + 1);\r
+    CoreBits   = (UINTN)(HighBitSet32 (MaxCoresPerPackage - 1) + 1);\r
   }\r
 \r
   if (Thread != NULL) {\r
     *Thread = InitialApicId & ((1 << ThreadBits) - 1);\r
   }\r
+\r
   if (Core != NULL) {\r
     *Core = (InitialApicId >> ThreadBits) & ((1 << CoreBits) - 1);\r
   }\r
+\r
   if (Package != NULL) {\r
     *Package = (InitialApicId >> (ThreadBits + CoreBits));\r
   }\r
@@ -1158,13 +1167,13 @@ GetProcessorLocation2ByApicId (
   OUT UINT32  *Thread   OPTIONAL\r
   )\r
 {\r
-  CPUID_EXTENDED_TOPOLOGY_EAX         ExtendedTopologyEax;\r
-  CPUID_EXTENDED_TOPOLOGY_ECX         ExtendedTopologyEcx;\r
-  UINT32                              MaxStandardCpuIdIndex;\r
-  UINT32                              Index;\r
-  UINTN                               LevelType;\r
-  UINT32                              Bits[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 2];\r
-  UINT32                              *Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 2];\r
+  CPUID_EXTENDED_TOPOLOGY_EAX  ExtendedTopologyEax;\r
+  CPUID_EXTENDED_TOPOLOGY_ECX  ExtendedTopologyEcx;\r
+  UINT32                       MaxStandardCpuIdIndex;\r
+  UINT32                       Index;\r
+  UINTN                        LevelType;\r
+  UINT32                       Bits[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 2];\r
+  UINT32                       *Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 2];\r
 \r
   for (LevelType = 0; LevelType < ARRAY_SIZE (Bits); LevelType++) {\r
     Bits[LevelType] = 0;\r
@@ -1178,12 +1187,15 @@ GetProcessorLocation2ByApicId (
     if (Die != NULL) {\r
       *Die = 0;\r
     }\r
+\r
     if (Tile != NULL) {\r
       *Tile = 0;\r
     }\r
+\r
     if (Module != NULL) {\r
       *Module = 0;\r
     }\r
+\r
     GetProcessorLocationByApicId (InitialApicId, Package, Core, Thread);\r
     return;\r
   }\r
@@ -1193,7 +1205,7 @@ GetProcessorLocation2ByApicId (
   // is the preferred mechanism for enumerating topology.\r
   //\r
   for (Index = 0; ; Index++) {\r
-    AsmCpuidEx(\r
+    AsmCpuidEx (\r
       CPUID_V2_EXTENDED_TOPOLOGY,\r
       Index,\r
       &ExtendedTopologyEax.Uint32,\r
@@ -1211,6 +1223,7 @@ GetProcessorLocation2ByApicId (
     if (LevelType == CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_INVALID) {\r
       break;\r
     }\r
+\r
     ASSERT (LevelType < ARRAY_SIZE (Bits));\r
     Bits[LevelType] = ExtendedTopologyEax.Bits.ApicIdShift;\r
   }\r
@@ -1226,18 +1239,19 @@ GetProcessorLocation2ByApicId (
   }\r
 \r
   Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 1] = Package;\r
-  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE    ] = Die;\r
-  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_TILE   ] = Tile;\r
-  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_MODULE ] = Module;\r
-  Location[CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_CORE   ]    = Core;\r
-  Location[CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_SMT    ]    = Thread;\r
+  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE]     = Die;\r
+  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_TILE]    = Tile;\r
+  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_MODULE = Module;\r
+  Location[CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_CORE]       = Core;\r
+  Location[CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_SMT]        = Thread;\r
 \r
   Bits[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 1] = 32;\r
 \r
   for ( LevelType = CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_SMT\r
-      ; LevelType <= CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 1\r
-      ; LevelType ++\r
-      ) {\r
+        ; LevelType <= CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 1\r
+        ; LevelType++\r
+        )\r
+  {\r
     if (Location[LevelType] != NULL) {\r
       //\r
       // Bits[i] holds the number of bits to shift right on x2APIC ID to get a unique\r
index cdcbca04619119a2b0012e347647acd1ec65f6cd..aaa42ff8450b575e541a30ed373007aae9169196 100644 (file)
@@ -45,13 +45,14 @@ LocalApicBaseAddressMsrSupported (
 \r
   AsmCpuid (1, &RegEax, NULL, NULL, NULL);\r
   FamilyId = BitFieldRead32 (RegEax, 8, 11);\r
-  if (FamilyId == 0x04 || FamilyId == 0x05) {\r
+  if ((FamilyId == 0x04) || (FamilyId == 0x05)) {\r
     //\r
     // CPUs with a FamilyId of 0x04 or 0x05 do not support the\r
     // Local APIC Base Address MSR\r
     //\r
     return FALSE;\r
   }\r
+\r
   return TRUE;\r
 }\r
 \r
@@ -79,8 +80,8 @@ GetLocalApicBaseAddress (
 \r
   ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
 \r
-  return (UINTN)(LShiftU64 ((UINT64) ApicBaseMsr.Bits.ApicBaseHi, 32)) +\r
-           (((UINTN)ApicBaseMsr.Bits.ApicBase) << 12);\r
+  return (UINTN)(LShiftU64 ((UINT64)ApicBaseMsr.Bits.ApicBaseHi, 32)) +\r
+         (((UINTN)ApicBaseMsr.Bits.ApicBase) << 12);\r
 }\r
 \r
 /**\r
@@ -94,7 +95,7 @@ GetLocalApicBaseAddress (
 VOID\r
 EFIAPI\r
 SetLocalApicBaseAddress (\r
-  IN UINTN                BaseAddress\r
+  IN UINTN  BaseAddress\r
   )\r
 {\r
   MSR_IA32_APIC_BASE_REGISTER  ApicBaseMsr;\r
@@ -110,8 +111,8 @@ SetLocalApicBaseAddress (
 \r
   ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
 \r
-  ApicBaseMsr.Bits.ApicBase   = (UINT32) (BaseAddress >> 12);\r
-  ApicBaseMsr.Bits.ApicBaseHi = (UINT32) (RShiftU64((UINT64) BaseAddress, 32));\r
+  ApicBaseMsr.Bits.ApicBase   = (UINT32)(BaseAddress >> 12);\r
+  ApicBaseMsr.Bits.ApicBaseHi = (UINT32)(RShiftU64 ((UINT64)BaseAddress, 32));\r
 \r
   AsmWriteMsr64 (MSR_IA32_APIC_BASE, ApicBaseMsr.Uint64);\r
 }\r
@@ -135,12 +136,12 @@ ReadLocalApicReg (
   IN UINTN  MmioOffset\r
   )\r
 {\r
-  UINT32 MsrIndex;\r
+  UINT32  MsrIndex;\r
 \r
   ASSERT ((MmioOffset & 0xf) == 0);\r
 \r
   if (GetApicMode () == LOCAL_APIC_MODE_XAPIC) {\r
-    return MmioRead32 (GetLocalApicBaseAddress() + MmioOffset);\r
+    return MmioRead32 (GetLocalApicBaseAddress () + MmioOffset);\r
   } else {\r
     //\r
     // DFR is not supported in x2APIC mode.\r
@@ -174,16 +175,16 @@ ReadLocalApicReg (
 VOID\r
 EFIAPI\r
 WriteLocalApicReg (\r
-  IN UINTN  MmioOffset,\r
-  IN UINT32 Value\r
+  IN UINTN   MmioOffset,\r
+  IN UINT32  Value\r
   )\r
 {\r
-  UINT32 MsrIndex;\r
+  UINT32  MsrIndex;\r
 \r
   ASSERT ((MmioOffset & 0xf) == 0);\r
 \r
   if (GetApicMode () == LOCAL_APIC_MODE_XAPIC) {\r
-    MmioWrite32 (GetLocalApicBaseAddress() + MmioOffset, Value);\r
+    MmioWrite32 (GetLocalApicBaseAddress () + MmioOffset, Value);\r
   } else {\r
     //\r
     // DFR is not supported in x2APIC mode.\r
@@ -216,15 +217,15 @@ WriteLocalApicReg (
 **/\r
 VOID\r
 SendIpi (\r
-  IN UINT32          IcrLow,\r
-  IN UINT32          ApicId\r
+  IN UINT32  IcrLow,\r
+  IN UINT32  ApicId\r
   )\r
 {\r
-  UINT64             MsrValue;\r
-  LOCAL_APIC_ICR_LOW IcrLowReg;\r
-  UINTN              LocalApciBaseAddress;\r
-  UINT32             IcrHigh;\r
-  BOOLEAN            InterruptState;\r
+  UINT64              MsrValue;\r
+  LOCAL_APIC_ICR_LOW  IcrLowReg;\r
+  UINTN               LocalApciBaseAddress;\r
+  UINT32              IcrHigh;\r
+  BOOLEAN             InterruptState;\r
 \r
   //\r
   // Legacy APIC or X2APIC?\r
@@ -237,7 +238,7 @@ SendIpi (
     //\r
     // Get base address of this LAPIC\r
     //\r
-    LocalApciBaseAddress = GetLocalApicBaseAddress();\r
+    LocalApciBaseAddress = GetLocalApicBaseAddress ();\r
 \r
     //\r
     // Save existing contents of ICR high 32 bits\r
@@ -271,13 +272,12 @@ SendIpi (
     MmioWrite32 (LocalApciBaseAddress + XAPIC_ICR_HIGH_OFFSET, IcrHigh);\r
 \r
     SetInterruptState (InterruptState);\r
-\r
   } else {\r
     //\r
     // For x2APIC, A single MSR write to the Interrupt Command Register is required for dispatching an\r
     // interrupt in x2APIC mode.\r
     //\r
-    MsrValue = LShiftU64 ((UINT64) ApicId, 32) | IcrLow;\r
+    MsrValue = LShiftU64 ((UINT64)ApicId, 32) | IcrLow;\r
     AsmWriteMsr64 (X2APIC_MSR_ICR_ADDRESS, MsrValue);\r
   }\r
 }\r
@@ -354,7 +354,7 @@ SetApicMode (
       case LOCAL_APIC_MODE_XAPIC:\r
         break;\r
       case LOCAL_APIC_MODE_X2APIC:\r
-        ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
+        ApicBaseMsr.Uint64    = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
         ApicBaseMsr.Bits.EXTD = 1;\r
         AsmWriteMsr64 (MSR_IA32_APIC_BASE, ApicBaseMsr.Uint64);\r
         break;\r
@@ -368,9 +368,9 @@ SetApicMode (
         //  Transition from x2APIC mode to xAPIC mode is a two-step process:\r
         //    x2APIC -> Local APIC disabled -> xAPIC\r
         //\r
-        ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
+        ApicBaseMsr.Uint64    = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
         ApicBaseMsr.Bits.EXTD = 0;\r
-        ApicBaseMsr.Bits.EN = 0;\r
+        ApicBaseMsr.Bits.EN   = 0;\r
         AsmWriteMsr64 (MSR_IA32_APIC_BASE, ApicBaseMsr.Uint64);\r
         ApicBaseMsr.Bits.EN = 1;\r
         AsmWriteMsr64 (MSR_IA32_APIC_BASE, ApicBaseMsr.Uint64);\r
@@ -398,9 +398,9 @@ GetInitialApicId (
   VOID\r
   )\r
 {\r
-  UINT32 ApicId;\r
-  UINT32 MaxCpuIdIndex;\r
-  UINT32 RegEbx;\r
+  UINT32  ApicId;\r
+  UINT32  MaxCpuIdIndex;\r
+  UINT32  RegEbx;\r
 \r
   if (GetApicMode () == LOCAL_APIC_MODE_XAPIC) {\r
     //\r
@@ -419,6 +419,7 @@ GetInitialApicId (
         return ApicId;\r
       }\r
     }\r
+\r
     AsmCpuid (CPUID_VERSION_INFO, NULL, &RegEbx, NULL, NULL);\r
     return RegEbx >> 24;\r
   } else {\r
@@ -437,8 +438,8 @@ GetApicId (
   VOID\r
   )\r
 {\r
-  UINT32 ApicId;\r
-  UINT32 InitApicId;\r
+  UINT32  ApicId;\r
+  UINT32  InitApicId;\r
 \r
   ApicId = ReadLocalApicReg (XAPIC_ID_OFFSET);\r
   if (GetApicMode () == LOCAL_APIC_MODE_XAPIC) {\r
@@ -473,16 +474,16 @@ GetApicVersion (
 VOID\r
 EFIAPI\r
 SendFixedIpi (\r
-  IN UINT32          ApicId,\r
-  IN UINT8           Vector\r
+  IN UINT32  ApicId,\r
+  IN UINT8   Vector\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
+  IcrLow.Uint32            = 0;\r
   IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_FIXED;\r
-  IcrLow.Bits.Level = 1;\r
-  IcrLow.Bits.Vector = Vector;\r
+  IcrLow.Bits.Level        = 1;\r
+  IcrLow.Bits.Vector       = Vector;\r
   SendIpi (IcrLow.Uint32, ApicId);\r
 }\r
 \r
@@ -496,16 +497,16 @@ SendFixedIpi (
 VOID\r
 EFIAPI\r
 SendFixedIpiAllExcludingSelf (\r
-  IN UINT8           Vector\r
+  IN UINT8  Vector\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_FIXED;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Uint32                    = 0;\r
+  IcrLow.Bits.DeliveryMode         = LOCAL_APIC_DELIVERY_MODE_FIXED;\r
+  IcrLow.Bits.Level                = 1;\r
   IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF;\r
-  IcrLow.Bits.Vector = Vector;\r
+  IcrLow.Bits.Vector               = Vector;\r
   SendIpi (IcrLow.Uint32, 0);\r
 }\r
 \r
@@ -519,14 +520,14 @@ SendFixedIpiAllExcludingSelf (
 VOID\r
 EFIAPI\r
 SendSmiIpi (\r
-  IN UINT32          ApicId\r
+  IN UINT32  ApicId\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
+  IcrLow.Uint32            = 0;\r
   IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_SMI;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Bits.Level        = 1;\r
   SendIpi (IcrLow.Uint32, ApicId);\r
 }\r
 \r
@@ -541,11 +542,11 @@ SendSmiIpiAllExcludingSelf (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_SMI;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Uint32                    = 0;\r
+  IcrLow.Bits.DeliveryMode         = LOCAL_APIC_DELIVERY_MODE_SMI;\r
+  IcrLow.Bits.Level                = 1;\r
   IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF;\r
   SendIpi (IcrLow.Uint32, 0);\r
 }\r
@@ -560,14 +561,14 @@ SendSmiIpiAllExcludingSelf (
 VOID\r
 EFIAPI\r
 SendInitIpi (\r
-  IN UINT32          ApicId\r
+  IN UINT32  ApicId\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
+  IcrLow.Uint32            = 0;\r
   IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_INIT;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Bits.Level        = 1;\r
   SendIpi (IcrLow.Uint32, ApicId);\r
 }\r
 \r
@@ -582,11 +583,11 @@ SendInitIpiAllExcludingSelf (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_INIT;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Uint32                    = 0;\r
+  IcrLow.Bits.DeliveryMode         = LOCAL_APIC_DELIVERY_MODE_INIT;\r
+  IcrLow.Bits.Level                = 1;\r
   IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF;\r
   SendIpi (IcrLow.Uint32, 0);\r
 }\r
@@ -606,21 +607,21 @@ SendInitIpiAllExcludingSelf (
 VOID\r
 EFIAPI\r
 SendInitSipiSipi (\r
-  IN UINT32          ApicId,\r
-  IN UINT32          StartupRoutine\r
+  IN UINT32  ApicId,\r
+  IN UINT32  StartupRoutine\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
   ASSERT (StartupRoutine < 0x100000);\r
   ASSERT ((StartupRoutine & 0xfff) == 0);\r
 \r
   SendInitIpi (ApicId);\r
-  MicroSecondDelay (PcdGet32(PcdCpuInitIpiDelayInMicroSeconds));\r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.Vector = (StartupRoutine >> 12);\r
+  MicroSecondDelay (PcdGet32 (PcdCpuInitIpiDelayInMicroSeconds));\r
+  IcrLow.Uint32            = 0;\r
+  IcrLow.Bits.Vector       = (StartupRoutine >> 12);\r
   IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_STARTUP;\r
-  IcrLow.Bits.Level = 1;\r
+  IcrLow.Bits.Level        = 1;\r
   SendIpi (IcrLow.Uint32, ApicId);\r
   if (!StandardSignatureIsAuthenticAMD ()) {\r
     MicroSecondDelay (200);\r
@@ -642,20 +643,20 @@ SendInitSipiSipi (
 VOID\r
 EFIAPI\r
 SendInitSipiSipiAllExcludingSelf (\r
-  IN UINT32          StartupRoutine\r
+  IN UINT32  StartupRoutine\r
   )\r
 {\r
-  LOCAL_APIC_ICR_LOW IcrLow;\r
+  LOCAL_APIC_ICR_LOW  IcrLow;\r
 \r
   ASSERT (StartupRoutine < 0x100000);\r
   ASSERT ((StartupRoutine & 0xfff) == 0);\r
 \r
   SendInitIpiAllExcludingSelf ();\r
-  MicroSecondDelay (PcdGet32(PcdCpuInitIpiDelayInMicroSeconds));\r
-  IcrLow.Uint32 = 0;\r
-  IcrLow.Bits.Vector = (StartupRoutine >> 12);\r
-  IcrLow.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_STARTUP;\r
-  IcrLow.Bits.Level = 1;\r
+  MicroSecondDelay (PcdGet32 (PcdCpuInitIpiDelayInMicroSeconds));\r
+  IcrLow.Uint32                    = 0;\r
+  IcrLow.Bits.Vector               = (StartupRoutine >> 12);\r
+  IcrLow.Bits.DeliveryMode         = LOCAL_APIC_DELIVERY_MODE_STARTUP;\r
+  IcrLow.Bits.Level                = 1;\r
   IcrLow.Bits.DestinationShorthand = LOCAL_APIC_DESTINATION_SHORTHAND_ALL_EXCLUDING_SELF;\r
   SendIpi (IcrLow.Uint32, 0);\r
   if (!StandardSignatureIsAuthenticAMD ()) {\r
@@ -711,13 +712,13 @@ ProgramVirtualWireMode (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_SVR      Svr;\r
-  LOCAL_APIC_LVT_LINT Lint;\r
+  LOCAL_APIC_SVR       Svr;\r
+  LOCAL_APIC_LVT_LINT  Lint;\r
 \r
   //\r
   // Enable the APIC via SVR and set the spurious interrupt to use Int 00F.\r
   //\r
-  Svr.Uint32 = ReadLocalApicReg (XAPIC_SPURIOUS_VECTOR_OFFSET);\r
+  Svr.Uint32              = ReadLocalApicReg (XAPIC_SPURIOUS_VECTOR_OFFSET);\r
   Svr.Bits.SpuriousVector = 0xf;\r
   Svr.Bits.SoftwareEnable = 1;\r
   WriteLocalApicReg (XAPIC_SPURIOUS_VECTOR_OFFSET, Svr.Uint32);\r
@@ -725,21 +726,21 @@ ProgramVirtualWireMode (
   //\r
   // Program the LINT0 vector entry as ExtInt. Not masked, edge, active high.\r
   //\r
-  Lint.Uint32 = ReadLocalApicReg (XAPIC_LVT_LINT0_OFFSET);\r
-  Lint.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_EXTINT;\r
+  Lint.Uint32                = ReadLocalApicReg (XAPIC_LVT_LINT0_OFFSET);\r
+  Lint.Bits.DeliveryMode     = LOCAL_APIC_DELIVERY_MODE_EXTINT;\r
   Lint.Bits.InputPinPolarity = 0;\r
-  Lint.Bits.TriggerMode = 0;\r
-  Lint.Bits.Mask = 0;\r
+  Lint.Bits.TriggerMode      = 0;\r
+  Lint.Bits.Mask             = 0;\r
   WriteLocalApicReg (XAPIC_LVT_LINT0_OFFSET, Lint.Uint32);\r
 \r
   //\r
   // Program the LINT0 vector entry as NMI. Not masked, edge, active high.\r
   //\r
-  Lint.Uint32 = ReadLocalApicReg (XAPIC_LVT_LINT1_OFFSET);\r
-  Lint.Bits.DeliveryMode = LOCAL_APIC_DELIVERY_MODE_NMI;\r
+  Lint.Uint32                = ReadLocalApicReg (XAPIC_LVT_LINT1_OFFSET);\r
+  Lint.Bits.DeliveryMode     = LOCAL_APIC_DELIVERY_MODE_NMI;\r
   Lint.Bits.InputPinPolarity = 0;\r
-  Lint.Bits.TriggerMode = 0;\r
-  Lint.Bits.Mask = 0;\r
+  Lint.Bits.TriggerMode      = 0;\r
+  Lint.Bits.Mask             = 0;\r
   WriteLocalApicReg (XAPIC_LVT_LINT1_OFFSET, Lint.Uint32);\r
 }\r
 \r
@@ -754,13 +755,13 @@ DisableLvtInterrupts (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_LVT_LINT LvtLint;\r
+  LOCAL_APIC_LVT_LINT  LvtLint;\r
 \r
-  LvtLint.Uint32 = ReadLocalApicReg (XAPIC_LVT_LINT0_OFFSET);\r
+  LvtLint.Uint32    = ReadLocalApicReg (XAPIC_LVT_LINT0_OFFSET);\r
   LvtLint.Bits.Mask = 1;\r
   WriteLocalApicReg (XAPIC_LVT_LINT0_OFFSET, LvtLint.Uint32);\r
 \r
-  LvtLint.Uint32 = ReadLocalApicReg (XAPIC_LVT_LINT1_OFFSET);\r
+  LvtLint.Uint32    = ReadLocalApicReg (XAPIC_LVT_LINT1_OFFSET);\r
   LvtLint.Bits.Mask = 1;\r
   WriteLocalApicReg (XAPIC_LVT_LINT1_OFFSET, LvtLint.Uint32);\r
 }\r
@@ -807,15 +808,15 @@ GetApicTimerCurrentCount (
 VOID\r
 EFIAPI\r
 InitializeApicTimer (\r
-  IN UINTN   DivideValue,\r
-  IN UINT32  InitCount,\r
-  IN BOOLEAN PeriodicMode,\r
-  IN UINT8   Vector\r
+  IN UINTN    DivideValue,\r
+  IN UINT32   InitCount,\r
+  IN BOOLEAN  PeriodicMode,\r
+  IN UINT8    Vector\r
   )\r
 {\r
-  LOCAL_APIC_DCR       Dcr;\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
-  UINT32               Divisor;\r
+  LOCAL_APIC_DCR        Dcr;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
+  UINT32                Divisor;\r
 \r
   //\r
   // Ensure local APIC is in software-enabled state.\r
@@ -829,10 +830,10 @@ InitializeApicTimer (
 \r
   if (DivideValue != 0) {\r
     ASSERT (DivideValue <= 128);\r
-    ASSERT (DivideValue == GetPowerOfTwo32((UINT32)DivideValue));\r
+    ASSERT (DivideValue == GetPowerOfTwo32 ((UINT32)DivideValue));\r
     Divisor = (UINT32)((HighBitSet32 ((UINT32)DivideValue) - 1) & 0x7);\r
 \r
-    Dcr.Uint32 = ReadLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET);\r
+    Dcr.Uint32            = ReadLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET);\r
     Dcr.Bits.DivideValue1 = (Divisor & 0x3);\r
     Dcr.Bits.DivideValue2 = (Divisor >> 2);\r
     WriteLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET, Dcr.Uint32);\r
@@ -847,7 +848,8 @@ InitializeApicTimer (
   } else {\r
     LvtTimer.Bits.TimerMode = 0;\r
   }\r
-  LvtTimer.Bits.Mask = 0;\r
+\r
+  LvtTimer.Bits.Mask   = 0;\r
   LvtTimer.Bits.Vector = Vector;\r
   WriteLocalApicReg (XAPIC_LVT_TIMER_OFFSET, LvtTimer.Uint32);\r
 }\r
@@ -869,25 +871,25 @@ GetApicTimerState (
   OUT UINT8    *Vector  OPTIONAL\r
   )\r
 {\r
-  UINT32 Divisor;\r
-  LOCAL_APIC_DCR Dcr;\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
+  UINT32                Divisor;\r
+  LOCAL_APIC_DCR        Dcr;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
 \r
   //\r
   // Check the APIC Software Enable/Disable bit (bit 8) in Spurious-Interrupt\r
   // Vector Register.\r
   // This bit will be 1, if local APIC is software enabled.\r
   //\r
-  ASSERT ((ReadLocalApicReg(XAPIC_SPURIOUS_VECTOR_OFFSET) & BIT8) != 0);\r
+  ASSERT ((ReadLocalApicReg (XAPIC_SPURIOUS_VECTOR_OFFSET) & BIT8) != 0);\r
 \r
   if (DivideValue != NULL) {\r
-    Dcr.Uint32 = ReadLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET);\r
-    Divisor = Dcr.Bits.DivideValue1 | (Dcr.Bits.DivideValue2 << 2);\r
-    Divisor = (Divisor + 1) & 0x7;\r
+    Dcr.Uint32   = ReadLocalApicReg (XAPIC_TIMER_DIVIDE_CONFIGURATION_OFFSET);\r
+    Divisor      = Dcr.Bits.DivideValue1 | (Dcr.Bits.DivideValue2 << 2);\r
+    Divisor      = (Divisor + 1) & 0x7;\r
     *DivideValue = ((UINTN)1) << Divisor;\r
   }\r
 \r
-  if (PeriodicMode != NULL || Vector != NULL) {\r
+  if ((PeriodicMode != NULL) || (Vector != NULL)) {\r
     LvtTimer.Uint32 = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
     if (PeriodicMode != NULL) {\r
       if (LvtTimer.Bits.TimerMode == 1) {\r
@@ -896,8 +898,9 @@ GetApicTimerState (
         *PeriodicMode = FALSE;\r
       }\r
     }\r
+\r
     if (Vector != NULL) {\r
-      *Vector = (UINT8) LvtTimer.Bits.Vector;\r
+      *Vector = (UINT8)LvtTimer.Bits.Vector;\r
     }\r
   }\r
 }\r
@@ -911,9 +914,9 @@ EnableApicTimerInterrupt (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
 \r
-  LvtTimer.Uint32 = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
+  LvtTimer.Uint32    = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
   LvtTimer.Bits.Mask = 0;\r
   WriteLocalApicReg (XAPIC_LVT_TIMER_OFFSET, LvtTimer.Uint32);\r
 }\r
@@ -927,9 +930,9 @@ DisableApicTimerInterrupt (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
 \r
-  LvtTimer.Uint32 = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
+  LvtTimer.Uint32    = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
   LvtTimer.Bits.Mask = 1;\r
   WriteLocalApicReg (XAPIC_LVT_TIMER_OFFSET, LvtTimer.Uint32);\r
 }\r
@@ -946,7 +949,7 @@ GetApicTimerInterruptState (
   VOID\r
   )\r
 {\r
-  LOCAL_APIC_LVT_TIMER LvtTimer;\r
+  LOCAL_APIC_LVT_TIMER  LvtTimer;\r
 \r
   LvtTimer.Uint32 = ReadLocalApicReg (XAPIC_LVT_TIMER_OFFSET);\r
   return (BOOLEAN)(LvtTimer.Bits.Mask == 0);\r
@@ -1039,6 +1042,7 @@ GetApicMsiValue (
       MsiData.Bits.Level = 1;\r
     }\r
   }\r
+\r
   return MsiData.Uint64;\r
 }\r
 \r
@@ -1090,12 +1094,15 @@ GetProcessorLocationByApicId (
     if (Thread != NULL) {\r
       *Thread = 0;\r
     }\r
+\r
     if (Core != NULL) {\r
       *Core = 0;\r
     }\r
+\r
     if (Package != NULL) {\r
       *Package = 0;\r
     }\r
+\r
     return;\r
   }\r
 \r
@@ -1103,7 +1110,7 @@ GetProcessorLocationByApicId (
   // Assume three-level mapping of APIC ID: Package|Core|Thread.\r
   //\r
   ThreadBits = 0;\r
-  CoreBits = 0;\r
+  CoreBits   = 0;\r
 \r
   //\r
   // Get max index of CPUID\r
@@ -1117,7 +1124,7 @@ GetProcessorLocationByApicId (
   //\r
   TopologyLeafSupported = FALSE;\r
   if (MaxStandardCpuIdIndex >= CPUID_EXTENDED_TOPOLOGY) {\r
-    AsmCpuidEx(\r
+    AsmCpuidEx (\r
       CPUID_EXTENDED_TOPOLOGY,\r
       0,\r
       &ExtendedTopologyEax.Uint32,\r
@@ -1160,6 +1167,7 @@ GetProcessorLocationByApicId (
           CoreBits = ExtendedTopologyEax.Bits.ApicIdShift - ThreadBits;\r
           break;\r
         }\r
+\r
         SubIndex++;\r
       } while (LevelType != CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_INVALID);\r
     }\r
@@ -1180,7 +1188,7 @@ GetProcessorLocationByApicId (
     //\r
     // Check for topology extensions on AMD processor\r
     //\r
-    if (StandardSignatureIsAuthenticAMD()) {\r
+    if (StandardSignatureIsAuthenticAMD ()) {\r
       if (MaxExtendedCpuIdIndex >= CPUID_AMD_PROCESSOR_TOPOLOGY) {\r
         AsmCpuid (CPUID_EXTENDED_CPU_SIG, NULL, NULL, &AmdExtendedCpuSigEcx.Uint32, NULL);\r
         if (AmdExtendedCpuSigEcx.Bits.TopologyExtensions != 0) {\r
@@ -1197,8 +1205,7 @@ GetProcessorLocationByApicId (
           MaxCoresPerPackage = MaxLogicProcessorsPerPackage / (AmdProcessorTopologyEbx.Bits.ThreadsPerCore + 1);\r
         }\r
       }\r
-    }\r
-    else {\r
+    } else {\r
       //\r
       // Extract core count based on CACHE information\r
       //\r
@@ -1210,16 +1217,18 @@ GetProcessorLocationByApicId (
       }\r
     }\r
 \r
-    ThreadBits = (UINTN)(HighBitSet32(MaxLogicProcessorsPerPackage / MaxCoresPerPackage - 1) + 1);\r
-    CoreBits = (UINTN)(HighBitSet32(MaxCoresPerPackage - 1) + 1);\r
+    ThreadBits = (UINTN)(HighBitSet32 (MaxLogicProcessorsPerPackage / MaxCoresPerPackage - 1) + 1);\r
+    CoreBits   = (UINTN)(HighBitSet32 (MaxCoresPerPackage - 1) + 1);\r
   }\r
 \r
   if (Thread != NULL) {\r
     *Thread = InitialApicId & ((1 << ThreadBits) - 1);\r
   }\r
+\r
   if (Core != NULL) {\r
     *Core = (InitialApicId >> ThreadBits) & ((1 << CoreBits) - 1);\r
   }\r
+\r
   if (Package != NULL) {\r
     *Package = (InitialApicId >> (ThreadBits + CoreBits));\r
   }\r
@@ -1253,13 +1262,13 @@ GetProcessorLocation2ByApicId (
   OUT UINT32  *Thread   OPTIONAL\r
   )\r
 {\r
-  CPUID_EXTENDED_TOPOLOGY_EAX         ExtendedTopologyEax;\r
-  CPUID_EXTENDED_TOPOLOGY_ECX         ExtendedTopologyEcx;\r
-  UINT32                              MaxStandardCpuIdIndex;\r
-  UINT32                              Index;\r
-  UINTN                               LevelType;\r
-  UINT32                              Bits[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 2];\r
-  UINT32                              *Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 2];\r
+  CPUID_EXTENDED_TOPOLOGY_EAX  ExtendedTopologyEax;\r
+  CPUID_EXTENDED_TOPOLOGY_ECX  ExtendedTopologyEcx;\r
+  UINT32                       MaxStandardCpuIdIndex;\r
+  UINT32                       Index;\r
+  UINTN                        LevelType;\r
+  UINT32                       Bits[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 2];\r
+  UINT32                       *Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 2];\r
 \r
   for (LevelType = 0; LevelType < ARRAY_SIZE (Bits); LevelType++) {\r
     Bits[LevelType] = 0;\r
@@ -1273,12 +1282,15 @@ GetProcessorLocation2ByApicId (
     if (Die != NULL) {\r
       *Die = 0;\r
     }\r
+\r
     if (Tile != NULL) {\r
       *Tile = 0;\r
     }\r
+\r
     if (Module != NULL) {\r
       *Module = 0;\r
     }\r
+\r
     GetProcessorLocationByApicId (InitialApicId, Package, Core, Thread);\r
     return;\r
   }\r
@@ -1288,7 +1300,7 @@ GetProcessorLocation2ByApicId (
   // is the preferred mechanism for enumerating topology.\r
   //\r
   for (Index = 0; ; Index++) {\r
-    AsmCpuidEx(\r
+    AsmCpuidEx (\r
       CPUID_V2_EXTENDED_TOPOLOGY,\r
       Index,\r
       &ExtendedTopologyEax.Uint32,\r
@@ -1306,6 +1318,7 @@ GetProcessorLocation2ByApicId (
     if (LevelType == CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_INVALID) {\r
       break;\r
     }\r
+\r
     ASSERT (LevelType < ARRAY_SIZE (Bits));\r
     Bits[LevelType] = ExtendedTopologyEax.Bits.ApicIdShift;\r
   }\r
@@ -1321,18 +1334,19 @@ GetProcessorLocation2ByApicId (
   }\r
 \r
   Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 1] = Package;\r
-  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE    ] = Die;\r
-  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_TILE   ] = Tile;\r
-  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_MODULE ] = Module;\r
-  Location[CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_CORE   ]    = Core;\r
-  Location[CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_SMT    ]    = Thread;\r
+  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE]     = Die;\r
+  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_TILE]    = Tile;\r
+  Location[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_MODULE = Module;\r
+  Location[CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_CORE]       = Core;\r
+  Location[CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_SMT]        = Thread;\r
 \r
   Bits[CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 1] = 32;\r
 \r
   for ( LevelType = CPUID_EXTENDED_TOPOLOGY_LEVEL_TYPE_SMT\r
-      ; LevelType <= CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 1\r
-      ; LevelType ++\r
-      ) {\r
+        ; LevelType <= CPUID_V2_EXTENDED_TOPOLOGY_LEVEL_TYPE_DIE + 1\r
+        ; LevelType++\r
+        )\r
+  {\r
     if (Location[LevelType] != NULL) {\r
       //\r
       // Bits[i] holds the number of bits to shift right on x2APIC ID to get a unique\r
index f4fcee39e97ddc17d6b69c12d0dc1e9a9b3929a3..c7973735e15d41ed9dcd71c1809a8ce0e3dcb54f 100644 (file)
 **/\r
 VOID\r
 CpuCacheInfoPrintCpuCacheInfoTable (\r
-  IN CPU_CACHE_INFO         *CpuCacheInfo,\r
-  IN UINTN                  CpuCacheInfoCount\r
+  IN CPU_CACHE_INFO  *CpuCacheInfo,\r
+  IN UINTN           CpuCacheInfoCount\r
   )\r
 {\r
-  UINTN                     Index;\r
+  UINTN  Index;\r
 \r
   DEBUG ((DEBUG_INFO, "+-------+--------------------------------------------------------------------------------------+\n"));\r
   DEBUG ((DEBUG_INFO, "| Index | Packge  CoreType  CacheLevel  CacheType  CacheWays (FA|DM) CacheSizeinKB  CacheCount |\n"));\r
   DEBUG ((DEBUG_INFO, "+-------+--------------------------------------------------------------------------------------+\n"));\r
 \r
   for (Index = 0; Index < CpuCacheInfoCount; Index++) {\r
-    DEBUG ((DEBUG_INFO, "| %4x  | %4x       %2x        %2x          %2x       %4x     ( %x| %x) %8x         %4x     |\n",\r
-        Index, CpuCacheInfo[Index].Package, CpuCacheInfo[Index].CoreType, CpuCacheInfo[Index].CacheLevel,\r
-        CpuCacheInfo[Index].CacheType, CpuCacheInfo[Index].CacheWays, CpuCacheInfo[Index].FullyAssociativeCache,\r
-        CpuCacheInfo[Index].DirectMappedCache, CpuCacheInfo[Index].CacheSizeinKB, CpuCacheInfo[Index].CacheCount));\r
+    DEBUG ((\r
+      DEBUG_INFO,\r
+      "| %4x  | %4x       %2x        %2x          %2x       %4x     ( %x| %x) %8x         %4x     |\n",\r
+      Index,\r
+      CpuCacheInfo[Index].Package,\r
+      CpuCacheInfo[Index].CoreType,\r
+      CpuCacheInfo[Index].CacheLevel,\r
+      CpuCacheInfo[Index].CacheType,\r
+      CpuCacheInfo[Index].CacheWays,\r
+      CpuCacheInfo[Index].FullyAssociativeCache,\r
+      CpuCacheInfo[Index].DirectMappedCache,\r
+      CpuCacheInfo[Index].CacheSizeinKB,\r
+      CpuCacheInfo[Index].CacheCount\r
+      ));\r
   }\r
 \r
   DEBUG ((DEBUG_INFO, "+-------+--------------------------------------------------------------------------------------+\n"));\r
@@ -50,24 +60,24 @@ CpuCacheInfoPrintCpuCacheInfoTable (
 INTN\r
 EFIAPI\r
 CpuCacheInfoCompare (\r
-  IN CONST VOID             *Buffer1,\r
-  IN CONST VOID             *Buffer2\r
+  IN CONST VOID  *Buffer1,\r
+  IN CONST VOID  *Buffer2\r
   )\r
 {\r
-  CPU_CACHE_INFO_COMPARATOR Comparator1, Comparator2;\r
+  CPU_CACHE_INFO_COMPARATOR  Comparator1, Comparator2;\r
 \r
   ZeroMem (&Comparator1, sizeof (Comparator1));\r
   ZeroMem (&Comparator2, sizeof (Comparator2));\r
 \r
-  Comparator1.Bits.Package    = ((CPU_CACHE_INFO*)Buffer1)->Package;\r
-  Comparator1.Bits.CoreType   = ((CPU_CACHE_INFO*)Buffer1)->CoreType;\r
-  Comparator1.Bits.CacheLevel = ((CPU_CACHE_INFO*)Buffer1)->CacheLevel;\r
-  Comparator1.Bits.CacheType  = ((CPU_CACHE_INFO*)Buffer1)->CacheType;\r
+  Comparator1.Bits.Package    = ((CPU_CACHE_INFO *)Buffer1)->Package;\r
+  Comparator1.Bits.CoreType   = ((CPU_CACHE_INFO *)Buffer1)->CoreType;\r
+  Comparator1.Bits.CacheLevel = ((CPU_CACHE_INFO *)Buffer1)->CacheLevel;\r
+  Comparator1.Bits.CacheType  = ((CPU_CACHE_INFO *)Buffer1)->CacheType;\r
 \r
-  Comparator2.Bits.Package    = ((CPU_CACHE_INFO*)Buffer2)->Package;\r
-  Comparator2.Bits.CoreType   = ((CPU_CACHE_INFO*)Buffer2)->CoreType;\r
-  Comparator2.Bits.CacheLevel = ((CPU_CACHE_INFO*)Buffer2)->CacheLevel;\r
-  Comparator2.Bits.CacheType  = ((CPU_CACHE_INFO*)Buffer2)->CacheType;\r
+  Comparator2.Bits.Package    = ((CPU_CACHE_INFO *)Buffer2)->Package;\r
+  Comparator2.Bits.CoreType   = ((CPU_CACHE_INFO *)Buffer2)->CoreType;\r
+  Comparator2.Bits.CacheLevel = ((CPU_CACHE_INFO *)Buffer2)->CacheLevel;\r
+  Comparator2.Bits.CacheType  = ((CPU_CACHE_INFO *)Buffer2)->CacheType;\r
 \r
   if (Comparator1.Uint64 == Comparator2.Uint64) {\r
     return 0;\r
@@ -89,15 +99,15 @@ CpuCacheInfoCompare (
 **/\r
 UINT32\r
 CpuCacheInfoGetNumberOfPackages (\r
-  IN CPUID_PROCESSOR_INFO   *ProcessorInfo,\r
-  IN UINTN                  NumberOfProcessors,\r
-  IN OUT UINT32             *Package\r
+  IN CPUID_PROCESSOR_INFO  *ProcessorInfo,\r
+  IN UINTN                 NumberOfProcessors,\r
+  IN OUT UINT32            *Package\r
   )\r
 {\r
-  UINTN                     ProcessorIndex;\r
-  UINT32                    PackageIndex;\r
-  UINT32                    PackageCount;\r
-  UINT32                    CurrentPackage;\r
+  UINTN   ProcessorIndex;\r
+  UINT32  PackageIndex;\r
+  UINT32  PackageCount;\r
+  UINT32  CurrentPackage;\r
 \r
   PackageCount = 0;\r
 \r
@@ -135,21 +145,21 @@ CpuCacheInfoGetNumberOfPackages (
   @retval  Return the number of CoreType of requested package.\r
 **/\r
 UINTN\r
-CpuCacheInfoGetNumberOfCoreTypePerPackage(\r
-  IN CPUID_PROCESSOR_INFO   *ProcessorInfo,\r
-  IN UINTN                  NumberOfProcessors,\r
-  IN UINTN                  Package\r
+CpuCacheInfoGetNumberOfCoreTypePerPackage (\r
+  IN CPUID_PROCESSOR_INFO  *ProcessorInfo,\r
+  IN UINTN                 NumberOfProcessors,\r
+  IN UINTN                 Package\r
   )\r
 {\r
-  UINTN                     ProcessorIndex;\r
+  UINTN  ProcessorIndex;\r
   //\r
   // Core Type value comes from CPUID.1Ah.EAX[31:24].\r
   // So max number of core types should be MAX_UINT8.\r
   //\r
-  UINT8                     CoreType[MAX_UINT8];\r
-  UINTN                     CoreTypeIndex;\r
-  UINTN                     CoreTypeCount;\r
-  UINT8                     CurrentCoreType;\r
+  UINT8  CoreType[MAX_UINT8];\r
+  UINTN  CoreTypeIndex;\r
+  UINTN  CoreTypeCount;\r
+  UINT8  CurrentCoreType;\r
 \r
   //\r
   // CoreType array is empty.\r
@@ -192,23 +202,23 @@ CpuCacheInfoGetNumberOfCoreTypePerPackage(
 VOID\r
 EFIAPI\r
 CpuCacheInfoCollectCoreAndCacheData (\r
-  IN OUT VOID               *Buffer\r
+  IN OUT VOID  *Buffer\r
   )\r
 {\r
-  UINTN                     ProcessorIndex;\r
-  UINT32                    CpuidMaxInput;\r
-  UINT8                     CacheParamLeafIndex;\r
-  CPUID_CACHE_PARAMS_EAX    CacheParamEax;\r
-  CPUID_CACHE_PARAMS_EBX    CacheParamEbx;\r
-  UINT32                    CacheParamEcx;\r
-  CPUID_CACHE_PARAMS_EDX    CacheParamEdx;\r
-  CPUID_NATIVE_MODEL_ID_AND_CORE_TYPE_EAX   NativeModelIdAndCoreTypeEax;\r
-  COLLECT_CPUID_CACHE_DATA_CONTEXT  *Context;\r
-  CPUID_CACHE_DATA          *CacheData;\r
-\r
-  Context = (COLLECT_CPUID_CACHE_DATA_CONTEXT *)Buffer;\r
+  UINTN                                    ProcessorIndex;\r
+  UINT32                                   CpuidMaxInput;\r
+  UINT8                                    CacheParamLeafIndex;\r
+  CPUID_CACHE_PARAMS_EAX                   CacheParamEax;\r
+  CPUID_CACHE_PARAMS_EBX                   CacheParamEbx;\r
+  UINT32                                   CacheParamEcx;\r
+  CPUID_CACHE_PARAMS_EDX                   CacheParamEdx;\r
+  CPUID_NATIVE_MODEL_ID_AND_CORE_TYPE_EAX  NativeModelIdAndCoreTypeEax;\r
+  COLLECT_CPUID_CACHE_DATA_CONTEXT         *Context;\r
+  CPUID_CACHE_DATA                         *CacheData;\r
+\r
+  Context        = (COLLECT_CPUID_CACHE_DATA_CONTEXT *)Buffer;\r
   ProcessorIndex = CpuCacheInfoWhoAmI (Context->MpServices);\r
-  CacheData = &Context->CacheData[MAX_NUM_OF_CACHE_PARAMS_LEAF * ProcessorIndex];\r
+  CacheData      = &Context->CacheData[MAX_NUM_OF_CACHE_PARAMS_LEAF * ProcessorIndex];\r
 \r
   AsmCpuid (CPUID_SIGNATURE, &CpuidMaxInput, NULL, NULL, NULL);\r
 \r
@@ -218,7 +228,7 @@ CpuCacheInfoCollectCoreAndCacheData (
   Context->ProcessorInfo[ProcessorIndex].CoreType = 0;\r
   if (CpuidMaxInput >= CPUID_HYBRID_INFORMATION) {\r
     AsmCpuidEx (CPUID_HYBRID_INFORMATION, CPUID_HYBRID_INFORMATION_MAIN_LEAF, &NativeModelIdAndCoreTypeEax.Uint32, NULL, NULL, NULL);\r
-    Context->ProcessorInfo[ProcessorIndex].CoreType = (UINT8) NativeModelIdAndCoreTypeEax.Bits.CoreType;\r
+    Context->ProcessorInfo[ProcessorIndex].CoreType = (UINT8)NativeModelIdAndCoreTypeEax.Bits.CoreType;\r
   }\r
 \r
   //\r
@@ -240,7 +250,7 @@ CpuCacheInfoCollectCoreAndCacheData (
     CacheData[CacheParamLeafIndex].DirectMappedCache     = (UINT8)(CacheParamEdx.Bits.ComplexCacheIndexing == 0);\r
     CacheData[CacheParamLeafIndex].CacheShareBits        = (UINT16)CacheParamEax.Bits.MaximumAddressableIdsForLogicalProcessors;\r
     CacheData[CacheParamLeafIndex].CacheSizeinKB         = (CacheParamEbx.Bits.Ways + 1) *\r
-        (CacheParamEbx.Bits.LinePartitions + 1) * (CacheParamEbx.Bits.LineSize + 1) * (CacheParamEcx + 1) / SIZE_1KB;\r
+                                                           (CacheParamEbx.Bits.LinePartitions + 1) * (CacheParamEbx.Bits.LineSize + 1) * (CacheParamEcx + 1) / SIZE_1KB;\r
 \r
     CacheParamLeafIndex++;\r
   }\r
@@ -264,25 +274,25 @@ CpuCacheInfoCollectCoreAndCacheData (
 **/\r
 EFI_STATUS\r
 CpuCacheInfoCollectCpuCacheInfoData (\r
-  IN CPUID_CACHE_DATA       *CacheData,\r
-  IN CPUID_PROCESSOR_INFO   *ProcessorInfo,\r
-  IN UINTN                  NumberOfProcessors,\r
-  IN OUT CPU_CACHE_INFO     *CacheInfo,\r
-  IN OUT UINTN              *CacheInfoCount\r
+  IN CPUID_CACHE_DATA      *CacheData,\r
+  IN CPUID_PROCESSOR_INFO  *ProcessorInfo,\r
+  IN UINTN                 NumberOfProcessors,\r
+  IN OUT CPU_CACHE_INFO    *CacheInfo,\r
+  IN OUT UINTN             *CacheInfoCount\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
-  UINT32                    NumberOfPackage;\r
-  UINT32                    Package[MAX_NUM_OF_PACKAGE];\r
-  UINTN                     PackageIndex;\r
-  UINTN                     TotalNumberOfCoreType;\r
-  UINTN                     MaxCacheInfoCount;\r
-  CPU_CACHE_INFO            *LocalCacheInfo;\r
-  UINTN                     CacheInfoIndex;\r
-  UINTN                     LocalCacheInfoCount;\r
-  UINTN                     Index;\r
-  UINTN                     NextIndex;\r
-  CPU_CACHE_INFO            SortBuffer;\r
+  EFI_STATUS      Status;\r
+  UINT32          NumberOfPackage;\r
+  UINT32          Package[MAX_NUM_OF_PACKAGE];\r
+  UINTN           PackageIndex;\r
+  UINTN           TotalNumberOfCoreType;\r
+  UINTN           MaxCacheInfoCount;\r
+  CPU_CACHE_INFO  *LocalCacheInfo;\r
+  UINTN           CacheInfoIndex;\r
+  UINTN           LocalCacheInfoCount;\r
+  UINTN           Index;\r
+  UINTN           NextIndex;\r
+  CPU_CACHE_INFO  SortBuffer;\r
 \r
   //\r
   // Get number of Packages and Package ID.\r
@@ -299,7 +309,7 @@ CpuCacheInfoCollectCpuCacheInfoData (
   }\r
 \r
   MaxCacheInfoCount = TotalNumberOfCoreType * MAX_NUM_OF_CACHE_PARAMS_LEAF;\r
-  LocalCacheInfo = AllocatePages (EFI_SIZE_TO_PAGES (MaxCacheInfoCount * sizeof (*LocalCacheInfo)));\r
+  LocalCacheInfo    = AllocatePages (EFI_SIZE_TO_PAGES (MaxCacheInfoCount * sizeof (*LocalCacheInfo)));\r
   ASSERT (LocalCacheInfo != NULL);\r
   if (LocalCacheInfo == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
@@ -320,12 +330,13 @@ CpuCacheInfoCollectCpuCacheInfoData (
         continue;\r
       }\r
 \r
-      if (CacheData[Index].CacheLevel == CacheData[NextIndex].CacheLevel &&\r
-          CacheData[Index].CacheType == CacheData[NextIndex].CacheType &&\r
-          ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].Package == ProcessorInfo[NextIndex / MAX_NUM_OF_CACHE_PARAMS_LEAF].Package &&\r
-          ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].CoreType == ProcessorInfo[NextIndex / MAX_NUM_OF_CACHE_PARAMS_LEAF].CoreType &&\r
-          (ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].ApicId & ~CacheData[Index].CacheShareBits) ==\r
-          (ProcessorInfo[NextIndex / MAX_NUM_OF_CACHE_PARAMS_LEAF].ApicId & ~CacheData[NextIndex].CacheShareBits)) {\r
+      if ((CacheData[Index].CacheLevel == CacheData[NextIndex].CacheLevel) &&\r
+          (CacheData[Index].CacheType == CacheData[NextIndex].CacheType) &&\r
+          (ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].Package == ProcessorInfo[NextIndex / MAX_NUM_OF_CACHE_PARAMS_LEAF].Package) &&\r
+          (ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].CoreType == ProcessorInfo[NextIndex / MAX_NUM_OF_CACHE_PARAMS_LEAF].CoreType) &&\r
+          ((ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].ApicId & ~CacheData[Index].CacheShareBits) ==\r
+           (ProcessorInfo[NextIndex / MAX_NUM_OF_CACHE_PARAMS_LEAF].ApicId & ~CacheData[NextIndex].CacheShareBits)))\r
+      {\r
         CacheData[NextIndex].CacheSizeinKB = 0; // uses the sharing cache\r
       }\r
     }\r
@@ -334,10 +345,11 @@ CpuCacheInfoCollectCpuCacheInfoData (
     // For the cache that already exists in LocalCacheInfo, increase its CacheCount.\r
     //\r
     for (CacheInfoIndex = 0; CacheInfoIndex < LocalCacheInfoCount; CacheInfoIndex++) {\r
-      if (LocalCacheInfo[CacheInfoIndex].Package    == ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].Package &&\r
-          LocalCacheInfo[CacheInfoIndex].CoreType   == ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].CoreType &&\r
-          LocalCacheInfo[CacheInfoIndex].CacheLevel == CacheData[Index].CacheLevel &&\r
-          LocalCacheInfo[CacheInfoIndex].CacheType  == CacheData[Index].CacheType) {\r
+      if ((LocalCacheInfo[CacheInfoIndex].Package    == ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].Package) &&\r
+          (LocalCacheInfo[CacheInfoIndex].CoreType   == ProcessorInfo[Index / MAX_NUM_OF_CACHE_PARAMS_LEAF].CoreType) &&\r
+          (LocalCacheInfo[CacheInfoIndex].CacheLevel == CacheData[Index].CacheLevel) &&\r
+          (LocalCacheInfo[CacheInfoIndex].CacheType  == CacheData[Index].CacheType))\r
+      {\r
         LocalCacheInfo[CacheInfoIndex].CacheCount++;\r
         break;\r
       }\r
@@ -370,11 +382,11 @@ CpuCacheInfoCollectCpuCacheInfoData (
     //\r
     // Sort LocalCacheInfo array by CPU package ID, core type, cache level and cache type.\r
     //\r
-    QuickSort (LocalCacheInfo, LocalCacheInfoCount, sizeof (*LocalCacheInfo), CpuCacheInfoCompare, (VOID*) &SortBuffer);\r
+    QuickSort (LocalCacheInfo, LocalCacheInfoCount, sizeof (*LocalCacheInfo), CpuCacheInfoCompare, (VOID *)&SortBuffer);\r
     CopyMem (CacheInfo, LocalCacheInfo, sizeof (*CacheInfo) * LocalCacheInfoCount);\r
     DEBUG_CODE (\r
       CpuCacheInfoPrintCpuCacheInfoTable (CacheInfo, LocalCacheInfoCount);\r
-    );\r
+      );\r
     Status = EFI_SUCCESS;\r
   }\r
 \r
@@ -405,23 +417,23 @@ CpuCacheInfoCollectCpuCacheInfoData (
 EFI_STATUS\r
 EFIAPI\r
 GetCpuCacheInfo (\r
-  IN OUT CPU_CACHE_INFO     *CpuCacheInfo,\r
-  IN OUT UINTN              *CpuCacheInfoCount\r
+  IN OUT CPU_CACHE_INFO  *CpuCacheInfo,\r
+  IN OUT UINTN           *CpuCacheInfoCount\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
-  UINT32                    CpuidMaxInput;\r
-  UINT32                    NumberOfProcessors;\r
-  UINTN                     CacheDataCount;\r
-  UINTN                     ProcessorIndex;\r
-  EFI_PROCESSOR_INFORMATION ProcessorInfo;\r
+  EFI_STATUS                        Status;\r
+  UINT32                            CpuidMaxInput;\r
+  UINT32                            NumberOfProcessors;\r
+  UINTN                             CacheDataCount;\r
+  UINTN                             ProcessorIndex;\r
+  EFI_PROCESSOR_INFORMATION         ProcessorInfo;\r
   COLLECT_CPUID_CACHE_DATA_CONTEXT  Context;\r
 \r
   if (CpuCacheInfoCount == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  if (*CpuCacheInfoCount != 0 && CpuCacheInfo == NULL) {\r
+  if ((*CpuCacheInfoCount != 0) && (CpuCacheInfo == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -445,13 +457,14 @@ GetCpuCacheInfo (
   if (Context.ProcessorInfo == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
+\r
   //\r
   // Initialize COLLECT_CPUID_CACHE_DATA_CONTEXT.CacheData.\r
   // CacheData array consists of CPUID_CACHE_DATA data structure for each Cpuid Cache Parameter Leaf\r
   // per logical processor. The array begin with data of each Cache Parameter Leaf of processor 0, followed\r
   // by data of each Cache Parameter Leaf of processor 1 ...\r
   //\r
-  CacheDataCount = NumberOfProcessors * MAX_NUM_OF_CACHE_PARAMS_LEAF;\r
+  CacheDataCount    = NumberOfProcessors * MAX_NUM_OF_CACHE_PARAMS_LEAF;\r
   Context.CacheData = AllocatePages (EFI_SIZE_TO_PAGES (CacheDataCount * sizeof (*Context.CacheData)));\r
   ASSERT (Context.CacheData != NULL);\r
   if (Context.CacheData == NULL) {\r
@@ -467,7 +480,7 @@ GetCpuCacheInfo (
   for (ProcessorIndex = 0; ProcessorIndex < NumberOfProcessors; ProcessorIndex++) {\r
     CpuCacheInfoGetProcessorInfo (Context.MpServices, ProcessorIndex, &ProcessorInfo);\r
     Context.ProcessorInfo[ProcessorIndex].Package = ProcessorInfo.Location.Package;\r
-    Context.ProcessorInfo[ProcessorIndex].ApicId  = (UINT32) ProcessorInfo.ProcessorId;\r
+    Context.ProcessorInfo[ProcessorIndex].ApicId  = (UINT32)ProcessorInfo.ProcessorId;\r
   }\r
 \r
   //\r
index d810294e2120c4e7ca1e52441a1a80a4cd0420ad..ebf2db86ba1e8a909e30000397c86bf6fe251ad8 100644 (file)
 **/\r
 EFI_STATUS\r
 CpuCacheInfoGetMpServices (\r
-  OUT MP_SERVICES           *MpServices\r
+  OUT MP_SERVICES  *MpServices\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = gBS->LocateProtocol (&gEfiMpServiceProtocolGuid, NULL, (VOID **)&MpServices->Protocol);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -43,12 +43,12 @@ CpuCacheInfoGetMpServices (
 **/\r
 VOID\r
 CpuCacheInfoStartupAllCPUs (\r
-  IN MP_SERVICES            MpServices,\r
-  IN EFI_AP_PROCEDURE       Procedure,\r
-  IN VOID                   *ProcedureArgument\r
+  IN MP_SERVICES       MpServices,\r
+  IN EFI_AP_PROCEDURE  Procedure,\r
+  IN VOID              *ProcedureArgument\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = MpServices.Protocol->StartupAllAPs (MpServices.Protocol, Procedure, FALSE, NULL, 0, ProcedureArgument, NULL);\r
   if (Status == EFI_NOT_STARTED) {\r
@@ -58,6 +58,7 @@ CpuCacheInfoStartupAllCPUs (
     //\r
     Status = EFI_SUCCESS;\r
   }\r
+\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   Procedure (ProcedureArgument);\r
@@ -72,12 +73,12 @@ CpuCacheInfoStartupAllCPUs (
 **/\r
 VOID\r
 CpuCacheInfoGetProcessorInfo (\r
-  IN MP_SERVICES                MpServices,\r
-  IN UINTN                      ProcessorNum,\r
-  OUT EFI_PROCESSOR_INFORMATION *ProcessorInfo\r
+  IN MP_SERVICES                 MpServices,\r
+  IN UINTN                       ProcessorNum,\r
+  OUT EFI_PROCESSOR_INFORMATION  *ProcessorInfo\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = MpServices.Protocol->GetProcessorInfo (MpServices.Protocol, ProcessorNum, ProcessorInfo);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -92,11 +93,11 @@ CpuCacheInfoGetProcessorInfo (
 **/\r
 UINT32\r
 CpuCacheInfoWhoAmI (\r
-  IN MP_SERVICES            MpServices\r
+  IN MP_SERVICES  MpServices\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
-  UINTN                     ProcessorNum;\r
+  EFI_STATUS  Status;\r
+  UINTN       ProcessorNum;\r
 \r
   Status = MpServices.Protocol->WhoAmI (MpServices.Protocol, &ProcessorNum);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -113,12 +114,12 @@ CpuCacheInfoWhoAmI (
 **/\r
 UINT32\r
 CpuCacheInfoGetNumberOfProcessors (\r
-  IN MP_SERVICES            MpServices\r
+  IN MP_SERVICES  MpServices\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
-  UINTN                     NumberOfProcessor;\r
-  UINTN                     NumberOfEnabledProcessor;\r
+  EFI_STATUS  Status;\r
+  UINTN       NumberOfProcessor;\r
+  UINTN       NumberOfEnabledProcessor;\r
 \r
   Status = MpServices.Protocol->GetNumberOfProcessors (MpServices.Protocol, &NumberOfProcessor, &NumberOfEnabledProcessor);\r
   ASSERT_EFI_ERROR (Status);\r
index 829a9f43ce49da4ff662148e12f0cd9311244917..953b3d66b1bf5e56e5d9ed41fb7a6aba24c1747f 100644 (file)
@@ -25,24 +25,24 @@ typedef union {
     // Type of the cache that this package's this type of logical processor corresponds to.\r
     // Value = CPUID.04h:EAX[04:00]\r
     //\r
-    UINT32        CacheType : 5;\r
+    UINT32    CacheType  : 5;\r
     //\r
     // Level of the cache that this package's this type of logical processor corresponds to.\r
     // Value = CPUID.04h:EAX[07:05]\r
     //\r
-    UINT32        CacheLevel : 3;\r
+    UINT32    CacheLevel : 3;\r
     //\r
     // Core type of logical processor.\r
     // Value = CPUID.1Ah:EAX[31:24]\r
     //\r
-    UINT32        CoreType : 8;\r
-    UINT32        Reserved : 16;\r
+    UINT32    CoreType   : 8;\r
+    UINT32    Reserved   : 16;\r
     //\r
     // Package number.\r
     //\r
-    UINT32        Package;\r
+    UINT32    Package;\r
   } Bits;\r
-  UINT64        Uint64;\r
+  UINT64    Uint64;\r
 } CPU_CACHE_INFO_COMPARATOR;\r
 \r
 typedef struct {\r
@@ -50,17 +50,17 @@ typedef struct {
   // Package ID, the information comes from\r
   // EFI_CPU_PHYSICAL_LOCATION.Package\r
   //\r
-  UINT32                    Package;\r
+  UINT32    Package;\r
   //\r
   // APIC ID, the information comes from\r
   // EFI_PROCESSOR_INFORMATION.ProcessorId\r
   //\r
-  UINT32                    ApicId;\r
+  UINT32    ApicId;\r
   //\r
   // Core type of logical processor.\r
   // Value = CPUID.1Ah:EAX[31:24]\r
   //\r
-  UINT8                     CoreType;\r
+  UINT8     CoreType;\r
 } CPUID_PROCESSOR_INFO;\r
 \r
 typedef struct {\r
@@ -68,39 +68,39 @@ typedef struct {
   // Level of the cache.\r
   // Value = CPUID.04h:EAX[07:05]\r
   //\r
-  UINT8                     CacheLevel : 3;\r
+  UINT8     CacheLevel            : 3;\r
   //\r
   // Type of the cache.\r
   // Value = CPUID.04h:EAX[04:00]\r
   //\r
-  UINT8                     CacheType : 5;\r
+  UINT8     CacheType             : 5;\r
   //\r
   // Ways of associativity.\r
   // Value = CPUID.04h:EBX[31:22]\r
   //\r
-  UINT16                    CacheWays : 10;\r
+  UINT16    CacheWays             : 10;\r
   //\r
   // Fully associative cache.\r
   // Value = CPUID.04h:EAX[09]\r
   //\r
-  UINT16                    FullyAssociativeCache : 1;\r
+  UINT16    FullyAssociativeCache : 1;\r
   //\r
   // Direct mapped cache.\r
   // Value = CPUID.04h:EDX[02]\r
   //\r
-  UINT16                    DirectMappedCache : 1;\r
-  UINT16                    Reserved : 4;\r
+  UINT16    DirectMappedCache     : 1;\r
+  UINT16    Reserved              : 4;\r
   //\r
   // Cache share bits.\r
   // Value = CPUID.04h:EAX[25:14]\r
   //\r
-  UINT16                    CacheShareBits;\r
+  UINT16    CacheShareBits;\r
   //\r
   // Size of single cache.\r
   // Value = (CPUID.04h:EBX[31:22] + 1) * (CPUID.04h:EBX[21:12] + 1) *\r
   //         (CPUID.04h:EBX[11:00] + 1) * (CPUID.04h:ECX[31:00] + 1)\r
   //\r
-  UINT32                    CacheSizeinKB;\r
+  UINT32    CacheSizeinKB;\r
 } CPUID_CACHE_DATA;\r
 \r
 typedef union {\r
@@ -109,24 +109,23 @@ typedef union {
 } MP_SERVICES;\r
 \r
 typedef struct {\r
-  MP_SERVICES               MpServices;\r
-  CPUID_PROCESSOR_INFO      *ProcessorInfo;\r
-  CPUID_CACHE_DATA          *CacheData;\r
+  MP_SERVICES             MpServices;\r
+  CPUID_PROCESSOR_INFO    *ProcessorInfo;\r
+  CPUID_CACHE_DATA        *CacheData;\r
 } COLLECT_CPUID_CACHE_DATA_CONTEXT;\r
 \r
-\r
 /*\r
   Defines the maximum count of Deterministic Cache Parameters Leaf of all APs and BSP.\r
   To save boot time, skip starting up all APs to calculate each AP's count of Deterministic\r
   Cache Parameters Leaf, so use a definition instead.\r
   Anyway, definition value will be checked in CpuCacheInfoCollectCoreAndCacheData function.\r
 */\r
-#define MAX_NUM_OF_CACHE_PARAMS_LEAF    6\r
+#define MAX_NUM_OF_CACHE_PARAMS_LEAF  6\r
 \r
 /*\r
   Defines the maximum count of packages.\r
 */\r
-#define MAX_NUM_OF_PACKAGE              100\r
+#define MAX_NUM_OF_PACKAGE  100\r
 \r
 /**\r
   Get EDKII_PEI_MP_SERVICES2_PPI or EFI_MP_SERVICES_PROTOCOL pointer.\r
@@ -139,7 +138,7 @@ typedef struct {
 **/\r
 EFI_STATUS\r
 CpuCacheInfoGetMpServices (\r
-  OUT MP_SERVICES           *MpServices\r
+  OUT MP_SERVICES  *MpServices\r
   );\r
 \r
 /**\r
@@ -151,9 +150,9 @@ CpuCacheInfoGetMpServices (
 **/\r
 VOID\r
 CpuCacheInfoStartupAllCPUs (\r
-  IN MP_SERVICES            MpServices,\r
-  IN EFI_AP_PROCEDURE       Procedure,\r
-  IN VOID                   *ProcedureArgument\r
+  IN MP_SERVICES       MpServices,\r
+  IN EFI_AP_PROCEDURE  Procedure,\r
+  IN VOID              *ProcedureArgument\r
   );\r
 \r
 /**\r
@@ -165,9 +164,9 @@ CpuCacheInfoStartupAllCPUs (
 **/\r
 VOID\r
 CpuCacheInfoGetProcessorInfo (\r
-  IN MP_SERVICES                MpServices,\r
-  IN UINTN                      ProcessorNum,\r
-  OUT EFI_PROCESSOR_INFORMATION *ProcessorInfo\r
+  IN MP_SERVICES                 MpServices,\r
+  IN UINTN                       ProcessorNum,\r
+  OUT EFI_PROCESSOR_INFORMATION  *ProcessorInfo\r
   );\r
 \r
 /**\r
@@ -179,7 +178,7 @@ CpuCacheInfoGetProcessorInfo (
 **/\r
 UINT32\r
 CpuCacheInfoWhoAmI (\r
-  IN MP_SERVICES            MpServices\r
+  IN MP_SERVICES  MpServices\r
   );\r
 \r
 /**\r
@@ -191,6 +190,7 @@ CpuCacheInfoWhoAmI (
 **/\r
 UINT32\r
 CpuCacheInfoGetNumberOfProcessors (\r
-  IN MP_SERVICES            MpServices\r
+  IN MP_SERVICES  MpServices\r
   );\r
+\r
 #endif\r
index 06c160421b00935810e268c721c4aebbba8e4cd7..ea262d8f0216d00e60f05924e1f09de9d4ae3745 100644 (file)
 **/\r
 EFI_STATUS\r
 CpuCacheInfoGetMpServices (\r
-  OUT MP_SERVICES           *MpServices\r
+  OUT MP_SERVICES  *MpServices\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = PeiServicesLocatePpi (&gEdkiiPeiMpServices2PpiGuid, 0, NULL, (VOID **)&MpServices->Ppi);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -44,12 +44,12 @@ CpuCacheInfoGetMpServices (
 **/\r
 VOID\r
 CpuCacheInfoStartupAllCPUs (\r
-  IN MP_SERVICES            MpServices,\r
-  IN EFI_AP_PROCEDURE       Procedure,\r
-  IN VOID                   *ProcedureArgument\r
+  IN MP_SERVICES       MpServices,\r
+  IN EFI_AP_PROCEDURE  Procedure,\r
+  IN VOID              *ProcedureArgument\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = MpServices.Ppi->StartupAllCPUs (MpServices.Ppi, Procedure, 0, ProcedureArgument);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -64,12 +64,12 @@ CpuCacheInfoStartupAllCPUs (
 **/\r
 VOID\r
 CpuCacheInfoGetProcessorInfo (\r
-  IN MP_SERVICES                MpServices,\r
-  IN UINTN                      ProcessorNum,\r
-  OUT EFI_PROCESSOR_INFORMATION *ProcessorInfo\r
+  IN MP_SERVICES                 MpServices,\r
+  IN UINTN                       ProcessorNum,\r
+  OUT EFI_PROCESSOR_INFORMATION  *ProcessorInfo\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = MpServices.Ppi->GetProcessorInfo (MpServices.Ppi, ProcessorNum, ProcessorInfo);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -84,11 +84,11 @@ CpuCacheInfoGetProcessorInfo (
 **/\r
 UINT32\r
 CpuCacheInfoWhoAmI (\r
-  IN MP_SERVICES            MpServices\r
+  IN MP_SERVICES  MpServices\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
-  UINTN                     ProcessorNum;\r
+  EFI_STATUS  Status;\r
+  UINTN       ProcessorNum;\r
 \r
   Status = MpServices.Ppi->WhoAmI (MpServices.Ppi, &ProcessorNum);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -105,12 +105,12 @@ CpuCacheInfoWhoAmI (
 **/\r
 UINT32\r
 CpuCacheInfoGetNumberOfProcessors (\r
-  IN MP_SERVICES            MpServices\r
+  IN MP_SERVICES  MpServices\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
-  UINTN                     NumberOfProcessor;\r
-  UINTN                     NumberOfEnabledProcessor;\r
+  EFI_STATUS  Status;\r
+  UINTN       NumberOfProcessor;\r
+  UINTN       NumberOfEnabledProcessor;\r
 \r
   Status = MpServices.Ppi->GetNumberOfProcessors (MpServices.Ppi, &NumberOfProcessor, &NumberOfEnabledProcessor);\r
   ASSERT_EFI_ERROR (Status);\r
index 80a7df2957af3c952c096153d092877dffa01058..beda97e238009ae5635f6d67a0001a021bd7f6ec 100644 (file)
@@ -23,7 +23,7 @@ AesniGetConfigData (
   IN UINTN  NumberOfProcessors\r
   )\r
 {\r
-  UINT64                            *ConfigData;\r
+  UINT64  *ConfigData;\r
 \r
   ConfigData = AllocateZeroPool (sizeof (UINT64) * NumberOfProcessors);\r
   ASSERT (ConfigData != NULL);\r
@@ -54,14 +54,15 @@ AesniSupport (
   IN VOID                              *ConfigData  OPTIONAL\r
   )\r
 {\r
-  MSR_SANDY_BRIDGE_FEATURE_CONFIG_REGISTER   *MsrFeatureConfig;\r
+  MSR_SANDY_BRIDGE_FEATURE_CONFIG_REGISTER  *MsrFeatureConfig;\r
 \r
   if (CpuInfo->CpuIdVersionInfoEcx.Bits.AESNI == 1) {\r
-    MsrFeatureConfig = (MSR_SANDY_BRIDGE_FEATURE_CONFIG_REGISTER *) ConfigData;\r
+    MsrFeatureConfig = (MSR_SANDY_BRIDGE_FEATURE_CONFIG_REGISTER *)ConfigData;\r
     ASSERT (MsrFeatureConfig != NULL);\r
     MsrFeatureConfig[ProcessorNumber].Uint64 = AsmReadMsr64 (MSR_SANDY_BRIDGE_FEATURE_CONFIG);\r
     return TRUE;\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -91,7 +92,7 @@ AesniInitialize (
   IN BOOLEAN                           State\r
   )\r
 {\r
-  MSR_SANDY_BRIDGE_FEATURE_CONFIG_REGISTER   *MsrFeatureConfig;\r
+  MSR_SANDY_BRIDGE_FEATURE_CONFIG_REGISTER  *MsrFeatureConfig;\r
 \r
   //\r
   // SANDY_BRIDGE, SILVERMONT, XEON_5600, XEON_7, and XEON_PHI have the same MSR index,\r
@@ -102,7 +103,7 @@ AesniInitialize (
   // programming it.\r
   //\r
   if (CpuInfo->ProcessorInfo.Location.Thread == 0) {\r
-    MsrFeatureConfig = (MSR_SANDY_BRIDGE_FEATURE_CONFIG_REGISTER *) ConfigData;\r
+    MsrFeatureConfig = (MSR_SANDY_BRIDGE_FEATURE_CONFIG_REGISTER *)ConfigData;\r
     ASSERT (MsrFeatureConfig != NULL);\r
     if ((MsrFeatureConfig[ProcessorNumber].Bits.AESConfiguration & BIT0) == 0) {\r
       CPU_REGISTER_TABLE_WRITE_FIELD (\r
@@ -115,5 +116,6 @@ AesniInitialize (
         );\r
     }\r
   }\r
+\r
   return RETURN_SUCCESS;\r
 }\r
index 98a34083701b98f96fb9be91beaf4a0910eafa78..bc09f8bc6242b13ba2981aa2060f6588092b1178 100644 (file)
@@ -66,7 +66,7 @@ C1eInitialize (
   // MSR_NEHALEM_POWER_CTL once for each package.\r
   //\r
   if ((CpuInfo->First.Thread == 0) || (CpuInfo->First.Core == 0)) {\r
-  return RETURN_SUCCESS;\r
+    return RETURN_SUCCESS;\r
   }\r
 \r
   CPU_REGISTER_TABLE_WRITE_FIELD (\r
index 94d596605bf72c9c8df72f389b8c28edf822b06a..5874a99570ef37cb98c3e9f97814f8696174e5b1 100644 (file)
@@ -9,8 +9,8 @@
 #include "CpuCommonFeatures.h"\r
 \r
 typedef struct  {\r
-  CPUID_THERMAL_POWER_MANAGEMENT_EAX  ThermalPowerManagementEax;\r
-  MSR_IA32_CLOCK_MODULATION_REGISTER  ClockModulation;\r
+  CPUID_THERMAL_POWER_MANAGEMENT_EAX    ThermalPowerManagementEax;\r
+  MSR_IA32_CLOCK_MODULATION_REGISTER    ClockModulation;\r
 } CLOCK_MODULATION_CONFIG_DATA;\r
 \r
 /**\r
@@ -28,7 +28,7 @@ ClockModulationGetConfigData (
   IN UINTN  NumberOfProcessors\r
   )\r
 {\r
-  UINT32    *ConfigData;\r
+  UINT32  *ConfigData;\r
 \r
   ConfigData = AllocateZeroPool (sizeof (CLOCK_MODULATION_CONFIG_DATA) * NumberOfProcessors);\r
   ASSERT (ConfigData != NULL);\r
@@ -59,10 +59,10 @@ ClockModulationSupport (
   IN VOID                              *ConfigData  OPTIONAL\r
   )\r
 {\r
-  CLOCK_MODULATION_CONFIG_DATA         *CmConfigData;\r
+  CLOCK_MODULATION_CONFIG_DATA  *CmConfigData;\r
 \r
   if (CpuInfo->CpuIdVersionInfoEdx.Bits.ACPI == 1) {\r
-    CmConfigData = (CLOCK_MODULATION_CONFIG_DATA *) ConfigData;\r
+    CmConfigData = (CLOCK_MODULATION_CONFIG_DATA *)ConfigData;\r
     ASSERT (CmConfigData != NULL);\r
     AsmCpuid (\r
       CPUID_THERMAL_POWER_MANAGEMENT,\r
@@ -74,6 +74,7 @@ ClockModulationSupport (
     CmConfigData[ProcessorNumber].ClockModulation.Uint64 = AsmReadMsr64 (MSR_IA32_CLOCK_MODULATION);\r
     return TRUE;\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -103,15 +104,15 @@ ClockModulationInitialize (
   IN BOOLEAN                           State\r
   )\r
 {\r
-  CLOCK_MODULATION_CONFIG_DATA         *CmConfigData;\r
-  MSR_IA32_CLOCK_MODULATION_REGISTER   *ClockModulation;\r
+  CLOCK_MODULATION_CONFIG_DATA        *CmConfigData;\r
+  MSR_IA32_CLOCK_MODULATION_REGISTER  *ClockModulation;\r
 \r
-  CmConfigData = (CLOCK_MODULATION_CONFIG_DATA *) ConfigData;\r
+  CmConfigData = (CLOCK_MODULATION_CONFIG_DATA *)ConfigData;\r
   ASSERT (CmConfigData != NULL);\r
   ClockModulation = &CmConfigData[ProcessorNumber].ClockModulation;\r
 \r
   if (State) {\r
-    ClockModulation->Bits.OnDemandClockModulationEnable = 1;\r
+    ClockModulation->Bits.OnDemandClockModulationEnable    = 1;\r
     ClockModulation->Bits.OnDemandClockModulationDutyCycle = PcdGet8 (PcdCpuClockModulationDutyCycle) >> 1;\r
     if (CmConfigData[ProcessorNumber].ThermalPowerManagementEax.Bits.ECMD == 1) {\r
       ClockModulation->Bits.ExtendedOnDemandClockModulationDutyCycle = PcdGet8 (PcdCpuClockModulationDutyCycle) & BIT0;\r
index 74f27dcc445d05353ec056835c4ea8d8de574a8a..5434a45f6a84be6314f88656b21bf0a0c8e48150 100644 (file)
@@ -860,7 +860,7 @@ X2ApicInitialize (
 VOID *\r
 EFIAPI\r
 PpinGetConfigData (\r
-  IN UINTN               NumberOfProcessors\r
+  IN UINTN  NumberOfProcessors\r
   );\r
 \r
 /**\r
index 725ef7bd438601eab528c0e149338e018431487d..7f0e1004b9e63ecb7380e01450a511b4b8368316 100644 (file)
@@ -20,7 +20,7 @@ CpuCommonFeaturesLibConstructor (
   VOID\r
   )\r
 {\r
-  RETURN_STATUS         Status;\r
+  RETURN_STATUS  Status;\r
 \r
   if (IsCpuFeatureSupported (CPU_FEATURE_AESNI)) {\r
     Status = RegisterCpuFeature (\r
@@ -33,6 +33,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_MWAIT)) {\r
     Status = RegisterCpuFeature (\r
                "MWAIT",\r
@@ -44,6 +45,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_ACPI)) {\r
     Status = RegisterCpuFeature (\r
                "ACPI",\r
@@ -55,6 +57,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_EIST)) {\r
     Status = RegisterCpuFeature (\r
                "EIST",\r
@@ -66,6 +69,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_FASTSTRINGS)) {\r
     Status = RegisterCpuFeature (\r
                "FastStrings",\r
@@ -77,6 +81,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_LOCK_FEATURE_CONTROL_REGISTER)) {\r
     Status = RegisterCpuFeature (\r
                "Lock Feature Control Register",\r
@@ -88,6 +93,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_SMX)) {\r
     Status = RegisterCpuFeature (\r
                "SMX",\r
@@ -100,6 +106,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_VMX)) {\r
     Status = RegisterCpuFeature (\r
                "VMX",\r
@@ -112,6 +119,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_LIMIT_CPUID_MAX_VAL)) {\r
     Status = RegisterCpuFeature (\r
                "Limit CpuId Maximum Value",\r
@@ -123,6 +131,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_MCE)) {\r
     Status = RegisterCpuFeature (\r
                "Machine Check Enable",\r
@@ -134,6 +143,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_MCA)) {\r
     Status = RegisterCpuFeature (\r
                "Machine Check Architect",\r
@@ -145,6 +155,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_MCG_CTL)) {\r
     Status = RegisterCpuFeature (\r
                "MCG_CTL",\r
@@ -156,6 +167,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_PENDING_BREAK)) {\r
     Status = RegisterCpuFeature (\r
                "Pending Break",\r
@@ -167,6 +179,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_C1E)) {\r
     Status = RegisterCpuFeature (\r
                "C1E",\r
@@ -178,6 +191,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_X2APIC)) {\r
     Status = RegisterCpuFeature (\r
                "X2Apic",\r
@@ -189,6 +203,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_PPIN)) {\r
     Status = RegisterCpuFeature (\r
                "PPIN",\r
@@ -200,6 +215,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_LMCE)) {\r
     Status = RegisterCpuFeature (\r
                "LMCE",\r
@@ -212,6 +228,7 @@ CpuCommonFeaturesLibConstructor (
                );\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
+\r
   if (IsCpuFeatureSupported (CPU_FEATURE_PROC_TRACE)) {\r
     Status = RegisterCpuFeature (\r
                "Proc Trace",\r
@@ -226,6 +243,3 @@ CpuCommonFeaturesLibConstructor (
 \r
   return RETURN_SUCCESS;\r
 }\r
-\r
-\r
-\r
index ed42afe289c2c09950ee4a7918d7bbb167e463a0..aedf3e6f2c82f9daf0acf5fd4928ac5f31ed5f5d 100644 (file)
@@ -69,7 +69,8 @@ EistInitialize (
   //\r
   if (IS_ATOM_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_CORE_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_CORE2_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_CORE2_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
index 9ae5216555f13def4a098e7a836e9569c00f6fcb..63c3bf9d1077ed847daad71771339c97ae8822d6 100644 (file)
@@ -40,7 +40,8 @@ FastStringsInitialize (
   //\r
   if (IS_SILVERMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_GOLDMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_PENTIUM_4_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_PENTIUM_4_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
index 8ad81a6e8731354bdffe5ea0019e8206dde8e6f7..63ec27a1a6f24639f783940744946c17f3c0853d 100644 (file)
@@ -68,7 +68,8 @@ VmxInitialize (
   //\r
   if (IS_SILVERMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_GOLDMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_GOLDMONT_PLUS_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_GOLDMONT_PLUS_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
@@ -146,7 +147,8 @@ LockFeatureControlRegisterInitialize (
   //\r
   if (IS_SILVERMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_GOLDMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_GOLDMONT_PLUS_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_GOLDMONT_PLUS_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
@@ -218,7 +220,7 @@ SmxInitialize (
   IN BOOLEAN                           State\r
   )\r
 {\r
-  RETURN_STATUS                        Status;\r
+  RETURN_STATUS  Status;\r
 \r
   //\r
   // The scope of Lock bit in the MSR_IA32_FEATURE_CONTROL is core for\r
@@ -226,7 +228,8 @@ SmxInitialize (
   // core.\r
   //\r
   if (IS_GOLDMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_GOLDMONT_PLUS_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_GOLDMONT_PLUS_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
@@ -236,7 +239,7 @@ SmxInitialize (
 \r
   if (State && (!IsCpuFeatureInSetting (CPU_FEATURE_VMX))) {\r
     DEBUG ((DEBUG_WARN, "Warning :: Can't enable SMX feature when VMX feature not enabled, disable it.\n"));\r
-    State = FALSE;\r
+    State  = FALSE;\r
     Status = RETURN_UNSUPPORTED;\r
   }\r
 \r
@@ -247,7 +250,7 @@ SmxInitialize (
     IA32_CR4,\r
     Bits.SMXE,\r
     (State) ? 1 : 0\r
-  )\r
+    )\r
 \r
   CPU_REGISTER_TABLE_TEST_THEN_WRITE_FIELD (\r
     ProcessorNumber,\r
index 71d82eab8dcc24526b3eadcc4e1b6fef6c426420..bf495f96bb938841531cd1adc298dedbb352c522 100644 (file)
@@ -72,7 +72,8 @@ LimitCpuidMaxvalInitialize (
       IS_SILVERMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_GOLDMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_CORE_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_CORE2_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_CORE2_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
index 0e78a0ce2689802a227a2d2a420b65cf5a454283..d8b070d9f10a0942603a6b415f0a2b091313d329 100644 (file)
@@ -102,6 +102,7 @@ McaSupport (
   if (!MceSupport (ProcessorNumber, CpuInfo, ConfigData)) {\r
     return FALSE;\r
   }\r
+\r
   return (CpuInfo->CpuIdVersionInfoEdx.Bits.MCA == 1);\r
 }\r
 \r
@@ -144,7 +145,8 @@ McaInitialize (
       IS_SKYLAKE_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_XEON_PHI_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_PENTIUM_4_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_CORE_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_CORE_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
@@ -162,7 +164,7 @@ McaInitialize (
 \r
   if (State) {\r
     McgCap.Uint64 = AsmReadMsr64 (MSR_IA32_MCG_CAP);\r
-    for (BankIndex = 0; BankIndex < (UINT32) McgCap.Bits.Count; BankIndex++) {\r
+    for (BankIndex = 0; BankIndex < (UINT32)McgCap.Bits.Count; BankIndex++) {\r
       CPU_REGISTER_TABLE_WRITE64 (\r
         ProcessorNumber,\r
         Msr,\r
@@ -172,7 +174,7 @@ McaInitialize (
     }\r
 \r
     if (PcdGetBool (PcdIsPowerOnReset)) {\r
-      for (BankIndex = 0; BankIndex < (UINTN) McgCap.Bits.Count; BankIndex++) {\r
+      for (BankIndex = 0; BankIndex < (UINTN)McgCap.Bits.Count; BankIndex++) {\r
         CPU_REGISTER_TABLE_WRITE64 (\r
           ProcessorNumber,\r
           Msr,\r
@@ -215,6 +217,7 @@ McgCtlSupport (
   if (!McaSupport (ProcessorNumber, CpuInfo, ConfigData)) {\r
     return FALSE;\r
   }\r
+\r
   McgCap.Uint64 = AsmReadMsr64 (MSR_IA32_MCG_CAP);\r
   return (McgCap.Bits.MCG_CTL_P == 1);\r
 }\r
@@ -249,7 +252,7 @@ McgCtlInitialize (
     ProcessorNumber,\r
     Msr,\r
     MSR_IA32_MCG_CTL,\r
-    (State)? MAX_UINT64 : 0\r
+    (State) ? MAX_UINT64 : 0\r
     );\r
   return RETURN_SUCCESS;\r
 }\r
@@ -279,7 +282,7 @@ LmceSupport (
   IN VOID                              *ConfigData  OPTIONAL\r
   )\r
 {\r
-  MSR_IA32_MCG_CAP_REGISTER    McgCap;\r
+  MSR_IA32_MCG_CAP_REGISTER  McgCap;\r
 \r
   if (!McaSupport (ProcessorNumber, CpuInfo, ConfigData)) {\r
     return FALSE;\r
@@ -287,9 +290,10 @@ LmceSupport (
 \r
   McgCap.Uint64 = AsmReadMsr64 (MSR_IA32_MCG_CAP);\r
   if (ProcessorNumber == 0) {\r
-    DEBUG ((DEBUG_INFO, "LMCE enable = %x\n", (BOOLEAN) (McgCap.Bits.MCG_LMCE_P != 0)));\r
+    DEBUG ((DEBUG_INFO, "LMCE enable = %x\n", (BOOLEAN)(McgCap.Bits.MCG_LMCE_P != 0)));\r
   }\r
-  return (BOOLEAN) (McgCap.Bits.MCG_LMCE_P != 0);\r
+\r
+  return (BOOLEAN)(McgCap.Bits.MCG_LMCE_P != 0);\r
 }\r
 \r
 /**\r
@@ -325,7 +329,8 @@ LmceInitialize (
   //\r
   if (IS_SILVERMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_GOLDMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_PENTIUM_4_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_PENTIUM_4_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
index 9fcbaf8d5d539a293051b59f9f228eee62b6c3d4..d55cf6c6f28d8e5411caece59e768aeec04f563d 100644 (file)
@@ -70,7 +70,8 @@ MonitorMwaitInitialize (
       IS_GOLDMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_SILVERMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_PENTIUM_4_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_CORE_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_CORE_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
index 3d7030d6093d8ada784b2a315f82a6ca9d97f1e5..6095dbde05991b5d9dc46ce586c8646a94945b4c 100644 (file)
@@ -36,9 +36,11 @@ PendingBreakSupport (
       IS_CORE2_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_CORE_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
       IS_PENTIUM_4_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_PENTIUM_M_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_PENTIUM_M_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     return (CpuInfo->CpuIdVersionInfoEdx.Bits.PBE == 1);\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
index 468e425a0bfeba9fa616ed15af5c01f1101f8390..a7c2c12a51f490caf4ddbed21378c07decd4ad76 100644 (file)
 VOID *\r
 EFIAPI\r
 PpinGetConfigData (\r
-  IN UINTN               NumberOfProcessors\r
+  IN UINTN  NumberOfProcessors\r
   )\r
 {\r
-  VOID          *ConfigData;\r
+  VOID  *ConfigData;\r
 \r
   ConfigData = AllocateZeroPool (sizeof (MSR_IVY_BRIDGE_PPIN_CTL_REGISTER) * NumberOfProcessors);\r
   ASSERT (ConfigData != NULL);\r
@@ -55,8 +55,8 @@ PpinSupport (
   IN VOID                              *ConfigData  OPTIONAL\r
   )\r
 {\r
-  MSR_IVY_BRIDGE_PLATFORM_INFO_1_REGISTER    PlatformInfo;\r
-  MSR_IVY_BRIDGE_PPIN_CTL_REGISTER           *MsrPpinCtrl;\r
+  MSR_IVY_BRIDGE_PLATFORM_INFO_1_REGISTER  PlatformInfo;\r
+  MSR_IVY_BRIDGE_PPIN_CTL_REGISTER         *MsrPpinCtrl;\r
 \r
   if ((CpuInfo->DisplayFamily == 0x06) &&\r
       ((CpuInfo->DisplayModel == 0x3E) ||      // Xeon E5 V2\r
@@ -65,13 +65,14 @@ PpinSupport (
        (CpuInfo->DisplayModel == 0x55) ||      // Xeon Processor Scalable\r
        (CpuInfo->DisplayModel == 0x57) ||      // Xeon Phi processor 3200, 5200, 7200 series.\r
        (CpuInfo->DisplayModel == 0x85)         // Future Xeon phi processor\r
-     )) {\r
+      ))\r
+  {\r
     //\r
     // Check whether platform support this feature.\r
     //\r
     PlatformInfo.Uint64 = AsmReadMsr64 (MSR_IVY_BRIDGE_PLATFORM_INFO_1);\r
     if (PlatformInfo.Bits.PPIN_CAP != 0) {\r
-      MsrPpinCtrl = (MSR_IVY_BRIDGE_PPIN_CTL_REGISTER *) ConfigData;\r
+      MsrPpinCtrl = (MSR_IVY_BRIDGE_PPIN_CTL_REGISTER *)ConfigData;\r
       ASSERT (MsrPpinCtrl != NULL);\r
       MsrPpinCtrl[ProcessorNumber].Uint64 = AsmReadMsr64 (MSR_IVY_BRIDGE_PPIN_CTL);\r
       return TRUE;\r
@@ -112,9 +113,9 @@ PpinInitialize (
   IN BOOLEAN                           State\r
   )\r
 {\r
-  MSR_IVY_BRIDGE_PPIN_CTL_REGISTER     *MsrPpinCtrl;\r
+  MSR_IVY_BRIDGE_PPIN_CTL_REGISTER  *MsrPpinCtrl;\r
 \r
-  MsrPpinCtrl = (MSR_IVY_BRIDGE_PPIN_CTL_REGISTER *) ConfigData;\r
+  MsrPpinCtrl = (MSR_IVY_BRIDGE_PPIN_CTL_REGISTER *)ConfigData;\r
   ASSERT (MsrPpinCtrl != NULL);\r
 \r
   //\r
@@ -143,14 +144,14 @@ PpinInitialize (
     // According to SDM, once Enable_PPIN is set, attempt to write 1 to LockOut will cause #GP.\r
     //\r
     MsrPpinCtrl[ProcessorNumber].Bits.Enable_PPIN = 1;\r
-    MsrPpinCtrl[ProcessorNumber].Bits.LockOut = 0;\r
+    MsrPpinCtrl[ProcessorNumber].Bits.LockOut     = 0;\r
   } else {\r
     //\r
     // Disable and Lock.\r
     // According to SDM, writing 1 to LockOut is permitted only if Enable_PPIN is clear.\r
     //\r
     MsrPpinCtrl[ProcessorNumber].Bits.Enable_PPIN = 0;\r
-    MsrPpinCtrl[ProcessorNumber].Bits.LockOut = 1;\r
+    MsrPpinCtrl[ProcessorNumber].Bits.LockOut     = 1;\r
   }\r
 \r
   CPU_REGISTER_TABLE_WRITE64 (\r
index e567ed54e73042b932ae607845ce4337e493ba94..04e6a607280b28e0ccd7f2e0b6f7f1fe5d101bd1 100644 (file)
@@ -17,8 +17,7 @@
 /// be terminated by an entry with the END bit set to 1, so 2\r
 /// entries are required to use a single valid entry.\r
 ///\r
-#define MAX_TOPA_ENTRY_COUNT         2\r
-\r
+#define MAX_TOPA_ENTRY_COUNT  2\r
 \r
 ///\r
 /// Processor trace output scheme selection.\r
@@ -29,25 +28,25 @@ typedef enum {
 } RTIT_OUTPUT_SCHEME;\r
 \r
 typedef struct  {\r
-  BOOLEAN                                   TopaSupported;\r
-  BOOLEAN                                   SingleRangeSupported;\r
-  MSR_IA32_RTIT_CTL_REGISTER                RtitCtrl;\r
-  MSR_IA32_RTIT_OUTPUT_BASE_REGISTER        RtitOutputBase;\r
-  MSR_IA32_RTIT_OUTPUT_MASK_PTRS_REGISTER   RtitOutputMaskPtrs;\r
+  BOOLEAN                                    TopaSupported;\r
+  BOOLEAN                                    SingleRangeSupported;\r
+  MSR_IA32_RTIT_CTL_REGISTER                 RtitCtrl;\r
+  MSR_IA32_RTIT_OUTPUT_BASE_REGISTER         RtitOutputBase;\r
+  MSR_IA32_RTIT_OUTPUT_MASK_PTRS_REGISTER    RtitOutputMaskPtrs;\r
 } PROC_TRACE_PROCESSOR_DATA;\r
 \r
 typedef struct  {\r
-  UINT32                      NumberOfProcessors;\r
+  UINT32                       NumberOfProcessors;\r
 \r
-  UINT8                       ProcTraceOutputScheme;\r
-  UINT32                      ProcTraceMemSize;\r
+  UINT8                        ProcTraceOutputScheme;\r
+  UINT32                       ProcTraceMemSize;\r
 \r
-  UINTN                       *ThreadMemRegionTable;\r
-  UINTN                       AllocatedThreads;\r
+  UINTN                        *ThreadMemRegionTable;\r
+  UINTN                        AllocatedThreads;\r
 \r
-  UINTN                       *TopaMemArray;\r
+  UINTN                        *TopaMemArray;\r
 \r
-  PROC_TRACE_PROCESSOR_DATA   *ProcessorData;\r
+  PROC_TRACE_PROCESSOR_DATA    *ProcessorData;\r
 } PROC_TRACE_DATA;\r
 \r
 typedef struct {\r
@@ -73,10 +72,10 @@ ProcTraceGetConfigData (
 \r
   ConfigData = AllocateZeroPool (sizeof (PROC_TRACE_DATA) + sizeof (PROC_TRACE_PROCESSOR_DATA) * NumberOfProcessors);\r
   ASSERT (ConfigData != NULL);\r
-  ConfigData->ProcessorData = (PROC_TRACE_PROCESSOR_DATA *) ((UINT8*) ConfigData + sizeof (PROC_TRACE_DATA));\r
+  ConfigData->ProcessorData = (PROC_TRACE_PROCESSOR_DATA *)((UINT8 *)ConfigData + sizeof (PROC_TRACE_DATA));\r
 \r
-  ConfigData->NumberOfProcessors = (UINT32) NumberOfProcessors;\r
-  ConfigData->ProcTraceMemSize = PcdGet32 (PcdCpuProcTraceMemSize);\r
+  ConfigData->NumberOfProcessors    = (UINT32)NumberOfProcessors;\r
+  ConfigData->ProcTraceMemSize      = PcdGet32 (PcdCpuProcTraceMemSize);\r
   ConfigData->ProcTraceOutputScheme = PcdGet8 (PcdCpuProcTraceOutputScheme);\r
 \r
   return ConfigData;\r
@@ -107,17 +106,18 @@ ProcTraceSupport (
   IN VOID                              *ConfigData  OPTIONAL\r
   )\r
 {\r
-  PROC_TRACE_DATA                             *ProcTraceData;\r
-  CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_EBX Ebx;\r
-  CPUID_INTEL_PROCESSOR_TRACE_MAIN_LEAF_ECX   Ecx;\r
+  PROC_TRACE_DATA                              *ProcTraceData;\r
+  CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_EBX  Ebx;\r
+  CPUID_INTEL_PROCESSOR_TRACE_MAIN_LEAF_ECX    Ecx;\r
 \r
   //\r
   // Check if ProcTraceMemorySize option is enabled (0xFF means disable by user)\r
   //\r
-  ProcTraceData = (PROC_TRACE_DATA *) ConfigData;\r
+  ProcTraceData = (PROC_TRACE_DATA *)ConfigData;\r
   ASSERT (ProcTraceData != NULL);\r
   if ((ProcTraceData->ProcTraceMemSize > RtitTopaMemorySize128M) ||\r
-      (ProcTraceData->ProcTraceOutputScheme > RtitOutputSchemeToPA)) {\r
+      (ProcTraceData->ProcTraceOutputScheme > RtitOutputSchemeToPA))\r
+  {\r
     return FALSE;\r
   }\r
 \r
@@ -130,12 +130,13 @@ ProcTraceSupport (
   }\r
 \r
   AsmCpuidEx (CPUID_INTEL_PROCESSOR_TRACE, CPUID_INTEL_PROCESSOR_TRACE_MAIN_LEAF, NULL, NULL, &Ecx.Uint32, NULL);\r
-  ProcTraceData->ProcessorData[ProcessorNumber].TopaSupported = (BOOLEAN) (Ecx.Bits.RTIT == 1);\r
-  ProcTraceData->ProcessorData[ProcessorNumber].SingleRangeSupported = (BOOLEAN) (Ecx.Bits.SingleRangeOutput == 1);\r
+  ProcTraceData->ProcessorData[ProcessorNumber].TopaSupported        = (BOOLEAN)(Ecx.Bits.RTIT == 1);\r
+  ProcTraceData->ProcessorData[ProcessorNumber].SingleRangeSupported = (BOOLEAN)(Ecx.Bits.SingleRangeOutput == 1);\r
   if ((ProcTraceData->ProcessorData[ProcessorNumber].TopaSupported && (ProcTraceData->ProcTraceOutputScheme == RtitOutputSchemeToPA)) ||\r
-      (ProcTraceData->ProcessorData[ProcessorNumber].SingleRangeSupported && (ProcTraceData->ProcTraceOutputScheme == RtitOutputSchemeSingleRange))) {\r
-    ProcTraceData->ProcessorData[ProcessorNumber].RtitCtrl.Uint64 = AsmReadMsr64 (MSR_IA32_RTIT_CTL);\r
-    ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputBase.Uint64 = AsmReadMsr64 (MSR_IA32_RTIT_OUTPUT_BASE);\r
+      (ProcTraceData->ProcessorData[ProcessorNumber].SingleRangeSupported && (ProcTraceData->ProcTraceOutputScheme == RtitOutputSchemeSingleRange)))\r
+  {\r
+    ProcTraceData->ProcessorData[ProcessorNumber].RtitCtrl.Uint64           = AsmReadMsr64 (MSR_IA32_RTIT_CTL);\r
+    ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputBase.Uint64     = AsmReadMsr64 (MSR_IA32_RTIT_OUTPUT_BASE);\r
     ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputMaskPtrs.Uint64 = AsmReadMsr64 (MSR_IA32_RTIT_OUTPUT_MASK_PTRS);\r
     return TRUE;\r
   }\r
@@ -170,36 +171,37 @@ ProcTraceInitialize (
   IN BOOLEAN                           State\r
   )\r
 {\r
-  UINT32                               MemRegionSize;\r
-  UINTN                                Pages;\r
-  UINTN                                Alignment;\r
-  UINTN                                MemRegionBaseAddr;\r
-  UINTN                                *ThreadMemRegionTable;\r
-  UINTN                                Index;\r
-  UINTN                                TopaTableBaseAddr;\r
-  UINTN                                AlignedAddress;\r
-  UINTN                                *TopaMemArray;\r
-  PROC_TRACE_TOPA_TABLE                *TopaTable;\r
-  PROC_TRACE_DATA                      *ProcTraceData;\r
-  BOOLEAN                              FirstIn;\r
-  MSR_IA32_RTIT_CTL_REGISTER           CtrlReg;\r
-  MSR_IA32_RTIT_STATUS_REGISTER        StatusReg;\r
-  MSR_IA32_RTIT_OUTPUT_BASE_REGISTER   OutputBaseReg;\r
+  UINT32                                   MemRegionSize;\r
+  UINTN                                    Pages;\r
+  UINTN                                    Alignment;\r
+  UINTN                                    MemRegionBaseAddr;\r
+  UINTN                                    *ThreadMemRegionTable;\r
+  UINTN                                    Index;\r
+  UINTN                                    TopaTableBaseAddr;\r
+  UINTN                                    AlignedAddress;\r
+  UINTN                                    *TopaMemArray;\r
+  PROC_TRACE_TOPA_TABLE                    *TopaTable;\r
+  PROC_TRACE_DATA                          *ProcTraceData;\r
+  BOOLEAN                                  FirstIn;\r
+  MSR_IA32_RTIT_CTL_REGISTER               CtrlReg;\r
+  MSR_IA32_RTIT_STATUS_REGISTER            StatusReg;\r
+  MSR_IA32_RTIT_OUTPUT_BASE_REGISTER       OutputBaseReg;\r
   MSR_IA32_RTIT_OUTPUT_MASK_PTRS_REGISTER  OutputMaskPtrsReg;\r
-  RTIT_TOPA_TABLE_ENTRY                *TopaEntryPtr;\r
+  RTIT_TOPA_TABLE_ENTRY                    *TopaEntryPtr;\r
 \r
   //\r
   // The scope of the MSR_IA32_RTIT_* is core for below processor type, only program\r
   // MSR_IA32_RTIT_* for thread 0 in each core.\r
   //\r
   if (IS_GOLDMONT_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel) ||\r
-      IS_GOLDMONT_PLUS_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel)) {\r
+      IS_GOLDMONT_PLUS_PROCESSOR (CpuInfo->DisplayFamily, CpuInfo->DisplayModel))\r
+  {\r
     if (CpuInfo->ProcessorInfo.Location.Thread != 0) {\r
       return RETURN_SUCCESS;\r
     }\r
   }\r
 \r
-  ProcTraceData = (PROC_TRACE_DATA *) ConfigData;\r
+  ProcTraceData = (PROC_TRACE_DATA *)ConfigData;\r
   ASSERT (ProcTraceData != NULL);\r
 \r
   //\r
@@ -235,7 +237,7 @@ ProcTraceInitialize (
   }\r
 \r
   MemRegionBaseAddr = 0;\r
-  FirstIn = FALSE;\r
+  FirstIn           = FALSE;\r
 \r
   if (ProcTraceData->ThreadMemRegionTable == NULL) {\r
     FirstIn = TRUE;\r
@@ -245,7 +247,7 @@ ProcTraceInitialize (
   ///\r
   /// Refer to PROC_TRACE_MEM_SIZE Table for Size Encoding\r
   ///\r
-  MemRegionSize = (UINT32) (1 << (ProcTraceData->ProcTraceMemSize + 12));\r
+  MemRegionSize = (UINT32)(1 << (ProcTraceData->ProcTraceMemSize + 12));\r
   if (FirstIn) {\r
     DEBUG ((DEBUG_INFO, "ProcTrace: MemSize requested: 0x%X \n", MemRegionSize));\r
   }\r
@@ -258,32 +260,34 @@ ProcTraceInitialize (
     //   address base in MSR, IA32_RTIT_OUTPUT_BASE (560h) bits 47:12. Note that all regions must be\r
     //   aligned based on their size, not just 4K. Thus a 2M region must have bits 20:12 cleared.\r
     //\r
-    ThreadMemRegionTable = (UINTN *) AllocatePool (ProcTraceData->NumberOfProcessors * sizeof (UINTN *));\r
+    ThreadMemRegionTable = (UINTN *)AllocatePool (ProcTraceData->NumberOfProcessors * sizeof (UINTN *));\r
     if (ThreadMemRegionTable == NULL) {\r
       DEBUG ((DEBUG_ERROR, "Allocate ProcTrace ThreadMemRegionTable Failed\n"));\r
       return RETURN_OUT_OF_RESOURCES;\r
     }\r
+\r
     ProcTraceData->ThreadMemRegionTable = ThreadMemRegionTable;\r
 \r
     for (Index = 0; Index < ProcTraceData->NumberOfProcessors; Index++, ProcTraceData->AllocatedThreads++) {\r
-      Pages = EFI_SIZE_TO_PAGES (MemRegionSize);\r
-      Alignment = MemRegionSize;\r
-      AlignedAddress = (UINTN) AllocateAlignedReservedPages (Pages, Alignment);\r
+      Pages          = EFI_SIZE_TO_PAGES (MemRegionSize);\r
+      Alignment      = MemRegionSize;\r
+      AlignedAddress = (UINTN)AllocateAlignedReservedPages (Pages, Alignment);\r
       if (AlignedAddress == 0) {\r
         DEBUG ((DEBUG_ERROR, "ProcTrace: Out of mem, allocated only for %d threads\n", ProcTraceData->AllocatedThreads));\r
         if (Index == 0) {\r
           //\r
           // Could not allocate for BSP even\r
           //\r
-          FreePool ((VOID *) ThreadMemRegionTable);\r
+          FreePool ((VOID *)ThreadMemRegionTable);\r
           ThreadMemRegionTable = NULL;\r
           return RETURN_OUT_OF_RESOURCES;\r
         }\r
+\r
         break;\r
       }\r
 \r
       ThreadMemRegionTable[Index] = AlignedAddress;\r
-      DEBUG ((DEBUG_INFO, "ProcTrace: PT MemRegionBaseAddr(aligned) for thread %d: 0x%llX \n", Index, (UINT64) ThreadMemRegionTable[Index]));\r
+      DEBUG ((DEBUG_INFO, "ProcTrace: PT MemRegionBaseAddr(aligned) for thread %d: 0x%llX \n", Index, (UINT64)ThreadMemRegionTable[Index]));\r
     }\r
 \r
     DEBUG ((DEBUG_INFO, "ProcTrace: Allocated PT mem for %d thread \n", ProcTraceData->AllocatedThreads));\r
@@ -303,7 +307,8 @@ ProcTraceInitialize (
   //  Single Range output scheme\r
   //\r
   if (ProcTraceData->ProcessorData[ProcessorNumber].SingleRangeSupported &&\r
-      (ProcTraceData->ProcTraceOutputScheme == RtitOutputSchemeSingleRange)) {\r
+      (ProcTraceData->ProcTraceOutputScheme == RtitOutputSchemeSingleRange))\r
+  {\r
     if (FirstIn) {\r
       DEBUG ((DEBUG_INFO, "ProcTrace: Enabling Single Range Output scheme \n"));\r
     }\r
@@ -322,9 +327,9 @@ ProcTraceInitialize (
     //\r
     // Program MSR IA32_RTIT_OUTPUT_BASE (0x560) bits[63:7] with the allocated Memory Region\r
     //\r
-    OutputBaseReg.Uint64 = ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputBase.Uint64;\r
-    OutputBaseReg.Bits.Base = (MemRegionBaseAddr >> 7) & 0x01FFFFFF;\r
-    OutputBaseReg.Bits.BaseHi = RShiftU64 ((UINT64) MemRegionBaseAddr, 32) & 0xFFFFFFFF;\r
+    OutputBaseReg.Uint64      = ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputBase.Uint64;\r
+    OutputBaseReg.Bits.Base   = (MemRegionBaseAddr >> 7) & 0x01FFFFFF;\r
+    OutputBaseReg.Bits.BaseHi = RShiftU64 ((UINT64)MemRegionBaseAddr, 32) & 0xFFFFFFFF;\r
     CPU_REGISTER_TABLE_WRITE64 (\r
       ProcessorNumber,\r
       Msr,\r
@@ -335,9 +340,9 @@ ProcTraceInitialize (
     //\r
     // Program the Mask bits for the Memory Region to MSR IA32_RTIT_OUTPUT_MASK_PTRS (561h)\r
     //\r
-    OutputMaskPtrsReg.Uint64 = ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputMaskPtrs.Uint64;\r
+    OutputMaskPtrsReg.Uint64                 = ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputMaskPtrs.Uint64;\r
     OutputMaskPtrsReg.Bits.MaskOrTableOffset = ((MemRegionSize - 1) >> 7) & 0x01FFFFFF;\r
-    OutputMaskPtrsReg.Bits.OutputOffset = RShiftU64 (MemRegionSize - 1, 32) & 0xFFFFFFFF;\r
+    OutputMaskPtrsReg.Bits.OutputOffset      = RShiftU64 (MemRegionSize - 1, 32) & 0xFFFFFFFF;\r
     CPU_REGISTER_TABLE_WRITE64 (\r
       ProcessorNumber,\r
       Msr,\r
@@ -350,7 +355,8 @@ ProcTraceInitialize (
   //  ToPA(Table of physical address) scheme\r
   //\r
   if (ProcTraceData->ProcessorData[ProcessorNumber].TopaSupported &&\r
-      (ProcTraceData->ProcTraceOutputScheme == RtitOutputSchemeToPA)) {\r
+      (ProcTraceData->ProcTraceOutputScheme == RtitOutputSchemeToPA))\r
+  {\r
     //\r
     //  Create ToPA structure aligned at 4KB for each logical thread\r
     //  with at least 2 entries by 8 bytes size each. The first entry\r
@@ -364,35 +370,38 @@ ProcTraceInitialize (
       //\r
       // Let BSP allocate ToPA table mem for all threads\r
       //\r
-      TopaMemArray = (UINTN *) AllocatePool (ProcTraceData->AllocatedThreads * sizeof (UINTN *));\r
+      TopaMemArray = (UINTN *)AllocatePool (ProcTraceData->AllocatedThreads * sizeof (UINTN *));\r
       if (TopaMemArray == NULL) {\r
         DEBUG ((DEBUG_ERROR, "ProcTrace: Allocate mem for ToPA Failed\n"));\r
         return RETURN_OUT_OF_RESOURCES;\r
       }\r
+\r
       ProcTraceData->TopaMemArray = TopaMemArray;\r
 \r
       for (Index = 0; Index < ProcTraceData->AllocatedThreads; Index++) {\r
-        Pages = EFI_SIZE_TO_PAGES (sizeof (PROC_TRACE_TOPA_TABLE));\r
-        Alignment = 0x1000;\r
-        AlignedAddress = (UINTN) AllocateAlignedReservedPages (Pages, Alignment);\r
+        Pages          = EFI_SIZE_TO_PAGES (sizeof (PROC_TRACE_TOPA_TABLE));\r
+        Alignment      = 0x1000;\r
+        AlignedAddress = (UINTN)AllocateAlignedReservedPages (Pages, Alignment);\r
         if (AlignedAddress == 0) {\r
           if (Index < ProcTraceData->AllocatedThreads) {\r
             ProcTraceData->AllocatedThreads = Index;\r
           }\r
+\r
           DEBUG ((DEBUG_ERROR, "ProcTrace:  Out of mem, allocated ToPA mem only for %d threads\n", ProcTraceData->AllocatedThreads));\r
           if (Index == 0) {\r
             //\r
             // Could not allocate for BSP even\r
             //\r
-            FreePool ((VOID *) TopaMemArray);\r
+            FreePool ((VOID *)TopaMemArray);\r
             TopaMemArray = NULL;\r
             return RETURN_OUT_OF_RESOURCES;\r
           }\r
+\r
           break;\r
         }\r
 \r
         TopaMemArray[Index] = AlignedAddress;\r
-        DEBUG ((DEBUG_INFO, "ProcTrace: Topa table address(aligned) for thread %d is 0x%llX \n", Index,  (UINT64) TopaMemArray[Index]));\r
+        DEBUG ((DEBUG_INFO, "ProcTrace: Topa table address(aligned) for thread %d is 0x%llX \n", Index, (UINT64)TopaMemArray[Index]));\r
       }\r
 \r
       DEBUG ((DEBUG_INFO, "ProcTrace: Allocated ToPA mem for %d thread \n", ProcTraceData->AllocatedThreads));\r
@@ -404,26 +413,26 @@ ProcTraceInitialize (
       return RETURN_SUCCESS;\r
     }\r
 \r
-    TopaTable = (PROC_TRACE_TOPA_TABLE *) TopaTableBaseAddr;\r
-    TopaEntryPtr = &TopaTable->TopaEntry[0];\r
-    TopaEntryPtr->Uint64 = 0;\r
-    TopaEntryPtr->Bits.Base = (MemRegionBaseAddr >> 12) & 0x000FFFFF;\r
-    TopaEntryPtr->Bits.BaseHi = RShiftU64 ((UINT64) MemRegionBaseAddr, 32) & 0xFFFFFFFF;\r
-    TopaEntryPtr->Bits.Size = ProcTraceData->ProcTraceMemSize;\r
-    TopaEntryPtr->Bits.END = 0;\r
+    TopaTable                 = (PROC_TRACE_TOPA_TABLE *)TopaTableBaseAddr;\r
+    TopaEntryPtr              = &TopaTable->TopaEntry[0];\r
+    TopaEntryPtr->Uint64      = 0;\r
+    TopaEntryPtr->Bits.Base   = (MemRegionBaseAddr >> 12) & 0x000FFFFF;\r
+    TopaEntryPtr->Bits.BaseHi = RShiftU64 ((UINT64)MemRegionBaseAddr, 32) & 0xFFFFFFFF;\r
+    TopaEntryPtr->Bits.Size   = ProcTraceData->ProcTraceMemSize;\r
+    TopaEntryPtr->Bits.END    = 0;\r
 \r
-    TopaEntryPtr = &TopaTable->TopaEntry[1];\r
-    TopaEntryPtr->Uint64 = 0;\r
-    TopaEntryPtr->Bits.Base = (TopaTableBaseAddr >> 12) & 0x000FFFFF;\r
-    TopaEntryPtr->Bits.BaseHi = RShiftU64 ((UINT64) TopaTableBaseAddr, 32) & 0xFFFFFFFF;\r
-    TopaEntryPtr->Bits.END = 1;\r
+    TopaEntryPtr              = &TopaTable->TopaEntry[1];\r
+    TopaEntryPtr->Uint64      = 0;\r
+    TopaEntryPtr->Bits.Base   = (TopaTableBaseAddr >> 12) & 0x000FFFFF;\r
+    TopaEntryPtr->Bits.BaseHi = RShiftU64 ((UINT64)TopaTableBaseAddr, 32) & 0xFFFFFFFF;\r
+    TopaEntryPtr->Bits.END    = 1;\r
 \r
     //\r
     // Program the MSR IA32_RTIT_OUTPUT_BASE (0x560) bits[63:7] with ToPA base\r
     //\r
-    OutputBaseReg.Uint64 = ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputBase.Uint64;\r
-    OutputBaseReg.Bits.Base = (TopaTableBaseAddr >> 7) & 0x01FFFFFF;\r
-    OutputBaseReg.Bits.BaseHi = RShiftU64 ((UINT64) TopaTableBaseAddr, 32) & 0xFFFFFFFF;\r
+    OutputBaseReg.Uint64      = ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputBase.Uint64;\r
+    OutputBaseReg.Bits.Base   = (TopaTableBaseAddr >> 7) & 0x01FFFFFF;\r
+    OutputBaseReg.Bits.BaseHi = RShiftU64 ((UINT64)TopaTableBaseAddr, 32) & 0xFFFFFFFF;\r
     CPU_REGISTER_TABLE_WRITE64 (\r
       ProcessorNumber,\r
       Msr,\r
@@ -434,9 +443,9 @@ ProcTraceInitialize (
     //\r
     // Set the MSR IA32_RTIT_OUTPUT_MASK (0x561) bits[63:7] to 0\r
     //\r
-    OutputMaskPtrsReg.Uint64 = ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputMaskPtrs.Uint64;\r
+    OutputMaskPtrsReg.Uint64                 = ProcTraceData->ProcessorData[ProcessorNumber].RtitOutputMaskPtrs.Uint64;\r
     OutputMaskPtrsReg.Bits.MaskOrTableOffset = 0;\r
-    OutputMaskPtrsReg.Bits.OutputOffset = 0;\r
+    OutputMaskPtrsReg.Bits.OutputOffset      = 0;\r
     CPU_REGISTER_TABLE_WRITE64 (\r
       ProcessorNumber,\r
       Msr,\r
@@ -458,10 +467,10 @@ ProcTraceInitialize (
   ///\r
   /// Enable the Processor Trace feature from MSR IA32_RTIT_CTL (570h)\r
   ///\r
-  CtrlReg.Bits.OS = 1;\r
-  CtrlReg.Bits.User = 1;\r
+  CtrlReg.Bits.OS       = 1;\r
+  CtrlReg.Bits.User     = 1;\r
   CtrlReg.Bits.BranchEn = 1;\r
-  CtrlReg.Bits.TraceEn = 1;\r
+  CtrlReg.Bits.TraceEn  = 1;\r
   CPU_REGISTER_TABLE_WRITE64 (\r
     ProcessorNumber,\r
     Msr,\r
index 181dcae21cab22ddd493ba1c35b4d0c6106d79c6..220f307e5a6df01bf072e742febdd2c6f5178cc7 100644 (file)
@@ -23,7 +23,7 @@ X2ApicGetConfigData (
   IN UINTN  NumberOfProcessors\r
   )\r
 {\r
-  BOOLEAN                            *ConfigData;\r
+  BOOLEAN  *ConfigData;\r
 \r
   ConfigData = AllocateZeroPool (sizeof (BOOLEAN) * NumberOfProcessors);\r
   ASSERT (ConfigData != NULL);\r
@@ -56,10 +56,10 @@ X2ApicSupport (
   IN VOID                              *ConfigData  OPTIONAL\r
   )\r
 {\r
-  BOOLEAN                            *X2ApicEnabled;\r
+  BOOLEAN  *X2ApicEnabled;\r
 \r
   ASSERT (ConfigData != NULL);\r
-  X2ApicEnabled = (BOOLEAN *) ConfigData;\r
+  X2ApicEnabled = (BOOLEAN *)ConfigData;\r
   //\r
   // *ConfigData indicates if X2APIC enabled on current processor\r
   //\r
@@ -94,7 +94,7 @@ X2ApicInitialize (
   IN BOOLEAN                           State\r
   )\r
 {\r
-  BOOLEAN                            *X2ApicEnabled;\r
+  BOOLEAN  *X2ApicEnabled;\r
 \r
   //\r
   // The scope of the MSR_IA32_APIC_BASE is core for below processor type, only program\r
@@ -107,7 +107,7 @@ X2ApicInitialize (
   }\r
 \r
   ASSERT (ConfigData != NULL);\r
-  X2ApicEnabled = (BOOLEAN *) ConfigData;\r
+  X2ApicEnabled = (BOOLEAN *)ConfigData;\r
   if (X2ApicEnabled[ProcessorNumber]) {\r
     PRE_SMM_CPU_REGISTER_TABLE_WRITE_FIELD (\r
       ProcessorNumber,\r
@@ -133,5 +133,6 @@ X2ApicInitialize (
         );\r
     }\r
   }\r
+\r
   return RETURN_SUCCESS;\r
 }\r
index 49d0041e2ff3230f238b26dff4d7f658563ba6a5..903fac927e3e8a99f9bce9772c6abf30c93dc4f9 100644 (file)
 //\r
 // 1 means an error code will be pushed, otherwise 0\r
 //\r
-CONST UINT32 mErrorCodeFlag = 0x20227d00;\r
+CONST UINT32  mErrorCodeFlag = 0x20227d00;\r
 \r
 //\r
 // Define the maximum message length\r
 //\r
 #define MAX_DEBUG_MESSAGE_LENGTH  0x100\r
 \r
-CONST CHAR8 mExceptionReservedStr[] = "Reserved";\r
-CONST CHAR8 *mExceptionNameStr[] = {\r
+CONST CHAR8  mExceptionReservedStr[] = "Reserved";\r
+CONST CHAR8  *mExceptionNameStr[]    = {\r
   "#DE - Divide Error",\r
   "#DB - Debug",\r
   "NMI Interrupt",\r
@@ -66,10 +66,10 @@ CONST CHAR8 *mExceptionNameStr[] = {
 **/\r
 CONST CHAR8 *\r
 GetExceptionNameStr (\r
-  IN EFI_EXCEPTION_TYPE          ExceptionType\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType\r
   )\r
 {\r
-  if ((UINTN) ExceptionType < EXCEPTION_KNOWN_NAME_NUM) {\r
+  if ((UINTN)ExceptionType < EXCEPTION_KNOWN_NAME_NUM) {\r
     return mExceptionNameStr[ExceptionType];\r
   } else {\r
     return mExceptionReservedStr;\r
@@ -115,13 +115,13 @@ InternalPrintMessage (
 **/\r
 VOID\r
 DumpModuleImageInfo (\r
-  IN  UINTN              CurrentEip\r
+  IN  UINTN  CurrentEip\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  UINTN                                Pe32Data;\r
-  VOID                                 *PdbPointer;\r
-  VOID                                 *EntryPoint;\r
+  EFI_STATUS  Status;\r
+  UINTN       Pe32Data;\r
+  VOID        *PdbPointer;\r
+  VOID        *EntryPoint;\r
 \r
   Pe32Data = PeCoffSearchImageBase (CurrentEip);\r
   if (Pe32Data == 0) {\r
@@ -130,20 +130,22 @@ DumpModuleImageInfo (
     //\r
     // Find Image Base entry point\r
     //\r
-    Status = PeCoffLoaderGetEntryPoint ((VOID *) Pe32Data, &EntryPoint);\r
+    Status = PeCoffLoaderGetEntryPoint ((VOID *)Pe32Data, &EntryPoint);\r
     if (EFI_ERROR (Status)) {\r
       EntryPoint = NULL;\r
     }\r
+\r
     InternalPrintMessage ("!!!! Find image based on IP(0x%x) ", CurrentEip);\r
-    PdbPointer = PeCoffLoaderGetPdbPointer ((VOID *) Pe32Data);\r
+    PdbPointer = PeCoffLoaderGetPdbPointer ((VOID *)Pe32Data);\r
     if (PdbPointer != NULL) {\r
       InternalPrintMessage ("%a", PdbPointer);\r
     } else {\r
-      InternalPrintMessage ("(No PDB) " );\r
+      InternalPrintMessage ("(No PDB) ");\r
     }\r
+\r
     InternalPrintMessage (\r
       " (ImageBase=%016lp, EntryPoint=%016p) !!!!\n",\r
-      (VOID *) Pe32Data,\r
+      (VOID *)Pe32Data,\r
       EntryPoint\r
       );\r
   }\r
@@ -162,9 +164,9 @@ DumpModuleImageInfo (
 **/\r
 EFI_STATUS\r
 ReadAndVerifyVectorInfo (\r
-  IN  EFI_VECTOR_HANDOFF_INFO       *VectorInfo,\r
-  OUT RESERVED_VECTORS_DATA         *ReservedVector,\r
-  IN  UINTN                         VectorCount\r
+  IN  EFI_VECTOR_HANDOFF_INFO  *VectorInfo,\r
+  OUT RESERVED_VECTORS_DATA    *ReservedVector,\r
+  IN  UINTN                    VectorCount\r
   )\r
 {\r
   while (VectorInfo->Attribute != EFI_VECTOR_HANDOFF_LAST_ENTRY) {\r
@@ -174,10 +176,13 @@ ReadAndVerifyVectorInfo (
       //\r
       return EFI_INVALID_PARAMETER;\r
     }\r
+\r
     if (VectorInfo->VectorNumber < VectorCount) {\r
       ReservedVector[VectorInfo->VectorNumber].Attribute = VectorInfo->Attribute;\r
     }\r
-    VectorInfo ++;\r
+\r
+    VectorInfo++;\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
index 0544d6dba631784453b771b4f3ccde6daf7735f1..0f012bccde2b02c85b971ab6b76bd0dbaf98058d 100644 (file)
 #include <Library/SynchronizationLib.h>\r
 #include <Library/CpuExceptionHandlerLib.h>\r
 \r
-#define  CPU_EXCEPTION_NUM          32\r
-#define  CPU_INTERRUPT_NUM         256\r
-#define  HOOKAFTER_STUB_SIZE        16\r
+#define  CPU_EXCEPTION_NUM    32\r
+#define  CPU_INTERRUPT_NUM    256\r
+#define  HOOKAFTER_STUB_SIZE  16\r
 \r
 //\r
 // Exception Error Code of Page-Fault Exception\r
 //\r
-#define IA32_PF_EC_P                BIT0\r
-#define IA32_PF_EC_WR               BIT1\r
-#define IA32_PF_EC_US               BIT2\r
-#define IA32_PF_EC_RSVD             BIT3\r
-#define IA32_PF_EC_ID               BIT4\r
-#define IA32_PF_EC_PK               BIT5\r
-#define IA32_PF_EC_SS               BIT6\r
-#define IA32_PF_EC_SGX              BIT15\r
+#define IA32_PF_EC_P     BIT0\r
+#define IA32_PF_EC_WR    BIT1\r
+#define IA32_PF_EC_US    BIT2\r
+#define IA32_PF_EC_RSVD  BIT3\r
+#define IA32_PF_EC_ID    BIT4\r
+#define IA32_PF_EC_PK    BIT5\r
+#define IA32_PF_EC_SS    BIT6\r
+#define IA32_PF_EC_SGX   BIT15\r
 \r
 #include "ArchInterruptDefs.h"\r
 \r
 #define CPU_KNOWN_GOOD_STACK_SIZE \\r
   FixedPcdGet32 (PcdCpuKnownGoodStackSize)\r
 \r
-#define CPU_TSS_GDT_SIZE (SIZE_2KB + CPU_TSS_DESC_SIZE + CPU_TSS_SIZE)\r
+#define CPU_TSS_GDT_SIZE  (SIZE_2KB + CPU_TSS_DESC_SIZE + CPU_TSS_SIZE)\r
 \r
 //\r
 // Record exception handler information\r
 //\r
 typedef struct {\r
-  UINTN ExceptionStart;\r
-  UINTN ExceptionStubHeaderSize;\r
-  UINTN HookAfterStubHeaderStart;\r
+  UINTN    ExceptionStart;\r
+  UINTN    ExceptionStubHeaderSize;\r
+  UINTN    HookAfterStubHeaderStart;\r
 } EXCEPTION_HANDLER_TEMPLATE_MAP;\r
 \r
 typedef struct {\r
-  UINTN                       IdtEntryCount;\r
-  SPIN_LOCK                   DisplayMessageSpinLock;\r
-  RESERVED_VECTORS_DATA       *ReservedVectors;\r
-  EFI_CPU_INTERRUPT_HANDLER   *ExternalInterruptHandler;\r
+  UINTN                        IdtEntryCount;\r
+  SPIN_LOCK                    DisplayMessageSpinLock;\r
+  RESERVED_VECTORS_DATA        *ReservedVectors;\r
+  EFI_CPU_INTERRUPT_HANDLER    *ExternalInterruptHandler;\r
 } EXCEPTION_HANDLER_DATA;\r
 \r
-extern CONST UINT32                mErrorCodeFlag;\r
-extern CONST UINTN                 mDoFarReturnFlag;\r
+extern CONST UINT32  mErrorCodeFlag;\r
+extern CONST UINTN   mDoFarReturnFlag;\r
 \r
 /**\r
   Return address map of exception handler template so that C code can generate\r
@@ -77,7 +77,7 @@ extern CONST UINTN                 mDoFarReturnFlag;
 VOID\r
 EFIAPI\r
 AsmGetTemplateAddressMap (\r
-  OUT EXCEPTION_HANDLER_TEMPLATE_MAP *AddressMap\r
+  OUT EXCEPTION_HANDLER_TEMPLATE_MAP  *AddressMap\r
   );\r
 \r
 /**\r
@@ -90,8 +90,8 @@ AsmGetTemplateAddressMap (
 **/\r
 VOID\r
 ArchUpdateIdtEntry (\r
-  OUT IA32_IDT_GATE_DESCRIPTOR       *IdtEntry,\r
-  IN  UINTN                          InterruptHandler\r
+  OUT IA32_IDT_GATE_DESCRIPTOR  *IdtEntry,\r
+  IN  UINTN                     InterruptHandler\r
   );\r
 \r
 /**\r
@@ -102,7 +102,7 @@ ArchUpdateIdtEntry (
 **/\r
 UINTN\r
 ArchGetIdtHandler (\r
-  IN IA32_IDT_GATE_DESCRIPTOR        *IdtEntry\r
+  IN IA32_IDT_GATE_DESCRIPTOR  *IdtEntry\r
   );\r
 \r
 /**\r
@@ -128,7 +128,7 @@ InternalPrintMessage (
 **/\r
 VOID\r
 DumpModuleImageInfo (\r
-  IN  UINTN              CurrentEip\r
+  IN  UINTN  CurrentEip\r
   );\r
 \r
 /**\r
@@ -139,8 +139,8 @@ DumpModuleImageInfo (
 **/\r
 VOID\r
 DumpImageAndCpuContent (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   );\r
 \r
 /**\r
@@ -157,8 +157,8 @@ DumpImageAndCpuContent (
 **/\r
 EFI_STATUS\r
 InitializeCpuExceptionHandlersWorker (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL,\r
-  IN OUT EXCEPTION_HANDLER_DATA    *ExceptionHandlerData\r
+  IN EFI_VECTOR_HANDOFF_INFO     *VectorInfo OPTIONAL,\r
+  IN OUT EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   );\r
 \r
 /**\r
@@ -180,9 +180,9 @@ InitializeCpuExceptionHandlersWorker (
 **/\r
 EFI_STATUS\r
 RegisterCpuInterruptHandlerWorker (\r
-  IN EFI_EXCEPTION_TYPE            InterruptType,\r
-  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler,\r
-  IN EXCEPTION_HANDLER_DATA        *ExceptionHandlerData\r
+  IN EFI_EXCEPTION_TYPE         InterruptType,\r
+  IN EFI_CPU_INTERRUPT_HANDLER  InterruptHandler,\r
+  IN EXCEPTION_HANDLER_DATA     *ExceptionHandlerData\r
   );\r
 \r
 /**\r
@@ -210,9 +210,9 @@ UpdateIdtTable (
 **/\r
 VOID\r
 ArchSaveExceptionContext (\r
-  IN UINTN                        ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT           SystemContext,\r
-  IN EXCEPTION_HANDLER_DATA       *ExceptionHandlerData\r
+  IN UINTN                   ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT      SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   );\r
 \r
 /**\r
@@ -224,9 +224,9 @@ ArchSaveExceptionContext (
 **/\r
 VOID\r
 ArchRestoreExceptionContext (\r
-  IN UINTN                        ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT           SystemContext,\r
-  IN EXCEPTION_HANDLER_DATA       *ExceptionHandlerData\r
+  IN UINTN                   ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT      SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   );\r
 \r
 /**\r
@@ -240,9 +240,9 @@ ArchRestoreExceptionContext (
 VOID\r
 EFIAPI\r
 AsmVectorNumFixup (\r
-  IN VOID    *NewVectorAddr,\r
-  IN UINT8   VectorNum,\r
-  IN VOID    *OldVectorAddr\r
+  IN VOID   *NewVectorAddr,\r
+  IN UINT8  VectorNum,\r
+  IN VOID   *OldVectorAddr\r
   );\r
 \r
 /**\r
@@ -258,9 +258,9 @@ AsmVectorNumFixup (
 **/\r
 EFI_STATUS\r
 ReadAndVerifyVectorInfo (\r
-  IN  EFI_VECTOR_HANDOFF_INFO       *VectorInfo,\r
-  OUT RESERVED_VECTORS_DATA         *ReservedVector,\r
-  IN  UINTN                         VectorCount\r
+  IN  EFI_VECTOR_HANDOFF_INFO  *VectorInfo,\r
+  OUT RESERVED_VECTORS_DATA    *ReservedVector,\r
+  IN  UINTN                    VectorCount\r
   );\r
 \r
 /**\r
@@ -272,7 +272,7 @@ ReadAndVerifyVectorInfo (
 **/\r
 CONST CHAR8 *\r
 GetExceptionNameStr (\r
-  IN EFI_EXCEPTION_TYPE          ExceptionType\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType\r
   );\r
 \r
 /**\r
@@ -284,9 +284,9 @@ GetExceptionNameStr (
 **/\r
 VOID\r
 CommonExceptionHandlerWorker (\r
-  IN EFI_EXCEPTION_TYPE          ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT          SystemContext,\r
-  IN EXCEPTION_HANDLER_DATA      *ExceptionHandlerData\r
+  IN EFI_EXCEPTION_TYPE      ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT      SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   );\r
 \r
 /**\r
@@ -301,7 +301,7 @@ CommonExceptionHandlerWorker (
 **/\r
 EFI_STATUS\r
 ArchSetupExceptionStack (\r
-  IN CPU_EXCEPTION_INIT_DATA        *StackSwitchData\r
+  IN CPU_EXCEPTION_INIT_DATA  *StackSwitchData\r
   );\r
 \r
 /**\r
@@ -318,4 +318,3 @@ AsmGetTssTemplateMap (
   );\r
 \r
 #endif\r
-\r
index fd59f09ecd082e21bd563b59cc9aee8bfe39fcc9..61f11e98f8dc6ecdd9561b8d506c72da28a30958 100644 (file)
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/UefiBootServicesTableLib.h>\r
 \r
-CONST UINTN    mDoFarReturnFlag  = 0;\r
+CONST UINTN  mDoFarReturnFlag = 0;\r
 \r
-RESERVED_VECTORS_DATA       mReservedVectorsData[CPU_EXCEPTION_NUM];\r
-EFI_CPU_INTERRUPT_HANDLER   mExternalInterruptHandlerTable[CPU_EXCEPTION_NUM];\r
-UINTN                       mEnabledInterruptNum = 0;\r
+RESERVED_VECTORS_DATA      mReservedVectorsData[CPU_EXCEPTION_NUM];\r
+EFI_CPU_INTERRUPT_HANDLER  mExternalInterruptHandlerTable[CPU_EXCEPTION_NUM];\r
+UINTN                      mEnabledInterruptNum = 0;\r
 \r
-EXCEPTION_HANDLER_DATA      mExceptionHandlerData;\r
+EXCEPTION_HANDLER_DATA  mExceptionHandlerData;\r
 \r
-UINT8                       mNewStack[CPU_STACK_SWITCH_EXCEPTION_NUMBER *\r
-                                      CPU_KNOWN_GOOD_STACK_SIZE];\r
-UINT8                       mNewGdt[CPU_TSS_GDT_SIZE];\r
+UINT8  mNewStack[CPU_STACK_SWITCH_EXCEPTION_NUMBER *\r
+                 CPU_KNOWN_GOOD_STACK_SIZE];\r
+UINT8  mNewGdt[CPU_TSS_GDT_SIZE];\r
 \r
 /**\r
   Common exception handler.\r
@@ -33,8 +33,8 @@ UINT8                       mNewGdt[CPU_TSS_GDT_SIZE];
 VOID\r
 EFIAPI\r
 CommonExceptionHandler (\r
-  IN EFI_EXCEPTION_TYPE          ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT          SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   CommonExceptionHandlerWorker (ExceptionType, SystemContext, &mExceptionHandlerData);\r
@@ -59,7 +59,7 @@ CommonExceptionHandler (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuExceptionHandlers (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL\r
   )\r
 {\r
   mExceptionHandlerData.ReservedVectors          = mReservedVectorsData;\r
@@ -87,19 +87,19 @@ InitializeCpuExceptionHandlers (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuInterruptHandlers (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS                         Status;\r
-  IA32_IDT_GATE_DESCRIPTOR           *IdtTable;\r
-  IA32_DESCRIPTOR                    IdtDescriptor;\r
-  UINTN                              IdtEntryCount;\r
-  EXCEPTION_HANDLER_TEMPLATE_MAP     TemplateMap;\r
-  UINTN                              Index;\r
-  UINTN                              InterruptEntry;\r
-  UINT8                              *InterruptEntryCode;\r
-  RESERVED_VECTORS_DATA              *ReservedVectors;\r
-  EFI_CPU_INTERRUPT_HANDLER          *ExternalInterruptHandler;\r
+  EFI_STATUS                      Status;\r
+  IA32_IDT_GATE_DESCRIPTOR        *IdtTable;\r
+  IA32_DESCRIPTOR                 IdtDescriptor;\r
+  UINTN                           IdtEntryCount;\r
+  EXCEPTION_HANDLER_TEMPLATE_MAP  TemplateMap;\r
+  UINTN                           Index;\r
+  UINTN                           InterruptEntry;\r
+  UINT8                           *InterruptEntryCode;\r
+  RESERVED_VECTORS_DATA           *ReservedVectors;\r
+  EFI_CPU_INTERRUPT_HANDLER       *ExternalInterruptHandler;\r
 \r
   Status = gBS->AllocatePool (\r
                   EfiBootServicesCode,\r
@@ -107,7 +107,7 @@ InitializeCpuInterruptHandlers (
                   (VOID **)&ReservedVectors\r
                   );\r
   ASSERT (!EFI_ERROR (Status) && ReservedVectors != NULL);\r
-  SetMem ((VOID *) ReservedVectors, sizeof (RESERVED_VECTORS_DATA) * CPU_INTERRUPT_NUM, 0xff);\r
+  SetMem ((VOID *)ReservedVectors, sizeof (RESERVED_VECTORS_DATA) * CPU_INTERRUPT_NUM, 0xff);\r
   if (VectorInfo != NULL) {\r
     Status = ReadAndVerifyVectorInfo (VectorInfo, ReservedVectors, CPU_INTERRUPT_NUM);\r
     if (EFI_ERROR (Status)) {\r
@@ -127,6 +127,7 @@ InitializeCpuInterruptHandlers (
   if (IdtEntryCount > CPU_INTERRUPT_NUM) {\r
     IdtEntryCount = CPU_INTERRUPT_NUM;\r
   }\r
+\r
   //\r
   // Create Interrupt Descriptor Table and Copy the old IDT table in\r
   //\r
@@ -144,18 +145,18 @@ InitializeCpuInterruptHandlers (
                   );\r
   ASSERT (!EFI_ERROR (Status) && InterruptEntryCode != NULL);\r
 \r
-  InterruptEntry = (UINTN) InterruptEntryCode;\r
-  for (Index = 0; Index < CPU_INTERRUPT_NUM; Index ++) {\r
+  InterruptEntry = (UINTN)InterruptEntryCode;\r
+  for (Index = 0; Index < CPU_INTERRUPT_NUM; Index++) {\r
     CopyMem (\r
-      (VOID *) InterruptEntry,\r
-      (VOID *) TemplateMap.ExceptionStart,\r
+      (VOID *)InterruptEntry,\r
+      (VOID *)TemplateMap.ExceptionStart,\r
       TemplateMap.ExceptionStubHeaderSize\r
       );\r
-    AsmVectorNumFixup ((VOID *) InterruptEntry,  (UINT8) Index, (VOID *) TemplateMap.ExceptionStart);\r
+    AsmVectorNumFixup ((VOID *)InterruptEntry, (UINT8)Index, (VOID *)TemplateMap.ExceptionStart);\r
     InterruptEntry += TemplateMap.ExceptionStubHeaderSize;\r
   }\r
 \r
-  TemplateMap.ExceptionStart = (UINTN) InterruptEntryCode;\r
+  TemplateMap.ExceptionStart                     = (UINTN)InterruptEntryCode;\r
   mExceptionHandlerData.IdtEntryCount            = CPU_INTERRUPT_NUM;\r
   mExceptionHandlerData.ReservedVectors          = ReservedVectors;\r
   mExceptionHandlerData.ExternalInterruptHandler = ExternalInterruptHandler;\r
@@ -166,9 +167,9 @@ InitializeCpuInterruptHandlers (
   //\r
   // Load Interrupt Descriptor Table\r
   //\r
-  IdtDescriptor.Base  = (UINTN) IdtTable;\r
-  IdtDescriptor.Limit = (UINT16) (sizeof (IA32_IDT_GATE_DESCRIPTOR) * CPU_INTERRUPT_NUM - 1);\r
-  AsmWriteIdtr ((IA32_DESCRIPTOR *) &IdtDescriptor);\r
+  IdtDescriptor.Base  = (UINTN)IdtTable;\r
+  IdtDescriptor.Limit = (UINT16)(sizeof (IA32_IDT_GATE_DESCRIPTOR) * CPU_INTERRUPT_NUM - 1);\r
+  AsmWriteIdtr ((IA32_DESCRIPTOR *)&IdtDescriptor);\r
 \r
   return EFI_SUCCESS;\r
 }\r
@@ -199,8 +200,8 @@ InitializeCpuInterruptHandlers (
 EFI_STATUS\r
 EFIAPI\r
 RegisterCpuInterruptHandler (\r
-  IN EFI_EXCEPTION_TYPE            InterruptType,\r
-  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
+  IN EFI_EXCEPTION_TYPE         InterruptType,\r
+  IN EFI_CPU_INTERRUPT_HANDLER  InterruptHandler\r
   )\r
 {\r
   return RegisterCpuInterruptHandlerWorker (InterruptType, InterruptHandler, &mExceptionHandlerData);\r
@@ -230,14 +231,14 @@ RegisterCpuInterruptHandler (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuExceptionHandlersEx (\r
-  IN EFI_VECTOR_HANDOFF_INFO            *VectorInfo OPTIONAL,\r
-  IN CPU_EXCEPTION_INIT_DATA            *InitData OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL,\r
+  IN CPU_EXCEPTION_INIT_DATA  *InitData OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS                        Status;\r
-  CPU_EXCEPTION_INIT_DATA           EssData;\r
-  IA32_DESCRIPTOR                   Idtr;\r
-  IA32_DESCRIPTOR                   Gdtr;\r
+  EFI_STATUS               Status;\r
+  CPU_EXCEPTION_INIT_DATA  EssData;\r
+  IA32_DESCRIPTOR          Idtr;\r
+  IA32_DESCRIPTOR          Gdtr;\r
 \r
   //\r
   // To avoid repeat initialization of default handlers, the caller should pass\r
@@ -246,7 +247,7 @@ InitializeCpuExceptionHandlersEx (
   // version instead; or this method must be implemented as a simple wrapper of\r
   // non-ex version of it, if this version has to be called.\r
   //\r
-  if (InitData == NULL || InitData->X64.InitDefaultHandlers) {\r
+  if ((InitData == NULL) || InitData->X64.InitDefaultHandlers) {\r
     Status = InitializeCpuExceptionHandlers (VectorInfo);\r
   } else {\r
     Status = EFI_SUCCESS;\r
@@ -263,25 +264,26 @@ InitializeCpuExceptionHandlersEx (
         AsmReadIdtr (&Idtr);\r
         AsmReadGdtr (&Gdtr);\r
 \r
-        EssData.X64.Revision = CPU_EXCEPTION_INIT_DATA_REV;\r
-        EssData.X64.KnownGoodStackTop = (UINTN)mNewStack + sizeof (mNewStack);\r
-        EssData.X64.KnownGoodStackSize = CPU_KNOWN_GOOD_STACK_SIZE;\r
-        EssData.X64.StackSwitchExceptions = CPU_STACK_SWITCH_EXCEPTION_LIST;\r
+        EssData.X64.Revision                   = CPU_EXCEPTION_INIT_DATA_REV;\r
+        EssData.X64.KnownGoodStackTop          = (UINTN)mNewStack + sizeof (mNewStack);\r
+        EssData.X64.KnownGoodStackSize         = CPU_KNOWN_GOOD_STACK_SIZE;\r
+        EssData.X64.StackSwitchExceptions      = CPU_STACK_SWITCH_EXCEPTION_LIST;\r
         EssData.X64.StackSwitchExceptionNumber = CPU_STACK_SWITCH_EXCEPTION_NUMBER;\r
-        EssData.X64.IdtTable = (VOID *)Idtr.Base;\r
-        EssData.X64.IdtTableSize = Idtr.Limit + 1;\r
-        EssData.X64.GdtTable = mNewGdt;\r
-        EssData.X64.GdtTableSize = sizeof (mNewGdt);\r
-        EssData.X64.ExceptionTssDesc = mNewGdt + Gdtr.Limit + 1;\r
-        EssData.X64.ExceptionTssDescSize = CPU_TSS_DESC_SIZE;\r
-        EssData.X64.ExceptionTss = mNewGdt + Gdtr.Limit + 1 + CPU_TSS_DESC_SIZE;\r
-        EssData.X64.ExceptionTssSize = CPU_TSS_SIZE;\r
+        EssData.X64.IdtTable                   = (VOID *)Idtr.Base;\r
+        EssData.X64.IdtTableSize               = Idtr.Limit + 1;\r
+        EssData.X64.GdtTable                   = mNewGdt;\r
+        EssData.X64.GdtTableSize               = sizeof (mNewGdt);\r
+        EssData.X64.ExceptionTssDesc           = mNewGdt + Gdtr.Limit + 1;\r
+        EssData.X64.ExceptionTssDescSize       = CPU_TSS_DESC_SIZE;\r
+        EssData.X64.ExceptionTss               = mNewGdt + Gdtr.Limit + 1 + CPU_TSS_DESC_SIZE;\r
+        EssData.X64.ExceptionTssSize           = CPU_TSS_SIZE;\r
 \r
         InitData = &EssData;\r
       }\r
+\r
       Status = ArchSetupExceptionStack (InitData);\r
     }\r
   }\r
 \r
-  return  Status;\r
+  return Status;\r
 }\r
index 903449e0daa9109cdd81dc0c4ddfb1d17b4d0779..f13e8e70206ec7c9a823236c9a1c1f95934c1beb 100644 (file)
 **/\r
 VOID\r
 ArchUpdateIdtEntry (\r
-  OUT IA32_IDT_GATE_DESCRIPTOR        *IdtEntry,\r
-  IN  UINTN                           InterruptHandler\r
+  OUT IA32_IDT_GATE_DESCRIPTOR  *IdtEntry,\r
+  IN  UINTN                     InterruptHandler\r
   )\r
 {\r
-  IdtEntry->Bits.OffsetLow   = (UINT16)(UINTN)InterruptHandler;\r
-  IdtEntry->Bits.OffsetHigh  = (UINT16)((UINTN)InterruptHandler >> 16);\r
-  IdtEntry->Bits.GateType    = IA32_IDT_GATE_TYPE_INTERRUPT_32;\r
+  IdtEntry->Bits.OffsetLow  = (UINT16)(UINTN)InterruptHandler;\r
+  IdtEntry->Bits.OffsetHigh = (UINT16)((UINTN)InterruptHandler >> 16);\r
+  IdtEntry->Bits.GateType   = IA32_IDT_GATE_TYPE_INTERRUPT_32;\r
 }\r
 \r
 /**\r
@@ -35,7 +35,7 @@ ArchUpdateIdtEntry (
 **/\r
 UINTN\r
 ArchGetIdtHandler (\r
-  IN IA32_IDT_GATE_DESCRIPTOR        *IdtEntry\r
+  IN IA32_IDT_GATE_DESCRIPTOR  *IdtEntry\r
   )\r
 {\r
   return (UINTN)IdtEntry->Bits.OffsetLow + (((UINTN)IdtEntry->Bits.OffsetHigh) << 16);\r
@@ -50,13 +50,13 @@ ArchGetIdtHandler (
 **/\r
 VOID\r
 ArchSaveExceptionContext (\r
-  IN UINTN                        ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT           SystemContext,\r
-  IN EXCEPTION_HANDLER_DATA       *ExceptionHandlerData\r
+  IN UINTN                   ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT      SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   )\r
 {\r
-  IA32_EFLAGS32           Eflags;\r
-  RESERVED_VECTORS_DATA   *ReservedVectors;\r
+  IA32_EFLAGS32          Eflags;\r
+  RESERVED_VECTORS_DATA  *ReservedVectors;\r
 \r
   ReservedVectors = ExceptionHandlerData->ReservedVectors;\r
   //\r
@@ -71,13 +71,13 @@ ArchSaveExceptionContext (
   //\r
   // Clear IF flag to avoid old IDT handler enable interrupt by IRET\r
   //\r
-  Eflags.UintN = SystemContext.SystemContextIa32->Eflags;\r
-  Eflags.Bits.IF = 0;\r
+  Eflags.UintN                            = SystemContext.SystemContextIa32->Eflags;\r
+  Eflags.Bits.IF                          = 0;\r
   SystemContext.SystemContextIa32->Eflags = Eflags.UintN;\r
   //\r
   // Modify the EIP in stack, then old IDT handler will return to HookAfterStubBegin.\r
   //\r
-  SystemContext.SystemContextIa32->Eip    = (UINTN) ReservedVectors[ExceptionType].HookAfterStubHeaderCode;\r
+  SystemContext.SystemContextIa32->Eip = (UINTN)ReservedVectors[ExceptionType].HookAfterStubHeaderCode;\r
 }\r
 \r
 /**\r
@@ -89,14 +89,14 @@ ArchSaveExceptionContext (
 **/\r
 VOID\r
 ArchRestoreExceptionContext (\r
-  IN UINTN                        ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT           SystemContext,\r
-  IN EXCEPTION_HANDLER_DATA       *ExceptionHandlerData\r
+  IN UINTN                   ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT      SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   )\r
 {\r
-  RESERVED_VECTORS_DATA   *ReservedVectors;\r
+  RESERVED_VECTORS_DATA  *ReservedVectors;\r
 \r
-  ReservedVectors = ExceptionHandlerData->ReservedVectors;\r
+  ReservedVectors                                = ExceptionHandlerData->ReservedVectors;\r
   SystemContext.SystemContextIa32->Eflags        = ReservedVectors[ExceptionType].OldFlags;\r
   SystemContext.SystemContextIa32->Cs            = ReservedVectors[ExceptionType].OldCs;\r
   SystemContext.SystemContextIa32->Eip           = ReservedVectors[ExceptionType].OldIp;\r
@@ -116,32 +116,33 @@ ArchRestoreExceptionContext (
 **/\r
 EFI_STATUS\r
 ArchSetupExceptionStack (\r
-  IN CPU_EXCEPTION_INIT_DATA      *StackSwitchData\r
+  IN CPU_EXCEPTION_INIT_DATA  *StackSwitchData\r
   )\r
 {\r
-  IA32_DESCRIPTOR                   Gdtr;\r
-  IA32_DESCRIPTOR                   Idtr;\r
-  IA32_IDT_GATE_DESCRIPTOR          *IdtTable;\r
-  IA32_TSS_DESCRIPTOR               *TssDesc;\r
-  IA32_TASK_STATE_SEGMENT           *Tss;\r
-  UINTN                             StackTop;\r
-  UINTN                             Index;\r
-  UINTN                             Vector;\r
-  UINTN                             TssBase;\r
-  UINTN                             GdtSize;\r
-  EXCEPTION_HANDLER_TEMPLATE_MAP    TemplateMap;\r
-\r
-  if (StackSwitchData == NULL ||\r
-      StackSwitchData->Ia32.Revision != CPU_EXCEPTION_INIT_DATA_REV ||\r
-      StackSwitchData->Ia32.KnownGoodStackTop == 0 ||\r
-      StackSwitchData->Ia32.KnownGoodStackSize == 0 ||\r
-      StackSwitchData->Ia32.StackSwitchExceptions == NULL ||\r
-      StackSwitchData->Ia32.StackSwitchExceptionNumber == 0 ||\r
-      StackSwitchData->Ia32.StackSwitchExceptionNumber > CPU_EXCEPTION_NUM ||\r
-      StackSwitchData->Ia32.GdtTable == NULL ||\r
-      StackSwitchData->Ia32.IdtTable == NULL ||\r
-      StackSwitchData->Ia32.ExceptionTssDesc == NULL ||\r
-      StackSwitchData->Ia32.ExceptionTss == NULL) {\r
+  IA32_DESCRIPTOR                 Gdtr;\r
+  IA32_DESCRIPTOR                 Idtr;\r
+  IA32_IDT_GATE_DESCRIPTOR        *IdtTable;\r
+  IA32_TSS_DESCRIPTOR             *TssDesc;\r
+  IA32_TASK_STATE_SEGMENT         *Tss;\r
+  UINTN                           StackTop;\r
+  UINTN                           Index;\r
+  UINTN                           Vector;\r
+  UINTN                           TssBase;\r
+  UINTN                           GdtSize;\r
+  EXCEPTION_HANDLER_TEMPLATE_MAP  TemplateMap;\r
+\r
+  if ((StackSwitchData == NULL) ||\r
+      (StackSwitchData->Ia32.Revision != CPU_EXCEPTION_INIT_DATA_REV) ||\r
+      (StackSwitchData->Ia32.KnownGoodStackTop == 0) ||\r
+      (StackSwitchData->Ia32.KnownGoodStackSize == 0) ||\r
+      (StackSwitchData->Ia32.StackSwitchExceptions == NULL) ||\r
+      (StackSwitchData->Ia32.StackSwitchExceptionNumber == 0) ||\r
+      (StackSwitchData->Ia32.StackSwitchExceptionNumber > CPU_EXCEPTION_NUM) ||\r
+      (StackSwitchData->Ia32.GdtTable == NULL) ||\r
+      (StackSwitchData->Ia32.IdtTable == NULL) ||\r
+      (StackSwitchData->Ia32.ExceptionTssDesc == NULL) ||\r
+      (StackSwitchData->Ia32.ExceptionTss == NULL))\r
+  {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -159,7 +160,8 @@ ArchSetupExceptionStack (
   }\r
 \r
   if ((UINTN)StackSwitchData->Ia32.ExceptionTssDesc + StackSwitchData->Ia32.ExceptionTssDescSize >\r
-      ((UINTN)(StackSwitchData->Ia32.GdtTable) + StackSwitchData->Ia32.GdtTableSize)) {\r
+      ((UINTN)(StackSwitchData->Ia32.GdtTable) + StackSwitchData->Ia32.GdtTableSize))\r
+  {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -168,11 +170,14 @@ ArchSetupExceptionStack (
   // specified.\r
   //\r
   if (StackSwitchData->Ia32.ExceptionTssDescSize <\r
-      sizeof (IA32_TSS_DESCRIPTOR) * (StackSwitchData->Ia32.StackSwitchExceptionNumber + 1)) {\r
+      sizeof (IA32_TSS_DESCRIPTOR) * (StackSwitchData->Ia32.StackSwitchExceptionNumber + 1))\r
+  {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (StackSwitchData->Ia32.ExceptionTssSize <\r
-      sizeof (IA32_TASK_STATE_SEGMENT) * (StackSwitchData->Ia32.StackSwitchExceptionNumber + 1)) {\r
+      sizeof (IA32_TASK_STATE_SEGMENT) * (StackSwitchData->Ia32.StackSwitchExceptionNumber + 1))\r
+  {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -191,13 +196,14 @@ ArchSetupExceptionStack (
             (UINTN)(StackSwitchData->Ia32.GdtTable);\r
   if ((UINTN)StackSwitchData->Ia32.GdtTable != Gdtr.Base) {\r
     CopyMem (StackSwitchData->Ia32.GdtTable, (VOID *)Gdtr.Base, Gdtr.Limit + 1);\r
-    Gdtr.Base = (UINTN)StackSwitchData->Ia32.GdtTable;\r
+    Gdtr.Base  = (UINTN)StackSwitchData->Ia32.GdtTable;\r
     Gdtr.Limit = (UINT16)GdtSize - 1;\r
   }\r
 \r
   if ((UINTN)StackSwitchData->Ia32.IdtTable != Idtr.Base) {\r
     Idtr.Base = (UINTN)StackSwitchData->Ia32.IdtTable;\r
   }\r
+\r
   if (StackSwitchData->Ia32.IdtTableSize > 0) {\r
     Idtr.Limit = (UINT16)(StackSwitchData->Ia32.IdtTableSize - 1);\r
   }\r
@@ -208,14 +214,14 @@ ArchSetupExceptionStack (
   //\r
   TssBase = (UINTN)Tss;\r
 \r
-  TssDesc->Uint64          = 0;\r
-  TssDesc->Bits.LimitLow   = sizeof(IA32_TASK_STATE_SEGMENT) - 1;\r
-  TssDesc->Bits.BaseLow    = (UINT16)TssBase;\r
-  TssDesc->Bits.BaseMid    = (UINT8)(TssBase >> 16);\r
-  TssDesc->Bits.Type       = IA32_GDT_TYPE_TSS;\r
-  TssDesc->Bits.P          = 1;\r
-  TssDesc->Bits.LimitHigh  = 0;\r
-  TssDesc->Bits.BaseHigh   = (UINT8)(TssBase >> 24);\r
+  TssDesc->Uint64         = 0;\r
+  TssDesc->Bits.LimitLow  = sizeof (IA32_TASK_STATE_SEGMENT) - 1;\r
+  TssDesc->Bits.BaseLow   = (UINT16)TssBase;\r
+  TssDesc->Bits.BaseMid   = (UINT8)(TssBase >> 16);\r
+  TssDesc->Bits.Type      = IA32_GDT_TYPE_TSS;\r
+  TssDesc->Bits.P         = 1;\r
+  TssDesc->Bits.LimitHigh = 0;\r
+  TssDesc->Bits.BaseHigh  = (UINT8)(TssBase >> 24);\r
 \r
   //\r
   // Fixup exception task descriptor and task-state segment\r
@@ -234,7 +240,7 @@ ArchSetupExceptionStack (
     TssBase = (UINTN)Tss;\r
 \r
     TssDesc->Uint64         = 0;\r
-    TssDesc->Bits.LimitLow  = sizeof(IA32_TASK_STATE_SEGMENT) - 1;\r
+    TssDesc->Bits.LimitLow  = sizeof (IA32_TASK_STATE_SEGMENT) - 1;\r
     TssDesc->Bits.BaseLow   = (UINT16)TssBase;\r
     TssDesc->Bits.BaseMid   = (UINT8)(TssBase >> 16);\r
     TssDesc->Bits.Type      = IA32_GDT_TYPE_TSS;\r
@@ -246,14 +252,15 @@ ArchSetupExceptionStack (
     // Fixup TSS\r
     //\r
     Vector = StackSwitchData->Ia32.StackSwitchExceptions[Index];\r
-    if (Vector >= CPU_EXCEPTION_NUM ||\r
-        Vector >= (Idtr.Limit + 1) / sizeof (IA32_IDT_GATE_DESCRIPTOR)) {\r
+    if ((Vector >= CPU_EXCEPTION_NUM) ||\r
+        (Vector >= (Idtr.Limit + 1) / sizeof (IA32_IDT_GATE_DESCRIPTOR)))\r
+    {\r
       continue;\r
     }\r
 \r
     ZeroMem (Tss, sizeof (*Tss));\r
-    Tss->EIP    = (UINT32)(TemplateMap.ExceptionStart\r
-                           + Vector * TemplateMap.ExceptionStubHeaderSize);\r
+    Tss->EIP = (UINT32)(TemplateMap.ExceptionStart\r
+                        + Vector * TemplateMap.ExceptionStubHeaderSize);\r
     Tss->EFLAGS = 0x2;\r
     Tss->ESP    = StackTop;\r
     Tss->CR3    = AsmReadCr3 ();\r
@@ -264,7 +271,7 @@ ArchSetupExceptionStack (
     Tss->FS     = AsmReadFs ();\r
     Tss->GS     = AsmReadGs ();\r
 \r
-    StackTop   -= StackSwitchData->Ia32.KnownGoodStackSize;\r
+    StackTop -= StackSwitchData->Ia32.KnownGoodStackSize;\r
 \r
     //\r
     // Update IDT to use Task Gate for given exception\r
@@ -303,8 +310,8 @@ ArchSetupExceptionStack (
 VOID\r
 EFIAPI\r
 DumpCpuContext (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   InternalPrintMessage (\r
@@ -331,8 +338,10 @@ DumpCpuContext (
         (SystemContext.SystemContextIa32->ExceptionData & IA32_PF_EC_SGX)  != 0\r
         );\r
     }\r
+\r
     InternalPrintMessage ("\n");\r
   }\r
+\r
   InternalPrintMessage (\r
     "EIP  - %08x, CS  - %08x, EFLAGS - %08x\n",\r
     SystemContext.SystemContextIa32->Eip,\r
@@ -406,8 +415,8 @@ DumpCpuContext (
 **/\r
 VOID\r
 DumpImageAndCpuContent (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   DumpCpuContext (ExceptionType, SystemContext);\r
@@ -415,7 +424,8 @@ DumpImageAndCpuContent (
   // Dump module image base and module entry point by EIP\r
   //\r
   if ((ExceptionType == EXCEPT_IA32_PAGE_FAULT) &&\r
-      ((SystemContext.SystemContextIa32->ExceptionData & IA32_PF_EC_ID) != 0)) {\r
+      ((SystemContext.SystemContextIa32->ExceptionData & IA32_PF_EC_ID) != 0))\r
+  {\r
     //\r
     // The EIP in SystemContext could not be used\r
     // if it is page fault with I/D set.\r
index fc37fbe5823fb7c52659a26b31bd0e1cf5932303..211d2abe4886c9ad5f82ebf23458f30580e3613f 100644 (file)
 #define _ARCH_CPU_INTERRUPT_DEFS_H_\r
 \r
 typedef struct {\r
-  EFI_SYSTEM_CONTEXT_IA32 SystemContext;\r
-  BOOLEAN                 ExceptionDataFlag;\r
-  UINTN                   OldIdtHandler;\r
+  EFI_SYSTEM_CONTEXT_IA32    SystemContext;\r
+  BOOLEAN                    ExceptionDataFlag;\r
+  UINTN                      OldIdtHandler;\r
 } EXCEPTION_HANDLER_CONTEXT;\r
 \r
 //\r
 // Register Structure Definitions\r
 //\r
 typedef struct {\r
-  EFI_STATUS_CODE_DATA      Header;\r
-  EFI_SYSTEM_CONTEXT_IA32   SystemContext;\r
+  EFI_STATUS_CODE_DATA       Header;\r
+  EFI_SYSTEM_CONTEXT_IA32    SystemContext;\r
 } CPU_STATUS_CODE_TEMPLATE;\r
 \r
 typedef struct {\r
-  SPIN_LOCK   SpinLock;\r
-  UINT32      ApicId;\r
-  UINT32      Attribute;\r
-  UINTN       ExceptonHandler;\r
-  UINTN       OldFlags;\r
-  UINTN       OldCs;\r
-  UINTN       OldIp;\r
-  UINTN       ExceptionData;\r
-  UINT8       HookAfterStubHeaderCode[HOOKAFTER_STUB_SIZE];\r
+  SPIN_LOCK    SpinLock;\r
+  UINT32       ApicId;\r
+  UINT32       Attribute;\r
+  UINTN        ExceptonHandler;\r
+  UINTN        OldFlags;\r
+  UINTN        OldCs;\r
+  UINTN        OldIp;\r
+  UINTN        ExceptionData;\r
+  UINT8        HookAfterStubHeaderCode[HOOKAFTER_STUB_SIZE];\r
 } RESERVED_VECTORS_DATA;\r
 \r
 #define CPU_TSS_DESC_SIZE \\r
index d256643435e55ab6e25dba69a63bc78c6db1af9b..687fc4177fe131163e0a214259c4a3ab0997ffbf 100644 (file)
@@ -13,11 +13,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include <Library/MemoryAllocationLib.h>\r
 #include <Library/PcdLib.h>\r
 \r
-CONST UINTN    mDoFarReturnFlag  = 0;\r
+CONST UINTN  mDoFarReturnFlag = 0;\r
 \r
 typedef struct {\r
-  UINT8                   ExceptionStubHeader[HOOKAFTER_STUB_SIZE];\r
-  EXCEPTION_HANDLER_DATA  *ExceptionHandlerData;\r
+  UINT8                     ExceptionStubHeader[HOOKAFTER_STUB_SIZE];\r
+  EXCEPTION_HANDLER_DATA    *ExceptionHandlerData;\r
 } EXCEPTION0_STUB_HEADER;\r
 \r
 /**\r
@@ -34,9 +34,9 @@ GetExceptionHandlerData (
   VOID\r
   )\r
 {\r
-  IA32_DESCRIPTOR                  IdtDescriptor;\r
-  IA32_IDT_GATE_DESCRIPTOR         *IdtTable;\r
-  EXCEPTION0_STUB_HEADER           *Exception0StubHeader;\r
+  IA32_DESCRIPTOR           IdtDescriptor;\r
+  IA32_IDT_GATE_DESCRIPTOR  *IdtTable;\r
+  EXCEPTION0_STUB_HEADER    *Exception0StubHeader;\r
 \r
   AsmReadIdtr (&IdtDescriptor);\r
   IdtTable = (IA32_IDT_GATE_DESCRIPTOR *)IdtDescriptor.Base;\r
@@ -56,12 +56,13 @@ GetExceptionHandlerData (
 **/\r
 VOID\r
 SetExceptionHandlerData (\r
-  IN EXCEPTION_HANDLER_DATA        *ExceptionHandlerData\r
+  IN EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   )\r
 {\r
-  EXCEPTION0_STUB_HEADER           *Exception0StubHeader;\r
-  IA32_DESCRIPTOR                  IdtDescriptor;\r
-  IA32_IDT_GATE_DESCRIPTOR         *IdtTable;\r
+  EXCEPTION0_STUB_HEADER    *Exception0StubHeader;\r
+  IA32_DESCRIPTOR           IdtDescriptor;\r
+  IA32_IDT_GATE_DESCRIPTOR  *IdtTable;\r
+\r
   //\r
   // Duplicate the exception #0 stub header in pool and cache the ExceptionHandlerData just after the stub header.\r
   // So AP can get the ExceptionHandlerData by reading the IDT[0].\r
@@ -89,8 +90,8 @@ SetExceptionHandlerData (
 VOID\r
 EFIAPI\r
 CommonExceptionHandler (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   EXCEPTION_HANDLER_DATA  *ExceptionHandlerData;\r
@@ -120,12 +121,12 @@ CommonExceptionHandler (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuExceptionHandlers (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS                       Status;\r
-  EXCEPTION_HANDLER_DATA           *ExceptionHandlerData;\r
-  RESERVED_VECTORS_DATA            *ReservedVectors;\r
+  EFI_STATUS              Status;\r
+  EXCEPTION_HANDLER_DATA  *ExceptionHandlerData;\r
+  RESERVED_VECTORS_DATA   *ReservedVectors;\r
 \r
   ReservedVectors = AllocatePool (sizeof (RESERVED_VECTORS_DATA) * CPU_EXCEPTION_NUM);\r
   ASSERT (ReservedVectors != NULL);\r
@@ -166,7 +167,7 @@ InitializeCpuExceptionHandlers (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuInterruptHandlers (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL\r
   )\r
 {\r
   return EFI_UNSUPPORTED;\r
@@ -198,8 +199,8 @@ InitializeCpuInterruptHandlers (
 EFI_STATUS\r
 EFIAPI\r
 RegisterCpuInterruptHandler (\r
-  IN EFI_EXCEPTION_TYPE            InterruptType,\r
-  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
+  IN EFI_EXCEPTION_TYPE         InterruptType,\r
+  IN EFI_CPU_INTERRUPT_HANDLER  InterruptHandler\r
   )\r
 {\r
   return EFI_UNSUPPORTED;\r
@@ -230,11 +231,11 @@ RegisterCpuInterruptHandler (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuExceptionHandlersEx (\r
-  IN EFI_VECTOR_HANDOFF_INFO            *VectorInfo OPTIONAL,\r
-  IN CPU_EXCEPTION_INIT_DATA            *InitData OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL,\r
+  IN CPU_EXCEPTION_INIT_DATA  *InitData OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS                        Status;\r
+  EFI_STATUS  Status;\r
 \r
   //\r
   // To avoid repeat initialization of default handlers, the caller should pass\r
@@ -243,7 +244,7 @@ InitializeCpuExceptionHandlersEx (
   // version instead; or this method must be implemented as a simple wrapper of\r
   // non-ex version of it, if this version has to be called.\r
   //\r
-  if (InitData == NULL || InitData->Ia32.InitDefaultHandlers) {\r
+  if ((InitData == NULL) || InitData->Ia32.InitDefaultHandlers) {\r
     Status = InitializeCpuExceptionHandlers (VectorInfo);\r
   } else {\r
     Status = EFI_SUCCESS;\r
@@ -253,10 +254,10 @@ InitializeCpuExceptionHandlersEx (
     //\r
     // Initializing stack switch is only necessary for Stack Guard functionality.\r
     //\r
-    if (PcdGetBool (PcdCpuStackGuard) && InitData != NULL) {\r
+    if (PcdGetBool (PcdCpuStackGuard) && (InitData != NULL)) {\r
       Status = ArchSetupExceptionStack (InitData);\r
     }\r
   }\r
 \r
-  return  Status;\r
+  return Status;\r
 }\r
index 892d349d4b37823125ce0524334aba0134a61b27..762ea2460f9191ebe10026e43b97fe540dfe446a 100644 (file)
@@ -19,14 +19,14 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 **/\r
 VOID\r
 CommonExceptionHandlerWorker (\r
-  IN EFI_EXCEPTION_TYPE          ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT          SystemContext,\r
-  IN EXCEPTION_HANDLER_DATA      *ExceptionHandlerData\r
+  IN EFI_EXCEPTION_TYPE      ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT      SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   )\r
 {\r
-  EXCEPTION_HANDLER_CONTEXT      *ExceptionHandlerContext;\r
-  RESERVED_VECTORS_DATA          *ReservedVectors;\r
-  EFI_CPU_INTERRUPT_HANDLER      *ExternalInterruptHandler;\r
+  EXCEPTION_HANDLER_CONTEXT  *ExceptionHandlerContext;\r
+  RESERVED_VECTORS_DATA      *ReservedVectors;\r
+  EFI_CPU_INTERRUPT_HANDLER  *ExternalInterruptHandler;\r
 \r
   if (ExceptionType == VC_EXCEPTION) {\r
     EFI_STATUS  Status;\r
@@ -45,68 +45,72 @@ CommonExceptionHandlerWorker (
     }\r
   }\r
 \r
-  ExceptionHandlerContext  = (EXCEPTION_HANDLER_CONTEXT *) (UINTN) (SystemContext.SystemContextIa32);\r
+  ExceptionHandlerContext  = (EXCEPTION_HANDLER_CONTEXT *)(UINTN)(SystemContext.SystemContextIa32);\r
   ReservedVectors          = ExceptionHandlerData->ReservedVectors;\r
   ExternalInterruptHandler = ExceptionHandlerData->ExternalInterruptHandler;\r
 \r
   switch (ReservedVectors[ExceptionType].Attribute) {\r
-  case EFI_VECTOR_HANDOFF_HOOK_BEFORE:\r
-    //\r
-    // The new exception handler registered by RegisterCpuInterruptHandler() is executed BEFORE original handler.\r
-    // Save the original handler to stack so the assembly code can jump to it instead of returning from handler.\r
-    //\r
-    ExceptionHandlerContext->ExceptionDataFlag = (mErrorCodeFlag & (1 << ExceptionType)) ? TRUE : FALSE;\r
-    ExceptionHandlerContext->OldIdtHandler     = ReservedVectors[ExceptionType].ExceptonHandler;\r
-    break;\r
-  case EFI_VECTOR_HANDOFF_HOOK_AFTER:\r
-    while (TRUE) {\r
-      //\r
-      // If spin-lock can be acquired, it's the first time entering here.\r
-      //\r
-      if (AcquireSpinLockOrFail (&ReservedVectors[ExceptionType].SpinLock)) {\r
-        //\r
-        // The new exception handler registered by RegisterCpuInterruptHandler() is executed AFTER original handler.\r
-        // Save the original handler to stack but skip running the new handler so the original handler is executed\r
-        // firstly.\r
-        //\r
-        ReservedVectors[ExceptionType].ApicId = GetApicId ();\r
-        ArchSaveExceptionContext (ExceptionType, SystemContext, ExceptionHandlerData);\r
-        ExceptionHandlerContext->ExceptionDataFlag = (mErrorCodeFlag & (1 << ExceptionType)) ? TRUE : FALSE;\r
-        ExceptionHandlerContext->OldIdtHandler     = ReservedVectors[ExceptionType].ExceptonHandler;\r
-        return;\r
-      }\r
+    case EFI_VECTOR_HANDOFF_HOOK_BEFORE:\r
       //\r
-      // If spin-lock cannot be acquired, it's the second time entering here.\r
-      // 'break' instead of 'return' is used so the new exception handler can be executed.\r
+      // The new exception handler registered by RegisterCpuInterruptHandler() is executed BEFORE original handler.\r
+      // Save the original handler to stack so the assembly code can jump to it instead of returning from handler.\r
       //\r
-      if (ReservedVectors[ExceptionType].ApicId == GetApicId ()) {\r
+      ExceptionHandlerContext->ExceptionDataFlag = (mErrorCodeFlag & (1 << ExceptionType)) ? TRUE : FALSE;\r
+      ExceptionHandlerContext->OldIdtHandler     = ReservedVectors[ExceptionType].ExceptonHandler;\r
+      break;\r
+    case EFI_VECTOR_HANDOFF_HOOK_AFTER:\r
+      while (TRUE) {\r
         //\r
-        // Old IDT handler has been executed, then restore CPU exception content to\r
-        // run new exception handler.\r
+        // If spin-lock can be acquired, it's the first time entering here.\r
         //\r
-        ArchRestoreExceptionContext (ExceptionType, SystemContext, ExceptionHandlerData);\r
+        if (AcquireSpinLockOrFail (&ReservedVectors[ExceptionType].SpinLock)) {\r
+          //\r
+          // The new exception handler registered by RegisterCpuInterruptHandler() is executed AFTER original handler.\r
+          // Save the original handler to stack but skip running the new handler so the original handler is executed\r
+          // firstly.\r
+          //\r
+          ReservedVectors[ExceptionType].ApicId = GetApicId ();\r
+          ArchSaveExceptionContext (ExceptionType, SystemContext, ExceptionHandlerData);\r
+          ExceptionHandlerContext->ExceptionDataFlag = (mErrorCodeFlag & (1 << ExceptionType)) ? TRUE : FALSE;\r
+          ExceptionHandlerContext->OldIdtHandler     = ReservedVectors[ExceptionType].ExceptonHandler;\r
+          return;\r
+        }\r
+\r
         //\r
-        // Release spin lock for ApicId\r
+        // If spin-lock cannot be acquired, it's the second time entering here.\r
+        // 'break' instead of 'return' is used so the new exception handler can be executed.\r
         //\r
-        ReleaseSpinLock (&ReservedVectors[ExceptionType].SpinLock);\r
-        break;\r
+        if (ReservedVectors[ExceptionType].ApicId == GetApicId ()) {\r
+          //\r
+          // Old IDT handler has been executed, then restore CPU exception content to\r
+          // run new exception handler.\r
+          //\r
+          ArchRestoreExceptionContext (ExceptionType, SystemContext, ExceptionHandlerData);\r
+          //\r
+          // Release spin lock for ApicId\r
+          //\r
+          ReleaseSpinLock (&ReservedVectors[ExceptionType].SpinLock);\r
+          break;\r
+        }\r
+\r
+        CpuPause ();\r
       }\r
-      CpuPause ();\r
-    }\r
-    break;\r
-  case 0xffffffff:\r
-    break;\r
-  default:\r
-    //\r
-    // It should never reach here\r
-    //\r
-    CpuDeadLoop ();\r
-    break;\r
+\r
+      break;\r
+    case 0xffffffff:\r
+      break;\r
+    default:\r
+      //\r
+      // It should never reach here\r
+      //\r
+      CpuDeadLoop ();\r
+      break;\r
   }\r
 \r
-  if (ExternalInterruptHandler != NULL &&\r
-      ExternalInterruptHandler[ExceptionType] != NULL) {\r
-    (ExternalInterruptHandler[ExceptionType]) (ExceptionType, SystemContext);\r
+  if ((ExternalInterruptHandler != NULL) &&\r
+      (ExternalInterruptHandler[ExceptionType] != NULL))\r
+  {\r
+    (ExternalInterruptHandler[ExceptionType])(ExceptionType, SystemContext);\r
   } else if (ExceptionType < CPU_EXCEPTION_NUM) {\r
     //\r
     // Get Spinlock to display CPU information\r
@@ -114,6 +118,7 @@ CommonExceptionHandlerWorker (
     while (!AcquireSpinLockOrFail (&ExceptionHandlerData->DisplayMessageSpinLock)) {\r
       CpuPause ();\r
     }\r
+\r
     //\r
     // Initialize the serial port before dumping.\r
     //\r
@@ -151,10 +156,10 @@ UpdateIdtTable (
   IN EXCEPTION_HANDLER_DATA          *ExceptionHandlerData\r
   )\r
 {\r
-  UINT16                             CodeSegment;\r
-  UINTN                              Index;\r
-  UINTN                              InterruptHandler;\r
-  RESERVED_VECTORS_DATA              *ReservedVectors;\r
+  UINT16                 CodeSegment;\r
+  UINTN                  Index;\r
+  UINTN                  InterruptHandler;\r
+  RESERVED_VECTORS_DATA  *ReservedVectors;\r
 \r
   ReservedVectors = ExceptionHandlerData->ReservedVectors;\r
   //\r
@@ -162,47 +167,47 @@ UpdateIdtTable (
   //\r
   CodeSegment = AsmReadCs ();\r
 \r
-  for (Index = 0; Index < ExceptionHandlerData->IdtEntryCount; Index ++) {\r
+  for (Index = 0; Index < ExceptionHandlerData->IdtEntryCount; Index++) {\r
     IdtTable[Index].Bits.Selector = CodeSegment;\r
     //\r
     // Check reserved vectors attributes\r
     //\r
     switch (ReservedVectors[Index].Attribute) {\r
-    case EFI_VECTOR_HANDOFF_DO_NOT_HOOK:\r
-      //\r
-      // Keep original IDT entry\r
-      //\r
-      continue;\r
-    case EFI_VECTOR_HANDOFF_HOOK_AFTER:\r
-      InitializeSpinLock (&ReservedVectors[Index].SpinLock);\r
-      CopyMem (\r
-        (VOID *) ReservedVectors[Index].HookAfterStubHeaderCode,\r
-        (VOID *) TemplateMap->HookAfterStubHeaderStart,\r
-        TemplateMap->ExceptionStubHeaderSize\r
-        );\r
-      AsmVectorNumFixup (\r
-        (VOID *) ReservedVectors[Index].HookAfterStubHeaderCode,\r
-        (UINT8) Index,\r
-        (VOID *) TemplateMap->HookAfterStubHeaderStart\r
-        );\r
+      case EFI_VECTOR_HANDOFF_DO_NOT_HOOK:\r
+        //\r
+        // Keep original IDT entry\r
+        //\r
+        continue;\r
+      case EFI_VECTOR_HANDOFF_HOOK_AFTER:\r
+        InitializeSpinLock (&ReservedVectors[Index].SpinLock);\r
+        CopyMem (\r
+          (VOID *)ReservedVectors[Index].HookAfterStubHeaderCode,\r
+          (VOID *)TemplateMap->HookAfterStubHeaderStart,\r
+          TemplateMap->ExceptionStubHeaderSize\r
+          );\r
+        AsmVectorNumFixup (\r
+          (VOID *)ReservedVectors[Index].HookAfterStubHeaderCode,\r
+          (UINT8)Index,\r
+          (VOID *)TemplateMap->HookAfterStubHeaderStart\r
+          );\r
       //\r
       // Go on the following code\r
       //\r
-    case EFI_VECTOR_HANDOFF_HOOK_BEFORE:\r
-      //\r
-      // Save original IDT handler address\r
-      //\r
-      ReservedVectors[Index].ExceptonHandler = ArchGetIdtHandler (&IdtTable[Index]);\r
+      case EFI_VECTOR_HANDOFF_HOOK_BEFORE:\r
+        //\r
+        // Save original IDT handler address\r
+        //\r
+        ReservedVectors[Index].ExceptonHandler = ArchGetIdtHandler (&IdtTable[Index]);\r
       //\r
       // Go on the following code\r
       //\r
-    default:\r
-      //\r
-      // Update new IDT entry\r
-      //\r
-      InterruptHandler = TemplateMap->ExceptionStart + Index * TemplateMap->ExceptionStubHeaderSize;\r
-      ArchUpdateIdtEntry (&IdtTable[Index], InterruptHandler);\r
-      break;\r
+      default:\r
+        //\r
+        // Update new IDT entry\r
+        //\r
+        InterruptHandler = TemplateMap->ExceptionStart + Index * TemplateMap->ExceptionStubHeaderSize;\r
+        ArchUpdateIdtEntry (&IdtTable[Index], InterruptHandler);\r
+        break;\r
     }\r
   }\r
 }\r
@@ -221,19 +226,19 @@ UpdateIdtTable (
 **/\r
 EFI_STATUS\r
 InitializeCpuExceptionHandlersWorker (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL,\r
-  IN OUT EXCEPTION_HANDLER_DATA    *ExceptionHandlerData\r
+  IN EFI_VECTOR_HANDOFF_INFO     *VectorInfo OPTIONAL,\r
+  IN OUT EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   )\r
 {\r
-  EFI_STATUS                       Status;\r
-  IA32_DESCRIPTOR                  IdtDescriptor;\r
-  UINTN                            IdtEntryCount;\r
-  EXCEPTION_HANDLER_TEMPLATE_MAP   TemplateMap;\r
-  IA32_IDT_GATE_DESCRIPTOR         *IdtTable;\r
-  RESERVED_VECTORS_DATA            *ReservedVectors;\r
+  EFI_STATUS                      Status;\r
+  IA32_DESCRIPTOR                 IdtDescriptor;\r
+  UINTN                           IdtEntryCount;\r
+  EXCEPTION_HANDLER_TEMPLATE_MAP  TemplateMap;\r
+  IA32_IDT_GATE_DESCRIPTOR        *IdtTable;\r
+  RESERVED_VECTORS_DATA           *ReservedVectors;\r
 \r
   ReservedVectors = ExceptionHandlerData->ReservedVectors;\r
-  SetMem ((VOID *) ReservedVectors, sizeof (RESERVED_VECTORS_DATA) * CPU_EXCEPTION_NUM, 0xff);\r
+  SetMem ((VOID *)ReservedVectors, sizeof (RESERVED_VECTORS_DATA) * CPU_EXCEPTION_NUM, 0xff);\r
   if (VectorInfo != NULL) {\r
     Status = ReadAndVerifyVectorInfo (VectorInfo, ReservedVectors, CPU_EXCEPTION_NUM);\r
     if (EFI_ERROR (Status)) {\r
@@ -253,7 +258,7 @@ InitializeCpuExceptionHandlersWorker (
     IdtEntryCount = CPU_EXCEPTION_NUM;\r
   }\r
 \r
-  IdtTable = (IA32_IDT_GATE_DESCRIPTOR *) IdtDescriptor.Base;\r
+  IdtTable = (IA32_IDT_GATE_DESCRIPTOR *)IdtDescriptor.Base;\r
   AsmGetTemplateAddressMap (&TemplateMap);\r
   ASSERT (TemplateMap.ExceptionStubHeaderSize <= HOOKAFTER_STUB_SIZE);\r
 \r
@@ -282,33 +287,33 @@ InitializeCpuExceptionHandlersWorker (
 **/\r
 EFI_STATUS\r
 RegisterCpuInterruptHandlerWorker (\r
-  IN EFI_EXCEPTION_TYPE            InterruptType,\r
-  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler,\r
-  IN EXCEPTION_HANDLER_DATA        *ExceptionHandlerData\r
+  IN EFI_EXCEPTION_TYPE         InterruptType,\r
+  IN EFI_CPU_INTERRUPT_HANDLER  InterruptHandler,\r
+  IN EXCEPTION_HANDLER_DATA     *ExceptionHandlerData\r
   )\r
 {\r
-  UINTN                          EnabledInterruptNum;\r
-  RESERVED_VECTORS_DATA          *ReservedVectors;\r
-  EFI_CPU_INTERRUPT_HANDLER      *ExternalInterruptHandler;\r
+  UINTN                      EnabledInterruptNum;\r
+  RESERVED_VECTORS_DATA      *ReservedVectors;\r
+  EFI_CPU_INTERRUPT_HANDLER  *ExternalInterruptHandler;\r
 \r
   EnabledInterruptNum      = ExceptionHandlerData->IdtEntryCount;\r
   ReservedVectors          = ExceptionHandlerData->ReservedVectors;\r
   ExternalInterruptHandler = ExceptionHandlerData->ExternalInterruptHandler;\r
 \r
-  if (InterruptType < 0 || InterruptType >= (EFI_EXCEPTION_TYPE)EnabledInterruptNum ||\r
-      ReservedVectors[InterruptType].Attribute == EFI_VECTOR_HANDOFF_DO_NOT_HOOK) {\r
+  if ((InterruptType < 0) || (InterruptType >= (EFI_EXCEPTION_TYPE)EnabledInterruptNum) ||\r
+      (ReservedVectors[InterruptType].Attribute == EFI_VECTOR_HANDOFF_DO_NOT_HOOK))\r
+  {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
-  if (InterruptHandler == NULL && ExternalInterruptHandler[InterruptType] == NULL) {\r
+  if ((InterruptHandler == NULL) && (ExternalInterruptHandler[InterruptType] == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  if (InterruptHandler != NULL && ExternalInterruptHandler[InterruptType] != NULL) {\r
+  if ((InterruptHandler != NULL) && (ExternalInterruptHandler[InterruptType] != NULL)) {\r
     return EFI_ALREADY_STARTED;\r
   }\r
 \r
   ExternalInterruptHandler[InterruptType] = InterruptHandler;\r
   return EFI_SUCCESS;\r
 }\r
-\r
index 01b5a2f1f4fcff4f7f93376d917f6b493044b780..c614d5b0b6f17274ea3c6ed7e77f7d1e6b5c47a4 100644 (file)
@@ -10,7 +10,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include <Library/VmgExitLib.h>\r
 #include "CpuExceptionCommon.h"\r
 \r
-CONST UINTN    mDoFarReturnFlag  = 0;\r
+CONST UINTN  mDoFarReturnFlag = 0;\r
 \r
 /**\r
   Common exception handler.\r
@@ -21,8 +21,8 @@ CONST UINTN    mDoFarReturnFlag  = 0;
 VOID\r
 EFIAPI\r
 CommonExceptionHandler (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   if (ExceptionType == VC_EXCEPTION) {\r
@@ -79,26 +79,27 @@ CommonExceptionHandler (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuExceptionHandlers (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS                       Status;\r
-  RESERVED_VECTORS_DATA            ReservedVectorData[CPU_EXCEPTION_NUM];\r
-  IA32_DESCRIPTOR                  IdtDescriptor;\r
-  UINTN                            IdtEntryCount;\r
-  UINT16                           CodeSegment;\r
-  EXCEPTION_HANDLER_TEMPLATE_MAP   TemplateMap;\r
-  IA32_IDT_GATE_DESCRIPTOR         *IdtTable;\r
-  UINTN                            Index;\r
-  UINTN                            InterruptHandler;\r
+  EFI_STATUS                      Status;\r
+  RESERVED_VECTORS_DATA           ReservedVectorData[CPU_EXCEPTION_NUM];\r
+  IA32_DESCRIPTOR                 IdtDescriptor;\r
+  UINTN                           IdtEntryCount;\r
+  UINT16                          CodeSegment;\r
+  EXCEPTION_HANDLER_TEMPLATE_MAP  TemplateMap;\r
+  IA32_IDT_GATE_DESCRIPTOR        *IdtTable;\r
+  UINTN                           Index;\r
+  UINTN                           InterruptHandler;\r
 \r
   if (VectorInfo != NULL) {\r
-    SetMem ((VOID *) ReservedVectorData, sizeof (RESERVED_VECTORS_DATA) * CPU_EXCEPTION_NUM, 0xff);\r
+    SetMem ((VOID *)ReservedVectorData, sizeof (RESERVED_VECTORS_DATA) * CPU_EXCEPTION_NUM, 0xff);\r
     Status = ReadAndVerifyVectorInfo (VectorInfo, ReservedVectorData, CPU_EXCEPTION_NUM);\r
     if (EFI_ERROR (Status)) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
   }\r
+\r
   //\r
   // Read IDT descriptor and calculate IDT size\r
   //\r
@@ -110,6 +111,7 @@ InitializeCpuExceptionHandlers (
     //\r
     IdtEntryCount = CPU_EXCEPTION_NUM;\r
   }\r
+\r
   //\r
   // Use current CS as the segment selector of interrupt gate in IDT\r
   //\r
@@ -117,7 +119,7 @@ InitializeCpuExceptionHandlers (
 \r
   AsmGetTemplateAddressMap (&TemplateMap);\r
   IdtTable = (IA32_IDT_GATE_DESCRIPTOR *)IdtDescriptor.Base;\r
-  for (Index = 0; Index < IdtEntryCount; Index ++) {\r
+  for (Index = 0; Index < IdtEntryCount; Index++) {\r
     IdtTable[Index].Bits.Selector = CodeSegment;\r
     //\r
     // Check reserved vectors attributes if has, only EFI_VECTOR_HANDOFF_DO_NOT_HOOK\r
@@ -128,12 +130,14 @@ InitializeCpuExceptionHandlers (
         continue;\r
       }\r
     }\r
+\r
     //\r
     // Update IDT entry\r
     //\r
     InterruptHandler = TemplateMap.ExceptionStart + Index * TemplateMap.ExceptionStubHeaderSize;\r
     ArchUpdateIdtEntry (&IdtTable[Index], InterruptHandler);\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -156,7 +160,7 @@ InitializeCpuExceptionHandlers (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuInterruptHandlers (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL\r
   )\r
 {\r
   return EFI_UNSUPPORTED;\r
@@ -188,8 +192,8 @@ InitializeCpuInterruptHandlers (
 EFI_STATUS\r
 EFIAPI\r
 RegisterCpuInterruptHandler (\r
-  IN EFI_EXCEPTION_TYPE            InterruptType,\r
-  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
+  IN EFI_EXCEPTION_TYPE         InterruptType,\r
+  IN EFI_CPU_INTERRUPT_HANDLER  InterruptHandler\r
   )\r
 {\r
   return EFI_UNSUPPORTED;\r
@@ -220,8 +224,8 @@ RegisterCpuInterruptHandler (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuExceptionHandlersEx (\r
-  IN EFI_VECTOR_HANDOFF_INFO            *VectorInfo OPTIONAL,\r
-  IN CPU_EXCEPTION_INIT_DATA            *InitData OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL,\r
+  IN CPU_EXCEPTION_INIT_DATA  *InitData OPTIONAL\r
   )\r
 {\r
   return InitializeCpuExceptionHandlers (VectorInfo);\r
index e7977d49b7719cbe3077db465ab28cef644c9c7a..77ee74579fb261e0a068f6ba4824c68811752546 100644 (file)
@@ -9,16 +9,17 @@
 #include <PiSmm.h>\r
 #include "CpuExceptionCommon.h"\r
 \r
-CONST UINTN   mDoFarReturnFlag   = 1;\r
+CONST UINTN  mDoFarReturnFlag = 1;\r
 \r
 //\r
 // Spin lock for CPU information display\r
 //\r
-SPIN_LOCK        mDisplayMessageSpinLock;\r
+SPIN_LOCK  mDisplayMessageSpinLock;\r
+\r
+RESERVED_VECTORS_DATA      mReservedVectorsData[CPU_EXCEPTION_NUM];\r
+EFI_CPU_INTERRUPT_HANDLER  mExternalInterruptHandlerTable[CPU_EXCEPTION_NUM];\r
+EXCEPTION_HANDLER_DATA     mExceptionHandlerData;\r
 \r
-RESERVED_VECTORS_DATA       mReservedVectorsData[CPU_EXCEPTION_NUM];\r
-EFI_CPU_INTERRUPT_HANDLER   mExternalInterruptHandlerTable[CPU_EXCEPTION_NUM];\r
-EXCEPTION_HANDLER_DATA      mExceptionHandlerData;\r
 /**\r
   Common exception handler.\r
 \r
@@ -28,8 +29,8 @@ EXCEPTION_HANDLER_DATA      mExceptionHandlerData;
 VOID\r
 EFIAPI\r
 CommonExceptionHandler (\r
-  IN EFI_EXCEPTION_TYPE          ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT          SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   CommonExceptionHandlerWorker (ExceptionType, SystemContext, &mExceptionHandlerData);\r
@@ -54,7 +55,7 @@ CommonExceptionHandler (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuExceptionHandlers (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL\r
   )\r
 {\r
   mExceptionHandlerData.ReservedVectors          = mReservedVectorsData;\r
@@ -82,7 +83,7 @@ InitializeCpuExceptionHandlers (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuInterruptHandlers (\r
-  IN EFI_VECTOR_HANDOFF_INFO       *VectorInfo OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL\r
   )\r
 {\r
   return EFI_UNSUPPORTED;\r
@@ -114,8 +115,8 @@ InitializeCpuInterruptHandlers (
 EFI_STATUS\r
 EFIAPI\r
 RegisterCpuInterruptHandler (\r
-  IN EFI_EXCEPTION_TYPE            InterruptType,\r
-  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
+  IN EFI_EXCEPTION_TYPE         InterruptType,\r
+  IN EFI_CPU_INTERRUPT_HANDLER  InterruptHandler\r
   )\r
 {\r
   return RegisterCpuInterruptHandlerWorker (InterruptType, InterruptHandler, &mExceptionHandlerData);\r
@@ -146,8 +147,8 @@ RegisterCpuInterruptHandler (
 EFI_STATUS\r
 EFIAPI\r
 InitializeCpuExceptionHandlersEx (\r
-  IN EFI_VECTOR_HANDOFF_INFO            *VectorInfo OPTIONAL,\r
-  IN CPU_EXCEPTION_INIT_DATA            *InitData OPTIONAL\r
+  IN EFI_VECTOR_HANDOFF_INFO  *VectorInfo OPTIONAL,\r
+  IN CPU_EXCEPTION_INIT_DATA  *InitData OPTIONAL\r
   )\r
 {\r
   return InitializeCpuExceptionHandlers (VectorInfo);\r
index d3da16e4dfa2958d819f85c5c19b11780098b327..cd7dccd48141025da8a1644fb0a6165b1e982f79 100644 (file)
@@ -17,8 +17,8 @@
 **/\r
 VOID\r
 ArchUpdateIdtEntry (\r
-  OUT IA32_IDT_GATE_DESCRIPTOR       *IdtEntry,\r
-  IN  UINTN                          InterruptHandler\r
+  OUT IA32_IDT_GATE_DESCRIPTOR  *IdtEntry,\r
+  IN  UINTN                     InterruptHandler\r
   )\r
 {\r
   IdtEntry->Bits.OffsetLow   = (UINT16)(UINTN)InterruptHandler;\r
@@ -35,11 +35,11 @@ ArchUpdateIdtEntry (
 **/\r
 UINTN\r
 ArchGetIdtHandler (\r
-  IN IA32_IDT_GATE_DESCRIPTOR        *IdtEntry\r
+  IN IA32_IDT_GATE_DESCRIPTOR  *IdtEntry\r
   )\r
 {\r
-  return IdtEntry->Bits.OffsetLow + (((UINTN) IdtEntry->Bits.OffsetHigh)  << 16) +\r
-                                    (((UINTN) IdtEntry->Bits.OffsetUpper) << 32);\r
+  return IdtEntry->Bits.OffsetLow + (((UINTN)IdtEntry->Bits.OffsetHigh)  << 16) +\r
+         (((UINTN)IdtEntry->Bits.OffsetUpper) << 32);\r
 }\r
 \r
 /**\r
@@ -51,13 +51,13 @@ ArchGetIdtHandler (
 **/\r
 VOID\r
 ArchSaveExceptionContext (\r
-  IN UINTN                        ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT           SystemContext,\r
-  IN EXCEPTION_HANDLER_DATA       *ExceptionHandlerData\r
+  IN UINTN                   ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT      SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   )\r
 {\r
-  IA32_EFLAGS32           Eflags;\r
-  RESERVED_VECTORS_DATA   *ReservedVectors;\r
+  IA32_EFLAGS32          Eflags;\r
+  RESERVED_VECTORS_DATA  *ReservedVectors;\r
 \r
   ReservedVectors = ExceptionHandlerData->ReservedVectors;\r
   //\r
@@ -74,13 +74,13 @@ ArchSaveExceptionContext (
   //\r
   // Clear IF flag to avoid old IDT handler enable interrupt by IRET\r
   //\r
-  Eflags.UintN = SystemContext.SystemContextX64->Rflags;\r
-  Eflags.Bits.IF = 0;\r
+  Eflags.UintN                           = SystemContext.SystemContextX64->Rflags;\r
+  Eflags.Bits.IF                         = 0;\r
   SystemContext.SystemContextX64->Rflags = Eflags.UintN;\r
   //\r
   // Modify the EIP in stack, then old IDT handler will return to HookAfterStubBegin.\r
   //\r
-  SystemContext.SystemContextX64->Rip = (UINTN) ReservedVectors[ExceptionType].HookAfterStubHeaderCode;\r
+  SystemContext.SystemContextX64->Rip = (UINTN)ReservedVectors[ExceptionType].HookAfterStubHeaderCode;\r
 }\r
 \r
 /**\r
@@ -92,14 +92,14 @@ ArchSaveExceptionContext (
 **/\r
 VOID\r
 ArchRestoreExceptionContext (\r
-  IN UINTN                        ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT           SystemContext,\r
-  IN EXCEPTION_HANDLER_DATA       *ExceptionHandlerData\r
+  IN UINTN                   ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT      SystemContext,\r
+  IN EXCEPTION_HANDLER_DATA  *ExceptionHandlerData\r
   )\r
 {\r
-  RESERVED_VECTORS_DATA   *ReservedVectors;\r
+  RESERVED_VECTORS_DATA  *ReservedVectors;\r
 \r
-  ReservedVectors = ExceptionHandlerData->ReservedVectors;\r
+  ReservedVectors                               = ExceptionHandlerData->ReservedVectors;\r
   SystemContext.SystemContextX64->Ss            = ReservedVectors[ExceptionType].OldSs;\r
   SystemContext.SystemContextX64->Rsp           = ReservedVectors[ExceptionType].OldSp;\r
   SystemContext.SystemContextX64->Rflags        = ReservedVectors[ExceptionType].OldFlags;\r
@@ -121,31 +121,32 @@ ArchRestoreExceptionContext (
 **/\r
 EFI_STATUS\r
 ArchSetupExceptionStack (\r
-  IN CPU_EXCEPTION_INIT_DATA          *StackSwitchData\r
+  IN CPU_EXCEPTION_INIT_DATA  *StackSwitchData\r
   )\r
 {\r
-  IA32_DESCRIPTOR                   Gdtr;\r
-  IA32_DESCRIPTOR                   Idtr;\r
-  IA32_IDT_GATE_DESCRIPTOR          *IdtTable;\r
-  IA32_TSS_DESCRIPTOR               *TssDesc;\r
-  IA32_TASK_STATE_SEGMENT           *Tss;\r
-  UINTN                             StackTop;\r
-  UINTN                             Index;\r
-  UINTN                             Vector;\r
-  UINTN                             TssBase;\r
-  UINTN                             GdtSize;\r
-\r
-  if (StackSwitchData == NULL ||\r
-      StackSwitchData->Ia32.Revision != CPU_EXCEPTION_INIT_DATA_REV ||\r
-      StackSwitchData->X64.KnownGoodStackTop == 0 ||\r
-      StackSwitchData->X64.KnownGoodStackSize == 0 ||\r
-      StackSwitchData->X64.StackSwitchExceptions == NULL ||\r
-      StackSwitchData->X64.StackSwitchExceptionNumber == 0 ||\r
-      StackSwitchData->X64.StackSwitchExceptionNumber > CPU_EXCEPTION_NUM ||\r
-      StackSwitchData->X64.GdtTable == NULL ||\r
-      StackSwitchData->X64.IdtTable == NULL ||\r
-      StackSwitchData->X64.ExceptionTssDesc == NULL ||\r
-      StackSwitchData->X64.ExceptionTss == NULL) {\r
+  IA32_DESCRIPTOR           Gdtr;\r
+  IA32_DESCRIPTOR           Idtr;\r
+  IA32_IDT_GATE_DESCRIPTOR  *IdtTable;\r
+  IA32_TSS_DESCRIPTOR       *TssDesc;\r
+  IA32_TASK_STATE_SEGMENT   *Tss;\r
+  UINTN                     StackTop;\r
+  UINTN                     Index;\r
+  UINTN                     Vector;\r
+  UINTN                     TssBase;\r
+  UINTN                     GdtSize;\r
+\r
+  if ((StackSwitchData == NULL) ||\r
+      (StackSwitchData->Ia32.Revision != CPU_EXCEPTION_INIT_DATA_REV) ||\r
+      (StackSwitchData->X64.KnownGoodStackTop == 0) ||\r
+      (StackSwitchData->X64.KnownGoodStackSize == 0) ||\r
+      (StackSwitchData->X64.StackSwitchExceptions == NULL) ||\r
+      (StackSwitchData->X64.StackSwitchExceptionNumber == 0) ||\r
+      (StackSwitchData->X64.StackSwitchExceptionNumber > CPU_EXCEPTION_NUM) ||\r
+      (StackSwitchData->X64.GdtTable == NULL) ||\r
+      (StackSwitchData->X64.IdtTable == NULL) ||\r
+      (StackSwitchData->X64.ExceptionTssDesc == NULL) ||\r
+      (StackSwitchData->X64.ExceptionTss == NULL))\r
+  {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -163,7 +164,8 @@ ArchSetupExceptionStack (
   }\r
 \r
   if (((UINTN)StackSwitchData->X64.ExceptionTssDesc + StackSwitchData->X64.ExceptionTssDescSize) >\r
-      ((UINTN)(StackSwitchData->X64.GdtTable) + StackSwitchData->X64.GdtTableSize)) {\r
+      ((UINTN)(StackSwitchData->X64.GdtTable) + StackSwitchData->X64.GdtTableSize))\r
+  {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -173,6 +175,7 @@ ArchSetupExceptionStack (
   if (StackSwitchData->X64.ExceptionTssDescSize < sizeof (IA32_TSS_DESCRIPTOR)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (StackSwitchData->X64.ExceptionTssSize < sizeof (IA32_TASK_STATE_SEGMENT)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -196,13 +199,14 @@ ArchSetupExceptionStack (
             (UINTN)(StackSwitchData->X64.GdtTable);\r
   if ((UINTN)StackSwitchData->X64.GdtTable != Gdtr.Base) {\r
     CopyMem (StackSwitchData->X64.GdtTable, (VOID *)Gdtr.Base, Gdtr.Limit + 1);\r
-    Gdtr.Base = (UINTN)StackSwitchData->X64.GdtTable;\r
+    Gdtr.Base  = (UINTN)StackSwitchData->X64.GdtTable;\r
     Gdtr.Limit = (UINT16)GdtSize - 1;\r
   }\r
 \r
   if ((UINTN)StackSwitchData->X64.IdtTable != Idtr.Base) {\r
     Idtr.Base = (UINTN)StackSwitchData->X64.IdtTable;\r
   }\r
+\r
   if (StackSwitchData->X64.IdtTableSize > 0) {\r
     Idtr.Limit = (UINT16)(StackSwitchData->X64.IdtTableSize - 1);\r
   }\r
@@ -213,16 +217,16 @@ ArchSetupExceptionStack (
   //\r
   TssBase = (UINTN)Tss;\r
 \r
-  TssDesc->Uint128.Uint64  = 0;\r
-  TssDesc->Uint128.Uint64_1= 0;\r
-  TssDesc->Bits.LimitLow   = sizeof(IA32_TASK_STATE_SEGMENT) - 1;\r
-  TssDesc->Bits.BaseLow    = (UINT16)TssBase;\r
-  TssDesc->Bits.BaseMidl   = (UINT8)(TssBase >> 16);\r
-  TssDesc->Bits.Type       = IA32_GDT_TYPE_TSS;\r
-  TssDesc->Bits.P          = 1;\r
-  TssDesc->Bits.LimitHigh  = 0;\r
-  TssDesc->Bits.BaseMidh   = (UINT8)(TssBase >> 24);\r
-  TssDesc->Bits.BaseHigh   = (UINT32)(TssBase >> 32);\r
+  TssDesc->Uint128.Uint64   = 0;\r
+  TssDesc->Uint128.Uint64_1 = 0;\r
+  TssDesc->Bits.LimitLow    = sizeof (IA32_TASK_STATE_SEGMENT) - 1;\r
+  TssDesc->Bits.BaseLow     = (UINT16)TssBase;\r
+  TssDesc->Bits.BaseMidl    = (UINT8)(TssBase >> 16);\r
+  TssDesc->Bits.Type        = IA32_GDT_TYPE_TSS;\r
+  TssDesc->Bits.P           = 1;\r
+  TssDesc->Bits.LimitHigh   = 0;\r
+  TssDesc->Bits.BaseMidh    = (UINT8)(TssBase >> 24);\r
+  TssDesc->Bits.BaseHigh    = (UINT32)(TssBase >> 32);\r
 \r
   //\r
   // Fixup exception task descriptor and task-state segment\r
@@ -236,16 +240,18 @@ ArchSetupExceptionStack (
     // Fixup IST\r
     //\r
     Tss->IST[Index] = StackTop;\r
-    StackTop -= StackSwitchData->X64.KnownGoodStackSize;\r
+    StackTop       -= StackSwitchData->X64.KnownGoodStackSize;\r
 \r
     //\r
     // Set the IST field to enable corresponding IST\r
     //\r
     Vector = StackSwitchData->X64.StackSwitchExceptions[Index];\r
-    if (Vector >= CPU_EXCEPTION_NUM ||\r
-        Vector >= (Idtr.Limit + 1) / sizeof (IA32_IDT_GATE_DESCRIPTOR)) {\r
+    if ((Vector >= CPU_EXCEPTION_NUM) ||\r
+        (Vector >= (Idtr.Limit + 1) / sizeof (IA32_IDT_GATE_DESCRIPTOR)))\r
+    {\r
       continue;\r
     }\r
+\r
     IdtTable[Vector].Bits.Reserved_0 = (UINT8)(Index + 1);\r
   }\r
 \r
@@ -276,8 +282,8 @@ ArchSetupExceptionStack (
 VOID\r
 EFIAPI\r
 DumpCpuContext (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   InternalPrintMessage (\r
@@ -304,8 +310,10 @@ DumpCpuContext (
         (SystemContext.SystemContextX64->ExceptionData & IA32_PF_EC_SGX)  != 0\r
         );\r
     }\r
+\r
     InternalPrintMessage ("\n");\r
   }\r
+\r
   InternalPrintMessage (\r
     "RIP  - %016lx, CS  - %016lx, RFLAGS - %016lx\n",\r
     SystemContext.SystemContextX64->Rip,\r
@@ -406,8 +414,8 @@ DumpCpuContext (
 **/\r
 VOID\r
 DumpImageAndCpuContent (\r
-  IN EFI_EXCEPTION_TYPE   ExceptionType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   DumpCpuContext (ExceptionType, SystemContext);\r
@@ -415,7 +423,8 @@ DumpImageAndCpuContent (
   // Dump module image base and module entry point by RIP\r
   //\r
   if ((ExceptionType == EXCEPT_IA32_PAGE_FAULT) &&\r
-      ((SystemContext.SystemContextX64->ExceptionData & IA32_PF_EC_ID) != 0)) {\r
+      ((SystemContext.SystemContextX64->ExceptionData & IA32_PF_EC_ID) != 0))\r
+  {\r
     //\r
     // The RIP in SystemContext could not be used\r
     // if it is page fault with I/D set.\r
index c3a07862ea6daf3c9313c17554be62de6c9c0a06..008670cb0d4b63b4bba4e466d05005657278d936 100644 (file)
@@ -10,9 +10,9 @@
 #define _ARCH_CPU_INTERRUPT_DEFS_H_\r
 \r
 typedef struct {\r
-  EFI_SYSTEM_CONTEXT_X64  SystemContext;\r
-  BOOLEAN                 ExceptionDataFlag;\r
-  UINTN                   OldIdtHandler;\r
+  EFI_SYSTEM_CONTEXT_X64    SystemContext;\r
+  BOOLEAN                   ExceptionDataFlag;\r
+  UINTN                     OldIdtHandler;\r
 } EXCEPTION_HANDLER_CONTEXT;\r
 \r
 //\r
@@ -24,20 +24,20 @@ typedef struct {
 } CPU_STATUS_CODE_TEMPLATE;\r
 \r
 typedef struct {\r
-  SPIN_LOCK   SpinLock;\r
-  UINT32      ApicId;\r
-  UINT32      Attribute;\r
-  UINTN       ExceptonHandler;\r
-  UINTN       OldSs;\r
-  UINTN       OldSp;\r
-  UINTN       OldFlags;\r
-  UINTN       OldCs;\r
-  UINTN       OldIp;\r
-  UINTN       ExceptionData;\r
-  UINT8       HookAfterStubHeaderCode[HOOKAFTER_STUB_SIZE];\r
+  SPIN_LOCK    SpinLock;\r
+  UINT32       ApicId;\r
+  UINT32       Attribute;\r
+  UINTN        ExceptonHandler;\r
+  UINTN        OldSs;\r
+  UINTN        OldSp;\r
+  UINTN        OldFlags;\r
+  UINTN        OldCs;\r
+  UINTN        OldIp;\r
+  UINTN        ExceptionData;\r
+  UINT8        HookAfterStubHeaderCode[HOOKAFTER_STUB_SIZE];\r
 } RESERVED_VECTORS_DATA;\r
 \r
-#define CPU_TSS_DESC_SIZE sizeof (IA32_TSS_DESCRIPTOR)\r
-#define CPU_TSS_SIZE      sizeof (IA32_TASK_STATE_SEGMENT)\r
+#define CPU_TSS_DESC_SIZE  sizeof (IA32_TSS_DESCRIPTOR)\r
+#define CPU_TSS_SIZE       sizeof (IA32_TASK_STATE_SEGMENT)\r
 \r
 #endif\r
index 6ddf917bad0fa95abac19e5069e27df8591a1c7d..98363bd8f7891cd7d67aa3a009f33ab7e7912800 100644 (file)
@@ -38,4 +38,3 @@ InternalGetPerformanceCounterFrequency (
 {\r
   return CpuidCoreClockCalculateTscFrequency ();\r
 }\r
-\r
index bce02eeef961644c2d27fa9c023ad7b763b69ce7..1955b90e5440f84627379a98822ea6df588c2fb4 100644 (file)
@@ -13,7 +13,9 @@
 #include <Library/DebugLib.h>\r
 #include <Register/Cpuid.h>\r
 \r
-GUID mCpuCrystalFrequencyHobGuid = { 0xe1ec5ad0, 0x8569, 0x46bd, { 0x8d, 0xcd, 0x3b, 0x9f, 0x6f, 0x45, 0x82, 0x7a } };\r
+GUID  mCpuCrystalFrequencyHobGuid = {\r
+  0xe1ec5ad0, 0x8569, 0x46bd, { 0x8d, 0xcd, 0x3b, 0x9f, 0x6f, 0x45, 0x82, 0x7a }\r
+};\r
 \r
 /**\r
   Internal function to retrieves the 64-bit frequency in Hz.\r
@@ -41,11 +43,11 @@ CpuidCoreClockCalculateTscFrequency (
   VOID\r
   )\r
 {\r
-  UINT64                 TscFrequency;\r
-  UINT64                 CoreXtalFrequency;\r
-  UINT32                 RegEax;\r
-  UINT32                 RegEbx;\r
-  UINT32                 RegEcx;\r
+  UINT64  TscFrequency;\r
+  UINT64  CoreXtalFrequency;\r
+  UINT32  RegEax;\r
+  UINT32  RegEbx;\r
+  UINT32  RegEcx;\r
 \r
   //\r
   // Use CPUID leaf 0x15 Time Stamp Counter and Nominal Core Crystal Clock Information\r
@@ -57,11 +59,12 @@ CpuidCoreClockCalculateTscFrequency (
   //\r
   // If EAX or EBX returns 0, the XTAL ratio is not enumerated.\r
   //\r
-  if (RegEax == 0 || RegEbx ==0 ) {\r
+  if ((RegEax == 0) || (RegEbx == 0)) {\r
     ASSERT (RegEax != 0);\r
     ASSERT (RegEbx != 0);\r
     return 0;\r
   }\r
+\r
   //\r
   // If ECX returns 0, the XTAL frequency is not enumerated.\r
   // And PcdCpuCoreCrystalClockFrequency defined should base on processor series.\r
@@ -69,7 +72,7 @@ CpuidCoreClockCalculateTscFrequency (
   if (RegEcx == 0) {\r
     CoreXtalFrequency = PcdGet64 (PcdCpuCoreCrystalClockFrequency);\r
   } else {\r
-    CoreXtalFrequency = (UINT64) RegEcx;\r
+    CoreXtalFrequency = (UINT64)RegEcx;\r
   }\r
 \r
   //\r
@@ -99,7 +102,7 @@ InternalCpuDelay (
   //\r
   // The target timer count is calculated here\r
   //\r
-  Ticks = AsmReadTsc() + Delay;\r
+  Ticks = AsmReadTsc () + Delay;\r
 \r
   //\r
   // Wait until time out\r
@@ -107,8 +110,8 @@ InternalCpuDelay (
   // Thus, this function must be called within 10 years of reset since\r
   // Intel guarantees a minimum of 10 years before the TSC wraps.\r
   //\r
-  while (AsmReadTsc() <= Ticks) {\r
-    CpuPause();\r
+  while (AsmReadTsc () <= Ticks) {\r
+    CpuPause ();\r
   }\r
 }\r
 \r
@@ -128,7 +131,6 @@ MicroSecondDelay (
   IN UINTN  MicroSeconds\r
   )\r
 {\r
-\r
   InternalCpuDelay (\r
     DivU64x32 (\r
       MultU64x64 (\r
@@ -136,8 +138,8 @@ MicroSecondDelay (
         InternalGetPerformanceCounterFrequency ()\r
         ),\r
       1000000u\r
-    )\r
-  );\r
+      )\r
+    );\r
 \r
   return MicroSeconds;\r
 }\r
@@ -158,7 +160,6 @@ NanoSecondDelay (
   IN UINTN  NanoSeconds\r
   )\r
 {\r
-\r
   InternalCpuDelay (\r
     DivU64x32 (\r
       MultU64x64 (\r
@@ -166,8 +167,8 @@ NanoSecondDelay (
         InternalGetPerformanceCounterFrequency ()\r
         ),\r
       1000000000u\r
-    )\r
-  );\r
+      )\r
+    );\r
 \r
   return NanoSeconds;\r
 }\r
@@ -230,6 +231,7 @@ GetPerformanceCounterProperties (
   if (EndValue != NULL) {\r
     *EndValue = 0xffffffffffffffffULL;\r
   }\r
+\r
   return InternalGetPerformanceCounterFrequency ();\r
 }\r
 \r
@@ -269,9 +271,9 @@ GetTimeInNanoSecond (
   // Since 2^29 < 1,000,000,000 = 0x3B9ACA00 < 2^30, Remainder should < 2^(64-30) = 2^34,\r
   // i.e. highest bit set in Remainder should <= 33.\r
   //\r
-  Shift = MAX (0, HighBitSet64 (Remainder) - 33);\r
-  Remainder = RShiftU64 (Remainder, (UINTN) Shift);\r
-  Frequency = RShiftU64 (Frequency, (UINTN) Shift);\r
+  Shift        = MAX (0, HighBitSet64 (Remainder) - 33);\r
+  Remainder    = RShiftU64 (Remainder, (UINTN)Shift);\r
+  Frequency    = RShiftU64 (Frequency, (UINTN)Shift);\r
   NanoSeconds += DivU64x64Remainder (MultU64x32 (Remainder, 1000000000u), Frequency, NULL);\r
 \r
   return NanoSeconds;\r
index 03a43fdae72954f17657bd3755bf6461c9c36b9b..767ec80f8af42b7c3c0d4dd4bae1837c524143bd 100644 (file)
@@ -25,7 +25,7 @@ GetProcessorMicrocodeSignature (
   VOID\r
   )\r
 {\r
-  MSR_IA32_BIOS_SIGN_ID_REGISTER   BiosSignIdMsr;\r
+  MSR_IA32_BIOS_SIGN_ID_REGISTER  BiosSignIdMsr;\r
 \r
   AsmWriteMsr64 (MSR_IA32_BIOS_SIGN_ID, 0);\r
   AsmCpuid (CPUID_VERSION_INFO, NULL, NULL, NULL, NULL);\r
@@ -44,12 +44,12 @@ GetProcessorMicrocodeCpuId (
   EDKII_PEI_MICROCODE_CPU_ID  *MicrocodeCpuId\r
   )\r
 {\r
-  MSR_IA32_PLATFORM_ID_REGISTER PlatformIdMsr;\r
+  MSR_IA32_PLATFORM_ID_REGISTER  PlatformIdMsr;\r
 \r
   ASSERT (MicrocodeCpuId != NULL);\r
 \r
-  PlatformIdMsr.Uint64 = AsmReadMsr64 (MSR_IA32_PLATFORM_ID);\r
-  MicrocodeCpuId->PlatformId = (UINT8) PlatformIdMsr.Bits.PlatformId;\r
+  PlatformIdMsr.Uint64       = AsmReadMsr64 (MSR_IA32_PLATFORM_ID);\r
+  MicrocodeCpuId->PlatformId = (UINT8)PlatformIdMsr.Bits.PlatformId;\r
   AsmCpuid (CPUID_VERSION_INFO, &MicrocodeCpuId->ProcessorSignature, NULL, NULL, NULL);\r
 }\r
 \r
@@ -71,10 +71,10 @@ GetProcessorMicrocodeCpuId (
 UINT32\r
 EFIAPI\r
 GetMicrocodeLength (\r
-  IN CPU_MICROCODE_HEADER *Microcode\r
+  IN CPU_MICROCODE_HEADER  *Microcode\r
   )\r
 {\r
-  UINT32   TotalSize;\r
+  UINT32  TotalSize;\r
 \r
   ASSERT (Microcode != NULL);\r
 \r
@@ -82,6 +82,7 @@ GetMicrocodeLength (
   if (Microcode->DataSize != 0) {\r
     TotalSize = Microcode->TotalSize;\r
   }\r
+\r
   return TotalSize;\r
 }\r
 \r
@@ -95,12 +96,12 @@ GetMicrocodeLength (
 VOID\r
 EFIAPI\r
 LoadMicrocode (\r
-  IN CPU_MICROCODE_HEADER *Microcode\r
+  IN CPU_MICROCODE_HEADER  *Microcode\r
   )\r
 {\r
   ASSERT (Microcode != NULL);\r
 \r
-  AsmWriteMsr64 (MSR_IA32_BIOS_UPDT_TRIG, (UINT64) (UINTN) (Microcode + 1));\r
+  AsmWriteMsr64 (MSR_IA32_BIOS_UPDT_TRIG, (UINT64)(UINTN)(Microcode + 1));\r
 }\r
 \r
 /**\r
@@ -119,13 +120,13 @@ LoadMicrocode (
 **/\r
 BOOLEAN\r
 IsProcessorMatchedMicrocode (\r
-  IN UINT32                           ProcessorSignature,\r
-  IN UINT32                           ProcessorFlags,\r
-  IN EDKII_PEI_MICROCODE_CPU_ID       *MicrocodeCpuId,\r
-  IN UINTN                            MicrocodeCpuIdCount\r
+  IN UINT32                      ProcessorSignature,\r
+  IN UINT32                      ProcessorFlags,\r
+  IN EDKII_PEI_MICROCODE_CPU_ID  *MicrocodeCpuId,\r
+  IN UINTN                       MicrocodeCpuIdCount\r
   )\r
 {\r
-  UINTN          Index;\r
+  UINTN  Index;\r
 \r
   if (MicrocodeCpuIdCount == 0) {\r
     return TRUE;\r
@@ -133,7 +134,8 @@ IsProcessorMatchedMicrocode (
 \r
   for (Index = 0; Index < MicrocodeCpuIdCount; Index++) {\r
     if ((ProcessorSignature == MicrocodeCpuId[Index].ProcessorSignature) &&\r
-        (ProcessorFlags & (1 << MicrocodeCpuId[Index].PlatformId)) != 0) {\r
+        ((ProcessorFlags & (1 << MicrocodeCpuId[Index].PlatformId)) != 0))\r
+    {\r
       return TRUE;\r
     }\r
   }\r
@@ -182,22 +184,22 @@ IsProcessorMatchedMicrocode (
 BOOLEAN\r
 EFIAPI\r
 IsValidMicrocode (\r
-  IN CPU_MICROCODE_HEADER       *Microcode,\r
-  IN UINTN                      MicrocodeLength,\r
-  IN UINT32                     MinimumRevision,\r
-  IN EDKII_PEI_MICROCODE_CPU_ID *MicrocodeCpuIds,\r
-  IN UINTN                      MicrocodeCpuIdCount,\r
-  IN BOOLEAN                    VerifyChecksum\r
+  IN CPU_MICROCODE_HEADER        *Microcode,\r
+  IN UINTN                       MicrocodeLength,\r
+  IN UINT32                      MinimumRevision,\r
+  IN EDKII_PEI_MICROCODE_CPU_ID  *MicrocodeCpuIds,\r
+  IN UINTN                       MicrocodeCpuIdCount,\r
+  IN BOOLEAN                     VerifyChecksum\r
   )\r
 {\r
-  UINTN                                   Index;\r
-  UINT32                                  DataSize;\r
-  UINT32                                  TotalSize;\r
-  CPU_MICROCODE_EXTENDED_TABLE            *ExtendedTable;\r
-  CPU_MICROCODE_EXTENDED_TABLE_HEADER     *ExtendedTableHeader;\r
-  UINT32                                  ExtendedTableLength;\r
-  UINT32                                  Sum32;\r
-  BOOLEAN                                 Match;\r
+  UINTN                                Index;\r
+  UINT32                               DataSize;\r
+  UINT32                               TotalSize;\r
+  CPU_MICROCODE_EXTENDED_TABLE         *ExtendedTable;\r
+  CPU_MICROCODE_EXTENDED_TABLE_HEADER  *ExtendedTableHeader;\r
+  UINT32                               ExtendedTableLength;\r
+  UINT32                               Sum32;\r
+  BOOLEAN                              Match;\r
 \r
   ASSERT (Microcode != NULL);\r
 \r
@@ -206,7 +208,7 @@ IsValidMicrocode (
   //   the input microcode buffer is so small that even cannot contain the header.\r
   //   the input microcode buffer is so large that exceeds MAX_ADDRESS.\r
   //\r
-  if ((MicrocodeLength < sizeof (CPU_MICROCODE_HEADER)) || (MicrocodeLength > (MAX_ADDRESS - (UINTN) Microcode))) {\r
+  if ((MicrocodeLength < sizeof (CPU_MICROCODE_HEADER)) || (MicrocodeLength > (MAX_ADDRESS - (UINTN)Microcode))) {\r
     return FALSE;\r
   }\r
 \r
@@ -249,7 +251,7 @@ IsValidMicrocode (
   //\r
   // The summation of all DWORDs in microcode should be zero.\r
   //\r
-  if (VerifyChecksum && (CalculateSum32 ((UINT32 *) Microcode, TotalSize) != 0)) {\r
+  if (VerifyChecksum && (CalculateSum32 ((UINT32 *)Microcode, TotalSize) != 0)) {\r
     return FALSE;\r
   }\r
 \r
@@ -272,29 +274,34 @@ IsValidMicrocode (
   if ((ExtendedTableLength < sizeof (CPU_MICROCODE_EXTENDED_TABLE_HEADER)) || ((ExtendedTableLength % 4) != 0)) {\r
     return FALSE;\r
   }\r
+\r
   //\r
   // Extended Table exist, check if the CPU in support list\r
   //\r
-  ExtendedTableHeader = (CPU_MICROCODE_EXTENDED_TABLE_HEADER *) ((UINTN) (Microcode + 1) + DataSize);\r
+  ExtendedTableHeader = (CPU_MICROCODE_EXTENDED_TABLE_HEADER *)((UINTN)(Microcode + 1) + DataSize);\r
   if (ExtendedTableHeader->ExtendedSignatureCount > MAX_UINT32 / sizeof (CPU_MICROCODE_EXTENDED_TABLE)) {\r
     return FALSE;\r
   }\r
+\r
   if (ExtendedTableHeader->ExtendedSignatureCount * sizeof (CPU_MICROCODE_EXTENDED_TABLE)\r
-      > ExtendedTableLength - sizeof (CPU_MICROCODE_EXTENDED_TABLE_HEADER)) {\r
+      > ExtendedTableLength - sizeof (CPU_MICROCODE_EXTENDED_TABLE_HEADER))\r
+  {\r
     return FALSE;\r
   }\r
+\r
   //\r
   // Check the extended table checksum\r
   //\r
-  if (VerifyChecksum && (CalculateSum32 ((UINT32 *) ExtendedTableHeader, ExtendedTableLength) != 0)) {\r
+  if (VerifyChecksum && (CalculateSum32 ((UINT32 *)ExtendedTableHeader, ExtendedTableLength) != 0)) {\r
     return FALSE;\r
   }\r
 \r
-  ExtendedTable = (CPU_MICROCODE_EXTENDED_TABLE *) (ExtendedTableHeader + 1);\r
-  for (Index = 0; Index < ExtendedTableHeader->ExtendedSignatureCount; Index ++) {\r
+  ExtendedTable = (CPU_MICROCODE_EXTENDED_TABLE *)(ExtendedTableHeader + 1);\r
+  for (Index = 0; Index < ExtendedTableHeader->ExtendedSignatureCount; Index++) {\r
     if (VerifyChecksum &&\r
         (ExtendedTable[Index].ProcessorSignature.Uint32 + ExtendedTable[Index].ProcessorFlag\r
-        + ExtendedTable[Index].Checksum != Sum32)) {\r
+         + ExtendedTable[Index].Checksum != Sum32))\r
+    {\r
       //\r
       // The extended table entry is valid when the summation of Processor Signature, Processor Flags\r
       // and Checksum equal to the coresponding summation from primary header. Because:\r
@@ -308,6 +315,7 @@ IsValidMicrocode (
       //\r
       continue;\r
     }\r
+\r
     Match = IsProcessorMatchedMicrocode (\r
               ExtendedTable[Index].ProcessorSignature.Uint32,\r
               ExtendedTable[Index].ProcessorFlag,\r
@@ -318,5 +326,6 @@ IsValidMicrocode (
       return TRUE;\r
     }\r
   }\r
+\r
   return FALSE;\r
 }\r
index 93fc63bf93e3070d5e3ddffae14158d72aacc74c..9d9206d20915bc9d3d3a15b412d210cb142f24c1 100644 (file)
 \r
 #include <Protocol/Timer.h>\r
 \r
-#define  AP_SAFE_STACK_SIZE    128\r
+#define  AP_SAFE_STACK_SIZE  128\r
 \r
-CPU_MP_DATA      *mCpuMpData = NULL;\r
-EFI_EVENT        mCheckAllApsEvent = NULL;\r
-EFI_EVENT        mMpInitExitBootServicesEvent = NULL;\r
-EFI_EVENT        mLegacyBootEvent = NULL;\r
-volatile BOOLEAN mStopCheckAllApsStatus = TRUE;\r
-VOID             *mReservedApLoopFunc = NULL;\r
-UINTN            mReservedTopOfApStack;\r
-volatile UINT32  mNumberToFinish = 0;\r
+CPU_MP_DATA       *mCpuMpData                  = NULL;\r
+EFI_EVENT         mCheckAllApsEvent            = NULL;\r
+EFI_EVENT         mMpInitExitBootServicesEvent = NULL;\r
+EFI_EVENT         mLegacyBootEvent             = NULL;\r
+volatile BOOLEAN  mStopCheckAllApsStatus       = TRUE;\r
+VOID              *mReservedApLoopFunc         = NULL;\r
+UINTN             mReservedTopOfApStack;\r
+volatile UINT32   mNumberToFinish = 0;\r
 \r
 //\r
 // Begin wakeup buffer allocation below 0x88000\r
 //\r
-STATIC EFI_PHYSICAL_ADDRESS mSevEsDxeWakeupBuffer = 0x88000;\r
+STATIC EFI_PHYSICAL_ADDRESS  mSevEsDxeWakeupBuffer = 0x88000;\r
 \r
 /**\r
   Enable Debug Agent to support source debugging on AP function.\r
@@ -70,7 +70,7 @@ GetCpuMpData (
 **/\r
 VOID\r
 SaveCpuMpData (\r
-  IN CPU_MP_DATA   *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
   mCpuMpData = CpuMpData;\r
@@ -86,12 +86,12 @@ SaveCpuMpData (
 **/\r
 UINTN\r
 GetWakeupBuffer (\r
-  IN UINTN                WakeupBufferSize\r
+  IN UINTN  WakeupBufferSize\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
-  EFI_PHYSICAL_ADDRESS    StartAddress;\r
-  EFI_MEMORY_TYPE         MemoryType;\r
+  EFI_STATUS            Status;\r
+  EFI_PHYSICAL_ADDRESS  StartAddress;\r
+  EFI_MEMORY_TYPE       MemoryType;\r
 \r
   if (PcdGetBool (PcdSevEsIsEnabled)) {\r
     MemoryType = EfiReservedMemoryType;\r
@@ -115,6 +115,7 @@ GetWakeupBuffer (
   } else {\r
     StartAddress = 0x88000;\r
   }\r
+\r
   Status = gBS->AllocatePages (\r
                   AllocateMaxAddress,\r
                   MemoryType,\r
@@ -123,7 +124,7 @@ GetWakeupBuffer (
                   );\r
   ASSERT_EFI_ERROR (Status);\r
   if (EFI_ERROR (Status)) {\r
-    StartAddress = (EFI_PHYSICAL_ADDRESS) -1;\r
+    StartAddress = (EFI_PHYSICAL_ADDRESS)-1;\r
   } else if (PcdGetBool (PcdSevEsIsEnabled)) {\r
     //\r
     // Next SEV-ES wakeup buffer allocation must be below this allocation\r
@@ -131,10 +132,14 @@ GetWakeupBuffer (
     mSevEsDxeWakeupBuffer = StartAddress;\r
   }\r
 \r
-  DEBUG ((DEBUG_INFO, "WakeupBufferStart = %x, WakeupBufferSize = %x\n",\r
-                      (UINTN) StartAddress, WakeupBufferSize));\r
+  DEBUG ((\r
+    DEBUG_INFO,\r
+    "WakeupBufferStart = %x, WakeupBufferSize = %x\n",\r
+    (UINTN)StartAddress,\r
+    WakeupBufferSize\r
+    ));\r
 \r
-  return (UINTN) StartAddress;\r
+  return (UINTN)StartAddress;\r
 }\r
 \r
 /**\r
@@ -151,19 +156,19 @@ GetWakeupBuffer (
 **/\r
 UINTN\r
 GetModeTransitionBuffer (\r
-  IN UINTN                BufferSize\r
+  IN UINTN  BufferSize\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
-  EFI_PHYSICAL_ADDRESS    StartAddress;\r
+  EFI_STATUS            Status;\r
+  EFI_PHYSICAL_ADDRESS  StartAddress;\r
 \r
   StartAddress = BASE_4GB - 1;\r
-  Status = gBS->AllocatePages (\r
-                  AllocateMaxAddress,\r
-                  EfiBootServicesCode,\r
-                  EFI_SIZE_TO_PAGES (BufferSize),\r
-                  &StartAddress\r
-                  );\r
+  Status       = gBS->AllocatePages (\r
+                        AllocateMaxAddress,\r
+                        EfiBootServicesCode,\r
+                        EFI_SIZE_TO_PAGES (BufferSize),\r
+                        &StartAddress\r
+                        );\r
   if (EFI_ERROR (Status)) {\r
     StartAddress = 0;\r
   }\r
@@ -194,27 +199,27 @@ GetSevEsAPMemory (
   // Allocate 1 page for AP jump table page\r
   //\r
   StartAddress = BASE_4GB - 1;\r
-  Status = gBS->AllocatePages (\r
-                  AllocateMaxAddress,\r
-                  EfiReservedMemoryType,\r
-                  1,\r
-                  &StartAddress\r
-                  );\r
+  Status       = gBS->AllocatePages (\r
+                        AllocateMaxAddress,\r
+                        EfiReservedMemoryType,\r
+                        1,\r
+                        &StartAddress\r
+                        );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  DEBUG ((DEBUG_INFO, "Dxe: SevEsAPMemory = %lx\n", (UINTN) StartAddress));\r
+  DEBUG ((DEBUG_INFO, "Dxe: SevEsAPMemory = %lx\n", (UINTN)StartAddress));\r
 \r
   //\r
   // Save the SevEsAPMemory as the AP jump table.\r
   //\r
   Msr.GhcbPhysicalAddress = AsmReadMsr64 (MSR_SEV_ES_GHCB);\r
-  Ghcb = Msr.Ghcb;\r
+  Ghcb                    = Msr.Ghcb;\r
 \r
   VmgInit (Ghcb, &InterruptState);\r
-  VmgExit (Ghcb, SVM_EXIT_AP_JUMP_TABLE, 0, (UINT64) (UINTN) StartAddress);\r
+  VmgExit (Ghcb, SVM_EXIT_AP_JUMP_TABLE, 0, (UINT64)(UINTN)StartAddress);\r
   VmgDone (Ghcb, InterruptState);\r
 \r
-  return (UINTN) StartAddress;\r
+  return (UINTN)StartAddress;\r
 }\r
 \r
 /**\r
@@ -226,9 +231,9 @@ CheckAndUpdateApsStatus (
   VOID\r
   )\r
 {\r
-  UINTN                   ProcessorNumber;\r
-  EFI_STATUS              Status;\r
-  CPU_MP_DATA             *CpuMpData;\r
+  UINTN        ProcessorNumber;\r
+  EFI_STATUS   Status;\r
+  CPU_MP_DATA  *CpuMpData;\r
 \r
   CpuMpData = GetCpuMpData ();\r
 \r
@@ -236,13 +241,12 @@ CheckAndUpdateApsStatus (
   // First, check whether pending StartupAllAPs() exists.\r
   //\r
   if (CpuMpData->WaitEvent != NULL) {\r
-\r
     Status = CheckAllAPs ();\r
     //\r
     // If all APs finish for StartupAllAPs(), signal the WaitEvent for it.\r
     //\r
     if (Status != EFI_NOT_READY) {\r
-      Status = gBS->SignalEvent (CpuMpData->WaitEvent);\r
+      Status               = gBS->SignalEvent (CpuMpData->WaitEvent);\r
       CpuMpData->WaitEvent = NULL;\r
     }\r
   }\r
@@ -251,7 +255,6 @@ CheckAndUpdateApsStatus (
   // Second, check whether pending StartupThisAPs() callings exist.\r
   //\r
   for (ProcessorNumber = 0; ProcessorNumber < CpuMpData->CpuCount; ProcessorNumber++) {\r
-\r
     if (CpuMpData->CpuData[ProcessorNumber].WaitEvent == NULL) {\r
       continue;\r
     }\r
@@ -260,7 +263,7 @@ CheckAndUpdateApsStatus (
 \r
     if (Status != EFI_NOT_READY) {\r
       gBS->SignalEvent (CpuMpData->CpuData[ProcessorNumber].WaitEvent);\r
-     CpuMpData->CpuData[ProcessorNumber].WaitEvent = NULL;\r
+      CpuMpData->CpuData[ProcessorNumber].WaitEvent = NULL;\r
     }\r
   }\r
 }\r
@@ -279,8 +282,8 @@ CheckAndUpdateApsStatus (
 VOID\r
 EFIAPI\r
 CheckApsStatus (\r
-  IN  EFI_EVENT                           Event,\r
-  IN  VOID                                *Context\r
+  IN  EFI_EVENT  Event,\r
+  IN  VOID       *Context\r
   )\r
 {\r
   //\r
@@ -307,18 +310,20 @@ GetProtectedMode16CS (
   UINTN                    GdtEntryCount;\r
   UINT16                   Index;\r
 \r
-  Index = (UINT16) -1;\r
+  Index = (UINT16)-1;\r
   AsmReadGdtr (&GdtrDesc);\r
   GdtEntryCount = (GdtrDesc.Limit + 1) / sizeof (IA32_SEGMENT_DESCRIPTOR);\r
-  GdtEntry = (IA32_SEGMENT_DESCRIPTOR *) GdtrDesc.Base;\r
+  GdtEntry      = (IA32_SEGMENT_DESCRIPTOR *)GdtrDesc.Base;\r
   for (Index = 0; Index < GdtEntryCount; Index++) {\r
     if (GdtEntry->Bits.L == 0) {\r
-      if (GdtEntry->Bits.Type > 8 && GdtEntry->Bits.DB == 0) {\r
+      if ((GdtEntry->Bits.Type > 8) && (GdtEntry->Bits.DB == 0)) {\r
         break;\r
       }\r
     }\r
+\r
     GdtEntry++;\r
   }\r
+\r
   ASSERT (Index != GdtEntryCount);\r
   return Index * 8;\r
 }\r
@@ -340,15 +345,17 @@ GetProtectedModeCS (
 \r
   AsmReadGdtr (&GdtrDesc);\r
   GdtEntryCount = (GdtrDesc.Limit + 1) / sizeof (IA32_SEGMENT_DESCRIPTOR);\r
-  GdtEntry = (IA32_SEGMENT_DESCRIPTOR *) GdtrDesc.Base;\r
+  GdtEntry      = (IA32_SEGMENT_DESCRIPTOR *)GdtrDesc.Base;\r
   for (Index = 0; Index < GdtEntryCount; Index++) {\r
     if (GdtEntry->Bits.L == 0) {\r
-      if (GdtEntry->Bits.Type > 8 && GdtEntry->Bits.DB == 1) {\r
+      if ((GdtEntry->Bits.Type > 8) && (GdtEntry->Bits.DB == 1)) {\r
         break;\r
       }\r
     }\r
+\r
     GdtEntry++;\r
   }\r
+\r
   ASSERT (Index != GdtEntryCount);\r
   return Index * 8;\r
 }\r
@@ -364,11 +371,11 @@ RelocateApLoop (
   IN OUT VOID  *Buffer\r
   )\r
 {\r
-  CPU_MP_DATA            *CpuMpData;\r
-  BOOLEAN                MwaitSupport;\r
-  ASM_RELOCATE_AP_LOOP   AsmRelocateApLoopFunc;\r
-  UINTN                  ProcessorNumber;\r
-  UINTN                  StackStart;\r
+  CPU_MP_DATA           *CpuMpData;\r
+  BOOLEAN               MwaitSupport;\r
+  ASM_RELOCATE_AP_LOOP  AsmRelocateApLoopFunc;\r
+  UINTN                 ProcessorNumber;\r
+  UINTN                 StackStart;\r
 \r
   MpInitLibWhoAmI (&ProcessorNumber);\r
   CpuMpData    = GetCpuMpData ();\r
@@ -378,13 +385,14 @@ RelocateApLoop (
   } else {\r
     StackStart = mReservedTopOfApStack;\r
   }\r
-  AsmRelocateApLoopFunc = (ASM_RELOCATE_AP_LOOP) (UINTN) mReservedApLoopFunc;\r
+\r
+  AsmRelocateApLoopFunc = (ASM_RELOCATE_AP_LOOP)(UINTN)mReservedApLoopFunc;\r
   AsmRelocateApLoopFunc (\r
     MwaitSupport,\r
     CpuMpData->ApTargetCState,\r
     CpuMpData->PmCodeSegment,\r
     StackStart - ProcessorNumber * AP_SAFE_STACK_SIZE,\r
-    (UINTN) &mNumberToFinish,\r
+    (UINTN)&mNumberToFinish,\r
     CpuMpData->Pm16CodeSegment,\r
     CpuMpData->SevEsAPBuffer,\r
     CpuMpData->WakeupBuffer\r
@@ -406,32 +414,32 @@ RelocateApLoop (
 VOID\r
 EFIAPI\r
 MpInitChangeApLoopCallback (\r
-  IN EFI_EVENT                Event,\r
-  IN VOID                     *Context\r
+  IN EFI_EVENT  Event,\r
+  IN VOID       *Context\r
   )\r
 {\r
-  CPU_MP_DATA               *CpuMpData;\r
+  CPU_MP_DATA  *CpuMpData;\r
 \r
-  CpuMpData = GetCpuMpData ();\r
-  CpuMpData->PmCodeSegment = GetProtectedModeCS ();\r
+  CpuMpData                  = GetCpuMpData ();\r
+  CpuMpData->PmCodeSegment   = GetProtectedModeCS ();\r
   CpuMpData->Pm16CodeSegment = GetProtectedMode16CS ();\r
-  CpuMpData->ApLoopMode = PcdGet8 (PcdCpuApLoopMode);\r
-  mNumberToFinish = CpuMpData->CpuCount - 1;\r
+  CpuMpData->ApLoopMode      = PcdGet8 (PcdCpuApLoopMode);\r
+  mNumberToFinish            = CpuMpData->CpuCount - 1;\r
   WakeUpAP (CpuMpData, TRUE, 0, RelocateApLoop, NULL, TRUE);\r
   while (mNumberToFinish > 0) {\r
     CpuPause ();\r
   }\r
 \r
-  if (CpuMpData->SevEsIsEnabled && (CpuMpData->WakeupBuffer != (UINTN) -1)) {\r
+  if (CpuMpData->SevEsIsEnabled && (CpuMpData->WakeupBuffer != (UINTN)-1)) {\r
     //\r
     // There are APs present. Re-use reserved memory area below 1MB from\r
     // WakeupBuffer as the area to be used for transitioning to 16-bit mode\r
     // in support of booting of the AP by an OS.\r
     //\r
     CopyMem (\r
-      (VOID *) CpuMpData->WakeupBuffer,\r
-      (VOID *) (CpuMpData->AddressMap.RendezvousFunnelAddress +\r
-                  CpuMpData->AddressMap.SwitchToRealPM16ModeOffset),\r
+      (VOID *)CpuMpData->WakeupBuffer,\r
+      (VOID *)(CpuMpData->AddressMap.RendezvousFunnelAddress +\r
+               CpuMpData->AddressMap.SwitchToRealPM16ModeOffset),\r
       CpuMpData->AddressMap.SwitchToRealPM16ModeSize\r
       );\r
   }\r
@@ -446,16 +454,16 @@ MpInitChangeApLoopCallback (
 **/\r
 VOID\r
 InitMpGlobalData (\r
-  IN CPU_MP_DATA               *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  EFI_STATUS                          Status;\r
-  EFI_PHYSICAL_ADDRESS                Address;\r
-  UINTN                               ApSafeBufferSize;\r
-  UINTN                               Index;\r
-  EFI_GCD_MEMORY_SPACE_DESCRIPTOR     MemDesc;\r
-  UINTN                               StackBase;\r
-  CPU_INFO_IN_HOB                     *CpuInfoInHob;\r
+  EFI_STATUS                       Status;\r
+  EFI_PHYSICAL_ADDRESS             Address;\r
+  UINTN                            ApSafeBufferSize;\r
+  UINTN                            Index;\r
+  EFI_GCD_MEMORY_SPACE_DESCRIPTOR  MemDesc;\r
+  UINTN                            StackBase;\r
+  CPU_INFO_IN_HOB                  *CpuInfoInHob;\r
 \r
   SaveCpuMpData (CpuMpData);\r
 \r
@@ -485,7 +493,7 @@ InitMpGlobalData (
     //\r
     CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
     for (Index = 0; Index < CpuMpData->CpuCount; ++Index) {\r
-      if (CpuInfoInHob != NULL && CpuInfoInHob[Index].ApTopOfStack != 0) {\r
+      if ((CpuInfoInHob != NULL) && (CpuInfoInHob[Index].ApTopOfStack != 0)) {\r
         StackBase = (UINTN)CpuInfoInHob[Index].ApTopOfStack - CpuMpData->CpuApStackSize;\r
       } else {\r
         StackBase = CpuMpData->Buffer + Index * CpuMpData->CpuApStackSize;\r
@@ -501,8 +509,12 @@ InitMpGlobalData (
                       );\r
       ASSERT_EFI_ERROR (Status);\r
 \r
-      DEBUG ((DEBUG_INFO, "Stack Guard set at %lx [cpu%lu]!\n",\r
-              (UINT64)StackBase, (UINT64)Index));\r
+      DEBUG ((\r
+        DEBUG_INFO,\r
+        "Stack Guard set at %lx [cpu%lu]!\n",\r
+        (UINT64)StackBase,\r
+        (UINT64)Index\r
+        ));\r
     }\r
   }\r
 \r
@@ -514,9 +526,11 @@ InitMpGlobalData (
   // Allocating it in advance since memory services are not available in\r
   // Exit Boot Services callback function.\r
   //\r
-  ApSafeBufferSize  = EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (\r
-                        CpuMpData->AddressMap.RelocateApLoopFuncSize\r
-                        ));\r
+  ApSafeBufferSize = EFI_PAGES_TO_SIZE (\r
+                       EFI_SIZE_TO_PAGES (\r
+                         CpuMpData->AddressMap.RelocateApLoopFuncSize\r
+                         )\r
+                       );\r
   Address = BASE_4GB - 1;\r
   Status  = gBS->AllocatePages (\r
                    AllocateMaxAddress,\r
@@ -526,7 +540,7 @@ InitMpGlobalData (
                    );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  mReservedApLoopFunc = (VOID *) (UINTN) Address;\r
+  mReservedApLoopFunc = (VOID *)(UINTN)Address;\r
   ASSERT (mReservedApLoopFunc != NULL);\r
 \r
   //\r
@@ -545,9 +559,11 @@ InitMpGlobalData (
            );\r
   }\r
 \r
-  ApSafeBufferSize = EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (\r
-                       CpuMpData->CpuCount * AP_SAFE_STACK_SIZE\r
-                       ));\r
+  ApSafeBufferSize = EFI_PAGES_TO_SIZE (\r
+                       EFI_SIZE_TO_PAGES (\r
+                         CpuMpData->CpuCount * AP_SAFE_STACK_SIZE\r
+                         )\r
+                       );\r
   Address = BASE_4GB - 1;\r
   Status  = gBS->AllocatePages (\r
                    AllocateMaxAddress,\r
@@ -557,7 +573,7 @@ InitMpGlobalData (
                    );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  mReservedTopOfApStack = (UINTN) Address + ApSafeBufferSize;\r
+  mReservedTopOfApStack = (UINTN)Address + ApSafeBufferSize;\r
   ASSERT ((mReservedTopOfApStack & (UINTN)(CPU_STACK_ALIGNMENT - 1)) == 0);\r
   CopyMem (\r
     mReservedApLoopFunc,\r
@@ -684,15 +700,15 @@ InitMpGlobalData (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupAllAPs (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  BOOLEAN                   SingleThread,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT UINTN                     **FailedCpuList         OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  BOOLEAN           SingleThread,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT UINTN             **FailedCpuList         OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
+  EFI_STATUS  Status;\r
 \r
   //\r
   // Temporarily stop checkAllApsStatus for avoid resource dead-lock.\r
@@ -791,15 +807,15 @@ MpInitLibStartupAllAPs (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupThisAP (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT BOOLEAN                   *Finished               OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  UINTN             ProcessorNumber,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT BOOLEAN           *Finished               OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
+  EFI_STATUS  Status;\r
 \r
   //\r
   // temporarily stop checkAllApsStatus for avoid resource dead-lock.\r
@@ -849,19 +865,19 @@ MpInitLibStartupThisAP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibSwitchBSP (\r
-  IN UINTN                     ProcessorNumber,\r
-  IN BOOLEAN                   EnableOldBSP\r
+  IN UINTN    ProcessorNumber,\r
+  IN BOOLEAN  EnableOldBSP\r
   )\r
 {\r
-  EFI_STATUS                   Status;\r
-  EFI_TIMER_ARCH_PROTOCOL      *Timer;\r
-  UINT64                       TimerPeriod;\r
+  EFI_STATUS               Status;\r
+  EFI_TIMER_ARCH_PROTOCOL  *Timer;\r
+  UINT64                   TimerPeriod;\r
 \r
   TimerPeriod = 0;\r
   //\r
   // Locate Timer Arch Protocol\r
   //\r
-  Status = gBS->LocateProtocol (&gEfiTimerArchProtocolGuid, NULL, (VOID **) &Timer);\r
+  Status = gBS->LocateProtocol (&gEfiTimerArchProtocolGuid, NULL, (VOID **)&Timer);\r
   if (EFI_ERROR (Status)) {\r
     Timer = NULL;\r
   }\r
@@ -922,13 +938,13 @@ MpInitLibSwitchBSP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibEnableDisableAP (\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  BOOLEAN                   EnableAP,\r
-  IN  UINT32                    *HealthFlag OPTIONAL\r
+  IN  UINTN    ProcessorNumber,\r
+  IN  BOOLEAN  EnableAP,\r
+  IN  UINT32   *HealthFlag OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS     Status;\r
-  BOOLEAN        TempStopCheckState;\r
+  EFI_STATUS  Status;\r
+  BOOLEAN     TempStopCheckState;\r
 \r
   TempStopCheckState = FALSE;\r
   //\r
@@ -961,7 +977,7 @@ MpInitLibEnableDisableAP (
 **/\r
 EFI_STATUS\r
 PlatformShadowMicrocode (\r
-  IN OUT CPU_MP_DATA             *CpuMpData\r
+  IN OUT CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
   //\r
index 105a9f84bf95bd0f7fc3f71747386a98ba0df547..f9f070fa8bf230e72b7643b5bd8f96212512905b 100644 (file)
 **/\r
 VOID\r
 MicrocodeDetect (\r
-  IN CPU_MP_DATA             *CpuMpData,\r
-  IN UINTN                   ProcessorNumber\r
+  IN CPU_MP_DATA  *CpuMpData,\r
+  IN UINTN        ProcessorNumber\r
   )\r
 {\r
-  CPU_MICROCODE_HEADER                    *Microcode;\r
-  UINTN                                   MicrocodeEnd;\r
-  CPU_AP_DATA                             *BspData;\r
-  UINT32                                  LatestRevision;\r
-  CPU_MICROCODE_HEADER                    *LatestMicrocode;\r
-  UINT32                                  ThreadId;\r
-  EDKII_PEI_MICROCODE_CPU_ID              MicrocodeCpuId;\r
+  CPU_MICROCODE_HEADER        *Microcode;\r
+  UINTN                       MicrocodeEnd;\r
+  CPU_AP_DATA                 *BspData;\r
+  UINT32                      LatestRevision;\r
+  CPU_MICROCODE_HEADER        *LatestMicrocode;\r
+  UINT32                      ThreadId;\r
+  EDKII_PEI_MICROCODE_CPU_ID  MicrocodeCpuId;\r
 \r
   if (CpuMpData->MicrocodePatchRegionSize == 0) {\r
     //\r
@@ -47,7 +47,7 @@ MicrocodeDetect (
 \r
   GetProcessorMicrocodeCpuId (&MicrocodeCpuId);\r
 \r
-  if (ProcessorNumber != (UINTN) CpuMpData->BspNumber) {\r
+  if (ProcessorNumber != (UINTN)CpuMpData->BspNumber) {\r
     //\r
     // Direct use microcode of BSP if AP is the same as BSP.\r
     // Assume BSP calls this routine() before AP.\r
@@ -55,8 +55,9 @@ MicrocodeDetect (
     BspData = &(CpuMpData->CpuData[CpuMpData->BspNumber]);\r
     if ((BspData->ProcessorSignature == MicrocodeCpuId.ProcessorSignature) &&\r
         (BspData->PlatformId == MicrocodeCpuId.PlatformId) &&\r
-        (BspData->MicrocodeEntryAddr != 0)) {\r
-      LatestMicrocode = (CPU_MICROCODE_HEADER *)(UINTN) BspData->MicrocodeEntryAddr;\r
+        (BspData->MicrocodeEntryAddr != 0))\r
+    {\r
+      LatestMicrocode = (CPU_MICROCODE_HEADER *)(UINTN)BspData->MicrocodeEntryAddr;\r
       LatestRevision  = LatestMicrocode->UpdateRevision;\r
       goto LoadMicrocode;\r
     }\r
@@ -69,11 +70,11 @@ MicrocodeDetect (
   //\r
   LatestRevision  = 0;\r
   LatestMicrocode = NULL;\r
-  Microcode       = (CPU_MICROCODE_HEADER *) (UINTN) CpuMpData->MicrocodePatchAddress;\r
-  MicrocodeEnd    = (UINTN) Microcode + (UINTN) CpuMpData->MicrocodePatchRegionSize;\r
+  Microcode       = (CPU_MICROCODE_HEADER *)(UINTN)CpuMpData->MicrocodePatchAddress;\r
+  MicrocodeEnd    = (UINTN)Microcode + (UINTN)CpuMpData->MicrocodePatchRegionSize;\r
 \r
   do {\r
-    if (!IsValidMicrocode (Microcode, MicrocodeEnd - (UINTN) Microcode, LatestRevision, &MicrocodeCpuId, 1, TRUE)) {\r
+    if (!IsValidMicrocode (Microcode, MicrocodeEnd - (UINTN)Microcode, LatestRevision, &MicrocodeCpuId, 1, TRUE)) {\r
       //\r
       // It is the padding data between the microcode patches for microcode patches alignment.\r
       // Because the microcode patch is the multiple of 1-KByte, the padding data should not\r
@@ -81,14 +82,15 @@ MicrocodeDetect (
       // alignment value should be larger than 1-KByte. We could skip SIZE_1KB padding data to\r
       // find the next possible microcode patch header.\r
       //\r
-      Microcode = (CPU_MICROCODE_HEADER *) ((UINTN) Microcode + SIZE_1KB);\r
+      Microcode = (CPU_MICROCODE_HEADER *)((UINTN)Microcode + SIZE_1KB);\r
       continue;\r
     }\r
+\r
     LatestMicrocode = Microcode;\r
     LatestRevision  = LatestMicrocode->UpdateRevision;\r
 \r
-    Microcode = (CPU_MICROCODE_HEADER *) (((UINTN) Microcode) + GetMicrocodeLength (Microcode));\r
-  } while ((UINTN) Microcode < MicrocodeEnd);\r
+    Microcode = (CPU_MICROCODE_HEADER *)(((UINTN)Microcode) + GetMicrocodeLength (Microcode));\r
+  } while ((UINTN)Microcode < MicrocodeEnd);\r
 \r
 LoadMicrocode:\r
   if (LatestRevision != 0) {\r
@@ -97,7 +99,7 @@ LoadMicrocode:
     // patch header) for each processor even it's the same as the loaded one.\r
     // It will be used when building the microcode patch cache HOB.\r
     //\r
-    CpuMpData->CpuData[ProcessorNumber].MicrocodeEntryAddr = (UINTN) LatestMicrocode;\r
+    CpuMpData->CpuData[ProcessorNumber].MicrocodeEntryAddr = (UINTN)LatestMicrocode;\r
   }\r
 \r
   if (LatestRevision > GetProcessorMicrocodeSignature ()) {\r
@@ -109,6 +111,7 @@ LoadMicrocode:
     //\r
     LoadMicrocode (LatestMicrocode);\r
   }\r
+\r
   //\r
   // It's possible that the microcode fails to load. Just capture the CPU microcode revision after loading.\r
   //\r
@@ -129,15 +132,15 @@ LoadMicrocode:
 **/\r
 VOID\r
 ShadowMicrocodePatchWorker (\r
-  IN OUT CPU_MP_DATA             *CpuMpData,\r
-  IN     MICROCODE_PATCH_INFO    *Patches,\r
-  IN     UINTN                   PatchCount,\r
-  IN     UINTN                   TotalLoadSize\r
+  IN OUT CPU_MP_DATA           *CpuMpData,\r
+  IN     MICROCODE_PATCH_INFO  *Patches,\r
+  IN     UINTN                 PatchCount,\r
+  IN     UINTN                 TotalLoadSize\r
   )\r
 {\r
-  UINTN    Index;\r
-  VOID     *MicrocodePatchInRam;\r
-  UINT8    *Walker;\r
+  UINTN  Index;\r
+  VOID   *MicrocodePatchInRam;\r
+  UINT8  *Walker;\r
 \r
   ASSERT ((Patches != NULL) && (PatchCount != 0));\r
 \r
@@ -152,7 +155,7 @@ ShadowMicrocodePatchWorker (
   for (Walker = MicrocodePatchInRam, Index = 0; Index < PatchCount; Index++) {\r
     CopyMem (\r
       Walker,\r
-      (VOID *) Patches[Index].Address,\r
+      (VOID *)Patches[Index].Address,\r
       Patches[Index].Size\r
       );\r
     Walker += Patches[Index].Size;\r
@@ -161,13 +164,15 @@ ShadowMicrocodePatchWorker (
   //\r
   // Update the microcode patch related fields in CpuMpData\r
   //\r
-  CpuMpData->MicrocodePatchAddress    = (UINTN) MicrocodePatchInRam;\r
+  CpuMpData->MicrocodePatchAddress    = (UINTN)MicrocodePatchInRam;\r
   CpuMpData->MicrocodePatchRegionSize = TotalLoadSize;\r
 \r
   DEBUG ((\r
     DEBUG_INFO,\r
     "%a: Required microcode patches have been loaded at 0x%lx, with size 0x%lx.\n",\r
-    __FUNCTION__, CpuMpData->MicrocodePatchAddress, CpuMpData->MicrocodePatchRegionSize\r
+    __FUNCTION__,\r
+    CpuMpData->MicrocodePatchAddress,\r
+    CpuMpData->MicrocodePatchRegionSize\r
     ));\r
 \r
   return;\r
@@ -181,19 +186,19 @@ ShadowMicrocodePatchWorker (
 **/\r
 VOID\r
 ShadowMicrocodePatchByPcd (\r
-  IN OUT CPU_MP_DATA             *CpuMpData\r
+  IN OUT CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  UINTN                                  Index;\r
-  CPU_MICROCODE_HEADER                   *MicrocodeEntryPoint;\r
-  UINTN                                  MicrocodeEnd;\r
-  UINTN                                  TotalSize;\r
-  MICROCODE_PATCH_INFO                   *PatchInfoBuffer;\r
-  UINTN                                  MaxPatchNumber;\r
-  UINTN                                  PatchCount;\r
-  UINTN                                  TotalLoadSize;\r
-  EDKII_PEI_MICROCODE_CPU_ID             *MicrocodeCpuIds;\r
-  BOOLEAN                                Valid;\r
+  UINTN                       Index;\r
+  CPU_MICROCODE_HEADER        *MicrocodeEntryPoint;\r
+  UINTN                       MicrocodeEnd;\r
+  UINTN                       TotalSize;\r
+  MICROCODE_PATCH_INFO        *PatchInfoBuffer;\r
+  UINTN                       MaxPatchNumber;\r
+  UINTN                       PatchCount;\r
+  UINTN                       TotalLoadSize;\r
+  EDKII_PEI_MICROCODE_CPU_ID  *MicrocodeCpuIds;\r
+  BOOLEAN                     Valid;\r
 \r
   //\r
   // Initialize the microcode patch related fields in CpuMpData as the values\r
@@ -203,10 +208,10 @@ ShadowMicrocodePatchByPcd (
   CpuMpData->MicrocodePatchAddress    = PcdGet64 (PcdCpuMicrocodePatchAddress);\r
   CpuMpData->MicrocodePatchRegionSize = PcdGet64 (PcdCpuMicrocodePatchRegionSize);\r
 \r
-  MicrocodeEntryPoint    = (CPU_MICROCODE_HEADER *) (UINTN) CpuMpData->MicrocodePatchAddress;\r
-  MicrocodeEnd           = (UINTN) MicrocodeEntryPoint +\r
-                           (UINTN) CpuMpData->MicrocodePatchRegionSize;\r
-  if ((MicrocodeEntryPoint == NULL) || ((UINTN) MicrocodeEntryPoint == MicrocodeEnd)) {\r
+  MicrocodeEntryPoint = (CPU_MICROCODE_HEADER *)(UINTN)CpuMpData->MicrocodePatchAddress;\r
+  MicrocodeEnd        = (UINTN)MicrocodeEntryPoint +\r
+                        (UINTN)CpuMpData->MicrocodePatchRegionSize;\r
+  if ((MicrocodeEntryPoint == NULL) || ((UINTN)MicrocodeEntryPoint == MicrocodeEnd)) {\r
     //\r
     // There is no microcode patches\r
     //\r
@@ -242,7 +247,7 @@ ShadowMicrocodePatchByPcd (
   do {\r
     Valid = IsValidMicrocode (\r
               MicrocodeEntryPoint,\r
-              MicrocodeEnd - (UINTN) MicrocodeEntryPoint,\r
+              MicrocodeEnd - (UINTN)MicrocodeEntryPoint,\r
               0,\r
               MicrocodeCpuIds,\r
               CpuMpData->CpuCount,\r
@@ -252,7 +257,7 @@ ShadowMicrocodePatchByPcd (
       //\r
       // Padding data between the microcode patches, skip 1KB to check next entry.\r
       //\r
-      MicrocodeEntryPoint = (CPU_MICROCODE_HEADER *) (((UINTN) MicrocodeEntryPoint) + SIZE_1KB);\r
+      MicrocodeEntryPoint = (CPU_MICROCODE_HEADER *)(((UINTN)MicrocodeEntryPoint) + SIZE_1KB);\r
       continue;\r
     }\r
 \r
@@ -277,6 +282,7 @@ ShadowMicrocodePatchByPcd (
       if (PatchInfoBuffer == NULL) {\r
         goto OnExit;\r
       }\r
+\r
       MaxPatchNumber = MaxPatchNumber * 2;\r
     }\r
 \r
@@ -285,21 +291,23 @@ ShadowMicrocodePatchByPcd (
     //\r
     // Store the information of this microcode patch\r
     //\r
-    PatchInfoBuffer[PatchCount - 1].Address = (UINTN) MicrocodeEntryPoint;\r
+    PatchInfoBuffer[PatchCount - 1].Address = (UINTN)MicrocodeEntryPoint;\r
     PatchInfoBuffer[PatchCount - 1].Size    = TotalSize;\r
-    TotalLoadSize += TotalSize;\r
+    TotalLoadSize                          += TotalSize;\r
 \r
     //\r
     // Process the next microcode patch\r
     //\r
-    MicrocodeEntryPoint = (CPU_MICROCODE_HEADER *) ((UINTN) MicrocodeEntryPoint + TotalSize);\r
-  } while ((UINTN) MicrocodeEntryPoint < MicrocodeEnd);\r
+    MicrocodeEntryPoint = (CPU_MICROCODE_HEADER *)((UINTN)MicrocodeEntryPoint + TotalSize);\r
+  } while ((UINTN)MicrocodeEntryPoint < MicrocodeEnd);\r
 \r
   if (PatchCount != 0) {\r
     DEBUG ((\r
       DEBUG_INFO,\r
       "%a: 0x%x microcode patches will be loaded into memory, with size 0x%x.\n",\r
-      __FUNCTION__, PatchCount, TotalLoadSize\r
+      __FUNCTION__,\r
+      PatchCount,\r
+      TotalLoadSize\r
       ));\r
 \r
     ShadowMicrocodePatchWorker (CpuMpData, PatchInfoBuffer, PatchCount, TotalLoadSize);\r
@@ -309,6 +317,7 @@ OnExit:
   if (PatchInfoBuffer != NULL) {\r
     FreePool (PatchInfoBuffer);\r
   }\r
+\r
   FreePages (MicrocodeCpuIds, EFI_SIZE_TO_PAGES (CpuMpData->CpuCount * sizeof (EDKII_PEI_MICROCODE_CPU_ID)));\r
 }\r
 \r
@@ -319,10 +328,10 @@ OnExit:
 **/\r
 VOID\r
 ShadowMicrocodeUpdatePatch (\r
-  IN OUT CPU_MP_DATA             *CpuMpData\r
+  IN OUT CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  EFI_STATUS     Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = PlatformShadowMicrocode (CpuMpData);\r
   if (EFI_ERROR (Status)) {\r
@@ -347,16 +356,16 @@ ShadowMicrocodeUpdatePatch (
 **/\r
 BOOLEAN\r
 GetMicrocodePatchInfoFromHob (\r
-  UINT64                         *Address,\r
-  UINT64                         *RegionSize\r
+  UINT64  *Address,\r
+  UINT64  *RegionSize\r
   )\r
 {\r
-  EFI_HOB_GUID_TYPE            *GuidHob;\r
-  EDKII_MICROCODE_PATCH_HOB    *MicrocodePathHob;\r
+  EFI_HOB_GUID_TYPE          *GuidHob;\r
+  EDKII_MICROCODE_PATCH_HOB  *MicrocodePathHob;\r
 \r
   GuidHob = GetFirstGuidHob (&gEdkiiMicrocodePatchHobGuid);\r
   if (GuidHob == NULL) {\r
-    DEBUG((DEBUG_INFO, "%a: Microcode patch cache HOB is not found.\n", __FUNCTION__));\r
+    DEBUG ((DEBUG_INFO, "%a: Microcode patch cache HOB is not found.\n", __FUNCTION__));\r
     return FALSE;\r
   }\r
 \r
@@ -365,9 +374,12 @@ GetMicrocodePatchInfoFromHob (
   *Address    = MicrocodePathHob->MicrocodePatchAddress;\r
   *RegionSize = MicrocodePathHob->MicrocodePatchRegionSize;\r
 \r
-  DEBUG((\r
-    DEBUG_INFO, "%a: MicrocodeBase = 0x%lx, MicrocodeSize = 0x%lx\n",\r
-    __FUNCTION__, *Address, *RegionSize\r
+  DEBUG ((\r
+    DEBUG_INFO,\r
+    "%a: MicrocodeBase = 0x%lx, MicrocodeSize = 0x%lx\n",\r
+    __FUNCTION__,\r
+    *Address,\r
+    *RegionSize\r
     ));\r
 \r
   return TRUE;\r
index b390c558d4bd51f158e4a5ade038be42223af10c..2d8e9512ab98e261f8b6956aee3c98f76b6e7de8 100644 (file)
@@ -13,8 +13,7 @@
 #include <Register/Amd/Fam17Msr.h>\r
 #include <Register/Amd/Ghcb.h>\r
 \r
-EFI_GUID mCpuInitMpLibHobGuid = CPU_INIT_MP_LIB_HOB_GUID;\r
-\r
+EFI_GUID  mCpuInitMpLibHobGuid = CPU_INIT_MP_LIB_HOB_GUID;\r
 \r
 /**\r
   The function will check if BSP Execute Disable is enabled.\r
@@ -38,7 +37,7 @@ IsBspExecuteDisableEnabled (
   BOOLEAN                     Enabled;\r
   IA32_CR0                    Cr0;\r
 \r
-  Enabled = FALSE;\r
+  Enabled   = FALSE;\r
   Cr0.UintN = AsmReadCr0 ();\r
   if (Cr0.Bits.PG != 0) {\r
     //\r
@@ -78,12 +77,12 @@ IsBspExecuteDisableEnabled (
 VOID\r
 EFIAPI\r
 FutureBSPProc (\r
-  IN  VOID            *Buffer\r
+  IN  VOID  *Buffer\r
   )\r
 {\r
-  CPU_MP_DATA         *DataInHob;\r
+  CPU_MP_DATA  *DataInHob;\r
 \r
-  DataInHob = (CPU_MP_DATA *) Buffer;\r
+  DataInHob = (CPU_MP_DATA *)Buffer;\r
   AsmExchangeRole (&DataInHob->APInfo, &DataInHob->BSPInfo);\r
 }\r
 \r
@@ -96,7 +95,7 @@ FutureBSPProc (
 **/\r
 CPU_STATE\r
 GetApState (\r
-  IN  CPU_AP_DATA     *CpuData\r
+  IN  CPU_AP_DATA  *CpuData\r
   )\r
 {\r
   return CpuData->State;\r
@@ -110,8 +109,8 @@ GetApState (
 **/\r
 VOID\r
 SetApState (\r
-  IN  CPU_AP_DATA     *CpuData,\r
-  IN  CPU_STATE       State\r
+  IN  CPU_AP_DATA  *CpuData,\r
+  IN  CPU_STATE    State\r
   )\r
 {\r
   AcquireSpinLock (&CpuData->ApLock);\r
@@ -126,7 +125,7 @@ SetApState (
 **/\r
 VOID\r
 SaveLocalApicTimerSetting (\r
-  IN CPU_MP_DATA   *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
   //\r
@@ -148,7 +147,7 @@ SaveLocalApicTimerSetting (
 **/\r
 VOID\r
 SyncLocalApicTimerSetting (\r
-  IN CPU_MP_DATA   *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
   //\r
@@ -173,10 +172,10 @@ SyncLocalApicTimerSetting (
 **/\r
 VOID\r
 SaveVolatileRegisters (\r
-  OUT CPU_VOLATILE_REGISTERS    *VolatileRegisters\r
+  OUT CPU_VOLATILE_REGISTERS  *VolatileRegisters\r
   )\r
 {\r
-  CPUID_VERSION_INFO_EDX        VersionInfoEdx;\r
+  CPUID_VERSION_INFO_EDX  VersionInfoEdx;\r
 \r
   VolatileRegisters->Cr0 = AsmReadCr0 ();\r
   VolatileRegisters->Cr3 = AsmReadCr3 ();\r
@@ -210,12 +209,12 @@ SaveVolatileRegisters (
 **/\r
 VOID\r
 RestoreVolatileRegisters (\r
-  IN CPU_VOLATILE_REGISTERS    *VolatileRegisters,\r
-  IN BOOLEAN                   IsRestoreDr\r
+  IN CPU_VOLATILE_REGISTERS  *VolatileRegisters,\r
+  IN BOOLEAN                 IsRestoreDr\r
   )\r
 {\r
-  CPUID_VERSION_INFO_EDX        VersionInfoEdx;\r
-  IA32_TSS_DESCRIPTOR           *Tss;\r
+  CPUID_VERSION_INFO_EDX  VersionInfoEdx;\r
+  IA32_TSS_DESCRIPTOR     *Tss;\r
 \r
   AsmWriteCr3 (VolatileRegisters->Cr3);\r
   AsmWriteCr4 (VolatileRegisters->Cr4);\r
@@ -239,8 +238,9 @@ RestoreVolatileRegisters (
 \r
   AsmWriteGdtr (&VolatileRegisters->Gdtr);\r
   AsmWriteIdtr (&VolatileRegisters->Idtr);\r
-  if (VolatileRegisters->Tr != 0 &&\r
-      VolatileRegisters->Tr < VolatileRegisters->Gdtr.Limit) {\r
+  if ((VolatileRegisters->Tr != 0) &&\r
+      (VolatileRegisters->Tr < VolatileRegisters->Gdtr.Limit))\r
+  {\r
     Tss = (IA32_TSS_DESCRIPTOR *)(VolatileRegisters->Gdtr.Base +\r
                                   VolatileRegisters->Tr);\r
     if (Tss->Bits.P == 1) {\r
@@ -261,7 +261,7 @@ IsMwaitSupport (
   VOID\r
   )\r
 {\r
-  CPUID_VERSION_INFO_ECX        VersionInfoEcx;\r
+  CPUID_VERSION_INFO_ECX  VersionInfoEcx;\r
 \r
   AsmCpuid (CPUID_VERSION_INFO, NULL, NULL, &VersionInfoEcx.Uint32, NULL);\r
   return (VersionInfoEcx.Bits.MONITOR == 1) ? TRUE : FALSE;\r
@@ -276,11 +276,11 @@ IsMwaitSupport (
 **/\r
 UINT8\r
 GetApLoopMode (\r
-  OUT UINT32     *MonitorFilterSize\r
+  OUT UINT32  *MonitorFilterSize\r
   )\r
 {\r
-  UINT8                         ApLoopMode;\r
-  CPUID_MONITOR_MWAIT_EBX       MonitorMwaitEbx;\r
+  UINT8                    ApLoopMode;\r
+  CPUID_MONITOR_MWAIT_EBX  MonitorMwaitEbx;\r
 \r
   ASSERT (MonitorFilterSize != NULL);\r
 \r
@@ -328,20 +328,20 @@ GetApLoopMode (
 **/\r
 VOID\r
 SortApicId (\r
-  IN CPU_MP_DATA   *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  UINTN             Index1;\r
-  UINTN             Index2;\r
-  UINTN             Index3;\r
-  UINT32            ApicId;\r
-  CPU_INFO_IN_HOB   CpuInfo;\r
-  UINT32            ApCount;\r
-  CPU_INFO_IN_HOB   *CpuInfoInHob;\r
-  volatile UINT32   *StartupApSignal;\r
-\r
-  ApCount = CpuMpData->CpuCount - 1;\r
-  CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
+  UINTN            Index1;\r
+  UINTN            Index2;\r
+  UINTN            Index3;\r
+  UINT32           ApicId;\r
+  CPU_INFO_IN_HOB  CpuInfo;\r
+  UINT32           ApCount;\r
+  CPU_INFO_IN_HOB  *CpuInfoInHob;\r
+  volatile UINT32  *StartupApSignal;\r
+\r
+  ApCount      = CpuMpData->CpuCount - 1;\r
+  CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
   if (ApCount != 0) {\r
     for (Index1 = 0; Index1 < ApCount; Index1++) {\r
       Index3 = Index1;\r
@@ -355,6 +355,7 @@ SortApicId (
           ApicId = CpuInfoInHob[Index2].ApicId;\r
         }\r
       }\r
+\r
       if (Index3 != Index1) {\r
         CopyMem (&CpuInfo, &CpuInfoInHob[Index3], sizeof (CPU_INFO_IN_HOB));\r
         CopyMem (\r
@@ -367,7 +368,7 @@ SortApicId (
         //\r
         // Also exchange the StartupApSignal.\r
         //\r
-        StartupApSignal = CpuMpData->CpuData[Index3].StartupApSignal;\r
+        StartupApSignal                            = CpuMpData->CpuData[Index3].StartupApSignal;\r
         CpuMpData->CpuData[Index3].StartupApSignal =\r
           CpuMpData->CpuData[Index1].StartupApSignal;\r
         CpuMpData->CpuData[Index1].StartupApSignal = StartupApSignal;\r
@@ -380,7 +381,7 @@ SortApicId (
     ApicId = GetInitialApicId ();\r
     for (Index1 = 0; Index1 < CpuMpData->CpuCount; Index1++) {\r
       if (CpuInfoInHob[Index1].ApicId == ApicId) {\r
-        CpuMpData->BspNumber = (UINT32) Index1;\r
+        CpuMpData->BspNumber = (UINT32)Index1;\r
         break;\r
       }\r
     }\r
@@ -416,8 +417,8 @@ ApInitializeSync (
   UINTN        ProcessorNumber;\r
   EFI_STATUS   Status;\r
 \r
-  CpuMpData = (CPU_MP_DATA *) Buffer;\r
-  Status = GetProcessorNumber (CpuMpData, &ProcessorNumber);\r
+  CpuMpData = (CPU_MP_DATA *)Buffer;\r
+  Status    = GetProcessorNumber (CpuMpData, &ProcessorNumber);\r
   ASSERT_EFI_ERROR (Status);\r
   //\r
   // Load microcode on AP\r
@@ -440,20 +441,20 @@ ApInitializeSync (
 **/\r
 EFI_STATUS\r
 GetProcessorNumber (\r
-  IN CPU_MP_DATA               *CpuMpData,\r
-  OUT UINTN                    *ProcessorNumber\r
+  IN CPU_MP_DATA  *CpuMpData,\r
+  OUT UINTN       *ProcessorNumber\r
   )\r
 {\r
-  UINTN                   TotalProcessorNumber;\r
-  UINTN                   Index;\r
-  CPU_INFO_IN_HOB         *CpuInfoInHob;\r
-  UINT32                  CurrentApicId;\r
+  UINTN            TotalProcessorNumber;\r
+  UINTN            Index;\r
+  CPU_INFO_IN_HOB  *CpuInfoInHob;\r
+  UINT32           CurrentApicId;\r
 \r
-  CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
+  CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
 \r
   TotalProcessorNumber = CpuMpData->CpuCount;\r
-  CurrentApicId = GetApicId ();\r
-  for (Index = 0; Index < TotalProcessorNumber; Index ++) {\r
+  CurrentApicId        = GetApicId ();\r
+  for (Index = 0; Index < TotalProcessorNumber; Index++) {\r
     if (CpuInfoInHob[Index].ApicId == CurrentApicId) {\r
       *ProcessorNumber = Index;\r
       return EFI_SUCCESS;\r
@@ -472,12 +473,12 @@ GetProcessorNumber (
 **/\r
 UINTN\r
 CollectProcessorCount (\r
-  IN CPU_MP_DATA         *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  UINTN                  Index;\r
-  CPU_INFO_IN_HOB        *CpuInfoInHob;\r
-  BOOLEAN                X2Apic;\r
+  UINTN            Index;\r
+  CPU_INFO_IN_HOB  *CpuInfoInHob;\r
+  BOOLEAN          X2Apic;\r
 \r
   //\r
   // Send 1st broadcast IPI to APs to wakeup APs\r
@@ -504,7 +505,7 @@ CollectProcessorCount (
     //\r
     X2Apic = TRUE;\r
   } else {\r
-    CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
+    CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
     for (Index = 0; Index < CpuMpData->CpuCount; Index++) {\r
       if (CpuInfoInHob[Index].InitialApicId >= 0xFF) {\r
         X2Apic = TRUE;\r
@@ -525,6 +526,7 @@ CollectProcessorCount (
     while (CpuMpData->FinishedCount < (CpuMpData->CpuCount - 1)) {\r
       CpuPause ();\r
     }\r
+\r
     //\r
     // Enable x2APIC on BSP\r
     //\r
@@ -536,6 +538,7 @@ CollectProcessorCount (
       SetApState (&CpuMpData->CpuData[Index], CpuStateIdle);\r
     }\r
   }\r
+\r
   DEBUG ((DEBUG_INFO, "APIC MODE is %d\n", GetApicMode ()));\r
   //\r
   // Sort BSP/Aps by CPU APIC ID in ascending order\r
@@ -558,16 +561,16 @@ CollectProcessorCount (
 **/\r
 VOID\r
 InitializeApData (\r
-  IN OUT CPU_MP_DATA      *CpuMpData,\r
-  IN     UINTN            ProcessorNumber,\r
-  IN     UINT32           BistData,\r
-  IN     UINT64           ApTopOfStack\r
+  IN OUT CPU_MP_DATA  *CpuMpData,\r
+  IN     UINTN        ProcessorNumber,\r
+  IN     UINT32       BistData,\r
+  IN     UINT64       ApTopOfStack\r
   )\r
 {\r
-  CPU_INFO_IN_HOB                  *CpuInfoInHob;\r
-  MSR_IA32_PLATFORM_ID_REGISTER    PlatformIdMsr;\r
+  CPU_INFO_IN_HOB                *CpuInfoInHob;\r
+  MSR_IA32_PLATFORM_ID_REGISTER  PlatformIdMsr;\r
 \r
-  CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
+  CpuInfoInHob                                = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
   CpuInfoInHob[ProcessorNumber].InitialApicId = GetInitialApicId ();\r
   CpuInfoInHob[ProcessorNumber].ApicId        = GetApicId ();\r
   CpuInfoInHob[ProcessorNumber].Health        = BistData;\r
@@ -580,7 +583,7 @@ InitializeApData (
   // NOTE: PlatformId is not relevant on AMD platforms.\r
   //\r
   if (!StandardSignatureIsAuthenticAMD ()) {\r
-    PlatformIdMsr.Uint64 = AsmReadMsr64 (MSR_IA32_PLATFORM_ID);\r
+    PlatformIdMsr.Uint64                           = AsmReadMsr64 (MSR_IA32_PLATFORM_ID);\r
     CpuMpData->CpuData[ProcessorNumber].PlatformId = (UINT8)PlatformIdMsr.Bits.PlatformId;\r
   }\r
 \r
@@ -592,7 +595,7 @@ InitializeApData (
     NULL\r
     );\r
 \r
-  InitializeSpinLock(&CpuMpData->CpuData[ProcessorNumber].ApLock);\r
+  InitializeSpinLock (&CpuMpData->CpuData[ProcessorNumber].ApLock);\r
   SetApState (&CpuMpData->CpuData[ProcessorNumber], CpuStateIdle);\r
 }\r
 \r
@@ -613,18 +616,21 @@ GetProtectedMode16CS (
   UINTN                    GdtEntryCount;\r
   UINT16                   Index;\r
 \r
-  Index = (UINT16) -1;\r
+  Index = (UINT16)-1;\r
   AsmReadGdtr (&GdtrDesc);\r
   GdtEntryCount = (GdtrDesc.Limit + 1) / sizeof (IA32_SEGMENT_DESCRIPTOR);\r
-  GdtEntry = (IA32_SEGMENT_DESCRIPTOR *) GdtrDesc.Base;\r
+  GdtEntry      = (IA32_SEGMENT_DESCRIPTOR *)GdtrDesc.Base;\r
   for (Index = 0; Index < GdtEntryCount; Index++) {\r
-    if (GdtEntry->Bits.L == 0 &&\r
-        GdtEntry->Bits.DB == 0 &&\r
-        GdtEntry->Bits.Type > 8) {\r
+    if ((GdtEntry->Bits.L == 0) &&\r
+        (GdtEntry->Bits.DB == 0) &&\r
+        (GdtEntry->Bits.Type > 8))\r
+    {\r
       break;\r
     }\r
+\r
     GdtEntry++;\r
   }\r
+\r
   ASSERT (Index != GdtEntryCount);\r
   return Index * 8;\r
 }\r
@@ -646,18 +652,21 @@ GetProtectedMode32CS (
   UINTN                    GdtEntryCount;\r
   UINT16                   Index;\r
 \r
-  Index = (UINT16) -1;\r
+  Index = (UINT16)-1;\r
   AsmReadGdtr (&GdtrDesc);\r
   GdtEntryCount = (GdtrDesc.Limit + 1) / sizeof (IA32_SEGMENT_DESCRIPTOR);\r
-  GdtEntry = (IA32_SEGMENT_DESCRIPTOR *) GdtrDesc.Base;\r
+  GdtEntry      = (IA32_SEGMENT_DESCRIPTOR *)GdtrDesc.Base;\r
   for (Index = 0; Index < GdtEntryCount; Index++) {\r
-    if (GdtEntry->Bits.L == 0 &&\r
-        GdtEntry->Bits.DB == 1 &&\r
-        GdtEntry->Bits.Type > 8) {\r
+    if ((GdtEntry->Bits.L == 0) &&\r
+        (GdtEntry->Bits.DB == 1) &&\r
+        (GdtEntry->Bits.Type > 8))\r
+    {\r
       break;\r
     }\r
+\r
     GdtEntry++;\r
   }\r
+\r
   ASSERT (Index != GdtEntryCount);\r
   return Index * 8;\r
 }\r
@@ -674,16 +683,16 @@ GetProtectedMode32CS (
 STATIC\r
 VOID\r
 MpInitLibSevEsAPReset (\r
-  IN GHCB                         *Ghcb,\r
-  IN CPU_MP_DATA                  *CpuMpData\r
+  IN GHCB         *Ghcb,\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  EFI_STATUS       Status;\r
-  UINTN            ProcessorNumber;\r
-  UINT16           Code16, Code32;\r
-  AP_RESET         *APResetFn;\r
-  UINTN            BufferStart;\r
-  UINTN            StackStart;\r
+  EFI_STATUS  Status;\r
+  UINTN       ProcessorNumber;\r
+  UINT16      Code16, Code32;\r
+  AP_RESET    *APResetFn;\r
+  UINTN       BufferStart;\r
+  UINTN       StackStart;\r
 \r
   Status = GetProcessorNumber (CpuMpData, &ProcessorNumber);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -692,14 +701,14 @@ MpInitLibSevEsAPReset (
   Code32 = GetProtectedMode32CS ();\r
 \r
   if (CpuMpData->WakeupBufferHigh != 0) {\r
-    APResetFn = (AP_RESET *) (CpuMpData->WakeupBufferHigh + CpuMpData->AddressMap.SwitchToRealNoNxOffset);\r
+    APResetFn = (AP_RESET *)(CpuMpData->WakeupBufferHigh + CpuMpData->AddressMap.SwitchToRealNoNxOffset);\r
   } else {\r
-    APResetFn = (AP_RESET *) (CpuMpData->MpCpuExchangeInfo->BufferStart + CpuMpData->AddressMap.SwitchToRealOffset);\r
+    APResetFn = (AP_RESET *)(CpuMpData->MpCpuExchangeInfo->BufferStart + CpuMpData->AddressMap.SwitchToRealOffset);\r
   }\r
 \r
   BufferStart = CpuMpData->MpCpuExchangeInfo->BufferStart;\r
-  StackStart = CpuMpData->SevEsAPResetStackStart -\r
-                 (AP_RESET_STACK_SIZE * ProcessorNumber);\r
+  StackStart  = CpuMpData->SevEsAPResetStackStart -\r
+                (AP_RESET_STACK_SIZE * ProcessorNumber);\r
 \r
   //\r
   // This call never returns.\r
@@ -716,19 +725,19 @@ MpInitLibSevEsAPReset (
 VOID\r
 EFIAPI\r
 ApWakeupFunction (\r
-  IN MP_CPU_EXCHANGE_INFO      *ExchangeInfo,\r
-  IN UINTN                     ApIndex\r
+  IN MP_CPU_EXCHANGE_INFO  *ExchangeInfo,\r
+  IN UINTN                 ApIndex\r
   )\r
 {\r
-  CPU_MP_DATA                *CpuMpData;\r
-  UINTN                      ProcessorNumber;\r
-  EFI_AP_PROCEDURE           Procedure;\r
-  VOID                       *Parameter;\r
-  UINT32                     BistData;\r
-  volatile UINT32            *ApStartupSignalBuffer;\r
-  CPU_INFO_IN_HOB            *CpuInfoInHob;\r
-  UINT64                     ApTopOfStack;\r
-  UINTN                      CurrentApicMode;\r
+  CPU_MP_DATA       *CpuMpData;\r
+  UINTN             ProcessorNumber;\r
+  EFI_AP_PROCEDURE  Procedure;\r
+  VOID              *Parameter;\r
+  UINT32            BistData;\r
+  volatile UINT32   *ApStartupSignalBuffer;\r
+  CPU_INFO_IN_HOB   *CpuInfoInHob;\r
+  UINT64            ApTopOfStack;\r
+  UINTN             CurrentApicMode;\r
 \r
   //\r
   // AP finished assembly code and begin to execute C code\r
@@ -753,8 +762,8 @@ ApWakeupFunction (
       //\r
       // This is first time AP wakeup, get BIST information from AP stack\r
       //\r
-      ApTopOfStack  = CpuMpData->Buffer + (ProcessorNumber + 1) * CpuMpData->CpuApStackSize;\r
-      BistData = *(UINT32 *) ((UINTN) ApTopOfStack - sizeof (UINTN));\r
+      ApTopOfStack = CpuMpData->Buffer + (ProcessorNumber + 1) * CpuMpData->CpuApStackSize;\r
+      BistData     = *(UINT32 *)((UINTN)ApTopOfStack - sizeof (UINTN));\r
       //\r
       // CpuMpData->CpuData[0].VolatileRegisters is initialized based on BSP environment,\r
       //   to initialize AP in InitConfig path.\r
@@ -773,7 +782,7 @@ ApWakeupFunction (
       //\r
       ApStartupSignalBuffer = CpuMpData->CpuData[ProcessorNumber].StartupApSignal;\r
       InterlockedCompareExchange32 (\r
-        (UINT32 *) ApStartupSignalBuffer,\r
+        (UINT32 *)ApStartupSignalBuffer,\r
         WAKEUP_AP_SIGNAL,\r
         0\r
         );\r
@@ -788,7 +797,7 @@ ApWakeupFunction (
         //   different IDT shared by all APs.\r
         //\r
         RestoreVolatileRegisters (&CpuMpData->CpuData[0].VolatileRegisters, FALSE);\r
-      }  else {\r
+      } else {\r
         if (CpuMpData->ApLoopMode == ApInHltLoop) {\r
           //\r
           // Restore AP's volatile registers saved before AP is halted\r
@@ -806,7 +815,7 @@ ApWakeupFunction (
 \r
       if (GetApState (&CpuMpData->CpuData[ProcessorNumber]) == CpuStateReady) {\r
         Procedure = (EFI_AP_PROCEDURE)CpuMpData->CpuData[ProcessorNumber].ApFunction;\r
-        Parameter = (VOID *) CpuMpData->CpuData[ProcessorNumber].ApFunctionArgument;\r
+        Parameter = (VOID *)CpuMpData->CpuData[ProcessorNumber].ApFunctionArgument;\r
         if (Procedure != NULL) {\r
           SetApState (&CpuMpData->CpuData[ProcessorNumber], CpuStateBusy);\r
           //\r
@@ -817,19 +826,20 @@ ApWakeupFunction (
           // Invoke AP function here\r
           //\r
           Procedure (Parameter);\r
-          CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
+          CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
           if (CpuMpData->SwitchBspFlag) {\r
             //\r
             // Re-get the processor number due to BSP/AP maybe exchange in AP function\r
             //\r
             GetProcessorNumber (CpuMpData, &ProcessorNumber);\r
-            CpuMpData->CpuData[ProcessorNumber].ApFunction = 0;\r
+            CpuMpData->CpuData[ProcessorNumber].ApFunction         = 0;\r
             CpuMpData->CpuData[ProcessorNumber].ApFunctionArgument = 0;\r
-            ApStartupSignalBuffer = CpuMpData->CpuData[ProcessorNumber].StartupApSignal;\r
-            CpuInfoInHob[ProcessorNumber].ApTopOfStack = CpuInfoInHob[CpuMpData->NewBspNumber].ApTopOfStack;\r
+            ApStartupSignalBuffer                                  = CpuMpData->CpuData[ProcessorNumber].StartupApSignal;\r
+            CpuInfoInHob[ProcessorNumber].ApTopOfStack             = CpuInfoInHob[CpuMpData->NewBspNumber].ApTopOfStack;\r
           } else {\r
-            if (CpuInfoInHob[ProcessorNumber].ApicId != GetApicId () ||\r
-                CpuInfoInHob[ProcessorNumber].InitialApicId != GetInitialApicId ()) {\r
+            if ((CpuInfoInHob[ProcessorNumber].ApicId != GetApicId ()) ||\r
+                (CpuInfoInHob[ProcessorNumber].InitialApicId != GetInitialApicId ()))\r
+            {\r
               if (CurrentApicMode != GetApicMode ()) {\r
                 //\r
                 // If APIC mode change happened during AP function execution,\r
@@ -847,6 +857,7 @@ ApWakeupFunction (
             }\r
           }\r
         }\r
+\r
         SetApState (&CpuMpData->CpuData[ProcessorNumber], CpuStateFinished);\r
       }\r
     }\r
@@ -861,7 +872,7 @@ ApWakeupFunction (
     //\r
     // AP finished executing C code\r
     //\r
-    InterlockedIncrement ((UINT32 *) &CpuMpData->FinishedCount);\r
+    InterlockedIncrement ((UINT32 *)&CpuMpData->FinishedCount);\r
 \r
     if (CpuMpData->InitFlag == ApInitConfig) {\r
       //\r
@@ -870,7 +881,7 @@ ApWakeupFunction (
       // performs another INIT-SIPI-SIPI sequence.\r
       //\r
       if (!CpuMpData->SevEsIsEnabled) {\r
-        InterlockedDecrement ((UINT32 *) &CpuMpData->MpCpuExchangeInfo->NumApsExecuting);\r
+        InterlockedDecrement ((UINT32 *)&CpuMpData->MpCpuExchangeInfo->NumApsExecuting);\r
       }\r
     }\r
 \r
@@ -890,11 +901,11 @@ ApWakeupFunction (
           BOOLEAN                   DoDecrement;\r
           BOOLEAN                   InterruptState;\r
 \r
-          DoDecrement = (BOOLEAN) (CpuMpData->InitFlag == ApInitConfig);\r
+          DoDecrement = (BOOLEAN)(CpuMpData->InitFlag == ApInitConfig);\r
 \r
           while (TRUE) {\r
             Msr.GhcbPhysicalAddress = AsmReadMsr64 (MSR_SEV_ES_GHCB);\r
-            Ghcb = Msr.Ghcb;\r
+            Ghcb                    = Msr.Ghcb;\r
 \r
             VmgInit (Ghcb, &InterruptState);\r
 \r
@@ -905,7 +916,7 @@ ApWakeupFunction (
               // Perform the delayed decrement just before issuing the first\r
               // VMGEXIT with AP_RESET_HOLD.\r
               //\r
-              InterlockedDecrement ((UINT32 *) &CpuMpData->MpCpuExchangeInfo->NumApsExecuting);\r
+              InterlockedDecrement ((UINT32 *)&CpuMpData->MpCpuExchangeInfo->NumApsExecuting);\r
             }\r
 \r
             Status = VmgExit (Ghcb, SVM_EXIT_AP_RESET_HOLD, 0, 0);\r
@@ -928,16 +939,18 @@ ApWakeupFunction (
         } else {\r
           CpuSleep ();\r
         }\r
+\r
         CpuPause ();\r
       }\r
     }\r
+\r
     while (TRUE) {\r
       DisableInterrupts ();\r
       if (CpuMpData->ApLoopMode == ApInMwaitLoop) {\r
         //\r
         // Place AP in MWAIT-loop\r
         //\r
-        AsmMonitor ((UINTN) ApStartupSignalBuffer, 0, 0);\r
+        AsmMonitor ((UINTN)ApStartupSignalBuffer, 0, 0);\r
         if (*ApStartupSignalBuffer != WAKEUP_AP_SIGNAL) {\r
           //\r
           // Check AP start-up signal again.\r
@@ -973,7 +986,7 @@ ApWakeupFunction (
 **/\r
 VOID\r
 WaitApWakeup (\r
-  IN volatile UINT32        *ApStartupSignalBuffer\r
+  IN volatile UINT32  *ApStartupSignalBuffer\r
   )\r
 {\r
   //\r
@@ -981,10 +994,11 @@ WaitApWakeup (
   // Otherwise, write StartupApSignal again till AP waken up.\r
   //\r
   while (InterlockedCompareExchange32 (\r
-          (UINT32 *) ApStartupSignalBuffer,\r
-          WAKEUP_AP_SIGNAL,\r
-          WAKEUP_AP_SIGNAL\r
-          ) != 0) {\r
+           (UINT32 *)ApStartupSignalBuffer,\r
+           WAKEUP_AP_SIGNAL,\r
+           WAKEUP_AP_SIGNAL\r
+           ) != 0)\r
+  {\r
     CpuPause ();\r
   }\r
 }\r
@@ -997,30 +1011,30 @@ WaitApWakeup (
 **/\r
 VOID\r
 FillExchangeInfoData (\r
-  IN CPU_MP_DATA               *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  volatile MP_CPU_EXCHANGE_INFO    *ExchangeInfo;\r
-  UINTN                            Size;\r
-  IA32_SEGMENT_DESCRIPTOR          *Selector;\r
-  IA32_CR4                         Cr4;\r
+  volatile MP_CPU_EXCHANGE_INFO  *ExchangeInfo;\r
+  UINTN                          Size;\r
+  IA32_SEGMENT_DESCRIPTOR        *Selector;\r
+  IA32_CR4                       Cr4;\r
 \r
-  ExchangeInfo                  = CpuMpData->MpCpuExchangeInfo;\r
-  ExchangeInfo->StackStart      = CpuMpData->Buffer;\r
-  ExchangeInfo->StackSize       = CpuMpData->CpuApStackSize;\r
-  ExchangeInfo->BufferStart     = CpuMpData->WakeupBuffer;\r
-  ExchangeInfo->ModeOffset      = CpuMpData->AddressMap.ModeEntryOffset;\r
+  ExchangeInfo              = CpuMpData->MpCpuExchangeInfo;\r
+  ExchangeInfo->StackStart  = CpuMpData->Buffer;\r
+  ExchangeInfo->StackSize   = CpuMpData->CpuApStackSize;\r
+  ExchangeInfo->BufferStart = CpuMpData->WakeupBuffer;\r
+  ExchangeInfo->ModeOffset  = CpuMpData->AddressMap.ModeEntryOffset;\r
 \r
-  ExchangeInfo->CodeSegment     = AsmReadCs ();\r
-  ExchangeInfo->DataSegment     = AsmReadDs ();\r
+  ExchangeInfo->CodeSegment = AsmReadCs ();\r
+  ExchangeInfo->DataSegment = AsmReadDs ();\r
 \r
-  ExchangeInfo->Cr3             = AsmReadCr3 ();\r
+  ExchangeInfo->Cr3 = AsmReadCr3 ();\r
 \r
-  ExchangeInfo->CFunction       = (UINTN) ApWakeupFunction;\r
+  ExchangeInfo->CFunction       = (UINTN)ApWakeupFunction;\r
   ExchangeInfo->ApIndex         = 0;\r
   ExchangeInfo->NumApsExecuting = 0;\r
-  ExchangeInfo->InitFlag        = (UINTN) CpuMpData->InitFlag;\r
-  ExchangeInfo->CpuInfo         = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
+  ExchangeInfo->InitFlag        = (UINTN)CpuMpData->InitFlag;\r
+  ExchangeInfo->CpuInfo         = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
   ExchangeInfo->CpuMpData       = CpuMpData;\r
 \r
   ExchangeInfo->EnableExecuteDisable = IsBspExecuteDisableEnabled ();\r
@@ -1035,32 +1049,33 @@ FillExchangeInfoData (
   // Using latter way is simpler because it also eliminates the needs to\r
   //  check whether platform wants to enable it.\r
   //\r
-  Cr4.UintN = AsmReadCr4 ();\r
-  ExchangeInfo->Enable5LevelPaging = (BOOLEAN) (Cr4.Bits.LA57 == 1);\r
+  Cr4.UintN                        = AsmReadCr4 ();\r
+  ExchangeInfo->Enable5LevelPaging = (BOOLEAN)(Cr4.Bits.LA57 == 1);\r
   DEBUG ((DEBUG_INFO, "%a: 5-Level Paging = %d\n", gEfiCallerBaseName, ExchangeInfo->Enable5LevelPaging));\r
 \r
-  ExchangeInfo->SevEsIsEnabled  = CpuMpData->SevEsIsEnabled;\r
-  ExchangeInfo->GhcbBase        = (UINTN) CpuMpData->GhcbBase;\r
+  ExchangeInfo->SevEsIsEnabled = CpuMpData->SevEsIsEnabled;\r
+  ExchangeInfo->GhcbBase       = (UINTN)CpuMpData->GhcbBase;\r
 \r
   //\r
   // Get the BSP's data of GDT and IDT\r
   //\r
-  AsmReadGdtr ((IA32_DESCRIPTOR *) &ExchangeInfo->GdtrProfile);\r
-  AsmReadIdtr ((IA32_DESCRIPTOR *) &ExchangeInfo->IdtrProfile);\r
+  AsmReadGdtr ((IA32_DESCRIPTOR *)&ExchangeInfo->GdtrProfile);\r
+  AsmReadIdtr ((IA32_DESCRIPTOR *)&ExchangeInfo->IdtrProfile);\r
 \r
   //\r
   // Find a 32-bit code segment\r
   //\r
   Selector = (IA32_SEGMENT_DESCRIPTOR *)ExchangeInfo->GdtrProfile.Base;\r
-  Size = ExchangeInfo->GdtrProfile.Limit + 1;\r
+  Size     = ExchangeInfo->GdtrProfile.Limit + 1;\r
   while (Size > 0) {\r
-    if (Selector->Bits.L == 0 && Selector->Bits.Type >= 8) {\r
+    if ((Selector->Bits.L == 0) && (Selector->Bits.Type >= 8)) {\r
       ExchangeInfo->ModeTransitionSegment =\r
         (UINT16)((UINTN)Selector - ExchangeInfo->GdtrProfile.Base);\r
       break;\r
     }\r
+\r
     Selector += 1;\r
-    Size -= sizeof (IA32_SEGMENT_DESCRIPTOR);\r
+    Size     -= sizeof (IA32_SEGMENT_DESCRIPTOR);\r
   }\r
 \r
   //\r
@@ -1069,8 +1084,8 @@ FillExchangeInfoData (
   //\r
   if (CpuMpData->WakeupBufferHigh != 0) {\r
     Size = CpuMpData->AddressMap.RendezvousFunnelSize +\r
-             CpuMpData->AddressMap.SwitchToRealSize -\r
-             CpuMpData->AddressMap.ModeTransitionOffset;\r
+           CpuMpData->AddressMap.SwitchToRealSize -\r
+           CpuMpData->AddressMap.ModeTransitionOffset;\r
     CopyMem (\r
       (VOID *)CpuMpData->WakeupBufferHigh,\r
       CpuMpData->AddressMap.RendezvousFunnelAddress +\r
@@ -1081,12 +1096,12 @@ FillExchangeInfoData (
     ExchangeInfo->ModeTransitionMemory = (UINT32)CpuMpData->WakeupBufferHigh;\r
   } else {\r
     ExchangeInfo->ModeTransitionMemory = (UINT32)\r
-      (ExchangeInfo->BufferStart + CpuMpData->AddressMap.ModeTransitionOffset);\r
+                                         (ExchangeInfo->BufferStart + CpuMpData->AddressMap.ModeTransitionOffset);\r
   }\r
 \r
   ExchangeInfo->ModeHighMemory = ExchangeInfo->ModeTransitionMemory +\r
-                         (UINT32)ExchangeInfo->ModeOffset -\r
-                         (UINT32)CpuMpData->AddressMap.ModeTransitionOffset;\r
+                                 (UINT32)ExchangeInfo->ModeOffset -\r
+                                 (UINT32)CpuMpData->AddressMap.ModeTransitionOffset;\r
   ExchangeInfo->ModeHighSegment = (UINT16)ExchangeInfo->CodeSegment;\r
 }\r
 \r
@@ -1100,9 +1115,9 @@ FillExchangeInfoData (
 **/\r
 VOID\r
 TimedWaitForApFinish (\r
-  IN CPU_MP_DATA               *CpuMpData,\r
-  IN UINT32                    FinishedApLimit,\r
-  IN UINT32                    TimeLimit\r
+  IN CPU_MP_DATA  *CpuMpData,\r
+  IN UINT32       FinishedApLimit,\r
+  IN UINT32       TimeLimit\r
   );\r
 \r
 /**\r
@@ -1111,20 +1126,20 @@ TimedWaitForApFinish (
   @param[in]  CpuMpData  The pointer to CPU MP Data structure.\r
 **/\r
 VOID\r
-BackupAndPrepareWakeupBuffer(\r
-  IN CPU_MP_DATA              *CpuMpData\r
+BackupAndPrepareWakeupBuffer (\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
   CopyMem (\r
-    (VOID *) CpuMpData->BackupBuffer,\r
-    (VOID *) CpuMpData->WakeupBuffer,\r
+    (VOID *)CpuMpData->BackupBuffer,\r
+    (VOID *)CpuMpData->WakeupBuffer,\r
     CpuMpData->BackupBufferSize\r
     );\r
   CopyMem (\r
-    (VOID *) CpuMpData->WakeupBuffer,\r
-    (VOID *) CpuMpData->AddressMap.RendezvousFunnelAddress,\r
+    (VOID *)CpuMpData->WakeupBuffer,\r
+    (VOID *)CpuMpData->AddressMap.RendezvousFunnelAddress,\r
     CpuMpData->AddressMap.RendezvousFunnelSize +\r
-      CpuMpData->AddressMap.SwitchToRealSize\r
+    CpuMpData->AddressMap.SwitchToRealSize\r
     );\r
 }\r
 \r
@@ -1134,13 +1149,13 @@ BackupAndPrepareWakeupBuffer(
   @param[in]  CpuMpData  The pointer to CPU MP Data structure.\r
 **/\r
 VOID\r
-RestoreWakeupBuffer(\r
-  IN CPU_MP_DATA              *CpuMpData\r
+RestoreWakeupBuffer (\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
   CopyMem (\r
-    (VOID *) CpuMpData->WakeupBuffer,\r
-    (VOID *) CpuMpData->BackupBuffer,\r
+    (VOID *)CpuMpData->WakeupBuffer,\r
+    (VOID *)CpuMpData->BackupBuffer,\r
     CpuMpData->BackupBufferSize\r
     );\r
 }\r
@@ -1161,8 +1176,8 @@ GetApResetVectorSize (
   UINTN  Size;\r
 \r
   Size = AddressMap->RendezvousFunnelSize +\r
-           AddressMap->SwitchToRealSize +\r
-           sizeof (MP_CPU_EXCHANGE_INFO);\r
+         AddressMap->SwitchToRealSize +\r
+         sizeof (MP_CPU_EXCHANGE_INFO);\r
 \r
   return Size;\r
 }\r
@@ -1174,21 +1189,21 @@ GetApResetVectorSize (
 **/\r
 VOID\r
 AllocateResetVector (\r
-  IN OUT CPU_MP_DATA          *CpuMpData\r
+  IN OUT CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  UINTN           ApResetVectorSize;\r
-  UINTN           ApResetStackSize;\r
+  UINTN  ApResetVectorSize;\r
+  UINTN  ApResetStackSize;\r
 \r
-  if (CpuMpData->WakeupBuffer == (UINTN) -1) {\r
+  if (CpuMpData->WakeupBuffer == (UINTN)-1) {\r
     ApResetVectorSize = GetApResetVectorSize (&CpuMpData->AddressMap);\r
 \r
     CpuMpData->WakeupBuffer      = GetWakeupBuffer (ApResetVectorSize);\r
-    CpuMpData->MpCpuExchangeInfo = (MP_CPU_EXCHANGE_INFO *) (UINTN)\r
-                    (CpuMpData->WakeupBuffer +\r
-                       CpuMpData->AddressMap.RendezvousFunnelSize +\r
-                       CpuMpData->AddressMap.SwitchToRealSize);\r
-    CpuMpData->WakeupBufferHigh  = GetModeTransitionBuffer (\r
+    CpuMpData->MpCpuExchangeInfo = (MP_CPU_EXCHANGE_INFO *)(UINTN)\r
+                                   (CpuMpData->WakeupBuffer +\r
+                                    CpuMpData->AddressMap.RendezvousFunnelSize +\r
+                                    CpuMpData->AddressMap.SwitchToRealSize);\r
+    CpuMpData->WakeupBufferHigh = GetModeTransitionBuffer (\r
                                     CpuMpData->AddressMap.RendezvousFunnelSize +\r
                                     CpuMpData->AddressMap.SwitchToRealSize -\r
                                     CpuMpData->AddressMap.ModeTransitionOffset\r
@@ -1228,6 +1243,7 @@ AllocateResetVector (
       }\r
     }\r
   }\r
+\r
   BackupAndPrepareWakeupBuffer (CpuMpData);\r
 }\r
 \r
@@ -1238,7 +1254,7 @@ AllocateResetVector (
 **/\r
 VOID\r
 FreeResetVector (\r
-  IN CPU_MP_DATA              *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
   //\r
@@ -1259,10 +1275,10 @@ FreeResetVector (
 **/\r
 VOID\r
 AllocateSevEsAPMemory (\r
-  IN OUT CPU_MP_DATA          *CpuMpData\r
+  IN OUT CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  if (CpuMpData->SevEsAPBuffer == (UINTN) -1) {\r
+  if (CpuMpData->SevEsAPBuffer == (UINTN)-1) {\r
     CpuMpData->SevEsAPBuffer =\r
       CpuMpData->SevEsIsEnabled ? GetSevEsAPMemory () : 0;\r
   }\r
@@ -1278,11 +1294,11 @@ SetSevEsJumpTable (
   IN UINTN  SipiVector\r
   )\r
 {\r
-  SEV_ES_AP_JMP_FAR *JmpFar;\r
-  UINT32            Offset, InsnByte;\r
-  UINT8             LoNib, HiNib;\r
+  SEV_ES_AP_JMP_FAR  *JmpFar;\r
+  UINT32             Offset, InsnByte;\r
+  UINT8              LoNib, HiNib;\r
 \r
-  JmpFar = (SEV_ES_AP_JMP_FAR *) (UINTN) FixedPcdGet32 (PcdSevEsWorkAreaBase);\r
+  JmpFar = (SEV_ES_AP_JMP_FAR *)(UINTN)FixedPcdGet32 (PcdSevEsWorkAreaBase);\r
   ASSERT (JmpFar != NULL);\r
 \r
   //\r
@@ -1290,10 +1306,10 @@ SetSevEsJumpTable (
   // This will be set to a value derived from the SIPI vector and will\r
   // be the memory address used for the far jump below.\r
   //\r
-  Offset = FixedPcdGet32 (PcdSevEsWorkAreaBase);\r
+  Offset  = FixedPcdGet32 (PcdSevEsWorkAreaBase);\r
   Offset += sizeof (JmpFar->InsnBuffer);\r
-  LoNib = (UINT8) Offset;\r
-  HiNib = (UINT8) (Offset >> 8);\r
+  LoNib   = (UINT8)Offset;\r
+  HiNib   = (UINT8)(Offset >> 8);\r
 \r
   //\r
   // Program the workarea (which is the initial AP boot address) with\r
@@ -1302,7 +1318,7 @@ SetSevEsJumpTable (
   //\r
   //   JMP FAR [CS:XXYY] => 2E FF 2E YY XX\r
   //\r
-  InsnByte = 0;\r
+  InsnByte                       = 0;\r
   JmpFar->InsnBuffer[InsnByte++] = 0x2E;  // CS override prefix\r
   JmpFar->InsnBuffer[InsnByte++] = 0xFF;  // JMP (FAR)\r
   JmpFar->InsnBuffer[InsnByte++] = 0x2E;  // ModRM (JMP memory location)\r
@@ -1313,8 +1329,8 @@ SetSevEsJumpTable (
   // Program the Segment/Rip based on the SIPI vector (always at least\r
   // 16-byte aligned, so Rip is set to 0).\r
   //\r
-  JmpFar->Rip = 0;\r
-  JmpFar->Segment = (UINT16) (SipiVector >> 4);\r
+  JmpFar->Rip     = 0;\r
+  JmpFar->Segment = (UINT16)(SipiVector >> 4);\r
 }\r
 \r
 /**\r
@@ -1330,25 +1346,26 @@ SetSevEsJumpTable (
 **/\r
 VOID\r
 WakeUpAP (\r
-  IN CPU_MP_DATA               *CpuMpData,\r
-  IN BOOLEAN                   Broadcast,\r
-  IN UINTN                     ProcessorNumber,\r
-  IN EFI_AP_PROCEDURE          Procedure               OPTIONAL,\r
-  IN VOID                      *ProcedureArgument      OPTIONAL,\r
-  IN BOOLEAN                   WakeUpDisabledAps\r
+  IN CPU_MP_DATA       *CpuMpData,\r
+  IN BOOLEAN           Broadcast,\r
+  IN UINTN             ProcessorNumber,\r
+  IN EFI_AP_PROCEDURE  Procedure               OPTIONAL,\r
+  IN VOID              *ProcedureArgument      OPTIONAL,\r
+  IN BOOLEAN           WakeUpDisabledAps\r
   )\r
 {\r
-  volatile MP_CPU_EXCHANGE_INFO    *ExchangeInfo;\r
-  UINTN                            Index;\r
-  CPU_AP_DATA                      *CpuData;\r
-  BOOLEAN                          ResetVectorRequired;\r
-  CPU_INFO_IN_HOB                  *CpuInfoInHob;\r
+  volatile MP_CPU_EXCHANGE_INFO  *ExchangeInfo;\r
+  UINTN                          Index;\r
+  CPU_AP_DATA                    *CpuData;\r
+  BOOLEAN                        ResetVectorRequired;\r
+  CPU_INFO_IN_HOB                *CpuInfoInHob;\r
 \r
   CpuMpData->FinishedCount = 0;\r
-  ResetVectorRequired = FALSE;\r
+  ResetVectorRequired      = FALSE;\r
 \r
   if (CpuMpData->WakeUpByInitSipiSipi ||\r
-      CpuMpData->InitFlag   != ApInitDone) {\r
+      (CpuMpData->InitFlag   != ApInitDone))\r
+  {\r
     ResetVectorRequired = TRUE;\r
     AllocateResetVector (CpuMpData);\r
     AllocateSevEsAPMemory (CpuMpData);\r
@@ -1375,18 +1392,19 @@ WakeUpAP (
         // the AP procedure will be skipped for disabled AP because AP state\r
         // is not CpuStateReady.\r
         //\r
-        if (GetApState (CpuData) == CpuStateDisabled && !WakeUpDisabledAps) {\r
+        if ((GetApState (CpuData) == CpuStateDisabled) && !WakeUpDisabledAps) {\r
           continue;\r
         }\r
 \r
-        CpuData->ApFunction         = (UINTN) Procedure;\r
-        CpuData->ApFunctionArgument = (UINTN) ProcedureArgument;\r
+        CpuData->ApFunction         = (UINTN)Procedure;\r
+        CpuData->ApFunctionArgument = (UINTN)ProcedureArgument;\r
         SetApState (CpuData, CpuStateReady);\r
         if (CpuMpData->InitFlag != ApInitConfig) {\r
-          *(UINT32 *) CpuData->StartupApSignal = WAKEUP_AP_SIGNAL;\r
+          *(UINT32 *)CpuData->StartupApSignal = WAKEUP_AP_SIGNAL;\r
         }\r
       }\r
     }\r
+\r
     if (ResetVectorRequired) {\r
       //\r
       // For SEV-ES, the initial AP boot address will be defined by\r
@@ -1400,8 +1418,9 @@ WakeUpAP (
       //\r
       // Wakeup all APs\r
       //\r
-      SendInitSipiSipiAllExcludingSelf ((UINT32) ExchangeInfo->BufferStart);\r
+      SendInitSipiSipiAllExcludingSelf ((UINT32)ExchangeInfo->BufferStart);\r
     }\r
+\r
     if (CpuMpData->InitFlag == ApInitConfig) {\r
       if (PcdGet32 (PcdCpuBootLogicalProcessorNumber) > 0) {\r
         //\r
@@ -1462,7 +1481,7 @@ WakeUpAP (
           );\r
 \r
         while (CpuMpData->MpCpuExchangeInfo->NumApsExecuting != 0) {\r
-          CpuPause();\r
+          CpuPause ();\r
         }\r
       }\r
     } else {\r
@@ -1477,17 +1496,17 @@ WakeUpAP (
       }\r
     }\r
   } else {\r
-    CpuData = &CpuMpData->CpuData[ProcessorNumber];\r
-    CpuData->ApFunction         = (UINTN) Procedure;\r
-    CpuData->ApFunctionArgument = (UINTN) ProcedureArgument;\r
+    CpuData                     = &CpuMpData->CpuData[ProcessorNumber];\r
+    CpuData->ApFunction         = (UINTN)Procedure;\r
+    CpuData->ApFunctionArgument = (UINTN)ProcedureArgument;\r
     SetApState (CpuData, CpuStateReady);\r
     //\r
     // Wakeup specified AP\r
     //\r
     ASSERT (CpuMpData->InitFlag != ApInitConfig);\r
-    *(UINT32 *) CpuData->StartupApSignal = WAKEUP_AP_SIGNAL;\r
+    *(UINT32 *)CpuData->StartupApSignal = WAKEUP_AP_SIGNAL;\r
     if (ResetVectorRequired) {\r
-      CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
+      CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
 \r
       //\r
       // For SEV-ES, the initial AP boot address will be defined by\r
@@ -1500,9 +1519,10 @@ WakeUpAP (
 \r
       SendInitSipiSipi (\r
         CpuInfoInHob[ProcessorNumber].ApicId,\r
-        (UINT32) ExchangeInfo->BufferStart\r
+        (UINT32)ExchangeInfo->BufferStart\r
         );\r
     }\r
+\r
     //\r
     // Wait specified AP waken up\r
     //\r
@@ -1542,8 +1562,8 @@ CalculateTimeout (
   OUT UINT64  *CurrentTime\r
   )\r
 {\r
-  UINT64 TimeoutInSeconds;\r
-  UINT64 TimestampCounterFreq;\r
+  UINT64  TimeoutInSeconds;\r
+  UINT64  TimestampCounterFreq;\r
 \r
   //\r
   // Read the current value of the performance counter\r
@@ -1628,25 +1648,30 @@ CheckTimeout (
   if (Timeout == 0) {\r
     return FALSE;\r
   }\r
+\r
   GetPerformanceCounterProperties (&Start, &End);\r
   Cycle = End - Start;\r
   if (Cycle < 0) {\r
     Cycle = -Cycle;\r
   }\r
+\r
   Cycle++;\r
-  CurrentTime = GetPerformanceCounter();\r
-  Delta = (INT64) (CurrentTime - *PreviousTime);\r
+  CurrentTime = GetPerformanceCounter ();\r
+  Delta       = (INT64)(CurrentTime - *PreviousTime);\r
   if (Start > End) {\r
     Delta = -Delta;\r
   }\r
+\r
   if (Delta < 0) {\r
     Delta += Cycle;\r
   }\r
-  *TotalTime += Delta;\r
+\r
+  *TotalTime   += Delta;\r
   *PreviousTime = CurrentTime;\r
   if (*TotalTime > Timeout) {\r
     return TRUE;\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -1660,9 +1685,9 @@ CheckTimeout (
 **/\r
 VOID\r
 TimedWaitForApFinish (\r
-  IN CPU_MP_DATA               *CpuMpData,\r
-  IN UINT32                    FinishedApLimit,\r
-  IN UINT32                    TimeLimit\r
+  IN CPU_MP_DATA  *CpuMpData,\r
+  IN UINT32       FinishedApLimit,\r
+  IN UINT32       TimeLimit\r
   )\r
 {\r
   //\r
@@ -1673,7 +1698,7 @@ TimedWaitForApFinish (
     return;\r
   }\r
 \r
-  CpuMpData->TotalTime = 0;\r
+  CpuMpData->TotalTime    = 0;\r
   CpuMpData->ExpectedTime = CalculateTimeout (\r
                               TimeLimit,\r
                               &CpuMpData->CurrentTime\r
@@ -1683,7 +1708,8 @@ TimedWaitForApFinish (
             &CpuMpData->CurrentTime,\r
             &CpuMpData->TotalTime,\r
             CpuMpData->ExpectedTime\r
-            )) {\r
+            ))\r
+  {\r
     CpuPause ();\r
   }\r
 \r
@@ -1712,10 +1738,10 @@ TimedWaitForApFinish (
 **/\r
 VOID\r
 ResetProcessorToIdleState (\r
-  IN UINTN                     ProcessorNumber\r
+  IN UINTN  ProcessorNumber\r
   )\r
 {\r
-  CPU_MP_DATA           *CpuMpData;\r
+  CPU_MP_DATA  *CpuMpData;\r
 \r
   CpuMpData = GetCpuMpData ();\r
 \r
@@ -1724,6 +1750,7 @@ ResetProcessorToIdleState (
   while (CpuMpData->FinishedCount < 1) {\r
     CpuPause ();\r
   }\r
+\r
   CpuMpData->InitFlag = ApInitDone;\r
 \r
   SetApState (&CpuMpData->CpuData[ProcessorNumber], CpuStateIdle);\r
@@ -1742,11 +1769,11 @@ ResetProcessorToIdleState (
 **/\r
 EFI_STATUS\r
 GetNextWaitingProcessorNumber (\r
-  OUT UINTN                    *NextProcessorNumber\r
+  OUT UINTN  *NextProcessorNumber\r
   )\r
 {\r
-  UINTN           ProcessorNumber;\r
-  CPU_MP_DATA     *CpuMpData;\r
+  UINTN        ProcessorNumber;\r
+  CPU_MP_DATA  *CpuMpData;\r
 \r
   CpuMpData = GetCpuMpData ();\r
 \r
@@ -1773,11 +1800,11 @@ GetNextWaitingProcessorNumber (
 **/\r
 EFI_STATUS\r
 CheckThisAP (\r
-  IN UINTN        ProcessorNumber\r
+  IN UINTN  ProcessorNumber\r
   )\r
 {\r
-  CPU_MP_DATA     *CpuMpData;\r
-  CPU_AP_DATA     *CpuData;\r
+  CPU_MP_DATA  *CpuMpData;\r
+  CPU_AP_DATA  *CpuData;\r
 \r
   CpuMpData = GetCpuMpData ();\r
   CpuData   = &CpuMpData->CpuData[ProcessorNumber];\r
@@ -1790,10 +1817,11 @@ CheckThisAP (
   //\r
   // If the AP finishes for StartupThisAP(), return EFI_SUCCESS.\r
   //\r
-  if (GetApState(CpuData) == CpuStateFinished) {\r
+  if (GetApState (CpuData) == CpuStateFinished) {\r
     if (CpuData->Finished != NULL) {\r
       *(CpuData->Finished) = TRUE;\r
     }\r
+\r
     SetApState (CpuData, CpuStateIdle);\r
     return EFI_SUCCESS;\r
   } else {\r
@@ -1804,6 +1832,7 @@ CheckThisAP (
       if (CpuData->Finished != NULL) {\r
         *(CpuData->Finished) = FALSE;\r
       }\r
+\r
       //\r
       // Reset failed AP to idle state\r
       //\r
@@ -1812,6 +1841,7 @@ CheckThisAP (
       return EFI_TIMEOUT;\r
     }\r
   }\r
+\r
   return EFI_NOT_READY;\r
 }\r
 \r
@@ -1830,12 +1860,12 @@ CheckAllAPs (
   VOID\r
   )\r
 {\r
-  UINTN           ProcessorNumber;\r
-  UINTN           NextProcessorNumber;\r
-  UINTN           ListIndex;\r
-  EFI_STATUS      Status;\r
-  CPU_MP_DATA     *CpuMpData;\r
-  CPU_AP_DATA     *CpuData;\r
+  UINTN        ProcessorNumber;\r
+  UINTN        NextProcessorNumber;\r
+  UINTN        ListIndex;\r
+  EFI_STATUS   Status;\r
+  CPU_MP_DATA  *CpuMpData;\r
+  CPU_AP_DATA  *CpuData;\r
 \r
   CpuMpData = GetCpuMpData ();\r
 \r
@@ -1855,10 +1885,10 @@ CheckAllAPs (
     // Only BSP and corresponding AP access this unit of CPU Data. This means the AP will not modify the\r
     // value of state after setting the it to CpuStateIdle, so BSP can safely make use of its value.\r
     //\r
-    if (GetApState(CpuData) == CpuStateFinished) {\r
-      CpuMpData->RunningCount --;\r
+    if (GetApState (CpuData) == CpuStateFinished) {\r
+      CpuMpData->RunningCount--;\r
       CpuMpData->CpuData[ProcessorNumber].Waiting = FALSE;\r
-      SetApState(CpuData, CpuStateIdle);\r
+      SetApState (CpuData, CpuStateIdle);\r
 \r
       //\r
       // If in Single Thread mode, then search for the next waiting AP for execution.\r
@@ -1870,12 +1900,12 @@ CheckAllAPs (
           WakeUpAP (\r
             CpuMpData,\r
             FALSE,\r
-            (UINT32) NextProcessorNumber,\r
+            (UINT32)NextProcessorNumber,\r
             CpuMpData->Procedure,\r
             CpuMpData->ProcArguments,\r
             TRUE\r
             );\r
-         }\r
+        }\r
       }\r
     }\r
   }\r
@@ -1891,18 +1921,21 @@ CheckAllAPs (
   // If timeout expires, report timeout.\r
   //\r
   if (CheckTimeout (\r
-       &CpuMpData->CurrentTime,\r
-       &CpuMpData->TotalTime,\r
-       CpuMpData->ExpectedTime)\r
-       ) {\r
+        &CpuMpData->CurrentTime,\r
+        &CpuMpData->TotalTime,\r
+        CpuMpData->ExpectedTime\r
+        )\r
+      )\r
+  {\r
     //\r
     // If FailedCpuList is not NULL, record all failed APs in it.\r
     //\r
     if (CpuMpData->FailedCpuList != NULL) {\r
       *CpuMpData->FailedCpuList =\r
-         AllocatePool ((CpuMpData->RunningCount + 1) * sizeof (UINTN));\r
+        AllocatePool ((CpuMpData->RunningCount + 1) * sizeof (UINTN));\r
       ASSERT (*CpuMpData->FailedCpuList != NULL);\r
     }\r
+\r
     ListIndex = 0;\r
 \r
     for (ProcessorNumber = 0; ProcessorNumber < CpuMpData->CpuCount; ProcessorNumber++) {\r
@@ -1920,11 +1953,14 @@ CheckAllAPs (
         }\r
       }\r
     }\r
+\r
     if (CpuMpData->FailedCpuList != NULL) {\r
       (*CpuMpData->FailedCpuList)[ListIndex] = END_OF_CPU_LIST;\r
     }\r
+\r
     return EFI_TIMEOUT;\r
   }\r
+\r
   return EFI_NOT_READY;\r
 }\r
 \r
@@ -1967,16 +2003,17 @@ MpInitLibInitialize (
 \r
   OldCpuMpData = GetCpuMpDataFromGuidedHob ();\r
   if (OldCpuMpData == NULL) {\r
-    MaxLogicalProcessorNumber = PcdGet32(PcdCpuMaxLogicalProcessorNumber);\r
+    MaxLogicalProcessorNumber = PcdGet32 (PcdCpuMaxLogicalProcessorNumber);\r
   } else {\r
     MaxLogicalProcessorNumber = OldCpuMpData->CpuCount;\r
   }\r
+\r
   ASSERT (MaxLogicalProcessorNumber != 0);\r
 \r
   AsmGetAddressMap (&AddressMap);\r
   ApResetVectorSize = GetApResetVectorSize (&AddressMap);\r
-  ApStackSize = PcdGet32(PcdCpuApStackSize);\r
-  ApLoopMode  = GetApLoopMode (&MonitorFilterSize);\r
+  ApStackSize       = PcdGet32 (PcdCpuApStackSize);\r
+  ApLoopMode        = GetApLoopMode (&MonitorFilterSize);\r
 \r
   //\r
   // Save BSP's Control registers for APs.\r
@@ -1993,7 +2030,7 @@ MpInitLibInitialize (
   MpBuffer    = AllocatePages (EFI_SIZE_TO_PAGES (BufferSize));\r
   ASSERT (MpBuffer != NULL);\r
   ZeroMem (MpBuffer, BufferSize);\r
-  Buffer = (UINTN) MpBuffer;\r
+  Buffer = (UINTN)MpBuffer;\r
 \r
   //\r
   //  The layout of the Buffer is as below:\r
@@ -2016,31 +2053,33 @@ MpInitLibInitialize (
   //      CPU_INFO_IN_HOB (N)\r
   //    +--------------------+\r
   //\r
-  MonitorBuffer    = (UINT8 *) (Buffer + ApStackSize * MaxLogicalProcessorNumber);\r
-  BackupBufferAddr = (UINTN) MonitorBuffer + MonitorFilterSize * MaxLogicalProcessorNumber;\r
-  ApIdtBase        = ALIGN_VALUE (BackupBufferAddr + ApResetVectorSize, 8);\r
-  CpuMpData        = (CPU_MP_DATA *) (ApIdtBase + VolatileRegisters.Idtr.Limit + 1);\r
+  MonitorBuffer               = (UINT8 *)(Buffer + ApStackSize * MaxLogicalProcessorNumber);\r
+  BackupBufferAddr            = (UINTN)MonitorBuffer + MonitorFilterSize * MaxLogicalProcessorNumber;\r
+  ApIdtBase                   = ALIGN_VALUE (BackupBufferAddr + ApResetVectorSize, 8);\r
+  CpuMpData                   = (CPU_MP_DATA *)(ApIdtBase + VolatileRegisters.Idtr.Limit + 1);\r
   CpuMpData->Buffer           = Buffer;\r
   CpuMpData->CpuApStackSize   = ApStackSize;\r
   CpuMpData->BackupBuffer     = BackupBufferAddr;\r
   CpuMpData->BackupBufferSize = ApResetVectorSize;\r
-  CpuMpData->WakeupBuffer     = (UINTN) -1;\r
+  CpuMpData->WakeupBuffer     = (UINTN)-1;\r
   CpuMpData->CpuCount         = 1;\r
   CpuMpData->BspNumber        = 0;\r
   CpuMpData->WaitEvent        = NULL;\r
   CpuMpData->SwitchBspFlag    = FALSE;\r
-  CpuMpData->CpuData          = (CPU_AP_DATA *) (CpuMpData + 1);\r
-  CpuMpData->CpuInfoInHob     = (UINT64) (UINTN) (CpuMpData->CpuData + MaxLogicalProcessorNumber);\r
-  InitializeSpinLock(&CpuMpData->MpLock);\r
+  CpuMpData->CpuData          = (CPU_AP_DATA *)(CpuMpData + 1);\r
+  CpuMpData->CpuInfoInHob     = (UINT64)(UINTN)(CpuMpData->CpuData + MaxLogicalProcessorNumber);\r
+  InitializeSpinLock (&CpuMpData->MpLock);\r
   CpuMpData->SevEsIsEnabled = PcdGetBool (PcdSevEsIsEnabled);\r
-  CpuMpData->SevEsAPBuffer  = (UINTN) -1;\r
+  CpuMpData->SevEsAPBuffer  = (UINTN)-1;\r
   CpuMpData->GhcbBase       = PcdGet64 (PcdGhcbBase);\r
 \r
   //\r
   // Make sure no memory usage outside of the allocated buffer.\r
   //\r
-  ASSERT ((CpuMpData->CpuInfoInHob + sizeof (CPU_INFO_IN_HOB) * MaxLogicalProcessorNumber) ==\r
-          Buffer + BufferSize);\r
+  ASSERT (\r
+    (CpuMpData->CpuInfoInHob + sizeof (CPU_INFO_IN_HOB) * MaxLogicalProcessorNumber) ==\r
+    Buffer + BufferSize\r
+    );\r
 \r
   //\r
   // Duplicate BSP's IDT to APs.\r
@@ -2076,6 +2115,7 @@ MpInitLibInitialize (
     CpuMpData->CpuData[Index].StartupApSignal =\r
       (UINT32 *)(MonitorBuffer + MonitorFilterSize * Index);\r
   }\r
+\r
   //\r
   // Enable the local APIC for Virtual Wire Mode.\r
   //\r
@@ -2094,13 +2134,13 @@ MpInitLibInitialize (
     // from HOB\r
     //\r
     OldCpuMpData->NewCpuMpData = CpuMpData;\r
-    CpuMpData->CpuCount  = OldCpuMpData->CpuCount;\r
-    CpuMpData->BspNumber = OldCpuMpData->BspNumber;\r
-    CpuMpData->CpuInfoInHob = OldCpuMpData->CpuInfoInHob;\r
-    CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
+    CpuMpData->CpuCount        = OldCpuMpData->CpuCount;\r
+    CpuMpData->BspNumber       = OldCpuMpData->BspNumber;\r
+    CpuMpData->CpuInfoInHob    = OldCpuMpData->CpuInfoInHob;\r
+    CpuInfoInHob               = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
     for (Index = 0; Index < CpuMpData->CpuCount; Index++) {\r
-      InitializeSpinLock(&CpuMpData->CpuData[Index].ApLock);\r
-      CpuMpData->CpuData[Index].CpuHealthy = (CpuInfoInHob[Index].Health == 0)? TRUE:FALSE;\r
+      InitializeSpinLock (&CpuMpData->CpuData[Index].ApLock);\r
+      CpuMpData->CpuData[Index].CpuHealthy = (CpuInfoInHob[Index].Health == 0) ? TRUE : FALSE;\r
       CpuMpData->CpuData[Index].ApFunction = 0;\r
     }\r
   }\r
@@ -2108,7 +2148,8 @@ MpInitLibInitialize (
   if (!GetMicrocodePatchInfoFromHob (\r
          &CpuMpData->MicrocodePatchAddress,\r
          &CpuMpData->MicrocodePatchRegionSize\r
-         )) {\r
+         ))\r
+  {\r
     //\r
     // The microcode patch information cache HOB does not exist, which means\r
     // the microcode patches data has not been loaded into memory yet\r
@@ -2137,6 +2178,7 @@ MpInitLibInitialize (
       //\r
       CpuMpData->InitFlag = ApInitReconfig;\r
     }\r
+\r
     WakeUpAP (CpuMpData, TRUE, 0, ApInitializeSync, CpuMpData, TRUE);\r
     //\r
     // Wait for all APs finished initialization\r
@@ -2144,9 +2186,11 @@ MpInitLibInitialize (
     while (CpuMpData->FinishedCount < (CpuMpData->CpuCount - 1)) {\r
       CpuPause ();\r
     }\r
+\r
     if (OldCpuMpData != NULL) {\r
       CpuMpData->InitFlag = ApInitDone;\r
     }\r
+\r
     for (Index = 0; Index < CpuMpData->CpuCount; Index++) {\r
       SetApState (&CpuMpData->CpuData[Index], CpuStateIdle);\r
     }\r
@@ -2156,26 +2200,32 @@ MpInitLibInitialize (
   // Dump the microcode revision for each core.\r
   //\r
   DEBUG_CODE_BEGIN ();\r
-    UINT32 ThreadId;\r
-    UINT32 ExpectedMicrocodeRevision;\r
-    CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
-    for (Index = 0; Index < CpuMpData->CpuCount; Index++) {\r
-      GetProcessorLocationByApicId (CpuInfoInHob[Index].InitialApicId, NULL, NULL, &ThreadId);\r
-      if (ThreadId == 0) {\r
-        //\r
-        // MicrocodeDetect() loads microcode in first thread of each core, so,\r
-        // CpuMpData->CpuData[Index].MicrocodeEntryAddr is initialized only for first thread of each core.\r
-        //\r
-        ExpectedMicrocodeRevision = 0;\r
-        if (CpuMpData->CpuData[Index].MicrocodeEntryAddr != 0) {\r
-          ExpectedMicrocodeRevision = ((CPU_MICROCODE_HEADER *)(UINTN)CpuMpData->CpuData[Index].MicrocodeEntryAddr)->UpdateRevision;\r
-        }\r
-        DEBUG ((\r
-          DEBUG_INFO, "CPU[%04d]: Microcode revision = %08x, expected = %08x\n",\r
-          Index, CpuMpData->CpuData[Index].MicrocodeRevision, ExpectedMicrocodeRevision\r
-          ));\r
+  UINT32  ThreadId;\r
+  UINT32  ExpectedMicrocodeRevision;\r
+\r
+  CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
+  for (Index = 0; Index < CpuMpData->CpuCount; Index++) {\r
+    GetProcessorLocationByApicId (CpuInfoInHob[Index].InitialApicId, NULL, NULL, &ThreadId);\r
+    if (ThreadId == 0) {\r
+      //\r
+      // MicrocodeDetect() loads microcode in first thread of each core, so,\r
+      // CpuMpData->CpuData[Index].MicrocodeEntryAddr is initialized only for first thread of each core.\r
+      //\r
+      ExpectedMicrocodeRevision = 0;\r
+      if (CpuMpData->CpuData[Index].MicrocodeEntryAddr != 0) {\r
+        ExpectedMicrocodeRevision = ((CPU_MICROCODE_HEADER *)(UINTN)CpuMpData->CpuData[Index].MicrocodeEntryAddr)->UpdateRevision;\r
       }\r
+\r
+      DEBUG ((\r
+        DEBUG_INFO,\r
+        "CPU[%04d]: Microcode revision = %08x, expected = %08x\n",\r
+        Index,\r
+        CpuMpData->CpuData[Index].MicrocodeRevision,\r
+        ExpectedMicrocodeRevision\r
+        ));\r
     }\r
+  }\r
+\r
   DEBUG_CODE_END ();\r
   //\r
   // Initialize global data for MP support\r
@@ -2210,19 +2260,19 @@ MpInitLibGetProcessorInfo (
   OUT EFI_HEALTH_FLAGS           *HealthData  OPTIONAL\r
   )\r
 {\r
-  CPU_MP_DATA            *CpuMpData;\r
-  UINTN                  CallerNumber;\r
-  CPU_INFO_IN_HOB        *CpuInfoInHob;\r
-  UINTN                  OriginalProcessorNumber;\r
+  CPU_MP_DATA      *CpuMpData;\r
+  UINTN            CallerNumber;\r
+  CPU_INFO_IN_HOB  *CpuInfoInHob;\r
+  UINTN            OriginalProcessorNumber;\r
 \r
-  CpuMpData = GetCpuMpData ();\r
-  CpuInfoInHob = (CPU_INFO_IN_HOB *) (UINTN) CpuMpData->CpuInfoInHob;\r
+  CpuMpData    = GetCpuMpData ();\r
+  CpuInfoInHob = (CPU_INFO_IN_HOB *)(UINTN)CpuMpData->CpuInfoInHob;\r
 \r
   //\r
   // Lower 24 bits contains the actual processor number.\r
   //\r
   OriginalProcessorNumber = ProcessorNumber;\r
-  ProcessorNumber &= BIT24 - 1;\r
+  ProcessorNumber        &= BIT24 - 1;\r
 \r
   //\r
   // Check whether caller processor is BSP\r
@@ -2240,14 +2290,16 @@ MpInitLibGetProcessorInfo (
     return EFI_NOT_FOUND;\r
   }\r
 \r
-  ProcessorInfoBuffer->ProcessorId = (UINT64) CpuInfoInHob[ProcessorNumber].ApicId;\r
+  ProcessorInfoBuffer->ProcessorId = (UINT64)CpuInfoInHob[ProcessorNumber].ApicId;\r
   ProcessorInfoBuffer->StatusFlag  = 0;\r
   if (ProcessorNumber == CpuMpData->BspNumber) {\r
     ProcessorInfoBuffer->StatusFlag |= PROCESSOR_AS_BSP_BIT;\r
   }\r
+\r
   if (CpuMpData->CpuData[ProcessorNumber].CpuHealthy) {\r
     ProcessorInfoBuffer->StatusFlag |= PROCESSOR_HEALTH_STATUS_BIT;\r
   }\r
+\r
   if (GetApState (&CpuMpData->CpuData[ProcessorNumber]) == CpuStateDisabled) {\r
     ProcessorInfoBuffer->StatusFlag &= ~PROCESSOR_ENABLED_BIT;\r
   } else {\r
@@ -2296,8 +2348,8 @@ MpInitLibGetProcessorInfo (
 **/\r
 EFI_STATUS\r
 SwitchBSPWorker (\r
-  IN UINTN                     ProcessorNumber,\r
-  IN BOOLEAN                   EnableOldBSP\r
+  IN UINTN    ProcessorNumber,\r
+  IN BOOLEAN  EnableOldBSP\r
   )\r
 {\r
   CPU_MP_DATA                  *CpuMpData;\r
@@ -2370,7 +2422,7 @@ SwitchBSPWorker (
   //\r
   // Clear the BSP bit of MSR_IA32_APIC_BASE\r
   //\r
-  ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
+  ApicBaseMsr.Uint64   = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
   ApicBaseMsr.Bits.BSP = 0;\r
   AsmWriteMsr64 (MSR_IA32_APIC_BASE, ApicBaseMsr.Uint64);\r
 \r
@@ -2384,7 +2436,7 @@ SwitchBSPWorker (
   //\r
   // Set the BSP bit of MSR_IA32_APIC_BASE on new BSP\r
   //\r
-  ApicBaseMsr.Uint64 = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
+  ApicBaseMsr.Uint64   = AsmReadMsr64 (MSR_IA32_APIC_BASE);\r
   ApicBaseMsr.Bits.BSP = 1;\r
   AsmWriteMsr64 (MSR_IA32_APIC_BASE, ApicBaseMsr.Uint64);\r
   ProgramVirtualWireMode ();\r
@@ -2405,10 +2457,11 @@ SwitchBSPWorker (
   } else {\r
     SetApState (&CpuMpData->CpuData[CallerNumber], CpuStateIdle);\r
   }\r
+\r
   //\r
   // Save new BSP number\r
   //\r
-  CpuMpData->BspNumber = (UINT32) ProcessorNumber;\r
+  CpuMpData->BspNumber = (UINT32)ProcessorNumber;\r
 \r
   //\r
   // Restore interrupt state.\r
@@ -2438,13 +2491,13 @@ SwitchBSPWorker (
 **/\r
 EFI_STATUS\r
 EnableDisableApWorker (\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  BOOLEAN                   EnableAP,\r
-  IN  UINT32                    *HealthFlag OPTIONAL\r
+  IN  UINTN    ProcessorNumber,\r
+  IN  BOOLEAN  EnableAP,\r
+  IN  UINT32   *HealthFlag OPTIONAL\r
   )\r
 {\r
-  CPU_MP_DATA               *CpuMpData;\r
-  UINTN                     CallerNumber;\r
+  CPU_MP_DATA  *CpuMpData;\r
+  UINTN        CallerNumber;\r
 \r
   CpuMpData = GetCpuMpData ();\r
 \r
@@ -2472,7 +2525,7 @@ EnableDisableApWorker (
 \r
   if (HealthFlag != NULL) {\r
     CpuMpData->CpuData[ProcessorNumber].CpuHealthy =\r
-          (BOOLEAN) ((*HealthFlag & PROCESSOR_HEALTH_STATUS_BIT) != 0);\r
+      (BOOLEAN)((*HealthFlag & PROCESSOR_HEALTH_STATUS_BIT) != 0);\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -2497,10 +2550,10 @@ EnableDisableApWorker (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibWhoAmI (\r
-  OUT UINTN                    *ProcessorNumber\r
+  OUT UINTN  *ProcessorNumber\r
   )\r
 {\r
-  CPU_MP_DATA           *CpuMpData;\r
+  CPU_MP_DATA  *CpuMpData;\r
 \r
   if (ProcessorNumber == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
@@ -2534,15 +2587,15 @@ MpInitLibWhoAmI (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibGetNumberOfProcessors (\r
-  OUT UINTN                     *NumberOfProcessors        OPTIONAL,\r
-  OUT UINTN                     *NumberOfEnabledProcessors OPTIONAL\r
+  OUT UINTN  *NumberOfProcessors        OPTIONAL,\r
+  OUT UINTN  *NumberOfEnabledProcessors OPTIONAL\r
   )\r
 {\r
-  CPU_MP_DATA             *CpuMpData;\r
-  UINTN                   CallerNumber;\r
-  UINTN                   ProcessorNumber;\r
-  UINTN                   EnabledProcessorNumber;\r
-  UINTN                   Index;\r
+  CPU_MP_DATA  *CpuMpData;\r
+  UINTN        CallerNumber;\r
+  UINTN        ProcessorNumber;\r
+  UINTN        EnabledProcessorNumber;\r
+  UINTN        Index;\r
 \r
   CpuMpData = GetCpuMpData ();\r
 \r
@@ -2562,13 +2615,14 @@ MpInitLibGetNumberOfProcessors (
   EnabledProcessorNumber = 0;\r
   for (Index = 0; Index < ProcessorNumber; Index++) {\r
     if (GetApState (&CpuMpData->CpuData[Index]) != CpuStateDisabled) {\r
-      EnabledProcessorNumber ++;\r
+      EnabledProcessorNumber++;\r
     }\r
   }\r
 \r
   if (NumberOfProcessors != NULL) {\r
     *NumberOfProcessors = ProcessorNumber;\r
   }\r
+\r
   if (NumberOfEnabledProcessors != NULL) {\r
     *NumberOfEnabledProcessors = EnabledProcessorNumber;\r
   }\r
@@ -2576,7 +2630,6 @@ MpInitLibGetNumberOfProcessors (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
 /**\r
   Worker function to execute a caller provided function on all enabled APs.\r
 \r
@@ -2611,23 +2664,23 @@ MpInitLibGetNumberOfProcessors (
 **/\r
 EFI_STATUS\r
 StartupAllCPUsWorker (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  BOOLEAN                   SingleThread,\r
-  IN  BOOLEAN                   ExcludeBsp,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT UINTN                     **FailedCpuList         OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  BOOLEAN           SingleThread,\r
+  IN  BOOLEAN           ExcludeBsp,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT UINTN             **FailedCpuList         OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
-  CPU_MP_DATA             *CpuMpData;\r
-  UINTN                   ProcessorCount;\r
-  UINTN                   ProcessorNumber;\r
-  UINTN                   CallerNumber;\r
-  CPU_AP_DATA             *CpuData;\r
-  BOOLEAN                 HasEnabledAp;\r
-  CPU_STATE               ApState;\r
+  EFI_STATUS   Status;\r
+  CPU_MP_DATA  *CpuMpData;\r
+  UINTN        ProcessorCount;\r
+  UINTN        ProcessorNumber;\r
+  UINTN        CallerNumber;\r
+  CPU_AP_DATA  *CpuData;\r
+  BOOLEAN      HasEnabledAp;\r
+  CPU_STATE    ApState;\r
 \r
   CpuMpData = GetCpuMpData ();\r
 \r
@@ -2635,7 +2688,7 @@ StartupAllCPUsWorker (
     *FailedCpuList = NULL;\r
   }\r
 \r
-  if (CpuMpData->CpuCount == 1 && ExcludeBsp) {\r
+  if ((CpuMpData->CpuCount == 1) && ExcludeBsp) {\r
     return EFI_NOT_STARTED;\r
   }\r
 \r
@@ -2687,7 +2740,7 @@ StartupAllCPUsWorker (
 \r
   CpuMpData->RunningCount = 0;\r
   for (ProcessorNumber = 0; ProcessorNumber < ProcessorCount; ProcessorNumber++) {\r
-    CpuData = &CpuMpData->CpuData[ProcessorNumber];\r
+    CpuData          = &CpuMpData->CpuData[ProcessorNumber];\r
     CpuData->Waiting = FALSE;\r
     if (ProcessorNumber != CpuMpData->BspNumber) {\r
       if (CpuData->State == CpuStateIdle) {\r
@@ -2709,8 +2762,8 @@ StartupAllCPUsWorker (
                                TimeoutInMicroseconds,\r
                                &CpuMpData->CurrentTime\r
                                );\r
-  CpuMpData->TotalTime     = 0;\r
-  CpuMpData->WaitEvent     = WaitEvent;\r
+  CpuMpData->TotalTime = 0;\r
+  CpuMpData->WaitEvent = WaitEvent;\r
 \r
   if (!SingleThread) {\r
     WakeUpAP (CpuMpData, TRUE, 0, Procedure, ProcedureArgument, FALSE);\r
@@ -2719,6 +2772,7 @@ StartupAllCPUsWorker (
       if (ProcessorNumber == CallerNumber) {\r
         continue;\r
       }\r
+\r
       if (CpuMpData->CpuData[ProcessorNumber].Waiting) {\r
         WakeUpAP (CpuMpData, FALSE, ProcessorNumber, Procedure, ProcedureArgument, TRUE);\r
         break;\r
@@ -2768,18 +2822,18 @@ StartupAllCPUsWorker (
 **/\r
 EFI_STATUS\r
 StartupThisAPWorker (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT BOOLEAN                   *Finished               OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  UINTN             ProcessorNumber,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT BOOLEAN           *Finished               OPTIONAL\r
   )\r
 {\r
-  EFI_STATUS              Status;\r
-  CPU_MP_DATA             *CpuMpData;\r
-  CPU_AP_DATA             *CpuData;\r
-  UINTN                   CallerNumber;\r
+  EFI_STATUS   Status;\r
+  CPU_MP_DATA  *CpuMpData;\r
+  CPU_AP_DATA  *CpuData;\r
+  UINTN        CallerNumber;\r
 \r
   CpuMpData = GetCpuMpData ();\r
 \r
@@ -2833,7 +2887,7 @@ StartupThisAPWorker (
   // BSP saves data for CheckAPsStatus(), and returns EFI_SUCCESS.\r
   // CheckAPsStatus() will check completion and timeout periodically.\r
   //\r
-  CpuData = &CpuMpData->CpuData[ProcessorNumber];\r
+  CpuData               = &CpuMpData->CpuData[ProcessorNumber];\r
   CpuData->WaitEvent    = WaitEvent;\r
   CpuData->Finished     = Finished;\r
   CpuData->ExpectedTime = CalculateTimeout (TimeoutInMicroseconds, &CpuData->CurrentTime);\r
@@ -2865,16 +2919,17 @@ GetCpuMpDataFromGuidedHob (
   VOID\r
   )\r
 {\r
-  EFI_HOB_GUID_TYPE       *GuidHob;\r
-  VOID                    *DataInHob;\r
-  CPU_MP_DATA             *CpuMpData;\r
+  EFI_HOB_GUID_TYPE  *GuidHob;\r
+  VOID               *DataInHob;\r
+  CPU_MP_DATA        *CpuMpData;\r
 \r
   CpuMpData = NULL;\r
-  GuidHob = GetFirstGuidHob (&mCpuInitMpLibHobGuid);\r
+  GuidHob   = GetFirstGuidHob (&mCpuInitMpLibHobGuid);\r
   if (GuidHob != NULL) {\r
     DataInHob = GET_GUID_HOB_DATA (GuidHob);\r
-    CpuMpData = (CPU_MP_DATA *) (*(UINTN *) DataInHob);\r
+    CpuMpData = (CPU_MP_DATA *)(*(UINTN *)DataInHob);\r
   }\r
+\r
   return CpuMpData;\r
 }\r
 \r
@@ -2907,9 +2962,9 @@ GetCpuMpDataFromGuidedHob (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupAllCPUs (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL\r
   )\r
 {\r
   return StartupAllCPUsWorker (\r
index 98a207c628bea4e5de09d2545759b5547e5c5afd..a647772088d9d979ddc0d5557105713a43e87d4e 100644 (file)
@@ -36,7 +36,7 @@
 \r
 #include <Guid/MicrocodePatchHob.h>\r
 \r
-#define WAKEUP_AP_SIGNAL SIGNATURE_32 ('S', 'T', 'A', 'P')\r
+#define WAKEUP_AP_SIGNAL  SIGNATURE_32 ('S', 'T', 'A', 'P')\r
 \r
 #define CPU_INIT_MP_LIB_HOB_GUID \\r
   { \\r
 //\r
 //  The MP data for switch BSP\r
 //\r
-#define CPU_SWITCH_STATE_IDLE   0\r
-#define CPU_SWITCH_STATE_STORED 1\r
-#define CPU_SWITCH_STATE_LOADED 2\r
+#define CPU_SWITCH_STATE_IDLE    0\r
+#define CPU_SWITCH_STATE_STORED  1\r
+#define CPU_SWITCH_STATE_LOADED  2\r
 \r
 //\r
 // Default maximum number of entries to store the microcode patches information\r
 //\r
-#define DEFAULT_MAX_MICROCODE_PATCH_NUM 8\r
+#define DEFAULT_MAX_MICROCODE_PATCH_NUM  8\r
 \r
 //\r
 // Data structure for microcode patch information\r
@@ -67,10 +67,10 @@ typedef struct {
 // CPU exchange information for switch BSP\r
 //\r
 typedef struct {\r
-  UINT8             State;        // offset 0\r
-  UINTN             StackPointer; // offset 4 / 8\r
-  IA32_DESCRIPTOR   Gdtr;         // offset 8 / 16\r
-  IA32_DESCRIPTOR   Idtr;         // offset 14 / 26\r
+  UINT8              State;        // offset 0\r
+  UINTN              StackPointer; // offset 4 / 8\r
+  IA32_DESCRIPTOR    Gdtr;         // offset 8 / 16\r
+  IA32_DESCRIPTOR    Idtr;         // offset 14 / 26\r
 } CPU_EXCHANGE_ROLE_INFO;\r
 \r
 //\r
@@ -111,41 +111,41 @@ typedef enum {
 // CPU volatile registers around INIT-SIPI-SIPI\r
 //\r
 typedef struct {\r
-  UINTN                          Cr0;\r
-  UINTN                          Cr3;\r
-  UINTN                          Cr4;\r
-  UINTN                          Dr0;\r
-  UINTN                          Dr1;\r
-  UINTN                          Dr2;\r
-  UINTN                          Dr3;\r
-  UINTN                          Dr6;\r
-  UINTN                          Dr7;\r
-  IA32_DESCRIPTOR                Gdtr;\r
-  IA32_DESCRIPTOR                Idtr;\r
-  UINT16                         Tr;\r
+  UINTN              Cr0;\r
+  UINTN              Cr3;\r
+  UINTN              Cr4;\r
+  UINTN              Dr0;\r
+  UINTN              Dr1;\r
+  UINTN              Dr2;\r
+  UINTN              Dr3;\r
+  UINTN              Dr6;\r
+  UINTN              Dr7;\r
+  IA32_DESCRIPTOR    Gdtr;\r
+  IA32_DESCRIPTOR    Idtr;\r
+  UINT16             Tr;\r
 } CPU_VOLATILE_REGISTERS;\r
 \r
 //\r
 // AP related data\r
 //\r
 typedef struct {\r
-  SPIN_LOCK                      ApLock;\r
-  volatile UINT32                *StartupApSignal;\r
-  volatile UINTN                 ApFunction;\r
-  volatile UINTN                 ApFunctionArgument;\r
-  BOOLEAN                        CpuHealthy;\r
-  volatile CPU_STATE             State;\r
-  CPU_VOLATILE_REGISTERS         VolatileRegisters;\r
-  BOOLEAN                        Waiting;\r
-  BOOLEAN                        *Finished;\r
-  UINT64                         ExpectedTime;\r
-  UINT64                         CurrentTime;\r
-  UINT64                         TotalTime;\r
-  EFI_EVENT                      WaitEvent;\r
-  UINT32                         ProcessorSignature;\r
-  UINT8                          PlatformId;\r
-  UINT64                         MicrocodeEntryAddr;\r
-  UINT32                         MicrocodeRevision;\r
+  SPIN_LOCK                 ApLock;\r
+  volatile UINT32           *StartupApSignal;\r
+  volatile UINTN            ApFunction;\r
+  volatile UINTN            ApFunctionArgument;\r
+  BOOLEAN                   CpuHealthy;\r
+  volatile CPU_STATE        State;\r
+  CPU_VOLATILE_REGISTERS    VolatileRegisters;\r
+  BOOLEAN                   Waiting;\r
+  BOOLEAN                   *Finished;\r
+  UINT64                    ExpectedTime;\r
+  UINT64                    CurrentTime;\r
+  UINT64                    TotalTime;\r
+  EFI_EVENT                 WaitEvent;\r
+  UINT32                    ProcessorSignature;\r
+  UINT8                     PlatformId;\r
+  UINT64                    MicrocodeEntryAddr;\r
+  UINT32                    MicrocodeRevision;\r
 } CPU_AP_DATA;\r
 \r
 //\r
@@ -156,10 +156,10 @@ typedef struct {
 //\r
 #pragma pack (1)\r
 typedef struct {\r
-  UINT32                         InitialApicId;\r
-  UINT32                         ApicId;\r
-  UINT32                         Health;\r
-  UINT64                         ApTopOfStack;\r
+  UINT32    InitialApicId;\r
+  UINT32    ApicId;\r
+  UINT32    Health;\r
+  UINT64    ApTopOfStack;\r
 } CPU_INFO_IN_HOB;\r
 #pragma pack ()\r
 \r
@@ -169,20 +169,20 @@ typedef struct {
 // It is natural aligned by design.\r
 //\r
 typedef struct {\r
-  UINT8             *RendezvousFunnelAddress;\r
-  UINTN             ModeEntryOffset;\r
-  UINTN             RendezvousFunnelSize;\r
-  UINT8             *RelocateApLoopFuncAddress;\r
-  UINTN             RelocateApLoopFuncSize;\r
-  UINTN             ModeTransitionOffset;\r
-  UINTN             SwitchToRealSize;\r
-  UINTN             SwitchToRealOffset;\r
-  UINTN             SwitchToRealNoNxOffset;\r
-  UINTN             SwitchToRealPM16ModeOffset;\r
-  UINTN             SwitchToRealPM16ModeSize;\r
+  UINT8    *RendezvousFunnelAddress;\r
+  UINTN    ModeEntryOffset;\r
+  UINTN    RendezvousFunnelSize;\r
+  UINT8    *RelocateApLoopFuncAddress;\r
+  UINTN    RelocateApLoopFuncSize;\r
+  UINTN    ModeTransitionOffset;\r
+  UINTN    SwitchToRealSize;\r
+  UINTN    SwitchToRealOffset;\r
+  UINTN    SwitchToRealNoNxOffset;\r
+  UINTN    SwitchToRealPM16ModeOffset;\r
+  UINTN    SwitchToRealPM16ModeSize;\r
 } MP_ASSEMBLY_ADDRESS_MAP;\r
 \r
-typedef struct _CPU_MP_DATA  CPU_MP_DATA;\r
+typedef struct _CPU_MP_DATA CPU_MP_DATA;\r
 \r
 #pragma pack(1)\r
 \r
@@ -192,33 +192,33 @@ typedef struct _CPU_MP_DATA  CPU_MP_DATA;
 // into this structure are used in assembly code in this module\r
 //\r
 typedef struct {\r
-  UINTN                 StackStart;\r
-  UINTN                 StackSize;\r
-  UINTN                 CFunction;\r
-  IA32_DESCRIPTOR       GdtrProfile;\r
-  IA32_DESCRIPTOR       IdtrProfile;\r
-  UINTN                 BufferStart;\r
-  UINTN                 ModeOffset;\r
-  UINTN                 ApIndex;\r
-  UINTN                 CodeSegment;\r
-  UINTN                 DataSegment;\r
-  UINTN                 EnableExecuteDisable;\r
-  UINTN                 Cr3;\r
-  UINTN                 InitFlag;\r
-  CPU_INFO_IN_HOB       *CpuInfo;\r
-  UINTN                 NumApsExecuting;\r
-  CPU_MP_DATA           *CpuMpData;\r
-  UINTN                 InitializeFloatingPointUnitsAddress;\r
-  UINT32                ModeTransitionMemory;\r
-  UINT16                ModeTransitionSegment;\r
-  UINT32                ModeHighMemory;\r
-  UINT16                ModeHighSegment;\r
+  UINTN              StackStart;\r
+  UINTN              StackSize;\r
+  UINTN              CFunction;\r
+  IA32_DESCRIPTOR    GdtrProfile;\r
+  IA32_DESCRIPTOR    IdtrProfile;\r
+  UINTN              BufferStart;\r
+  UINTN              ModeOffset;\r
+  UINTN              ApIndex;\r
+  UINTN              CodeSegment;\r
+  UINTN              DataSegment;\r
+  UINTN              EnableExecuteDisable;\r
+  UINTN              Cr3;\r
+  UINTN              InitFlag;\r
+  CPU_INFO_IN_HOB    *CpuInfo;\r
+  UINTN              NumApsExecuting;\r
+  CPU_MP_DATA        *CpuMpData;\r
+  UINTN              InitializeFloatingPointUnitsAddress;\r
+  UINT32             ModeTransitionMemory;\r
+  UINT16             ModeTransitionSegment;\r
+  UINT32             ModeHighMemory;\r
+  UINT16             ModeHighSegment;\r
   //\r
   // Enable5LevelPaging indicates whether 5-level paging is enabled in long mode.\r
   //\r
-  BOOLEAN               Enable5LevelPaging;\r
-  BOOLEAN               SevEsIsEnabled;\r
-  UINTN                 GhcbBase;\r
+  BOOLEAN            Enable5LevelPaging;\r
+  BOOLEAN            SevEsIsEnabled;\r
+  UINTN              GhcbBase;\r
 } MP_CPU_EXCHANGE_INFO;\r
 \r
 #pragma pack()\r
@@ -227,55 +227,55 @@ typedef struct {
 // CPU MP Data save in memory\r
 //\r
 struct _CPU_MP_DATA {\r
-  UINT64                         CpuInfoInHob;\r
-  UINT32                         CpuCount;\r
-  UINT32                         BspNumber;\r
+  UINT64                           CpuInfoInHob;\r
+  UINT32                           CpuCount;\r
+  UINT32                           BspNumber;\r
   //\r
   // The above fields data will be passed from PEI to DXE\r
   // Please make sure the fields offset same in the different\r
   // architecture.\r
   //\r
-  SPIN_LOCK                      MpLock;\r
-  UINTN                          Buffer;\r
-  UINTN                          CpuApStackSize;\r
-  MP_ASSEMBLY_ADDRESS_MAP        AddressMap;\r
-  UINTN                          WakeupBuffer;\r
-  UINTN                          WakeupBufferHigh;\r
-  UINTN                          BackupBuffer;\r
-  UINTN                          BackupBufferSize;\r
-\r
-  volatile UINT32                FinishedCount;\r
-  UINT32                         RunningCount;\r
-  BOOLEAN                        SingleThread;\r
-  EFI_AP_PROCEDURE               Procedure;\r
-  VOID                           *ProcArguments;\r
-  BOOLEAN                        *Finished;\r
-  UINT64                         ExpectedTime;\r
-  UINT64                         CurrentTime;\r
-  UINT64                         TotalTime;\r
-  EFI_EVENT                      WaitEvent;\r
-  UINTN                          **FailedCpuList;\r
-\r
-  AP_INIT_STATE                  InitFlag;\r
-  BOOLEAN                        SwitchBspFlag;\r
-  UINTN                          NewBspNumber;\r
-  CPU_EXCHANGE_ROLE_INFO         BSPInfo;\r
-  CPU_EXCHANGE_ROLE_INFO         APInfo;\r
-  MTRR_SETTINGS                  MtrrTable;\r
-  UINT8                          ApLoopMode;\r
-  UINT8                          ApTargetCState;\r
-  UINT16                         PmCodeSegment;\r
-  UINT16                         Pm16CodeSegment;\r
-  CPU_AP_DATA                    *CpuData;\r
-  volatile MP_CPU_EXCHANGE_INFO  *MpCpuExchangeInfo;\r
-\r
-  UINT32                         CurrentTimerCount;\r
-  UINTN                          DivideValue;\r
-  UINT8                          Vector;\r
-  BOOLEAN                        PeriodicMode;\r
-  BOOLEAN                        TimerInterruptState;\r
-  UINT64                         MicrocodePatchAddress;\r
-  UINT64                         MicrocodePatchRegionSize;\r
+  SPIN_LOCK                        MpLock;\r
+  UINTN                            Buffer;\r
+  UINTN                            CpuApStackSize;\r
+  MP_ASSEMBLY_ADDRESS_MAP          AddressMap;\r
+  UINTN                            WakeupBuffer;\r
+  UINTN                            WakeupBufferHigh;\r
+  UINTN                            BackupBuffer;\r
+  UINTN                            BackupBufferSize;\r
+\r
+  volatile UINT32                  FinishedCount;\r
+  UINT32                           RunningCount;\r
+  BOOLEAN                          SingleThread;\r
+  EFI_AP_PROCEDURE                 Procedure;\r
+  VOID                             *ProcArguments;\r
+  BOOLEAN                          *Finished;\r
+  UINT64                           ExpectedTime;\r
+  UINT64                           CurrentTime;\r
+  UINT64                           TotalTime;\r
+  EFI_EVENT                        WaitEvent;\r
+  UINTN                            **FailedCpuList;\r
+\r
+  AP_INIT_STATE                    InitFlag;\r
+  BOOLEAN                          SwitchBspFlag;\r
+  UINTN                            NewBspNumber;\r
+  CPU_EXCHANGE_ROLE_INFO           BSPInfo;\r
+  CPU_EXCHANGE_ROLE_INFO           APInfo;\r
+  MTRR_SETTINGS                    MtrrTable;\r
+  UINT8                            ApLoopMode;\r
+  UINT8                            ApTargetCState;\r
+  UINT16                           PmCodeSegment;\r
+  UINT16                           Pm16CodeSegment;\r
+  CPU_AP_DATA                      *CpuData;\r
+  volatile MP_CPU_EXCHANGE_INFO    *MpCpuExchangeInfo;\r
+\r
+  UINT32                           CurrentTimerCount;\r
+  UINTN                            DivideValue;\r
+  UINT8                            Vector;\r
+  BOOLEAN                          PeriodicMode;\r
+  BOOLEAN                          TimerInterruptState;\r
+  UINT64                           MicrocodePatchAddress;\r
+  UINT64                           MicrocodePatchRegionSize;\r
 \r
   //\r
   // Whether need to use Init-Sipi-Sipi to wake up the APs.\r
@@ -284,25 +284,25 @@ struct _CPU_MP_DATA {
   // will be hardcode change to HLT mode by PiSmmCpuDxeSmm\r
   // driver.\r
   //\r
-  BOOLEAN                        WakeUpByInitSipiSipi;\r
+  BOOLEAN        WakeUpByInitSipiSipi;\r
 \r
-  BOOLEAN                        SevEsIsEnabled;\r
-  UINTN                          SevEsAPBuffer;\r
-  UINTN                          SevEsAPResetStackStart;\r
-  CPU_MP_DATA                    *NewCpuMpData;\r
+  BOOLEAN        SevEsIsEnabled;\r
+  UINTN          SevEsAPBuffer;\r
+  UINTN          SevEsAPResetStackStart;\r
+  CPU_MP_DATA    *NewCpuMpData;\r
 \r
-  UINT64                         GhcbBase;\r
+  UINT64         GhcbBase;\r
 };\r
 \r
-#define AP_SAFE_STACK_SIZE  128\r
-#define AP_RESET_STACK_SIZE AP_SAFE_STACK_SIZE\r
+#define AP_SAFE_STACK_SIZE   128\r
+#define AP_RESET_STACK_SIZE  AP_SAFE_STACK_SIZE\r
 \r
 #pragma pack(1)\r
 \r
 typedef struct {\r
-  UINT8   InsnBuffer[8];\r
-  UINT16  Rip;\r
-  UINT16  Segment;\r
+  UINT8     InsnBuffer[8];\r
+  UINT16    Rip;\r
+  UINT16    Segment;\r
 } SEV_ES_AP_JMP_FAR;\r
 \r
 #pragma pack()\r
@@ -322,14 +322,14 @@ typedef struct {
 **/\r
 typedef\r
 VOID\r
-(EFIAPI AP_RESET) (\r
+(EFIAPI AP_RESET)(\r
   IN UINTN    BufferStart,\r
   IN UINT16   Code16,\r
   IN UINT16   Code32,\r
   IN UINTN    StackStart\r
   );\r
 \r
-extern EFI_GUID mCpuInitMpLibHobGuid;\r
+extern EFI_GUID  mCpuInitMpLibHobGuid;\r
 \r
 /**\r
   Assembly code to place AP into safe loop mode.\r
@@ -347,7 +347,7 @@ extern EFI_GUID mCpuInitMpLibHobGuid;
 **/\r
 typedef\r
 VOID\r
-(EFIAPI * ASM_RELOCATE_AP_LOOP) (\r
+(EFIAPI *ASM_RELOCATE_AP_LOOP)(\r
   IN BOOLEAN                 MwaitSupport,\r
   IN UINTN                   ApTargetCState,\r
   IN UINTN                   PmCodeSegment,\r
@@ -367,7 +367,7 @@ VOID
 VOID\r
 EFIAPI\r
 AsmGetAddressMap (\r
-  OUT MP_ASSEMBLY_ADDRESS_MAP    *AddressMap\r
+  OUT MP_ASSEMBLY_ADDRESS_MAP  *AddressMap\r
   );\r
 \r
 /**\r
@@ -382,8 +382,8 @@ AsmGetAddressMap (
 VOID\r
 EFIAPI\r
 AsmExchangeRole (\r
-  IN CPU_EXCHANGE_ROLE_INFO    *MyInfo,\r
-  IN CPU_EXCHANGE_ROLE_INFO    *OthersInfo\r
+  IN CPU_EXCHANGE_ROLE_INFO  *MyInfo,\r
+  IN CPU_EXCHANGE_ROLE_INFO  *OthersInfo\r
   );\r
 \r
 /**\r
@@ -403,10 +403,9 @@ GetCpuMpData (
 **/\r
 VOID\r
 SaveCpuMpData (\r
-  IN CPU_MP_DATA   *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   );\r
 \r
-\r
 /**\r
   Get available system memory below 1MB by specified size.\r
 \r
@@ -417,7 +416,7 @@ SaveCpuMpData (
 **/\r
 UINTN\r
 GetWakeupBuffer (\r
-  IN UINTN                WakeupBufferSize\r
+  IN UINTN  WakeupBufferSize\r
   );\r
 \r
 /**\r
@@ -434,7 +433,7 @@ GetWakeupBuffer (
 **/\r
 UINTN\r
 GetModeTransitionBuffer (\r
-  IN UINTN                BufferSize\r
+  IN UINTN  BufferSize\r
   );\r
 \r
 /**\r
@@ -463,12 +462,12 @@ GetSevEsAPMemory (
 **/\r
 VOID\r
 WakeUpAP (\r
-  IN CPU_MP_DATA               *CpuMpData,\r
-  IN BOOLEAN                   Broadcast,\r
-  IN UINTN                     ProcessorNumber,\r
-  IN EFI_AP_PROCEDURE          Procedure               OPTIONAL,\r
-  IN VOID                      *ProcedureArgument      OPTIONAL,\r
-  IN BOOLEAN                   WakeUpDisabledAps       OPTIONAL\r
+  IN CPU_MP_DATA       *CpuMpData,\r
+  IN BOOLEAN           Broadcast,\r
+  IN UINTN             ProcessorNumber,\r
+  IN EFI_AP_PROCEDURE  Procedure               OPTIONAL,\r
+  IN VOID              *ProcedureArgument      OPTIONAL,\r
+  IN BOOLEAN           WakeUpDisabledAps       OPTIONAL\r
   );\r
 \r
 /**\r
@@ -478,7 +477,7 @@ WakeUpAP (
 **/\r
 VOID\r
 InitMpGlobalData (\r
-  IN CPU_MP_DATA               *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   );\r
 \r
 /**\r
@@ -515,13 +514,13 @@ InitMpGlobalData (
 **/\r
 EFI_STATUS\r
 StartupAllCPUsWorker (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  BOOLEAN                   SingleThread,\r
-  IN  BOOLEAN                   ExcludeBsp,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT UINTN                     **FailedCpuList         OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  BOOLEAN           SingleThread,\r
+  IN  BOOLEAN           ExcludeBsp,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT UINTN             **FailedCpuList         OPTIONAL\r
   );\r
 \r
 /**\r
@@ -549,12 +548,12 @@ StartupAllCPUsWorker (
 **/\r
 EFI_STATUS\r
 StartupThisAPWorker (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT BOOLEAN                   *Finished               OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  UINTN             ProcessorNumber,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT BOOLEAN           *Finished               OPTIONAL\r
   );\r
 \r
 /**\r
@@ -570,8 +569,8 @@ StartupThisAPWorker (
 **/\r
 EFI_STATUS\r
 SwitchBSPWorker (\r
-  IN UINTN                     ProcessorNumber,\r
-  IN BOOLEAN                   EnableOldBSP\r
+  IN UINTN    ProcessorNumber,\r
+  IN BOOLEAN  EnableOldBSP\r
   );\r
 \r
 /**\r
@@ -590,9 +589,9 @@ SwitchBSPWorker (
 **/\r
 EFI_STATUS\r
 EnableDisableApWorker (\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  BOOLEAN                   EnableAP,\r
-  IN  UINT32                    *HealthFlag OPTIONAL\r
+  IN  UINTN    ProcessorNumber,\r
+  IN  BOOLEAN  EnableAP,\r
+  IN  UINT32   *HealthFlag OPTIONAL\r
   );\r
 \r
 /**\r
@@ -618,7 +617,7 @@ GetCpuMpDataFromGuidedHob (
 **/\r
 EFI_STATUS\r
 CheckThisAP (\r
-  IN UINTN        ProcessorNumber\r
+  IN UINTN  ProcessorNumber\r
   );\r
 \r
 /**\r
@@ -655,8 +654,8 @@ CheckAndUpdateApsStatus (
 **/\r
 VOID\r
 MicrocodeDetect (\r
-  IN CPU_MP_DATA             *CpuMpData,\r
-  IN UINTN                   ProcessorNumber\r
+  IN CPU_MP_DATA  *CpuMpData,\r
+  IN UINTN        ProcessorNumber\r
   );\r
 \r
 /**\r
@@ -666,7 +665,7 @@ MicrocodeDetect (
 **/\r
 VOID\r
 ShadowMicrocodeUpdatePatch (\r
-  IN OUT CPU_MP_DATA             *CpuMpData\r
+  IN OUT CPU_MP_DATA  *CpuMpData\r
   );\r
 \r
 /**\r
@@ -686,8 +685,8 @@ ShadowMicrocodeUpdatePatch (
 **/\r
 BOOLEAN\r
 GetMicrocodePatchInfoFromHob (\r
-  UINT64                         *Address,\r
-  UINT64                         *RegionSize\r
+  UINT64  *Address,\r
+  UINT64  *RegionSize\r
   );\r
 \r
 /**\r
@@ -721,8 +720,8 @@ EnableDebugAgent (
 **/\r
 EFI_STATUS\r
 GetProcessorNumber (\r
-  IN CPU_MP_DATA               *CpuMpData,\r
-  OUT UINTN                    *ProcessorNumber\r
+  IN CPU_MP_DATA  *CpuMpData,\r
+  OUT UINTN       *ProcessorNumber\r
   );\r
 \r
 /**\r
@@ -738,7 +737,7 @@ GetProcessorNumber (
 **/\r
 EFI_STATUS\r
 PlatformShadowMicrocode (\r
-  IN OUT CPU_MP_DATA             *CpuMpData\r
+  IN OUT CPU_MP_DATA  *CpuMpData\r
   );\r
 \r
 #endif\r
index 90015c650c68127096ee338b37ac8429ac53d482..ab79360bb935eaaed47fe57e85e54a4d03756530 100644 (file)
@@ -11,7 +11,7 @@
 #include <Guid/S3SmmInitDone.h>\r
 #include <Ppi/ShadowMicrocode.h>\r
 \r
-STATIC UINT64 mSevEsPeiWakeupBuffer = BASE_1MB;\r
+STATIC UINT64  mSevEsPeiWakeupBuffer = BASE_1MB;\r
 \r
 /**\r
   S3 SMM Init Done notification function.\r
@@ -26,16 +26,15 @@ STATIC UINT64 mSevEsPeiWakeupBuffer = BASE_1MB;
 EFI_STATUS\r
 EFIAPI\r
 NotifyOnS3SmmInitDonePpi (\r
-  IN  EFI_PEI_SERVICES                              **PeiServices,\r
-  IN  EFI_PEI_NOTIFY_DESCRIPTOR                     *NotifyDesc,\r
-  IN  VOID                                          *InvokePpi\r
+  IN  EFI_PEI_SERVICES           **PeiServices,\r
+  IN  EFI_PEI_NOTIFY_DESCRIPTOR  *NotifyDesc,\r
+  IN  VOID                       *InvokePpi\r
   );\r
 \r
-\r
 //\r
 // Global function\r
 //\r
-EFI_PEI_NOTIFY_DESCRIPTOR        mS3SmmInitDoneNotifyDesc = {\r
+EFI_PEI_NOTIFY_DESCRIPTOR  mS3SmmInitDoneNotifyDesc = {\r
   EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST,\r
   &gEdkiiS3SmmInitDoneGuid,\r
   NotifyOnS3SmmInitDonePpi\r
@@ -54,12 +53,12 @@ EFI_PEI_NOTIFY_DESCRIPTOR        mS3SmmInitDoneNotifyDesc = {
 EFI_STATUS\r
 EFIAPI\r
 NotifyOnS3SmmInitDonePpi (\r
-  IN  EFI_PEI_SERVICES                              **PeiServices,\r
-  IN  EFI_PEI_NOTIFY_DESCRIPTOR                     *NotifyDesc,\r
-  IN  VOID                                          *InvokePpi\r
+  IN  EFI_PEI_SERVICES           **PeiServices,\r
+  IN  EFI_PEI_NOTIFY_DESCRIPTOR  *NotifyDesc,\r
+  IN  VOID                       *InvokePpi\r
   )\r
 {\r
-  CPU_MP_DATA     *CpuMpData;\r
+  CPU_MP_DATA  *CpuMpData;\r
 \r
   CpuMpData = GetCpuMpData ();\r
 \r
@@ -76,7 +75,6 @@ NotifyOnS3SmmInitDonePpi (
   return EFI_SUCCESS;\r
 }\r
 \r
-\r
 /**\r
   Enable Debug Agent to support source debugging on AP function.\r
 \r
@@ -110,8 +108,9 @@ GetCpuMpData (
     ASSERT (CpuMpData != NULL);\r
   } else {\r
     AsmReadIdtr (&Idtr);\r
-    CpuMpData = (CPU_MP_DATA *) (Idtr.Base + Idtr.Limit + 1);\r
+    CpuMpData = (CPU_MP_DATA *)(Idtr.Base + Idtr.Limit + 1);\r
   }\r
+\r
   return CpuMpData;\r
 }\r
 \r
@@ -122,17 +121,18 @@ GetCpuMpData (
 **/\r
 VOID\r
 SaveCpuMpData (\r
-  IN CPU_MP_DATA   *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  UINT64           Data64;\r
+  UINT64  Data64;\r
+\r
   //\r
   // Build location of CPU MP DATA buffer in HOB\r
   //\r
-  Data64 = (UINT64) (UINTN) CpuMpData;\r
+  Data64 = (UINT64)(UINTN)CpuMpData;\r
   BuildGuidDataHob (\r
     &mCpuInitMpLibHobGuid,\r
-    (VOID *) &Data64,\r
+    (VOID *)&Data64,\r
     sizeof (UINT64)\r
     );\r
 }\r
@@ -148,15 +148,15 @@ SaveCpuMpData (
 **/\r
 BOOLEAN\r
 CheckOverlapWithAllocatedBuffer (\r
-  IN UINT64               WakeupBufferStart,\r
-  IN UINT64               WakeupBufferEnd\r
+  IN UINT64  WakeupBufferStart,\r
+  IN UINT64  WakeupBufferEnd\r
   )\r
 {\r
-  EFI_PEI_HOB_POINTERS      Hob;\r
-  EFI_HOB_MEMORY_ALLOCATION *MemoryHob;\r
-  BOOLEAN                   Overlapped;\r
-  UINT64                    MemoryStart;\r
-  UINT64                    MemoryEnd;\r
+  EFI_PEI_HOB_POINTERS       Hob;\r
+  EFI_HOB_MEMORY_ALLOCATION  *MemoryHob;\r
+  BOOLEAN                    Overlapped;\r
+  UINT64                     MemoryStart;\r
+  UINT64                     MemoryEnd;\r
 \r
   Overlapped = FALSE;\r
   //\r
@@ -176,8 +176,10 @@ CheckOverlapWithAllocatedBuffer (
         break;\r
       }\r
     }\r
+\r
     Hob.Raw = GET_NEXT_HOB (Hob);\r
   }\r
+\r
   return Overlapped;\r
 }\r
 \r
@@ -191,12 +193,12 @@ CheckOverlapWithAllocatedBuffer (
 **/\r
 UINTN\r
 GetWakeupBuffer (\r
-  IN UINTN                WakeupBufferSize\r
+  IN UINTN  WakeupBufferSize\r
   )\r
 {\r
-  EFI_PEI_HOB_POINTERS    Hob;\r
-  UINT64                  WakeupBufferStart;\r
-  UINT64                  WakeupBufferEnd;\r
+  EFI_PEI_HOB_POINTERS  Hob;\r
+  UINT64                WakeupBufferStart;\r
+  UINT64                WakeupBufferEnd;\r
 \r
   WakeupBufferSize = (WakeupBufferSize + SIZE_4KB - 1) & ~(SIZE_4KB - 1);\r
 \r
@@ -216,14 +218,16 @@ GetWakeupBuffer (
             (EFI_RESOURCE_ATTRIBUTE_READ_PROTECTED |\r
              EFI_RESOURCE_ATTRIBUTE_WRITE_PROTECTED |\r
              EFI_RESOURCE_ATTRIBUTE_EXECUTION_PROTECTED\r
-             )) == 0)\r
-           ) {\r
+            )) == 0)\r
+          )\r
+      {\r
         //\r
         // Need memory under 1MB to be collected here\r
         //\r
         WakeupBufferEnd = Hob.ResourceDescriptor->PhysicalStart + Hob.ResourceDescriptor->ResourceLength;\r
         if (PcdGetBool (PcdSevEsIsEnabled) &&\r
-            WakeupBufferEnd > mSevEsPeiWakeupBuffer) {\r
+            (WakeupBufferEnd > mSevEsPeiWakeupBuffer))\r
+        {\r
           //\r
           // SEV-ES Wakeup buffer should be under 1MB and under any previous one\r
           //\r
@@ -234,6 +238,7 @@ GetWakeupBuffer (
           //\r
           WakeupBufferEnd = BASE_1MB;\r
         }\r
+\r
         while (WakeupBufferEnd > WakeupBufferSize) {\r
           //\r
           // Wakeup buffer should be aligned on 4KB\r
@@ -242,6 +247,7 @@ GetWakeupBuffer (
           if (WakeupBufferStart < Hob.ResourceDescriptor->PhysicalStart) {\r
             break;\r
           }\r
+\r
           if (CheckOverlapWithAllocatedBuffer (WakeupBufferStart, WakeupBufferEnd)) {\r
             //\r
             // If this range is overlapped with existing allocated buffer, skip it\r
@@ -250,8 +256,13 @@ GetWakeupBuffer (
             WakeupBufferEnd -= WakeupBufferSize;\r
             continue;\r
           }\r
-          DEBUG ((DEBUG_INFO, "WakeupBufferStart = %x, WakeupBufferSize = %x\n",\r
-                               WakeupBufferStart, WakeupBufferSize));\r
+\r
+          DEBUG ((\r
+            DEBUG_INFO,\r
+            "WakeupBufferStart = %x, WakeupBufferSize = %x\n",\r
+            WakeupBufferStart,\r
+            WakeupBufferSize\r
+            ));\r
 \r
           if (PcdGetBool (PcdSevEsIsEnabled)) {\r
             //\r
@@ -265,13 +276,14 @@ GetWakeupBuffer (
         }\r
       }\r
     }\r
+\r
     //\r
     // Find the next HOB\r
     //\r
     Hob.Raw = GET_NEXT_HOB (Hob);\r
   }\r
 \r
-  return (UINTN) -1;\r
+  return (UINTN)-1;\r
 }\r
 \r
 /**\r
@@ -288,7 +300,7 @@ GetWakeupBuffer (
 **/\r
 UINTN\r
 GetModeTransitionBuffer (\r
-  IN UINTN                BufferSize\r
+  IN UINTN  BufferSize\r
   )\r
 {\r
   //\r
@@ -336,17 +348,17 @@ CheckAndUpdateApsStatus (
 **/\r
 VOID\r
 BuildMicrocodeCacheHob (\r
-  IN CPU_MP_DATA    *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  EDKII_MICROCODE_PATCH_HOB    *MicrocodeHob;\r
-  UINTN                        HobDataLength;\r
-  UINT32                       Index;\r
+  EDKII_MICROCODE_PATCH_HOB  *MicrocodeHob;\r
+  UINTN                      HobDataLength;\r
+  UINT32                     Index;\r
 \r
   HobDataLength = sizeof (EDKII_MICROCODE_PATCH_HOB) +\r
                   sizeof (UINT64) * CpuMpData->CpuCount;\r
 \r
-  MicrocodeHob  = AllocatePool (HobDataLength);\r
+  MicrocodeHob = AllocatePool (HobDataLength);\r
   if (MicrocodeHob == NULL) {\r
     ASSERT (FALSE);\r
     return;\r
@@ -387,7 +399,7 @@ BuildMicrocodeCacheHob (
 **/\r
 VOID\r
 InitMpGlobalData (\r
-  IN CPU_MP_DATA               *CpuMpData\r
+  IN CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
   EFI_STATUS  Status;\r
@@ -480,12 +492,12 @@ InitMpGlobalData (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupAllAPs (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  BOOLEAN                   SingleThread,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT UINTN                     **FailedCpuList         OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  BOOLEAN           SingleThread,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT UINTN             **FailedCpuList         OPTIONAL\r
   )\r
 {\r
   if (WaitEvent != NULL) {\r
@@ -577,12 +589,12 @@ MpInitLibStartupAllAPs (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupThisAP (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT BOOLEAN                   *Finished               OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  UINTN             ProcessorNumber,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT BOOLEAN           *Finished               OPTIONAL\r
   )\r
 {\r
   if (WaitEvent != NULL) {\r
@@ -628,8 +640,8 @@ MpInitLibStartupThisAP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibSwitchBSP (\r
-  IN UINTN                     ProcessorNumber,\r
-  IN  BOOLEAN                  EnableOldBSP\r
+  IN UINTN     ProcessorNumber,\r
+  IN  BOOLEAN  EnableOldBSP\r
   )\r
 {\r
   return SwitchBSPWorker (ProcessorNumber, EnableOldBSP);\r
@@ -668,9 +680,9 @@ MpInitLibSwitchBSP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibEnableDisableAP (\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  BOOLEAN                   EnableAP,\r
-  IN  UINT32                    *HealthFlag OPTIONAL\r
+  IN  UINTN    ProcessorNumber,\r
+  IN  BOOLEAN  EnableAP,\r
+  IN  UINT32   *HealthFlag OPTIONAL\r
   )\r
 {\r
   return EnableDisableApWorker (ProcessorNumber, EnableAP, HealthFlag);\r
@@ -689,29 +701,29 @@ MpInitLibEnableDisableAP (
 **/\r
 EFI_STATUS\r
 PlatformShadowMicrocode (\r
-  IN OUT CPU_MP_DATA             *CpuMpData\r
+  IN OUT CPU_MP_DATA  *CpuMpData\r
   )\r
 {\r
-  EFI_STATUS                         Status;\r
-  EDKII_PEI_SHADOW_MICROCODE_PPI     *ShadowMicrocodePpi;\r
-  UINTN                              CpuCount;\r
-  EDKII_PEI_MICROCODE_CPU_ID         *MicrocodeCpuId;\r
-  UINTN                              Index;\r
-  UINTN                              BufferSize;\r
-  VOID                               *Buffer;\r
+  EFI_STATUS                      Status;\r
+  EDKII_PEI_SHADOW_MICROCODE_PPI  *ShadowMicrocodePpi;\r
+  UINTN                           CpuCount;\r
+  EDKII_PEI_MICROCODE_CPU_ID      *MicrocodeCpuId;\r
+  UINTN                           Index;\r
+  UINTN                           BufferSize;\r
+  VOID                            *Buffer;\r
 \r
   Status = PeiServicesLocatePpi (\r
              &gEdkiiPeiShadowMicrocodePpiGuid,\r
              0,\r
              NULL,\r
-             (VOID **) &ShadowMicrocodePpi\r
+             (VOID **)&ShadowMicrocodePpi\r
              );\r
   if (EFI_ERROR (Status)) {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
-  CpuCount = CpuMpData->CpuCount;\r
-  MicrocodeCpuId = (EDKII_PEI_MICROCODE_CPU_ID *) AllocateZeroPool (sizeof (EDKII_PEI_MICROCODE_CPU_ID) * CpuCount);\r
+  CpuCount       = CpuMpData->CpuCount;\r
+  MicrocodeCpuId = (EDKII_PEI_MICROCODE_CPU_ID *)AllocateZeroPool (sizeof (EDKII_PEI_MICROCODE_CPU_ID) * CpuCount);\r
   if (MicrocodeCpuId == NULL) {\r
     return EFI_OUT_OF_RESOURCES;\r
   }\r
@@ -722,24 +734,26 @@ PlatformShadowMicrocode (
   }\r
 \r
   Status = ShadowMicrocodePpi->ShadowMicrocode (\r
-             ShadowMicrocodePpi,\r
-             CpuCount,\r
-             MicrocodeCpuId,\r
-             &BufferSize,\r
-             &Buffer\r
-             );\r
+                                 ShadowMicrocodePpi,\r
+                                 CpuCount,\r
+                                 MicrocodeCpuId,\r
+                                 &BufferSize,\r
+                                 &Buffer\r
+                                 );\r
   FreePool (MicrocodeCpuId);\r
   if (EFI_ERROR (Status)) {\r
     return EFI_NOT_FOUND;\r
   }\r
 \r
-  CpuMpData->MicrocodePatchAddress    = (UINTN) Buffer;\r
+  CpuMpData->MicrocodePatchAddress    = (UINTN)Buffer;\r
   CpuMpData->MicrocodePatchRegionSize = BufferSize;\r
 \r
   DEBUG ((\r
     DEBUG_INFO,\r
     "%a: Required microcode patches have been loaded at 0x%lx, with size 0x%lx.\n",\r
-    __FUNCTION__, CpuMpData->MicrocodePatchAddress, CpuMpData->MicrocodePatchRegionSize\r
+    __FUNCTION__,\r
+    CpuMpData->MicrocodePatchAddress,\r
+    CpuMpData->MicrocodePatchRegionSize\r
     ));\r
 \r
   return EFI_SUCCESS;\r
index 7a461af9b1cef6777a5ef49c31bd40d4154db36e..86f9fbf90366a42da8e986461fb9d879ab0491ee 100644 (file)
@@ -63,8 +63,8 @@ MpInitLibInitialize (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibGetNumberOfProcessors (\r
-  OUT UINTN                     *NumberOfProcessors        OPTIONAL,\r
-  OUT UINTN                     *NumberOfEnabledProcessors OPTIONAL\r
+  OUT UINTN  *NumberOfProcessors        OPTIONAL,\r
+  OUT UINTN  *NumberOfEnabledProcessors OPTIONAL\r
   )\r
 {\r
   *NumberOfProcessors        = 1;\r
@@ -103,13 +103,15 @@ MpInitLibGetProcessorInfo (
   if (ProcessorInfoBuffer == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (ProcessorNumber != 0) {\r
     return EFI_NOT_FOUND;\r
   }\r
-  ProcessorInfoBuffer->ProcessorId      = 0;\r
-  ProcessorInfoBuffer->StatusFlag       = PROCESSOR_AS_BSP_BIT  |\r
-                                          PROCESSOR_ENABLED_BIT |\r
-                                          PROCESSOR_HEALTH_STATUS_BIT;\r
+\r
+  ProcessorInfoBuffer->ProcessorId = 0;\r
+  ProcessorInfoBuffer->StatusFlag  = PROCESSOR_AS_BSP_BIT  |\r
+                                     PROCESSOR_ENABLED_BIT |\r
+                                     PROCESSOR_HEALTH_STATUS_BIT;\r
   ProcessorInfoBuffer->Location.Package = 0;\r
   ProcessorInfoBuffer->Location.Core    = 0;\r
   ProcessorInfoBuffer->Location.Thread  = 0;\r
@@ -117,12 +119,13 @@ MpInitLibGetProcessorInfo (
     GuidHob = GetFirstGuidHob (&gEfiSecPlatformInformationPpiGuid);\r
     if (GuidHob != NULL) {\r
       SecPlatformInformation = GET_GUID_HOB_DATA (GuidHob);\r
-      HealthData->Uint32 = SecPlatformInformation->IA32HealthFlags.Uint32;\r
+      HealthData->Uint32     = SecPlatformInformation->IA32HealthFlags.Uint32;\r
     } else {\r
       DEBUG ((DEBUG_INFO, "Does not find any HOB stored CPU BIST information!\n"));\r
       HealthData->Uint32 = 0;\r
     }\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -204,12 +207,12 @@ MpInitLibGetProcessorInfo (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupAllAPs (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  BOOLEAN                   SingleThread,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT UINTN                     **FailedCpuList         OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  BOOLEAN           SingleThread,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT UINTN             **FailedCpuList         OPTIONAL\r
   )\r
 {\r
   return EFI_NOT_STARTED;\r
@@ -289,12 +292,12 @@ MpInitLibStartupAllAPs (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupThisAP (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  EFI_EVENT                 WaitEvent               OPTIONAL,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL,\r
-  OUT BOOLEAN                   *Finished               OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  UINTN             ProcessorNumber,\r
+  IN  EFI_EVENT         WaitEvent               OPTIONAL,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL,\r
+  OUT BOOLEAN           *Finished               OPTIONAL\r
   )\r
 {\r
   return EFI_INVALID_PARAMETER;\r
@@ -329,8 +332,8 @@ MpInitLibStartupThisAP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibSwitchBSP (\r
-  IN UINTN                     ProcessorNumber,\r
-  IN BOOLEAN                   EnableOldBSP\r
+  IN UINTN    ProcessorNumber,\r
+  IN BOOLEAN  EnableOldBSP\r
   )\r
 {\r
   return EFI_UNSUPPORTED;\r
@@ -369,9 +372,9 @@ MpInitLibSwitchBSP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibEnableDisableAP (\r
-  IN  UINTN                     ProcessorNumber,\r
-  IN  BOOLEAN                   EnableAP,\r
-  IN  UINT32                    *HealthFlag OPTIONAL\r
+  IN  UINTN    ProcessorNumber,\r
+  IN  BOOLEAN  EnableAP,\r
+  IN  UINT32   *HealthFlag OPTIONAL\r
   )\r
 {\r
   return EFI_UNSUPPORTED;\r
@@ -396,12 +399,13 @@ MpInitLibEnableDisableAP (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibWhoAmI (\r
-  OUT UINTN                    *ProcessorNumber\r
+  OUT UINTN  *ProcessorNumber\r
   )\r
 {\r
   if (ProcessorNumber == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   *ProcessorNumber = 0;\r
   return EFI_SUCCESS;\r
 }\r
@@ -427,9 +431,9 @@ MpInitLibWhoAmI (
 EFI_STATUS\r
 EFIAPI\r
 MpInitLibStartupAllCPUs (\r
-  IN  EFI_AP_PROCEDURE          Procedure,\r
-  IN  UINTN                     TimeoutInMicroseconds,\r
-  IN  VOID                      *ProcedureArgument      OPTIONAL\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  UINTN             TimeoutInMicroseconds,\r
+  IN  VOID              *ProcedureArgument      OPTIONAL\r
   )\r
 {\r
   if (Procedure == NULL) {\r
index 805a2f8d2145135e74fc5008d3cfd9a9f4864a6b..e5c862c83d61cb76bcb485d7008051fc55c7b82f 100644 (file)
 #include <Library/BaseMemoryLib.h>\r
 #include <Library/DebugLib.h>\r
 \r
-#define OR_SEED      0x0101010101010101ull\r
-#define CLEAR_SEED   0xFFFFFFFFFFFFFFFFull\r
-#define MAX_WEIGHT   MAX_UINT8\r
-#define SCRATCH_BUFFER_SIZE           (4 * SIZE_4KB)\r
-#define MTRR_LIB_ASSERT_ALIGNED(B, L) ASSERT ((B & ~(L - 1)) == B);\r
+#define OR_SEED              0x0101010101010101ull\r
+#define CLEAR_SEED           0xFFFFFFFFFFFFFFFFull\r
+#define MAX_WEIGHT           MAX_UINT8\r
+#define SCRATCH_BUFFER_SIZE  (4 * SIZE_4KB)\r
+#define MTRR_LIB_ASSERT_ALIGNED(B, L)  ASSERT ((B & ~(L - 1)) == B);\r
 \r
-#define M(x,y) ((x) * VertexCount + (y))\r
-#define O(x,y) ((y) * VertexCount + (x))\r
+#define M(x, y)  ((x) * VertexCount + (y))\r
+#define O(x, y)  ((y) * VertexCount + (x))\r
 \r
 //\r
 // Context to save and restore when MTRRs are programmed\r
 //\r
 typedef struct {\r
-  UINTN    Cr4;\r
-  BOOLEAN  InterruptState;\r
+  UINTN      Cr4;\r
+  BOOLEAN    InterruptState;\r
 } MTRR_CONTEXT;\r
 \r
 typedef struct {\r
-  UINT64                 Address;\r
-  UINT64                 Alignment;\r
-  UINT64                 Length;\r
-  MTRR_MEMORY_CACHE_TYPE Type : 7;\r
+  UINT64                    Address;\r
+  UINT64                    Alignment;\r
+  UINT64                    Length;\r
+  MTRR_MEMORY_CACHE_TYPE    Type    : 7;\r
 \r
   //\r
   // Temprary use for calculating the best MTRR settings.\r
   //\r
-  BOOLEAN                Visited : 1;\r
-  UINT8                  Weight;\r
-  UINT16                 Previous;\r
+  BOOLEAN                   Visited : 1;\r
+  UINT8                     Weight;\r
+  UINT16                    Previous;\r
 } MTRR_LIB_ADDRESS;\r
 \r
 //\r
@@ -115,7 +115,7 @@ CONST FIXED_MTRR  mMtrrLibFixedMtrrTable[] = {
 //\r
 // Lookup table used to print MTRRs\r
 //\r
-GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *mMtrrMemoryCacheTypeShortName[] = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8  *mMtrrMemoryCacheTypeShortName[] = {\r
   "UC",  // CacheUncacheable\r
   "WC",  // CacheWriteCombining\r
   "R*",  // Invalid\r
@@ -126,7 +126,6 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *mMtrrMemoryCacheTypeShortName[] = {
   "R*"   // Invalid\r
 };\r
 \r
-\r
 /**\r
   Worker function prints all MTRRs for debugging.\r
 \r
@@ -138,7 +137,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST CHAR8 *mMtrrMemoryCacheTypeShortName[] = {
 **/\r
 VOID\r
 MtrrDebugPrintAllMtrrsWorker (\r
-  IN MTRR_SETTINGS    *MtrrSetting\r
+  IN MTRR_SETTINGS  *MtrrSetting\r
   );\r
 \r
 /**\r
@@ -152,10 +151,10 @@ GetVariableMtrrCountWorker (
   VOID\r
   )\r
 {\r
-  MSR_IA32_MTRRCAP_REGISTER MtrrCap;\r
+  MSR_IA32_MTRRCAP_REGISTER  MtrrCap;\r
 \r
   MtrrCap.Uint64 = AsmReadMsr64 (MSR_IA32_MTRRCAP);\r
-  ASSERT (MtrrCap.Bits.VCNT <= ARRAY_SIZE (((MTRR_VARIABLE_SETTINGS *) 0)->Mtrr));\r
+  ASSERT (MtrrCap.Bits.VCNT <= ARRAY_SIZE (((MTRR_VARIABLE_SETTINGS *)0)->Mtrr));\r
   return MtrrCap.Bits.VCNT;\r
 }\r
 \r
@@ -174,6 +173,7 @@ GetVariableMtrrCount (
   if (!IsMtrrSupported ()) {\r
     return 0;\r
   }\r
+\r
   return GetVariableMtrrCountWorker ();\r
 }\r
 \r
@@ -191,7 +191,7 @@ GetFirmwareVariableMtrrCountWorker (
   UINT32  VariableMtrrCount;\r
   UINT32  ReservedMtrrNumber;\r
 \r
-  VariableMtrrCount = GetVariableMtrrCountWorker ();\r
+  VariableMtrrCount  = GetVariableMtrrCountWorker ();\r
   ReservedMtrrNumber = PcdGet32 (PcdCpuNumberOfReservedVariableMtrrs);\r
   if (VariableMtrrCount < ReservedMtrrNumber) {\r
     return 0;\r
@@ -215,6 +215,7 @@ GetFirmwareVariableMtrrCount (
   if (!IsMtrrSupported ()) {\r
     return 0;\r
   }\r
+\r
   return GetFirmwareVariableMtrrCountWorker ();\r
 }\r
 \r
@@ -232,10 +233,10 @@ GetFirmwareVariableMtrrCount (
 **/\r
 MTRR_MEMORY_CACHE_TYPE\r
 MtrrGetDefaultMemoryTypeWorker (\r
-  IN MTRR_SETTINGS      *MtrrSetting\r
+  IN MTRR_SETTINGS  *MtrrSetting\r
   )\r
 {\r
-  MSR_IA32_MTRR_DEF_TYPE_REGISTER DefType;\r
+  MSR_IA32_MTRR_DEF_TYPE_REGISTER  DefType;\r
 \r
   if (MtrrSetting == NULL) {\r
     DefType.Uint64 = AsmReadMsr64 (MSR_IA32_MTRR_DEF_TYPE);\r
@@ -243,10 +244,9 @@ MtrrGetDefaultMemoryTypeWorker (
     DefType.Uint64 = MtrrSetting->MtrrDefType;\r
   }\r
 \r
-  return (MTRR_MEMORY_CACHE_TYPE) DefType.Bits.Type;\r
+  return (MTRR_MEMORY_CACHE_TYPE)DefType.Bits.Type;\r
 }\r
 \r
-\r
 /**\r
   Returns the default MTRR cache type for the system.\r
 \r
@@ -262,6 +262,7 @@ MtrrGetDefaultMemoryType (
   if (!IsMtrrSupported ()) {\r
     return CacheUncacheable;\r
   }\r
+\r
   return MtrrGetDefaultMemoryTypeWorker (NULL);\r
 }\r
 \r
@@ -280,10 +281,11 @@ MtrrLibPreMtrrChange (
   )\r
 {\r
   MSR_IA32_MTRR_DEF_TYPE_REGISTER  DefType;\r
+\r
   //\r
   // Disable interrupts and save current interrupt state\r
   //\r
-  MtrrContext->InterruptState = SaveAndDisableInterrupts();\r
+  MtrrContext->InterruptState = SaveAndDisableInterrupts ();\r
 \r
   //\r
   // Enter no fill cache mode, CD=1(Bit30), NW=0 (Bit29)\r
@@ -359,11 +361,12 @@ MtrrLibPostMtrrChange (
   )\r
 {\r
   MSR_IA32_MTRR_DEF_TYPE_REGISTER  DefType;\r
+\r
   //\r
   // Enable Cache MTRR\r
   //\r
-  DefType.Uint64 = AsmReadMsr64 (MSR_IA32_MTRR_DEF_TYPE);\r
-  DefType.Bits.E = 1;\r
+  DefType.Uint64  = AsmReadMsr64 (MSR_IA32_MTRR_DEF_TYPE);\r
+  DefType.Bits.E  = 1;\r
   DefType.Bits.FE = 1;\r
   AsmWriteMsr64 (MSR_IA32_MTRR_DEF_TYPE, DefType.Uint64);\r
 \r
@@ -378,22 +381,21 @@ MtrrLibPostMtrrChange (
   @retval The pointer of FixedSettings\r
 \r
 **/\r
-MTRR_FIXED_SETTINGS*\r
+MTRR_FIXED_SETTINGS *\r
 MtrrGetFixedMtrrWorker (\r
-  OUT MTRR_FIXED_SETTINGS         *FixedSettings\r
+  OUT MTRR_FIXED_SETTINGS  *FixedSettings\r
   )\r
 {\r
   UINT32  Index;\r
 \r
   for (Index = 0; Index < MTRR_NUMBER_OF_FIXED_MTRR; Index++) {\r
-      FixedSettings->Mtrr[Index] =\r
-        AsmReadMsr64 (mMtrrLibFixedMtrrTable[Index].Msr);\r
+    FixedSettings->Mtrr[Index] =\r
+      AsmReadMsr64 (mMtrrLibFixedMtrrTable[Index].Msr);\r
   }\r
 \r
   return FixedSettings;\r
 }\r
 \r
-\r
 /**\r
   This function gets the content in fixed MTRRs\r
 \r
@@ -402,10 +404,10 @@ MtrrGetFixedMtrrWorker (
   @retval The pointer of FixedSettings\r
 \r
 **/\r
-MTRR_FIXED_SETTINGS*\r
+MTRR_FIXED_SETTINGS *\r
 EFIAPI\r
 MtrrGetFixedMtrr (\r
-  OUT MTRR_FIXED_SETTINGS         *FixedSettings\r
+  OUT MTRR_FIXED_SETTINGS  *FixedSettings\r
   )\r
 {\r
   if (!IsMtrrSupported ()) {\r
@@ -415,7 +417,6 @@ MtrrGetFixedMtrr (
   return MtrrGetFixedMtrrWorker (FixedSettings);\r
 }\r
 \r
-\r
 /**\r
   Worker function will get the raw value in variable MTRRs\r
 \r
@@ -430,7 +431,7 @@ MtrrGetFixedMtrr (
   @return The VariableSettings input pointer\r
 \r
 **/\r
-MTRR_VARIABLE_SETTINGS*\r
+MTRR_VARIABLE_SETTINGS *\r
 MtrrGetVariableMtrrWorker (\r
   IN  MTRR_SETTINGS           *MtrrSetting,\r
   IN  UINT32                  VariableMtrrCount,\r
@@ -453,7 +454,7 @@ MtrrGetVariableMtrrWorker (
     }\r
   }\r
 \r
-  return  VariableSettings;\r
+  return VariableSettings;\r
 }\r
 \r
 /**\r
@@ -493,12 +494,13 @@ MtrrLibProgramFixedMtrr (
   for (MsrIndex = *LastMsrIndex + 1; MsrIndex < ARRAY_SIZE (mMtrrLibFixedMtrrTable); MsrIndex++) {\r
     if ((*Base >= mMtrrLibFixedMtrrTable[MsrIndex].BaseAddress) &&\r
         (*Base <\r
-            (\r
-              mMtrrLibFixedMtrrTable[MsrIndex].BaseAddress +\r
-              (8 * mMtrrLibFixedMtrrTable[MsrIndex].Length)\r
-            )\r
-          )\r
-        ) {\r
+         (\r
+          mMtrrLibFixedMtrrTable[MsrIndex].BaseAddress +\r
+          (8 * mMtrrLibFixedMtrrTable[MsrIndex].Length)\r
+         )\r
+        )\r
+        )\r
+    {\r
       break;\r
     }\r
   }\r
@@ -514,6 +516,7 @@ MtrrLibProgramFixedMtrr (
     //\r
     return RETURN_UNSUPPORTED;\r
   }\r
+\r
   LeftByteShift = ((UINT32)*Base - mMtrrLibFixedMtrrTable[MsrIndex].BaseAddress) / mMtrrLibFixedMtrrTable[MsrIndex].Length;\r
   ASSERT (LeftByteShift < 8);\r
 \r
@@ -530,6 +533,7 @@ MtrrLibProgramFixedMtrr (
       //\r
       return RETURN_UNSUPPORTED;\r
     }\r
+\r
     RightByteShift = 8 - LeftByteShift - (UINT32)(*Length) / mMtrrLibFixedMtrrTable[MsrIndex].Length;\r
     //\r
     // Update SubLength by actual length\r
@@ -538,14 +542,14 @@ MtrrLibProgramFixedMtrr (
   }\r
 \r
   *ClearMask = CLEAR_SEED;\r
-  *OrMask    = MultU64x32 (OR_SEED, (UINT32) Type);\r
+  *OrMask    = MultU64x32 (OR_SEED, (UINT32)Type);\r
 \r
   if (LeftByteShift != 0) {\r
     //\r
     // Clear the low bits by LeftByteShift\r
     //\r
     *ClearMask &= LShiftU64 (*ClearMask, LeftByteShift * 8);\r
-    *OrMask    &= LShiftU64 (*OrMask,    LeftByteShift * 8);\r
+    *OrMask    &= LShiftU64 (*OrMask, LeftByteShift * 8);\r
   }\r
 \r
   if (RightByteShift != 0) {\r
@@ -553,18 +557,17 @@ MtrrLibProgramFixedMtrr (
     // Clear the high bits by RightByteShift\r
     //\r
     *ClearMask &= RShiftU64 (*ClearMask, RightByteShift * 8);\r
-    *OrMask    &= RShiftU64 (*OrMask,    RightByteShift * 8);\r
+    *OrMask    &= RShiftU64 (*OrMask, RightByteShift * 8);\r
   }\r
 \r
   *Length -= SubLength;\r
   *Base   += SubLength;\r
 \r
-  *LastMsrIndex    = MsrIndex;\r
+  *LastMsrIndex = MsrIndex;\r
 \r
   return RETURN_SUCCESS;\r
 }\r
 \r
-\r
 /**\r
   Worker function gets the attribute of variable MTRRs.\r
 \r
@@ -594,17 +597,18 @@ MtrrGetMemoryAttributeInVariableMtrrWorker (
 \r
   ZeroMem (VariableMtrr, sizeof (VARIABLE_MTRR) * ARRAY_SIZE (VariableSettings->Mtrr));\r
   for (Index = 0, UsedMtrr = 0; Index < VariableMtrrCount; Index++) {\r
-    if (((MSR_IA32_MTRR_PHYSMASK_REGISTER *) &VariableSettings->Mtrr[Index].Mask)->Bits.V != 0) {\r
+    if (((MSR_IA32_MTRR_PHYSMASK_REGISTER *)&VariableSettings->Mtrr[Index].Mask)->Bits.V != 0) {\r
       VariableMtrr[Index].Msr         = (UINT32)Index;\r
       VariableMtrr[Index].BaseAddress = (VariableSettings->Mtrr[Index].Base & MtrrValidAddressMask);\r
       VariableMtrr[Index].Length      =\r
         ((~(VariableSettings->Mtrr[Index].Mask & MtrrValidAddressMask)) & MtrrValidBitsMask) + 1;\r
-      VariableMtrr[Index].Type        = (VariableSettings->Mtrr[Index].Base & 0x0ff);\r
-      VariableMtrr[Index].Valid       = TRUE;\r
-      VariableMtrr[Index].Used        = TRUE;\r
+      VariableMtrr[Index].Type  = (VariableSettings->Mtrr[Index].Base & 0x0ff);\r
+      VariableMtrr[Index].Valid = TRUE;\r
+      VariableMtrr[Index].Used  = TRUE;\r
       UsedMtrr++;\r
     }\r
   }\r
+\r
   return UsedMtrr;\r
 }\r
 \r
@@ -636,14 +640,15 @@ MtrrLibGetRawVariableRanges (
 \r
   ZeroMem (VariableMtrr, sizeof (MTRR_MEMORY_RANGE) * ARRAY_SIZE (VariableSettings->Mtrr));\r
   for (Index = 0, UsedMtrr = 0; Index < VariableMtrrCount; Index++) {\r
-    if (((MSR_IA32_MTRR_PHYSMASK_REGISTER *) &VariableSettings->Mtrr[Index].Mask)->Bits.V != 0) {\r
+    if (((MSR_IA32_MTRR_PHYSMASK_REGISTER *)&VariableSettings->Mtrr[Index].Mask)->Bits.V != 0) {\r
       VariableMtrr[Index].BaseAddress = (VariableSettings->Mtrr[Index].Base & MtrrValidAddressMask);\r
       VariableMtrr[Index].Length      =\r
         ((~(VariableSettings->Mtrr[Index].Mask & MtrrValidAddressMask)) & MtrrValidBitsMask) + 1;\r
-      VariableMtrr[Index].Type        = (MTRR_MEMORY_CACHE_TYPE)(VariableSettings->Mtrr[Index].Base & 0x0ff);\r
+      VariableMtrr[Index].Type = (MTRR_MEMORY_CACHE_TYPE)(VariableSettings->Mtrr[Index].Base & 0x0ff);\r
       UsedMtrr++;\r
     }\r
   }\r
+\r
   return UsedMtrr;\r
 }\r
 \r
@@ -664,9 +669,9 @@ MtrrLibGetRawVariableRanges (
 UINT32\r
 EFIAPI\r
 MtrrGetMemoryAttributeInVariableMtrr (\r
-  IN  UINT64                    MtrrValidBitsMask,\r
-  IN  UINT64                    MtrrValidAddressMask,\r
-  OUT VARIABLE_MTRR             *VariableMtrr\r
+  IN  UINT64         MtrrValidBitsMask,\r
+  IN  UINT64         MtrrValidAddressMask,\r
+  OUT VARIABLE_MTRR  *VariableMtrr\r
   )\r
 {\r
   MTRR_VARIABLE_SETTINGS  VariableSettings;\r
@@ -701,9 +706,9 @@ MtrrGetMemoryAttributeInVariableMtrr (
 **/\r
 UINT64\r
 MtrrLibBiggestAlignment (\r
-  UINT64    Address,\r
-  UINT64    Alignment0\r
-)\r
+  UINT64  Address,\r
+  UINT64  Alignment0\r
+  )\r
 {\r
   if (Address == 0) {\r
     return Alignment0;\r
@@ -731,9 +736,9 @@ BOOLEAN
 MtrrLibTypeLeftPrecedeRight (\r
   IN MTRR_MEMORY_CACHE_TYPE  Left,\r
   IN MTRR_MEMORY_CACHE_TYPE  Right\r
-)\r
+  )\r
 {\r
-  return (BOOLEAN) (Left == CacheUncacheable || (Left == CacheWriteThrough && Right == CacheWriteBack));\r
+  return (BOOLEAN)(Left == CacheUncacheable || (Left == CacheWriteThrough && Right == CacheWriteBack));\r
 }\r
 \r
 /**\r
@@ -747,14 +752,13 @@ MtrrLibTypeLeftPrecedeRight (
 **/\r
 VOID\r
 MtrrLibInitializeMtrrMask (\r
-  OUT UINT64 *MtrrValidBitsMask,\r
-  OUT UINT64 *MtrrValidAddressMask\r
+  OUT UINT64  *MtrrValidBitsMask,\r
+  OUT UINT64  *MtrrValidAddressMask\r
   )\r
 {\r
   UINT32                          MaxExtendedFunction;\r
   CPUID_VIR_PHY_ADDRESS_SIZE_EAX  VirPhyAddressSize;\r
 \r
-\r
   AsmCpuid (CPUID_EXTENDED_FUNCTION, &MaxExtendedFunction, NULL, NULL, NULL);\r
 \r
   if (MaxExtendedFunction >= CPUID_VIR_PHY_ADDRESS_SIZE) {\r
@@ -763,11 +767,10 @@ MtrrLibInitializeMtrrMask (
     VirPhyAddressSize.Bits.PhysicalAddressBits = 36;\r
   }\r
 \r
-  *MtrrValidBitsMask = LShiftU64 (1, VirPhyAddressSize.Bits.PhysicalAddressBits) - 1;\r
+  *MtrrValidBitsMask    = LShiftU64 (1, VirPhyAddressSize.Bits.PhysicalAddressBits) - 1;\r
   *MtrrValidAddressMask = *MtrrValidBitsMask & 0xfffffffffffff000ULL;\r
 }\r
 \r
-\r
 /**\r
   Determines the real attribute of a memory range.\r
 \r
@@ -782,8 +785,8 @@ MtrrLibInitializeMtrrMask (
 **/\r
 MTRR_MEMORY_CACHE_TYPE\r
 MtrrLibPrecedence (\r
-  IN MTRR_MEMORY_CACHE_TYPE    MtrrType1,\r
-  IN MTRR_MEMORY_CACHE_TYPE    MtrrType2\r
+  IN MTRR_MEMORY_CACHE_TYPE  MtrrType1,\r
+  IN MTRR_MEMORY_CACHE_TYPE  MtrrType2\r
   )\r
 {\r
   if (MtrrType1 == MtrrType2) {\r
@@ -793,7 +796,7 @@ MtrrLibPrecedence (
   ASSERT (\r
     MtrrLibTypeLeftPrecedeRight (MtrrType1, MtrrType2) ||\r
     MtrrLibTypeLeftPrecedeRight (MtrrType2, MtrrType1)\r
-  );\r
+    );\r
 \r
   if (MtrrLibTypeLeftPrecedeRight (MtrrType1, MtrrType2)) {\r
     return MtrrType1;\r
@@ -817,20 +820,20 @@ MtrrLibPrecedence (
 **/\r
 MTRR_MEMORY_CACHE_TYPE\r
 MtrrGetMemoryAttributeByAddressWorker (\r
-  IN MTRR_SETTINGS      *MtrrSetting,\r
-  IN PHYSICAL_ADDRESS   Address\r
+  IN MTRR_SETTINGS     *MtrrSetting,\r
+  IN PHYSICAL_ADDRESS  Address\r
   )\r
 {\r
-  MSR_IA32_MTRR_DEF_TYPE_REGISTER DefType;\r
-  UINT64                          FixedMtrr;\r
-  UINTN                           Index;\r
-  UINTN                           SubIndex;\r
-  MTRR_MEMORY_CACHE_TYPE          MtrrType;\r
-  MTRR_MEMORY_RANGE               VariableMtrr[ARRAY_SIZE (MtrrSetting->Variables.Mtrr)];\r
-  UINT64                          MtrrValidBitsMask;\r
-  UINT64                          MtrrValidAddressMask;\r
-  UINT32                          VariableMtrrCount;\r
-  MTRR_VARIABLE_SETTINGS          VariableSettings;\r
+  MSR_IA32_MTRR_DEF_TYPE_REGISTER  DefType;\r
+  UINT64                           FixedMtrr;\r
+  UINTN                            Index;\r
+  UINTN                            SubIndex;\r
+  MTRR_MEMORY_CACHE_TYPE           MtrrType;\r
+  MTRR_MEMORY_RANGE                VariableMtrr[ARRAY_SIZE (MtrrSetting->Variables.Mtrr)];\r
+  UINT64                           MtrrValidBitsMask;\r
+  UINT64                           MtrrValidAddressMask;\r
+  UINT32                           VariableMtrrCount;\r
+  MTRR_VARIABLE_SETTINGS           VariableSettings;\r
 \r
   //\r
   // Check if MTRR is enabled, if not, return UC as attribute\r
@@ -854,18 +857,20 @@ MtrrGetMemoryAttributeByAddressWorker (
       // Go through the fixed MTRR\r
       //\r
       for (Index = 0; Index < MTRR_NUMBER_OF_FIXED_MTRR; Index++) {\r
-        if (Address >= mMtrrLibFixedMtrrTable[Index].BaseAddress &&\r
-            Address < mMtrrLibFixedMtrrTable[Index].BaseAddress +\r
-            (mMtrrLibFixedMtrrTable[Index].Length * 8)) {\r
+        if ((Address >= mMtrrLibFixedMtrrTable[Index].BaseAddress) &&\r
+            (Address < mMtrrLibFixedMtrrTable[Index].BaseAddress +\r
+             (mMtrrLibFixedMtrrTable[Index].Length * 8)))\r
+        {\r
           SubIndex =\r
-            ((UINTN) Address - mMtrrLibFixedMtrrTable[Index].BaseAddress) /\r
+            ((UINTN)Address - mMtrrLibFixedMtrrTable[Index].BaseAddress) /\r
             mMtrrLibFixedMtrrTable[Index].Length;\r
           if (MtrrSetting == NULL) {\r
             FixedMtrr = AsmReadMsr64 (mMtrrLibFixedMtrrTable[Index].Msr);\r
           } else {\r
             FixedMtrr = MtrrSetting->Fixed.Mtrr[Index];\r
           }\r
-          return (MTRR_MEMORY_CACHE_TYPE) (RShiftU64 (FixedMtrr, SubIndex * 8) & 0xFF);\r
+\r
+          return (MTRR_MEMORY_CACHE_TYPE)(RShiftU64 (FixedMtrr, SubIndex * 8) & 0xFF);\r
         }\r
       }\r
     }\r
@@ -882,7 +887,7 @@ MtrrGetMemoryAttributeByAddressWorker (
     MtrrValidBitsMask,\r
     MtrrValidAddressMask,\r
     VariableMtrr\r
-  );\r
+    );\r
 \r
   //\r
   // Go through the variable MTRR\r
@@ -890,12 +895,13 @@ MtrrGetMemoryAttributeByAddressWorker (
   MtrrType = CacheInvalid;\r
   for (Index = 0; Index < VariableMtrrCount; Index++) {\r
     if (VariableMtrr[Index].Length != 0) {\r
-      if (Address >= VariableMtrr[Index].BaseAddress &&\r
-          Address < VariableMtrr[Index].BaseAddress + VariableMtrr[Index].Length) {\r
+      if ((Address >= VariableMtrr[Index].BaseAddress) &&\r
+          (Address < VariableMtrr[Index].BaseAddress + VariableMtrr[Index].Length))\r
+      {\r
         if (MtrrType == CacheInvalid) {\r
-          MtrrType = (MTRR_MEMORY_CACHE_TYPE) VariableMtrr[Index].Type;\r
+          MtrrType = (MTRR_MEMORY_CACHE_TYPE)VariableMtrr[Index].Type;\r
         } else {\r
-          MtrrType = MtrrLibPrecedence (MtrrType, (MTRR_MEMORY_CACHE_TYPE) VariableMtrr[Index].Type);\r
+          MtrrType = MtrrLibPrecedence (MtrrType, (MTRR_MEMORY_CACHE_TYPE)VariableMtrr[Index].Type);\r
         }\r
       }\r
     }\r
@@ -905,13 +911,12 @@ MtrrGetMemoryAttributeByAddressWorker (
   // If there is no MTRR which covers the Address, use the default MTRR type.\r
   //\r
   if (MtrrType == CacheInvalid) {\r
-    MtrrType = (MTRR_MEMORY_CACHE_TYPE) DefType.Bits.Type;\r
+    MtrrType = (MTRR_MEMORY_CACHE_TYPE)DefType.Bits.Type;\r
   }\r
 \r
   return MtrrType;\r
 }\r
 \r
-\r
 /**\r
   This function will get the memory cache type of the specific address.\r
 \r
@@ -925,7 +930,7 @@ MtrrGetMemoryAttributeByAddressWorker (
 MTRR_MEMORY_CACHE_TYPE\r
 EFIAPI\r
 MtrrGetMemoryAttribute (\r
-  IN PHYSICAL_ADDRESS   Address\r
+  IN PHYSICAL_ADDRESS  Address\r
   )\r
 {\r
   if (!IsMtrrSupported ()) {\r
@@ -955,46 +960,48 @@ MtrrGetMemoryAttribute (
 **/\r
 RETURN_STATUS\r
 MtrrLibSetMemoryType (\r
-  IN MTRR_MEMORY_RANGE             *Ranges,\r
-  IN UINTN                         Capacity,\r
-  IN OUT UINTN                     *Count,\r
-  IN UINT64                        BaseAddress,\r
-  IN UINT64                        Length,\r
-  IN MTRR_MEMORY_CACHE_TYPE        Type\r
+  IN MTRR_MEMORY_RANGE       *Ranges,\r
+  IN UINTN                   Capacity,\r
+  IN OUT UINTN               *Count,\r
+  IN UINT64                  BaseAddress,\r
+  IN UINT64                  Length,\r
+  IN MTRR_MEMORY_CACHE_TYPE  Type\r
   )\r
 {\r
-  UINTN                            Index;\r
-  UINT64                           Limit;\r
-  UINT64                           LengthLeft;\r
-  UINT64                           LengthRight;\r
-  UINTN                            StartIndex;\r
-  UINTN                            EndIndex;\r
-  UINTN                            DeltaCount;\r
+  UINTN   Index;\r
+  UINT64  Limit;\r
+  UINT64  LengthLeft;\r
+  UINT64  LengthRight;\r
+  UINTN   StartIndex;\r
+  UINTN   EndIndex;\r
+  UINTN   DeltaCount;\r
 \r
   LengthRight = 0;\r
   LengthLeft  = 0;\r
-  Limit = BaseAddress + Length;\r
-  StartIndex = *Count;\r
-  EndIndex = *Count;\r
+  Limit       = BaseAddress + Length;\r
+  StartIndex  = *Count;\r
+  EndIndex    = *Count;\r
   for (Index = 0; Index < *Count; Index++) {\r
     if ((StartIndex == *Count) &&\r
         (Ranges[Index].BaseAddress <= BaseAddress) &&\r
-        (BaseAddress < Ranges[Index].BaseAddress + Ranges[Index].Length)) {\r
+        (BaseAddress < Ranges[Index].BaseAddress + Ranges[Index].Length))\r
+    {\r
       StartIndex = Index;\r
       LengthLeft = BaseAddress - Ranges[Index].BaseAddress;\r
     }\r
 \r
     if ((EndIndex == *Count) &&\r
         (Ranges[Index].BaseAddress < Limit) &&\r
-        (Limit <= Ranges[Index].BaseAddress + Ranges[Index].Length)) {\r
-      EndIndex = Index;\r
+        (Limit <= Ranges[Index].BaseAddress + Ranges[Index].Length))\r
+    {\r
+      EndIndex    = Index;\r
       LengthRight = Ranges[Index].BaseAddress + Ranges[Index].Length - Limit;\r
       break;\r
     }\r
   }\r
 \r
   ASSERT (StartIndex != *Count && EndIndex != *Count);\r
-  if (StartIndex == EndIndex && Ranges[StartIndex].Type == Type) {\r
+  if ((StartIndex == EndIndex) && (Ranges[StartIndex].Type == Type)) {\r
     return RETURN_ALREADY_STARTED;\r
   }\r
 \r
@@ -1004,14 +1011,15 @@ MtrrLibSetMemoryType (
   // logic doesn't need to consider merging.\r
   //\r
   if (StartIndex != 0) {\r
-    if (LengthLeft == 0 && Ranges[StartIndex - 1].Type == Type) {\r
+    if ((LengthLeft == 0) && (Ranges[StartIndex - 1].Type == Type)) {\r
       StartIndex--;\r
-      Length += Ranges[StartIndex].Length;\r
+      Length      += Ranges[StartIndex].Length;\r
       BaseAddress -= Ranges[StartIndex].Length;\r
     }\r
   }\r
+\r
   if (EndIndex != (*Count) - 1) {\r
-    if (LengthRight == 0 && Ranges[EndIndex + 1].Type == Type) {\r
+    if ((LengthRight == 0) && (Ranges[EndIndex + 1].Type == Type)) {\r
       EndIndex++;\r
       Length += Ranges[EndIndex].Length;\r
     }\r
@@ -1029,9 +1037,11 @@ MtrrLibSetMemoryType (
   if (LengthLeft == 0) {\r
     DeltaCount++;\r
   }\r
+\r
   if (LengthRight == 0) {\r
     DeltaCount++;\r
   }\r
+\r
   if (*Count - DeltaCount > Capacity) {\r
     return RETURN_OUT_OF_RESOURCES;\r
   }\r
@@ -1046,14 +1056,16 @@ MtrrLibSetMemoryType (
     Ranges[StartIndex].Length = LengthLeft;\r
     StartIndex++;\r
   }\r
+\r
   if (LengthRight != 0) {\r
     Ranges[EndIndex - DeltaCount].BaseAddress = BaseAddress + Length;\r
-    Ranges[EndIndex - DeltaCount].Length = LengthRight;\r
-    Ranges[EndIndex - DeltaCount].Type = Ranges[EndIndex].Type;\r
+    Ranges[EndIndex - DeltaCount].Length      = LengthRight;\r
+    Ranges[EndIndex - DeltaCount].Type        = Ranges[EndIndex].Type;\r
   }\r
+\r
   Ranges[StartIndex].BaseAddress = BaseAddress;\r
-  Ranges[StartIndex].Length = Length;\r
-  Ranges[StartIndex].Type = Type;\r
+  Ranges[StartIndex].Length      = Length;\r
+  Ranges[StartIndex].Type        = Type;\r
   return RETURN_SUCCESS;\r
 }\r
 \r
@@ -1070,30 +1082,31 @@ MtrrLibSetMemoryType (
 **/\r
 UINT8\r
 MtrrLibGetNumberOfTypes (\r
-  IN CONST MTRR_MEMORY_RANGE     *Ranges,\r
-  IN UINTN                       RangeCount,\r
-  IN UINT64                      BaseAddress,\r
-  IN UINT64                      Length,\r
-  IN OUT UINT8                   *Types  OPTIONAL\r
+  IN CONST MTRR_MEMORY_RANGE  *Ranges,\r
+  IN UINTN                    RangeCount,\r
+  IN UINT64                   BaseAddress,\r
+  IN UINT64                   Length,\r
+  IN OUT UINT8                *Types  OPTIONAL\r
   )\r
 {\r
-  UINTN                          Index;\r
-  UINT8                          TypeCount;\r
-  UINT8                          LocalTypes;\r
+  UINTN  Index;\r
+  UINT8  TypeCount;\r
+  UINT8  LocalTypes;\r
 \r
-  TypeCount = 0;\r
+  TypeCount  = 0;\r
   LocalTypes = 0;\r
   for (Index = 0; Index < RangeCount; Index++) {\r
     if ((Ranges[Index].BaseAddress <= BaseAddress) &&\r
         (BaseAddress < Ranges[Index].BaseAddress + Ranges[Index].Length)\r
-        ) {\r
+        )\r
+    {\r
       if ((LocalTypes & (1 << Ranges[Index].Type)) == 0) {\r
         LocalTypes |= (UINT8)(1 << Ranges[Index].Type);\r
         TypeCount++;\r
       }\r
 \r
       if (BaseAddress + Length > Ranges[Index].BaseAddress + Ranges[Index].Length) {\r
-        Length -= Ranges[Index].BaseAddress + Ranges[Index].Length - BaseAddress;\r
+        Length     -= Ranges[Index].BaseAddress + Ranges[Index].Length - BaseAddress;\r
         BaseAddress = Ranges[Index].BaseAddress + Ranges[Index].Length;\r
       } else {\r
         break;\r
@@ -1104,6 +1117,7 @@ MtrrLibGetNumberOfTypes (
   if (Types != NULL) {\r
     *Types = LocalTypes;\r
   }\r
+\r
   return TypeCount;\r
 }\r
 \r
@@ -1121,32 +1135,32 @@ MtrrLibGetNumberOfTypes (
 **/\r
 VOID\r
 MtrrLibCalculateLeastMtrrs (\r
-  IN UINT16                      VertexCount,\r
-  IN MTRR_LIB_ADDRESS            *Vertices,\r
-  IN OUT CONST UINT8             *Weight,\r
-  IN UINT16                      Start,\r
-  IN UINT16                      Stop,\r
-  IN BOOLEAN                     IncludeOptional\r
+  IN UINT16            VertexCount,\r
+  IN MTRR_LIB_ADDRESS  *Vertices,\r
+  IN OUT CONST UINT8   *Weight,\r
+  IN UINT16            Start,\r
+  IN UINT16            Stop,\r
+  IN BOOLEAN           IncludeOptional\r
   )\r
 {\r
-  UINT16                         Index;\r
-  UINT8                          MinWeight;\r
-  UINT16                         MinI;\r
-  UINT8                          Mandatory;\r
-  UINT8                          Optional;\r
+  UINT16  Index;\r
+  UINT8   MinWeight;\r
+  UINT16  MinI;\r
+  UINT8   Mandatory;\r
+  UINT8   Optional;\r
 \r
   for (Index = Start; Index <= Stop; Index++) {\r
     Vertices[Index].Visited = FALSE;\r
-    Mandatory = Weight[M(Start,Index)];\r
-    Vertices[Index].Weight = Mandatory;\r
+    Mandatory               = Weight[M (Start, Index)];\r
+    Vertices[Index].Weight  = Mandatory;\r
     if (Mandatory != MAX_WEIGHT) {\r
-      Optional = IncludeOptional ? Weight[O(Start, Index)] : 0;\r
+      Optional                = IncludeOptional ? Weight[O (Start, Index)] : 0;\r
       Vertices[Index].Weight += Optional;\r
       ASSERT (Vertices[Index].Weight >= Optional);\r
     }\r
   }\r
 \r
-  MinI = Start;\r
+  MinI      = Start;\r
   MinWeight = 0;\r
   while (!Vertices[Stop].Visited) {\r
     //\r
@@ -1154,9 +1168,9 @@ MtrrLibCalculateLeastMtrrs (
     //\r
     for (Index = Start + 1; Index <= Stop; Index++) {\r
       if (!Vertices[Index].Visited) {\r
-        Mandatory = Weight[M(MinI, Index)];\r
+        Mandatory = Weight[M (MinI, Index)];\r
         if (Mandatory != MAX_WEIGHT) {\r
-          Optional = IncludeOptional ? Weight[O(MinI, Index)] : 0;\r
+          Optional = IncludeOptional ? Weight[O (MinI, Index)] : 0;\r
           if (MinWeight + Mandatory + Optional <= Vertices[Index].Weight) {\r
             Vertices[Index].Weight   = MinWeight + Mandatory + Optional;\r
             Vertices[Index].Previous = MinI; // Previous is Start based.\r
@@ -1171,7 +1185,7 @@ MtrrLibCalculateLeastMtrrs (
     MinI      = VertexCount;\r
     MinWeight = MAX_WEIGHT;\r
     for (Index = Start + 1; Index <= Stop; Index++) {\r
-      if (!Vertices[Index].Visited && MinWeight > Vertices[Index].Weight) {\r
+      if (!Vertices[Index].Visited && (MinWeight > Vertices[Index].Weight)) {\r
         MinI      = Index;\r
         MinWeight = Vertices[Index].Weight;\r
       }\r
@@ -1227,13 +1241,15 @@ MtrrLibAppendVariableMtrr (
 **/\r
 MTRR_MEMORY_CACHE_TYPE\r
 MtrrLibLowestType (\r
-  IN      UINT8                    TypeBits\r
-)\r
+  IN      UINT8  TypeBits\r
+  )\r
 {\r
-  INT8                             Type;\r
+  INT8  Type;\r
 \r
   ASSERT (TypeBits != 0);\r
-  for (Type = 7; (INT8)TypeBits > 0; Type--, TypeBits <<= 1);\r
+  for (Type = 7; (INT8)TypeBits > 0; Type--, TypeBits <<= 1) {\r
+  }\r
+\r
   return (MTRR_MEMORY_CACHE_TYPE)Type;\r
 }\r
 \r
@@ -1245,11 +1261,11 @@ MtrrLibLowestType (
 **/\r
 BOOLEAN\r
 MtrrLibIsPowerOfTwo (\r
-  IN     UINT64                  Operand\r
-)\r
+  IN     UINT64  Operand\r
+  )\r
 {\r
   ASSERT (Operand != 0);\r
-  return (BOOLEAN) ((Operand & (Operand - 1)) == 0);\r
+  return (BOOLEAN)((Operand & (Operand - 1)) == 0);\r
 }\r
 \r
 /**\r
@@ -1276,36 +1292,36 @@ MtrrLibIsPowerOfTwo (
 **/\r
 RETURN_STATUS\r
 MtrrLibCalculateSubtractivePath (\r
-  IN MTRR_MEMORY_CACHE_TYPE      DefaultType,\r
-  IN UINT64                      A0,\r
-  IN CONST MTRR_MEMORY_RANGE     *Ranges,\r
-  IN UINTN                       RangeCount,\r
-  IN UINT16                      VertexCount,\r
-  IN MTRR_LIB_ADDRESS            *Vertices,\r
-  IN OUT UINT8                   *Weight,\r
-  IN UINT16                      Start,\r
-  IN UINT16                      Stop,\r
-  IN UINT8                       Types,\r
-  IN UINT8                       TypeCount,\r
-  IN OUT MTRR_MEMORY_RANGE       *Mtrrs        OPTIONAL,\r
-  IN UINT32                      MtrrCapacity  OPTIONAL,\r
-  IN OUT UINT32                  *MtrrCount    OPTIONAL\r
+  IN MTRR_MEMORY_CACHE_TYPE   DefaultType,\r
+  IN UINT64                   A0,\r
+  IN CONST MTRR_MEMORY_RANGE  *Ranges,\r
+  IN UINTN                    RangeCount,\r
+  IN UINT16                   VertexCount,\r
+  IN MTRR_LIB_ADDRESS         *Vertices,\r
+  IN OUT UINT8                *Weight,\r
+  IN UINT16                   Start,\r
+  IN UINT16                   Stop,\r
+  IN UINT8                    Types,\r
+  IN UINT8                    TypeCount,\r
+  IN OUT MTRR_MEMORY_RANGE    *Mtrrs        OPTIONAL,\r
+  IN UINT32                   MtrrCapacity  OPTIONAL,\r
+  IN OUT UINT32               *MtrrCount    OPTIONAL\r
   )\r
 {\r
-  RETURN_STATUS                  Status;\r
-  UINT64                         Base;\r
-  UINT64                         Length;\r
-  UINT8                          PrecedentTypes;\r
-  UINTN                          Index;\r
-  UINT64                         HBase;\r
-  UINT64                         HLength;\r
-  UINT64                         SubLength;\r
-  UINT16                         SubStart;\r
-  UINT16                         SubStop;\r
-  UINT16                         Cur;\r
-  UINT16                         Pre;\r
-  MTRR_MEMORY_CACHE_TYPE         LowestType;\r
-  MTRR_MEMORY_CACHE_TYPE         LowestPrecedentType;\r
+  RETURN_STATUS           Status;\r
+  UINT64                  Base;\r
+  UINT64                  Length;\r
+  UINT8                   PrecedentTypes;\r
+  UINTN                   Index;\r
+  UINT64                  HBase;\r
+  UINT64                  HLength;\r
+  UINT64                  SubLength;\r
+  UINT16                  SubStart;\r
+  UINT16                  SubStop;\r
+  UINT16                  Cur;\r
+  UINT16                  Pre;\r
+  MTRR_MEMORY_CACHE_TYPE  LowestType;\r
+  MTRR_MEMORY_CACHE_TYPE  LowestPrecedentType;\r
 \r
   Base   = Vertices[Start].Address;\r
   Length = Vertices[Stop].Address - Base;\r
@@ -1315,21 +1331,22 @@ MtrrLibCalculateSubtractivePath (
   //\r
   // Clear the lowest type (highest bit) to get the precedent types\r
   //\r
-  PrecedentTypes = ~(1 << LowestType) & Types;\r
+  PrecedentTypes      = ~(1 << LowestType) & Types;\r
   LowestPrecedentType = MtrrLibLowestType (PrecedentTypes);\r
 \r
   if (Mtrrs == NULL) {\r
-    Weight[M(Start, Stop)] = ((LowestType == DefaultType) ? 0 : 1);\r
-    Weight[O(Start, Stop)] = ((LowestType == DefaultType) ? 1 : 0);\r
+    Weight[M (Start, Stop)] = ((LowestType == DefaultType) ? 0 : 1);\r
+    Weight[O (Start, Stop)] = ((LowestType == DefaultType) ? 1 : 0);\r
   }\r
 \r
   // Add all high level ranges\r
-  HBase = MAX_UINT64;\r
+  HBase   = MAX_UINT64;\r
   HLength = 0;\r
   for (Index = 0; Index < RangeCount; Index++) {\r
     if (Length == 0) {\r
       break;\r
     }\r
+\r
     if ((Base < Ranges[Index].BaseAddress) || (Ranges[Index].BaseAddress + Ranges[Index].Length <= Base)) {\r
       continue;\r
     }\r
@@ -1342,6 +1359,7 @@ MtrrLibCalculateSubtractivePath (
     } else {\r
       SubLength = Length;\r
     }\r
+\r
     if (((1 << Ranges[Index].Type) & PrecedentTypes) != 0) {\r
       //\r
       // Meet a range whose types take precedence.\r
@@ -1351,17 +1369,19 @@ MtrrLibCalculateSubtractivePath (
       if (HBase == MAX_UINT64) {\r
         HBase = Base;\r
       }\r
+\r
       HLength += SubLength;\r
     }\r
 \r
-    Base += SubLength;\r
+    Base   += SubLength;\r
     Length -= SubLength;\r
 \r
     if (HLength == 0) {\r
       continue;\r
     }\r
 \r
-    if ((Ranges[Index].Type == LowestType) || (Length == 0)) { // meet low type or end\r
+    if ((Ranges[Index].Type == LowestType) || (Length == 0)) {\r
+      // meet low type or end\r
 \r
       //\r
       // Add the MTRRs for each high priority type range\r
@@ -1379,6 +1399,7 @@ MtrrLibCalculateSubtractivePath (
           break;\r
         }\r
       }\r
+\r
       ASSERT (Vertices[SubStart].Address == HBase);\r
       ASSERT (Vertices[SubStop].Address == HBase + HLength);\r
 \r
@@ -1393,12 +1414,17 @@ MtrrLibCalculateSubtractivePath (
         } else {\r
           while (SubStart != SubStop) {\r
             Status = MtrrLibAppendVariableMtrr (\r
-              Mtrrs, MtrrCapacity, MtrrCount,\r
-              Vertices[SubStart].Address, Vertices[SubStart].Length, Vertices[SubStart].Type\r
-            );\r
+                       Mtrrs,\r
+                       MtrrCapacity,\r
+                       MtrrCount,\r
+                       Vertices[SubStart].Address,\r
+                       Vertices[SubStart].Length,\r
+                       Vertices[SubStart].Type\r
+                       );\r
             if (RETURN_ERROR (Status)) {\r
               return Status;\r
             }\r
+\r
             SubStart++;\r
           }\r
         }\r
@@ -1411,43 +1437,57 @@ MtrrLibCalculateSubtractivePath (
         } else {\r
           // When we need to collect the optimal path from SubStart to SubStop\r
           while (SubStop != SubStart) {\r
-            Cur = SubStop;\r
-            Pre = Vertices[Cur].Previous;\r
+            Cur     = SubStop;\r
+            Pre     = Vertices[Cur].Previous;\r
             SubStop = Pre;\r
 \r
             if (Weight[M (Pre, Cur)] + Weight[O (Pre, Cur)] != 0) {\r
               Status = MtrrLibAppendVariableMtrr (\r
-                Mtrrs, MtrrCapacity, MtrrCount,\r
-                Vertices[Pre].Address, Vertices[Cur].Address - Vertices[Pre].Address,\r
-                (Pre != Cur - 1) ? LowestPrecedentType : Vertices[Pre].Type\r
-              );\r
+                         Mtrrs,\r
+                         MtrrCapacity,\r
+                         MtrrCount,\r
+                         Vertices[Pre].Address,\r
+                         Vertices[Cur].Address - Vertices[Pre].Address,\r
+                         (Pre != Cur - 1) ? LowestPrecedentType : Vertices[Pre].Type\r
+                         );\r
               if (RETURN_ERROR (Status)) {\r
                 return Status;\r
               }\r
             }\r
+\r
             if (Pre != Cur - 1) {\r
               Status = MtrrLibCalculateSubtractivePath (\r
-                DefaultType, A0,\r
-                Ranges, RangeCount,\r
-                VertexCount, Vertices, Weight,\r
-                Pre, Cur, PrecedentTypes, 2,\r
-                Mtrrs, MtrrCapacity, MtrrCount\r
-              );\r
+                         DefaultType,\r
+                         A0,\r
+                         Ranges,\r
+                         RangeCount,\r
+                         VertexCount,\r
+                         Vertices,\r
+                         Weight,\r
+                         Pre,\r
+                         Cur,\r
+                         PrecedentTypes,\r
+                         2,\r
+                         Mtrrs,\r
+                         MtrrCapacity,\r
+                         MtrrCount\r
+                         );\r
               if (RETURN_ERROR (Status)) {\r
                 return Status;\r
               }\r
             }\r
           }\r
         }\r
-\r
       }\r
+\r
       //\r
       // Reset HBase, HLength\r
       //\r
-      HBase = MAX_UINT64;\r
+      HBase   = MAX_UINT64;\r
       HLength = 0;\r
     }\r
   }\r
+\r
   return RETURN_SUCCESS;\r
 }\r
 \r
@@ -1474,34 +1514,34 @@ MtrrLibCalculateSubtractivePath (
 **/\r
 RETURN_STATUS\r
 MtrrLibCalculateMtrrs (\r
-  IN MTRR_MEMORY_CACHE_TYPE  DefaultType,\r
-  IN UINT64                  A0,\r
-  IN CONST MTRR_MEMORY_RANGE *Ranges,\r
-  IN UINTN                   RangeCount,\r
-  IN VOID                    *Scratch,\r
-  IN OUT UINTN               *ScratchSize,\r
-  IN OUT MTRR_MEMORY_RANGE   *Mtrrs,\r
-  IN UINT32                  MtrrCapacity,\r
-  IN OUT UINT32              *MtrrCount\r
+  IN MTRR_MEMORY_CACHE_TYPE   DefaultType,\r
+  IN UINT64                   A0,\r
+  IN CONST MTRR_MEMORY_RANGE  *Ranges,\r
+  IN UINTN                    RangeCount,\r
+  IN VOID                     *Scratch,\r
+  IN OUT UINTN                *ScratchSize,\r
+  IN OUT MTRR_MEMORY_RANGE    *Mtrrs,\r
+  IN UINT32                   MtrrCapacity,\r
+  IN OUT UINT32               *MtrrCount\r
   )\r
 {\r
-  UINT64                    Base0;\r
-  UINT64                    Base1;\r
-  UINTN                     Index;\r
-  UINT64                    Base;\r
-  UINT64                    Length;\r
-  UINT64                    Alignment;\r
-  UINT64                    SubLength;\r
-  MTRR_LIB_ADDRESS          *Vertices;\r
-  UINT8                     *Weight;\r
-  UINT32                    VertexIndex;\r
-  UINT32                    VertexCount;\r
-  UINTN                     RequiredScratchSize;\r
-  UINT8                     TypeCount;\r
-  UINT16                    Start;\r
-  UINT16                    Stop;\r
-  UINT8                     Type;\r
-  RETURN_STATUS             Status;\r
+  UINT64            Base0;\r
+  UINT64            Base1;\r
+  UINTN             Index;\r
+  UINT64            Base;\r
+  UINT64            Length;\r
+  UINT64            Alignment;\r
+  UINT64            SubLength;\r
+  MTRR_LIB_ADDRESS  *Vertices;\r
+  UINT8             *Weight;\r
+  UINT32            VertexIndex;\r
+  UINT32            VertexCount;\r
+  UINTN             RequiredScratchSize;\r
+  UINT8             TypeCount;\r
+  UINT16            Start;\r
+  UINT16            Stop;\r
+  UINT8             Type;\r
+  RETURN_STATUS     Status;\r
 \r
   Base0 = Ranges[0].BaseAddress;\r
   Base1 = Ranges[RangeCount - 1].BaseAddress + Ranges[RangeCount - 1].Length;\r
@@ -1510,9 +1550,9 @@ MtrrLibCalculateMtrrs (
   //\r
   // Count the number of vertices.\r
   //\r
-  Vertices = (MTRR_LIB_ADDRESS*)Scratch;\r
+  Vertices = (MTRR_LIB_ADDRESS *)Scratch;\r
   for (VertexIndex = 0, Index = 0; Index < RangeCount; Index++) {\r
-    Base = Ranges[Index].BaseAddress;\r
+    Base   = Ranges[Index].BaseAddress;\r
     Length = Ranges[Index].Length;\r
     while (Length != 0) {\r
       Alignment = MtrrLibBiggestAlignment (Base, A0);\r
@@ -1520,24 +1560,30 @@ MtrrLibCalculateMtrrs (
       if (SubLength > Length) {\r
         SubLength = GetPowerOfTwo64 (Length);\r
       }\r
+\r
       if (VertexIndex < *ScratchSize / sizeof (*Vertices)) {\r
         Vertices[VertexIndex].Address   = Base;\r
         Vertices[VertexIndex].Alignment = Alignment;\r
         Vertices[VertexIndex].Type      = Ranges[Index].Type;\r
         Vertices[VertexIndex].Length    = SubLength;\r
       }\r
+\r
       Base   += SubLength;\r
       Length -= SubLength;\r
       VertexIndex++;\r
     }\r
   }\r
+\r
   //\r
   // Vertices[VertexIndex] = Base1, so whole vertex count is (VertexIndex + 1).\r
   //\r
   VertexCount = VertexIndex + 1;\r
   DEBUG ((\r
-    DEBUG_CACHE, "  Count of vertices (%016llx - %016llx) = %d\n",\r
-    Ranges[0].BaseAddress, Ranges[RangeCount - 1].BaseAddress + Ranges[RangeCount - 1].Length, VertexCount\r
+    DEBUG_CACHE,\r
+    "  Count of vertices (%016llx - %016llx) = %d\n",\r
+    Ranges[0].BaseAddress,\r
+    Ranges[RangeCount - 1].BaseAddress + Ranges[RangeCount - 1].Length,\r
+    VertexCount\r
     ));\r
   ASSERT (VertexCount < MAX_UINT16);\r
 \r
@@ -1546,14 +1592,15 @@ MtrrLibCalculateMtrrs (
     *ScratchSize = RequiredScratchSize;\r
     return RETURN_BUFFER_TOO_SMALL;\r
   }\r
+\r
   Vertices[VertexCount - 1].Address = Base1;\r
 \r
-  Weight = (UINT8 *) &Vertices[VertexCount];\r
+  Weight = (UINT8 *)&Vertices[VertexCount];\r
   for (VertexIndex = 0; VertexIndex < VertexCount; VertexIndex++) {\r
     //\r
     // Set optional weight between vertices and self->self to 0\r
     //\r
-    SetMem (&Weight[M(VertexIndex, 0)], VertexIndex + 1, 0);\r
+    SetMem (&Weight[M (VertexIndex, 0)], VertexIndex + 1, 0);\r
     //\r
     // Set mandatory weight between vertices to MAX_WEIGHT\r
     //\r
@@ -1590,19 +1637,34 @@ MtrrLibCalculateMtrrs (
           //\r
           break;\r
         }\r
-        if ((Weight[M(Start, Stop)] == MAX_WEIGHT) && MtrrLibIsPowerOfTwo (Length)) {\r
+\r
+        if ((Weight[M (Start, Stop)] == MAX_WEIGHT) && MtrrLibIsPowerOfTwo (Length)) {\r
           if (MtrrLibGetNumberOfTypes (\r
-                Ranges, RangeCount, Vertices[Start].Address, Vertices[Stop].Address - Vertices[Start].Address, &Type\r
-                ) == TypeCount) {\r
+                Ranges,\r
+                RangeCount,\r
+                Vertices[Start].Address,\r
+                Vertices[Stop].Address - Vertices[Start].Address,\r
+                &Type\r
+                ) == TypeCount)\r
+          {\r
             //\r
             // Update the Weight[Start, Stop] using subtractive path.\r
             //\r
             MtrrLibCalculateSubtractivePath (\r
-              DefaultType, A0,\r
-              Ranges, RangeCount,\r
-              (UINT16)VertexCount, Vertices, Weight,\r
-              Start, Stop, Type, TypeCount,\r
-              NULL, 0, NULL\r
+              DefaultType,\r
+              A0,\r
+              Ranges,\r
+              RangeCount,\r
+              (UINT16)VertexCount,\r
+              Vertices,\r
+              Weight,\r
+              Start,\r
+              Stop,\r
+              Type,\r
+              TypeCount,\r
+              NULL,\r
+              0,\r
+              NULL\r
               );\r
           } else if (TypeCount == 2) {\r
             //\r
@@ -1617,19 +1679,22 @@ MtrrLibCalculateMtrrs (
   }\r
 \r
   Status = RETURN_SUCCESS;\r
-  MtrrLibCalculateLeastMtrrs ((UINT16) VertexCount, Vertices, Weight, 0, (UINT16) VertexCount - 1, FALSE);\r
-  Stop = (UINT16) VertexCount - 1;\r
+  MtrrLibCalculateLeastMtrrs ((UINT16)VertexCount, Vertices, Weight, 0, (UINT16)VertexCount - 1, FALSE);\r
+  Stop = (UINT16)VertexCount - 1;\r
   while (Stop != 0) {\r
-    Start = Vertices[Stop].Previous;\r
+    Start     = Vertices[Stop].Previous;\r
     TypeCount = MAX_UINT8;\r
-    Type = 0;\r
-    if (Weight[M(Start, Stop)] != 0) {\r
+    Type      = 0;\r
+    if (Weight[M (Start, Stop)] != 0) {\r
       TypeCount = MtrrLibGetNumberOfTypes (Ranges, RangeCount, Vertices[Start].Address, Vertices[Stop].Address - Vertices[Start].Address, &Type);\r
-      Status = MtrrLibAppendVariableMtrr (\r
-        Mtrrs, MtrrCapacity, MtrrCount,\r
-        Vertices[Start].Address, Vertices[Stop].Address - Vertices[Start].Address,\r
-        MtrrLibLowestType (Type)\r
-        );\r
+      Status    = MtrrLibAppendVariableMtrr (\r
+                    Mtrrs,\r
+                    MtrrCapacity,\r
+                    MtrrCount,\r
+                    Vertices[Start].Address,\r
+                    Vertices[Stop].Address - Vertices[Start].Address,\r
+                    MtrrLibLowestType (Type)\r
+                    );\r
       if (RETURN_ERROR (Status)) {\r
         break;\r
       }\r
@@ -1641,26 +1706,41 @@ MtrrLibCalculateMtrrs (
       //\r
       if (TypeCount == MAX_UINT8) {\r
         TypeCount = MtrrLibGetNumberOfTypes (\r
-                      Ranges, RangeCount, Vertices[Start].Address, Vertices[Stop].Address - Vertices[Start].Address, &Type\r
+                      Ranges,\r
+                      RangeCount,\r
+                      Vertices[Start].Address,\r
+                      Vertices[Stop].Address - Vertices[Start].Address,\r
+                      &Type\r
                       );\r
       }\r
+\r
       Status = MtrrLibCalculateSubtractivePath (\r
-                 DefaultType, A0,\r
-                 Ranges, RangeCount,\r
-                 (UINT16) VertexCount, Vertices, Weight, Start, Stop,\r
-                 Type, TypeCount,\r
-                 Mtrrs, MtrrCapacity, MtrrCount\r
+                 DefaultType,\r
+                 A0,\r
+                 Ranges,\r
+                 RangeCount,\r
+                 (UINT16)VertexCount,\r
+                 Vertices,\r
+                 Weight,\r
+                 Start,\r
+                 Stop,\r
+                 Type,\r
+                 TypeCount,\r
+                 Mtrrs,\r
+                 MtrrCapacity,\r
+                 MtrrCount\r
                  );\r
       if (RETURN_ERROR (Status)) {\r
         break;\r
       }\r
     }\r
+\r
     Stop = Start;\r
   }\r
+\r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   Apply the fixed MTRR settings to memory range array.\r
 \r
@@ -1681,26 +1761,33 @@ MtrrLibApplyFixedMtrrs (
   IN OUT UINTN                *RangeCount\r
   )\r
 {\r
-  RETURN_STATUS               Status;\r
-  UINTN                       MsrIndex;\r
-  UINTN                       Index;\r
-  MTRR_MEMORY_CACHE_TYPE      MemoryType;\r
-  UINT64                      Base;\r
+  RETURN_STATUS           Status;\r
+  UINTN                   MsrIndex;\r
+  UINTN                   Index;\r
+  MTRR_MEMORY_CACHE_TYPE  MemoryType;\r
+  UINT64                  Base;\r
 \r
   Base = 0;\r
   for (MsrIndex = 0; MsrIndex < ARRAY_SIZE (mMtrrLibFixedMtrrTable); MsrIndex++) {\r
     ASSERT (Base == mMtrrLibFixedMtrrTable[MsrIndex].BaseAddress);\r
     for (Index = 0; Index < sizeof (UINT64); Index++) {\r
       MemoryType = (MTRR_MEMORY_CACHE_TYPE)((UINT8 *)(&Fixed->Mtrr[MsrIndex]))[Index];\r
-      Status = MtrrLibSetMemoryType (\r
-                 Ranges, RangeCapacity, RangeCount, Base, mMtrrLibFixedMtrrTable[MsrIndex].Length, MemoryType\r
-                 );\r
+      Status     = MtrrLibSetMemoryType (\r
+                     Ranges,\r
+                     RangeCapacity,\r
+                     RangeCount,\r
+                     Base,\r
+                     mMtrrLibFixedMtrrTable[MsrIndex].Length,\r
+                     MemoryType\r
+                     );\r
       if (Status == RETURN_OUT_OF_RESOURCES) {\r
         return Status;\r
       }\r
+\r
       Base += mMtrrLibFixedMtrrTable[MsrIndex].Length;\r
     }\r
   }\r
+\r
   ASSERT (Base == BASE_1MB);\r
   return RETURN_SUCCESS;\r
 }\r
@@ -1719,15 +1806,15 @@ MtrrLibApplyFixedMtrrs (
 **/\r
 RETURN_STATUS\r
 MtrrLibApplyVariableMtrrs (\r
-  IN     CONST MTRR_MEMORY_RANGE *VariableMtrr,\r
-  IN     UINT32                  VariableMtrrCount,\r
-  IN OUT MTRR_MEMORY_RANGE       *Ranges,\r
-  IN     UINTN                   RangeCapacity,\r
-  IN OUT UINTN                   *RangeCount\r
+  IN     CONST MTRR_MEMORY_RANGE  *VariableMtrr,\r
+  IN     UINT32                   VariableMtrrCount,\r
+  IN OUT MTRR_MEMORY_RANGE        *Ranges,\r
+  IN     UINTN                    RangeCapacity,\r
+  IN OUT UINTN                    *RangeCount\r
   )\r
 {\r
-  RETURN_STATUS                  Status;\r
-  UINTN                          Index;\r
+  RETURN_STATUS  Status;\r
+  UINTN          Index;\r
 \r
   //\r
   // WT > WB\r
@@ -1741,9 +1828,13 @@ MtrrLibApplyVariableMtrrs (
   for (Index = 0; Index < VariableMtrrCount; Index++) {\r
     if ((VariableMtrr[Index].Length != 0) && (VariableMtrr[Index].Type == CacheWriteBack)) {\r
       Status = MtrrLibSetMemoryType (\r
-        Ranges, RangeCapacity, RangeCount,\r
-        VariableMtrr[Index].BaseAddress, VariableMtrr[Index].Length, VariableMtrr[Index].Type\r
-      );\r
+                 Ranges,\r
+                 RangeCapacity,\r
+                 RangeCount,\r
+                 VariableMtrr[Index].BaseAddress,\r
+                 VariableMtrr[Index].Length,\r
+                 VariableMtrr[Index].Type\r
+                 );\r
       if (Status == RETURN_OUT_OF_RESOURCES) {\r
         return Status;\r
       }\r
@@ -1755,10 +1846,15 @@ MtrrLibApplyVariableMtrrs (
   //\r
   for (Index = 0; Index < VariableMtrrCount; Index++) {\r
     if ((VariableMtrr[Index].Length != 0) &&\r
-        (VariableMtrr[Index].Type != CacheWriteBack) && (VariableMtrr[Index].Type != CacheUncacheable)) {\r
+        (VariableMtrr[Index].Type != CacheWriteBack) && (VariableMtrr[Index].Type != CacheUncacheable))\r
+    {\r
       Status = MtrrLibSetMemoryType (\r
-                 Ranges, RangeCapacity, RangeCount,\r
-                 VariableMtrr[Index].BaseAddress, VariableMtrr[Index].Length, VariableMtrr[Index].Type\r
+                 Ranges,\r
+                 RangeCapacity,\r
+                 RangeCount,\r
+                 VariableMtrr[Index].BaseAddress,\r
+                 VariableMtrr[Index].Length,\r
+                 VariableMtrr[Index].Type\r
                  );\r
       if (Status == RETURN_OUT_OF_RESOURCES) {\r
         return Status;\r
@@ -1770,16 +1866,21 @@ MtrrLibApplyVariableMtrrs (
   // 3. Set UC\r
   //\r
   for (Index = 0; Index < VariableMtrrCount; Index++) {\r
-    if (VariableMtrr[Index].Length != 0 && VariableMtrr[Index].Type == CacheUncacheable) {\r
+    if ((VariableMtrr[Index].Length != 0) && (VariableMtrr[Index].Type == CacheUncacheable)) {\r
       Status = MtrrLibSetMemoryType (\r
-                 Ranges, RangeCapacity, RangeCount,\r
-                 VariableMtrr[Index].BaseAddress, VariableMtrr[Index].Length, VariableMtrr[Index].Type\r
+                 Ranges,\r
+                 RangeCapacity,\r
+                 RangeCount,\r
+                 VariableMtrr[Index].BaseAddress,\r
+                 VariableMtrr[Index].Length,\r
+                 VariableMtrr[Index].Type\r
                  );\r
       if (Status == RETURN_OUT_OF_RESOURCES) {\r
         return Status;\r
       }\r
     }\r
   }\r
+\r
   return RETURN_SUCCESS;\r
 }\r
 \r
@@ -1794,35 +1895,37 @@ MtrrLibApplyVariableMtrrs (
 **/\r
 UINT8\r
 MtrrLibGetCompatibleTypes (\r
-  IN CONST MTRR_MEMORY_RANGE *Ranges,\r
-  IN UINTN                   RangeCount\r
+  IN CONST MTRR_MEMORY_RANGE  *Ranges,\r
+  IN UINTN                    RangeCount\r
   )\r
 {\r
   ASSERT (RangeCount != 0);\r
 \r
   switch (Ranges[0].Type) {\r
-  case CacheWriteBack:\r
-  case CacheWriteThrough:\r
-    return (1 << CacheWriteBack) | (1 << CacheWriteThrough) | (1 << CacheUncacheable);\r
-    break;\r
-\r
-  case CacheWriteCombining:\r
-  case CacheWriteProtected:\r
-    return (1 << Ranges[0].Type) | (1 << CacheUncacheable);\r
-    break;\r
-\r
-  case CacheUncacheable:\r
-    if (RangeCount == 1) {\r
-      return (1 << CacheUncacheable);\r
-    }\r
-    return MtrrLibGetCompatibleTypes (&Ranges[1], RangeCount - 1);\r
-    break;\r
+    case CacheWriteBack:\r
+    case CacheWriteThrough:\r
+      return (1 << CacheWriteBack) | (1 << CacheWriteThrough) | (1 << CacheUncacheable);\r
+      break;\r
+\r
+    case CacheWriteCombining:\r
+    case CacheWriteProtected:\r
+      return (1 << Ranges[0].Type) | (1 << CacheUncacheable);\r
+      break;\r
+\r
+    case CacheUncacheable:\r
+      if (RangeCount == 1) {\r
+        return (1 << CacheUncacheable);\r
+      }\r
 \r
-  case CacheInvalid:\r
-  default:\r
-    ASSERT (FALSE);\r
-    break;\r
+      return MtrrLibGetCompatibleTypes (&Ranges[1], RangeCount - 1);\r
+      break;\r
+\r
+    case CacheInvalid:\r
+    default:\r
+      ASSERT (FALSE);\r
+      break;\r
   }\r
+\r
   return 0;\r
 }\r
 \r
@@ -1839,15 +1942,15 @@ MtrrLibGetCompatibleTypes (
 **/\r
 VOID\r
 MtrrLibMergeVariableMtrr (\r
-  MTRR_MEMORY_RANGE *DstMtrrs,\r
-  UINT32            DstMtrrCount,\r
-  MTRR_MEMORY_RANGE *SrcMtrrs,\r
-  UINT32            SrcMtrrCount,\r
-  BOOLEAN           *Modified\r
+  MTRR_MEMORY_RANGE  *DstMtrrs,\r
+  UINT32             DstMtrrCount,\r
+  MTRR_MEMORY_RANGE  *SrcMtrrs,\r
+  UINT32             SrcMtrrCount,\r
+  BOOLEAN            *Modified\r
   )\r
 {\r
-  UINT32          DstIndex;\r
-  UINT32          SrcIndex;\r
+  UINT32  DstIndex;\r
+  UINT32  SrcIndex;\r
 \r
   ASSERT (SrcMtrrCount <= DstMtrrCount);\r
 \r
@@ -1857,10 +1960,12 @@ MtrrLibMergeVariableMtrr (
     if (DstMtrrs[DstIndex].Length == 0) {\r
       continue;\r
     }\r
+\r
     for (SrcIndex = 0; SrcIndex < SrcMtrrCount; SrcIndex++) {\r
-      if (DstMtrrs[DstIndex].BaseAddress == SrcMtrrs[SrcIndex].BaseAddress &&\r
-        DstMtrrs[DstIndex].Length == SrcMtrrs[SrcIndex].Length &&\r
-        DstMtrrs[DstIndex].Type == SrcMtrrs[SrcIndex].Type) {\r
+      if ((DstMtrrs[DstIndex].BaseAddress == SrcMtrrs[SrcIndex].BaseAddress) &&\r
+          (DstMtrrs[DstIndex].Length == SrcMtrrs[SrcIndex].Length) &&\r
+          (DstMtrrs[DstIndex].Type == SrcMtrrs[SrcIndex].Type))\r
+      {\r
         break;\r
       }\r
     }\r
@@ -1870,7 +1975,7 @@ MtrrLibMergeVariableMtrr (
       // Remove the one from DstMtrrs which is not in SrcMtrrs\r
       //\r
       DstMtrrs[DstIndex].Length = 0;\r
-      Modified[DstIndex] = TRUE;\r
+      Modified[DstIndex]        = TRUE;\r
     } else {\r
       //\r
       // Remove the one from SrcMtrrs which is also in DstMtrrs\r
@@ -1886,7 +1991,6 @@ MtrrLibMergeVariableMtrr (
   DstIndex = 0;\r
   for (SrcIndex = 0; SrcIndex < SrcMtrrCount; SrcIndex++) {\r
     if (SrcMtrrs[SrcIndex].Length != 0) {\r
-\r
       //\r
       // Find the empty slot in DstMtrrs\r
       //\r
@@ -1894,8 +1998,10 @@ MtrrLibMergeVariableMtrr (
         if (DstMtrrs[DstIndex].Length == 0) {\r
           break;\r
         }\r
+\r
         DstIndex++;\r
       }\r
+\r
       ASSERT (DstIndex < DstMtrrCount);\r
       CopyMem (&DstMtrrs[DstIndex], &SrcMtrrs[SrcIndex], sizeof (SrcMtrrs[0]));\r
       Modified[DstIndex] = TRUE;\r
@@ -1924,27 +2030,27 @@ MtrrLibMergeVariableMtrr (
 **/\r
 RETURN_STATUS\r
 MtrrLibSetMemoryRanges (\r
-  IN MTRR_MEMORY_CACHE_TYPE DefaultType,\r
-  IN UINT64                 A0,\r
-  IN MTRR_MEMORY_RANGE      *Ranges,\r
-  IN UINTN                  RangeCount,\r
-  IN VOID                   *Scratch,\r
-  IN OUT UINTN              *ScratchSize,\r
-  OUT MTRR_MEMORY_RANGE     *VariableMtrr,\r
-  IN UINT32                 VariableMtrrCapacity,\r
-  OUT UINT32                *VariableMtrrCount\r
+  IN MTRR_MEMORY_CACHE_TYPE  DefaultType,\r
+  IN UINT64                  A0,\r
+  IN MTRR_MEMORY_RANGE       *Ranges,\r
+  IN UINTN                   RangeCount,\r
+  IN VOID                    *Scratch,\r
+  IN OUT UINTN               *ScratchSize,\r
+  OUT MTRR_MEMORY_RANGE      *VariableMtrr,\r
+  IN UINT32                  VariableMtrrCapacity,\r
+  OUT UINT32                 *VariableMtrrCount\r
   )\r
 {\r
-  RETURN_STATUS             Status;\r
-  UINT32                    Index;\r
-  UINT64                    Base0;\r
-  UINT64                    Base1;\r
-  UINT64                    Alignment;\r
-  UINT8                     CompatibleTypes;\r
-  UINT64                    Length;\r
-  UINT32                    End;\r
-  UINTN                     ActualScratchSize;\r
-  UINTN                     BiggestScratchSize;\r
+  RETURN_STATUS  Status;\r
+  UINT32         Index;\r
+  UINT64         Base0;\r
+  UINT64         Base1;\r
+  UINT64         Alignment;\r
+  UINT8          CompatibleTypes;\r
+  UINT64         Length;\r
+  UINT32         End;\r
+  UINTN          ActualScratchSize;\r
+  UINTN          BiggestScratchSize;\r
 \r
   *VariableMtrrCount = 0;\r
 \r
@@ -1969,21 +2075,26 @@ MtrrLibSetMemoryRanges (
       while (Base0 + Alignment <= Ranges[Index].BaseAddress + Ranges[Index].Length) {\r
         if ((BiggestScratchSize <= *ScratchSize) && (Ranges[Index].Type != DefaultType)) {\r
           Status = MtrrLibAppendVariableMtrr (\r
-            VariableMtrr, VariableMtrrCapacity, VariableMtrrCount,\r
-            Base0, Alignment, Ranges[Index].Type\r
-            );\r
+                     VariableMtrr,\r
+                     VariableMtrrCapacity,\r
+                     VariableMtrrCount,\r
+                     Base0,\r
+                     Alignment,\r
+                     Ranges[Index].Type\r
+                     );\r
           if (RETURN_ERROR (Status)) {\r
             return Status;\r
           }\r
         }\r
-        Base0 += Alignment;\r
+\r
+        Base0    += Alignment;\r
         Alignment = MtrrLibBiggestAlignment (Base0, A0);\r
       }\r
 \r
       //\r
       // Remove the above range from Ranges[Index]\r
       //\r
-      Ranges[Index].Length -= Base0 - Ranges[Index].BaseAddress;\r
+      Ranges[Index].Length     -= Base0 - Ranges[Index].BaseAddress;\r
       Ranges[Index].BaseAddress = Base0;\r
       if (Ranges[Index].Length != 0) {\r
         break;\r
@@ -2010,8 +2121,10 @@ MtrrLibSetMemoryRanges (
       if (((1 << Ranges[End + 1].Type) & CompatibleTypes) == 0) {\r
         break;\r
       }\r
+\r
       End++;\r
     }\r
+\r
     Alignment = MtrrLibBiggestAlignment (Base0, A0);\r
     Length    = GetPowerOfTwo64 (Ranges[End].BaseAddress + Ranges[End].Length - Base0);\r
     Base1     = Base0 + MIN (Alignment, Length);\r
@@ -2024,18 +2137,24 @@ MtrrLibSetMemoryRanges (
       if (Base1 <= Ranges[End + 1].BaseAddress) {\r
         break;\r
       }\r
+\r
       End++;\r
     }\r
 \r
-    Length = Ranges[End].Length;\r
+    Length             = Ranges[End].Length;\r
     Ranges[End].Length = Base1 - Ranges[End].BaseAddress;\r
     ActualScratchSize  = *ScratchSize;\r
-    Status = MtrrLibCalculateMtrrs (\r
-               DefaultType, A0,\r
-               &Ranges[Index], End + 1 - Index,\r
-               Scratch, &ActualScratchSize,\r
-               VariableMtrr, VariableMtrrCapacity, VariableMtrrCount\r
-               );\r
+    Status             = MtrrLibCalculateMtrrs (\r
+                           DefaultType,\r
+                           A0,\r
+                           &Ranges[Index],\r
+                           End + 1 - Index,\r
+                           Scratch,\r
+                           &ActualScratchSize,\r
+                           VariableMtrr,\r
+                           VariableMtrrCapacity,\r
+                           VariableMtrrCount\r
+                           );\r
     if (Status == RETURN_BUFFER_TOO_SMALL) {\r
       BiggestScratchSize = MAX (BiggestScratchSize, ActualScratchSize);\r
       //\r
@@ -2044,14 +2163,15 @@ MtrrLibSetMemoryRanges (
       //\r
       Status = RETURN_SUCCESS;\r
     }\r
+\r
     if (RETURN_ERROR (Status)) {\r
       return Status;\r
     }\r
 \r
     if (Length != Ranges[End].Length) {\r
       Ranges[End].BaseAddress = Base1;\r
-      Ranges[End].Length = Length - Ranges[End].Length;\r
-      Index = End;\r
+      Ranges[End].Length      = Length - Ranges[End].Length;\r
+      Index                   = End;\r
     } else {\r
       Index = End + 1;\r
     }\r
@@ -2061,6 +2181,7 @@ MtrrLibSetMemoryRanges (
     *ScratchSize = BiggestScratchSize;\r
     return RETURN_BUFFER_TOO_SMALL;\r
   }\r
+\r
   return RETURN_SUCCESS;\r
 }\r
 \r
@@ -2080,17 +2201,17 @@ MtrrLibSetMemoryRanges (
 **/\r
 RETURN_STATUS\r
 MtrrLibSetBelow1MBMemoryAttribute (\r
-  IN OUT UINT64                  *ClearMasks,\r
-  IN OUT UINT64                  *OrMasks,\r
-  IN PHYSICAL_ADDRESS            BaseAddress,\r
-  IN UINT64                      Length,\r
-  IN MTRR_MEMORY_CACHE_TYPE      Type\r
+  IN OUT UINT64              *ClearMasks,\r
+  IN OUT UINT64              *OrMasks,\r
+  IN PHYSICAL_ADDRESS        BaseAddress,\r
+  IN UINT64                  Length,\r
+  IN MTRR_MEMORY_CACHE_TYPE  Type\r
   )\r
 {\r
-  RETURN_STATUS             Status;\r
-  UINT32                    MsrIndex;\r
-  UINT64                    ClearMask;\r
-  UINT64                    OrMask;\r
+  RETURN_STATUS  Status;\r
+  UINT32         MsrIndex;\r
+  UINT64         ClearMask;\r
+  UINT64         OrMask;\r
 \r
   ASSERT (BaseAddress < BASE_1MB);\r
 \r
@@ -2100,9 +2221,11 @@ MtrrLibSetBelow1MBMemoryAttribute (
     if (RETURN_ERROR (Status)) {\r
       return Status;\r
     }\r
+\r
     ClearMasks[MsrIndex] = ClearMasks[MsrIndex] | ClearMask;\r
     OrMasks[MsrIndex]    = (OrMasks[MsrIndex] & ~ClearMask) | OrMask;\r
   }\r
+\r
   return RETURN_SUCCESS;\r
 }\r
 \r
@@ -2135,39 +2258,39 @@ MtrrLibSetBelow1MBMemoryAttribute (
 RETURN_STATUS\r
 EFIAPI\r
 MtrrSetMemoryAttributesInMtrrSettings (\r
-  IN OUT MTRR_SETTINGS           *MtrrSetting,\r
-  IN     VOID                    *Scratch,\r
-  IN OUT UINTN                   *ScratchSize,\r
-  IN     CONST MTRR_MEMORY_RANGE *Ranges,\r
-  IN     UINTN                   RangeCount\r
+  IN OUT MTRR_SETTINGS            *MtrrSetting,\r
+  IN     VOID                     *Scratch,\r
+  IN OUT UINTN                    *ScratchSize,\r
+  IN     CONST MTRR_MEMORY_RANGE  *Ranges,\r
+  IN     UINTN                    RangeCount\r
   )\r
 {\r
-  RETURN_STATUS             Status;\r
-  UINT32                    Index;\r
-  UINT64                    BaseAddress;\r
-  UINT64                    Length;\r
-  BOOLEAN                   Above1MbExist;\r
-\r
-  UINT64                    MtrrValidBitsMask;\r
-  UINT64                    MtrrValidAddressMask;\r
-  MTRR_MEMORY_CACHE_TYPE    DefaultType;\r
-  MTRR_VARIABLE_SETTINGS    VariableSettings;\r
-  MTRR_MEMORY_RANGE         WorkingRanges[2 * ARRAY_SIZE (MtrrSetting->Variables.Mtrr) + 2];\r
-  UINTN                     WorkingRangeCount;\r
-  BOOLEAN                   Modified;\r
-  MTRR_VARIABLE_SETTING     VariableSetting;\r
-  UINT32                    OriginalVariableMtrrCount;\r
-  UINT32                    FirmwareVariableMtrrCount;\r
-  UINT32                    WorkingVariableMtrrCount;\r
-  MTRR_MEMORY_RANGE         OriginalVariableMtrr[ARRAY_SIZE (MtrrSetting->Variables.Mtrr)];\r
-  MTRR_MEMORY_RANGE         WorkingVariableMtrr[ARRAY_SIZE (MtrrSetting->Variables.Mtrr)];\r
-  BOOLEAN                   VariableSettingModified[ARRAY_SIZE (MtrrSetting->Variables.Mtrr)];\r
-\r
-  UINT64                    ClearMasks[ARRAY_SIZE (mMtrrLibFixedMtrrTable)];\r
-  UINT64                    OrMasks[ARRAY_SIZE (mMtrrLibFixedMtrrTable)];\r
-\r
-  MTRR_CONTEXT              MtrrContext;\r
-  BOOLEAN                   MtrrContextValid;\r
+  RETURN_STATUS  Status;\r
+  UINT32         Index;\r
+  UINT64         BaseAddress;\r
+  UINT64         Length;\r
+  BOOLEAN        Above1MbExist;\r
+\r
+  UINT64                  MtrrValidBitsMask;\r
+  UINT64                  MtrrValidAddressMask;\r
+  MTRR_MEMORY_CACHE_TYPE  DefaultType;\r
+  MTRR_VARIABLE_SETTINGS  VariableSettings;\r
+  MTRR_MEMORY_RANGE       WorkingRanges[2 * ARRAY_SIZE (MtrrSetting->Variables.Mtrr) + 2];\r
+  UINTN                   WorkingRangeCount;\r
+  BOOLEAN                 Modified;\r
+  MTRR_VARIABLE_SETTING   VariableSetting;\r
+  UINT32                  OriginalVariableMtrrCount;\r
+  UINT32                  FirmwareVariableMtrrCount;\r
+  UINT32                  WorkingVariableMtrrCount;\r
+  MTRR_MEMORY_RANGE       OriginalVariableMtrr[ARRAY_SIZE (MtrrSetting->Variables.Mtrr)];\r
+  MTRR_MEMORY_RANGE       WorkingVariableMtrr[ARRAY_SIZE (MtrrSetting->Variables.Mtrr)];\r
+  BOOLEAN                 VariableSettingModified[ARRAY_SIZE (MtrrSetting->Variables.Mtrr)];\r
+\r
+  UINT64  ClearMasks[ARRAY_SIZE (mMtrrLibFixedMtrrTable)];\r
+  UINT64  OrMasks[ARRAY_SIZE (mMtrrLibFixedMtrrTable)];\r
+\r
+  MTRR_CONTEXT  MtrrContext;\r
+  BOOLEAN       MtrrContextValid;\r
 \r
   Status = RETURN_SUCCESS;\r
   MtrrLibInitializeMtrrMask (&MtrrValidBitsMask, &MtrrValidAddressMask);\r
@@ -2187,16 +2310,23 @@ MtrrSetMemoryAttributesInMtrrSettings (
   // 0. Dump the requests.\r
   //\r
   DEBUG_CODE_BEGIN ();\r
-    DEBUG ((DEBUG_CACHE, "Mtrr: Set Mem Attribute to %a, ScratchSize = %x%a",\r
-            (MtrrSetting == NULL) ? "Hardware" : "Buffer", *ScratchSize,\r
-            (RangeCount <= 1) ? "," : "\n"\r
-            ));\r
-    for (Index = 0; Index < RangeCount; Index++) {\r
-      DEBUG ((DEBUG_CACHE, " %a: [%016lx, %016lx)\n",\r
-              mMtrrMemoryCacheTypeShortName[MIN (Ranges[Index].Type, CacheInvalid)],\r
-              Ranges[Index].BaseAddress, Ranges[Index].BaseAddress + Ranges[Index].Length\r
-              ));\r
-    }\r
+  DEBUG ((\r
+    DEBUG_CACHE,\r
+    "Mtrr: Set Mem Attribute to %a, ScratchSize = %x%a",\r
+    (MtrrSetting == NULL) ? "Hardware" : "Buffer",\r
+    *ScratchSize,\r
+    (RangeCount <= 1) ? "," : "\n"\r
+    ));\r
+  for (Index = 0; Index < RangeCount; Index++) {\r
+    DEBUG ((\r
+      DEBUG_CACHE,\r
+      " %a: [%016lx, %016lx)\n",\r
+      mMtrrMemoryCacheTypeShortName[MIN (Ranges[Index].Type, CacheInvalid)],\r
+      Ranges[Index].BaseAddress,\r
+      Ranges[Index].BaseAddress + Ranges[Index].Length\r
+      ));\r
+  }\r
+\r
   DEBUG_CODE_END ();\r
 \r
   //\r
@@ -2212,10 +2342,12 @@ MtrrSetMemoryAttributesInMtrrSettings (
       Status = RETURN_INVALID_PARAMETER;\r
       goto Exit;\r
     }\r
+\r
     if (((Ranges[Index].BaseAddress & ~MtrrValidAddressMask) != 0) ||\r
         ((((Ranges[Index].BaseAddress + Ranges[Index].Length) & ~MtrrValidAddressMask) != 0) &&\r
-          (Ranges[Index].BaseAddress + Ranges[Index].Length) != MtrrValidBitsMask + 1)\r
-        ) {\r
+         ((Ranges[Index].BaseAddress + Ranges[Index].Length) != MtrrValidBitsMask + 1))\r
+        )\r
+    {\r
       //\r
       // Either the BaseAddress or the Limit doesn't follow the alignment requirement.\r
       // Note: It's still valid if Limit doesn't follow the alignment requirement but equals to MAX Address.\r
@@ -2223,14 +2355,17 @@ MtrrSetMemoryAttributesInMtrrSettings (
       Status = RETURN_UNSUPPORTED;\r
       goto Exit;\r
     }\r
+\r
     if ((Ranges[Index].Type != CacheUncacheable) &&\r
         (Ranges[Index].Type != CacheWriteCombining) &&\r
         (Ranges[Index].Type != CacheWriteThrough) &&\r
         (Ranges[Index].Type != CacheWriteProtected) &&\r
-        (Ranges[Index].Type != CacheWriteBack)) {\r
+        (Ranges[Index].Type != CacheWriteBack))\r
+    {\r
       Status = RETURN_INVALID_PARAMETER;\r
       goto Exit;\r
     }\r
+\r
     if (Ranges[Index].BaseAddress + Ranges[Index].Length > BASE_1MB) {\r
       Above1MbExist = TRUE;\r
     }\r
@@ -2246,19 +2381,26 @@ MtrrSetMemoryAttributesInMtrrSettings (
     OriginalVariableMtrrCount = GetVariableMtrrCountWorker ();\r
     MtrrGetVariableMtrrWorker (MtrrSetting, OriginalVariableMtrrCount, &VariableSettings);\r
     MtrrLibGetRawVariableRanges (\r
-      &VariableSettings, OriginalVariableMtrrCount,\r
-      MtrrValidBitsMask, MtrrValidAddressMask, OriginalVariableMtrr\r
+      &VariableSettings,\r
+      OriginalVariableMtrrCount,\r
+      MtrrValidBitsMask,\r
+      MtrrValidAddressMask,\r
+      OriginalVariableMtrr\r
       );\r
 \r
-    DefaultType = MtrrGetDefaultMemoryTypeWorker (MtrrSetting);\r
-    WorkingRangeCount = 1;\r
+    DefaultType                  = MtrrGetDefaultMemoryTypeWorker (MtrrSetting);\r
+    WorkingRangeCount            = 1;\r
     WorkingRanges[0].BaseAddress = 0;\r
     WorkingRanges[0].Length      = MtrrValidBitsMask + 1;\r
     WorkingRanges[0].Type        = DefaultType;\r
 \r
     Status = MtrrLibApplyVariableMtrrs (\r
-               OriginalVariableMtrr, OriginalVariableMtrrCount,\r
-               WorkingRanges, ARRAY_SIZE (WorkingRanges), &WorkingRangeCount);\r
+               OriginalVariableMtrr,\r
+               OriginalVariableMtrrCount,\r
+               WorkingRanges,\r
+               ARRAY_SIZE (WorkingRanges),\r
+               &WorkingRangeCount\r
+               );\r
     ASSERT_RETURN_ERROR (Status);\r
 \r
     ASSERT (OriginalVariableMtrrCount >= PcdGet32 (PcdCpuNumberOfReservedVariableMtrrs));\r
@@ -2269,8 +2411,12 @@ MtrrSetMemoryAttributesInMtrrSettings (
     // 2.2. Force [0, 1M) to UC, so that it doesn't impact subtraction algorithm.\r
     //\r
     Status = MtrrLibSetMemoryType (\r
-               WorkingRanges, ARRAY_SIZE (WorkingRanges), &WorkingRangeCount,\r
-               0, SIZE_1MB, CacheUncacheable\r
+               WorkingRanges,\r
+               ARRAY_SIZE (WorkingRanges),\r
+               &WorkingRangeCount,\r
+               0,\r
+               SIZE_1MB,\r
+               CacheUncacheable\r
                );\r
     ASSERT (Status != RETURN_OUT_OF_RESOURCES);\r
 \r
@@ -2280,17 +2426,23 @@ MtrrSetMemoryAttributesInMtrrSettings (
     Modified = FALSE;\r
     for (Index = 0; Index < RangeCount; Index++) {\r
       BaseAddress = Ranges[Index].BaseAddress;\r
-      Length = Ranges[Index].Length;\r
+      Length      = Ranges[Index].Length;\r
       if (BaseAddress < BASE_1MB) {\r
         if (Length <= BASE_1MB - BaseAddress) {\r
           continue;\r
         }\r
-        Length -= BASE_1MB - BaseAddress;\r
+\r
+        Length     -= BASE_1MB - BaseAddress;\r
         BaseAddress = BASE_1MB;\r
       }\r
+\r
       Status = MtrrLibSetMemoryType (\r
-                 WorkingRanges, ARRAY_SIZE (WorkingRanges), &WorkingRangeCount,\r
-                 BaseAddress, Length, Ranges[Index].Type\r
+                 WorkingRanges,\r
+                 ARRAY_SIZE (WorkingRanges),\r
+                 &WorkingRangeCount,\r
+                 BaseAddress,\r
+                 Length,\r
+                 Ranges[Index].Type\r
                  );\r
       if (Status == RETURN_ALREADY_STARTED) {\r
         Status = RETURN_SUCCESS;\r
@@ -2308,9 +2460,15 @@ MtrrSetMemoryAttributesInMtrrSettings (
       //      Buffer Too Small may be returned if the scratch buffer size is insufficient.\r
       //\r
       Status = MtrrLibSetMemoryRanges (\r
-                 DefaultType, LShiftU64 (1, (UINTN)HighBitSet64 (MtrrValidBitsMask)), WorkingRanges, WorkingRangeCount,\r
-                 Scratch, ScratchSize,\r
-                 WorkingVariableMtrr, FirmwareVariableMtrrCount + 1, &WorkingVariableMtrrCount\r
+                 DefaultType,\r
+                 LShiftU64 (1, (UINTN)HighBitSet64 (MtrrValidBitsMask)),\r
+                 WorkingRanges,\r
+                 WorkingRangeCount,\r
+                 Scratch,\r
+                 ScratchSize,\r
+                 WorkingVariableMtrr,\r
+                 FirmwareVariableMtrrCount + 1,\r
+                 &WorkingVariableMtrrCount\r
                  );\r
       if (RETURN_ERROR (Status)) {\r
         goto Exit;\r
@@ -2320,11 +2478,12 @@ MtrrSetMemoryAttributesInMtrrSettings (
       // 2.5. Remove the [0, 1MB) MTRR if it still exists (not merged with other range)\r
       //\r
       for (Index = 0; Index < WorkingVariableMtrrCount; Index++) {\r
-        if (WorkingVariableMtrr[Index].BaseAddress == 0 && WorkingVariableMtrr[Index].Length == SIZE_1MB) {\r
+        if ((WorkingVariableMtrr[Index].BaseAddress == 0) && (WorkingVariableMtrr[Index].Length == SIZE_1MB)) {\r
           ASSERT (WorkingVariableMtrr[Index].Type == CacheUncacheable);\r
           WorkingVariableMtrrCount--;\r
           CopyMem (\r
-            &WorkingVariableMtrr[Index], &WorkingVariableMtrr[Index + 1],\r
+            &WorkingVariableMtrr[Index],\r
+            &WorkingVariableMtrr[Index + 1],\r
             (WorkingVariableMtrrCount - Index) * sizeof (WorkingVariableMtrr[0])\r
             );\r
           break;\r
@@ -2341,10 +2500,12 @@ MtrrSetMemoryAttributesInMtrrSettings (
       //      Make sure least modification is made to OriginalVariableMtrr.\r
       //\r
       MtrrLibMergeVariableMtrr (\r
-        OriginalVariableMtrr, OriginalVariableMtrrCount,\r
-        WorkingVariableMtrr, WorkingVariableMtrrCount,\r
+        OriginalVariableMtrr,\r
+        OriginalVariableMtrrCount,\r
+        WorkingVariableMtrr,\r
+        WorkingVariableMtrrCount,\r
         VariableSettingModified\r
-      );\r
+        );\r
     }\r
   }\r
 \r
@@ -2361,8 +2522,11 @@ MtrrSetMemoryAttributesInMtrrSettings (
     }\r
 \r
     Status = MtrrLibSetBelow1MBMemoryAttribute (\r
-               ClearMasks, OrMasks,\r
-               Ranges[Index].BaseAddress, Ranges[Index].Length, Ranges[Index].Type\r
+               ClearMasks,\r
+               OrMasks,\r
+               Ranges[Index].BaseAddress,\r
+               Ranges[Index].Length,\r
+               Ranges[Index].Type\r
                );\r
     if (RETURN_ERROR (Status)) {\r
       goto Exit;\r
@@ -2382,6 +2546,7 @@ MtrrSetMemoryAttributesInMtrrSettings (
           MtrrLibPreMtrrChange (&MtrrContext);\r
           MtrrContextValid = TRUE;\r
         }\r
+\r
         AsmMsrAndThenOr64 (mMtrrLibFixedMtrrTable[Index].Msr, ~ClearMasks[Index], OrMasks[Index]);\r
       }\r
     }\r
@@ -2394,12 +2559,13 @@ MtrrSetMemoryAttributesInMtrrSettings (
     if (VariableSettingModified[Index]) {\r
       if (OriginalVariableMtrr[Index].Length != 0) {\r
         VariableSetting.Base = (OriginalVariableMtrr[Index].BaseAddress & MtrrValidAddressMask)\r
-                             | (UINT8)OriginalVariableMtrr[Index].Type;\r
+                               | (UINT8)OriginalVariableMtrr[Index].Type;\r
         VariableSetting.Mask = ((~(OriginalVariableMtrr[Index].Length - 1)) & MtrrValidAddressMask) | BIT11;\r
       } else {\r
         VariableSetting.Base = 0;\r
         VariableSetting.Mask = 0;\r
       }\r
+\r
       if (MtrrSetting != NULL) {\r
         CopyMem (&MtrrSetting->Variables.Mtrr[Index], &VariableSetting, sizeof (VariableSetting));\r
       } else {\r
@@ -2407,20 +2573,21 @@ MtrrSetMemoryAttributesInMtrrSettings (
           MtrrLibPreMtrrChange (&MtrrContext);\r
           MtrrContextValid = TRUE;\r
         }\r
+\r
         AsmWriteMsr64 (\r
           MSR_IA32_MTRR_PHYSBASE0 + (Index << 1),\r
           VariableSetting.Base\r
-        );\r
+          );\r
         AsmWriteMsr64 (\r
           MSR_IA32_MTRR_PHYSMASK0 + (Index << 1),\r
           VariableSetting.Mask\r
-        );\r
+          );\r
       }\r
     }\r
   }\r
 \r
   if (MtrrSetting != NULL) {\r
-    ((MSR_IA32_MTRR_DEF_TYPE_REGISTER *)&MtrrSetting->MtrrDefType)->Bits.E = 1;\r
+    ((MSR_IA32_MTRR_DEF_TYPE_REGISTER *)&MtrrSetting->MtrrDefType)->Bits.E  = 1;\r
     ((MSR_IA32_MTRR_DEF_TYPE_REGISTER *)&MtrrSetting->MtrrDefType)->Bits.FE = 1;\r
   } else {\r
     if (MtrrContextValid) {\r
@@ -2433,6 +2600,7 @@ Exit:
   if (!RETURN_ERROR (Status)) {\r
     MtrrDebugPrintAllMtrrsWorker (MtrrSetting);\r
   }\r
+\r
   return Status;\r
 }\r
 \r
@@ -2474,14 +2642,14 @@ MtrrSetMemoryAttributeInMtrrSettings (
   IN MTRR_MEMORY_CACHE_TYPE  Attribute\r
   )\r
 {\r
-  UINT8                      Scratch[SCRATCH_BUFFER_SIZE];\r
-  UINTN                      ScratchSize;\r
-  MTRR_MEMORY_RANGE          Range;\r
+  UINT8              Scratch[SCRATCH_BUFFER_SIZE];\r
+  UINTN              ScratchSize;\r
+  MTRR_MEMORY_RANGE  Range;\r
 \r
   Range.BaseAddress = BaseAddress;\r
   Range.Length      = Length;\r
   Range.Type        = Attribute;\r
-  ScratchSize = sizeof (Scratch);\r
+  ScratchSize       = sizeof (Scratch);\r
   return MtrrSetMemoryAttributesInMtrrSettings (MtrrSetting, Scratch, &ScratchSize, &Range, 1);\r
 }\r
 \r
@@ -2537,7 +2705,7 @@ MtrrSetMemoryAttribute (
 **/\r
 VOID\r
 MtrrSetVariableMtrrWorker (\r
-  IN MTRR_VARIABLE_SETTINGS         *VariableSettings\r
+  IN MTRR_VARIABLE_SETTINGS  *VariableSettings\r
   )\r
 {\r
   UINT32  Index;\r
@@ -2566,20 +2734,19 @@ MtrrSetVariableMtrrWorker (
 **/\r
 VOID\r
 MtrrSetFixedMtrrWorker (\r
-  IN MTRR_FIXED_SETTINGS          *FixedSettings\r
+  IN MTRR_FIXED_SETTINGS  *FixedSettings\r
   )\r
 {\r
   UINT32  Index;\r
 \r
   for (Index = 0; Index < MTRR_NUMBER_OF_FIXED_MTRR; Index++) {\r
-     AsmWriteMsr64 (\r
-       mMtrrLibFixedMtrrTable[Index].Msr,\r
-       FixedSettings->Mtrr[Index]\r
-       );\r
+    AsmWriteMsr64 (\r
+      mMtrrLibFixedMtrrTable[Index].Msr,\r
+      FixedSettings->Mtrr[Index]\r
+      );\r
   }\r
 }\r
 \r
-\r
 /**\r
   This function gets the content in all MTRRs (variable and fixed)\r
 \r
@@ -2591,7 +2758,7 @@ MtrrSetFixedMtrrWorker (
 MTRR_SETTINGS *\r
 EFIAPI\r
 MtrrGetAllMtrrs (\r
-  OUT MTRR_SETTINGS                *MtrrSetting\r
+  OUT MTRR_SETTINGS  *MtrrSetting\r
   )\r
 {\r
   if (!IsMtrrSupported ()) {\r
@@ -2620,7 +2787,6 @@ MtrrGetAllMtrrs (
   return MtrrSetting;\r
 }\r
 \r
-\r
 /**\r
   This function sets all MTRRs (variable and fixed)\r
 \r
@@ -2632,7 +2798,7 @@ MtrrGetAllMtrrs (
 MTRR_SETTINGS *\r
 EFIAPI\r
 MtrrSetAllMtrrs (\r
-  IN MTRR_SETTINGS                *MtrrSetting\r
+  IN MTRR_SETTINGS  *MtrrSetting\r
   )\r
 {\r
   MTRR_CONTEXT  MtrrContext;\r
@@ -2663,7 +2829,6 @@ MtrrSetAllMtrrs (
   return MtrrSetting;\r
 }\r
 \r
-\r
 /**\r
   Checks if MTRR is supported.\r
 \r
@@ -2677,8 +2842,8 @@ IsMtrrSupported (
   VOID\r
   )\r
 {\r
-  CPUID_VERSION_INFO_EDX    Edx;\r
-  MSR_IA32_MTRRCAP_REGISTER MtrrCap;\r
+  CPUID_VERSION_INFO_EDX     Edx;\r
+  MSR_IA32_MTRRCAP_REGISTER  MtrrCap;\r
 \r
   //\r
   // Check CPUID(1).EDX[12] for MTRR capability\r
@@ -2697,10 +2862,10 @@ IsMtrrSupported (
   if ((MtrrCap.Bits.VCNT == 0) || (MtrrCap.Bits.FIX == 0)) {\r
     return FALSE;\r
   }\r
+\r
   return TRUE;\r
 }\r
 \r
-\r
 /**\r
   Worker function prints all MTRRs for debugging.\r
 \r
@@ -2712,93 +2877,109 @@ IsMtrrSupported (
 **/\r
 VOID\r
 MtrrDebugPrintAllMtrrsWorker (\r
-  IN MTRR_SETTINGS    *MtrrSetting\r
+  IN MTRR_SETTINGS  *MtrrSetting\r
   )\r
 {\r
   DEBUG_CODE_BEGIN ();\r
-    MTRR_SETTINGS     LocalMtrrs;\r
-    MTRR_SETTINGS     *Mtrrs;\r
-    UINTN             Index;\r
-    UINTN             RangeCount;\r
-    UINT64            MtrrValidBitsMask;\r
-    UINT64            MtrrValidAddressMask;\r
-    UINT32            VariableMtrrCount;\r
-    BOOLEAN           ContainVariableMtrr;\r
-    MTRR_MEMORY_RANGE Ranges[\r
-      ARRAY_SIZE (mMtrrLibFixedMtrrTable) * sizeof (UINT64) + 2 * ARRAY_SIZE (Mtrrs->Variables.Mtrr) + 1\r
-      ];\r
-    MTRR_MEMORY_RANGE RawVariableRanges[ARRAY_SIZE (Mtrrs->Variables.Mtrr)];\r
-\r
-    if (!IsMtrrSupported ()) {\r
-      return;\r
-    }\r
+  MTRR_SETTINGS      LocalMtrrs;\r
+  MTRR_SETTINGS      *Mtrrs;\r
+  UINTN              Index;\r
+  UINTN              RangeCount;\r
+  UINT64             MtrrValidBitsMask;\r
+  UINT64             MtrrValidAddressMask;\r
+  UINT32             VariableMtrrCount;\r
+  BOOLEAN            ContainVariableMtrr;\r
+  MTRR_MEMORY_RANGE  Ranges[\r
+                            ARRAY_SIZE (mMtrrLibFixedMtrrTable) * sizeof (UINT64) + 2 * ARRAY_SIZE (Mtrrs->Variables.Mtrr) + 1\r
+  ];\r
+  MTRR_MEMORY_RANGE  RawVariableRanges[ARRAY_SIZE (Mtrrs->Variables.Mtrr)];\r
 \r
-    VariableMtrrCount = GetVariableMtrrCountWorker ();\r
+  if (!IsMtrrSupported ()) {\r
+    return;\r
+  }\r
 \r
-    if (MtrrSetting != NULL) {\r
-      Mtrrs = MtrrSetting;\r
-    } else {\r
-      MtrrGetAllMtrrs (&LocalMtrrs);\r
-      Mtrrs = &LocalMtrrs;\r
-    }\r
+  VariableMtrrCount = GetVariableMtrrCountWorker ();\r
 \r
-    //\r
-    // Dump RAW MTRR contents\r
-    //\r
-    DEBUG ((DEBUG_CACHE, "MTRR Settings:\n"));\r
-    DEBUG ((DEBUG_CACHE, "=============\n"));\r
-    DEBUG ((DEBUG_CACHE, "MTRR Default Type: %016lx\n", Mtrrs->MtrrDefType));\r
-    for (Index = 0; Index < ARRAY_SIZE (mMtrrLibFixedMtrrTable); Index++) {\r
-      DEBUG ((DEBUG_CACHE, "Fixed MTRR[%02d]   : %016lx\n", Index, Mtrrs->Fixed.Mtrr[Index]));\r
-    }\r
-    ContainVariableMtrr = FALSE;\r
-    for (Index = 0; Index < VariableMtrrCount; Index++) {\r
-      if ((Mtrrs->Variables.Mtrr[Index].Mask & BIT11) == 0) {\r
-        //\r
-        // If mask is not valid, then do not display range\r
-        //\r
-        continue;\r
-      }\r
-      ContainVariableMtrr = TRUE;\r
-      DEBUG ((DEBUG_CACHE, "Variable MTRR[%02d]: Base=%016lx Mask=%016lx\n",\r
-        Index,\r
-        Mtrrs->Variables.Mtrr[Index].Base,\r
-        Mtrrs->Variables.Mtrr[Index].Mask\r
-        ));\r
-    }\r
-    if (!ContainVariableMtrr) {\r
-      DEBUG ((DEBUG_CACHE, "Variable MTRR    : None.\n"));\r
+  if (MtrrSetting != NULL) {\r
+    Mtrrs = MtrrSetting;\r
+  } else {\r
+    MtrrGetAllMtrrs (&LocalMtrrs);\r
+    Mtrrs = &LocalMtrrs;\r
+  }\r
+\r
+  //\r
+  // Dump RAW MTRR contents\r
+  //\r
+  DEBUG ((DEBUG_CACHE, "MTRR Settings:\n"));\r
+  DEBUG ((DEBUG_CACHE, "=============\n"));\r
+  DEBUG ((DEBUG_CACHE, "MTRR Default Type: %016lx\n", Mtrrs->MtrrDefType));\r
+  for (Index = 0; Index < ARRAY_SIZE (mMtrrLibFixedMtrrTable); Index++) {\r
+    DEBUG ((DEBUG_CACHE, "Fixed MTRR[%02d]   : %016lx\n", Index, Mtrrs->Fixed.Mtrr[Index]));\r
+  }\r
+\r
+  ContainVariableMtrr = FALSE;\r
+  for (Index = 0; Index < VariableMtrrCount; Index++) {\r
+    if ((Mtrrs->Variables.Mtrr[Index].Mask & BIT11) == 0) {\r
+      //\r
+      // If mask is not valid, then do not display range\r
+      //\r
+      continue;\r
     }\r
-    DEBUG((DEBUG_CACHE, "\n"));\r
 \r
-    //\r
-    // Dump MTRR setting in ranges\r
-    //\r
-    DEBUG((DEBUG_CACHE, "Memory Ranges:\n"));\r
-    DEBUG((DEBUG_CACHE, "====================================\n"));\r
-    MtrrLibInitializeMtrrMask (&MtrrValidBitsMask, &MtrrValidAddressMask);\r
-    Ranges[0].BaseAddress = 0;\r
-    Ranges[0].Length      = MtrrValidBitsMask + 1;\r
-    Ranges[0].Type        = MtrrGetDefaultMemoryTypeWorker (Mtrrs);\r
-    RangeCount = 1;\r
+    ContainVariableMtrr = TRUE;\r
+    DEBUG ((\r
+      DEBUG_CACHE,\r
+      "Variable MTRR[%02d]: Base=%016lx Mask=%016lx\n",\r
+      Index,\r
+      Mtrrs->Variables.Mtrr[Index].Base,\r
+      Mtrrs->Variables.Mtrr[Index].Mask\r
+      ));\r
+  }\r
 \r
-    MtrrLibGetRawVariableRanges (\r
-      &Mtrrs->Variables, VariableMtrrCount,\r
-      MtrrValidBitsMask, MtrrValidAddressMask, RawVariableRanges\r
-      );\r
-    MtrrLibApplyVariableMtrrs (\r
-      RawVariableRanges, VariableMtrrCount,\r
-      Ranges, ARRAY_SIZE (Ranges), &RangeCount\r
-      );\r
+  if (!ContainVariableMtrr) {\r
+    DEBUG ((DEBUG_CACHE, "Variable MTRR    : None.\n"));\r
+  }\r
 \r
-    MtrrLibApplyFixedMtrrs (&Mtrrs->Fixed, Ranges, ARRAY_SIZE (Ranges), &RangeCount);\r
+  DEBUG ((DEBUG_CACHE, "\n"));\r
+\r
+  //\r
+  // Dump MTRR setting in ranges\r
+  //\r
+  DEBUG ((DEBUG_CACHE, "Memory Ranges:\n"));\r
+  DEBUG ((DEBUG_CACHE, "====================================\n"));\r
+  MtrrLibInitializeMtrrMask (&MtrrValidBitsMask, &MtrrValidAddressMask);\r
+  Ranges[0].BaseAddress = 0;\r
+  Ranges[0].Length      = MtrrValidBitsMask + 1;\r
+  Ranges[0].Type        = MtrrGetDefaultMemoryTypeWorker (Mtrrs);\r
+  RangeCount            = 1;\r
+\r
+  MtrrLibGetRawVariableRanges (\r
+    &Mtrrs->Variables,\r
+    VariableMtrrCount,\r
+    MtrrValidBitsMask,\r
+    MtrrValidAddressMask,\r
+    RawVariableRanges\r
+    );\r
+  MtrrLibApplyVariableMtrrs (\r
+    RawVariableRanges,\r
+    VariableMtrrCount,\r
+    Ranges,\r
+    ARRAY_SIZE (Ranges),\r
+    &RangeCount\r
+    );\r
+\r
+  MtrrLibApplyFixedMtrrs (&Mtrrs->Fixed, Ranges, ARRAY_SIZE (Ranges), &RangeCount);\r
+\r
+  for (Index = 0; Index < RangeCount; Index++) {\r
+    DEBUG ((\r
+      DEBUG_CACHE,\r
+      "%a:%016lx-%016lx\n",\r
+      mMtrrMemoryCacheTypeShortName[Ranges[Index].Type],\r
+      Ranges[Index].BaseAddress,\r
+      Ranges[Index].BaseAddress + Ranges[Index].Length - 1\r
+      ));\r
+  }\r
 \r
-    for (Index = 0; Index < RangeCount; Index++) {\r
-      DEBUG ((DEBUG_CACHE, "%a:%016lx-%016lx\n",\r
-        mMtrrMemoryCacheTypeShortName[Ranges[Index].Type],\r
-        Ranges[Index].BaseAddress, Ranges[Index].BaseAddress + Ranges[Index].Length - 1\r
-        ));\r
-    }\r
   DEBUG_CODE_END ();\r
 }\r
 \r
index e84b9390601d4897eaccc714fa928444392a7bdf..b9a97dee09dbedbc4b8633819972fc71fd87de96 100644 (file)
@@ -8,11 +8,11 @@
 \r
 #include "MtrrLibUnitTest.h"\r
 \r
-STATIC CONST MTRR_LIB_SYSTEM_PARAMETER mDefaultSystemParameter = {\r
+STATIC CONST MTRR_LIB_SYSTEM_PARAMETER  mDefaultSystemParameter = {\r
   42, TRUE, TRUE, CacheUncacheable, 12\r
 };\r
 \r
-STATIC MTRR_LIB_SYSTEM_PARAMETER mSystemParameters[] = {\r
+STATIC MTRR_LIB_SYSTEM_PARAMETER  mSystemParameters[] = {\r
   { 38, TRUE, TRUE, CacheUncacheable,    12 },\r
   { 38, TRUE, TRUE, CacheWriteBack,      12 },\r
   { 38, TRUE, TRUE, CacheWriteThrough,   12 },\r
@@ -32,7 +32,7 @@ STATIC MTRR_LIB_SYSTEM_PARAMETER mSystemParameters[] = {
   { 48, TRUE, TRUE, CacheWriteCombining, 12 },\r
 };\r
 \r
-UINT32                    mFixedMtrrsIndex[] = {\r
+UINT32  mFixedMtrrsIndex[] = {\r
   MSR_IA32_MTRR_FIX64K_00000,\r
   MSR_IA32_MTRR_FIX16K_80000,\r
   MSR_IA32_MTRR_FIX16K_A0000,\r
@@ -54,18 +54,18 @@ STATIC_ASSERT (
 // Context structure to be used for most of the test cases.\r
 //\r
 typedef struct {\r
-  CONST MTRR_LIB_SYSTEM_PARAMETER *SystemParameter;\r
+  CONST MTRR_LIB_SYSTEM_PARAMETER    *SystemParameter;\r
 } MTRR_LIB_TEST_CONTEXT;\r
 \r
 //\r
 // Context structure to be used for GetFirmwareVariableMtrrCount() test.\r
 //\r
 typedef struct {\r
-  UINT32                          NumberOfReservedVariableMtrrs;\r
-  CONST MTRR_LIB_SYSTEM_PARAMETER *SystemParameter;\r
+  UINT32                             NumberOfReservedVariableMtrrs;\r
+  CONST MTRR_LIB_SYSTEM_PARAMETER    *SystemParameter;\r
 } MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT;\r
 \r
-STATIC CHAR8 *mCacheDescription[] = { "UC", "WC", "N/A", "N/A", "WT", "WP", "WB" };\r
+STATIC CHAR8  *mCacheDescription[] = { "UC", "WC", "N/A", "N/A", "WT", "WP", "WB" };\r
 \r
 /**\r
   Compare the actual memory ranges against expected memory ranges and return PASS when they match.\r
@@ -87,6 +87,7 @@ VerifyMemoryRanges (
   )\r
 {\r
   UINTN  Index;\r
+\r
   UT_ASSERT_EQUAL (ExpectedMemoryRangeCount, ActualRangeCount);\r
   for (Index = 0; Index < ExpectedMemoryRangeCount; Index++) {\r
     UT_ASSERT_EQUAL (ExpectedMemoryRanges[Index].BaseAddress, ActualRanges[Index].BaseAddress);\r
@@ -105,11 +106,12 @@ VerifyMemoryRanges (
 **/\r
 VOID\r
 DumpMemoryRanges (\r
-  MTRR_MEMORY_RANGE    *Ranges,\r
-  UINTN                RangeCount\r
+  MTRR_MEMORY_RANGE  *Ranges,\r
+  UINTN              RangeCount\r
   )\r
 {\r
-  UINTN     Index;\r
+  UINTN  Index;\r
+\r
   for (Index = 0; Index < RangeCount; Index++) {\r
     UT_LOG_INFO ("\t{ 0x%016llx, 0x%016llx, %a },\n", Ranges[Index].BaseAddress, Ranges[Index].Length, mCacheDescription[Ranges[Index].Type]);\r
   }\r
@@ -130,17 +132,17 @@ DumpMemoryRanges (
 **/\r
 VOID\r
 GenerateRandomMemoryTypeCombination (\r
-  IN  UINT32 TotalCount,\r
-  OUT UINT32 *UcCount,\r
-  OUT UINT32 *WtCount,\r
-  OUT UINT32 *WbCount,\r
-  OUT UINT32 *WpCount,\r
-  OUT UINT32 *WcCount\r
+  IN  UINT32  TotalCount,\r
+  OUT UINT32  *UcCount,\r
+  OUT UINT32  *WtCount,\r
+  OUT UINT32  *WbCount,\r
+  OUT UINT32  *WpCount,\r
+  OUT UINT32  *WcCount\r
   )\r
 {\r
-  UINTN  Index;\r
-  UINT32 TotalMtrrCount;\r
-  UINT32 *CountPerType[5];\r
+  UINTN   Index;\r
+  UINT32  TotalMtrrCount;\r
+  UINT32  *CountPerType[5];\r
 \r
   CountPerType[0] = UcCount;\r
   CountPerType[1] = WtCount;\r
@@ -183,38 +185,47 @@ UnitTestMtrrSetMemoryAttributesInMtrrSettings (
   IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  CONST MTRR_LIB_SYSTEM_PARAMETER *SystemParameter;\r
-  RETURN_STATUS                   Status;\r
-  UINT32                          UcCount;\r
-  UINT32                          WtCount;\r
-  UINT32                          WbCount;\r
-  UINT32                          WpCount;\r
-  UINT32                          WcCount;\r
-\r
-  UINT32                          MtrrIndex;\r
-  UINT8                           *Scratch;\r
-  UINTN                           ScratchSize;\r
-  MTRR_SETTINGS                   LocalMtrrs;\r
-\r
-  MTRR_MEMORY_RANGE               RawMtrrRange[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
-  MTRR_MEMORY_RANGE               ExpectedMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];\r
-  UINT32                          ExpectedVariableMtrrUsage;\r
-  UINTN                           ExpectedMemoryRangesCount;\r
-\r
-  MTRR_MEMORY_RANGE               ActualMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR   * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];\r
-  UINT32                          ActualVariableMtrrUsage;\r
-  UINTN                           ActualMemoryRangesCount;\r
-\r
-  MTRR_SETTINGS             *Mtrrs[2];\r
-\r
-  SystemParameter = (MTRR_LIB_SYSTEM_PARAMETER *) Context;\r
+  CONST MTRR_LIB_SYSTEM_PARAMETER  *SystemParameter;\r
+  RETURN_STATUS                    Status;\r
+  UINT32                           UcCount;\r
+  UINT32                           WtCount;\r
+  UINT32                           WbCount;\r
+  UINT32                           WpCount;\r
+  UINT32                           WcCount;\r
+\r
+  UINT32         MtrrIndex;\r
+  UINT8          *Scratch;\r
+  UINTN          ScratchSize;\r
+  MTRR_SETTINGS  LocalMtrrs;\r
+\r
+  MTRR_MEMORY_RANGE  RawMtrrRange[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
+  MTRR_MEMORY_RANGE  ExpectedMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];\r
+  UINT32             ExpectedVariableMtrrUsage;\r
+  UINTN              ExpectedMemoryRangesCount;\r
+\r
+  MTRR_MEMORY_RANGE  ActualMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR   * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];\r
+  UINT32             ActualVariableMtrrUsage;\r
+  UINTN              ActualMemoryRangesCount;\r
+\r
+  MTRR_SETTINGS  *Mtrrs[2];\r
+\r
+  SystemParameter = (MTRR_LIB_SYSTEM_PARAMETER *)Context;\r
   GenerateRandomMemoryTypeCombination (\r
     SystemParameter->VariableMtrrCount - PatchPcdGet32 (PcdCpuNumberOfReservedVariableMtrrs),\r
-    &UcCount, &WtCount, &WbCount, &WpCount, &WcCount\r
+    &UcCount,\r
+    &WtCount,\r
+    &WbCount,\r
+    &WpCount,\r
+    &WcCount\r
     );\r
   GenerateValidAndConfigurableMtrrPairs (\r
-    SystemParameter->PhysicalAddressBits, RawMtrrRange,\r
-    UcCount, WtCount, WbCount, WpCount, WcCount\r
+    SystemParameter->PhysicalAddressBits,\r
+    RawMtrrRange,\r
+    UcCount,\r
+    WtCount,\r
+    WbCount,\r
+    WpCount,\r
+    WcCount\r
     );\r
 \r
   ExpectedVariableMtrrUsage = UcCount + WtCount + WbCount + WpCount + WcCount;\r
@@ -222,13 +233,20 @@ UnitTestMtrrSetMemoryAttributesInMtrrSettings (
   GetEffectiveMemoryRanges (\r
     SystemParameter->DefaultCacheType,\r
     SystemParameter->PhysicalAddressBits,\r
-    RawMtrrRange, ExpectedVariableMtrrUsage,\r
-    ExpectedMemoryRanges, &ExpectedMemoryRangesCount\r
+    RawMtrrRange,\r
+    ExpectedVariableMtrrUsage,\r
+    ExpectedMemoryRanges,\r
+    &ExpectedMemoryRangesCount\r
     );\r
 \r
   UT_LOG_INFO (\r
     "Total MTRR [%d]: UC=%d, WT=%d, WB=%d, WP=%d, WC=%d\n",\r
-    ExpectedVariableMtrrUsage, UcCount, WtCount, WbCount, WpCount, WcCount\r
+    ExpectedVariableMtrrUsage,\r
+    UcCount,\r
+    WtCount,\r
+    WbCount,\r
+    WpCount,\r
+    WcCount\r
     );\r
   UT_LOG_INFO ("--- Expected Memory Ranges [%d] ---\n", ExpectedMemoryRangesCount);\r
   DumpMemoryRanges (ExpectedMemoryRanges, ExpectedMemoryRangesCount);\r
@@ -244,21 +262,28 @@ UnitTestMtrrSetMemoryAttributesInMtrrSettings (
 \r
   for (MtrrIndex = 0; MtrrIndex < ARRAY_SIZE (Mtrrs); MtrrIndex++) {\r
     Scratch = calloc (ScratchSize, sizeof (UINT8));\r
-    Status = MtrrSetMemoryAttributesInMtrrSettings (Mtrrs[MtrrIndex], Scratch, &ScratchSize, ExpectedMemoryRanges, ExpectedMemoryRangesCount);\r
+    Status  = MtrrSetMemoryAttributesInMtrrSettings (Mtrrs[MtrrIndex], Scratch, &ScratchSize, ExpectedMemoryRanges, ExpectedMemoryRangesCount);\r
     if (Status == RETURN_BUFFER_TOO_SMALL) {\r
       Scratch = realloc (Scratch, ScratchSize);\r
-      Status = MtrrSetMemoryAttributesInMtrrSettings (Mtrrs[MtrrIndex], Scratch, &ScratchSize, ExpectedMemoryRanges, ExpectedMemoryRangesCount);\r
+      Status  = MtrrSetMemoryAttributesInMtrrSettings (Mtrrs[MtrrIndex], Scratch, &ScratchSize, ExpectedMemoryRanges, ExpectedMemoryRangesCount);\r
     }\r
+\r
     UT_ASSERT_STATUS_EQUAL (Status, RETURN_SUCCESS);\r
 \r
     if (Mtrrs[MtrrIndex] == NULL) {\r
       ZeroMem (&LocalMtrrs, sizeof (LocalMtrrs));\r
       MtrrGetAllMtrrs (&LocalMtrrs);\r
     }\r
+\r
     ActualMemoryRangesCount = ARRAY_SIZE (ActualMemoryRanges);\r
     CollectTestResult (\r
-      SystemParameter->DefaultCacheType, SystemParameter->PhysicalAddressBits, SystemParameter->VariableMtrrCount,\r
-      &LocalMtrrs, ActualMemoryRanges, &ActualMemoryRangesCount, &ActualVariableMtrrUsage\r
+      SystemParameter->DefaultCacheType,\r
+      SystemParameter->PhysicalAddressBits,\r
+      SystemParameter->VariableMtrrCount,\r
+      &LocalMtrrs,\r
+      ActualMemoryRanges,\r
+      &ActualMemoryRangesCount,\r
+      &ActualVariableMtrrUsage\r
       );\r
 \r
     UT_LOG_INFO ("--- Actual Memory Ranges [%d] ---\n", ActualMemoryRangesCount);\r
@@ -284,20 +309,20 @@ UnitTestMtrrSetMemoryAttributesInMtrrSettings (
 UNIT_TEST_STATUS\r
 EFIAPI\r
 UnitTestInvalidMemoryLayouts (\r
-  IN UNIT_TEST_CONTEXT          Context\r
+  IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  CONST MTRR_LIB_SYSTEM_PARAMETER *SystemParameter;\r
-  MTRR_MEMORY_RANGE               Ranges[MTRR_NUMBER_OF_VARIABLE_MTRR * 2 + 1];\r
-  UINTN                           RangeCount;\r
-  UINT64                          MaxAddress;\r
-  UINT32                          Index;\r
-  UINT64                          BaseAddress;\r
-  UINT64                          Length;\r
-  RETURN_STATUS                   Status;\r
-  UINTN                           ScratchSize;\r
-\r
-  SystemParameter = (MTRR_LIB_SYSTEM_PARAMETER *) Context;\r
+  CONST MTRR_LIB_SYSTEM_PARAMETER  *SystemParameter;\r
+  MTRR_MEMORY_RANGE                Ranges[MTRR_NUMBER_OF_VARIABLE_MTRR * 2 + 1];\r
+  UINTN                            RangeCount;\r
+  UINT64                           MaxAddress;\r
+  UINT32                           Index;\r
+  UINT64                           BaseAddress;\r
+  UINT64                           Length;\r
+  RETURN_STATUS                    Status;\r
+  UINTN                            ScratchSize;\r
+\r
+  SystemParameter = (MTRR_LIB_SYSTEM_PARAMETER *)Context;\r
 \r
   RangeCount = Random32 (1, ARRAY_SIZE (Ranges));\r
   MaxAddress = 1ull << SystemParameter->PhysicalAddressBits;\r
@@ -313,13 +338,15 @@ UnitTestInvalidMemoryLayouts (
     Ranges[Index].Type        = GenerateRandomCacheType ();\r
 \r
     Status = MtrrSetMemoryAttribute (\r
-      Ranges[Index].BaseAddress, Ranges[Index].Length, Ranges[Index].Type\r
-      );\r
+               Ranges[Index].BaseAddress,\r
+               Ranges[Index].Length,\r
+               Ranges[Index].Type\r
+               );\r
     UT_ASSERT_TRUE (RETURN_ERROR (Status));\r
   }\r
 \r
   ScratchSize = 0;\r
-  Status = MtrrSetMemoryAttributesInMtrrSettings (NULL, NULL, &ScratchSize, Ranges, RangeCount);\r
+  Status      = MtrrSetMemoryAttributesInMtrrSettings (NULL, NULL, &ScratchSize, Ranges, RangeCount);\r
   UT_ASSERT_TRUE (RETURN_ERROR (Status));\r
 \r
   return UNIT_TEST_PASSED;\r
@@ -344,7 +371,7 @@ UnitTestIsMtrrSupported (
   MTRR_LIB_SYSTEM_PARAMETER  SystemParameter;\r
   MTRR_LIB_TEST_CONTEXT      *LocalContext;\r
 \r
-  LocalContext = (MTRR_LIB_TEST_CONTEXT *) Context;\r
+  LocalContext = (MTRR_LIB_TEST_CONTEXT *)Context;\r
 \r
   CopyMem (&SystemParameter, LocalContext->SystemParameter, sizeof (SystemParameter));\r
   //\r
@@ -357,8 +384,8 @@ UnitTestIsMtrrSupported (
   //\r
   // MTRR capability on in CPUID leaf, but no variable or fixed MTRRs.\r
   //\r
-  SystemParameter.MtrrSupported = TRUE;\r
-  SystemParameter.VariableMtrrCount = 0;\r
+  SystemParameter.MtrrSupported      = TRUE;\r
+  SystemParameter.VariableMtrrCount  = 0;\r
   SystemParameter.FixedMtrrSupported = FALSE;\r
   InitializeMtrrRegs (&SystemParameter);\r
   UT_ASSERT_FALSE (IsMtrrSupported ());\r
@@ -366,8 +393,8 @@ UnitTestIsMtrrSupported (
   //\r
   // MTRR capability on in CPUID leaf, but no variable MTRRs.\r
   //\r
-  SystemParameter.MtrrSupported = TRUE;\r
-  SystemParameter.VariableMtrrCount = 0;\r
+  SystemParameter.MtrrSupported      = TRUE;\r
+  SystemParameter.VariableMtrrCount  = 0;\r
   SystemParameter.FixedMtrrSupported = TRUE;\r
   InitializeMtrrRegs (&SystemParameter);\r
   UT_ASSERT_FALSE (IsMtrrSupported ());\r
@@ -375,8 +402,8 @@ UnitTestIsMtrrSupported (
   //\r
   // MTRR capability on in CPUID leaf, but no fixed MTRRs.\r
   //\r
-  SystemParameter.MtrrSupported = TRUE;\r
-  SystemParameter.VariableMtrrCount = 7;\r
+  SystemParameter.MtrrSupported      = TRUE;\r
+  SystemParameter.VariableMtrrCount  = 7;\r
   SystemParameter.FixedMtrrSupported = FALSE;\r
   InitializeMtrrRegs (&SystemParameter);\r
   UT_ASSERT_FALSE (IsMtrrSupported ());\r
@@ -384,8 +411,8 @@ UnitTestIsMtrrSupported (
   //\r
   // MTRR capability on in CPUID leaf with both variable and fixed MTRRs.\r
   //\r
-  SystemParameter.MtrrSupported = TRUE;\r
-  SystemParameter.VariableMtrrCount = 7;\r
+  SystemParameter.MtrrSupported      = TRUE;\r
+  SystemParameter.VariableMtrrCount  = 7;\r
   SystemParameter.FixedMtrrSupported = TRUE;\r
   InitializeMtrrRegs (&SystemParameter);\r
   UT_ASSERT_TRUE (IsMtrrSupported ());\r
@@ -409,11 +436,11 @@ UnitTestGetVariableMtrrCount (
   IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  UINT32                    Result;\r
-  MTRR_LIB_SYSTEM_PARAMETER SystemParameter;\r
-  MTRR_LIB_TEST_CONTEXT     *LocalContext;\r
+  UINT32                     Result;\r
+  MTRR_LIB_SYSTEM_PARAMETER  SystemParameter;\r
+  MTRR_LIB_TEST_CONTEXT      *LocalContext;\r
 \r
-  LocalContext = (MTRR_LIB_TEST_CONTEXT *) Context;\r
+  LocalContext = (MTRR_LIB_TEST_CONTEXT *)Context;\r
 \r
   CopyMem (&SystemParameter, LocalContext->SystemParameter, sizeof (SystemParameter));\r
   //\r
@@ -445,7 +472,7 @@ UnitTestGetVariableMtrrCount (
   InitializeMtrrRegs (&SystemParameter);\r
   UT_EXPECT_ASSERT_FAILURE (GetVariableMtrrCount (), NULL);\r
 \r
-  SystemParameter.MtrrSupported = TRUE;\r
+  SystemParameter.MtrrSupported     = TRUE;\r
   SystemParameter.VariableMtrrCount = MAX_UINT8;\r
   InitializeMtrrRegs (&SystemParameter);\r
   UT_EXPECT_ASSERT_FAILURE (GetVariableMtrrCount (), NULL);\r
@@ -469,12 +496,12 @@ UnitTestGetFirmwareVariableMtrrCount (
   IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  UINT32                                            Result;\r
-  UINT32                                            ReservedMtrrs;\r
-  MTRR_LIB_SYSTEM_PARAMETER                         SystemParameter;\r
-  MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT *LocalContext;\r
+  UINT32                                             Result;\r
+  UINT32                                             ReservedMtrrs;\r
+  MTRR_LIB_SYSTEM_PARAMETER                          SystemParameter;\r
+  MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT  *LocalContext;\r
 \r
-  LocalContext = (MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT *) Context;\r
+  LocalContext = (MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT *)Context;\r
 \r
   CopyMem (&SystemParameter, LocalContext->SystemParameter, sizeof (SystemParameter));\r
 \r
@@ -516,7 +543,7 @@ UnitTestGetFirmwareVariableMtrrCount (
   //\r
   // Negative test case when Fixed MTRRs are not supported\r
   //\r
-  SystemParameter.MtrrSupported = TRUE;\r
+  SystemParameter.MtrrSupported      = TRUE;\r
   SystemParameter.FixedMtrrSupported = FALSE;\r
   InitializeMtrrRegs (&SystemParameter);\r
   PatchPcdSet32 (PcdCpuNumberOfReservedVariableMtrrs, 2);\r
@@ -527,7 +554,7 @@ UnitTestGetFirmwareVariableMtrrCount (
   // Expect ASSERT() if variable MTRR count is > MTRR_NUMBER_OF_VARIABLE_MTRR\r
   //\r
   SystemParameter.FixedMtrrSupported = TRUE;\r
-  SystemParameter.VariableMtrrCount = MTRR_NUMBER_OF_VARIABLE_MTRR + 1;\r
+  SystemParameter.VariableMtrrCount  = MTRR_NUMBER_OF_VARIABLE_MTRR + 1;\r
   InitializeMtrrRegs (&SystemParameter);\r
   UT_EXPECT_ASSERT_FAILURE (GetFirmwareVariableMtrrCount (), NULL);\r
 \r
@@ -569,17 +596,17 @@ UnitTestMtrrGetFixedMtrr (
   IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  MTRR_FIXED_SETTINGS       *Result;\r
-  MTRR_FIXED_SETTINGS       ExpectedFixedSettings;\r
-  MTRR_FIXED_SETTINGS       FixedSettings;\r
-  UINTN                     Index;\r
-  UINTN                     MsrIndex;\r
-  UINTN                     ByteIndex;\r
-  UINT64                    MsrValue;\r
-  MTRR_LIB_SYSTEM_PARAMETER SystemParameter;\r
-  MTRR_LIB_TEST_CONTEXT     *LocalContext;\r
-\r
-  LocalContext = (MTRR_LIB_TEST_CONTEXT *) Context;\r
+  MTRR_FIXED_SETTINGS        *Result;\r
+  MTRR_FIXED_SETTINGS        ExpectedFixedSettings;\r
+  MTRR_FIXED_SETTINGS        FixedSettings;\r
+  UINTN                      Index;\r
+  UINTN                      MsrIndex;\r
+  UINTN                      ByteIndex;\r
+  UINT64                     MsrValue;\r
+  MTRR_LIB_SYSTEM_PARAMETER  SystemParameter;\r
+  MTRR_LIB_TEST_CONTEXT      *LocalContext;\r
+\r
+  LocalContext = (MTRR_LIB_TEST_CONTEXT *)Context;\r
 \r
   CopyMem (&SystemParameter, LocalContext->SystemParameter, sizeof (SystemParameter));\r
   InitializeMtrrRegs (&SystemParameter);\r
@@ -594,6 +621,7 @@ UnitTestMtrrGetFixedMtrr (
       for (ByteIndex = 0; ByteIndex < sizeof (UINT64); ByteIndex++) {\r
         MsrValue = MsrValue | LShiftU64 (GenerateRandomCacheType (), ByteIndex * 8);\r
       }\r
+\r
       ExpectedFixedSettings.Mtrr[MsrIndex] = MsrValue;\r
       AsmWriteMsr64 (mFixedMtrrsIndex[MsrIndex], MsrValue);\r
     }\r
@@ -631,18 +659,18 @@ UnitTestMtrrGetFixedMtrr (
 UNIT_TEST_STATUS\r
 EFIAPI\r
 UnitTestMtrrGetAllMtrrs (\r
-  IN UNIT_TEST_CONTEXT      Context\r
+  IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  MTRR_SETTINGS             *Result;\r
-  MTRR_SETTINGS             Mtrrs;\r
-  MTRR_SETTINGS             ExpectedMtrrs;\r
-  MTRR_VARIABLE_SETTING     VariableMtrr[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
-  UINT32                    Index;\r
-  MTRR_LIB_SYSTEM_PARAMETER SystemParameter;\r
-  MTRR_LIB_TEST_CONTEXT     *LocalContext;\r
+  MTRR_SETTINGS              *Result;\r
+  MTRR_SETTINGS              Mtrrs;\r
+  MTRR_SETTINGS              ExpectedMtrrs;\r
+  MTRR_VARIABLE_SETTING      VariableMtrr[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
+  UINT32                     Index;\r
+  MTRR_LIB_SYSTEM_PARAMETER  SystemParameter;\r
+  MTRR_LIB_TEST_CONTEXT      *LocalContext;\r
 \r
-  LocalContext = (MTRR_LIB_TEST_CONTEXT *) Context;\r
+  LocalContext = (MTRR_LIB_TEST_CONTEXT *)Context;\r
 \r
   CopyMem (&SystemParameter, LocalContext->SystemParameter, sizeof (SystemParameter));\r
   InitializeMtrrRegs (&SystemParameter);\r
@@ -652,6 +680,7 @@ UnitTestMtrrGetAllMtrrs (
     AsmWriteMsr64 (MSR_IA32_MTRR_PHYSBASE0 + (Index << 1), VariableMtrr[Index].Base);\r
     AsmWriteMsr64 (MSR_IA32_MTRR_PHYSMASK0 + (Index << 1), VariableMtrr[Index].Mask);\r
   }\r
+\r
   Result = MtrrGetAllMtrrs (&Mtrrs);\r
   UT_ASSERT_EQUAL ((UINTN)Result, (UINTN)&Mtrrs);\r
   UT_ASSERT_MEM_EQUAL (Mtrrs.Variables.Mtrr, VariableMtrr, sizeof (MTRR_VARIABLE_SETTING) * SystemParameter.VariableMtrrCount);\r
@@ -671,7 +700,7 @@ UnitTestMtrrGetAllMtrrs (
   //\r
   // Expect ASSERT() if variable MTRR count is > MTRR_NUMBER_OF_VARIABLE_MTRR\r
   //\r
-  SystemParameter.MtrrSupported = TRUE;\r
+  SystemParameter.MtrrSupported     = TRUE;\r
   SystemParameter.VariableMtrrCount = MTRR_NUMBER_OF_VARIABLE_MTRR + 1;\r
   InitializeMtrrRegs (&SystemParameter);\r
   UT_EXPECT_ASSERT_FAILURE (MtrrGetAllMtrrs (&Mtrrs), NULL);\r
@@ -695,21 +724,21 @@ UnitTestMtrrSetAllMtrrs (
   IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  MTRR_SETTINGS                   *Result;\r
-  MTRR_SETTINGS                   Mtrrs;\r
-  UINT32                          Index;\r
-  MSR_IA32_MTRR_DEF_TYPE_REGISTER Default;\r
-  MTRR_LIB_SYSTEM_PARAMETER       SystemParameter;\r
-  MTRR_LIB_TEST_CONTEXT           *LocalContext;\r
+  MTRR_SETTINGS                    *Result;\r
+  MTRR_SETTINGS                    Mtrrs;\r
+  UINT32                           Index;\r
+  MSR_IA32_MTRR_DEF_TYPE_REGISTER  Default;\r
+  MTRR_LIB_SYSTEM_PARAMETER        SystemParameter;\r
+  MTRR_LIB_TEST_CONTEXT            *LocalContext;\r
 \r
-  LocalContext = (MTRR_LIB_TEST_CONTEXT *) Context;\r
+  LocalContext = (MTRR_LIB_TEST_CONTEXT *)Context;\r
 \r
   CopyMem (&SystemParameter, LocalContext->SystemParameter, sizeof (SystemParameter));\r
   InitializeMtrrRegs (&SystemParameter);\r
 \r
-  Default.Uint64 = 0;\r
-  Default.Bits.E = 1;\r
-  Default.Bits.FE = 1;\r
+  Default.Uint64    = 0;\r
+  Default.Bits.E    = 1;\r
+  Default.Bits.FE   = 1;\r
   Default.Bits.Type = GenerateRandomCacheType ();\r
 \r
   ZeroMem (&Mtrrs, sizeof (Mtrrs));\r
@@ -717,6 +746,7 @@ UnitTestMtrrSetAllMtrrs (
   for (Index = 0; Index < SystemParameter.VariableMtrrCount; Index++) {\r
     GenerateRandomMtrrPair (SystemParameter.PhysicalAddressBits, GenerateRandomCacheType (), &Mtrrs.Variables.Mtrr[Index], NULL);\r
   }\r
+\r
   Result = MtrrSetAllMtrrs (&Mtrrs);\r
   UT_ASSERT_EQUAL ((UINTN)Result, (UINTN)&Mtrrs);\r
 \r
@@ -745,18 +775,18 @@ UnitTestMtrrGetMemoryAttributeInVariableMtrr (
   IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  MTRR_LIB_TEST_CONTEXT           *LocalContext;\r
-  MTRR_LIB_SYSTEM_PARAMETER       SystemParameter;\r
-  UINT32                          Result;\r
-  MTRR_VARIABLE_SETTING           VariableSetting[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
-  VARIABLE_MTRR                   VariableMtrr[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
-  UINT64                          ValidMtrrBitsMask;\r
-  UINT64                          ValidMtrrAddressMask;\r
-  UINT32                          Index;\r
-  MSR_IA32_MTRR_PHYSBASE_REGISTER Base;\r
-  MSR_IA32_MTRR_PHYSMASK_REGISTER Mask;\r
-\r
-  LocalContext = (MTRR_LIB_TEST_CONTEXT *) Context;\r
+  MTRR_LIB_TEST_CONTEXT            *LocalContext;\r
+  MTRR_LIB_SYSTEM_PARAMETER        SystemParameter;\r
+  UINT32                           Result;\r
+  MTRR_VARIABLE_SETTING            VariableSetting[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
+  VARIABLE_MTRR                    VariableMtrr[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
+  UINT64                           ValidMtrrBitsMask;\r
+  UINT64                           ValidMtrrAddressMask;\r
+  UINT32                           Index;\r
+  MSR_IA32_MTRR_PHYSBASE_REGISTER  Base;\r
+  MSR_IA32_MTRR_PHYSMASK_REGISTER  Mask;\r
+\r
+  LocalContext = (MTRR_LIB_TEST_CONTEXT *)Context;\r
 \r
   CopyMem (&SystemParameter, LocalContext->SystemParameter, sizeof (SystemParameter));\r
 \r
@@ -770,16 +800,17 @@ UnitTestMtrrGetMemoryAttributeInVariableMtrr (
     AsmWriteMsr64 (MSR_IA32_MTRR_PHYSBASE0 + (Index << 1), VariableSetting[Index].Base);\r
     AsmWriteMsr64 (MSR_IA32_MTRR_PHYSMASK0 + (Index << 1), VariableSetting[Index].Mask);\r
   }\r
+\r
   Result = MtrrGetMemoryAttributeInVariableMtrr (ValidMtrrBitsMask, ValidMtrrAddressMask, VariableMtrr);\r
   UT_ASSERT_EQUAL (Result, SystemParameter.VariableMtrrCount);\r
 \r
   for (Index = 0; Index < SystemParameter.VariableMtrrCount; Index++) {\r
     Base.Uint64    = VariableMtrr[Index].BaseAddress;\r
-    Base.Bits.Type = (UINT32) VariableMtrr[Index].Type;\r
+    Base.Bits.Type = (UINT32)VariableMtrr[Index].Type;\r
     UT_ASSERT_EQUAL (Base.Uint64, VariableSetting[Index].Base);\r
 \r
-    Mask.Uint64    = ~(VariableMtrr[Index].Length - 1) & ValidMtrrBitsMask;\r
-    Mask.Bits.V    = 1;\r
+    Mask.Uint64 = ~(VariableMtrr[Index].Length - 1) & ValidMtrrBitsMask;\r
+    Mask.Bits.V = 1;\r
     UT_ASSERT_EQUAL (Mask.Uint64, VariableSetting[Index].Mask);\r
   }\r
 \r
@@ -794,7 +825,7 @@ UnitTestMtrrGetMemoryAttributeInVariableMtrr (
   //\r
   // Expect ASSERT() if variable MTRR count is > MTRR_NUMBER_OF_VARIABLE_MTRR\r
   //\r
-  SystemParameter.MtrrSupported = TRUE;\r
+  SystemParameter.MtrrSupported     = TRUE;\r
   SystemParameter.VariableMtrrCount = MTRR_NUMBER_OF_VARIABLE_MTRR + 1;\r
   InitializeMtrrRegs (&SystemParameter);\r
   UT_EXPECT_ASSERT_FAILURE (MtrrGetMemoryAttributeInVariableMtrr (ValidMtrrBitsMask, ValidMtrrAddressMask, VariableMtrr), NULL);\r
@@ -837,11 +868,11 @@ UnitTestMtrrGetDefaultMemoryType (
   IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  MTRR_LIB_TEST_CONTEXT     *LocalContext;\r
-  UINTN                     Index;\r
-  MTRR_MEMORY_CACHE_TYPE    Result;\r
-  MTRR_LIB_SYSTEM_PARAMETER SystemParameter;\r
-  MTRR_MEMORY_CACHE_TYPE    CacheType[5];\r
+  MTRR_LIB_TEST_CONTEXT      *LocalContext;\r
+  UINTN                      Index;\r
+  MTRR_MEMORY_CACHE_TYPE     Result;\r
+  MTRR_LIB_SYSTEM_PARAMETER  SystemParameter;\r
+  MTRR_MEMORY_CACHE_TYPE     CacheType[5];\r
 \r
   CacheType[0] = CacheUncacheable;\r
   CacheType[1] = CacheWriteCombining;\r
@@ -849,7 +880,7 @@ UnitTestMtrrGetDefaultMemoryType (
   CacheType[3] = CacheWriteProtected;\r
   CacheType[4] = CacheWriteBack;\r
 \r
-  LocalContext = (MTRR_LIB_TEST_CONTEXT *) Context;\r
+  LocalContext = (MTRR_LIB_TEST_CONTEXT *)Context;\r
 \r
   CopyMem (&SystemParameter, LocalContext->SystemParameter, sizeof (SystemParameter));\r
   //\r
@@ -871,15 +902,15 @@ UnitTestMtrrGetDefaultMemoryType (
   Result = MtrrGetDefaultMemoryType ();\r
   UT_ASSERT_EQUAL (Result, CacheUncacheable);\r
 \r
-  SystemParameter.MtrrSupported = TRUE;\r
+  SystemParameter.MtrrSupported      = TRUE;\r
   SystemParameter.FixedMtrrSupported = FALSE;\r
   InitializeMtrrRegs (&SystemParameter);\r
   Result = MtrrGetDefaultMemoryType ();\r
   UT_ASSERT_EQUAL (Result, CacheUncacheable);\r
 \r
-  SystemParameter.MtrrSupported = TRUE;\r
+  SystemParameter.MtrrSupported      = TRUE;\r
   SystemParameter.FixedMtrrSupported = TRUE;\r
-  SystemParameter.VariableMtrrCount = 0;\r
+  SystemParameter.VariableMtrrCount  = 0;\r
   InitializeMtrrRegs (&SystemParameter);\r
   Result = MtrrGetDefaultMemoryType ();\r
   UT_ASSERT_EQUAL (Result, CacheUncacheable);\r
@@ -903,37 +934,46 @@ UnitTestMtrrSetMemoryAttributeInMtrrSettings (
   IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  CONST MTRR_LIB_SYSTEM_PARAMETER *SystemParameter;\r
-  RETURN_STATUS                   Status;\r
-  UINT32                          UcCount;\r
-  UINT32                          WtCount;\r
-  UINT32                          WbCount;\r
-  UINT32                          WpCount;\r
-  UINT32                          WcCount;\r
-\r
-  UINTN                           MtrrIndex;\r
-  UINTN                           Index;\r
-  MTRR_SETTINGS                   LocalMtrrs;\r
-\r
-  MTRR_MEMORY_RANGE               RawMtrrRange[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
-  MTRR_MEMORY_RANGE               ExpectedMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];\r
-  UINT32                          ExpectedVariableMtrrUsage;\r
-  UINTN                           ExpectedMemoryRangesCount;\r
-\r
-  MTRR_MEMORY_RANGE               ActualMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];\r
-  UINT32                          ActualVariableMtrrUsage;\r
-  UINTN                           ActualMemoryRangesCount;\r
-\r
-  MTRR_SETTINGS                   *Mtrrs[2];\r
-\r
-  SystemParameter = (MTRR_LIB_SYSTEM_PARAMETER *) Context;\r
+  CONST MTRR_LIB_SYSTEM_PARAMETER  *SystemParameter;\r
+  RETURN_STATUS                    Status;\r
+  UINT32                           UcCount;\r
+  UINT32                           WtCount;\r
+  UINT32                           WbCount;\r
+  UINT32                           WpCount;\r
+  UINT32                           WcCount;\r
+\r
+  UINTN          MtrrIndex;\r
+  UINTN          Index;\r
+  MTRR_SETTINGS  LocalMtrrs;\r
+\r
+  MTRR_MEMORY_RANGE  RawMtrrRange[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
+  MTRR_MEMORY_RANGE  ExpectedMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];\r
+  UINT32             ExpectedVariableMtrrUsage;\r
+  UINTN              ExpectedMemoryRangesCount;\r
+\r
+  MTRR_MEMORY_RANGE  ActualMemoryRanges[MTRR_NUMBER_OF_FIXED_MTRR * sizeof (UINT64) + 2 * MTRR_NUMBER_OF_VARIABLE_MTRR + 1];\r
+  UINT32             ActualVariableMtrrUsage;\r
+  UINTN              ActualMemoryRangesCount;\r
+\r
+  MTRR_SETTINGS  *Mtrrs[2];\r
+\r
+  SystemParameter = (MTRR_LIB_SYSTEM_PARAMETER *)Context;\r
   GenerateRandomMemoryTypeCombination (\r
     SystemParameter->VariableMtrrCount - PatchPcdGet32 (PcdCpuNumberOfReservedVariableMtrrs),\r
-    &UcCount, &WtCount, &WbCount, &WpCount, &WcCount\r
+    &UcCount,\r
+    &WtCount,\r
+    &WbCount,\r
+    &WpCount,\r
+    &WcCount\r
     );\r
   GenerateValidAndConfigurableMtrrPairs (\r
-    SystemParameter->PhysicalAddressBits, RawMtrrRange,\r
-    UcCount, WtCount, WbCount, WpCount, WcCount\r
+    SystemParameter->PhysicalAddressBits,\r
+    RawMtrrRange,\r
+    UcCount,\r
+    WtCount,\r
+    WbCount,\r
+    WpCount,\r
+    WcCount\r
     );\r
 \r
   ExpectedVariableMtrrUsage = UcCount + WtCount + WbCount + WpCount + WcCount;\r
@@ -941,8 +981,10 @@ UnitTestMtrrSetMemoryAttributeInMtrrSettings (
   GetEffectiveMemoryRanges (\r
     SystemParameter->DefaultCacheType,\r
     SystemParameter->PhysicalAddressBits,\r
-    RawMtrrRange, ExpectedVariableMtrrUsage,\r
-    ExpectedMemoryRanges, &ExpectedMemoryRangesCount\r
+    RawMtrrRange,\r
+    ExpectedVariableMtrrUsage,\r
+    ExpectedMemoryRanges,\r
+    &ExpectedMemoryRangesCount\r
     );\r
 \r
   UT_LOG_INFO ("--- Expected Memory Ranges [%d] ---\n", ExpectedMemoryRangesCount);\r
@@ -964,7 +1006,7 @@ UnitTestMtrrSetMemoryAttributeInMtrrSettings (
                  ExpectedMemoryRanges[Index].Type\r
                  );\r
       UT_ASSERT_TRUE (Status == RETURN_SUCCESS || Status == RETURN_OUT_OF_RESOURCES || Status == RETURN_BUFFER_TOO_SMALL);\r
-      if (Status == RETURN_OUT_OF_RESOURCES || Status == RETURN_BUFFER_TOO_SMALL) {\r
+      if ((Status == RETURN_OUT_OF_RESOURCES) || (Status == RETURN_BUFFER_TOO_SMALL)) {\r
         return UNIT_TEST_SKIPPED;\r
       }\r
     }\r
@@ -973,10 +1015,16 @@ UnitTestMtrrSetMemoryAttributeInMtrrSettings (
       ZeroMem (&LocalMtrrs, sizeof (LocalMtrrs));\r
       MtrrGetAllMtrrs (&LocalMtrrs);\r
     }\r
+\r
     ActualMemoryRangesCount = ARRAY_SIZE (ActualMemoryRanges);\r
     CollectTestResult (\r
-      SystemParameter->DefaultCacheType, SystemParameter->PhysicalAddressBits, SystemParameter->VariableMtrrCount,\r
-      &LocalMtrrs, ActualMemoryRanges, &ActualMemoryRangesCount, &ActualVariableMtrrUsage\r
+      SystemParameter->DefaultCacheType,\r
+      SystemParameter->PhysicalAddressBits,\r
+      SystemParameter->VariableMtrrCount,\r
+      &LocalMtrrs,\r
+      ActualMemoryRanges,\r
+      &ActualMemoryRangesCount,\r
+      &ActualVariableMtrrUsage\r
       );\r
     UT_LOG_INFO ("--- Actual Memory Ranges [%d] ---\n", ActualMemoryRangesCount);\r
     DumpMemoryRanges (ActualMemoryRanges, ActualMemoryRangesCount);\r
@@ -989,7 +1037,6 @@ UnitTestMtrrSetMemoryAttributeInMtrrSettings (
   return UNIT_TEST_PASSED;\r
 }\r
 \r
-\r
 /**\r
   Prep routine for UnitTestGetFirmwareVariableMtrrCount().\r
 \r
@@ -1003,7 +1050,7 @@ SavePcdValue (
 {\r
   MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT  *LocalContext;\r
 \r
-  LocalContext = (MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT *) Context;\r
+  LocalContext                                = (MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT *)Context;\r
   LocalContext->NumberOfReservedVariableMtrrs = PatchPcdGet32 (PcdCpuNumberOfReservedVariableMtrrs);\r
   return UNIT_TEST_PASSED;\r
 }\r
@@ -1021,7 +1068,7 @@ RestorePcdValue (
 {\r
   MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT  *LocalContext;\r
 \r
-  LocalContext = (MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT *) Context;\r
+  LocalContext = (MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT *)Context;\r
   PatchPcdSet32 (PcdCpuNumberOfReservedVariableMtrrs, LocalContext->NumberOfReservedVariableMtrrs);\r
 }\r
 \r
@@ -1040,20 +1087,20 @@ STATIC
 EFI_STATUS\r
 EFIAPI\r
 UnitTestingEntry (\r
-  UINTN                       Iteration\r
+  UINTN  Iteration\r
   )\r
 {\r
-  EFI_STATUS                                        Status;\r
-  UNIT_TEST_FRAMEWORK_HANDLE                        Framework;\r
-  UNIT_TEST_SUITE_HANDLE                            MtrrApiTests;\r
-  UINTN                                             Index;\r
-  UINTN                                             SystemIndex;\r
-  MTRR_LIB_TEST_CONTEXT                             Context;\r
-  MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT GetFirmwareVariableMtrrCountContext;\r
+  EFI_STATUS                                         Status;\r
+  UNIT_TEST_FRAMEWORK_HANDLE                         Framework;\r
+  UNIT_TEST_SUITE_HANDLE                             MtrrApiTests;\r
+  UINTN                                              Index;\r
+  UINTN                                              SystemIndex;\r
+  MTRR_LIB_TEST_CONTEXT                              Context;\r
+  MTRR_LIB_GET_FIRMWARE_VARIABLE_MTRR_COUNT_CONTEXT  GetFirmwareVariableMtrrCountContext;\r
 \r
   Context.SystemParameter                             = &mDefaultSystemParameter;\r
   GetFirmwareVariableMtrrCountContext.SystemParameter = &mDefaultSystemParameter;\r
-  Framework = NULL;\r
+  Framework                                           = NULL;\r
 \r
   //\r
   // Setup the test framework for running the tests.\r
@@ -1077,24 +1124,26 @@ UnitTestingEntry (
     Status = EFI_OUT_OF_RESOURCES;\r
     goto EXIT;\r
   }\r
-  AddTestCase (MtrrApiTests, "Test IsMtrrSupported",                      "MtrrSupported",                        UnitTestIsMtrrSupported,                      NULL, NULL, &Context);\r
-  AddTestCase (MtrrApiTests, "Test GetVariableMtrrCount",                 "GetVariableMtrrCount",                 UnitTestGetVariableMtrrCount,                 NULL, NULL, &Context);\r
-  AddTestCase (MtrrApiTests, "Test GetFirmwareVariableMtrrCount",         "GetFirmwareVariableMtrrCount",         UnitTestGetFirmwareVariableMtrrCount,         SavePcdValue, RestorePcdValue, &GetFirmwareVariableMtrrCountContext);\r
-  AddTestCase (MtrrApiTests, "Test MtrrGetMemoryAttribute",               "MtrrGetMemoryAttribute",               UnitTestMtrrGetMemoryAttribute,               NULL, NULL, &Context);\r
-  AddTestCase (MtrrApiTests, "Test MtrrGetFixedMtrr",                     "MtrrGetFixedMtrr",                     UnitTestMtrrGetFixedMtrr,                     NULL, NULL, &Context);\r
-  AddTestCase (MtrrApiTests, "Test MtrrGetAllMtrrs",                      "MtrrGetAllMtrrs",                      UnitTestMtrrGetAllMtrrs,                      NULL, NULL, &Context);\r
-  AddTestCase (MtrrApiTests, "Test MtrrSetAllMtrrs",                      "MtrrSetAllMtrrs",                      UnitTestMtrrSetAllMtrrs,                      NULL, NULL, &Context);\r
+\r
+  AddTestCase (MtrrApiTests, "Test IsMtrrSupported", "MtrrSupported", UnitTestIsMtrrSupported, NULL, NULL, &Context);\r
+  AddTestCase (MtrrApiTests, "Test GetVariableMtrrCount", "GetVariableMtrrCount", UnitTestGetVariableMtrrCount, NULL, NULL, &Context);\r
+  AddTestCase (MtrrApiTests, "Test GetFirmwareVariableMtrrCount", "GetFirmwareVariableMtrrCount", UnitTestGetFirmwareVariableMtrrCount, SavePcdValue, RestorePcdValue, &GetFirmwareVariableMtrrCountContext);\r
+  AddTestCase (MtrrApiTests, "Test MtrrGetMemoryAttribute", "MtrrGetMemoryAttribute", UnitTestMtrrGetMemoryAttribute, NULL, NULL, &Context);\r
+  AddTestCase (MtrrApiTests, "Test MtrrGetFixedMtrr", "MtrrGetFixedMtrr", UnitTestMtrrGetFixedMtrr, NULL, NULL, &Context);\r
+  AddTestCase (MtrrApiTests, "Test MtrrGetAllMtrrs", "MtrrGetAllMtrrs", UnitTestMtrrGetAllMtrrs, NULL, NULL, &Context);\r
+  AddTestCase (MtrrApiTests, "Test MtrrSetAllMtrrs", "MtrrSetAllMtrrs", UnitTestMtrrSetAllMtrrs, NULL, NULL, &Context);\r
   AddTestCase (MtrrApiTests, "Test MtrrGetMemoryAttributeInVariableMtrr", "MtrrGetMemoryAttributeInVariableMtrr", UnitTestMtrrGetMemoryAttributeInVariableMtrr, NULL, NULL, &Context);\r
-  AddTestCase (MtrrApiTests, "Test MtrrDebugPrintAllMtrrs",               "MtrrDebugPrintAllMtrrs",               UnitTestMtrrDebugPrintAllMtrrs,               NULL, NULL, &Context);\r
-  AddTestCase (MtrrApiTests, "Test MtrrGetDefaultMemoryType",             "MtrrGetDefaultMemoryType",             UnitTestMtrrGetDefaultMemoryType,             NULL, NULL, &Context);\r
+  AddTestCase (MtrrApiTests, "Test MtrrDebugPrintAllMtrrs", "MtrrDebugPrintAllMtrrs", UnitTestMtrrDebugPrintAllMtrrs, NULL, NULL, &Context);\r
+  AddTestCase (MtrrApiTests, "Test MtrrGetDefaultMemoryType", "MtrrGetDefaultMemoryType", UnitTestMtrrGetDefaultMemoryType, NULL, NULL, &Context);\r
 \r
   for (SystemIndex = 0; SystemIndex < ARRAY_SIZE (mSystemParameters); SystemIndex++) {\r
     for (Index = 0; Index < Iteration; Index++) {\r
-      AddTestCase (MtrrApiTests, "Test InvalidMemoryLayouts",                  "InvalidMemoryLayouts",                  UnitTestInvalidMemoryLayouts,                  InitializeSystem, NULL, &mSystemParameters[SystemIndex]);\r
-      AddTestCase (MtrrApiTests, "Test MtrrSetMemoryAttributeInMtrrSettings",  "MtrrSetMemoryAttributeInMtrrSettings",  UnitTestMtrrSetMemoryAttributeInMtrrSettings,  InitializeSystem, NULL, &mSystemParameters[SystemIndex]);\r
+      AddTestCase (MtrrApiTests, "Test InvalidMemoryLayouts", "InvalidMemoryLayouts", UnitTestInvalidMemoryLayouts, InitializeSystem, NULL, &mSystemParameters[SystemIndex]);\r
+      AddTestCase (MtrrApiTests, "Test MtrrSetMemoryAttributeInMtrrSettings", "MtrrSetMemoryAttributeInMtrrSettings", UnitTestMtrrSetMemoryAttributeInMtrrSettings, InitializeSystem, NULL, &mSystemParameters[SystemIndex]);\r
       AddTestCase (MtrrApiTests, "Test MtrrSetMemoryAttributesInMtrrSettings", "MtrrSetMemoryAttributesInMtrrSettings", UnitTestMtrrSetMemoryAttributesInMtrrSettings, InitializeSystem, NULL, &mSystemParameters[SystemIndex]);\r
     }\r
   }\r
+\r
   //\r
   // Execute the tests.\r
   //\r
@@ -1118,14 +1167,14 @@ EXIT:
 **/\r
 INT32\r
 main (\r
-  INT32 Argc,\r
-  CHAR8 *Argv[]\r
+  INT32  Argc,\r
+  CHAR8  *Argv[]\r
   )\r
 {\r
-  UINTN    Count;\r
+  UINTN  Count;\r
 \r
   DEBUG ((DEBUG_INFO, "%a v%a\n", UNIT_TEST_APP_NAME, UNIT_TEST_APP_VERSION));\r
-  srand ((unsigned int) time (NULL));\r
+  srand ((unsigned int)time (NULL));\r
 \r
   //\r
   // MtrrLibUnitTest generate-random-numbers <path to MtrrLib/UnitTest/RandomNumber.c> <random-number count>\r
index 071c858a4cc166ff92f24aeb50726fe62e240925..57e656c5550e48ab355cc013c6f189e70a6b5b08 100644 (file)
 #include <Register/Cpuid.h>\r
 #include <Register/Msr.h>\r
 \r
-#define UNIT_TEST_APP_NAME        "MtrrLib Unit Tests"\r
-#define UNIT_TEST_APP_VERSION     "1.0"\r
+#define UNIT_TEST_APP_NAME     "MtrrLib Unit Tests"\r
+#define UNIT_TEST_APP_VERSION  "1.0"\r
 \r
-#define SCRATCH_BUFFER_SIZE       SIZE_16KB\r
+#define SCRATCH_BUFFER_SIZE  SIZE_16KB\r
 \r
 typedef struct {\r
-  UINT8                  PhysicalAddressBits;\r
-  BOOLEAN                MtrrSupported;\r
-  BOOLEAN                FixedMtrrSupported;\r
-  MTRR_MEMORY_CACHE_TYPE DefaultCacheType;\r
-  UINT32                 VariableMtrrCount;\r
+  UINT8                     PhysicalAddressBits;\r
+  BOOLEAN                   MtrrSupported;\r
+  BOOLEAN                   FixedMtrrSupported;\r
+  MTRR_MEMORY_CACHE_TYPE    DefaultCacheType;\r
+  UINT32                    VariableMtrrCount;\r
 } MTRR_LIB_SYSTEM_PARAMETER;\r
 \r
-extern UINT32                           mFixedMtrrsIndex[];\r
-extern BOOLEAN                          mRandomInput;\r
+extern UINT32   mFixedMtrrsIndex[];\r
+extern BOOLEAN  mRandomInput;\r
 \r
 /**\r
   Initialize the MTRR registers.\r
@@ -64,7 +64,7 @@ InitializeMtrrRegs (
 UNIT_TEST_STATUS\r
 EFIAPI\r
 InitializeSystem (\r
-  IN UNIT_TEST_CONTEXT        Context\r
+  IN UNIT_TEST_CONTEXT  Context\r
   );\r
 \r
 /**\r
@@ -88,13 +88,13 @@ GenerateRandomCacheType (
 **/\r
 VOID\r
 GenerateValidAndConfigurableMtrrPairs (\r
-  IN     UINT32                    PhysicalAddressBits,\r
-  IN OUT MTRR_MEMORY_RANGE         *RawMemoryRanges,\r
-  IN     UINT32                    UcCount,\r
-  IN     UINT32                    WtCount,\r
-  IN     UINT32                    WbCount,\r
-  IN     UINT32                    WpCount,\r
-  IN     UINT32                    WcCount\r
+  IN     UINT32             PhysicalAddressBits,\r
+  IN OUT MTRR_MEMORY_RANGE  *RawMemoryRanges,\r
+  IN     UINT32             UcCount,\r
+  IN     UINT32             WtCount,\r
+  IN     UINT32             WbCount,\r
+  IN     UINT32             WpCount,\r
+  IN     UINT32             WcCount\r
   );\r
 \r
 /**\r
@@ -109,12 +109,12 @@ GenerateValidAndConfigurableMtrrPairs (
 **/\r
 VOID\r
 GetEffectiveMemoryRanges (\r
-  IN MTRR_MEMORY_CACHE_TYPE DefaultType,\r
-  IN UINT32                 PhysicalAddressBits,\r
-  IN MTRR_MEMORY_RANGE      *RawMemoryRanges,\r
-  IN UINT32                 RawMemoryRangeCount,\r
-  OUT MTRR_MEMORY_RANGE     *MemoryRanges,\r
-  OUT UINTN                 *MemoryRangeCount\r
+  IN MTRR_MEMORY_CACHE_TYPE  DefaultType,\r
+  IN UINT32                  PhysicalAddressBits,\r
+  IN MTRR_MEMORY_RANGE       *RawMemoryRanges,\r
+  IN UINT32                  RawMemoryRangeCount,\r
+  OUT MTRR_MEMORY_RANGE      *MemoryRanges,\r
+  OUT UINTN                  *MemoryRangeCount\r
   );\r
 \r
 /**\r
@@ -127,10 +127,10 @@ GetEffectiveMemoryRanges (
 **/\r
 VOID\r
 GenerateRandomMtrrPair (\r
-  IN  UINT32                 PhysicalAddressBits,\r
-  IN  MTRR_MEMORY_CACHE_TYPE CacheType,\r
-  OUT MTRR_VARIABLE_SETTING  *MtrrPair        OPTIONAL,\r
-  OUT MTRR_MEMORY_RANGE      *MtrrMemoryRange OPTIONAL\r
+  IN  UINT32                  PhysicalAddressBits,\r
+  IN  MTRR_MEMORY_CACHE_TYPE  CacheType,\r
+  OUT MTRR_VARIABLE_SETTING   *MtrrPair        OPTIONAL,\r
+  OUT MTRR_MEMORY_RANGE       *MtrrMemoryRange OPTIONAL\r
   );\r
 \r
 /**\r
@@ -146,13 +146,13 @@ GenerateRandomMtrrPair (
 **/\r
 VOID\r
 CollectTestResult (\r
-  IN     MTRR_MEMORY_CACHE_TYPE DefaultType,\r
-  IN     UINT32                 PhysicalAddressBits,\r
-  IN     UINT32                 VariableMtrrCount,\r
-  IN     MTRR_SETTINGS          *Mtrrs,\r
-  OUT    MTRR_MEMORY_RANGE      *Ranges,\r
-  IN OUT UINTN                  *RangeCount,\r
-  OUT    UINT32                 *MtrrCount\r
+  IN     MTRR_MEMORY_CACHE_TYPE  DefaultType,\r
+  IN     UINT32                  PhysicalAddressBits,\r
+  IN     UINT32                  VariableMtrrCount,\r
+  IN     MTRR_SETTINGS           *Mtrrs,\r
+  OUT    MTRR_MEMORY_RANGE       *Ranges,\r
+  IN OUT UINTN                   *RangeCount,\r
+  OUT    UINT32                  *MtrrCount\r
   );\r
 \r
 /**\r
@@ -189,7 +189,8 @@ Random32 (
 **/\r
 VOID\r
 GenerateRandomNumbers (\r
-  CHAR8         *FilePath,\r
-  UINTN         Count\r
+  CHAR8  *FilePath,\r
+  UINTN  Count\r
   );\r
+\r
 #endif\r
index 06104d892801957288252a4dc016e794efa32567..7190decc98cce93df5424f317ddc789d737aae8b 100644 (file)
   Copyright (c) 2020, Intel Corporation. All rights reserved.<BR>\r
   SPDX-License-Identifier: BSD-2-Clause-Patent\r
 **/\r
-UINTN mNumberCount = 50000;\r
-UINTN mNumbers[] = {\r
-  7791, 9427, 6867, 23807, 10984, 16661, 1863, 16690, 14810, 14550,\r
-  11382, 15755, 19806, 32737, 209, 14661, 4112, 13680, 2425, 15502,\r
-  25268, 2882, 29953, 12346, 27936, 8942, 21365, 17849, 13910, 21879,\r
-  3995, 6982, 2032, 6432, 3448, 28770, 8385, 31106, 4630, 32385,\r
-  31417, 21979, 22661, 18947, 10249, 22953, 30752, 32613, 2952, 25464,\r
-  17, 12473, 28757, 19960, 27672, 1875, 17598, 20306, 22152, 15814,\r
-  31841, 25276, 2962, 30223, 23953, 28748, 25029, 16399, 15868, 9993,\r
-  31702, 25663, 29322, 15688, 22429, 18079, 30344, 2870, 20065, 30191,\r
-  3589, 13233, 27221, 15138, 26492, 20316, 13666, 15632, 180, 19954,\r
-  25895, 3179, 21221, 474, 2111, 11252, 2588, 2556, 6338, 26862,\r
-  19424, 3540, 6158, 6099, 20758, 32708, 6087, 2375, 22306, 22959,\r
-  21532, 19274, 11343, 1987, 17228, 2737, 23409, 30102, 15977, 10455,\r
+UINTN  mNumberCount = 50000;\r
+UINTN  mNumbers[]   = {\r
+  7791,  9427,  6867,  23807, 10984, 16661, 1863,  16690, 14810, 14550,\r
+  11382, 15755, 19806, 32737, 209,   14661, 4112,  13680, 2425,  15502,\r
+  25268, 2882,  29953, 12346, 27936, 8942,  21365, 17849, 13910, 21879,\r
+  3995,  6982,  2032,  6432,  3448,  28770, 8385,  31106, 4630,  32385,\r
+  31417, 21979, 22661, 18947, 10249, 22953, 30752, 32613, 2952,  25464,\r
+  17,    12473, 28757, 19960, 27672, 1875,  17598, 20306, 22152, 15814,\r
+  31841, 25276, 2962,  30223, 23953, 28748, 25029, 16399, 15868, 9993,\r
+  31702, 25663, 29322, 15688, 22429, 18079, 30344, 2870,  20065, 30191,\r
+  3589,  13233, 27221, 15138, 26492, 20316, 13666, 15632, 180,   19954,\r
+  25895, 3179,  21221, 474,   2111,  11252, 2588,  2556,  6338,  26862,\r
+  19424, 3540,  6158,  6099,  20758, 32708, 6087,  2375,  22306, 22959,\r
+  21532, 19274, 11343, 1987,  17228, 2737,  23409, 30102, 15977, 10455,\r
   15049, 29045, 10077, 22928, 25128, 23033, 12330, 23902, 19543, 18906,\r
-  10102, 11240, 10167, 13832, 28230, 8871, 6693, 12792, 31498, 3043,\r
-  31776, 20028, 3546, 4574, 20270, 17751, 31231, 29263, 29563, 27343,\r
-  10421, 1553, 24772, 4228, 14639, 28957, 26227, 22079, 25052, 3766,\r
-  14092, 6030, 30441, 28131, 17095, 27600, 14855, 29218, 9599, 27788,\r
+  10102, 11240, 10167, 13832, 28230, 8871,  6693,  12792, 31498, 3043,\r
+  31776, 20028, 3546,  4574,  20270, 17751, 31231, 29263, 29563, 27343,\r
+  10421, 1553,  24772, 4228,  14639, 28957, 26227, 22079, 25052, 3766,\r
+  14092, 6030,  30441, 28131, 17095, 27600, 14855, 29218, 9599,  27788,\r
   22382, 27739, 11210, 13831, 13345, 16403, 13162, 22037, 29044, 26850,\r
-  27364, 7471, 18892, 29735, 13422, 1478, 10919, 17146, 12302, 9687,\r
-  12252, 10338, 12545, 24256, 25635, 14280, 8794, 16210, 27351, 22444,\r
-  7915, 19495, 30459, 27799, 16488, 8757, 13180, 12369, 27082, 10148,\r
-  181, 2387, 4338, 16093, 11064, 30335, 19343, 12260, 32716, 25359,\r
-  9025, 15335, 24754, 30412, 29951, 3863, 16429, 13952, 24502, 1206,\r
-  9281, 2221, 1586, 29041, 6074, 29311, 10306, 26609, 11376, 8448,\r
-  22295, 11181, 29386, 4747, 18670, 17922, 2689, 29827, 4079, 29061,\r
-  12454, 2372, 14420, 20376, 28391, 10842, 4557, 7227, 20494, 15090,\r
-  10275, 21541, 15818, 7821, 12060, 276, 27570, 2044, 26016, 8289,\r
-  29575, 13448, 13337, 22487, 1721, 26481, 2592, 27845, 22829, 14746,\r
-  16213, 12626, 10558, 4482, 31630, 23569, 2306, 22390, 27189, 32213,\r
-  19662, 14853, 15595, 2503, 17148, 5813, 16753, 9141, 6379, 23284,\r
-  3785, 10413, 4424, 29009, 3480, 9675, 28556, 3820, 24527, 12623,\r
-  15558, 29995, 27530, 23026, 18843, 31663, 3385, 8315, 4491, 30343,\r
+  27364, 7471,  18892, 29735, 13422, 1478,  10919, 17146, 12302, 9687,\r
+  12252, 10338, 12545, 24256, 25635, 14280, 8794,  16210, 27351, 22444,\r
+  7915,  19495, 30459, 27799, 16488, 8757,  13180, 12369, 27082, 10148,\r
+  181,   2387,  4338,  16093, 11064, 30335, 19343, 12260, 32716, 25359,\r
+  9025,  15335, 24754, 30412, 29951, 3863,  16429, 13952, 24502, 1206,\r
+  9281,  2221,  1586,  29041, 6074,  29311, 10306, 26609, 11376, 8448,\r
+  22295, 11181, 29386, 4747,  18670, 17922, 2689,  29827, 4079,  29061,\r
+  12454, 2372,  14420, 20376, 28391, 10842, 4557,  7227,  20494, 15090,\r
+  10275, 21541, 15818, 7821,  12060, 276,   27570, 2044,  26016, 8289,\r
+  29575, 13448, 13337, 22487, 1721,  26481, 2592,  27845, 22829, 14746,\r
+  16213, 12626, 10558, 4482,  31630, 23569, 2306,  22390, 27189, 32213,\r
+  19662, 14853, 15595, 2503,  17148, 5813,  16753, 9141,  6379,  23284,\r
+  3785,  10413, 4424,  29009, 3480,  9675,  28556, 3820,  24527, 12623,\r
+  15558, 29995, 27530, 23026, 18843, 31663, 3385,  8315,  4491,  30343,\r
   13565, 12173, 25462, 19619, 29525, 17859, 29534, 21131, 14585, 1535,\r
-  14702, 15697, 19974, 8702, 16955, 16835, 17500, 4912, 21579, 13286,\r
-  26948, 21959, 3796, 15008, 31319, 23054, 26053, 27573, 8603, 8189,\r
-  7946, 25589, 31982, 12554, 13580, 12211, 13480, 27713, 17016, 6008,\r
-  25980, 22679, 23362, 9465, 24991, 29052, 30441, 29767, 3372, 8623,\r
-  20476, 9542, 22984, 24662, 23773, 352, 9602, 9294, 17861, 10618,\r
-  252, 8640, 31752, 24615, 8400, 1525, 22171, 17436, 32301, 9579,\r
-  22483, 3813, 27329, 20520, 111, 11222, 7132, 16462, 21465, 15171,\r
-  28882, 22256, 29097, 22004, 30881, 6948, 26731, 9427, 31443, 12121,\r
-  9634, 8424, 1958, 12523, 9997, 3975, 21355, 13813, 20776, 3784,\r
-  24876, 23911, 3830, 17976, 16529, 9560, 7934, 4046, 25348, 31645,\r
-  12691, 11553, 19476, 15514, 15449, 23767, 8471, 5208, 9989, 25697,\r
-  23572, 30168, 13668, 25062, 9696, 7335, 21151, 31356, 7046, 19635,\r
-  8637, 14494, 748, 17501, 30569, 11995, 12980, 5327, 8438, 13003,\r
-  12641, 21648, 7328, 17479, 20411, 24661, 10005, 29913, 17012, 7707,\r
-  16948, 25458, 32523, 30322, 6420, 8283, 24561, 30748, 25928, 3438,\r
-  21483, 22998, 14689, 3718, 7351, 20086, 21685, 7732, 24818, 24374,\r
-  25695, 6836, 5433, 16464, 21895, 24351, 143, 21451, 7396, 31969,\r
-  24574, 20116, 6014, 10606, 28033, 13264, 26809, 13361, 20002, 6769,\r
-  31119, 6341, 11104, 28935, 32029, 360, 31699, 13273, 7777, 19885,\r
+  14702, 15697, 19974, 8702,  16955, 16835, 17500, 4912,  21579, 13286,\r
+  26948, 21959, 3796,  15008, 31319, 23054, 26053, 27573, 8603,  8189,\r
+  7946,  25589, 31982, 12554, 13580, 12211, 13480, 27713, 17016, 6008,\r
+  25980, 22679, 23362, 9465,  24991, 29052, 30441, 29767, 3372,  8623,\r
+  20476, 9542,  22984, 24662, 23773, 352,   9602,  9294,  17861, 10618,\r
+  252,   8640,  31752, 24615, 8400,  1525,  22171, 17436, 32301, 9579,\r
+  22483, 3813,  27329, 20520, 111,   11222, 7132,  16462, 21465, 15171,\r
+  28882, 22256, 29097, 22004, 30881, 6948,  26731, 9427,  31443, 12121,\r
+  9634,  8424,  1958,  12523, 9997,  3975,  21355, 13813, 20776, 3784,\r
+  24876, 23911, 3830,  17976, 16529, 9560,  7934,  4046,  25348, 31645,\r
+  12691, 11553, 19476, 15514, 15449, 23767, 8471,  5208,  9989,  25697,\r
+  23572, 30168, 13668, 25062, 9696,  7335,  21151, 31356, 7046,  19635,\r
+  8637,  14494, 748,   17501, 30569, 11995, 12980, 5327,  8438,  13003,\r
+  12641, 21648, 7328,  17479, 20411, 24661, 10005, 29913, 17012, 7707,\r
+  16948, 25458, 32523, 30322, 6420,  8283,  24561, 30748, 25928, 3438,\r
+  21483, 22998, 14689, 3718,  7351,  20086, 21685, 7732,  24818, 24374,\r
+  25695, 6836,  5433,  16464, 21895, 24351, 143,   21451, 7396,  31969,\r
+  24574, 20116, 6014,  10606, 28033, 13264, 26809, 13361, 20002, 6769,\r
+  31119, 6341,  11104, 28935, 32029, 360,   31699, 13273, 7777,  19885,\r
   16147, 18741, 15170, 29041, 12501, 30724, 20688, 16399, 14167, 11425,\r
-  31950, 30680, 4351, 32748, 14446, 8637, 1343, 13466, 12379, 6479,\r
-  7355, 7887, 24060, 20714, 9390, 10734, 17912, 9772, 393, 28848,\r
-  32757, 23212, 5342, 7027, 27558, 1257, 14973, 30933, 14084, 3457,\r
-  8413, 1154, 6619, 3236, 189, 20554, 27273, 7111, 30730, 887,\r
-  28674, 28573, 3076, 25693, 5400, 20035, 5789, 8242, 24826, 13755,\r
-  8993, 17696, 22778, 18075, 32284, 8857, 12179, 18182, 31865, 1003,\r
-  25770, 20956, 15847, 30996, 15124, 1582, 28289, 8663, 10073, 19189,\r
-  19373, 12047, 7095, 31491, 28740, 3652, 21866, 3385, 11252, 29564,\r
-  3883, 3323, 27107, 13651, 15607, 30433, 27285, 12110, 13585, 19887,\r
-  21776, 7789, 27210, 31624, 25406, 11263, 7040, 21342, 11666, 6842,\r
-  7269, 18093, 23022, 18955, 7041, 9065, 12741, 939, 2427, 28213,\r
-  25469, 18291, 1428, 11477, 29463, 2417, 29556, 13542, 7697, 5691,\r
-  7721, 21196, 13963, 4483, 3181, 23789, 14762, 17132, 27175, 1821,\r
-  9530, 9500, 11061, 2648, 20631, 27411, 19305, 29879, 19661, 28603,\r
-  20433, 13725, 4094, 17344, 27964, 14897, 28676, 19873, 30713, 11794,\r
-  12376, 12296, 226, 13382, 10034, 27223, 17306, 11379, 15858, 26499,\r
+  31950, 30680, 4351,  32748, 14446, 8637,  1343,  13466, 12379, 6479,\r
+  7355,  7887,  24060, 20714, 9390,  10734, 17912, 9772,  393,   28848,\r
+  32757, 23212, 5342,  7027,  27558, 1257,  14973, 30933, 14084, 3457,\r
+  8413,  1154,  6619,  3236,  189,   20554, 27273, 7111,  30730, 887,\r
+  28674, 28573, 3076,  25693, 5400,  20035, 5789,  8242,  24826, 13755,\r
+  8993,  17696, 22778, 18075, 32284, 8857,  12179, 18182, 31865, 1003,\r
+  25770, 20956, 15847, 30996, 15124, 1582,  28289, 8663,  10073, 19189,\r
+  19373, 12047, 7095,  31491, 28740, 3652,  21866, 3385,  11252, 29564,\r
+  3883,  3323,  27107, 13651, 15607, 30433, 27285, 12110, 13585, 19887,\r
+  21776, 7789,  27210, 31624, 25406, 11263, 7040,  21342, 11666, 6842,\r
+  7269,  18093, 23022, 18955, 7041,  9065,  12741, 939,   2427,  28213,\r
+  25469, 18291, 1428,  11477, 29463, 2417,  29556, 13542, 7697,  5691,\r
+  7721,  21196, 13963, 4483,  3181,  23789, 14762, 17132, 27175, 1821,\r
+  9530,  9500,  11061, 2648,  20631, 27411, 19305, 29879, 19661, 28603,\r
+  20433, 13725, 4094,  17344, 27964, 14897, 28676, 19873, 30713, 11794,\r
+  12376, 12296, 226,   13382, 10034, 27223, 17306, 11379, 15858, 26499,\r
   18962, 22609, 20671, 28453, 26962, 30047, 12654, 11470, 31606, 7893,\r
-  20901, 16795, 31478, 3034, 22592, 5130, 25387, 32248, 9715, 21004,\r
-  31247, 29645, 3377, 22876, 26437, 29699, 16717, 31246, 15449, 1154,\r
-  16608, 18283, 21064, 8675, 16234, 27388, 8259, 19240, 21052, 11749,\r
-  28592, 30123, 25749, 11381, 4466, 32085, 14091, 26618, 30826, 25872,\r
+  20901, 16795, 31478, 3034,  22592, 5130,  25387, 32248, 9715,  21004,\r
+  31247, 29645, 3377,  22876, 26437, 29699, 16717, 31246, 15449, 1154,\r
+  16608, 18283, 21064, 8675,  16234, 27388, 8259,  19240, 21052, 11749,\r
+  28592, 30123, 25749, 11381, 4466,  32085, 14091, 26618, 30826, 25872,\r
   28204, 10970, 23869, 31615, 29798, 29407, 20312, 14316, 13092, 21971,\r
-  22322, 25474, 26426, 5197, 3537, 25276, 5251, 20170, 19856, 13085,\r
-  23752, 4351, 24607, 28962, 15844, 10094, 19915, 31349, 31526, 29496,\r
-  12800, 99, 13815, 12338, 14604, 7824, 31165, 24890, 11045, 18921,\r
-  16127, 22220, 10414, 11227, 10697, 976, 31670, 15810, 1874, 5302,\r
-  8898, 14501, 20188, 31941, 30924, 11552, 10716, 28080, 7819, 22433,\r
-  18267, 28011, 2293, 1240, 32412, 32316, 22787, 6760, 1279, 3349,\r
-  24756, 6115, 15141, 6689, 31060, 9205, 21845, 20381, 3838, 31199,\r
-  25374, 31465, 1376, 19239, 31294, 7135, 22974, 27022, 2243, 32355,\r
-  9785, 19779, 4720, 4667, 27218, 19286, 23906, 29986, 15530, 4207,\r
-  20980, 25367, 18955, 13248, 4575, 251, 17836, 30264, 2726, 13659,\r
-  11953, 506, 1841, 907, 3826, 15885, 1207, 7412, 5885, 2645,\r
-  20194, 7342, 15198, 30658, 10030, 8530, 14110, 20679, 31635, 14601,\r
-  6025, 1550, 28771, 21481, 13620, 21354, 16757, 12418, 15935, 12557,\r
-  16003, 30387, 13784, 25851, 26321, 29891, 3328, 18622, 26639, 12972,\r
-  14482, 5979, 1153, 20410, 26753, 22406, 9309, 24149, 17505, 13842,\r
-  5749, 12827, 20777, 25771, 17429, 21555, 25655, 20679, 23599, 4573,\r
-  18324, 18138, 14773, 22861, 29562, 21961, 2375, 22713, 275, 1698,\r
-  29198, 5041, 14980, 15498, 17896, 25263, 27690, 20727, 31941, 4335,\r
-  23331, 16415, 32593, 3200, 1297, 31152, 1235, 23708, 3354, 10689,\r
-  2132, 21045, 31284, 3592, 6405, 9936, 10911, 11086, 2523, 32150,\r
-  8370, 30497, 17532, 31400, 3291, 18889, 17246, 25780, 14562, 11389,\r
-  30509, 1222, 14445, 22486, 7022, 14432, 713, 30339, 15971, 27084,\r
-  23015, 63, 46, 25265, 8869, 16640, 19768, 11493, 4687, 24689,\r
-  6100, 30082, 21862, 32163, 21792, 9788, 5024, 13055, 16684, 10481,\r
-  29999, 5760, 11871, 2434, 3398, 2591, 25622, 27106, 19930, 28814,\r
-  20621, 31852, 26790, 6696, 4611, 30842, 16753, 32297, 6937, 15667,\r
-  21907, 5146, 30332, 5796, 15542, 24976, 28099, 22803, 9946, 4118,\r
-  6043, 18063, 31644, 8040, 4385, 29388, 32439, 2018, 26255, 6446,\r
-  7627, 24887, 28443, 6436, 19293, 24934, 8220, 3255, 2847, 18410,\r
-  7023, 11619, 4978, 2353, 32025, 31525, 10282, 20048, 11309, 22997,\r
-  4753, 7413, 13041, 6326, 23214, 15261, 25148, 6220, 9671, 9735,\r
-  17442, 621, 24100, 9704, 8659, 18587, 2070, 25568, 8385, 23697,\r
-  26680, 1197, 15105, 22300, 24309, 9887, 5876, 300, 7498, 21323,\r
-  550, 29483, 5837, 14724, 4982, 16013, 21743, 17287, 14456, 21929,\r
-  3966, 23926, 12823, 9671, 11886, 8, 17535, 6010, 6360, 21374,\r
-  7738, 26928, 30019, 32473, 15000, 6151, 16163, 30538, 17237, 19170,\r
-  21919, 25578, 13686, 29629, 26519, 27051, 19828, 6973, 24806, 29582,\r
-  32412, 2699, 15588, 19223, 31158, 18275, 25135, 5375, 1765, 5736,\r
-  27564, 1576, 14030, 30651, 712, 25814, 12028, 20939, 12036, 10779,\r
-  5507, 15983, 16048, 22419, 24548, 11826, 11510, 21842, 2353, 21997,\r
-  10523, 27675, 29554, 6812, 8962, 12242, 30790, 28522, 242, 28212,\r
-  27854, 23054, 25240, 30150, 7366, 4442, 5456, 18699, 245, 27153,\r
-  7584, 4602, 13512, 1530, 31237, 27055, 28474, 31026, 755, 18529,\r
-  758, 22982, 3095, 12692, 10688, 28033, 10975, 28816, 7953, 27139,\r
-  17980, 30993, 19969, 31507, 21415, 16448, 5738, 823, 25954, 8674,\r
-  27979, 19073, 28160, 9680, 23658, 4011, 23847, 14759, 9534, 12135,\r
-  31125, 12992, 2827, 22000, 7265, 11363, 2127, 28389, 12675, 5687,\r
-  29533, 18263, 8599, 1789, 22088, 5665, 2270, 10110, 32258, 24183,\r
-  24454, 18882, 1221, 24770, 30507, 131, 23474, 3499, 29085, 19169,\r
-  6073, 12150, 5348, 10328, 1464, 15762, 8321, 10478, 18919, 3694,\r
-  2039, 19889, 3699, 23438, 13962, 19808, 1385, 19421, 16455, 4457,\r
-  16854, 30789, 9284, 32531, 11309, 7805, 1065, 24829, 5608, 30242,\r
-  29935, 1223, 12402, 23562, 19688, 24847, 27461, 18389, 4864, 22431,\r
-  32079, 16324, 29506, 26596, 7579, 16079, 23710, 26019, 12077, 16625,\r
-  11241, 2023, 25646, 27079, 2085, 25662, 7241, 31065, 21507, 10788,\r
-  596, 824, 22694, 12992, 11571, 7113, 3498, 14542, 18425, 28640,\r
-  8805, 19677, 1361, 31376, 11372, 22970, 25117, 19778, 8025, 19756,\r
-  31580, 7685, 29132, 14561, 31569, 4133, 5040, 32681, 25058, 27391,\r
-  6592, 25314, 11326, 13075, 16969, 1075, 8130, 22875, 14129, 12158,\r
-  15390, 29916, 12600, 271, 6323, 14970, 24702, 15386, 12608, 10000,\r
-  15942, 25956, 26046, 4032, 11257, 30272, 12680, 3208, 878, 15293,\r
-  23999, 28950, 31848, 13854, 13037, 18398, 2912, 3210, 28136, 873,\r
-  7557, 26885, 31738, 23024, 22018, 20639, 16958, 32553, 12415, 19435,\r
+  22322, 25474, 26426, 5197,  3537,  25276, 5251,  20170, 19856, 13085,\r
+  23752, 4351,  24607, 28962, 15844, 10094, 19915, 31349, 31526, 29496,\r
+  12800, 99,    13815, 12338, 14604, 7824,  31165, 24890, 11045, 18921,\r
+  16127, 22220, 10414, 11227, 10697, 976,   31670, 15810, 1874,  5302,\r
+  8898,  14501, 20188, 31941, 30924, 11552, 10716, 28080, 7819,  22433,\r
+  18267, 28011, 2293,  1240,  32412, 32316, 22787, 6760,  1279,  3349,\r
+  24756, 6115,  15141, 6689,  31060, 9205,  21845, 20381, 3838,  31199,\r
+  25374, 31465, 1376,  19239, 31294, 7135,  22974, 27022, 2243,  32355,\r
+  9785,  19779, 4720,  4667,  27218, 19286, 23906, 29986, 15530, 4207,\r
+  20980, 25367, 18955, 13248, 4575,  251,   17836, 30264, 2726,  13659,\r
+  11953, 506,   1841,  907,   3826,  15885, 1207,  7412,  5885,  2645,\r
+  20194, 7342,  15198, 30658, 10030, 8530,  14110, 20679, 31635, 14601,\r
+  6025,  1550,  28771, 21481, 13620, 21354, 16757, 12418, 15935, 12557,\r
+  16003, 30387, 13784, 25851, 26321, 29891, 3328,  18622, 26639, 12972,\r
+  14482, 5979,  1153,  20410, 26753, 22406, 9309,  24149, 17505, 13842,\r
+  5749,  12827, 20777, 25771, 17429, 21555, 25655, 20679, 23599, 4573,\r
+  18324, 18138, 14773, 22861, 29562, 21961, 2375,  22713, 275,   1698,\r
+  29198, 5041,  14980, 15498, 17896, 25263, 27690, 20727, 31941, 4335,\r
+  23331, 16415, 32593, 3200,  1297,  31152, 1235,  23708, 3354,  10689,\r
+  2132,  21045, 31284, 3592,  6405,  9936,  10911, 11086, 2523,  32150,\r
+  8370,  30497, 17532, 31400, 3291,  18889, 17246, 25780, 14562, 11389,\r
+  30509, 1222,  14445, 22486, 7022,  14432, 713,   30339, 15971, 27084,\r
+  23015, 63,    46,    25265, 8869,  16640, 19768, 11493, 4687,  24689,\r
+  6100,  30082, 21862, 32163, 21792, 9788,  5024,  13055, 16684, 10481,\r
+  29999, 5760,  11871, 2434,  3398,  2591,  25622, 27106, 19930, 28814,\r
+  20621, 31852, 26790, 6696,  4611,  30842, 16753, 32297, 6937,  15667,\r
+  21907, 5146,  30332, 5796,  15542, 24976, 28099, 22803, 9946,  4118,\r
+  6043,  18063, 31644, 8040,  4385,  29388, 32439, 2018,  26255, 6446,\r
+  7627,  24887, 28443, 6436,  19293, 24934, 8220,  3255,  2847,  18410,\r
+  7023,  11619, 4978,  2353,  32025, 31525, 10282, 20048, 11309, 22997,\r
+  4753,  7413,  13041, 6326,  23214, 15261, 25148, 6220,  9671,  9735,\r
+  17442, 621,   24100, 9704,  8659,  18587, 2070,  25568, 8385,  23697,\r
+  26680, 1197,  15105, 22300, 24309, 9887,  5876,  300,   7498,  21323,\r
+  550,   29483, 5837,  14724, 4982,  16013, 21743, 17287, 14456, 21929,\r
+  3966,  23926, 12823, 9671,  11886, 8,     17535, 6010,  6360,  21374,\r
+  7738,  26928, 30019, 32473, 15000, 6151,  16163, 30538, 17237, 19170,\r
+  21919, 25578, 13686, 29629, 26519, 27051, 19828, 6973,  24806, 29582,\r
+  32412, 2699,  15588, 19223, 31158, 18275, 25135, 5375,  1765,  5736,\r
+  27564, 1576,  14030, 30651, 712,   25814, 12028, 20939, 12036, 10779,\r
+  5507,  15983, 16048, 22419, 24548, 11826, 11510, 21842, 2353,  21997,\r
+  10523, 27675, 29554, 6812,  8962,  12242, 30790, 28522, 242,   28212,\r
+  27854, 23054, 25240, 30150, 7366,  4442,  5456,  18699, 245,   27153,\r
+  7584,  4602,  13512, 1530,  31237, 27055, 28474, 31026, 755,   18529,\r
+  758,   22982, 3095,  12692, 10688, 28033, 10975, 28816, 7953,  27139,\r
+  17980, 30993, 19969, 31507, 21415, 16448, 5738,  823,   25954, 8674,\r
+  27979, 19073, 28160, 9680,  23658, 4011,  23847, 14759, 9534,  12135,\r
+  31125, 12992, 2827,  22000, 7265,  11363, 2127,  28389, 12675, 5687,\r
+  29533, 18263, 8599,  1789,  22088, 5665,  2270,  10110, 32258, 24183,\r
+  24454, 18882, 1221,  24770, 30507, 131,   23474, 3499,  29085, 19169,\r
+  6073,  12150, 5348,  10328, 1464,  15762, 8321,  10478, 18919, 3694,\r
+  2039,  19889, 3699,  23438, 13962, 19808, 1385,  19421, 16455, 4457,\r
+  16854, 30789, 9284,  32531, 11309, 7805,  1065,  24829, 5608,  30242,\r
+  29935, 1223,  12402, 23562, 19688, 24847, 27461, 18389, 4864,  22431,\r
+  32079, 16324, 29506, 26596, 7579,  16079, 23710, 26019, 12077, 16625,\r
+  11241, 2023,  25646, 27079, 2085,  25662, 7241,  31065, 21507, 10788,\r
+  596,   824,   22694, 12992, 11571, 7113,  3498,  14542, 18425, 28640,\r
+  8805,  19677, 1361,  31376, 11372, 22970, 25117, 19778, 8025,  19756,\r
+  31580, 7685,  29132, 14561, 31569, 4133,  5040,  32681, 25058, 27391,\r
+  6592,  25314, 11326, 13075, 16969, 1075,  8130,  22875, 14129, 12158,\r
+  15390, 29916, 12600, 271,   6323,  14970, 24702, 15386, 12608, 10000,\r
+  15942, 25956, 26046, 4032,  11257, 30272, 12680, 3208,  878,   15293,\r
+  23999, 28950, 31848, 13854, 13037, 18398, 2912,  3210,  28136, 873,\r
+  7557,  26885, 31738, 23024, 22018, 20639, 16958, 32553, 12415, 19435,\r
   29773, 12385, 11498, 29619, 15898, 18123, 26743, 13802, 17691, 17432,\r
-  18405, 26338, 17578, 3399, 5892, 29376, 18858, 18367, 16756, 17196,\r
-  20845, 3227, 2223, 11597, 20437, 26181, 23369, 31732, 24762, 19526,\r
-  12663, 27159, 10380, 4444, 4815, 8578, 10298, 30669, 10574, 4553,\r
-  2130, 24572, 1439, 13185, 8041, 17722, 30874, 2991, 14269, 31966,\r
-  9740, 897, 22553, 27544, 13494, 26684, 5113, 9474, 16280, 10102,\r
-  9967, 10616, 27759, 7045, 24389, 13866, 19324, 31799, 7140, 23407,\r
-  25735, 18372, 24948, 19805, 5412, 14336, 19141, 8854, 9269, 6101,\r
-  22638, 30052, 11952, 3313, 25524, 6921, 20898, 10684, 14509, 25936,\r
-  13684, 23437, 7077, 8808, 24173, 2333, 15808, 20210, 26233, 30012,\r
-  25825, 11865, 1065, 14786, 19147, 15714, 762, 28361, 30598, 13060,\r
-  4314, 21017, 6917, 889, 1256, 740, 10757, 6549, 892, 9652,\r
-  16952, 14935, 9063, 1185, 6563, 18110, 30844, 32711, 32068, 20445,\r
-  10063, 25079, 8953, 12594, 26172, 28077, 21149, 9524, 4011, 13890,\r
-  10868, 2091, 10643, 6499, 713, 15684, 1597, 27842, 13525, 27109,\r
-  25163, 13323, 18659, 31550, 9208, 29466, 20402, 10785, 8097, 28779,\r
-  27419, 28947, 1413, 31698, 18931, 10403, 23753, 3436, 6963, 15866,\r
-  12223, 20693, 15446, 14260, 19815, 28827, 9987, 31982, 17462, 13811,\r
-  25068, 4768, 31255, 20651, 30966, 17198, 1456, 23392, 16538, 25657,\r
-  11494, 28657, 26763, 11963, 11427, 24627, 8601, 23891, 11734, 26343,\r
-  23253, 1245, 3004, 25833, 23030, 23366, 20319, 32426, 13051, 24734,\r
-  1116, 11743, 25362, 7791, 19176, 7035, 4793, 29006, 19221, 21979,\r
-  17187, 4271, 27986, 14145, 27357, 18686, 31793, 4228, 17841, 7147,\r
-  4974, 27654, 23499, 15109, 44, 31973, 1050, 4234, 30337, 3702,\r
-  26105, 19069, 16437, 2031, 15887, 7162, 18631, 22627, 27251, 10439,\r
-  10929, 24308, 532, 20267, 8685, 9028, 31577, 17411, 1976, 29228,\r
-  9732, 13586, 15254, 12977, 31836, 26009, 7574, 1843, 3979, 31015,\r
-  32215, 3816, 4933, 24755, 9547, 23433, 19626, 7656, 23483, 28491,\r
-  26734, 20672, 3852, 22289, 31799, 17236, 32704, 13536, 14150, 26611,\r
-  5824, 20115, 1626, 32113, 18520, 29904, 11985, 19905, 10371, 22074,\r
-  9489, 15046, 5225, 4840, 8742, 3431, 5414, 9239, 15532, 15074,\r
-  24525, 27675, 2288, 5218, 5804, 668, 1106, 5331, 12242, 4350,\r
-  20462, 16629, 9423, 21281, 32379, 19887, 20411, 4171, 31090, 167,\r
-  6522, 8290, 16755, 32527, 23869, 20831, 3558, 32450, 9548, 16639,\r
-  4062, 3471, 9476, 32443, 23618, 25300, 5147, 2555, 16686, 28495,\r
-  20268, 135, 2711, 7986, 24943, 4414, 31278, 629, 23495, 1802,\r
-  30343, 20336, 7427, 19, 13691, 29609, 28509, 9523, 26059, 9963,\r
-  8007, 30123, 7173, 13464, 28520, 31508, 1708, 28479, 3553, 31128,\r
-  11667, 625, 28372, 28769, 16522, 5841, 12327, 32338, 14652, 31851,\r
-  27269, 32501, 21592, 20295, 5030, 29621, 9711, 19005, 21969, 3406,\r
-  19742, 15370, 159, 27009, 2796, 21156, 30465, 22796, 16501, 12491,\r
-  16004, 16857, 6217, 481, 5076, 29046, 24335, 32763, 10367, 29637,\r
-  20334, 8248, 28156, 16885, 21805, 22866, 4588, 23984, 2968, 14450,\r
-  3999, 11414, 31526, 14409, 31450, 10219, 23130, 3676, 26584, 13452,\r
-  21991, 25247, 5262, 14120, 9239, 9542, 14132, 14508, 26477, 30424,\r
-  5632, 12031, 9354, 22149, 19509, 15856, 20301, 2745, 24668, 1133,\r
-  13118, 30705, 4049, 18933, 15149, 22990, 29570, 8271, 23574, 4711,\r
-  25076, 19837, 10056, 996, 12935, 4588, 18374, 10313, 17914, 7917,\r
-  28398, 23439, 30769, 20841, 29784, 3065, 24374, 1231, 11521, 17573,\r
-  31615, 4690, 15785, 18018, 15727, 20562, 27769, 8897, 1054, 9751,\r
-  13801, 3439, 31069, 1989, 10465, 22465, 28405, 28300, 19998, 19089,\r
-  8496, 8480, 7896, 21065, 667, 24681, 20130, 12605, 29961, 19579,\r
-  27793, 11326, 5083, 5576, 8096, 25963, 29567, 20116, 595, 22859,\r
+  18405, 26338, 17578, 3399,  5892,  29376, 18858, 18367, 16756, 17196,\r
+  20845, 3227,  2223,  11597, 20437, 26181, 23369, 31732, 24762, 19526,\r
+  12663, 27159, 10380, 4444,  4815,  8578,  10298, 30669, 10574, 4553,\r
+  2130,  24572, 1439,  13185, 8041,  17722, 30874, 2991,  14269, 31966,\r
+  9740,  897,   22553, 27544, 13494, 26684, 5113,  9474,  16280, 10102,\r
+  9967,  10616, 27759, 7045,  24389, 13866, 19324, 31799, 7140,  23407,\r
+  25735, 18372, 24948, 19805, 5412,  14336, 19141, 8854,  9269,  6101,\r
+  22638, 30052, 11952, 3313,  25524, 6921,  20898, 10684, 14509, 25936,\r
+  13684, 23437, 7077,  8808,  24173, 2333,  15808, 20210, 26233, 30012,\r
+  25825, 11865, 1065,  14786, 19147, 15714, 762,   28361, 30598, 13060,\r
+  4314,  21017, 6917,  889,   1256,  740,   10757, 6549,  892,   9652,\r
+  16952, 14935, 9063,  1185,  6563,  18110, 30844, 32711, 32068, 20445,\r
+  10063, 25079, 8953,  12594, 26172, 28077, 21149, 9524,  4011,  13890,\r
+  10868, 2091,  10643, 6499,  713,   15684, 1597,  27842, 13525, 27109,\r
+  25163, 13323, 18659, 31550, 9208,  29466, 20402, 10785, 8097,  28779,\r
+  27419, 28947, 1413,  31698, 18931, 10403, 23753, 3436,  6963,  15866,\r
+  12223, 20693, 15446, 14260, 19815, 28827, 9987,  31982, 17462, 13811,\r
+  25068, 4768,  31255, 20651, 30966, 17198, 1456,  23392, 16538, 25657,\r
+  11494, 28657, 26763, 11963, 11427, 24627, 8601,  23891, 11734, 26343,\r
+  23253, 1245,  3004,  25833, 23030, 23366, 20319, 32426, 13051, 24734,\r
+  1116,  11743, 25362, 7791,  19176, 7035,  4793,  29006, 19221, 21979,\r
+  17187, 4271,  27986, 14145, 27357, 18686, 31793, 4228,  17841, 7147,\r
+  4974,  27654, 23499, 15109, 44,    31973, 1050,  4234,  30337, 3702,\r
+  26105, 19069, 16437, 2031,  15887, 7162,  18631, 22627, 27251, 10439,\r
+  10929, 24308, 532,   20267, 8685,  9028,  31577, 17411, 1976,  29228,\r
+  9732,  13586, 15254, 12977, 31836, 26009, 7574,  1843,  3979,  31015,\r
+  32215, 3816,  4933,  24755, 9547,  23433, 19626, 7656,  23483, 28491,\r
+  26734, 20672, 3852,  22289, 31799, 17236, 32704, 13536, 14150, 26611,\r
+  5824,  20115, 1626,  32113, 18520, 29904, 11985, 19905, 10371, 22074,\r
+  9489,  15046, 5225,  4840,  8742,  3431,  5414,  9239,  15532, 15074,\r
+  24525, 27675, 2288,  5218,  5804,  668,   1106,  5331,  12242, 4350,\r
+  20462, 16629, 9423,  21281, 32379, 19887, 20411, 4171,  31090, 167,\r
+  6522,  8290,  16755, 32527, 23869, 20831, 3558,  32450, 9548,  16639,\r
+  4062,  3471,  9476,  32443, 23618, 25300, 5147,  2555,  16686, 28495,\r
+  20268, 135,   2711,  7986,  24943, 4414,  31278, 629,   23495, 1802,\r
+  30343, 20336, 7427,  19,    13691, 29609, 28509, 9523,  26059, 9963,\r
+  8007,  30123, 7173,  13464, 28520, 31508, 1708,  28479, 3553,  31128,\r
+  11667, 625,   28372, 28769, 16522, 5841,  12327, 32338, 14652, 31851,\r
+  27269, 32501, 21592, 20295, 5030,  29621, 9711,  19005, 21969, 3406,\r
+  19742, 15370, 159,   27009, 2796,  21156, 30465, 22796, 16501, 12491,\r
+  16004, 16857, 6217,  481,   5076,  29046, 24335, 32763, 10367, 29637,\r
+  20334, 8248,  28156, 16885, 21805, 22866, 4588,  23984, 2968,  14450,\r
+  3999,  11414, 31526, 14409, 31450, 10219, 23130, 3676,  26584, 13452,\r
+  21991, 25247, 5262,  14120, 9239,  9542,  14132, 14508, 26477, 30424,\r
+  5632,  12031, 9354,  22149, 19509, 15856, 20301, 2745,  24668, 1133,\r
+  13118, 30705, 4049,  18933, 15149, 22990, 29570, 8271,  23574, 4711,\r
+  25076, 19837, 10056, 996,   12935, 4588,  18374, 10313, 17914, 7917,\r
+  28398, 23439, 30769, 20841, 29784, 3065,  24374, 1231,  11521, 17573,\r
+  31615, 4690,  15785, 18018, 15727, 20562, 27769, 8897,  1054,  9751,\r
+  13801, 3439,  31069, 1989,  10465, 22465, 28405, 28300, 19998, 19089,\r
+  8496,  8480,  7896,  21065, 667,   24681, 20130, 12605, 29961, 19579,\r
+  27793, 11326, 5083,  5576,  8096,  25963, 29567, 20116, 595,   22859,\r
   31287, 28842, 24987, 12825, 13852, 27470, 25338, 25951, 21602, 19826,\r
-  21991, 20423, 7645, 24621, 13428, 17197, 7364, 17768, 5934, 15096,\r
-  20406, 28379, 8261, 10923, 3578, 312, 8685, 6839, 267, 30629,\r
-  1027, 1940, 22356, 7024, 11508, 14095, 5176, 9214, 29147, 30694,\r
-  8533, 4869, 20969, 32658, 1290, 8443, 266, 23140, 25142, 19919,\r
-  1477, 8659, 9539, 27094, 28260, 27925, 612, 11016, 24918, 12268,\r
-  10522, 8812, 3281, 31683, 20733, 9681, 14780, 22265, 953, 447,\r
-  1483, 7805, 18519, 1965, 2284, 9627, 5054, 19572, 27106, 2069,\r
-  8825, 11012, 9775, 25206, 8122, 24406, 4408, 25763, 15775, 19874,\r
-  20132, 29363, 8885, 18897, 19461, 18432, 20667, 29493, 32186, 20606,\r
-  26792, 30840, 25364, 11340, 28655, 22482, 5559, 4489, 31489, 28543,\r
-  26691, 105, 24851, 29297, 22580, 32136, 23842, 5442, 22279, 18046,\r
-  16437, 1900, 11935, 13491, 6371, 3260, 1254, 17013, 29716, 19204,\r
-  17079, 26183, 6924, 8209, 25084, 14460, 29349, 5084, 26387, 5893,\r
-  24539, 15108, 2423, 15240, 21902, 7548, 20380, 30642, 28548, 30081,\r
-  8730, 3021, 16046, 23248, 6670, 19349, 10924, 11797, 3773, 1351,\r
-  3218, 22694, 9851, 24316, 26349, 13425, 28364, 7733, 24321, 12340,\r
-  16328, 3511, 23381, 1004, 28356, 30105, 27506, 2447, 5166, 22939,\r
-  23783, 3581, 26809, 29113, 8592, 11828, 32186, 4352, 27416, 5316,\r
-  21714, 28321, 8125, 11140, 6862, 1348, 3155, 5506, 2507, 31902,\r
-  30604, 1344, 13982, 20806, 31350, 17181, 19827, 11972, 16965, 30737,\r
-  435, 12267, 8019, 4253, 13612, 31082, 1381, 19458, 6764, 25245,\r
-  24880, 19378, 22125, 8361, 26396, 14084, 25976, 10183, 16199, 18219,\r
-  18243, 14048, 13005, 20329, 13917, 16731, 15943, 5504, 28363, 11059,\r
-  11665, 3690, 18420, 2892, 9425, 21321, 9658, 26631, 15028, 25249,\r
-  1258, 8724, 2043, 453, 9942, 391, 20535, 21135, 8256, 6446,\r
-  10192, 29012, 20346, 29730, 15180, 12055, 32204, 16797, 7118, 15357,\r
-  12310, 29451, 13533, 22017, 27318, 100, 20327, 20457, 27820, 18104,\r
-  17926, 1145, 9724, 13580, 20097, 2534, 27988, 15204, 31894, 14734,\r
-  14575, 12321, 25079, 24549, 24249, 8077, 28562, 10419, 8116, 14773,\r
-  31765, 7037, 666, 21111, 5042, 15424, 16836, 10203, 29984, 9318,\r
-  20554, 25255, 24546, 10226, 14956, 1325, 6091, 23294, 25905, 15464,\r
-  16834, 2919, 29005, 18247, 32195, 711, 17736, 26697, 25126, 9379,\r
-  733, 5450, 15396, 15590, 27553, 22941, 14743, 4750, 30949, 7770,\r
-  24577, 4774, 10972, 19705, 29904, 10100, 21249, 32, 15072, 4083,\r
+  21991, 20423, 7645,  24621, 13428, 17197, 7364,  17768, 5934,  15096,\r
+  20406, 28379, 8261,  10923, 3578,  312,   8685,  6839,  267,   30629,\r
+  1027,  1940,  22356, 7024,  11508, 14095, 5176,  9214,  29147, 30694,\r
+  8533,  4869,  20969, 32658, 1290,  8443,  266,   23140, 25142, 19919,\r
+  1477,  8659,  9539,  27094, 28260, 27925, 612,   11016, 24918, 12268,\r
+  10522, 8812,  3281,  31683, 20733, 9681,  14780, 22265, 953,   447,\r
+  1483,  7805,  18519, 1965,  2284,  9627,  5054,  19572, 27106, 2069,\r
+  8825,  11012, 9775,  25206, 8122,  24406, 4408,  25763, 15775, 19874,\r
+  20132, 29363, 8885,  18897, 19461, 18432, 20667, 29493, 32186, 20606,\r
+  26792, 30840, 25364, 11340, 28655, 22482, 5559,  4489,  31489, 28543,\r
+  26691, 105,   24851, 29297, 22580, 32136, 23842, 5442,  22279, 18046,\r
+  16437, 1900,  11935, 13491, 6371,  3260,  1254,  17013, 29716, 19204,\r
+  17079, 26183, 6924,  8209,  25084, 14460, 29349, 5084,  26387, 5893,\r
+  24539, 15108, 2423,  15240, 21902, 7548,  20380, 30642, 28548, 30081,\r
+  8730,  3021,  16046, 23248, 6670,  19349, 10924, 11797, 3773,  1351,\r
+  3218,  22694, 9851,  24316, 26349, 13425, 28364, 7733,  24321, 12340,\r
+  16328, 3511,  23381, 1004,  28356, 30105, 27506, 2447,  5166,  22939,\r
+  23783, 3581,  26809, 29113, 8592,  11828, 32186, 4352,  27416, 5316,\r
+  21714, 28321, 8125,  11140, 6862,  1348,  3155,  5506,  2507,  31902,\r
+  30604, 1344,  13982, 20806, 31350, 17181, 19827, 11972, 16965, 30737,\r
+  435,   12267, 8019,  4253,  13612, 31082, 1381,  19458, 6764,  25245,\r
+  24880, 19378, 22125, 8361,  26396, 14084, 25976, 10183, 16199, 18219,\r
+  18243, 14048, 13005, 20329, 13917, 16731, 15943, 5504,  28363, 11059,\r
+  11665, 3690,  18420, 2892,  9425,  21321, 9658,  26631, 15028, 25249,\r
+  1258,  8724,  2043,  453,   9942,  391,   20535, 21135, 8256,  6446,\r
+  10192, 29012, 20346, 29730, 15180, 12055, 32204, 16797, 7118,  15357,\r
+  12310, 29451, 13533, 22017, 27318, 100,   20327, 20457, 27820, 18104,\r
+  17926, 1145,  9724,  13580, 20097, 2534,  27988, 15204, 31894, 14734,\r
+  14575, 12321, 25079, 24549, 24249, 8077,  28562, 10419, 8116,  14773,\r
+  31765, 7037,  666,   21111, 5042,  15424, 16836, 10203, 29984, 9318,\r
+  20554, 25255, 24546, 10226, 14956, 1325,  6091,  23294, 25905, 15464,\r
+  16834, 2919,  29005, 18247, 32195, 711,   17736, 26697, 25126, 9379,\r
+  733,   5450,  15396, 15590, 27553, 22941, 14743, 4750,  30949, 7770,\r
+  24577, 4774,  10972, 19705, 29904, 10100, 21249, 32,    15072, 4083,\r
   23987, 14010, 10562, 19332, 24354, 15689, 32572, 28128, 26479, 16765,\r
-  22928, 28497, 25103, 17413, 11521, 19746, 1137, 23717, 18964, 3667,\r
-  4064, 1161, 19988, 146, 27306, 23257, 9560, 16743, 21634, 6029,\r
-  713, 26543, 14883, 8323, 28830, 24907, 27702, 29902, 24170, 22809,\r
-  15734, 25170, 20569, 14627, 19474, 14734, 5046, 7447, 31314, 29624,\r
-  7345, 18680, 23166, 32527, 29024, 30738, 4604, 9581, 17923, 6195,\r
-  30648, 16667, 11916, 17688, 29129, 13290, 2399, 6182, 22097, 21631,\r
-  1878, 8283, 21412, 17903, 29960, 5763, 9133, 28044, 10571, 8623,\r
-  3726, 31486, 15607, 16355, 135, 13973, 28653, 9999, 14105, 2525,\r
-  24408, 12864, 18795, 30323, 28979, 12056, 4076, 28440, 6412, 8060,\r
-  12090, 18180, 23047, 17292, 19011, 11132, 10789, 32728, 8106, 23463,\r
-  6854, 29648, 5740, 4766, 27245, 21629, 32195, 22466, 25540, 24431,\r
-  1098, 10578, 11744, 31223, 10850, 13629, 29125, 20630, 13269, 5172,\r
-  31021, 2740, 23738, 15108, 10885, 26261, 21913, 5667, 1593, 20874,\r
-  19151, 904, 2353, 20580, 31539, 7872, 6300, 19502, 8697, 4927,\r
-  23276, 5916, 14295, 26868, 8737, 15806, 20327, 32544, 19275, 30841,\r
-  4301, 10599, 14154, 20792, 6297, 9000, 16601, 20831, 15855, 19722,\r
-  21451, 19457, 997, 26839, 2451, 6226, 14892, 18318, 28426, 20575,\r
-  4339, 7603, 22381, 26620, 9224, 29162, 24741, 12286, 16704, 22980,\r
-  3276, 6571, 28186, 30937, 5356, 20079, 28831, 30231, 22794, 28625,\r
-  24460, 23385, 4451, 5028, 32179, 4923, 9461, 20610, 25759, 31021,\r
-  18753, 28278, 17015, 12231, 20304, 4089, 12068, 12637, 16884, 26400,\r
-  23734, 20178, 14672, 19219, 9988, 4273, 1946, 16833, 18067, 11897,\r
-  8992, 20946, 10938, 4153, 29065, 12509, 16131, 3677, 22622, 8668,\r
-  8147, 25544, 14025, 6109, 590, 1571, 11420, 28922, 21365, 22644,\r
+  22928, 28497, 25103, 17413, 11521, 19746, 1137,  23717, 18964, 3667,\r
+  4064,  1161,  19988, 146,   27306, 23257, 9560,  16743, 21634, 6029,\r
+  713,   26543, 14883, 8323,  28830, 24907, 27702, 29902, 24170, 22809,\r
+  15734, 25170, 20569, 14627, 19474, 14734, 5046,  7447,  31314, 29624,\r
+  7345,  18680, 23166, 32527, 29024, 30738, 4604,  9581,  17923, 6195,\r
+  30648, 16667, 11916, 17688, 29129, 13290, 2399,  6182,  22097, 21631,\r
+  1878,  8283,  21412, 17903, 29960, 5763,  9133,  28044, 10571, 8623,\r
+  3726,  31486, 15607, 16355, 135,   13973, 28653, 9999,  14105, 2525,\r
+  24408, 12864, 18795, 30323, 28979, 12056, 4076,  28440, 6412,  8060,\r
+  12090, 18180, 23047, 17292, 19011, 11132, 10789, 32728, 8106,  23463,\r
+  6854,  29648, 5740,  4766,  27245, 21629, 32195, 22466, 25540, 24431,\r
+  1098,  10578, 11744, 31223, 10850, 13629, 29125, 20630, 13269, 5172,\r
+  31021, 2740,  23738, 15108, 10885, 26261, 21913, 5667,  1593,  20874,\r
+  19151, 904,   2353,  20580, 31539, 7872,  6300,  19502, 8697,  4927,\r
+  23276, 5916,  14295, 26868, 8737,  15806, 20327, 32544, 19275, 30841,\r
+  4301,  10599, 14154, 20792, 6297,  9000,  16601, 20831, 15855, 19722,\r
+  21451, 19457, 997,   26839, 2451,  6226,  14892, 18318, 28426, 20575,\r
+  4339,  7603,  22381, 26620, 9224,  29162, 24741, 12286, 16704, 22980,\r
+  3276,  6571,  28186, 30937, 5356,  20079, 28831, 30231, 22794, 28625,\r
+  24460, 23385, 4451,  5028,  32179, 4923,  9461,  20610, 25759, 31021,\r
+  18753, 28278, 17015, 12231, 20304, 4089,  12068, 12637, 16884, 26400,\r
+  23734, 20178, 14672, 19219, 9988,  4273,  1946,  16833, 18067, 11897,\r
+  8992,  20946, 10938, 4153,  29065, 12509, 16131, 3677,  22622, 8668,\r
+  8147,  25544, 14025, 6109,  590,   1571,  11420, 28922, 21365, 22644,\r
   21140, 23946, 21137, 27634, 18400, 18329, 10965, 17176, 14557, 20118,\r
-  20543, 19192, 17188, 11084, 9151, 32466, 23238, 4116, 8859, 27109,\r
-  5334, 22856, 9490, 31621, 31528, 8698, 28736, 24942, 19801, 4326,\r
-  8001, 23640, 21263, 29094, 10137, 17099, 9090, 28197, 31955, 9781,\r
-  1596, 31830, 5993, 20026, 20765, 21542, 25316, 32331, 26529, 431,\r
-  22340, 14714, 16230, 26542, 16802, 30860, 3560, 17975, 20, 1616,\r
-  911, 6567, 13521, 30256, 14317, 26075, 13462, 26886, 11072, 16799,\r
-  13384, 5169, 319, 13929, 31194, 16103, 22803, 18504, 5233, 10700,\r
-  26275, 14871, 24518, 5316, 12564, 25078, 22220, 22278, 6800, 8699,\r
-  31124, 15731, 5447, 22820, 19053, 8997, 10676, 24720, 9807, 30794,\r
+  20543, 19192, 17188, 11084, 9151,  32466, 23238, 4116,  8859,  27109,\r
+  5334,  22856, 9490,  31621, 31528, 8698,  28736, 24942, 19801, 4326,\r
+  8001,  23640, 21263, 29094, 10137, 17099, 9090,  28197, 31955, 9781,\r
+  1596,  31830, 5993,  20026, 20765, 21542, 25316, 32331, 26529, 431,\r
+  22340, 14714, 16230, 26542, 16802, 30860, 3560,  17975, 20,    1616,\r
+  911,   6567,  13521, 30256, 14317, 26075, 13462, 26886, 11072, 16799,\r
+  13384, 5169,  319,   13929, 31194, 16103, 22803, 18504, 5233,  10700,\r
+  26275, 14871, 24518, 5316,  12564, 25078, 22220, 22278, 6800,  8699,\r
+  31124, 15731, 5447,  22820, 19053, 8997,  10676, 24720, 9807,  30794,\r
   12834, 26863, 31866, 11059, 28526, 19512, 10586, 10152, 23310, 10138,\r
-  30894, 24703, 23122, 20916, 4841, 5997, 14058, 264, 23000, 22299,\r
-  169, 13997, 30854, 21372, 15497, 16709, 10845, 9311, 1262, 27695,\r
-  32141, 3648, 32559, 12030, 5298, 19812, 19026, 28969, 11185, 5925,\r
-  19223, 13827, 25570, 17802, 31033, 17646, 7029, 24858, 4592, 8652,\r
-  21518, 31986, 21434, 27063, 27827, 6422, 10075, 26610, 13032, 32517,\r
-  23074, 30495, 3864, 19600, 19823, 690, 20535, 8427, 16242, 15525,\r
-  23206, 8197, 4405, 23406, 15959, 16405, 11741, 29742, 30769, 5493,\r
-  30509, 17707, 25270, 4276, 23371, 1152, 6627, 25319, 30663, 1811,\r
-  22103, 31807, 28121, 21448, 952, 22753, 19434, 30452, 5715, 4081,\r
-  12374, 10773, 25602, 22768, 2417, 9152, 1107, 31561, 5832, 9178,\r
-  31718, 23590, 4009, 4107, 14103, 7816, 4837, 13424, 6109, 2455,\r
-  17364, 31888, 6898, 10551, 14490, 14482, 22581, 23771, 7593, 17069,\r
-  25164, 18590, 12935, 6367, 18829, 23696, 978, 16098, 17951, 26189,\r
-  1665, 31836, 19804, 24789, 30828, 19286, 5754, 30359, 10767, 2799,\r
-  21099, 27087, 5514, 19025, 6913, 22290, 26349, 16357, 23894, 1575,\r
-  22963, 16579, 17259, 15641, 3980, 19565, 24847, 18826, 17504, 188,\r
-  10243, 13386, 912, 2586, 26459, 21289, 17023, 25586, 23079, 11529,\r
-  1105, 32101, 2387, 25655, 27378, 5695, 1228, 6907, 22874, 26665,\r
-  14308, 1645, 2832, 28704, 23800, 9099, 17645, 27685, 21584, 17033,\r
-  803, 24886, 25158, 23656, 18558, 15742, 6315, 26314, 29417, 27337,\r
-  28518, 6661, 14643, 25914, 20574, 23926, 13843, 10816, 6811, 19992,\r
-  9322, 5062, 24744, 4948, 12489, 29610, 26171, 30235, 1075, 881,\r
-  8471, 28211, 27684, 31801, 16690, 6606, 17361, 27374, 1043, 21345,\r
-  690, 5313, 22399, 22963, 5182, 32726, 3924, 15925, 23798, 29757,\r
-  12981, 3473, 4260, 2340, 9319, 26245, 15845, 4683, 10875, 29426,\r
-  13029, 440, 6446, 30512, 8042, 4523, 9485, 27557, 6164, 19156,\r
-  8285, 21654, 24291, 15044, 10169, 19516, 5369, 28322, 509, 29467,\r
-  14753, 1567, 14179, 14991, 6801, 29355, 9196, 15784, 6508, 14058,\r
-  2306, 7223, 27275, 14945, 25179, 3113, 12541, 1398, 544, 5396,\r
-  7116, 31127, 14415, 10768, 26754, 22969, 2398, 5576, 28396, 14084,\r
-  14369, 27857, 6686, 5580, 9965, 31290, 29367, 24260, 21502, 23140,\r
-  7783, 28782, 29974, 14355, 30894, 25814, 30311, 24518, 10470, 24448,\r
-  24755, 7492, 22915, 30623, 27314, 6008, 29850, 4743, 14772, 7806,\r
-  2464, 16997, 5511, 8190, 16501, 32046, 5019, 13753, 32160, 16341,\r
-  32100, 609, 7133, 29121, 30208, 20654, 24277, 7294, 8986, 10414,\r
-  812, 19379, 23822, 20317, 4032, 10580, 10829, 25717, 19504, 10776,\r
-  2564, 4743, 156, 24110, 20984, 1355, 25260, 14892, 9140, 6709,\r
-  21460, 27720, 15591, 32584, 21718, 4554, 9992, 13359, 21128, 24769,\r
-  2619, 8586, 12247, 6645, 10104, 14982, 12556, 22302, 15850, 23728,\r
-  11342, 2387, 24469, 25099, 9064, 15301, 31036, 6495, 10957, 28333,\r
-  4482, 6357, 16857, 7811, 847, 7873, 90, 19313, 14197, 29887,\r
-  15695, 5383, 8596, 2305, 4848, 15920, 1083, 12775, 25582, 11621,\r
+  30894, 24703, 23122, 20916, 4841,  5997,  14058, 264,   23000, 22299,\r
+  169,   13997, 30854, 21372, 15497, 16709, 10845, 9311,  1262,  27695,\r
+  32141, 3648,  32559, 12030, 5298,  19812, 19026, 28969, 11185, 5925,\r
+  19223, 13827, 25570, 17802, 31033, 17646, 7029,  24858, 4592,  8652,\r
+  21518, 31986, 21434, 27063, 27827, 6422,  10075, 26610, 13032, 32517,\r
+  23074, 30495, 3864,  19600, 19823, 690,   20535, 8427,  16242, 15525,\r
+  23206, 8197,  4405,  23406, 15959, 16405, 11741, 29742, 30769, 5493,\r
+  30509, 17707, 25270, 4276,  23371, 1152,  6627,  25319, 30663, 1811,\r
+  22103, 31807, 28121, 21448, 952,   22753, 19434, 30452, 5715,  4081,\r
+  12374, 10773, 25602, 22768, 2417,  9152,  1107,  31561, 5832,  9178,\r
+  31718, 23590, 4009,  4107,  14103, 7816,  4837,  13424, 6109,  2455,\r
+  17364, 31888, 6898,  10551, 14490, 14482, 22581, 23771, 7593,  17069,\r
+  25164, 18590, 12935, 6367,  18829, 23696, 978,   16098, 17951, 26189,\r
+  1665,  31836, 19804, 24789, 30828, 19286, 5754,  30359, 10767, 2799,\r
+  21099, 27087, 5514,  19025, 6913,  22290, 26349, 16357, 23894, 1575,\r
+  22963, 16579, 17259, 15641, 3980,  19565, 24847, 18826, 17504, 188,\r
+  10243, 13386, 912,   2586,  26459, 21289, 17023, 25586, 23079, 11529,\r
+  1105,  32101, 2387,  25655, 27378, 5695,  1228,  6907,  22874, 26665,\r
+  14308, 1645,  2832,  28704, 23800, 9099,  17645, 27685, 21584, 17033,\r
+  803,   24886, 25158, 23656, 18558, 15742, 6315,  26314, 29417, 27337,\r
+  28518, 6661,  14643, 25914, 20574, 23926, 13843, 10816, 6811,  19992,\r
+  9322,  5062,  24744, 4948,  12489, 29610, 26171, 30235, 1075,  881,\r
+  8471,  28211, 27684, 31801, 16690, 6606,  17361, 27374, 1043,  21345,\r
+  690,   5313,  22399, 22963, 5182,  32726, 3924,  15925, 23798, 29757,\r
+  12981, 3473,  4260,  2340,  9319,  26245, 15845, 4683,  10875, 29426,\r
+  13029, 440,   6446,  30512, 8042,  4523,  9485,  27557, 6164,  19156,\r
+  8285,  21654, 24291, 15044, 10169, 19516, 5369,  28322, 509,   29467,\r
+  14753, 1567,  14179, 14991, 6801,  29355, 9196,  15784, 6508,  14058,\r
+  2306,  7223,  27275, 14945, 25179, 3113,  12541, 1398,  544,   5396,\r
+  7116,  31127, 14415, 10768, 26754, 22969, 2398,  5576,  28396, 14084,\r
+  14369, 27857, 6686,  5580,  9965,  31290, 29367, 24260, 21502, 23140,\r
+  7783,  28782, 29974, 14355, 30894, 25814, 30311, 24518, 10470, 24448,\r
+  24755, 7492,  22915, 30623, 27314, 6008,  29850, 4743,  14772, 7806,\r
+  2464,  16997, 5511,  8190,  16501, 32046, 5019,  13753, 32160, 16341,\r
+  32100, 609,   7133,  29121, 30208, 20654, 24277, 7294,  8986,  10414,\r
+  812,   19379, 23822, 20317, 4032,  10580, 10829, 25717, 19504, 10776,\r
+  2564,  4743,  156,   24110, 20984, 1355,  25260, 14892, 9140,  6709,\r
+  21460, 27720, 15591, 32584, 21718, 4554,  9992,  13359, 21128, 24769,\r
+  2619,  8586,  12247, 6645,  10104, 14982, 12556, 22302, 15850, 23728,\r
+  11342, 2387,  24469, 25099, 9064,  15301, 31036, 6495,  10957, 28333,\r
+  4482,  6357,  16857, 7811,  847,   7873,  90,    19313, 14197, 29887,\r
+  15695, 5383,  8596,  2305,  4848,  15920, 1083,  12775, 25582, 11621,\r
   16463, 20432, 17915, 15648, 13233, 16689, 30093, 28820, 27419, 23780,\r
-  14047, 24731, 11083, 26306, 18489, 29936, 5476, 12915, 18802, 15774,\r
-  27281, 26757, 15539, 184, 13035, 8636, 1149, 20555, 19357, 19625,\r
-  750, 15505, 8261, 4478, 15936, 30311, 5022, 10273, 11922, 30209,\r
-  23389, 21631, 6379, 31197, 21336, 32035, 7036, 29173, 3053, 4103,\r
-  20261, 11065, 6050, 10666, 8763, 20284, 23561, 12898, 20617, 3118,\r
-  27111, 26100, 7316, 30986, 8340, 31074, 11812, 2576, 8357, 21252,\r
-  14847, 10614, 20937, 2266, 22264, 18523, 32753, 6433, 9256, 31740,\r
-  21428, 4388, 9340, 31530, 10737, 5717, 29552, 4092, 3766, 1436,\r
-  14105, 20929, 24416, 7407, 29545, 15160, 22532, 25379, 8879, 28932,\r
-  4110, 16898, 14173, 19546, 10792, 1693, 27406, 32253, 15198, 15332,\r
-  32455, 23916, 11647, 4979, 20605, 14425, 8390, 20655, 27096, 13918,\r
-  4281, 27154, 27703, 9452, 16466, 21699, 32244, 16260, 12637, 11882,\r
-  7401, 18473, 11041, 14658, 31283, 1045, 5186, 24176, 17205, 28843,\r
-  9190, 10899, 31712, 17581, 11799, 30876, 20018, 4527, 3945, 16096,\r
-  29437, 6603, 31708, 12907, 6122, 11671, 13571, 13463, 26301, 9812,\r
-  27494, 16094, 4571, 20584, 20262, 16621, 2569, 23055, 5087, 9465,\r
-  16758, 6733, 27602, 28246, 8188, 17447, 15940, 9798, 3235, 23058,\r
-  7457, 2831, 12391, 30124, 15845, 13648, 22075, 14250, 31164, 10132,\r
-  3149, 29713, 6376, 31784, 27276, 28330, 28004, 9514, 8808, 15279,\r
-  199, 29411, 15320, 6347, 22890, 21591, 9122, 21058, 6861, 1561,\r
-  28375, 2155, 1335, 9060, 30620, 26983, 6301, 19816, 14128, 13069,\r
-  24261, 23778, 299, 4388, 8364, 20975, 1028, 11221, 2852, 30242,\r
-  13014, 31327, 1729, 25812, 31844, 11789, 18166, 28091, 29530, 18790,\r
-  21628, 1471, 19414, 14243, 5875, 14856, 21030, 30822, 8652, 22876,\r
-  16084, 13224, 18534, 18344, 3039, 18931, 15735, 12252, 12108, 13522,\r
-  16814, 2044, 24285, 19335, 9623, 7028, 16673, 16379, 8894, 4013,\r
-  12205, 26619, 20503, 5853, 28328, 9888, 13725, 17699, 32141, 2575,\r
-  17210, 15315, 25900, 29027, 12007, 7951, 9970, 20200, 32276, 2455,\r
+  14047, 24731, 11083, 26306, 18489, 29936, 5476,  12915, 18802, 15774,\r
+  27281, 26757, 15539, 184,   13035, 8636,  1149,  20555, 19357, 19625,\r
+  750,   15505, 8261,  4478,  15936, 30311, 5022,  10273, 11922, 30209,\r
+  23389, 21631, 6379,  31197, 21336, 32035, 7036,  29173, 3053,  4103,\r
+  20261, 11065, 6050,  10666, 8763,  20284, 23561, 12898, 20617, 3118,\r
+  27111, 26100, 7316,  30986, 8340,  31074, 11812, 2576,  8357,  21252,\r
+  14847, 10614, 20937, 2266,  22264, 18523, 32753, 6433,  9256,  31740,\r
+  21428, 4388,  9340,  31530, 10737, 5717,  29552, 4092,  3766,  1436,\r
+  14105, 20929, 24416, 7407,  29545, 15160, 22532, 25379, 8879,  28932,\r
+  4110,  16898, 14173, 19546, 10792, 1693,  27406, 32253, 15198, 15332,\r
+  32455, 23916, 11647, 4979,  20605, 14425, 8390,  20655, 27096, 13918,\r
+  4281,  27154, 27703, 9452,  16466, 21699, 32244, 16260, 12637, 11882,\r
+  7401,  18473, 11041, 14658, 31283, 1045,  5186,  24176, 17205, 28843,\r
+  9190,  10899, 31712, 17581, 11799, 30876, 20018, 4527,  3945,  16096,\r
+  29437, 6603,  31708, 12907, 6122,  11671, 13571, 13463, 26301, 9812,\r
+  27494, 16094, 4571,  20584, 20262, 16621, 2569,  23055, 5087,  9465,\r
+  16758, 6733,  27602, 28246, 8188,  17447, 15940, 9798,  3235,  23058,\r
+  7457,  2831,  12391, 30124, 15845, 13648, 22075, 14250, 31164, 10132,\r
+  3149,  29713, 6376,  31784, 27276, 28330, 28004, 9514,  8808,  15279,\r
+  199,   29411, 15320, 6347,  22890, 21591, 9122,  21058, 6861,  1561,\r
+  28375, 2155,  1335,  9060,  30620, 26983, 6301,  19816, 14128, 13069,\r
+  24261, 23778, 299,   4388,  8364,  20975, 1028,  11221, 2852,  30242,\r
+  13014, 31327, 1729,  25812, 31844, 11789, 18166, 28091, 29530, 18790,\r
+  21628, 1471,  19414, 14243, 5875,  14856, 21030, 30822, 8652,  22876,\r
+  16084, 13224, 18534, 18344, 3039,  18931, 15735, 12252, 12108, 13522,\r
+  16814, 2044,  24285, 19335, 9623,  7028,  16673, 16379, 8894,  4013,\r
+  12205, 26619, 20503, 5853,  28328, 9888,  13725, 17699, 32141, 2575,\r
+  17210, 15315, 25900, 29027, 12007, 7951,  9970,  20200, 32276, 2455,\r
   12651, 23178, 15946, 29409, 32261, 18573, 12559, 15213, 15383, 22654,\r
-  28426, 21331, 11553, 20585, 18023, 12062, 5718, 14412, 22653, 32476,\r
-  27479, 27084, 15022, 23414, 5698, 18471, 7823, 24126, 235, 13418,\r
-  17737, 22215, 17257, 4580, 16960, 4857, 7125, 28378, 20722, 28004,\r
-  4942, 9596, 16929, 5589, 29760, 2328, 17460, 18471, 30182, 29582,\r
-  2779, 25948, 16654, 18180, 6642, 8941, 12829, 14298, 14248, 17501,\r
-  31826, 29408, 18912, 4884, 4687, 29639, 8919, 2155, 30677, 8150,\r
-  263, 24068, 24783, 30942, 17996, 30812, 16786, 31856, 10822, 24483,\r
-  13411, 845, 27646, 15051, 22585, 13598, 18124, 223, 3269, 25702,\r
-  11896, 21654, 12208, 26292, 5791, 15912, 16164, 15645, 18776, 14176,\r
-  1421, 8425, 4376, 15858, 12961, 18573, 14803, 24592, 1438, 30938,\r
-  11620, 30520, 27858, 13939, 12079, 1360, 15969, 11140, 31493, 26612,\r
-  28227, 5553, 19272, 22031, 25996, 20557, 2639, 23464, 24304, 20173,\r
-  13067, 18431, 27782, 7036, 9451, 16857, 2764, 11888, 28414, 30232,\r
-  25836, 12476, 22104, 5262, 11837, 32743, 7094, 3859, 13581, 1437,\r
-  17509, 20181, 4766, 14245, 27231, 21488, 7278, 21523, 22456, 29503,\r
-  31419, 11711, 28984, 9841, 2119, 7413, 13386, 8799, 24409, 26734,\r
-  19476, 10140, 14340, 14975, 488, 16718, 31659, 30353, 3291, 26173,\r
-  12741, 721, 1203, 12330, 10718, 23081, 31751, 7522, 1758, 31342,\r
-  1441, 4243, 3982, 731, 10535, 733, 26712, 5822, 2811, 7212,\r
-  6735, 22641, 19295, 9670, 2927, 4236, 24797, 2848, 19493, 21849,\r
-  29158, 23798, 24082, 18056, 29113, 2714, 22540, 12580, 1158, 17805,\r
-  2917, 12230, 28371, 17228, 3696, 6921, 5152, 20844, 20546, 24125,\r
-  18630, 28649, 6582, 1120, 31525, 26044, 8116, 4426, 30718, 939,\r
-  2738, 31527, 19998, 2405, 6010, 22570, 5437, 24782, 13614, 5248,\r
-  7205, 9112, 17546, 17539, 16919, 7955, 23658, 26417, 32618, 19014,\r
-  14220, 11484, 24949, 25150, 12182, 5666, 32175, 8358, 26971, 32544,\r
-  8213, 16536, 5722, 27363, 14540, 17843, 28551, 8991, 19720, 14702,\r
-  19791, 36, 28460, 21163, 214, 27917, 563, 15248, 21123, 31803,\r
-  19534, 27026, 18878, 8194, 7374, 15314, 8696, 23457, 2373, 21421,\r
-  4332, 120, 1512, 23438, 16933, 19317, 23864, 12295, 11201, 30416,\r
-  19170, 7969, 8308, 5112, 15843, 12784, 17104, 16845, 1519, 13418,\r
-  15811, 4879, 28692, 28537, 26209, 14614, 5787, 18766, 10979, 18116,\r
-  26671, 16377, 29424, 8121, 10817, 29238, 21788, 26565, 31402, 10890,\r
-  17839, 1699, 5266, 8335, 8871, 5092, 23697, 25740, 16640, 16169,\r
-  30741, 10569, 24370, 2197, 29700, 24610, 8444, 23938, 16034, 23385,\r
-  30816, 28019, 30900, 27313, 8175, 19274, 25062, 9784, 2630, 11964,\r
-  25706, 23396, 27353, 27137, 994, 20577, 15343, 26576, 13184, 20906,\r
-  26094, 17802, 22379, 15831, 27609, 23990, 30053, 949, 16663, 22189,\r
-  22700, 18076, 11382, 2454, 11549, 7421, 23663, 21909, 21919, 7483,\r
-  4268, 13120, 447, 11452, 31943, 7251, 18072, 17727, 18517, 7076,\r
-  16118, 9328, 20515, 6489, 30395, 6585, 3263, 14168, 9601, 26204,\r
-  16954, 20991, 31872, 25535, 23853, 30998, 2994, 25606, 8442, 29953,\r
-  566, 231, 2900, 11322, 19955, 19642, 4354, 31999, 24189, 6608,\r
-  6111, 24392, 3900, 19462, 21030, 25340, 31947, 26778, 24300, 24164,\r
-  18846, 22589, 21486, 24800, 5608, 3945, 5261, 15833, 11963, 4340,\r
-  6679, 17398, 14449, 32486, 4424, 29843, 22604, 11656, 28945, 20335,\r
-  8537, 27837, 28311, 1700, 18586, 31637, 29311, 11997, 25699, 23072,\r
+  28426, 21331, 11553, 20585, 18023, 12062, 5718,  14412, 22653, 32476,\r
+  27479, 27084, 15022, 23414, 5698,  18471, 7823,  24126, 235,   13418,\r
+  17737, 22215, 17257, 4580,  16960, 4857,  7125,  28378, 20722, 28004,\r
+  4942,  9596,  16929, 5589,  29760, 2328,  17460, 18471, 30182, 29582,\r
+  2779,  25948, 16654, 18180, 6642,  8941,  12829, 14298, 14248, 17501,\r
+  31826, 29408, 18912, 4884,  4687,  29639, 8919,  2155,  30677, 8150,\r
+  263,   24068, 24783, 30942, 17996, 30812, 16786, 31856, 10822, 24483,\r
+  13411, 845,   27646, 15051, 22585, 13598, 18124, 223,   3269,  25702,\r
+  11896, 21654, 12208, 26292, 5791,  15912, 16164, 15645, 18776, 14176,\r
+  1421,  8425,  4376,  15858, 12961, 18573, 14803, 24592, 1438,  30938,\r
+  11620, 30520, 27858, 13939, 12079, 1360,  15969, 11140, 31493, 26612,\r
+  28227, 5553,  19272, 22031, 25996, 20557, 2639,  23464, 24304, 20173,\r
+  13067, 18431, 27782, 7036,  9451,  16857, 2764,  11888, 28414, 30232,\r
+  25836, 12476, 22104, 5262,  11837, 32743, 7094,  3859,  13581, 1437,\r
+  17509, 20181, 4766,  14245, 27231, 21488, 7278,  21523, 22456, 29503,\r
+  31419, 11711, 28984, 9841,  2119,  7413,  13386, 8799,  24409, 26734,\r
+  19476, 10140, 14340, 14975, 488,   16718, 31659, 30353, 3291,  26173,\r
+  12741, 721,   1203,  12330, 10718, 23081, 31751, 7522,  1758,  31342,\r
+  1441,  4243,  3982,  731,   10535, 733,   26712, 5822,  2811,  7212,\r
+  6735,  22641, 19295, 9670,  2927,  4236,  24797, 2848,  19493, 21849,\r
+  29158, 23798, 24082, 18056, 29113, 2714,  22540, 12580, 1158,  17805,\r
+  2917,  12230, 28371, 17228, 3696,  6921,  5152,  20844, 20546, 24125,\r
+  18630, 28649, 6582,  1120,  31525, 26044, 8116,  4426,  30718, 939,\r
+  2738,  31527, 19998, 2405,  6010,  22570, 5437,  24782, 13614, 5248,\r
+  7205,  9112,  17546, 17539, 16919, 7955,  23658, 26417, 32618, 19014,\r
+  14220, 11484, 24949, 25150, 12182, 5666,  32175, 8358,  26971, 32544,\r
+  8213,  16536, 5722,  27363, 14540, 17843, 28551, 8991,  19720, 14702,\r
+  19791, 36,    28460, 21163, 214,   27917, 563,   15248, 21123, 31803,\r
+  19534, 27026, 18878, 8194,  7374,  15314, 8696,  23457, 2373,  21421,\r
+  4332,  120,   1512,  23438, 16933, 19317, 23864, 12295, 11201, 30416,\r
+  19170, 7969,  8308,  5112,  15843, 12784, 17104, 16845, 1519,  13418,\r
+  15811, 4879,  28692, 28537, 26209, 14614, 5787,  18766, 10979, 18116,\r
+  26671, 16377, 29424, 8121,  10817, 29238, 21788, 26565, 31402, 10890,\r
+  17839, 1699,  5266,  8335,  8871,  5092,  23697, 25740, 16640, 16169,\r
+  30741, 10569, 24370, 2197,  29700, 24610, 8444,  23938, 16034, 23385,\r
+  30816, 28019, 30900, 27313, 8175,  19274, 25062, 9784,  2630,  11964,\r
+  25706, 23396, 27353, 27137, 994,   20577, 15343, 26576, 13184, 20906,\r
+  26094, 17802, 22379, 15831, 27609, 23990, 30053, 949,   16663, 22189,\r
+  22700, 18076, 11382, 2454,  11549, 7421,  23663, 21909, 21919, 7483,\r
+  4268,  13120, 447,   11452, 31943, 7251,  18072, 17727, 18517, 7076,\r
+  16118, 9328,  20515, 6489,  30395, 6585,  3263,  14168, 9601,  26204,\r
+  16954, 20991, 31872, 25535, 23853, 30998, 2994,  25606, 8442,  29953,\r
+  566,   231,   2900,  11322, 19955, 19642, 4354,  31999, 24189, 6608,\r
+  6111,  24392, 3900,  19462, 21030, 25340, 31947, 26778, 24300, 24164,\r
+  18846, 22589, 21486, 24800, 5608,  3945,  5261,  15833, 11963, 4340,\r
+  6679,  17398, 14449, 32486, 4424,  29843, 22604, 11656, 28945, 20335,\r
+  8537,  27837, 28311, 1700,  18586, 31637, 29311, 11997, 25699, 23072,\r
   29545, 16323, 15109, 28032, 22970, 30904, 25770, 10818, 20639, 32200,\r
-  17536, 14575, 10319, 16604, 7450, 18653, 11664, 2865, 17427, 1355,\r
-  6780, 15113, 14580, 24749, 1157, 2465, 9047, 10821, 27575, 28002,\r
-  31821, 8691, 20285, 27739, 26366, 32334, 27431, 29423, 31887, 6387,\r
-  874, 715, 3913, 13598, 24616, 19996, 10487, 5239, 24370, 4862,\r
-  18575, 20014, 16076, 19255, 8981, 7241, 1456, 1061, 27581, 4925,\r
-  11349, 29429, 26448, 30652, 27504, 6422, 20176, 9935, 21436, 3309,\r
-  17759, 17444, 4854, 15051, 25949, 8873, 2604, 12828, 10449, 7002,\r
-  6456, 21217, 12554, 18006, 17288, 28512, 12678, 19001, 4640, 13849,\r
-  530, 13734, 22241, 30717, 7219, 5923, 13579, 7899, 1989, 18218,\r
-  4865, 26651, 31458, 6268, 22860, 14254, 12549, 25273, 8931, 5957,\r
-  15727, 6958, 17065, 13761, 23754, 28654, 16952, 31467, 2573, 6436,\r
-  15837, 870, 23199, 21671, 16867, 6370, 26047, 16335, 3349, 31377,\r
-  15139, 904, 23678, 2527, 11487, 1700, 9331, 12126, 28809, 6774,\r
-  23252, 3071, 23451, 21916, 13966, 19080, 16152, 4380, 2148, 9538,\r
-  9843, 15283, 4336, 29682, 32172, 30569, 30692, 22027, 25276, 13673,\r
-  18582, 19746, 9779, 17424, 6076, 23458, 16160, 836, 13939, 31681,\r
-  13873, 13063, 5767, 691, 19483, 4171, 17390, 17437, 24380, 13320,\r
-  6037, 2508, 21631, 26765, 1888, 13223, 1921, 26900, 14188, 5090,\r
-  1522, 16280, 12439, 23413, 6717, 13547, 24642, 10957, 26987, 1795,\r
-  17749, 6849, 10308, 22932, 28292, 20935, 11192, 5349, 11729, 31080,\r
-  22654, 9948, 9554, 10225, 13819, 23130, 4405, 4716, 10341, 14543,\r
-  29441, 6862, 5672, 10757, 542, 3698, 31881, 17984, 1432, 10438,\r
-  14217, 3721, 31520, 11845, 268, 32583, 12116, 13221, 27450, 12559,\r
-  11072, 25937, 23078, 31677, 6948, 25369, 16557, 20420, 4727, 1064,\r
-  9378, 14786, 20781, 5943, 11816, 17496, 28214, 29441, 18014, 11320,\r
-  2887, 27383, 2370, 6783, 30172, 31796, 3791, 22854, 22910, 18099,\r
-  20329, 13939, 26433, 9920, 10107, 2261, 5778, 684, 15967, 2929,\r
-  25391, 8389, 21630, 790, 11383, 6533, 15544, 25144, 6628, 14858,\r
-  1286, 24315, 10454, 27334, 4701, 12173, 18322, 28280, 13270, 24761,\r
-  8586, 3419, 28941, 31417, 223, 157, 6086, 26700, 26916, 12818,\r
-  19671, 21513, 20325, 9258, 9282, 28659, 4967, 5665, 1185, 23373,\r
-  7730, 14453, 22983, 6832, 18893, 1437, 23204, 22106, 30281, 4856,\r
-  26217, 21193, 28672, 28164, 15597, 22409, 2847, 22992, 5711, 30794,\r
-  6242, 180, 24030, 29749, 5919, 28223, 5173, 8064, 18566, 25969,\r
-  7338, 2880, 2087, 26410, 31210, 24447, 3509, 31971, 15837, 7055,\r
-  31753, 7068, 12496, 12445, 24937, 13077, 29650, 10889, 3339, 15681,\r
-  8798, 23286, 24021, 25080, 14139, 15005, 28263, 748, 14497, 29926,\r
+  17536, 14575, 10319, 16604, 7450,  18653, 11664, 2865,  17427, 1355,\r
+  6780,  15113, 14580, 24749, 1157,  2465,  9047,  10821, 27575, 28002,\r
+  31821, 8691,  20285, 27739, 26366, 32334, 27431, 29423, 31887, 6387,\r
+  874,   715,   3913,  13598, 24616, 19996, 10487, 5239,  24370, 4862,\r
+  18575, 20014, 16076, 19255, 8981,  7241,  1456,  1061,  27581, 4925,\r
+  11349, 29429, 26448, 30652, 27504, 6422,  20176, 9935,  21436, 3309,\r
+  17759, 17444, 4854,  15051, 25949, 8873,  2604,  12828, 10449, 7002,\r
+  6456,  21217, 12554, 18006, 17288, 28512, 12678, 19001, 4640,  13849,\r
+  530,   13734, 22241, 30717, 7219,  5923,  13579, 7899,  1989,  18218,\r
+  4865,  26651, 31458, 6268,  22860, 14254, 12549, 25273, 8931,  5957,\r
+  15727, 6958,  17065, 13761, 23754, 28654, 16952, 31467, 2573,  6436,\r
+  15837, 870,   23199, 21671, 16867, 6370,  26047, 16335, 3349,  31377,\r
+  15139, 904,   23678, 2527,  11487, 1700,  9331,  12126, 28809, 6774,\r
+  23252, 3071,  23451, 21916, 13966, 19080, 16152, 4380,  2148,  9538,\r
+  9843,  15283, 4336,  29682, 32172, 30569, 30692, 22027, 25276, 13673,\r
+  18582, 19746, 9779,  17424, 6076,  23458, 16160, 836,   13939, 31681,\r
+  13873, 13063, 5767,  691,   19483, 4171,  17390, 17437, 24380, 13320,\r
+  6037,  2508,  21631, 26765, 1888,  13223, 1921,  26900, 14188, 5090,\r
+  1522,  16280, 12439, 23413, 6717,  13547, 24642, 10957, 26987, 1795,\r
+  17749, 6849,  10308, 22932, 28292, 20935, 11192, 5349,  11729, 31080,\r
+  22654, 9948,  9554,  10225, 13819, 23130, 4405,  4716,  10341, 14543,\r
+  29441, 6862,  5672,  10757, 542,   3698,  31881, 17984, 1432,  10438,\r
+  14217, 3721,  31520, 11845, 268,   32583, 12116, 13221, 27450, 12559,\r
+  11072, 25937, 23078, 31677, 6948,  25369, 16557, 20420, 4727,  1064,\r
+  9378,  14786, 20781, 5943,  11816, 17496, 28214, 29441, 18014, 11320,\r
+  2887,  27383, 2370,  6783,  30172, 31796, 3791,  22854, 22910, 18099,\r
+  20329, 13939, 26433, 9920,  10107, 2261,  5778,  684,   15967, 2929,\r
+  25391, 8389,  21630, 790,   11383, 6533,  15544, 25144, 6628,  14858,\r
+  1286,  24315, 10454, 27334, 4701,  12173, 18322, 28280, 13270, 24761,\r
+  8586,  3419,  28941, 31417, 223,   157,   6086,  26700, 26916, 12818,\r
+  19671, 21513, 20325, 9258,  9282,  28659, 4967,  5665,  1185,  23373,\r
+  7730,  14453, 22983, 6832,  18893, 1437,  23204, 22106, 30281, 4856,\r
+  26217, 21193, 28672, 28164, 15597, 22409, 2847,  22992, 5711,  30794,\r
+  6242,  180,   24030, 29749, 5919,  28223, 5173,  8064,  18566, 25969,\r
+  7338,  2880,  2087,  26410, 31210, 24447, 3509,  31971, 15837, 7055,\r
+  31753, 7068,  12496, 12445, 24937, 13077, 29650, 10889, 3339,  15681,\r
+  8798,  23286, 24021, 25080, 14139, 15005, 28263, 748,   14497, 29926,\r
   16987, 17374, 28573, 20921, 22731, 25362, 11958, 29073, 18452, 30208,\r
-  27601, 4051, 18138, 24140, 12626, 16223, 17997, 2808, 10884, 21860,\r
-  426, 23001, 20283, 30328, 9988, 11591, 29368, 31208, 32068, 2585,\r
-  14796, 5964, 11119, 20945, 15425, 4703, 1319, 27923, 21877, 22798,\r
-  117, 31324, 26696, 18383, 14533, 21744, 6712, 2100, 9010, 2068,\r
-  18891, 15808, 22532, 638, 17454, 29945, 5495, 7690, 32283, 2238,\r
-  24511, 20398, 21503, 29147, 25160, 5040, 5469, 13531, 30274, 27158,\r
-  24429, 25118, 29277, 30559, 2826, 23595, 10193, 7536, 12747, 22598,\r
-  12450, 8401, 3695, 19782, 29474, 11801, 15486, 17569, 32439, 21415,\r
-  6957, 16841, 9694, 17299, 22402, 13243, 31088, 29156, 25018, 9428,\r
-  2341, 25348, 20968, 7399, 3414, 15985, 32734, 27022, 24071, 31156,\r
-  21072, 16573, 23332, 12183, 2359, 29085, 10763, 30611, 1908, 6039,\r
-  27723, 20872, 24502, 942, 21419, 31153, 10397, 20499, 14191, 14550,\r
-  23584, 20979, 3798, 1219, 17964, 23956, 29927, 1274, 18061, 4256,\r
-  6509, 20389, 27154, 5825, 17217, 29390, 7916, 7277, 18375, 7634,\r
-  2136, 25604, 7099, 32531, 13694, 12568, 24878, 10734, 16280, 32267,\r
-  5835, 6381, 4950, 12256, 19551, 8253, 27009, 15435, 153, 25698,\r
-  13024, 30218, 3086, 10537, 31576, 29560, 15743, 3294, 2134, 17248,\r
-  2911, 960, 13938, 25615, 32400, 10162, 23116, 12461, 14958, 12339,\r
-  10426, 14541, 17934, 9872, 27174, 13890, 31431, 10840, 32049, 5428,\r
-  15346, 23057, 27804, 17012, 23535, 13353, 7273, 13325, 21097, 1072,\r
-  21053, 24604, 10202, 12356, 7433, 5601, 14929, 31436, 24553, 27925,\r
-  16243, 3177, 1101, 16254, 10175, 23081, 5974, 24770, 18199, 15358,\r
-  22147, 2169, 26236, 18287, 28556, 8837, 8986, 17038, 30606, 31142,\r
+  27601, 4051,  18138, 24140, 12626, 16223, 17997, 2808,  10884, 21860,\r
+  426,   23001, 20283, 30328, 9988,  11591, 29368, 31208, 32068, 2585,\r
+  14796, 5964,  11119, 20945, 15425, 4703,  1319,  27923, 21877, 22798,\r
+  117,   31324, 26696, 18383, 14533, 21744, 6712,  2100,  9010,  2068,\r
+  18891, 15808, 22532, 638,   17454, 29945, 5495,  7690,  32283, 2238,\r
+  24511, 20398, 21503, 29147, 25160, 5040,  5469,  13531, 30274, 27158,\r
+  24429, 25118, 29277, 30559, 2826,  23595, 10193, 7536,  12747, 22598,\r
+  12450, 8401,  3695,  19782, 29474, 11801, 15486, 17569, 32439, 21415,\r
+  6957,  16841, 9694,  17299, 22402, 13243, 31088, 29156, 25018, 9428,\r
+  2341,  25348, 20968, 7399,  3414,  15985, 32734, 27022, 24071, 31156,\r
+  21072, 16573, 23332, 12183, 2359,  29085, 10763, 30611, 1908,  6039,\r
+  27723, 20872, 24502, 942,   21419, 31153, 10397, 20499, 14191, 14550,\r
+  23584, 20979, 3798,  1219,  17964, 23956, 29927, 1274,  18061, 4256,\r
+  6509,  20389, 27154, 5825,  17217, 29390, 7916,  7277,  18375, 7634,\r
+  2136,  25604, 7099,  32531, 13694, 12568, 24878, 10734, 16280, 32267,\r
+  5835,  6381,  4950,  12256, 19551, 8253,  27009, 15435, 153,   25698,\r
+  13024, 30218, 3086,  10537, 31576, 29560, 15743, 3294,  2134,  17248,\r
+  2911,  960,   13938, 25615, 32400, 10162, 23116, 12461, 14958, 12339,\r
+  10426, 14541, 17934, 9872,  27174, 13890, 31431, 10840, 32049, 5428,\r
+  15346, 23057, 27804, 17012, 23535, 13353, 7273,  13325, 21097, 1072,\r
+  21053, 24604, 10202, 12356, 7433,  5601,  14929, 31436, 24553, 27925,\r
+  16243, 3177,  1101,  16254, 10175, 23081, 5974,  24770, 18199, 15358,\r
+  22147, 2169,  26236, 18287, 28556, 8837,  8986,  17038, 30606, 31142,\r
   16004, 17194, 23913, 28745, 17472, 20037, 23398, 15265, 10374, 3016,\r
-  11294, 21753, 17477, 25206, 1687, 5449, 21095, 4127, 9647, 12039,\r
-  21078, 4630, 24254, 31295, 29631, 29157, 2935, 18150, 28566, 19006,\r
-  19215, 10604, 29274, 6197, 24226, 30096, 31642, 11437, 9426, 23416,\r
-  22200, 21008, 30897, 23297, 4333, 31300, 30689, 340, 4237, 2266,\r
-  29689, 9402, 12684, 3464, 4907, 4785, 2882, 729, 25636, 25663,\r
-  17259, 25891, 26932, 27782, 4722, 13754, 24239, 30105, 23791, 15971,\r
-  16531, 16270, 1646, 10507, 21354, 30164, 24946, 16313, 13426, 3783,\r
-  24761, 26818, 13564, 18818, 28098, 13116, 1298, 15860, 2189, 1972,\r
-  29020, 13111, 5282, 20772, 14405, 12316, 30548, 12831, 14937, 31243,\r
-  27463, 6735, 2545, 30218, 11568, 20513, 7699, 8219, 26076, 17087,\r
-  11412, 3275, 30068, 14399, 28543, 10504, 1023, 11289, 22971, 11315,\r
-  31528, 29151, 32487, 28790, 19777, 28712, 12937, 9560, 11657, 1998,\r
-  8808, 4238, 7594, 31577, 28726, 20756, 29830, 27322, 3698, 22653,\r
-  16947, 14141, 25741, 3720, 13636, 25529, 32332, 21235, 25931, 17673,\r
-  19053, 20884, 9884, 5824, 11405, 23717, 19283, 18457, 26185, 16736,\r
-  30104, 5421, 7076, 19148, 24353, 16489, 30376, 26326, 14841, 62,\r
-  11857, 8611, 3712, 29978, 29862, 27429, 15028, 15256, 4137, 23276,\r
-  30382, 28404, 9329, 26175, 623, 12225, 28182, 15468, 24797, 734,\r
-  30157, 15708, 17417, 7334, 32468, 15978, 3763, 27751, 13457, 4469,\r
-  3856, 31765, 23414, 564, 22219, 30784, 2343, 15818, 21577, 29764,\r
-  10207, 22683, 4401, 16064, 18704, 26205, 14892, 23113, 2889, 22642,\r
-  21481, 28255, 5981, 5749, 16741, 17567, 30914, 1299, 32617, 9787,\r
-  21815, 28444, 14676, 11688, 18345, 1241, 6938, 24726, 25176, 26017,\r
-  1165, 9765, 7222, 26535, 475, 27990, 11663, 4630, 11608, 6079,\r
-  8175, 32096, 24190, 31876, 5441, 3538, 18994, 6018, 2612, 15469,\r
-  30793, 14541, 6115, 25073, 12875, 18525, 30900, 14394, 20343, 29188,\r
-  21632, 1487, 519, 19875, 6133, 10169, 2485, 22430, 23353, 28049,\r
-  28541, 19853, 7120, 31709, 11941, 17205, 19904, 10397, 28411, 950,\r
-  2035, 1568, 13406, 4869, 20444, 4124, 10111, 25501, 18526, 12030,\r
-  23529, 5234, 18409, 1407, 14143, 19239, 6630, 15480, 24005, 32384,\r
+  11294, 21753, 17477, 25206, 1687,  5449,  21095, 4127,  9647,  12039,\r
+  21078, 4630,  24254, 31295, 29631, 29157, 2935,  18150, 28566, 19006,\r
+  19215, 10604, 29274, 6197,  24226, 30096, 31642, 11437, 9426,  23416,\r
+  22200, 21008, 30897, 23297, 4333,  31300, 30689, 340,   4237,  2266,\r
+  29689, 9402,  12684, 3464,  4907,  4785,  2882,  729,   25636, 25663,\r
+  17259, 25891, 26932, 27782, 4722,  13754, 24239, 30105, 23791, 15971,\r
+  16531, 16270, 1646,  10507, 21354, 30164, 24946, 16313, 13426, 3783,\r
+  24761, 26818, 13564, 18818, 28098, 13116, 1298,  15860, 2189,  1972,\r
+  29020, 13111, 5282,  20772, 14405, 12316, 30548, 12831, 14937, 31243,\r
+  27463, 6735,  2545,  30218, 11568, 20513, 7699,  8219,  26076, 17087,\r
+  11412, 3275,  30068, 14399, 28543, 10504, 1023,  11289, 22971, 11315,\r
+  31528, 29151, 32487, 28790, 19777, 28712, 12937, 9560,  11657, 1998,\r
+  8808,  4238,  7594,  31577, 28726, 20756, 29830, 27322, 3698,  22653,\r
+  16947, 14141, 25741, 3720,  13636, 25529, 32332, 21235, 25931, 17673,\r
+  19053, 20884, 9884,  5824,  11405, 23717, 19283, 18457, 26185, 16736,\r
+  30104, 5421,  7076,  19148, 24353, 16489, 30376, 26326, 14841, 62,\r
+  11857, 8611,  3712,  29978, 29862, 27429, 15028, 15256, 4137,  23276,\r
+  30382, 28404, 9329,  26175, 623,   12225, 28182, 15468, 24797, 734,\r
+  30157, 15708, 17417, 7334,  32468, 15978, 3763,  27751, 13457, 4469,\r
+  3856,  31765, 23414, 564,   22219, 30784, 2343,  15818, 21577, 29764,\r
+  10207, 22683, 4401,  16064, 18704, 26205, 14892, 23113, 2889,  22642,\r
+  21481, 28255, 5981,  5749,  16741, 17567, 30914, 1299,  32617, 9787,\r
+  21815, 28444, 14676, 11688, 18345, 1241,  6938,  24726, 25176, 26017,\r
+  1165,  9765,  7222,  26535, 475,   27990, 11663, 4630,  11608, 6079,\r
+  8175,  32096, 24190, 31876, 5441,  3538,  18994, 6018,  2612,  15469,\r
+  30793, 14541, 6115,  25073, 12875, 18525, 30900, 14394, 20343, 29188,\r
+  21632, 1487,  519,   19875, 6133,  10169, 2485,  22430, 23353, 28049,\r
+  28541, 19853, 7120,  31709, 11941, 17205, 19904, 10397, 28411, 950,\r
+  2035,  1568,  13406, 4869,  20444, 4124,  10111, 25501, 18526, 12030,\r
+  23529, 5234,  18409, 1407,  14143, 19239, 6630,  15480, 24005, 32384,\r
   28501, 16631, 18466, 17690, 17076, 10386, 26213, 31834, 13091, 12283,\r
-  29765, 23459, 6855, 2005, 25261, 18380, 25708, 25542, 31352, 31441,\r
-  25710, 32718, 7289, 21448, 14553, 4055, 17086, 25367, 29903, 19853,\r
-  10005, 1765, 6954, 6255, 13008, 11214, 11363, 23590, 7110, 1499,\r
-  19379, 12566, 21146, 21937, 16247, 27444, 9792, 3592, 20697, 2839,\r
-  16572, 27999, 20141, 17745, 24877, 24558, 14233, 5119, 30475, 15837,\r
-  20345, 1695, 685, 14771, 9217, 17442, 24334, 4881, 17572, 29506,\r
-  22736, 24992, 12725, 32022, 13953, 3144, 18125, 24036, 5662, 16547,\r
-  9324, 30774, 17365, 32433, 23779, 7728, 28175, 3277, 26737, 17696,\r
-  23214, 26591, 9388, 5975, 403, 980, 25378, 22584, 12388, 28747,\r
-  19265, 20110, 7052, 13713, 4980, 10531, 131, 32208, 21903, 4494,\r
-  15695, 24195, 621, 24908, 331, 22061, 14551, 11538, 31527, 21067,\r
-  936, 6754, 10288, 20871, 17199, 13149, 10449, 30254, 17877, 11480,\r
-  15962, 7396, 21504, 21169, 22017, 19351, 13111, 3683, 17703, 3249,\r
-  25734, 15321, 6876, 2706, 8740, 16512, 10916, 32573, 24659, 6304,\r
-  13435, 19537, 21896, 20204, 19992, 20284, 19916, 4696, 29039, 17835,\r
-  19810, 24106, 21625, 22084, 18090, 26708, 28215, 4504, 26437, 18945,\r
-  19701, 32595, 16506, 5742, 8652, 2998, 20184, 21499, 9578, 26952,\r
-  9501, 2946, 14870, 15048, 15959, 25063, 28398, 6501, 15177, 28656,\r
-  18547, 19250, 3856, 19543, 29256, 15828, 24327, 31774, 15927, 6525,\r
-  6631, 15651, 5237, 31, 2611, 24308, 14631, 19673, 26579, 7652,\r
-  2852, 26550, 11518, 13407, 8189, 406, 12894, 5754, 24891, 19564,\r
-  22127, 3022, 3815, 938, 13353, 7047, 19280, 22778, 11486, 32440,\r
-  5128, 6447, 18789, 3314, 19504, 7547, 13944, 22292, 15349, 23778,\r
+  29765, 23459, 6855,  2005,  25261, 18380, 25708, 25542, 31352, 31441,\r
+  25710, 32718, 7289,  21448, 14553, 4055,  17086, 25367, 29903, 19853,\r
+  10005, 1765,  6954,  6255,  13008, 11214, 11363, 23590, 7110,  1499,\r
+  19379, 12566, 21146, 21937, 16247, 27444, 9792,  3592,  20697, 2839,\r
+  16572, 27999, 20141, 17745, 24877, 24558, 14233, 5119,  30475, 15837,\r
+  20345, 1695,  685,   14771, 9217,  17442, 24334, 4881,  17572, 29506,\r
+  22736, 24992, 12725, 32022, 13953, 3144,  18125, 24036, 5662,  16547,\r
+  9324,  30774, 17365, 32433, 23779, 7728,  28175, 3277,  26737, 17696,\r
+  23214, 26591, 9388,  5975,  403,   980,   25378, 22584, 12388, 28747,\r
+  19265, 20110, 7052,  13713, 4980,  10531, 131,   32208, 21903, 4494,\r
+  15695, 24195, 621,   24908, 331,   22061, 14551, 11538, 31527, 21067,\r
+  936,   6754,  10288, 20871, 17199, 13149, 10449, 30254, 17877, 11480,\r
+  15962, 7396,  21504, 21169, 22017, 19351, 13111, 3683,  17703, 3249,\r
+  25734, 15321, 6876,  2706,  8740,  16512, 10916, 32573, 24659, 6304,\r
+  13435, 19537, 21896, 20204, 19992, 20284, 19916, 4696,  29039, 17835,\r
+  19810, 24106, 21625, 22084, 18090, 26708, 28215, 4504,  26437, 18945,\r
+  19701, 32595, 16506, 5742,  8652,  2998,  20184, 21499, 9578,  26952,\r
+  9501,  2946,  14870, 15048, 15959, 25063, 28398, 6501,  15177, 28656,\r
+  18547, 19250, 3856,  19543, 29256, 15828, 24327, 31774, 15927, 6525,\r
+  6631,  15651, 5237,  31,    2611,  24308, 14631, 19673, 26579, 7652,\r
+  2852,  26550, 11518, 13407, 8189,  406,   12894, 5754,  24891, 19564,\r
+  22127, 3022,  3815,  938,   13353, 7047,  19280, 22778, 11486, 32440,\r
+  5128,  6447,  18789, 3314,  19504, 7547,  13944, 22292, 15349, 23778,\r
   24667, 25700, 10587, 12782, 29118, 17887, 28218, 10405, 14821, 29646,\r
-  12165, 26808, 15878, 10650, 6610, 4093, 31219, 13281, 18199, 4383,\r
-  5112, 25801, 12722, 27285, 2055, 8853, 22701, 18896, 3602, 17526,\r
-  31039, 28345, 16313, 12707, 406, 25434, 16677, 30379, 8403, 23515,\r
-  28980, 17674, 6231, 21169, 25814, 4347, 12861, 13586, 12727, 16782,\r
-  295, 13228, 19486, 9978, 19774, 2966, 31765, 11060, 21108, 23431,\r
-  11722, 28865, 13325, 22854, 8501, 21448, 18781, 31585, 15611, 363,\r
-  10195, 27426, 2194, 6487, 3638, 21183, 4518, 3482, 5423, 23505,\r
-  16572, 13494, 18696, 29191, 24854, 16883, 4275, 7708, 24534, 6137,\r
-  1550, 3334, 1638, 10653, 9061, 6001, 13334, 23804, 27192, 23915,\r
-  23303, 9414, 26431, 19041, 17481, 17373, 14252, 5450, 24384, 28447,\r
-  29616, 4386, 8268, 16767, 8768, 24986, 12968, 13915, 6681, 26638,\r
-  403, 7690, 29698, 31927, 23726, 16564, 29265, 18466, 15270, 9062,\r
-  432, 20704, 25874, 9061, 14113, 4480, 31903, 23491, 28480, 10938,\r
-  15466, 2353, 29384, 1517, 23981, 24596, 17497, 31692, 29854, 2267,\r
-  31609, 21331, 17300, 13967, 20696, 11521, 18796, 2987, 16344, 11841,\r
-  3883, 16687, 24908, 297, 30948, 17392, 25472, 31846, 7645, 15410,\r
-  17275, 1911, 27629, 13176, 11136, 3866, 6696, 19611, 6875, 7684,\r
-  11967, 16922, 15066, 28117, 7201, 7857, 1305, 1099, 14694, 25645,\r
-  7938, 12470, 6638, 5246, 3733, 32172, 2117, 20750, 11365, 27389,\r
-  10314, 1105, 30435, 1001, 1169, 18846, 10975, 9617, 2821, 1853,\r
-  17740, 2476, 15570, 28353, 21060, 27003, 5506, 22423, 11596, 19711,\r
-  28005, 10208, 5848, 23145, 23351, 16252, 17170, 14802, 22781, 6503,\r
-  17879, 24876, 12336, 5961, 2, 23673, 28957, 11080, 29166, 26171,\r
-  31116, 21537, 5942, 25643, 20128, 8055, 12223, 7213, 19966, 9835,\r
-  6649, 13700, 31281, 14444, 8801, 23106, 26190, 10320, 27723, 3331,\r
-  1235, 28580, 22494, 1755, 24021, 7233, 2400, 12685, 28763, 15392,\r
-  30132, 4606, 17157, 15216, 6176, 14057, 26609, 26853, 13652, 32723,\r
-  30686, 5202, 20392, 20546, 18578, 31610, 12454, 810, 25210, 31012,\r
+  12165, 26808, 15878, 10650, 6610,  4093,  31219, 13281, 18199, 4383,\r
+  5112,  25801, 12722, 27285, 2055,  8853,  22701, 18896, 3602,  17526,\r
+  31039, 28345, 16313, 12707, 406,   25434, 16677, 30379, 8403,  23515,\r
+  28980, 17674, 6231,  21169, 25814, 4347,  12861, 13586, 12727, 16782,\r
+  295,   13228, 19486, 9978,  19774, 2966,  31765, 11060, 21108, 23431,\r
+  11722, 28865, 13325, 22854, 8501,  21448, 18781, 31585, 15611, 363,\r
+  10195, 27426, 2194,  6487,  3638,  21183, 4518,  3482,  5423,  23505,\r
+  16572, 13494, 18696, 29191, 24854, 16883, 4275,  7708,  24534, 6137,\r
+  1550,  3334,  1638,  10653, 9061,  6001,  13334, 23804, 27192, 23915,\r
+  23303, 9414,  26431, 19041, 17481, 17373, 14252, 5450,  24384, 28447,\r
+  29616, 4386,  8268,  16767, 8768,  24986, 12968, 13915, 6681,  26638,\r
+  403,   7690,  29698, 31927, 23726, 16564, 29265, 18466, 15270, 9062,\r
+  432,   20704, 25874, 9061,  14113, 4480,  31903, 23491, 28480, 10938,\r
+  15466, 2353,  29384, 1517,  23981, 24596, 17497, 31692, 29854, 2267,\r
+  31609, 21331, 17300, 13967, 20696, 11521, 18796, 2987,  16344, 11841,\r
+  3883,  16687, 24908, 297,   30948, 17392, 25472, 31846, 7645,  15410,\r
+  17275, 1911,  27629, 13176, 11136, 3866,  6696,  19611, 6875,  7684,\r
+  11967, 16922, 15066, 28117, 7201,  7857,  1305,  1099,  14694, 25645,\r
+  7938,  12470, 6638,  5246,  3733,  32172, 2117,  20750, 11365, 27389,\r
+  10314, 1105,  30435, 1001,  1169,  18846, 10975, 9617,  2821,  1853,\r
+  17740, 2476,  15570, 28353, 21060, 27003, 5506,  22423, 11596, 19711,\r
+  28005, 10208, 5848,  23145, 23351, 16252, 17170, 14802, 22781, 6503,\r
+  17879, 24876, 12336, 5961,  2,     23673, 28957, 11080, 29166, 26171,\r
+  31116, 21537, 5942,  25643, 20128, 8055,  12223, 7213,  19966, 9835,\r
+  6649,  13700, 31281, 14444, 8801,  23106, 26190, 10320, 27723, 3331,\r
+  1235,  28580, 22494, 1755,  24021, 7233,  2400,  12685, 28763, 15392,\r
+  30132, 4606,  17157, 15216, 6176,  14057, 26609, 26853, 13652, 32723,\r
+  30686, 5202,  20392, 20546, 18578, 31610, 12454, 810,   25210, 31012,\r
   11208, 12968, 31121, 10861, 32386, 10226, 28034, 32354, 29059, 1935,\r
-  5393, 25550, 7993, 3523, 22711, 2385, 915, 28494, 24716, 25522,\r
-  14602, 12886, 22891, 28278, 1762, 5025, 5456, 23218, 9389, 19463,\r
-  2820, 8221, 22290, 18983, 30973, 9321, 18892, 13402, 12159, 27860,\r
-  19189, 18149, 17928, 3578, 19333, 25203, 16363, 19949, 18710, 24258,\r
-  25659, 11399, 1258, 30108, 19690, 17919, 11310, 23049, 28978, 17339,\r
-  21888, 20419, 12084, 20325, 30640, 22250, 6368, 15425, 15811, 16377,\r
-  2068, 23230, 23614, 15353, 15880, 10827, 19361, 15604, 4585, 23915,\r
-  3121, 15021, 29380, 25612, 22266, 12174, 16550, 28693, 24597, 25058,\r
-  16642, 10302, 3623, 19780, 12882, 32036, 19242, 16471, 17153, 21661,\r
-  21104, 696, 28553, 32584, 8164, 5937, 3033, 11369, 25748, 28208,\r
-  31737, 20468, 9324, 7287, 24560, 12008, 24900, 27156, 14054, 1502,\r
-  30494, 19860, 15750, 32226, 3496, 10100, 2982, 25473, 17161, 20952,\r
-  13610, 21539, 29657, 22655, 29221, 21916, 17521, 27895, 4674, 3069,\r
-  20326, 27405, 16227, 432, 7504, 392, 21383, 13764, 18896, 21271,\r
-  17905, 25733, 31185, 9095, 29575, 15952, 1805, 25913, 18040, 165,\r
-  1235, 15060, 289, 9598, 520, 16695, 12338, 7391, 11373, 13746,\r
-  2060, 17583, 14623, 19573, 12654, 4806, 13924, 19272, 18769, 9543,\r
-  10916, 15485, 6160, 11568, 9398, 20003, 17356, 26415, 8542, 12669,\r
-  527, 5816, 27155, 3763, 3247, 14164, 20741, 24774, 24054, 22588,\r
+  5393,  25550, 7993,  3523,  22711, 2385,  915,   28494, 24716, 25522,\r
+  14602, 12886, 22891, 28278, 1762,  5025,  5456,  23218, 9389,  19463,\r
+  2820,  8221,  22290, 18983, 30973, 9321,  18892, 13402, 12159, 27860,\r
+  19189, 18149, 17928, 3578,  19333, 25203, 16363, 19949, 18710, 24258,\r
+  25659, 11399, 1258,  30108, 19690, 17919, 11310, 23049, 28978, 17339,\r
+  21888, 20419, 12084, 20325, 30640, 22250, 6368,  15425, 15811, 16377,\r
+  2068,  23230, 23614, 15353, 15880, 10827, 19361, 15604, 4585,  23915,\r
+  3121,  15021, 29380, 25612, 22266, 12174, 16550, 28693, 24597, 25058,\r
+  16642, 10302, 3623,  19780, 12882, 32036, 19242, 16471, 17153, 21661,\r
+  21104, 696,   28553, 32584, 8164,  5937,  3033,  11369, 25748, 28208,\r
+  31737, 20468, 9324,  7287,  24560, 12008, 24900, 27156, 14054, 1502,\r
+  30494, 19860, 15750, 32226, 3496,  10100, 2982,  25473, 17161, 20952,\r
+  13610, 21539, 29657, 22655, 29221, 21916, 17521, 27895, 4674,  3069,\r
+  20326, 27405, 16227, 432,   7504,  392,   21383, 13764, 18896, 21271,\r
+  17905, 25733, 31185, 9095,  29575, 15952, 1805,  25913, 18040, 165,\r
+  1235,  15060, 289,   9598,  520,   16695, 12338, 7391,  11373, 13746,\r
+  2060,  17583, 14623, 19573, 12654, 4806,  13924, 19272, 18769, 9543,\r
+  10916, 15485, 6160,  11568, 9398,  20003, 17356, 26415, 8542,  12669,\r
+  527,   5816,  27155, 3763,  3247,  14164, 20741, 24774, 24054, 22588,\r
   28254, 19913, 30719, 22054, 17096, 20303, 15203, 26463, 25392, 16160,\r
-  4374, 11802, 4554, 7216, 27531, 17672, 26710, 7121, 25375, 31272,\r
-  30625, 23335, 29108, 11233, 78, 17628, 4508, 31822, 10454, 32534,\r
-  17338, 20185, 21710, 30118, 16611, 17419, 361, 21635, 23178, 10146,\r
-  19261, 1654, 20125, 1252, 330, 3094, 4778, 21812, 26936, 16119,\r
-  23110, 31971, 6368, 21791, 23727, 2632, 2318, 14521, 7600, 27411,\r
-  17797, 2062, 15813, 3038, 24132, 20912, 5504, 5637, 32264, 24824,\r
-  8235, 16312, 18962, 11955, 31151, 25166, 28458, 18969, 29621, 19164,\r
-  32740, 19967, 1546, 30983, 2082, 13901, 7752, 16406, 31194, 10673,\r
-  4787, 32332, 22298, 2965, 15457, 24180, 15689, 27215, 31902, 22461,\r
-  13743, 7576, 12686, 24520, 28472, 10560, 24084, 768, 17780, 14368,\r
-  2291, 22314, 14563, 17231, 5939, 31804, 15472, 14745, 9671, 8051,\r
-  31803, 15148, 9836, 13472, 411, 15765, 17364, 22979, 22628, 11243,\r
-  20740, 6362, 6501, 22346, 18427, 31739, 32309, 19331, 7060, 10145,\r
-  25136, 23570, 24749, 28484, 21692, 32081, 4745, 6188, 8401, 15851,\r
-  30323, 16006, 28088, 29842, 25252, 4280, 23826, 30197, 27751, 21746,\r
-  18973, 26348, 16763, 27909, 3635, 32502, 12473, 19577, 28307, 20198,\r
-  9718, 5337, 5988, 24537, 7467, 19538, 18423, 15979, 20692, 25213,\r
-  5197, 17963, 10133, 30584, 24537, 16716, 9507, 6459, 30086, 12445,\r
+  4374,  11802, 4554,  7216,  27531, 17672, 26710, 7121,  25375, 31272,\r
+  30625, 23335, 29108, 11233, 78,    17628, 4508,  31822, 10454, 32534,\r
+  17338, 20185, 21710, 30118, 16611, 17419, 361,   21635, 23178, 10146,\r
+  19261, 1654,  20125, 1252,  330,   3094,  4778,  21812, 26936, 16119,\r
+  23110, 31971, 6368,  21791, 23727, 2632,  2318,  14521, 7600,  27411,\r
+  17797, 2062,  15813, 3038,  24132, 20912, 5504,  5637,  32264, 24824,\r
+  8235,  16312, 18962, 11955, 31151, 25166, 28458, 18969, 29621, 19164,\r
+  32740, 19967, 1546,  30983, 2082,  13901, 7752,  16406, 31194, 10673,\r
+  4787,  32332, 22298, 2965,  15457, 24180, 15689, 27215, 31902, 22461,\r
+  13743, 7576,  12686, 24520, 28472, 10560, 24084, 768,   17780, 14368,\r
+  2291,  22314, 14563, 17231, 5939,  31804, 15472, 14745, 9671,  8051,\r
+  31803, 15148, 9836,  13472, 411,   15765, 17364, 22979, 22628, 11243,\r
+  20740, 6362,  6501,  22346, 18427, 31739, 32309, 19331, 7060,  10145,\r
+  25136, 23570, 24749, 28484, 21692, 32081, 4745,  6188,  8401,  15851,\r
+  30323, 16006, 28088, 29842, 25252, 4280,  23826, 30197, 27751, 21746,\r
+  18973, 26348, 16763, 27909, 3635,  32502, 12473, 19577, 28307, 20198,\r
+  9718,  5337,  5988,  24537, 7467,  19538, 18423, 15979, 20692, 25213,\r
+  5197,  17963, 10133, 30584, 24537, 16716, 9507,  6459,  30086, 12445,\r
   25186, 27433, 24828, 20411, 20683, 27622, 27935, 10628, 19729, 19817,\r
-  27609, 20688, 17668, 4946, 11034, 4444, 29877, 27517, 15133, 11527,\r
-  32475, 29911, 27116, 31041, 25717, 26736, 6182, 28864, 8113, 22738,\r
-  19200, 3444, 26125, 31634, 8074, 32446, 21948, 12580, 820, 4061,\r
-  4683, 16115, 21904, 21161, 5252, 28593, 22361, 25219, 12691, 3564,\r
-  2741, 21388, 7527, 27875, 26807, 8725, 27739, 29591, 4136, 13911,\r
+  27609, 20688, 17668, 4946,  11034, 4444,  29877, 27517, 15133, 11527,\r
+  32475, 29911, 27116, 31041, 25717, 26736, 6182,  28864, 8113,  22738,\r
+  19200, 3444,  26125, 31634, 8074,  32446, 21948, 12580, 820,   4061,\r
+  4683,  16115, 21904, 21161, 5252,  28593, 22361, 25219, 12691, 3564,\r
+  2741,  21388, 7527,  27875, 26807, 8725,  27739, 29591, 4136,  13911,\r
   22550, 24101, 20871, 20580, 19375, 10578, 15438, 28766, 31509, 23656,\r
-  4471, 3815, 2479, 9537, 16191, 14808, 1087, 31393, 18986, 26934,\r
-  12812, 14537, 18247, 8290, 320, 27720, 19381, 12175, 4751, 16149,\r
-  30054, 10617, 10265, 15323, 28963, 24917, 31634, 23444, 8656, 1283,\r
-  16288, 4441, 19698, 10123, 20612, 18552, 28782, 20423, 22525, 2248,\r
-  9619, 24413, 26729, 13625, 13659, 26097, 21294, 6319, 16878, 13464,\r
-  15960, 13585, 10600, 17807, 15748, 2204, 1500, 19501, 29180, 15742,\r
-  28313, 278, 30243, 30624, 24236, 32434, 6164, 13507, 25766, 16861,\r
-  10118, 29390, 32671, 8928, 23283, 4198, 19834, 23200, 4089, 7104,\r
-  28267, 26646, 27392, 947, 16823, 27135, 6685, 24338, 24507, 16597,\r
-  16182, 15928, 30000, 3325, 17767, 15076, 25517, 23874, 9637, 14920,\r
-  19309, 8578, 24225, 5468, 25171, 13735, 9199, 7032, 15403, 6361,\r
-  2152, 8994, 26675, 9459, 10189, 7461, 2010, 23091, 5037, 24035,\r
-  17095, 4917, 1928, 4331, 15389, 13602, 10292, 2766, 27902, 12325,\r
-  21120, 27951, 2126, 25630, 15640, 20762, 19385, 15771, 29096, 27543,\r
-  25079, 7940, 24900, 24702, 14926, 27157, 6152, 14220, 31065, 15761,\r
-  21499, 10167, 26377, 15157, 825, 11455, 32233, 27115, 27986, 6918,\r
-  32678, 2113, 3053, 9633, 13006, 25369, 22193, 2735, 11736, 1186,\r
-  1637, 23017, 21349, 20359, 4949, 2427, 25541, 23142, 29432, 19731,\r
-  18365, 8067, 22737, 25399, 30855, 21694, 32403, 19675, 10523, 32706,\r
-  14216, 9011, 5293, 6784, 21299, 32710, 5751, 23516, 4917, 10948,\r
-  28344, 30885, 14445, 921, 22781, 28875, 27491, 22466, 22431, 15564,\r
-  999, 7135, 22669, 28528, 29685, 15114, 5963, 8118, 23004, 28776,\r
-  24635, 12046, 32159, 24317, 6428, 16328, 15772, 23493, 13008, 28621,\r
-  11883, 7680, 26722, 11149, 29193, 18893, 28487, 11576, 2614, 2298,\r
-  31972, 31793, 10779, 9755, 17745, 192, 19248, 24025, 22365, 7,\r
-  2397, 23181, 31186, 5175, 2656, 3598, 28154, 29955, 29806, 24006,\r
-  15201, 9301, 14365, 21772, 26845, 21312, 12673, 20910, 18124, 4919,\r
-  25749, 24268, 11933, 10108, 22749, 12781, 23442, 2778, 22602, 32332,\r
-  16579, 32151, 5470, 4723, 103, 12197, 31888, 29707, 26703, 23320,\r
-  13554, 28147, 6067, 25309, 5137, 17551, 12849, 18856, 2333, 1123,\r
-  17427, 5422, 17226, 7904, 15313, 29077, 6005, 18813, 7382, 10536,\r
-  26891, 21258, 20359, 17488, 6695, 25409, 12930, 26047, 18170, 22687,\r
+  4471,  3815,  2479,  9537,  16191, 14808, 1087,  31393, 18986, 26934,\r
+  12812, 14537, 18247, 8290,  320,   27720, 19381, 12175, 4751,  16149,\r
+  30054, 10617, 10265, 15323, 28963, 24917, 31634, 23444, 8656,  1283,\r
+  16288, 4441,  19698, 10123, 20612, 18552, 28782, 20423, 22525, 2248,\r
+  9619,  24413, 26729, 13625, 13659, 26097, 21294, 6319,  16878, 13464,\r
+  15960, 13585, 10600, 17807, 15748, 2204,  1500,  19501, 29180, 15742,\r
+  28313, 278,   30243, 30624, 24236, 32434, 6164,  13507, 25766, 16861,\r
+  10118, 29390, 32671, 8928,  23283, 4198,  19834, 23200, 4089,  7104,\r
+  28267, 26646, 27392, 947,   16823, 27135, 6685,  24338, 24507, 16597,\r
+  16182, 15928, 30000, 3325,  17767, 15076, 25517, 23874, 9637,  14920,\r
+  19309, 8578,  24225, 5468,  25171, 13735, 9199,  7032,  15403, 6361,\r
+  2152,  8994,  26675, 9459,  10189, 7461,  2010,  23091, 5037,  24035,\r
+  17095, 4917,  1928,  4331,  15389, 13602, 10292, 2766,  27902, 12325,\r
+  21120, 27951, 2126,  25630, 15640, 20762, 19385, 15771, 29096, 27543,\r
+  25079, 7940,  24900, 24702, 14926, 27157, 6152,  14220, 31065, 15761,\r
+  21499, 10167, 26377, 15157, 825,   11455, 32233, 27115, 27986, 6918,\r
+  32678, 2113,  3053,  9633,  13006, 25369, 22193, 2735,  11736, 1186,\r
+  1637,  23017, 21349, 20359, 4949,  2427,  25541, 23142, 29432, 19731,\r
+  18365, 8067,  22737, 25399, 30855, 21694, 32403, 19675, 10523, 32706,\r
+  14216, 9011,  5293,  6784,  21299, 32710, 5751,  23516, 4917,  10948,\r
+  28344, 30885, 14445, 921,   22781, 28875, 27491, 22466, 22431, 15564,\r
+  999,   7135,  22669, 28528, 29685, 15114, 5963,  8118,  23004, 28776,\r
+  24635, 12046, 32159, 24317, 6428,  16328, 15772, 23493, 13008, 28621,\r
+  11883, 7680,  26722, 11149, 29193, 18893, 28487, 11576, 2614,  2298,\r
+  31972, 31793, 10779, 9755,  17745, 192,   19248, 24025, 22365, 7,\r
+  2397,  23181, 31186, 5175,  2656,  3598,  28154, 29955, 29806, 24006,\r
+  15201, 9301,  14365, 21772, 26845, 21312, 12673, 20910, 18124, 4919,\r
+  25749, 24268, 11933, 10108, 22749, 12781, 23442, 2778,  22602, 32332,\r
+  16579, 32151, 5470,  4723,  103,   12197, 31888, 29707, 26703, 23320,\r
+  13554, 28147, 6067,  25309, 5137,  17551, 12849, 18856, 2333,  1123,\r
+  17427, 5422,  17226, 7904,  15313, 29077, 6005,  18813, 7382,  10536,\r
+  26891, 21258, 20359, 17488, 6695,  25409, 12930, 26047, 18170, 22687,\r
   20771, 14063, 20592, 14450, 25421, 30923, 31248, 25906, 31335, 3244,\r
-  7973, 3860, 32676, 2438, 17179, 4829, 26504, 12644, 299, 15092,\r
-  16040, 23313, 7995, 5820, 29617, 9240, 18431, 23584, 683, 32495,\r
-  12389, 1904, 25983, 29040, 11312, 11627, 28087, 6024, 30178, 13213,\r
-  27526, 15923, 11744, 25323, 17928, 10920, 21713, 2156, 26826, 25040,\r
-  17735, 6266, 10893, 1021, 28833, 2057, 4423, 4313, 25392, 20536,\r
-  5995, 10141, 21400, 20518, 22122, 6019, 16761, 263, 14970, 21629,\r
-  26447, 12407, 9110, 9255, 919, 13581, 6086, 5882, 15668, 20788,\r
-  27296, 8643, 10000, 14390, 32271, 27476, 9990, 27034, 83, 8826,\r
-  17408, 22192, 19273, 28719, 8028, 1642, 18669, 23056, 7573, 11117,\r
-  285, 10513, 543, 24680, 13472, 10351, 658, 32421, 10598, 20710,\r
-  5387, 17118, 3089, 13349, 32207, 13393, 2741, 15487, 24626, 534,\r
-  3292, 5347, 22200, 19121, 11470, 19726, 22137, 484, 22031, 3583,\r
-  25034, 26823, 11560, 29355, 19993, 19482, 9386, 22771, 8473, 31961,\r
+  7973,  3860,  32676, 2438,  17179, 4829,  26504, 12644, 299,   15092,\r
+  16040, 23313, 7995,  5820,  29617, 9240,  18431, 23584, 683,   32495,\r
+  12389, 1904,  25983, 29040, 11312, 11627, 28087, 6024,  30178, 13213,\r
+  27526, 15923, 11744, 25323, 17928, 10920, 21713, 2156,  26826, 25040,\r
+  17735, 6266,  10893, 1021,  28833, 2057,  4423,  4313,  25392, 20536,\r
+  5995,  10141, 21400, 20518, 22122, 6019,  16761, 263,   14970, 21629,\r
+  26447, 12407, 9110,  9255,  919,   13581, 6086,  5882,  15668, 20788,\r
+  27296, 8643,  10000, 14390, 32271, 27476, 9990,  27034, 83,    8826,\r
+  17408, 22192, 19273, 28719, 8028,  1642,  18669, 23056, 7573,  11117,\r
+  285,   10513, 543,   24680, 13472, 10351, 658,   32421, 10598, 20710,\r
+  5387,  17118, 3089,  13349, 32207, 13393, 2741,  15487, 24626, 534,\r
+  3292,  5347,  22200, 19121, 11470, 19726, 22137, 484,   22031, 3583,\r
+  25034, 26823, 11560, 29355, 19993, 19482, 9386,  22771, 8473,  31961,\r
   25457, 16083, 18720, 14097, 24614, 32732, 13517, 27379, 22023, 1764,\r
-  3565, 7206, 30443, 18428, 7071, 19298, 32384, 5794, 4023, 7739,\r
-  2776, 11320, 17249, 14650, 24100, 29365, 9991, 50, 28095, 26523,\r
-  26996, 12497, 25198, 11049, 6713, 2934, 28134, 4049, 19279, 32322,\r
-  6542, 15852, 30207, 1650, 29319, 16301, 9983, 15340, 14058, 2387,\r
-  13790, 15127, 26704, 20899, 2977, 24816, 26520, 20118, 15535, 3419,\r
-  32228, 10831, 31210, 24502, 30437, 17487, 7455, 8628, 12377, 4844,\r
-  21664, 21609, 17105, 14591, 12847, 5025, 10168, 9182, 8478, 17270,\r
-  145, 17802, 1973, 15394, 25472, 16169, 6100, 26641, 20748, 4022,\r
-  4825, 2107, 14115, 6903, 1220, 4784, 9566, 7343, 15002, 24436,\r
-  5767, 23574, 30727, 6030, 29529, 13190, 12358, 6748, 12934, 16503,\r
-  17990, 19753, 14847, 20397, 6149, 2305, 25967, 22960, 22848, 6852,\r
-  22024, 9085, 335, 2426, 28547, 22395, 20555, 5862, 9826, 10928,\r
-  12145, 11870, 889, 25141, 28875, 13786, 172, 19687, 12813, 30026,\r
-  8954, 1376, 26301, 2093, 30139, 4134, 19862, 3423, 19237, 10785,\r
-  21807, 2354, 26133, 23379, 13272, 11713, 28941, 8643, 14020, 32129,\r
-  26232, 18618, 3182, 31769, 20022, 16434, 3637, 24948, 29780, 2188,\r
-  19785, 788, 32027, 1665, 26315, 26537, 31309, 21339, 25392, 14562,\r
-  26027, 23909, 9447, 1923, 9402, 27808, 10811, 5560, 31175, 24503,\r
-  9850, 7080, 1577, 13621, 13911, 14926, 16838, 13558, 13197, 4228,\r
-  3033, 19931, 27589, 9825, 14578, 31682, 16058, 8901, 16958, 18870,\r
+  3565,  7206,  30443, 18428, 7071,  19298, 32384, 5794,  4023,  7739,\r
+  2776,  11320, 17249, 14650, 24100, 29365, 9991,  50,    28095, 26523,\r
+  26996, 12497, 25198, 11049, 6713,  2934,  28134, 4049,  19279, 32322,\r
+  6542,  15852, 30207, 1650,  29319, 16301, 9983,  15340, 14058, 2387,\r
+  13790, 15127, 26704, 20899, 2977,  24816, 26520, 20118, 15535, 3419,\r
+  32228, 10831, 31210, 24502, 30437, 17487, 7455,  8628,  12377, 4844,\r
+  21664, 21609, 17105, 14591, 12847, 5025,  10168, 9182,  8478,  17270,\r
+  145,   17802, 1973,  15394, 25472, 16169, 6100,  26641, 20748, 4022,\r
+  4825,  2107,  14115, 6903,  1220,  4784,  9566,  7343,  15002, 24436,\r
+  5767,  23574, 30727, 6030,  29529, 13190, 12358, 6748,  12934, 16503,\r
+  17990, 19753, 14847, 20397, 6149,  2305,  25967, 22960, 22848, 6852,\r
+  22024, 9085,  335,   2426,  28547, 22395, 20555, 5862,  9826,  10928,\r
+  12145, 11870, 889,   25141, 28875, 13786, 172,   19687, 12813, 30026,\r
+  8954,  1376,  26301, 2093,  30139, 4134,  19862, 3423,  19237, 10785,\r
+  21807, 2354,  26133, 23379, 13272, 11713, 28941, 8643,  14020, 32129,\r
+  26232, 18618, 3182,  31769, 20022, 16434, 3637,  24948, 29780, 2188,\r
+  19785, 788,   32027, 1665,  26315, 26537, 31309, 21339, 25392, 14562,\r
+  26027, 23909, 9447,  1923,  9402,  27808, 10811, 5560,  31175, 24503,\r
+  9850,  7080,  1577,  13621, 13911, 14926, 16838, 13558, 13197, 4228,\r
+  3033,  19931, 27589, 9825,  14578, 31682, 16058, 8901,  16958, 18870,\r
   26523, 32562, 31240, 17506, 30129, 11742, 27008, 28876, 14401, 26118,\r
-  15291, 6976, 8628, 2692, 23036, 4745, 26101, 24228, 7474, 9064,\r
+  15291, 6976,  8628,  2692,  23036, 4745,  26101, 24228, 7474,  9064,\r
   22555, 32052, 14529, 26686, 19272, 17882, 17029, 16652, 31440, 13483,\r
-  31764, 1949, 15774, 22520, 16708, 21506, 2260, 22635, 16366, 25919,\r
-  1458, 18259, 23793, 580, 16057, 10045, 27257, 26399, 10256, 25284,\r
-  4993, 4719, 1830, 9642, 8342, 1820, 32153, 19495, 31198, 22085,\r
-  15191, 23680, 2650, 1402, 7171, 16092, 26728, 9516, 13210, 10068,\r
-  26508, 11105, 3670, 26185, 30575, 26284, 10194, 4858, 29736, 7517,\r
-  23920, 17493, 19387, 11509, 24568, 19470, 7391, 15837, 26753, 10223,\r
-  13061, 24407, 13461, 7535, 917, 8116, 3472, 13189, 4219, 29896,\r
-  24393, 32446, 21474, 2203, 8692, 29582, 6463, 15969, 6983, 13027,\r
-  26514, 940, 15068, 1280, 24809, 16865, 5591, 30345, 15141, 1000,\r
-  17864, 19418, 13824, 9256, 11987, 16029, 12879, 5811, 28942, 14748,\r
-  20101, 9149, 2346, 1747, 11385, 9811, 25686, 9162, 17513, 9034,\r
+  31764, 1949,  15774, 22520, 16708, 21506, 2260,  22635, 16366, 25919,\r
+  1458,  18259, 23793, 580,   16057, 10045, 27257, 26399, 10256, 25284,\r
+  4993,  4719,  1830,  9642,  8342,  1820,  32153, 19495, 31198, 22085,\r
+  15191, 23680, 2650,  1402,  7171,  16092, 26728, 9516,  13210, 10068,\r
+  26508, 11105, 3670,  26185, 30575, 26284, 10194, 4858,  29736, 7517,\r
+  23920, 17493, 19387, 11509, 24568, 19470, 7391,  15837, 26753, 10223,\r
+  13061, 24407, 13461, 7535,  917,   8116,  3472,  13189, 4219,  29896,\r
+  24393, 32446, 21474, 2203,  8692,  29582, 6463,  15969, 6983,  13027,\r
+  26514, 940,   15068, 1280,  24809, 16865, 5591,  30345, 15141, 1000,\r
+  17864, 19418, 13824, 9256,  11987, 16029, 12879, 5811,  28942, 14748,\r
+  20101, 9149,  2346,  1747,  11385, 9811,  25686, 9162,  17513, 9034,\r
   27488, 12322, 26942, 19573, 18717, 10861, 25105, 17435, 28684, 28483,\r
-  15599, 13479, 9014, 11922, 16089, 4258, 1624, 19253, 5391, 3807,\r
-  31044, 22728, 11151, 14069, 17029, 11195, 19672, 4594, 19778, 12198,\r
-  28403, 21326, 32357, 30684, 20916, 3614, 25851, 15939, 21054, 19082,\r
-  18910, 17507, 6085, 3969, 25234, 19132, 32152, 13484, 11118, 4701,\r
-  24158, 4256, 11516, 7346, 9375, 22359, 12450, 7582, 17543, 15585,\r
-  10369, 21449, 743, 12375, 20125, 15164, 11645, 17169, 16190, 20011,\r
-  10357, 4120, 4759, 18449, 29999, 14302, 14758, 7939, 5699, 17453,\r
-  8795, 10045, 29891, 2142, 26364, 5378, 10944, 20939, 3272, 20643,\r
-  22287, 31879, 5595, 20701, 24140, 16460, 27217, 28519, 15648, 18868,\r
-  23726, 27596, 20416, 29612, 19838, 4215, 12982, 13606, 12856, 11788,\r
-  8420, 5903, 872, 24831, 29382, 18049, 22029, 21855, 8951, 5945,\r
-  9280, 31986, 31735, 2635, 2327, 27527, 21291, 11540, 29641, 19848,\r
-  29989, 25713, 5651, 11471, 10022, 30766, 4570, 30650, 25057, 29378,\r
-  10769, 32386, 10626, 10553, 31453, 23240, 9967, 32625, 31991, 30065,\r
-  26190, 15497, 22611, 7860, 24263, 919, 18943, 27761, 10123, 17561,\r
-  8525, 21189, 32277, 14767, 6196, 10971, 432, 17543, 2804, 7173,\r
-  18489, 16408, 21241, 6923, 12326, 6803, 18690, 29635, 5063, 19350,\r
-  12930, 4321, 16844, 31395, 7750, 30225, 24328, 27090, 29785, 8259,\r
-  5492, 30914, 15653, 16454, 13431, 21461, 25562, 921, 9828, 9117,\r
-  30740, 24446, 24389, 20625, 12984, 4687, 10455, 12037, 16926, 20245,\r
-  28629, 10073, 8566, 18263, 30329, 11888, 32612, 1840, 4161, 8803,\r
-  30702, 22436, 19183, 24439, 9624, 6964, 10451, 8525, 19917, 22704,\r
-  20556, 1113, 11393, 26701, 21645, 15253, 8981, 30456, 31645, 20087,\r
-  20091, 21481, 9633, 29472, 18586, 15482, 14686, 22742, 6388, 6714,\r
-  14842, 30388, 6278, 26429, 27138, 12960, 19695, 11447, 8114, 29822,\r
-  32469, 20425, 11888, 31139, 3973, 8347, 2457, 31885, 20953, 24491,\r
-  1152, 1233, 27231, 11621, 21428, 29524, 31415, 6131, 13186, 7870,\r
-  7229, 15190, 22459, 5164, 28137, 10166, 2232, 20518, 14707, 502,\r
-  4506, 976, 29626, 4748, 25558, 14948, 7270, 13968, 5106, 29407,\r
-  16588, 26386, 5001, 507, 9747, 19121, 19605, 20574, 24213, 1385,\r
-  494, 18705, 20104, 15021, 6413, 3123, 25566, 30134, 12566, 14831,\r
-  1385, 27674, 11030, 27051, 32067, 20128, 1928, 8578, 25197, 7251,\r
-  15647, 25077, 17846, 11221, 27839, 6621, 9695, 24310, 5836, 5796,\r
-  28412, 13445, 13736, 17589, 2333, 11367, 24951, 21553, 14894, 12773,\r
-  24870, 5604, 24348, 74, 19627, 9335, 16442, 13742, 9358, 11751,\r
-  1250, 2061, 680, 28982, 2655, 20636, 18475, 17504, 8714, 24924,\r
-  27874, 13968, 31412, 22767, 21434, 8852, 14660, 26795, 18562, 17806,\r
-  1185, 16621, 2799, 11757, 2259, 6063, 2787, 5788, 13669, 32093,\r
-  14830, 633, 15117, 29669, 5654, 11273, 3215, 31758, 20947, 7530,\r
-  26334, 3338, 15710, 1161, 9348, 10830, 21803, 6037, 24645, 2977,\r
-  6580, 7603, 11007, 2931, 5241, 28659, 22741, 20337, 11845, 1666,\r
-  10636, 24406, 15026, 26146, 20533, 7684, 23791, 472, 7693, 22739,\r
-  10689, 25828, 21665, 24873, 10952, 14582, 25398, 25675, 9988, 31903,\r
-  4967, 30066, 21656, 32262, 26896, 32290, 22477, 28124, 14699, 2231,\r
-  13145, 7826, 15737, 6465, 3554, 17353, 9124, 2193, 28862, 17930,\r
-  25762, 5524, 25597, 32439, 24476, 8416, 2985, 28737, 400, 18061,\r
-  10828, 20124, 31732, 19014, 11443, 27632, 20124, 2463, 8946, 23954,\r
-  10461, 26793, 19112, 27954, 26099, 27845, 3716, 10838, 10400, 31157,\r
-  7944, 12295, 23062, 25849, 2189, 29385, 4119, 21336, 27272, 10961,\r
-  7771, 5309, 13323, 11891, 22322, 29252, 2447, 20698, 16234, 8853,\r
-  14320, 6395, 14707, 22641, 22713, 25803, 27585, 8074, 2978, 19632,\r
-  26226, 31640, 26967, 23350, 19505, 32169, 4987, 27908, 602, 17336,\r
-  1517, 19726, 11358, 5762, 3402, 24844, 30314, 6549, 1715, 31274,\r
-  29507, 16810, 19664, 7681, 4469, 1332, 30228, 23494, 27564, 31545,\r
-  18499, 449, 30818, 23649, 1330, 18177, 23738, 6733, 29903, 15695,\r
-  26284, 297, 20576, 8032, 29283, 6021, 29456, 20303, 16099, 12384,\r
-  29607, 6474, 30191, 25478, 2969, 3723, 27434, 24605, 28482, 3209,\r
-  22140, 19834, 31600, 17520, 3511, 11833, 23586, 22223, 379, 31116,\r
-  4239, 22417, 343, 24275, 28778, 20015, 2864, 26477, 5733, 1572,\r
-  10727, 27342, 21492, 17312, 10038, 2258, 4691, 12416, 5339, 7761,\r
-  17610, 5502, 28921, 26612, 20528, 13221, 27067, 18247, 2990, 21001,\r
-  1082, 24079, 16069, 21428, 10913, 29661, 16530, 27107, 25999, 23011,\r
-  7249, 13939, 17596, 16647, 24353, 29334, 15072, 13878, 29446, 28106,\r
-  28880, 14587, 11060, 30988, 21482, 8272, 25995, 4680, 25524, 16820,\r
-  25950, 25621, 704, 3709, 19320, 28063, 20179, 7024, 20321, 26340,\r
-  17477, 18063, 7645, 13604, 12459, 28466, 182, 914, 14516, 29785,\r
-  13243, 21584, 30033, 27969, 2825, 7578, 27673, 20533, 20105, 18242,\r
-  26347, 31655, 28346, 7260, 28373, 21887, 30385, 1338, 28212, 29875,\r
-  24414, 7579, 15901, 2328, 10256, 31519, 8956, 30072, 22587, 14334,\r
-  31867, 20452, 20090, 5626, 11430, 15435, 208, 19858, 31308, 21836,\r
-  4659, 23929, 29352, 5961, 24907, 28230, 3648, 445, 29815, 7789,\r
-  7438, 25295, 26385, 19054, 15838, 295, 15347, 9548, 25847, 6144,\r
-  14649, 13633, 13821, 22910, 12617, 2224, 13590, 27458, 23825, 14171,\r
-  4940, 4413, 11152, 982, 6707, 31425, 10904, 12604, 31435, 26078,\r
-  27858, 24864, 935, 3307, 4354, 3526, 591, 4707, 20108, 29843,\r
-  21476, 24307, 11064, 1219, 26882, 9680, 15922, 9818, 16618, 846,\r
-  9301, 27997, 8161, 27055, 2472, 3393, 1235, 20536, 27689, 8356,\r
-  8764, 22667, 31690, 6459, 24137, 24112, 15290, 27660, 7738, 9333,\r
-  18661, 19933, 24842, 5752, 27070, 5100, 27986, 19842, 19260, 3296,\r
-  5739, 20886, 3874, 26112, 23762, 18506, 3972, 28835, 28113, 1494,\r
-  31623, 23527, 18012, 13419, 12648, 13990, 32058, 1478, 31168, 19878,\r
-  30821, 8964, 2054, 14864, 4530, 20152, 25685, 13348, 28340, 27963,\r
-  8815, 32298, 4062, 26435, 2563, 31660, 23273, 6839, 5163, 18658,\r
-  9333, 19906, 25145, 26222, 31987, 22567, 4531, 19786, 17602, 30420,\r
-  4508, 32510, 19352, 32185, 23797, 26134, 32548, 23514, 16004, 6867,\r
-  27890, 9635, 468, 24609, 7054, 6524, 13693, 27849, 32492, 21150,\r
-  25253, 21736, 3079, 7717, 24007, 10144, 12233, 9830, 5300, 5389,\r
-  11563, 26754, 32215, 12410, 9885, 10300, 3260, 8917, 22184, 22023,\r
-  20436, 24929, 15314, 7011, 7026, 15531, 15298, 362, 26138, 23487,\r
-  420, 26022, 14843, 30619, 7119, 12582, 24506, 27364, 7333, 1489,\r
-  9841, 27096, 17083, 22010, 27896, 30340, 27707, 6708, 20579, 25911,\r
-  22918, 6503, 9163, 1334, 797, 30499, 5458, 16817, 1729, 31797,\r
-  9313, 20214, 28633, 19832, 19764, 14309, 24341, 1262, 3481, 24484,\r
-  21841, 24847, 9972, 19348, 9660, 32353, 16775, 18819, 21305, 20297,\r
-  21744, 17955, 23813, 17953, 31219, 26554, 16026, 25994, 2426, 16668,\r
-  9940, 11012, 11482, 12503, 10835, 1980, 17240, 16557, 29984, 23460,\r
-  16620, 6471, 16275, 9929, 27205, 24103, 2676, 25826, 4620, 1503,\r
-  26208, 18212, 15213, 640, 19054, 16478, 17876, 20054, 15891, 5953,\r
-  1524, 12498, 23107, 29439, 28686, 20424, 26073, 5657, 14192, 24795,\r
-  4409, 15217, 1852, 3893, 5428, 18855, 14442, 27003, 14636, 20642,\r
-  10512, 27647, 1144, 1389, 6369, 31544, 7945, 12357, 12020, 25200,\r
-  9550, 16624, 3272, 10941, 29526, 32080, 4740, 24114, 11061, 32311,\r
-  14467, 2902, 31400, 28285, 8719, 7381, 25596, 16464, 19821, 22902,\r
-  3627, 19660, 1307, 8269, 24649, 4555, 30293, 13618, 27678, 511,\r
-  4317, 12658, 27669, 6974, 5116, 27844, 22613, 14108, 27844, 29310,\r
-  22317, 18879, 18841, 22280, 3253, 751, 1776, 401, 3506, 1389,\r
-  22869, 15874, 31163, 10374, 22707, 11056, 154, 30695, 20688, 22870,\r
-  22261, 26035, 31511, 11458, 24110, 25299, 1434, 22734, 903, 20878,\r
-  2903, 1810, 6794, 1625, 25018, 32472, 13992, 19184, 24420, 24784,\r
-  18464, 6053, 43, 19206, 34, 30456, 2658, 30992, 16436, 18281,\r
-  6490, 13452, 6358, 20362, 12584, 10698, 7009, 22616, 16297, 29893,\r
-  821, 16843, 11972, 31320, 31251, 17836, 27631, 25006, 31688, 23719,\r
-  2293, 16891, 7436, 31137, 23030, 22633, 14761, 3916, 13487, 23126,\r
-  19936, 5112, 13563, 14268, 32520, 30636, 10906, 25072, 6008, 16501,\r
-  5170, 27280, 31143, 16638, 19347, 3766, 20114, 7521, 18239, 626,\r
-  29534, 4669, 5418, 4216, 27199, 12809, 29374, 25109, 21144, 3239,\r
-  9762, 872, 11364, 30012, 31932, 30670, 27348, 23104, 4853, 29342,\r
-  6713, 25553, 18748, 2071, 7461, 19533, 2637, 27286, 17613, 10015,\r
-  18099, 2060, 18610, 2521, 18827, 7088, 24961, 19332, 19084, 2033,\r
-  2871, 20019, 24900, 3247, 12936, 1759, 15780, 11690, 20866, 14190,\r
-  18879, 23867, 16238, 3861, 6351, 16194, 14327, 9440, 18297, 6239,\r
-  23950, 143, 12626, 15717, 15116, 9636, 8097, 5899, 2201, 21690,\r
-  21863, 3557, 14285, 30488, 7324, 29331, 2838, 26758, 14524, 13881,\r
-  15450, 4960, 25218, 1839, 30429, 4840, 12531, 9721, 10340, 20448,\r
-  5023, 1657, 28059, 19289, 16932, 4451, 7604, 3014, 17651, 6642,\r
-  14673, 24660, 31575, 23513, 16548, 28286, 17075, 5501, 13524, 15835,\r
-  8971, 4705, 18595, 13883, 9413, 14817, 1103, 17395, 13233, 30244,\r
-  24757, 5749, 13128, 1868, 7612, 11556, 10289, 5871, 22513, 9830,\r
-  6922, 8139, 8559, 1274, 6244, 32181, 8706, 24460, 29199, 14803,\r
-  652, 11910, 9625, 26379, 10151, 11306, 3089, 8891, 32651, 31454,\r
-  14096, 3499, 26419, 1478, 7931, 20800, 27323, 20376, 1666, 1266,\r
-  25869, 9132, 14188, 2047, 17084, 23891, 31895, 9057, 27696, 14698,\r
-  32058, 2046, 6916, 26159, 23918, 32032, 7852, 17747, 18413, 21284,\r
-  21595, 5200, 17689, 28278, 22051, 28412, 832, 32445, 9567, 24670,\r
-  29726, 13906, 21582, 30145, 25507, 5623, 29440, 2056, 27639, 8390,\r
-  17270, 12097, 27324, 3175, 30981, 5245, 23443, 16774, 1787, 5598,\r
+  15599, 13479, 9014,  11922, 16089, 4258,  1624,  19253, 5391,  3807,\r
+  31044, 22728, 11151, 14069, 17029, 11195, 19672, 4594,  19778, 12198,\r
+  28403, 21326, 32357, 30684, 20916, 3614,  25851, 15939, 21054, 19082,\r
+  18910, 17507, 6085,  3969,  25234, 19132, 32152, 13484, 11118, 4701,\r
+  24158, 4256,  11516, 7346,  9375,  22359, 12450, 7582,  17543, 15585,\r
+  10369, 21449, 743,   12375, 20125, 15164, 11645, 17169, 16190, 20011,\r
+  10357, 4120,  4759,  18449, 29999, 14302, 14758, 7939,  5699,  17453,\r
+  8795,  10045, 29891, 2142,  26364, 5378,  10944, 20939, 3272,  20643,\r
+  22287, 31879, 5595,  20701, 24140, 16460, 27217, 28519, 15648, 18868,\r
+  23726, 27596, 20416, 29612, 19838, 4215,  12982, 13606, 12856, 11788,\r
+  8420,  5903,  872,   24831, 29382, 18049, 22029, 21855, 8951,  5945,\r
+  9280,  31986, 31735, 2635,  2327,  27527, 21291, 11540, 29641, 19848,\r
+  29989, 25713, 5651,  11471, 10022, 30766, 4570,  30650, 25057, 29378,\r
+  10769, 32386, 10626, 10553, 31453, 23240, 9967,  32625, 31991, 30065,\r
+  26190, 15497, 22611, 7860,  24263, 919,   18943, 27761, 10123, 17561,\r
+  8525,  21189, 32277, 14767, 6196,  10971, 432,   17543, 2804,  7173,\r
+  18489, 16408, 21241, 6923,  12326, 6803,  18690, 29635, 5063,  19350,\r
+  12930, 4321,  16844, 31395, 7750,  30225, 24328, 27090, 29785, 8259,\r
+  5492,  30914, 15653, 16454, 13431, 21461, 25562, 921,   9828,  9117,\r
+  30740, 24446, 24389, 20625, 12984, 4687,  10455, 12037, 16926, 20245,\r
+  28629, 10073, 8566,  18263, 30329, 11888, 32612, 1840,  4161,  8803,\r
+  30702, 22436, 19183, 24439, 9624,  6964,  10451, 8525,  19917, 22704,\r
+  20556, 1113,  11393, 26701, 21645, 15253, 8981,  30456, 31645, 20087,\r
+  20091, 21481, 9633,  29472, 18586, 15482, 14686, 22742, 6388,  6714,\r
+  14842, 30388, 6278,  26429, 27138, 12960, 19695, 11447, 8114,  29822,\r
+  32469, 20425, 11888, 31139, 3973,  8347,  2457,  31885, 20953, 24491,\r
+  1152,  1233,  27231, 11621, 21428, 29524, 31415, 6131,  13186, 7870,\r
+  7229,  15190, 22459, 5164,  28137, 10166, 2232,  20518, 14707, 502,\r
+  4506,  976,   29626, 4748,  25558, 14948, 7270,  13968, 5106,  29407,\r
+  16588, 26386, 5001,  507,   9747,  19121, 19605, 20574, 24213, 1385,\r
+  494,   18705, 20104, 15021, 6413,  3123,  25566, 30134, 12566, 14831,\r
+  1385,  27674, 11030, 27051, 32067, 20128, 1928,  8578,  25197, 7251,\r
+  15647, 25077, 17846, 11221, 27839, 6621,  9695,  24310, 5836,  5796,\r
+  28412, 13445, 13736, 17589, 2333,  11367, 24951, 21553, 14894, 12773,\r
+  24870, 5604,  24348, 74,    19627, 9335,  16442, 13742, 9358,  11751,\r
+  1250,  2061,  680,   28982, 2655,  20636, 18475, 17504, 8714,  24924,\r
+  27874, 13968, 31412, 22767, 21434, 8852,  14660, 26795, 18562, 17806,\r
+  1185,  16621, 2799,  11757, 2259,  6063,  2787,  5788,  13669, 32093,\r
+  14830, 633,   15117, 29669, 5654,  11273, 3215,  31758, 20947, 7530,\r
+  26334, 3338,  15710, 1161,  9348,  10830, 21803, 6037,  24645, 2977,\r
+  6580,  7603,  11007, 2931,  5241,  28659, 22741, 20337, 11845, 1666,\r
+  10636, 24406, 15026, 26146, 20533, 7684,  23791, 472,   7693,  22739,\r
+  10689, 25828, 21665, 24873, 10952, 14582, 25398, 25675, 9988,  31903,\r
+  4967,  30066, 21656, 32262, 26896, 32290, 22477, 28124, 14699, 2231,\r
+  13145, 7826,  15737, 6465,  3554,  17353, 9124,  2193,  28862, 17930,\r
+  25762, 5524,  25597, 32439, 24476, 8416,  2985,  28737, 400,   18061,\r
+  10828, 20124, 31732, 19014, 11443, 27632, 20124, 2463,  8946,  23954,\r
+  10461, 26793, 19112, 27954, 26099, 27845, 3716,  10838, 10400, 31157,\r
+  7944,  12295, 23062, 25849, 2189,  29385, 4119,  21336, 27272, 10961,\r
+  7771,  5309,  13323, 11891, 22322, 29252, 2447,  20698, 16234, 8853,\r
+  14320, 6395,  14707, 22641, 22713, 25803, 27585, 8074,  2978,  19632,\r
+  26226, 31640, 26967, 23350, 19505, 32169, 4987,  27908, 602,   17336,\r
+  1517,  19726, 11358, 5762,  3402,  24844, 30314, 6549,  1715,  31274,\r
+  29507, 16810, 19664, 7681,  4469,  1332,  30228, 23494, 27564, 31545,\r
+  18499, 449,   30818, 23649, 1330,  18177, 23738, 6733,  29903, 15695,\r
+  26284, 297,   20576, 8032,  29283, 6021,  29456, 20303, 16099, 12384,\r
+  29607, 6474,  30191, 25478, 2969,  3723,  27434, 24605, 28482, 3209,\r
+  22140, 19834, 31600, 17520, 3511,  11833, 23586, 22223, 379,   31116,\r
+  4239,  22417, 343,   24275, 28778, 20015, 2864,  26477, 5733,  1572,\r
+  10727, 27342, 21492, 17312, 10038, 2258,  4691,  12416, 5339,  7761,\r
+  17610, 5502,  28921, 26612, 20528, 13221, 27067, 18247, 2990,  21001,\r
+  1082,  24079, 16069, 21428, 10913, 29661, 16530, 27107, 25999, 23011,\r
+  7249,  13939, 17596, 16647, 24353, 29334, 15072, 13878, 29446, 28106,\r
+  28880, 14587, 11060, 30988, 21482, 8272,  25995, 4680,  25524, 16820,\r
+  25950, 25621, 704,   3709,  19320, 28063, 20179, 7024,  20321, 26340,\r
+  17477, 18063, 7645,  13604, 12459, 28466, 182,   914,   14516, 29785,\r
+  13243, 21584, 30033, 27969, 2825,  7578,  27673, 20533, 20105, 18242,\r
+  26347, 31655, 28346, 7260,  28373, 21887, 30385, 1338,  28212, 29875,\r
+  24414, 7579,  15901, 2328,  10256, 31519, 8956,  30072, 22587, 14334,\r
+  31867, 20452, 20090, 5626,  11430, 15435, 208,   19858, 31308, 21836,\r
+  4659,  23929, 29352, 5961,  24907, 28230, 3648,  445,   29815, 7789,\r
+  7438,  25295, 26385, 19054, 15838, 295,   15347, 9548,  25847, 6144,\r
+  14649, 13633, 13821, 22910, 12617, 2224,  13590, 27458, 23825, 14171,\r
+  4940,  4413,  11152, 982,   6707,  31425, 10904, 12604, 31435, 26078,\r
+  27858, 24864, 935,   3307,  4354,  3526,  591,   4707,  20108, 29843,\r
+  21476, 24307, 11064, 1219,  26882, 9680,  15922, 9818,  16618, 846,\r
+  9301,  27997, 8161,  27055, 2472,  3393,  1235,  20536, 27689, 8356,\r
+  8764,  22667, 31690, 6459,  24137, 24112, 15290, 27660, 7738,  9333,\r
+  18661, 19933, 24842, 5752,  27070, 5100,  27986, 19842, 19260, 3296,\r
+  5739,  20886, 3874,  26112, 23762, 18506, 3972,  28835, 28113, 1494,\r
+  31623, 23527, 18012, 13419, 12648, 13990, 32058, 1478,  31168, 19878,\r
+  30821, 8964,  2054,  14864, 4530,  20152, 25685, 13348, 28340, 27963,\r
+  8815,  32298, 4062,  26435, 2563,  31660, 23273, 6839,  5163,  18658,\r
+  9333,  19906, 25145, 26222, 31987, 22567, 4531,  19786, 17602, 30420,\r
+  4508,  32510, 19352, 32185, 23797, 26134, 32548, 23514, 16004, 6867,\r
+  27890, 9635,  468,   24609, 7054,  6524,  13693, 27849, 32492, 21150,\r
+  25253, 21736, 3079,  7717,  24007, 10144, 12233, 9830,  5300,  5389,\r
+  11563, 26754, 32215, 12410, 9885,  10300, 3260,  8917,  22184, 22023,\r
+  20436, 24929, 15314, 7011,  7026,  15531, 15298, 362,   26138, 23487,\r
+  420,   26022, 14843, 30619, 7119,  12582, 24506, 27364, 7333,  1489,\r
+  9841,  27096, 17083, 22010, 27896, 30340, 27707, 6708,  20579, 25911,\r
+  22918, 6503,  9163,  1334,  797,   30499, 5458,  16817, 1729,  31797,\r
+  9313,  20214, 28633, 19832, 19764, 14309, 24341, 1262,  3481,  24484,\r
+  21841, 24847, 9972,  19348, 9660,  32353, 16775, 18819, 21305, 20297,\r
+  21744, 17955, 23813, 17953, 31219, 26554, 16026, 25994, 2426,  16668,\r
+  9940,  11012, 11482, 12503, 10835, 1980,  17240, 16557, 29984, 23460,\r
+  16620, 6471,  16275, 9929,  27205, 24103, 2676,  25826, 4620,  1503,\r
+  26208, 18212, 15213, 640,   19054, 16478, 17876, 20054, 15891, 5953,\r
+  1524,  12498, 23107, 29439, 28686, 20424, 26073, 5657,  14192, 24795,\r
+  4409,  15217, 1852,  3893,  5428,  18855, 14442, 27003, 14636, 20642,\r
+  10512, 27647, 1144,  1389,  6369,  31544, 7945,  12357, 12020, 25200,\r
+  9550,  16624, 3272,  10941, 29526, 32080, 4740,  24114, 11061, 32311,\r
+  14467, 2902,  31400, 28285, 8719,  7381,  25596, 16464, 19821, 22902,\r
+  3627,  19660, 1307,  8269,  24649, 4555,  30293, 13618, 27678, 511,\r
+  4317,  12658, 27669, 6974,  5116,  27844, 22613, 14108, 27844, 29310,\r
+  22317, 18879, 18841, 22280, 3253,  751,   1776,  401,   3506,  1389,\r
+  22869, 15874, 31163, 10374, 22707, 11056, 154,   30695, 20688, 22870,\r
+  22261, 26035, 31511, 11458, 24110, 25299, 1434,  22734, 903,   20878,\r
+  2903,  1810,  6794,  1625,  25018, 32472, 13992, 19184, 24420, 24784,\r
+  18464, 6053,  43,    19206, 34,    30456, 2658,  30992, 16436, 18281,\r
+  6490,  13452, 6358,  20362, 12584, 10698, 7009,  22616, 16297, 29893,\r
+  821,   16843, 11972, 31320, 31251, 17836, 27631, 25006, 31688, 23719,\r
+  2293,  16891, 7436,  31137, 23030, 22633, 14761, 3916,  13487, 23126,\r
+  19936, 5112,  13563, 14268, 32520, 30636, 10906, 25072, 6008,  16501,\r
+  5170,  27280, 31143, 16638, 19347, 3766,  20114, 7521,  18239, 626,\r
+  29534, 4669,  5418,  4216,  27199, 12809, 29374, 25109, 21144, 3239,\r
+  9762,  872,   11364, 30012, 31932, 30670, 27348, 23104, 4853,  29342,\r
+  6713,  25553, 18748, 2071,  7461,  19533, 2637,  27286, 17613, 10015,\r
+  18099, 2060,  18610, 2521,  18827, 7088,  24961, 19332, 19084, 2033,\r
+  2871,  20019, 24900, 3247,  12936, 1759,  15780, 11690, 20866, 14190,\r
+  18879, 23867, 16238, 3861,  6351,  16194, 14327, 9440,  18297, 6239,\r
+  23950, 143,   12626, 15717, 15116, 9636,  8097,  5899,  2201,  21690,\r
+  21863, 3557,  14285, 30488, 7324,  29331, 2838,  26758, 14524, 13881,\r
+  15450, 4960,  25218, 1839,  30429, 4840,  12531, 9721,  10340, 20448,\r
+  5023,  1657,  28059, 19289, 16932, 4451,  7604,  3014,  17651, 6642,\r
+  14673, 24660, 31575, 23513, 16548, 28286, 17075, 5501,  13524, 15835,\r
+  8971,  4705,  18595, 13883, 9413,  14817, 1103,  17395, 13233, 30244,\r
+  24757, 5749,  13128, 1868,  7612,  11556, 10289, 5871,  22513, 9830,\r
+  6922,  8139,  8559,  1274,  6244,  32181, 8706,  24460, 29199, 14803,\r
+  652,   11910, 9625,  26379, 10151, 11306, 3089,  8891,  32651, 31454,\r
+  14096, 3499,  26419, 1478,  7931,  20800, 27323, 20376, 1666,  1266,\r
+  25869, 9132,  14188, 2047,  17084, 23891, 31895, 9057,  27696, 14698,\r
+  32058, 2046,  6916,  26159, 23918, 32032, 7852,  17747, 18413, 21284,\r
+  21595, 5200,  17689, 28278, 22051, 28412, 832,   32445, 9567,  24670,\r
+  29726, 13906, 21582, 30145, 25507, 5623,  29440, 2056,  27639, 8390,\r
+  17270, 12097, 27324, 3175,  30981, 5245,  23443, 16774, 1787,  5598,\r
   15329, 16516, 17029, 28913, 23507, 15981, 23504, 26430, 16543, 3627,\r
-  29295, 4382, 31757, 10745, 18685, 21197, 7479, 28954, 23555, 10176,\r
-  7820, 28106, 24603, 14393, 29979, 14197, 27478, 27928, 9487, 17703,\r
+  29295, 4382,  31757, 10745, 18685, 21197, 7479,  28954, 23555, 10176,\r
+  7820,  28106, 24603, 14393, 29979, 14197, 27478, 27928, 9487,  17703,\r
   19932, 30196, 32629, 17476, 24018, 30058, 27974, 18297, 14977, 18357,\r
-  27553, 25074, 19124, 6015, 7512, 717, 31329, 13559, 5550, 9423,\r
-  31628, 25380, 16479, 9814, 3689, 3961, 2785, 23951, 5313, 10153,\r
-  13034, 15593, 29846, 445, 24114, 7114, 3594, 2659, 24442, 30592,\r
-  18557, 11657, 19661, 16506, 31478, 11562, 19206, 1976, 13252, 23144,\r
-  12946, 8320, 9061, 25820, 29047, 2643, 11942, 13354, 20117, 14111,\r
-  27660, 32728, 29228, 438, 4211, 6496, 22431, 26751, 3829, 7299,\r
-  3192, 24683, 28685, 31201, 24747, 21547, 9212, 4039, 27679, 9121,\r
-  21612, 17736, 3434, 14228, 31060, 23439, 17885, 32167, 13595, 26995,\r
-  5824, 24716, 15360, 13644, 17374, 4213, 19129, 24837, 8005, 12235,\r
-  28762, 7283, 16967, 14371, 12153, 20965, 22468, 11118, 14992, 253,\r
-  23468, 25967, 20386, 15294, 29631, 8563, 30498, 31205, 17815, 2108,\r
-  10768, 13949, 28137, 23102, 9061, 2990, 32008, 2574, 24753, 16598,\r
-  7338, 23319, 5635, 32475, 17135, 22671, 6409, 7871, 5791, 14505,\r
-  1912, 18036, 26803, 12, 11438, 18418, 26392, 31109, 27287, 30344,\r
-  27823, 22008, 10701, 26223, 4760, 2205, 5379, 19109, 26288, 13160,\r
-  9123, 25848, 27480, 14281, 14262, 15457, 17529, 16278, 21253, 3476,\r
-  13765, 21062, 10109, 10709, 22079, 19039, 1752, 14349, 7421, 16177,\r
-  30074, 3101, 11052, 14021, 25753, 2162, 30550, 13329, 22433, 15834,\r
+  27553, 25074, 19124, 6015,  7512,  717,   31329, 13559, 5550,  9423,\r
+  31628, 25380, 16479, 9814,  3689,  3961,  2785,  23951, 5313,  10153,\r
+  13034, 15593, 29846, 445,   24114, 7114,  3594,  2659,  24442, 30592,\r
+  18557, 11657, 19661, 16506, 31478, 11562, 19206, 1976,  13252, 23144,\r
+  12946, 8320,  9061,  25820, 29047, 2643,  11942, 13354, 20117, 14111,\r
+  27660, 32728, 29228, 438,   4211,  6496,  22431, 26751, 3829,  7299,\r
+  3192,  24683, 28685, 31201, 24747, 21547, 9212,  4039,  27679, 9121,\r
+  21612, 17736, 3434,  14228, 31060, 23439, 17885, 32167, 13595, 26995,\r
+  5824,  24716, 15360, 13644, 17374, 4213,  19129, 24837, 8005,  12235,\r
+  28762, 7283,  16967, 14371, 12153, 20965, 22468, 11118, 14992, 253,\r
+  23468, 25967, 20386, 15294, 29631, 8563,  30498, 31205, 17815, 2108,\r
+  10768, 13949, 28137, 23102, 9061,  2990,  32008, 2574,  24753, 16598,\r
+  7338,  23319, 5635,  32475, 17135, 22671, 6409,  7871,  5791,  14505,\r
+  1912,  18036, 26803, 12,    11438, 18418, 26392, 31109, 27287, 30344,\r
+  27823, 22008, 10701, 26223, 4760,  2205,  5379,  19109, 26288, 13160,\r
+  9123,  25848, 27480, 14281, 14262, 15457, 17529, 16278, 21253, 3476,\r
+  13765, 21062, 10109, 10709, 22079, 19039, 1752,  14349, 7421,  16177,\r
+  30074, 3101,  11052, 14021, 25753, 2162,  30550, 13329, 22433, 15834,\r
   15840, 30061, 30935, 15766, 23255, 30539, 24892, 20912, 28908, 3874,\r
-  6068, 3983, 444, 12971, 2919, 30920, 23381, 16208, 3432, 7735,\r
-  32502, 21986, 3477, 31055, 25879, 7818, 7870, 28590, 17065, 2306,\r
-  1545, 13556, 13215, 23812, 22932, 32470, 28333, 12035, 29277, 16238,\r
-  26192, 3354, 13663, 22997, 31502, 30786, 30718, 1268, 8959, 32199,\r
-  933, 20631, 10892, 1277, 31918, 195, 29303, 9519, 12418, 13130,\r
-  20252, 6104, 3841, 924, 27894, 6933, 21284, 8416, 24164, 22619,\r
-  7904, 2628, 13997, 9061, 3662, 26001, 22082, 9585, 1546, 9218,\r
-  19524, 18604, 16601, 26966, 28998, 30699, 24718, 26916, 8020, 1691,\r
-  1582, 11887, 11060, 21755, 13650, 378, 747, 1161, 1741, 24541,\r
-  5508, 20665, 28303, 15065, 26636, 24557, 6345, 28649, 31713, 8354,\r
-  8786, 12185, 27181, 1767, 12362, 18075, 22701, 15892, 11005, 32024,\r
-  11191, 8888, 8201, 68, 6523, 6355, 4036, 2613, 649, 4678,\r
+  6068,  3983,  444,   12971, 2919,  30920, 23381, 16208, 3432,  7735,\r
+  32502, 21986, 3477,  31055, 25879, 7818,  7870,  28590, 17065, 2306,\r
+  1545,  13556, 13215, 23812, 22932, 32470, 28333, 12035, 29277, 16238,\r
+  26192, 3354,  13663, 22997, 31502, 30786, 30718, 1268,  8959,  32199,\r
+  933,   20631, 10892, 1277,  31918, 195,   29303, 9519,  12418, 13130,\r
+  20252, 6104,  3841,  924,   27894, 6933,  21284, 8416,  24164, 22619,\r
+  7904,  2628,  13997, 9061,  3662,  26001, 22082, 9585,  1546,  9218,\r
+  19524, 18604, 16601, 26966, 28998, 30699, 24718, 26916, 8020,  1691,\r
+  1582,  11887, 11060, 21755, 13650, 378,   747,   1161,  1741,  24541,\r
+  5508,  20665, 28303, 15065, 26636, 24557, 6345,  28649, 31713, 8354,\r
+  8786,  12185, 27181, 1767,  12362, 18075, 22701, 15892, 11005, 32024,\r
+  11191, 8888,  8201,  68,    6523,  6355,  4036,  2613,  649,   4678,\r
   10712, 15349, 13203, 22919, 15664, 24022, 29812, 29849, 24344, 31237,\r
-  2162, 13372, 3487, 1378, 960, 17249, 20800, 2703, 6727, 19168,\r
-  8642, 2887, 19367, 32109, 4701, 3058, 4216, 8137, 2334, 32118,\r
-  27861, 24885, 1421, 31055, 3099, 6188, 14988, 994, 18926, 14161,\r
-  32642, 18702, 19581, 3751, 23737, 1797, 5127, 11520, 14085, 7002,\r
-  9119, 30136, 24231, 26203, 10028, 16034, 1392, 30880, 15027, 2627,\r
-  24618, 16100, 14041, 12862, 30515, 8212, 9891, 5648, 27243, 16806,\r
-  19073, 8701, 11344, 26156, 19595, 16970, 30824, 6697, 2570, 5805,\r
-  2272, 8995, 5690, 31234, 20338, 25849, 23118, 12863, 13708, 12663,\r
+  2162,  13372, 3487,  1378,  960,   17249, 20800, 2703,  6727,  19168,\r
+  8642,  2887,  19367, 32109, 4701,  3058,  4216,  8137,  2334,  32118,\r
+  27861, 24885, 1421,  31055, 3099,  6188,  14988, 994,   18926, 14161,\r
+  32642, 18702, 19581, 3751,  23737, 1797,  5127,  11520, 14085, 7002,\r
+  9119,  30136, 24231, 26203, 10028, 16034, 1392,  30880, 15027, 2627,\r
+  24618, 16100, 14041, 12862, 30515, 8212,  9891,  5648,  27243, 16806,\r
+  19073, 8701,  11344, 26156, 19595, 16970, 30824, 6697,  2570,  5805,\r
+  2272,  8995,  5690,  31234, 20338, 25849, 23118, 12863, 13708, 12663,\r
   30389, 23722, 10158, 13864, 18844, 27210, 28691, 31851, 16052, 16539,\r
-  9365, 12233, 19509, 21126, 11211, 7814, 16675, 17807, 7540, 10358,\r
-  18640, 30545, 536, 4114, 18338, 30503, 13804, 25035, 29974, 18477,\r
-  29431, 26015, 22277, 32615, 18035, 20201, 550, 4671, 30070, 7805,\r
-  17365, 26933, 5329, 27380, 6418, 2770, 22584, 837, 5837, 29405,\r
-  23716, 8086, 10081, 27090, 29174, 5201, 16734, 28816, 10205, 15225,\r
-  31627, 5202, 8697, 2111, 8747, 16096, 30529, 30928, 12672, 22279,\r
-  8354, 23154, 22926, 17734, 15080, 5071, 28449, 12490, 8162, 27024,\r
-  28177, 2205, 6849, 28974, 28869, 11546, 15298, 9733, 16630, 19876,\r
-  3853, 21675, 26037, 20119, 15068, 20607, 21168, 19327, 18655, 10117,\r
-  7345, 2440, 7904, 18545, 22375, 28214, 27299, 20225, 105, 20054,\r
-  1296, 27280, 7032, 10549, 4243, 4841, 25604, 9231, 22212, 32601,\r
-  14322, 22986, 10563, 5128, 8093, 21220, 18918, 14728, 5915, 14763,\r
-  7703, 21167, 31937, 7852, 12663, 17570, 18665, 24941, 19400, 17715,\r
-  29426, 4447, 7689, 25453, 10121, 23310, 19170, 32364, 13351, 21915,\r
-  20035, 7795, 19419, 17516, 2121, 25656, 2378, 8482, 28513, 642,\r
-  20980, 459, 11695, 30198, 32441, 12121, 11697, 28462, 28059, 84,\r
-  23071, 8972, 24773, 19403, 5398, 30030, 20173, 2192, 10870, 12642,\r
-  2102, 27813, 16777, 17787, 22073, 8433, 4581, 13284, 30404, 23863,\r
-  24467, 11925, 6596, 73, 624, 4356, 17312, 30841, 31956, 11325,\r
-  14597, 4177, 25970, 6453, 22505, 29572, 10367, 1371, 458, 35,\r
+  9365,  12233, 19509, 21126, 11211, 7814,  16675, 17807, 7540,  10358,\r
+  18640, 30545, 536,   4114,  18338, 30503, 13804, 25035, 29974, 18477,\r
+  29431, 26015, 22277, 32615, 18035, 20201, 550,   4671,  30070, 7805,\r
+  17365, 26933, 5329,  27380, 6418,  2770,  22584, 837,   5837,  29405,\r
+  23716, 8086,  10081, 27090, 29174, 5201,  16734, 28816, 10205, 15225,\r
+  31627, 5202,  8697,  2111,  8747,  16096, 30529, 30928, 12672, 22279,\r
+  8354,  23154, 22926, 17734, 15080, 5071,  28449, 12490, 8162,  27024,\r
+  28177, 2205,  6849,  28974, 28869, 11546, 15298, 9733,  16630, 19876,\r
+  3853,  21675, 26037, 20119, 15068, 20607, 21168, 19327, 18655, 10117,\r
+  7345,  2440,  7904,  18545, 22375, 28214, 27299, 20225, 105,   20054,\r
+  1296,  27280, 7032,  10549, 4243,  4841,  25604, 9231,  22212, 32601,\r
+  14322, 22986, 10563, 5128,  8093,  21220, 18918, 14728, 5915,  14763,\r
+  7703,  21167, 31937, 7852,  12663, 17570, 18665, 24941, 19400, 17715,\r
+  29426, 4447,  7689,  25453, 10121, 23310, 19170, 32364, 13351, 21915,\r
+  20035, 7795,  19419, 17516, 2121,  25656, 2378,  8482,  28513, 642,\r
+  20980, 459,   11695, 30198, 32441, 12121, 11697, 28462, 28059, 84,\r
+  23071, 8972,  24773, 19403, 5398,  30030, 20173, 2192,  10870, 12642,\r
+  2102,  27813, 16777, 17787, 22073, 8433,  4581,  13284, 30404, 23863,\r
+  24467, 11925, 6596,  73,    624,   4356,  17312, 30841, 31956, 11325,\r
+  14597, 4177,  25970, 6453,  22505, 29572, 10367, 1371,  458,   35,\r
   25623, 11633, 31543, 14356, 25564, 31386, 25746, 26305, 32736, 30132,\r
-  12308, 20237, 25285, 1255, 14609, 30092, 31522, 10110, 24702, 23283,\r
-  7209, 9206, 21168, 15053, 4487, 23637, 23142, 8816, 10892, 15550,\r
-  25866, 29744, 140, 30785, 7220, 10962, 31877, 2039, 14448, 28996,\r
-  24577, 8271, 28993, 25227, 21822, 4259, 11878, 1532, 19085, 16655,\r
-  24155, 23471, 7416, 17026, 5667, 3377, 22055, 9493, 24133, 5753,\r
-  389, 2204, 20757, 31517, 23710, 7035, 28212, 23494, 26315, 31676,\r
-  18266, 32738, 5138, 11870, 27219, 10136, 10056, 8431, 11336, 14849,\r
-  30584, 26973, 14912, 9109, 9353, 14345, 4838, 30947, 32538, 12317,\r
-  19853, 12678, 10161, 6688, 21105, 3924, 10517, 9415, 26688, 1496,\r
-  4600, 10254, 15065, 13827, 20953, 7816, 16211, 21022, 23849, 18675,\r
-  6465, 32259, 23725, 12304, 25908, 32653, 27683, 30898, 3202, 21325,\r
-  11304, 15892, 1606, 31102, 11097, 26223, 10664, 3899, 27321, 9676,\r
-  30047, 2032, 339, 8983, 28788, 6927, 8992, 29558, 2120, 14852,\r
-  3882, 24537, 4056, 8810, 10482, 10449, 17472, 24703, 16655, 15525,\r
-  31358, 21973, 20761, 5027, 23161, 6219, 11973, 9908, 19266, 15676,\r
-  31313, 13363, 29849, 25846, 19491, 18175, 31155, 6766, 26029, 13263,\r
-  20794, 23346, 27027, 198, 24214, 23454, 24336, 27464, 12395, 23379,\r
-  1174, 11, 2146, 7653, 13748, 31089, 4141, 23508, 26685, 22549,\r
-  24517, 16318, 1191, 27043, 14582, 17362, 7601, 12782, 7198, 904,\r
-  19272, 27196, 6706, 21903, 11436, 2788, 2049, 16903, 21967, 4892,\r
-  30397, 10481, 11262, 780, 5559, 11492, 30146, 15399, 24938, 13825,\r
-  8713, 15290, 17339, 8489, 2689, 25541, 2431, 28525, 13637, 17931,\r
-  20798, 2501, 22971, 9573, 22326, 27909, 11452, 8539, 17059, 21006,\r
-  14326, 16373, 22590, 9793, 16527, 18895, 13828, 26682, 267, 11372,\r
-  31800, 15546, 14960, 22220, 1963, 20452, 24744, 17473, 8507, 22189,\r
-  26150, 10622, 18074, 17550, 27341, 30705, 28753, 2427, 21005, 11091,\r
-  30980, 27673, 1103, 5501, 2551, 21548, 24467, 7293, 12497, 6478,\r
-  6999, 7913, 672, 10727, 9147, 29299, 28702, 7769, 12260, 12478,\r
-  12083, 3195, 6046, 18032, 23994, 12105, 11333, 30857, 16776, 14042,\r
-  6373, 21491, 18858, 21650, 3488, 15193, 13551, 22424, 14928, 1853,\r
-  423, 28042, 23662, 27717, 2729, 23408, 25651, 7126, 30107, 17135,\r
-  29948, 21220, 22125, 18368, 17651, 19209, 11303, 10592, 8172, 16852,\r
-  6885, 9480, 4493, 2659, 1823, 13279, 31410, 23860, 30254, 31087,\r
-  5647, 23096, 22540, 30293, 12312, 28969, 7772, 21309, 5661, 9246,\r
-  17578, 22542, 186, 22621, 11763, 25442, 32110, 10608, 31592, 30265,\r
-  7050, 29307, 16495, 10222, 24653, 460, 14315, 5738, 17997, 10932,\r
-  24253, 9879, 19480, 10645, 6027, 10519, 22044, 3645, 15295, 14135,\r
-  26564, 8306, 15827, 23582, 30692, 29390, 16589, 24139, 25687, 6094,\r
-  18693, 15678, 18663, 11557, 27182, 14196, 15724, 12630, 5780, 27801,\r
+  12308, 20237, 25285, 1255,  14609, 30092, 31522, 10110, 24702, 23283,\r
+  7209,  9206,  21168, 15053, 4487,  23637, 23142, 8816,  10892, 15550,\r
+  25866, 29744, 140,   30785, 7220,  10962, 31877, 2039,  14448, 28996,\r
+  24577, 8271,  28993, 25227, 21822, 4259,  11878, 1532,  19085, 16655,\r
+  24155, 23471, 7416,  17026, 5667,  3377,  22055, 9493,  24133, 5753,\r
+  389,   2204,  20757, 31517, 23710, 7035,  28212, 23494, 26315, 31676,\r
+  18266, 32738, 5138,  11870, 27219, 10136, 10056, 8431,  11336, 14849,\r
+  30584, 26973, 14912, 9109,  9353,  14345, 4838,  30947, 32538, 12317,\r
+  19853, 12678, 10161, 6688,  21105, 3924,  10517, 9415,  26688, 1496,\r
+  4600,  10254, 15065, 13827, 20953, 7816,  16211, 21022, 23849, 18675,\r
+  6465,  32259, 23725, 12304, 25908, 32653, 27683, 30898, 3202,  21325,\r
+  11304, 15892, 1606,  31102, 11097, 26223, 10664, 3899,  27321, 9676,\r
+  30047, 2032,  339,   8983,  28788, 6927,  8992,  29558, 2120,  14852,\r
+  3882,  24537, 4056,  8810,  10482, 10449, 17472, 24703, 16655, 15525,\r
+  31358, 21973, 20761, 5027,  23161, 6219,  11973, 9908,  19266, 15676,\r
+  31313, 13363, 29849, 25846, 19491, 18175, 31155, 6766,  26029, 13263,\r
+  20794, 23346, 27027, 198,   24214, 23454, 24336, 27464, 12395, 23379,\r
+  1174,  11,    2146,  7653,  13748, 31089, 4141,  23508, 26685, 22549,\r
+  24517, 16318, 1191,  27043, 14582, 17362, 7601,  12782, 7198,  904,\r
+  19272, 27196, 6706,  21903, 11436, 2788,  2049,  16903, 21967, 4892,\r
+  30397, 10481, 11262, 780,   5559,  11492, 30146, 15399, 24938, 13825,\r
+  8713,  15290, 17339, 8489,  2689,  25541, 2431,  28525, 13637, 17931,\r
+  20798, 2501,  22971, 9573,  22326, 27909, 11452, 8539,  17059, 21006,\r
+  14326, 16373, 22590, 9793,  16527, 18895, 13828, 26682, 267,   11372,\r
+  31800, 15546, 14960, 22220, 1963,  20452, 24744, 17473, 8507,  22189,\r
+  26150, 10622, 18074, 17550, 27341, 30705, 28753, 2427,  21005, 11091,\r
+  30980, 27673, 1103,  5501,  2551,  21548, 24467, 7293,  12497, 6478,\r
+  6999,  7913,  672,   10727, 9147,  29299, 28702, 7769,  12260, 12478,\r
+  12083, 3195,  6046,  18032, 23994, 12105, 11333, 30857, 16776, 14042,\r
+  6373,  21491, 18858, 21650, 3488,  15193, 13551, 22424, 14928, 1853,\r
+  423,   28042, 23662, 27717, 2729,  23408, 25651, 7126,  30107, 17135,\r
+  29948, 21220, 22125, 18368, 17651, 19209, 11303, 10592, 8172,  16852,\r
+  6885,  9480,  4493,  2659,  1823,  13279, 31410, 23860, 30254, 31087,\r
+  5647,  23096, 22540, 30293, 12312, 28969, 7772,  21309, 5661,  9246,\r
+  17578, 22542, 186,   22621, 11763, 25442, 32110, 10608, 31592, 30265,\r
+  7050,  29307, 16495, 10222, 24653, 460,   14315, 5738,  17997, 10932,\r
+  24253, 9879,  19480, 10645, 6027,  10519, 22044, 3645,  15295, 14135,\r
+  26564, 8306,  15827, 23582, 30692, 29390, 16589, 24139, 25687, 6094,\r
+  18693, 15678, 18663, 11557, 27182, 14196, 15724, 12630, 5780,  27801,\r
   16184, 22401, 29603, 28666, 18867, 19837, 22441, 24377, 25155, 10280,\r
-  21725, 20804, 7023, 27131, 30111, 12679, 21315, 22498, 3585, 23393,\r
-  12534, 4170, 18055, 2517, 9674, 6267, 17451, 28547, 30004, 21544,\r
-  4516, 2774, 2109, 6980, 11752, 2686, 4136, 25112, 25584, 22049,\r
-  15445, 10131, 20411, 3917, 1893, 7649, 13461, 7858, 24479, 16703,\r
-  2201, 8590, 11922, 20749, 22901, 19304, 1020, 24356, 28269, 4097,\r
-  26603, 26987, 19363, 10632, 6178, 12709, 31381, 20237, 13502, 18317,\r
-  15335, 12088, 8218, 31013, 1635, 827, 5615, 7499, 30526, 19973,\r
-  15808, 27789, 6044, 7096, 15477, 23614, 6999, 21854, 2374, 12233,\r
-  31996, 31960, 2522, 13382, 6935, 25878, 14768, 23115, 15025, 14990,\r
-  24767, 8709, 4886, 28646, 7513, 3463, 18140, 25332, 17749, 3425,\r
-  28192, 19945, 25197, 7029, 5651, 22729, 19941, 30726, 22966, 24351,\r
-  12142, 15634, 30689, 15854, 25417, 15330, 2698, 15850, 2991, 22751,\r
-  17220, 28136, 20849, 22951, 20742, 404, 6108, 22880, 21294, 2146,\r
-  10207, 22349, 32197, 4295, 5744, 5022, 21253, 2984, 27179, 11917,\r
-  5656, 1043, 17468, 15782, 23331, 32557, 4224, 19302, 22659, 6251,\r
-  231, 29960, 23895, 11781, 22557, 6812, 4414, 12712, 18281, 21849,\r
-  24930, 29036, 25557, 10292, 16053, 27909, 30351, 7858, 4474, 2877,\r
-  11407, 19962, 1544, 17314, 27002, 27694, 5834, 4219, 16838, 29179,\r
-  30603, 15617, 24608, 31343, 17904, 25548, 23050, 21771, 9030, 12684,\r
-  14281, 32282, 7038, 16377, 13182, 28993, 32118, 7437, 29587, 2646,\r
-  2171, 21104, 17496, 26741, 4875, 308, 5358, 1873, 3807, 26050,\r
-  15205, 713, 3625, 22548, 17441, 14524, 11802, 7205, 20610, 15645,\r
-  2727, 5798, 18628, 21578, 8077, 14835, 25891, 26521, 14994, 16197,\r
-  21059, 10292, 25358, 41, 29904, 21544, 23211, 1073, 4193, 20920,\r
-  7017, 5865, 21923, 5367, 30437, 31244, 7091, 918, 15066, 2040,\r
+  21725, 20804, 7023,  27131, 30111, 12679, 21315, 22498, 3585,  23393,\r
+  12534, 4170,  18055, 2517,  9674,  6267,  17451, 28547, 30004, 21544,\r
+  4516,  2774,  2109,  6980,  11752, 2686,  4136,  25112, 25584, 22049,\r
+  15445, 10131, 20411, 3917,  1893,  7649,  13461, 7858,  24479, 16703,\r
+  2201,  8590,  11922, 20749, 22901, 19304, 1020,  24356, 28269, 4097,\r
+  26603, 26987, 19363, 10632, 6178,  12709, 31381, 20237, 13502, 18317,\r
+  15335, 12088, 8218,  31013, 1635,  827,   5615,  7499,  30526, 19973,\r
+  15808, 27789, 6044,  7096,  15477, 23614, 6999,  21854, 2374,  12233,\r
+  31996, 31960, 2522,  13382, 6935,  25878, 14768, 23115, 15025, 14990,\r
+  24767, 8709,  4886,  28646, 7513,  3463,  18140, 25332, 17749, 3425,\r
+  28192, 19945, 25197, 7029,  5651,  22729, 19941, 30726, 22966, 24351,\r
+  12142, 15634, 30689, 15854, 25417, 15330, 2698,  15850, 2991,  22751,\r
+  17220, 28136, 20849, 22951, 20742, 404,   6108,  22880, 21294, 2146,\r
+  10207, 22349, 32197, 4295,  5744,  5022,  21253, 2984,  27179, 11917,\r
+  5656,  1043,  17468, 15782, 23331, 32557, 4224,  19302, 22659, 6251,\r
+  231,   29960, 23895, 11781, 22557, 6812,  4414,  12712, 18281, 21849,\r
+  24930, 29036, 25557, 10292, 16053, 27909, 30351, 7858,  4474,  2877,\r
+  11407, 19962, 1544,  17314, 27002, 27694, 5834,  4219,  16838, 29179,\r
+  30603, 15617, 24608, 31343, 17904, 25548, 23050, 21771, 9030,  12684,\r
+  14281, 32282, 7038,  16377, 13182, 28993, 32118, 7437,  29587, 2646,\r
+  2171,  21104, 17496, 26741, 4875,  308,   5358,  1873,  3807,  26050,\r
+  15205, 713,   3625,  22548, 17441, 14524, 11802, 7205,  20610, 15645,\r
+  2727,  5798,  18628, 21578, 8077,  14835, 25891, 26521, 14994, 16197,\r
+  21059, 10292, 25358, 41,    29904, 21544, 23211, 1073,  4193,  20920,\r
+  7017,  5865,  21923, 5367,  30437, 31244, 7091,  918,   15066, 2040,\r
   18635, 19194, 32488, 23136, 11809, 23697, 32660, 18753, 23308, 1127,\r
-  10897, 22039, 11113, 19956, 16446, 22352, 5437, 11065, 11887, 30721,\r
-  31132, 4619, 2160, 24536, 31945, 942, 16455, 5970, 10654, 12965,\r
-  1338, 31789, 25646, 15049, 27537, 23073, 28586, 8089, 16797, 31691,\r
-  2945, 1233, 13817, 18410, 27595, 21822, 13072, 16077, 4328, 19408,\r
-  5087, 27660, 16996, 4849, 5629, 8311, 12574, 28181, 11480, 2124,\r
-  1194, 8594, 6721, 29101, 22515, 3251, 28715, 22352, 26917, 10759,\r
-  24495, 889, 202, 27135, 31060, 24357, 21555, 7096, 17038, 16776,\r
-  26393, 22550, 17540, 21434, 12420, 8978, 30742, 23726, 1772, 14165,\r
-  13087, 2403, 6046, 12293, 31479, 1374, 28002, 1247, 24637, 30551,\r
-  19035, 3206, 18387, 13875, 22830, 31002, 17705, 18994, 31079, 781,\r
-  27071, 3690, 11032, 13874, 11749, 1652, 24002, 5399, 22214, 15461,\r
-  9849, 1685, 32164, 15103, 8516, 16805, 7269, 30761, 451, 11125,\r
-  17231, 17309, 5908, 23484, 23568, 3553, 18166, 15178, 7681, 7032,\r
-  17455, 28899, 6059, 30809, 1068, 4173, 29067, 16288, 14312, 16296,\r
-  19986, 2948, 19471, 18174, 27376, 8585, 13410, 15899, 26514, 12022,\r
-  1629, 19615, 21737, 10634, 10007, 12369, 29294, 10347, 4203, 32182,\r
+  10897, 22039, 11113, 19956, 16446, 22352, 5437,  11065, 11887, 30721,\r
+  31132, 4619,  2160,  24536, 31945, 942,   16455, 5970,  10654, 12965,\r
+  1338,  31789, 25646, 15049, 27537, 23073, 28586, 8089,  16797, 31691,\r
+  2945,  1233,  13817, 18410, 27595, 21822, 13072, 16077, 4328,  19408,\r
+  5087,  27660, 16996, 4849,  5629,  8311,  12574, 28181, 11480, 2124,\r
+  1194,  8594,  6721,  29101, 22515, 3251,  28715, 22352, 26917, 10759,\r
+  24495, 889,   202,   27135, 31060, 24357, 21555, 7096,  17038, 16776,\r
+  26393, 22550, 17540, 21434, 12420, 8978,  30742, 23726, 1772,  14165,\r
+  13087, 2403,  6046,  12293, 31479, 1374,  28002, 1247,  24637, 30551,\r
+  19035, 3206,  18387, 13875, 22830, 31002, 17705, 18994, 31079, 781,\r
+  27071, 3690,  11032, 13874, 11749, 1652,  24002, 5399,  22214, 15461,\r
+  9849,  1685,  32164, 15103, 8516,  16805, 7269,  30761, 451,   11125,\r
+  17231, 17309, 5908,  23484, 23568, 3553,  18166, 15178, 7681,  7032,\r
+  17455, 28899, 6059,  30809, 1068,  4173,  29067, 16288, 14312, 16296,\r
+  19986, 2948,  19471, 18174, 27376, 8585,  13410, 15899, 26514, 12022,\r
+  1629,  19615, 21737, 10634, 10007, 12369, 29294, 10347, 4203,  32182,\r
   15459, 18783, 29013, 20195, 12123, 30270, 11678, 21647, 25852, 7848,\r
-  188, 32108, 28164, 14835, 18420, 10168, 3466, 9575, 14273, 4366,\r
-  14727, 12974, 121, 30851, 1172, 31366, 9774, 9966, 21749, 18361,\r
-  4050, 20871, 3287, 11855, 4511, 2740, 2006, 8962, 30390, 13599,\r
-  4546, 9970, 19975, 11532, 15011, 23450, 32368, 7146, 11258, 4867,\r
-  26153, 10791, 25418, 12343, 2399, 841, 30167, 27641, 5151, 24635,\r
-  16814, 20915, 13174, 3044, 12261, 2224, 2519, 5630, 27684, 15755,\r
-  17084, 10278, 13669, 16360, 2448, 12591, 11255, 10337, 26573, 23228,\r
-  16585, 6852, 20066, 32014, 10725, 30843, 20055, 1306, 59, 5963,\r
-  17587, 223, 27296, 20546, 32158, 17910, 31254, 31466, 4803, 26219,\r
-  6990, 10435, 2296, 26571, 16747, 13552, 28961, 28798, 11785, 31793,\r
-  4177, 24407, 31358, 20753, 21299, 362, 18015, 97, 4265, 23070,\r
-  12103, 31204, 24498, 12675, 30163, 29004, 1169, 23781, 29681, 2917,\r
-  14636, 30113, 18523, 27537, 21682, 29239, 23390, 13684, 5760, 21921,\r
-  8416, 22256, 6214, 26851, 15265, 11860, 11109, 13028, 26049, 24784,\r
-  9628, 8828, 17027, 29997, 24804, 7886, 32080, 1722, 29336, 29144,\r
-  23039, 9354, 24025, 16712, 6739, 12508, 17713, 2449, 23749, 21723,\r
-  24438, 20287, 22660, 23688, 13298, 31367, 6843, 3828, 25024, 4387,\r
-  10514, 22194, 30329, 16989, 11639, 20108, 6161, 31081, 3870, 1653,\r
-  1531, 27127, 7366, 5311, 13716, 19209, 11327, 18318, 3518, 13314,\r
-  21289, 2701, 1483, 20480, 7422, 21727, 11166, 23404, 25171, 13145,\r
-  21772, 8144, 9562, 17134, 136, 25064, 6060, 12138, 10496, 30203,\r
-  11589, 2660, 4354, 28267, 24784, 3693, 18723, 6284, 3366, 8846,\r
-  30113, 15282, 17, 12786, 5959, 20110, 10837, 11231, 23441, 5818,\r
-  4337, 16363, 14353, 26258, 25506, 10860, 21777, 27974, 23721, 9520,\r
-  2938, 19757, 19918, 20590, 31221, 27740, 32421, 10237, 30031, 13176,\r
-  16400, 22724, 22562, 11976, 22789, 2674, 30130, 17806, 12433, 29039,\r
-  13333, 31640, 22813, 15634, 4503, 28946, 24817, 13844, 6492, 5278,\r
-  3062, 8516, 2887, 15271, 23232, 14973, 15131, 5361, 715, 23509,\r
-  27360, 10613, 15365, 9496, 9353, 24429, 1933, 14197, 22227, 13227,\r
-  21435, 22902, 14704, 7470, 8544, 5942, 15461, 20215, 3663, 13006,\r
-  1713, 19481, 26908, 30992, 18479, 528, 12835, 20088, 25277, 23891,\r
-  11724, 2143, 11934, 3117, 27662, 26226, 24093, 25544, 26930, 16483,\r
-  17523, 7051, 11226, 15326, 1003, 21157, 1089, 7871, 26436, 5098,\r
-  20676, 4482, 27223, 19423, 27554, 26106, 13818, 25872, 9728, 13894,\r
-  4899, 32426, 29744, 28674, 6481, 28997, 12082, 8122, 7207, 5634,\r
-  3963, 4260, 7258, 982, 17654, 5262, 16334, 14117, 20553, 2069,\r
-  5372, 22419, 345, 26392, 9623, 4119, 16144, 1388, 7279, 11601,\r
-  31838, 16337, 661, 30237, 32381, 14629, 22464, 29288, 22650, 30680,\r
-  2543, 5186, 16369, 30624, 4176, 30517, 7960, 878, 11617, 10709,\r
-  2046, 27552, 7253, 13721, 27925, 27768, 11705, 22761, 17135, 22733,\r
-  5975, 10104, 28485, 23808, 31579, 1236, 10557, 28210, 27316, 11580,\r
-  12012, 14772, 26301, 16561, 29722, 10431, 9757, 1103, 11846, 19558,\r
-  8428, 19934, 25066, 17864, 10263, 19877, 21761, 32394, 3077, 10878,\r
-  2757, 17797, 5754, 9264, 11453, 9147, 23484, 12280, 1271, 32144,\r
-  9973, 17257, 28051, 21559, 1497, 16759, 22913, 15210, 14216, 15822,\r
-  23178, 22366, 694, 2664, 18581, 30454, 14089, 17246, 28195, 7735,\r
-  24002, 19710, 24093, 5372, 23968, 30751, 22223, 19946, 5633, 16561,\r
-  22068, 14759, 13643, 23192, 17268, 23111, 20106, 187, 20907, 11015,\r
-  29275, 14935, 32748, 12350, 20232, 2714, 23174, 17296, 7156, 15981,\r
-  24965, 28773, 21562, 19601, 14460, 29849, 1169, 31725, 898, 14710,\r
-  12403, 17446, 5499, 22751, 4734, 7281, 21401, 717, 15386, 11429,\r
-  29218, 22272, 22620, 5269, 28275, 1774, 5674, 15772, 27205, 21504,\r
+  188,   32108, 28164, 14835, 18420, 10168, 3466,  9575,  14273, 4366,\r
+  14727, 12974, 121,   30851, 1172,  31366, 9774,  9966,  21749, 18361,\r
+  4050,  20871, 3287,  11855, 4511,  2740,  2006,  8962,  30390, 13599,\r
+  4546,  9970,  19975, 11532, 15011, 23450, 32368, 7146,  11258, 4867,\r
+  26153, 10791, 25418, 12343, 2399,  841,   30167, 27641, 5151,  24635,\r
+  16814, 20915, 13174, 3044,  12261, 2224,  2519,  5630,  27684, 15755,\r
+  17084, 10278, 13669, 16360, 2448,  12591, 11255, 10337, 26573, 23228,\r
+  16585, 6852,  20066, 32014, 10725, 30843, 20055, 1306,  59,    5963,\r
+  17587, 223,   27296, 20546, 32158, 17910, 31254, 31466, 4803,  26219,\r
+  6990,  10435, 2296,  26571, 16747, 13552, 28961, 28798, 11785, 31793,\r
+  4177,  24407, 31358, 20753, 21299, 362,   18015, 97,    4265,  23070,\r
+  12103, 31204, 24498, 12675, 30163, 29004, 1169,  23781, 29681, 2917,\r
+  14636, 30113, 18523, 27537, 21682, 29239, 23390, 13684, 5760,  21921,\r
+  8416,  22256, 6214,  26851, 15265, 11860, 11109, 13028, 26049, 24784,\r
+  9628,  8828,  17027, 29997, 24804, 7886,  32080, 1722,  29336, 29144,\r
+  23039, 9354,  24025, 16712, 6739,  12508, 17713, 2449,  23749, 21723,\r
+  24438, 20287, 22660, 23688, 13298, 31367, 6843,  3828,  25024, 4387,\r
+  10514, 22194, 30329, 16989, 11639, 20108, 6161,  31081, 3870,  1653,\r
+  1531,  27127, 7366,  5311,  13716, 19209, 11327, 18318, 3518,  13314,\r
+  21289, 2701,  1483,  20480, 7422,  21727, 11166, 23404, 25171, 13145,\r
+  21772, 8144,  9562,  17134, 136,   25064, 6060,  12138, 10496, 30203,\r
+  11589, 2660,  4354,  28267, 24784, 3693,  18723, 6284,  3366,  8846,\r
+  30113, 15282, 17,    12786, 5959,  20110, 10837, 11231, 23441, 5818,\r
+  4337,  16363, 14353, 26258, 25506, 10860, 21777, 27974, 23721, 9520,\r
+  2938,  19757, 19918, 20590, 31221, 27740, 32421, 10237, 30031, 13176,\r
+  16400, 22724, 22562, 11976, 22789, 2674,  30130, 17806, 12433, 29039,\r
+  13333, 31640, 22813, 15634, 4503,  28946, 24817, 13844, 6492,  5278,\r
+  3062,  8516,  2887,  15271, 23232, 14973, 15131, 5361,  715,   23509,\r
+  27360, 10613, 15365, 9496,  9353,  24429, 1933,  14197, 22227, 13227,\r
+  21435, 22902, 14704, 7470,  8544,  5942,  15461, 20215, 3663,  13006,\r
+  1713,  19481, 26908, 30992, 18479, 528,   12835, 20088, 25277, 23891,\r
+  11724, 2143,  11934, 3117,  27662, 26226, 24093, 25544, 26930, 16483,\r
+  17523, 7051,  11226, 15326, 1003,  21157, 1089,  7871,  26436, 5098,\r
+  20676, 4482,  27223, 19423, 27554, 26106, 13818, 25872, 9728,  13894,\r
+  4899,  32426, 29744, 28674, 6481,  28997, 12082, 8122,  7207,  5634,\r
+  3963,  4260,  7258,  982,   17654, 5262,  16334, 14117, 20553, 2069,\r
+  5372,  22419, 345,   26392, 9623,  4119,  16144, 1388,  7279,  11601,\r
+  31838, 16337, 661,   30237, 32381, 14629, 22464, 29288, 22650, 30680,\r
+  2543,  5186,  16369, 30624, 4176,  30517, 7960,  878,   11617, 10709,\r
+  2046,  27552, 7253,  13721, 27925, 27768, 11705, 22761, 17135, 22733,\r
+  5975,  10104, 28485, 23808, 31579, 1236,  10557, 28210, 27316, 11580,\r
+  12012, 14772, 26301, 16561, 29722, 10431, 9757,  1103,  11846, 19558,\r
+  8428,  19934, 25066, 17864, 10263, 19877, 21761, 32394, 3077,  10878,\r
+  2757,  17797, 5754,  9264,  11453, 9147,  23484, 12280, 1271,  32144,\r
+  9973,  17257, 28051, 21559, 1497,  16759, 22913, 15210, 14216, 15822,\r
+  23178, 22366, 694,   2664,  18581, 30454, 14089, 17246, 28195, 7735,\r
+  24002, 19710, 24093, 5372,  23968, 30751, 22223, 19946, 5633,  16561,\r
+  22068, 14759, 13643, 23192, 17268, 23111, 20106, 187,   20907, 11015,\r
+  29275, 14935, 32748, 12350, 20232, 2714,  23174, 17296, 7156,  15981,\r
+  24965, 28773, 21562, 19601, 14460, 29849, 1169,  31725, 898,   14710,\r
+  12403, 17446, 5499,  22751, 4734,  7281,  21401, 717,   15386, 11429,\r
+  29218, 22272, 22620, 5269,  28275, 1774,  5674,  15772, 27205, 21504,\r
   32160, 27257, 19503, 15869, 13491, 31069, 18796, 30150, 30484, 3139,\r
-  15583, 26693, 17751, 2944, 28500, 30112, 3925, 13979, 13577, 10418,\r
-  24015, 14174, 1133, 699, 16212, 27437, 27175, 12118, 31844, 22167,\r
+  15583, 26693, 17751, 2944,  28500, 30112, 3925,  13979, 13577, 10418,\r
+  24015, 14174, 1133,  699,   16212, 27437, 27175, 12118, 31844, 22167,\r
   32346, 13484, 22229, 30507, 16167, 29672, 22646, 26509, 29812, 3563,\r
-  29939, 2505, 236, 64, 760, 11238, 17479, 3666, 20633, 23231,\r
-  29388, 19164, 22258, 22286, 1556, 21922, 20746, 24778, 11024, 8543,\r
-  14846, 19635, 20814, 22014, 30299, 6187, 16247, 8972, 11467, 28487,\r
-  20765, 5742, 4596, 22822, 16819, 19279, 11165, 32385, 10461, 1373,\r
-  20242, 16004, 3051, 3125, 24266, 1500, 10399, 23323, 2888, 7186,\r
-  23863, 30959, 6975, 23319, 20903, 3164, 32505, 1312, 17959, 83,\r
-  13049, 11443, 10989, 19640, 13792, 25346, 25916, 14171, 5517, 8313,\r
-  26013, 8489, 22408, 7059, 29549, 13220, 16545, 497, 20887, 656,\r
-  16340, 18349, 8355, 30191, 112, 236, 8688, 4144, 26489, 31154,\r
-  16445, 25764, 74, 32763, 366, 21041, 7294, 5127, 17805, 22090,\r
-  11025, 29429, 30480, 3102, 2755, 12179, 4186, 11280, 23485, 19829,\r
-  6788, 8040, 5239, 4676, 2396, 31816, 24025, 345, 6318, 32225,\r
-  31393, 13706, 3779, 19686, 15876, 3396, 2088, 11329, 21912, 23771,\r
-  12464, 24070, 27249, 6941, 3516, 21669, 23946, 15405, 15802, 1123,\r
-  9063, 11919, 20716, 26891, 761, 11903, 8043, 5088, 15298, 25479,\r
-  16491, 21975, 22330, 31824, 1728, 23043, 10608, 15545, 9890, 17489,\r
-  17652, 12838, 26797, 10357, 26101, 538, 3627, 27940, 6311, 1801,\r
-  19094, 28548, 7911, 12135, 30297, 31457, 22818, 21253, 24279, 26785,\r
-  13939, 29341, 22446, 31866, 28683, 5548, 28989, 20706, 5078, 14975,\r
-  30820, 26567, 8796, 3217, 9098, 13185, 17381, 21780, 4325, 11269,\r
-  22752, 22990, 31221, 17499, 27013, 7718, 16466, 21586, 14522, 14975,\r
-  14248, 19058, 32307, 15812, 20736, 14898, 3038, 19780, 2881, 6763,\r
-  25214, 30401, 19702, 18445, 31125, 26819, 2897, 8465, 16008, 1330,\r
-  25200, 19374, 3838, 548, 736, 32208, 12937, 3316, 6240, 22726,\r
-  6024, 9108, 3559, 11578, 22348, 6180, 21224, 15207, 17785, 29379,\r
-  1492, 17286, 3759, 9637, 10209, 31369, 10858, 18277, 15882, 14092,\r
-  9255, 18333, 854, 27273, 32713, 20917, 4190, 15051, 15674, 20984,\r
-  7177, 20389, 16213, 20717, 14747, 10467, 6660, 6372, 14318, 4225,\r
-  2981, 22991, 1534, 32027, 9651, 16211, 16556, 30885, 26786, 11551,\r
-  19899, 24412, 22282, 5501, 10271, 2812, 17416, 7718, 16759, 15924,\r
-  24802, 1883, 7384, 25687, 19945, 2353, 1740, 31060, 12964, 6957,\r
-  3738, 11752, 8490, 23056, 9416, 7186, 18640, 32756, 735, 8136,\r
-  15364, 8856, 16494, 10216, 19833, 11257, 14673, 4977, 18565, 16674,\r
-  10547, 28403, 2247, 2884, 8274, 9796, 13580, 5897, 13698, 32373,\r
-  8563, 15910, 6517, 27652, 7376, 20272, 28473, 6483, 11599, 26544,\r
-  3586, 12633, 90, 13433, 4138, 17048, 4540, 3129, 21366, 20047,\r
-  19974, 6223, 20123, 22512, 13361, 32732, 24577, 2260, 14982, 18717,\r
-  31174, 15406, 31419, 25848, 20230, 1854, 26975, 6356, 26202, 4551,\r
-  7288, 15022, 13726, 21186, 25962, 29545, 11000, 1364, 16922, 31590,\r
-  18197, 27134, 26964, 1365, 11446, 10260, 30314, 19275, 18796, 25456,\r
-  30750, 29204, 31647, 23143, 26306, 14026, 22997, 8188, 17822, 6822,\r
-  32561, 18004, 29586, 279, 314, 3434, 28413, 29713, 29407, 27140,\r
-  4317, 680, 6327, 30950, 823, 28125, 12941, 12869, 30393, 6072,\r
-  32283, 29054, 23454, 26775, 22294, 9480, 8658, 7877, 6251, 15015,\r
-  17494, 15438, 8905, 7139, 9191, 1810, 11359, 20153, 29914, 20249,\r
-  15847, 3728, 17483, 28454, 227, 29039, 22646, 15247, 17190, 28012,\r
-  28773, 21323, 21399, 21096, 9932, 1869, 7218, 3065, 31793, 19472,\r
-  7503, 16296, 19535, 26996, 11815, 7005, 12989, 23752, 9876, 26647,\r
-  8907, 8488, 22040, 13536, 13997, 21001, 27681, 11777, 31195, 23570,\r
-  13707, 29810, 12983, 12334, 21351, 2452, 28528, 11487, 20219, 8994,\r
-  23079, 12757, 12041, 31589, 6225, 4543, 29269, 29096, 14685, 22113,\r
-  4961, 3820, 30870, 2790, 31099, 17117, 22090, 120, 31481, 27908,\r
-  19500, 16655, 21700, 1597, 8439, 9350, 15123, 32364, 8020, 15348,\r
-  26489, 8812, 13310, 1849, 18466, 7752, 14116, 10455, 13402, 28590,\r
-  25871, 3076, 19022, 23712, 18948, 12541, 23063, 17005, 9580, 5020,\r
-  500, 20704, 2098, 24621, 24535, 1463, 12909, 27262, 31780, 31830,\r
-  29759, 6965, 20917, 26045, 5628, 18278, 5921, 15544, 2959, 9829,\r
-  11582, 2645, 30490, 23001, 22244, 20123, 16093, 15378, 7668, 24953,\r
-  14937, 26781, 2457, 24573, 15029, 13077, 2510, 31175, 29280, 59,\r
-  15393, 12988, 32760, 13641, 28086, 27903, 8299, 12676, 32398, 20253,\r
-  19548, 1553, 2569, 23175, 17608, 24585, 30890, 17990, 21225, 22736,\r
-  24347, 29162, 16218, 8354, 20081, 1219, 17533, 14190, 31152, 3412,\r
-  26, 10216, 21650, 13573, 10312, 30938, 3972, 23576, 1937, 18618,\r
-  5362, 12766, 1105, 18306, 27588, 7467, 14175, 700, 9001, 2311,\r
-  21999, 14300, 11155, 27046, 29367, 8403, 16643, 3483, 23121, 28385,\r
-  19078, 3912, 3809, 26539, 21247, 31385, 9975, 22669, 32552, 31474,\r
-  5047, 21553, 9428, 9573, 4663, 28257, 26487, 13097, 19496, 27161,\r
-  32231, 16455, 27577, 3553, 1380, 25239, 9912, 4697, 1495, 11499,\r
-  1274, 24342, 2903, 29322, 26110, 2476, 30961, 24288, 2509, 19212,\r
-  30889, 13683, 8484, 24337, 11452, 19993, 10453, 597, 1576, 8553,\r
-  5227, 585, 25710, 31087, 3085, 4997, 25239, 6820, 16805, 25180,\r
-  30069, 31004, 8513, 4532, 16171, 19970, 24761, 7188, 15344, 8514,\r
-  12946, 19199, 11279, 7045, 8226, 14465, 24370, 13410, 20213, 3847,\r
-  17633, 4306, 13680, 31604, 26182, 9701, 692, 1392, 11571, 29620,\r
-  15813, 16899, 7270, 27799, 24556, 5220, 23819, 23704, 28249, 28939,\r
-  17794, 25895, 22285, 22285, 15715, 24847, 5367, 29609, 8895, 17576,\r
-  24413, 9246, 5289, 20046, 26750, 18880, 18165, 6931, 28534, 9291,\r
-  17216, 29617, 10593, 9847, 15153, 26051, 17859, 30925, 20477, 32052,\r
-  4648, 7864, 29489, 12791, 263, 29151, 17580, 24056, 6124, 26546,\r
-  4586, 20307, 2262, 21827, 23177, 19141, 31454, 9560, 32261, 4703,\r
-  17946, 13502, 30407, 17538, 9921, 18656, 18014, 9991, 11152, 21656,\r
-  30476, 12990, 25452, 32580, 22148, 29466, 3656, 8733, 19954, 3626,\r
-  21833, 12228, 31548, 2251, 20008, 14878, 28551, 6941, 19929, 2658,\r
-  14078, 10547, 20074, 32624, 3534, 13327, 27693, 9829, 26229, 22221,\r
-  15897, 16748, 9533, 9246, 3438, 12503, 13571, 30712, 12440, 29294,\r
-  22845, 4492, 3414, 11014, 24892, 2425, 1563, 28246, 8366, 30783,\r
-  22197, 14599, 20838, 24822, 9260, 20746, 16992, 13376, 17389, 46,\r
-  30719, 32636, 32295, 23794, 8602, 7228, 20342, 5527, 2103, 29689,\r
-  28095, 29050, 23190, 11270, 5211, 31905, 31346, 19907, 23415, 4500,\r
-  12035, 16147, 7866, 13678, 24775, 7952, 14121, 31283, 17026, 23293,\r
-  3144, 23396, 2948, 3963, 16514, 18641, 10026, 2560, 31947, 21423,\r
-  32167, 32390, 8068, 12778, 14852, 17792, 21151, 3005, 12646, 13842,\r
+  29939, 2505,  236,   64,    760,   11238, 17479, 3666,  20633, 23231,\r
+  29388, 19164, 22258, 22286, 1556,  21922, 20746, 24778, 11024, 8543,\r
+  14846, 19635, 20814, 22014, 30299, 6187,  16247, 8972,  11467, 28487,\r
+  20765, 5742,  4596,  22822, 16819, 19279, 11165, 32385, 10461, 1373,\r
+  20242, 16004, 3051,  3125,  24266, 1500,  10399, 23323, 2888,  7186,\r
+  23863, 30959, 6975,  23319, 20903, 3164,  32505, 1312,  17959, 83,\r
+  13049, 11443, 10989, 19640, 13792, 25346, 25916, 14171, 5517,  8313,\r
+  26013, 8489,  22408, 7059,  29549, 13220, 16545, 497,   20887, 656,\r
+  16340, 18349, 8355,  30191, 112,   236,   8688,  4144,  26489, 31154,\r
+  16445, 25764, 74,    32763, 366,   21041, 7294,  5127,  17805, 22090,\r
+  11025, 29429, 30480, 3102,  2755,  12179, 4186,  11280, 23485, 19829,\r
+  6788,  8040,  5239,  4676,  2396,  31816, 24025, 345,   6318,  32225,\r
+  31393, 13706, 3779,  19686, 15876, 3396,  2088,  11329, 21912, 23771,\r
+  12464, 24070, 27249, 6941,  3516,  21669, 23946, 15405, 15802, 1123,\r
+  9063,  11919, 20716, 26891, 761,   11903, 8043,  5088,  15298, 25479,\r
+  16491, 21975, 22330, 31824, 1728,  23043, 10608, 15545, 9890,  17489,\r
+  17652, 12838, 26797, 10357, 26101, 538,   3627,  27940, 6311,  1801,\r
+  19094, 28548, 7911,  12135, 30297, 31457, 22818, 21253, 24279, 26785,\r
+  13939, 29341, 22446, 31866, 28683, 5548,  28989, 20706, 5078,  14975,\r
+  30820, 26567, 8796,  3217,  9098,  13185, 17381, 21780, 4325,  11269,\r
+  22752, 22990, 31221, 17499, 27013, 7718,  16466, 21586, 14522, 14975,\r
+  14248, 19058, 32307, 15812, 20736, 14898, 3038,  19780, 2881,  6763,\r
+  25214, 30401, 19702, 18445, 31125, 26819, 2897,  8465,  16008, 1330,\r
+  25200, 19374, 3838,  548,   736,   32208, 12937, 3316,  6240,  22726,\r
+  6024,  9108,  3559,  11578, 22348, 6180,  21224, 15207, 17785, 29379,\r
+  1492,  17286, 3759,  9637,  10209, 31369, 10858, 18277, 15882, 14092,\r
+  9255,  18333, 854,   27273, 32713, 20917, 4190,  15051, 15674, 20984,\r
+  7177,  20389, 16213, 20717, 14747, 10467, 6660,  6372,  14318, 4225,\r
+  2981,  22991, 1534,  32027, 9651,  16211, 16556, 30885, 26786, 11551,\r
+  19899, 24412, 22282, 5501,  10271, 2812,  17416, 7718,  16759, 15924,\r
+  24802, 1883,  7384,  25687, 19945, 2353,  1740,  31060, 12964, 6957,\r
+  3738,  11752, 8490,  23056, 9416,  7186,  18640, 32756, 735,   8136,\r
+  15364, 8856,  16494, 10216, 19833, 11257, 14673, 4977,  18565, 16674,\r
+  10547, 28403, 2247,  2884,  8274,  9796,  13580, 5897,  13698, 32373,\r
+  8563,  15910, 6517,  27652, 7376,  20272, 28473, 6483,  11599, 26544,\r
+  3586,  12633, 90,    13433, 4138,  17048, 4540,  3129,  21366, 20047,\r
+  19974, 6223,  20123, 22512, 13361, 32732, 24577, 2260,  14982, 18717,\r
+  31174, 15406, 31419, 25848, 20230, 1854,  26975, 6356,  26202, 4551,\r
+  7288,  15022, 13726, 21186, 25962, 29545, 11000, 1364,  16922, 31590,\r
+  18197, 27134, 26964, 1365,  11446, 10260, 30314, 19275, 18796, 25456,\r
+  30750, 29204, 31647, 23143, 26306, 14026, 22997, 8188,  17822, 6822,\r
+  32561, 18004, 29586, 279,   314,   3434,  28413, 29713, 29407, 27140,\r
+  4317,  680,   6327,  30950, 823,   28125, 12941, 12869, 30393, 6072,\r
+  32283, 29054, 23454, 26775, 22294, 9480,  8658,  7877,  6251,  15015,\r
+  17494, 15438, 8905,  7139,  9191,  1810,  11359, 20153, 29914, 20249,\r
+  15847, 3728,  17483, 28454, 227,   29039, 22646, 15247, 17190, 28012,\r
+  28773, 21323, 21399, 21096, 9932,  1869,  7218,  3065,  31793, 19472,\r
+  7503,  16296, 19535, 26996, 11815, 7005,  12989, 23752, 9876,  26647,\r
+  8907,  8488,  22040, 13536, 13997, 21001, 27681, 11777, 31195, 23570,\r
+  13707, 29810, 12983, 12334, 21351, 2452,  28528, 11487, 20219, 8994,\r
+  23079, 12757, 12041, 31589, 6225,  4543,  29269, 29096, 14685, 22113,\r
+  4961,  3820,  30870, 2790,  31099, 17117, 22090, 120,   31481, 27908,\r
+  19500, 16655, 21700, 1597,  8439,  9350,  15123, 32364, 8020,  15348,\r
+  26489, 8812,  13310, 1849,  18466, 7752,  14116, 10455, 13402, 28590,\r
+  25871, 3076,  19022, 23712, 18948, 12541, 23063, 17005, 9580,  5020,\r
+  500,   20704, 2098,  24621, 24535, 1463,  12909, 27262, 31780, 31830,\r
+  29759, 6965,  20917, 26045, 5628,  18278, 5921,  15544, 2959,  9829,\r
+  11582, 2645,  30490, 23001, 22244, 20123, 16093, 15378, 7668,  24953,\r
+  14937, 26781, 2457,  24573, 15029, 13077, 2510,  31175, 29280, 59,\r
+  15393, 12988, 32760, 13641, 28086, 27903, 8299,  12676, 32398, 20253,\r
+  19548, 1553,  2569,  23175, 17608, 24585, 30890, 17990, 21225, 22736,\r
+  24347, 29162, 16218, 8354,  20081, 1219,  17533, 14190, 31152, 3412,\r
+  26,    10216, 21650, 13573, 10312, 30938, 3972,  23576, 1937,  18618,\r
+  5362,  12766, 1105,  18306, 27588, 7467,  14175, 700,   9001,  2311,\r
+  21999, 14300, 11155, 27046, 29367, 8403,  16643, 3483,  23121, 28385,\r
+  19078, 3912,  3809,  26539, 21247, 31385, 9975,  22669, 32552, 31474,\r
+  5047,  21553, 9428,  9573,  4663,  28257, 26487, 13097, 19496, 27161,\r
+  32231, 16455, 27577, 3553,  1380,  25239, 9912,  4697,  1495,  11499,\r
+  1274,  24342, 2903,  29322, 26110, 2476,  30961, 24288, 2509,  19212,\r
+  30889, 13683, 8484,  24337, 11452, 19993, 10453, 597,   1576,  8553,\r
+  5227,  585,   25710, 31087, 3085,  4997,  25239, 6820,  16805, 25180,\r
+  30069, 31004, 8513,  4532,  16171, 19970, 24761, 7188,  15344, 8514,\r
+  12946, 19199, 11279, 7045,  8226,  14465, 24370, 13410, 20213, 3847,\r
+  17633, 4306,  13680, 31604, 26182, 9701,  692,   1392,  11571, 29620,\r
+  15813, 16899, 7270,  27799, 24556, 5220,  23819, 23704, 28249, 28939,\r
+  17794, 25895, 22285, 22285, 15715, 24847, 5367,  29609, 8895,  17576,\r
+  24413, 9246,  5289,  20046, 26750, 18880, 18165, 6931,  28534, 9291,\r
+  17216, 29617, 10593, 9847,  15153, 26051, 17859, 30925, 20477, 32052,\r
+  4648,  7864,  29489, 12791, 263,   29151, 17580, 24056, 6124,  26546,\r
+  4586,  20307, 2262,  21827, 23177, 19141, 31454, 9560,  32261, 4703,\r
+  17946, 13502, 30407, 17538, 9921,  18656, 18014, 9991,  11152, 21656,\r
+  30476, 12990, 25452, 32580, 22148, 29466, 3656,  8733,  19954, 3626,\r
+  21833, 12228, 31548, 2251,  20008, 14878, 28551, 6941,  19929, 2658,\r
+  14078, 10547, 20074, 32624, 3534,  13327, 27693, 9829,  26229, 22221,\r
+  15897, 16748, 9533,  9246,  3438,  12503, 13571, 30712, 12440, 29294,\r
+  22845, 4492,  3414,  11014, 24892, 2425,  1563,  28246, 8366,  30783,\r
+  22197, 14599, 20838, 24822, 9260,  20746, 16992, 13376, 17389, 46,\r
+  30719, 32636, 32295, 23794, 8602,  7228,  20342, 5527,  2103,  29689,\r
+  28095, 29050, 23190, 11270, 5211,  31905, 31346, 19907, 23415, 4500,\r
+  12035, 16147, 7866,  13678, 24775, 7952,  14121, 31283, 17026, 23293,\r
+  3144,  23396, 2948,  3963,  16514, 18641, 10026, 2560,  31947, 21423,\r
+  32167, 32390, 8068,  12778, 14852, 17792, 21151, 3005,  12646, 13842,\r
   19715, 18303, 20368, 28801, 17202, 18368, 11432, 11497, 19241, 20372,\r
-  12350, 25134, 14216, 303, 25994, 22836, 11762, 10930, 25845, 83,\r
-  31927, 21829, 30428, 4869, 29616, 19046, 21392, 27106, 17515, 896,\r
-  9377, 1743, 11656, 14272, 11100, 12658, 30051, 31780, 12434, 14313,\r
-  30708, 10709, 8603, 10171, 19443, 32438, 32411, 4878, 17215, 11325,\r
-  32260, 13851, 19072, 18562, 2396, 4320, 27659, 21909, 30529, 18708,\r
-  31239, 21269, 9898, 26720, 9166, 3582, 24431, 19148, 31382, 8899,\r
-  7180, 20856, 10577, 26013, 8354, 11660, 25554, 9506, 830, 22385,\r
-  20784, 31513, 2398, 1602, 30063, 8077, 32433, 15229, 24157, 29216,\r
-  26911, 14079, 6075, 11682, 15881, 26415, 10909, 31202, 31954, 10617,\r
-  11284, 20420, 21150, 28414, 7945, 25492, 11097, 6537, 11628, 2458,\r
-  21500, 9413, 31887, 18671, 4619, 28590, 8396, 4239, 21602, 14918,\r
-  29806, 17070, 24882, 11145, 21967, 2640, 9543, 29602, 4285, 12052,\r
-  2188, 24159, 30498, 23376, 27600, 27107, 27876, 2147, 13258, 13723,\r
-  27403, 1351, 1371, 23923, 15906, 19302, 5908, 5449, 991, 5551,\r
-  15352, 6305, 11270, 28136, 2947, 17051, 138, 9286, 19179, 25123,\r
-  30965, 25915, 31653, 7784, 23819, 24975, 13099, 32655, 31402, 15538,\r
-  8189, 28584, 29429, 13649, 24549, 18401, 25266, 15399, 2944, 15865,\r
-  27119, 27926, 6906, 17912, 22252, 7798, 2073, 15390, 30773, 31405,\r
+  12350, 25134, 14216, 303,   25994, 22836, 11762, 10930, 25845, 83,\r
+  31927, 21829, 30428, 4869,  29616, 19046, 21392, 27106, 17515, 896,\r
+  9377,  1743,  11656, 14272, 11100, 12658, 30051, 31780, 12434, 14313,\r
+  30708, 10709, 8603,  10171, 19443, 32438, 32411, 4878,  17215, 11325,\r
+  32260, 13851, 19072, 18562, 2396,  4320,  27659, 21909, 30529, 18708,\r
+  31239, 21269, 9898,  26720, 9166,  3582,  24431, 19148, 31382, 8899,\r
+  7180,  20856, 10577, 26013, 8354,  11660, 25554, 9506,  830,   22385,\r
+  20784, 31513, 2398,  1602,  30063, 8077,  32433, 15229, 24157, 29216,\r
+  26911, 14079, 6075,  11682, 15881, 26415, 10909, 31202, 31954, 10617,\r
+  11284, 20420, 21150, 28414, 7945,  25492, 11097, 6537,  11628, 2458,\r
+  21500, 9413,  31887, 18671, 4619,  28590, 8396,  4239,  21602, 14918,\r
+  29806, 17070, 24882, 11145, 21967, 2640,  9543,  29602, 4285,  12052,\r
+  2188,  24159, 30498, 23376, 27600, 27107, 27876, 2147,  13258, 13723,\r
+  27403, 1351,  1371,  23923, 15906, 19302, 5908,  5449,  991,   5551,\r
+  15352, 6305,  11270, 28136, 2947,  17051, 138,   9286,  19179, 25123,\r
+  30965, 25915, 31653, 7784,  23819, 24975, 13099, 32655, 31402, 15538,\r
+  8189,  28584, 29429, 13649, 24549, 18401, 25266, 15399, 2944,  15865,\r
+  27119, 27926, 6906,  17912, 22252, 7798,  2073,  15390, 30773, 31405,\r
   20861, 27417, 23055, 22527, 17190, 17019, 29461, 17064, 10294, 20842,\r
-  1059, 27944, 18936, 22937, 12147, 31455, 24610, 3704, 2822, 22745,\r
-  22103, 21672, 12870, 6379, 2800, 5554, 6889, 767, 27388, 31736,\r
-  12568, 20652, 3973, 10988, 32465, 18186, 16406, 18303, 25226, 8900,\r
-  32377, 25821, 6423, 2670, 32709, 10583, 7885, 31513, 13977, 16288,\r
+  1059,  27944, 18936, 22937, 12147, 31455, 24610, 3704,  2822,  22745,\r
+  22103, 21672, 12870, 6379,  2800,  5554,  6889,  767,   27388, 31736,\r
+  12568, 20652, 3973,  10988, 32465, 18186, 16406, 18303, 25226, 8900,\r
+  32377, 25821, 6423,  2670,  32709, 10583, 7885,  31513, 13977, 16288,\r
   11240, 25381, 21154, 26685, 20522, 24407, 22883, 16183, 29125, 20011,\r
-  15413, 2579, 13179, 11628, 3980, 8707, 1540, 30209, 18301, 20062,\r
-  26800, 27146, 7549, 9038, 7501, 2348, 876, 14537, 21323, 7976,\r
-  18386, 19906, 3614, 8371, 20328, 11168, 19172, 19074, 2010, 24047,\r
-  10568, 13988, 30667, 4693, 7078, 23572, 4121, 13512, 25200, 11407,\r
-  8803, 7167, 22224, 17571, 8393, 23078, 18574, 25097, 2803, 1494,\r
-  29493, 5172, 11349, 3908, 20081, 23338, 4017, 30137, 15804, 10387,\r
-  19421, 28994, 25401, 30479, 3526, 25768, 6624, 27597, 949, 11170,\r
-  23260, 13914, 3537, 6474, 4657, 8886, 22502, 15054, 9890, 4525,\r
+  15413, 2579,  13179, 11628, 3980,  8707,  1540,  30209, 18301, 20062,\r
+  26800, 27146, 7549,  9038,  7501,  2348,  876,   14537, 21323, 7976,\r
+  18386, 19906, 3614,  8371,  20328, 11168, 19172, 19074, 2010,  24047,\r
+  10568, 13988, 30667, 4693,  7078,  23572, 4121,  13512, 25200, 11407,\r
+  8803,  7167,  22224, 17571, 8393,  23078, 18574, 25097, 2803,  1494,\r
+  29493, 5172,  11349, 3908,  20081, 23338, 4017,  30137, 15804, 10387,\r
+  19421, 28994, 25401, 30479, 3526,  25768, 6624,  27597, 949,   11170,\r
+  23260, 13914, 3537,  6474,  4657,  8886,  22502, 15054, 9890,  4525,\r
   16484, 12904, 14546, 19300, 12459, 16016, 23977, 24627, 19077, 16752,\r
-  22521, 2994, 3828, 23704, 5474, 19991, 25135, 29939, 29299, 12223,\r
-  4327, 13049, 2577, 25354, 15054, 21287, 5149, 14444, 18010, 23212,\r
-  5969, 6337, 16838, 1126, 29291, 31201, 21851, 31244, 142, 373,\r
-  10989, 11693, 23781, 18953, 28328, 26457, 2441, 32354, 19725, 23326,\r
-  32165, 16145, 4663, 23350, 24280, 1608, 20067, 31358, 27098, 32237,\r
-  9135, 13098, 20067, 31725, 8482, 26039, 584, 6355, 20205, 17442,\r
-  20455, 5273, 20464, 32088, 9158, 32189, 15488, 15597, 23927, 20120,\r
-  6760, 21264, 10175, 29932, 5677, 6335, 7159, 30652, 24983, 25655,\r
-  13489, 12128, 23404, 8623, 21407, 17368, 25727, 25669, 24241, 25953,\r
-  1513, 825, 14462, 29510, 19607, 5977, 6117, 1273, 32261, 27836,\r
-  756, 2402, 2632, 15539, 28936, 28791, 24402, 17405, 22582, 4877,\r
-  370, 2362, 10730, 19693, 3354, 26530, 718, 32043, 1509, 12791,\r
-  4590, 24755, 5848, 440, 31513, 31525, 10217, 1688, 14474, 483,\r
-  27837, 27183, 16328, 32104, 20662, 7150, 28106, 5339, 25645, 6488,\r
-  32351, 14307, 12028, 1647, 4813, 6846, 3136, 10861, 3000, 14477,\r
-  29533, 9397, 14918, 20466, 21058, 28169, 11393, 3549, 23790, 31229,\r
-  6397, 23203, 30258, 3244, 11706, 32081, 5561, 6313, 17995, 2367,\r
-  20295, 14649, 19768, 18920, 24382, 7359, 19618, 8440, 24678, 29559,\r
-  29221, 2727, 3821, 13927, 2563, 15430, 15533, 23187, 13694, 4375,\r
-  23214, 17521, 24709, 14690, 15340, 3996, 14995, 24517, 30042, 32460,\r
+  22521, 2994,  3828,  23704, 5474,  19991, 25135, 29939, 29299, 12223,\r
+  4327,  13049, 2577,  25354, 15054, 21287, 5149,  14444, 18010, 23212,\r
+  5969,  6337,  16838, 1126,  29291, 31201, 21851, 31244, 142,   373,\r
+  10989, 11693, 23781, 18953, 28328, 26457, 2441,  32354, 19725, 23326,\r
+  32165, 16145, 4663,  23350, 24280, 1608,  20067, 31358, 27098, 32237,\r
+  9135,  13098, 20067, 31725, 8482,  26039, 584,   6355,  20205, 17442,\r
+  20455, 5273,  20464, 32088, 9158,  32189, 15488, 15597, 23927, 20120,\r
+  6760,  21264, 10175, 29932, 5677,  6335,  7159,  30652, 24983, 25655,\r
+  13489, 12128, 23404, 8623,  21407, 17368, 25727, 25669, 24241, 25953,\r
+  1513,  825,   14462, 29510, 19607, 5977,  6117,  1273,  32261, 27836,\r
+  756,   2402,  2632,  15539, 28936, 28791, 24402, 17405, 22582, 4877,\r
+  370,   2362,  10730, 19693, 3354,  26530, 718,   32043, 1509,  12791,\r
+  4590,  24755, 5848,  440,   31513, 31525, 10217, 1688,  14474, 483,\r
+  27837, 27183, 16328, 32104, 20662, 7150,  28106, 5339,  25645, 6488,\r
+  32351, 14307, 12028, 1647,  4813,  6846,  3136,  10861, 3000,  14477,\r
+  29533, 9397,  14918, 20466, 21058, 28169, 11393, 3549,  23790, 31229,\r
+  6397,  23203, 30258, 3244,  11706, 32081, 5561,  6313,  17995, 2367,\r
+  20295, 14649, 19768, 18920, 24382, 7359,  19618, 8440,  24678, 29559,\r
+  29221, 2727,  3821,  13927, 2563,  15430, 15533, 23187, 13694, 4375,\r
+  23214, 17521, 24709, 14690, 15340, 3996,  14995, 24517, 30042, 32460,\r
   14037, 14540, 32550, 10246, 22411, 12482, 31551, 12560, 18608, 11206,\r
-  17685, 12328, 3549, 3105, 11936, 1269, 18283, 29398, 3747, 15806,\r
-  21208, 28283, 1074, 23770, 19051, 3144, 4978, 4712, 10267, 32622,\r
-  32672, 15936, 4014, 21161, 1620, 20009, 1054, 22553, 24583, 19532,\r
-  3136, 19278, 10707, 12776, 2727, 22946, 7291, 21064, 19655, 1227,\r
-  13483, 29170, 5462, 5040, 12417, 24098, 9720, 1404, 1611, 6262,\r
-  3098, 15089, 14483, 27371, 13598, 18944, 11097, 30728, 3513, 12182,\r
-  24223, 7001, 12442, 21432, 12843, 11807, 26701, 5074, 5768, 1094,\r
-  2142, 18252, 20302, 13719, 25025, 29279, 10915, 1839, 22129, 6951,\r
-  20994, 2352, 20568, 29945, 6203, 15542, 8047, 22006, 26811, 22029,\r
-  806, 10976, 15374, 28449, 25350, 23853, 13730, 15925, 31381, 24410,\r
-  20174, 9432, 31866, 21378, 13074, 11029, 28897, 47, 12705, 15083,\r
-  21281, 1904, 26652, 12285, 12956, 5164, 2721, 3977, 23271, 29109,\r
+  17685, 12328, 3549,  3105,  11936, 1269,  18283, 29398, 3747,  15806,\r
+  21208, 28283, 1074,  23770, 19051, 3144,  4978,  4712,  10267, 32622,\r
+  32672, 15936, 4014,  21161, 1620,  20009, 1054,  22553, 24583, 19532,\r
+  3136,  19278, 10707, 12776, 2727,  22946, 7291,  21064, 19655, 1227,\r
+  13483, 29170, 5462,  5040,  12417, 24098, 9720,  1404,  1611,  6262,\r
+  3098,  15089, 14483, 27371, 13598, 18944, 11097, 30728, 3513,  12182,\r
+  24223, 7001,  12442, 21432, 12843, 11807, 26701, 5074,  5768,  1094,\r
+  2142,  18252, 20302, 13719, 25025, 29279, 10915, 1839,  22129, 6951,\r
+  20994, 2352,  20568, 29945, 6203,  15542, 8047,  22006, 26811, 22029,\r
+  806,   10976, 15374, 28449, 25350, 23853, 13730, 15925, 31381, 24410,\r
+  20174, 9432,  31866, 21378, 13074, 11029, 28897, 47,    12705, 15083,\r
+  21281, 1904,  26652, 12285, 12956, 5164,  2721,  3977,  23271, 29109,\r
   27908, 31902, 18220, 16800, 12636, 15498, 25804, 17365, 16322, 24466,\r
-  26952, 25826, 27477, 25063, 16225, 1685, 26754, 22741, 20350, 14025,\r
-  30850, 60, 10063, 18560, 28195, 15428, 17584, 818, 28620, 25421,\r
-  2000, 23653, 6843, 25637, 4242, 28542, 27538, 7294, 2867, 10199,\r
-  4114, 29599, 12334, 20753, 1574, 3417, 31580, 428, 11299, 10557,\r
-  24160, 5076, 9806, 524, 29250, 8318, 15775, 16751, 27738, 12468,\r
-  7108, 23528, 23152, 6445, 2153, 26889, 27169, 13345, 2999, 19428,\r
-  16260, 27995, 6682, 16322, 7950, 21648, 11592, 7448, 28339, 10735,\r
-  28287, 27318, 21070, 6393, 22029, 3906, 26435, 5523, 25622, 14053,\r
-  25443, 3930, 22162, 16708, 6928, 28470, 149, 19378, 12961, 4914,\r
-  9939, 11171, 32520, 15499, 1379, 28004, 22961, 9222, 25283, 11018,\r
-  27566, 10375, 21533, 20393, 13330, 19424, 5832, 6854, 19866, 29159,\r
-  8978, 30734, 14227, 5579, 23613, 32584, 9719, 27048, 455, 12424,\r
-  7386, 5208, 17903, 16549, 23300, 397, 11636, 2542, 22496, 30748,\r
-  7328, 29977, 22677, 27292, 13701, 28284, 24690, 13872, 27527, 15232,\r
-  143, 17313, 28698, 17490, 19121, 16048, 23757, 9691, 27503, 22442,\r
-  16008, 8179, 12179, 17212, 26129, 13265, 30915, 27785, 8661, 1734,\r
-  25953, 3450, 17638, 23852, 12207, 8533, 8000, 16793, 2103, 26002,\r
-  19280, 11352, 28522, 23786, 29879, 16153, 21127, 2224, 31819, 26855,\r
-  28606, 19556, 7518, 1627, 17814, 12166, 30788, 21007, 4492, 29096,\r
-  9743, 14678, 8700, 9415, 14749, 26922, 32581, 16859, 20949, 10086,\r
-  12329, 27565, 8493, 19510, 7538, 21481, 3695, 28619, 22747, 30324,\r
-  21182, 8275, 19245, 7935, 14548, 13352, 3497, 27869, 24973, 3143,\r
-  29350, 18705, 12713, 23301, 379, 684, 19661, 17149, 27039, 1366,\r
-  16844, 25165, 12559, 24106, 19493, 7682, 8688, 711, 20173, 16848,\r
-  15222, 3747, 27694, 18439, 10756, 27299, 24431, 24002, 2709, 4841,\r
-  31478, 30561, 32090, 28398, 28715, 2362, 19364, 28624, 17535, 14476,\r
-  9477, 26861, 6062, 6324, 14258, 22192, 8000, 18596, 10284, 1963,\r
-  31574, 1168, 11296, 23526, 18595, 32746, 19595, 3703, 5049, 7057,\r
-  4897, 15699, 4486, 19526, 9968, 9060, 16670, 17759, 7233, 14556,\r
+  26952, 25826, 27477, 25063, 16225, 1685,  26754, 22741, 20350, 14025,\r
+  30850, 60,    10063, 18560, 28195, 15428, 17584, 818,   28620, 25421,\r
+  2000,  23653, 6843,  25637, 4242,  28542, 27538, 7294,  2867,  10199,\r
+  4114,  29599, 12334, 20753, 1574,  3417,  31580, 428,   11299, 10557,\r
+  24160, 5076,  9806,  524,   29250, 8318,  15775, 16751, 27738, 12468,\r
+  7108,  23528, 23152, 6445,  2153,  26889, 27169, 13345, 2999,  19428,\r
+  16260, 27995, 6682,  16322, 7950,  21648, 11592, 7448,  28339, 10735,\r
+  28287, 27318, 21070, 6393,  22029, 3906,  26435, 5523,  25622, 14053,\r
+  25443, 3930,  22162, 16708, 6928,  28470, 149,   19378, 12961, 4914,\r
+  9939,  11171, 32520, 15499, 1379,  28004, 22961, 9222,  25283, 11018,\r
+  27566, 10375, 21533, 20393, 13330, 19424, 5832,  6854,  19866, 29159,\r
+  8978,  30734, 14227, 5579,  23613, 32584, 9719,  27048, 455,   12424,\r
+  7386,  5208,  17903, 16549, 23300, 397,   11636, 2542,  22496, 30748,\r
+  7328,  29977, 22677, 27292, 13701, 28284, 24690, 13872, 27527, 15232,\r
+  143,   17313, 28698, 17490, 19121, 16048, 23757, 9691,  27503, 22442,\r
+  16008, 8179,  12179, 17212, 26129, 13265, 30915, 27785, 8661,  1734,\r
+  25953, 3450,  17638, 23852, 12207, 8533,  8000,  16793, 2103,  26002,\r
+  19280, 11352, 28522, 23786, 29879, 16153, 21127, 2224,  31819, 26855,\r
+  28606, 19556, 7518,  1627,  17814, 12166, 30788, 21007, 4492,  29096,\r
+  9743,  14678, 8700,  9415,  14749, 26922, 32581, 16859, 20949, 10086,\r
+  12329, 27565, 8493,  19510, 7538,  21481, 3695,  28619, 22747, 30324,\r
+  21182, 8275,  19245, 7935,  14548, 13352, 3497,  27869, 24973, 3143,\r
+  29350, 18705, 12713, 23301, 379,   684,   19661, 17149, 27039, 1366,\r
+  16844, 25165, 12559, 24106, 19493, 7682,  8688,  711,   20173, 16848,\r
+  15222, 3747,  27694, 18439, 10756, 27299, 24431, 24002, 2709,  4841,\r
+  31478, 30561, 32090, 28398, 28715, 2362,  19364, 28624, 17535, 14476,\r
+  9477,  26861, 6062,  6324,  14258, 22192, 8000,  18596, 10284, 1963,\r
+  31574, 1168,  11296, 23526, 18595, 32746, 19595, 3703,  5049,  7057,\r
+  4897,  15699, 4486,  19526, 9968,  9060,  16670, 17759, 7233,  14556,\r
   23227, 15295, 31679, 11720, 12289, 21765, 17627, 29416, 24967, 5892,\r
-  28526, 17598, 3476, 27508, 12448, 27877, 23590, 3046, 1802, 11684,\r
-  3129, 27134, 21015, 3011, 26181, 26588, 30896, 27293, 14345, 29915,\r
-  25368, 11895, 15751, 25214, 19476, 22800, 6992, 1447, 11600, 21625,\r
-  19969, 30730, 19198, 24615, 13070, 3554, 8896, 21575, 3774, 21474,\r
-  16840, 12113, 13175, 10607, 17981, 8672, 11836, 19212, 4065, 3265,\r
-  7284, 24854, 25586, 9546, 3821, 26289, 2126, 13293, 7712, 32002,\r
-  6618, 8461, 5047, 32415, 8739, 17423, 19788, 26435, 12358, 10421,\r
-  15476, 25543, 30990, 16039, 10236, 7757, 16989, 10067, 4722, 6847,\r
-  7629, 5623, 27111, 14200, 13974, 30204, 25844, 9792, 14003, 19334,\r
-  12539, 29054, 1856, 585, 21935, 25001, 28711, 7838, 29143, 22272,\r
-  23291, 1238, 13647, 27515, 15652, 19150, 15439, 28929, 27965, 18371,\r
-  12271, 8155, 26554, 22120, 20459, 2409, 18126, 32054, 18852, 8979,\r
-  29068, 28932, 104, 32131, 17996, 9687, 10995, 31761, 17488, 25083,\r
-  27190, 8319, 30887, 1875, 15703, 16103, 12882, 1773, 30456, 11761,\r
-  16806, 13017, 6076, 18249, 18161, 25148, 12807, 19537, 21600, 7072,\r
-  15110, 787, 26400, 14734, 27888, 8057, 31684, 15711, 7819, 19648,\r
-  16871, 17487, 13297, 27434, 13074, 21203, 3220, 22003, 4320, 27181,\r
-  4736, 17799, 3679, 7229, 20192, 8690, 10426, 4506, 10180, 22936,\r
-  29461, 13793, 11041, 4134, 22969, 32333, 2841, 14792, 8305, 32392,\r
-  12157, 30365, 8243, 16321, 145, 17000, 2051, 3583, 20239, 19592,\r
-  9493, 12213, 32110, 3114, 30258, 15254, 20067, 25789, 3676, 170,\r
-  31913, 28326, 2741, 13474, 32766, 14389, 8093, 23657, 9070, 4824,\r
-  283, 8955, 20691, 16527, 10878, 4730, 13725, 5536, 18756, 25471,\r
-  9423, 25228, 20282, 22190, 23114, 14913, 28645, 19597, 846, 26769,\r
-  3361, 3990, 12350, 11491, 22280, 1162, 5027, 3369, 8981, 13577,\r
-  12916, 21778, 16009, 26720, 27029, 5504, 16398, 16034, 27805, 14396,\r
-  7323, 506, 8668, 31721, 919, 8767, 32669, 27702, 17985, 3785,\r
-  20136, 10840, 20047, 25219, 30219, 6584, 26581, 5698, 13338, 17640,\r
-  25193, 11605, 26805, 3804, 19845, 4190, 21705, 1111, 21549, 2656,\r
-  29465, 24995, 31697, 7192, 20031, 8325, 19060, 6545, 30701, 8816,\r
-  6158, 17907, 1401, 19193, 3887, 24987, 13721, 7819, 8422, 24177,\r
-  9067, 14684, 28641, 11894, 10936, 12959, 30421, 24733, 24953, 16380,\r
-  28193, 32732, 19098, 11581, 13486, 26754, 9727, 31818, 16409, 1995,\r
-  453, 16727, 22548, 14770, 28874, 3932, 8457, 14598, 2671, 2245,\r
-  14849, 21952, 6044, 26731, 29125, 26004, 4357, 5828, 22338, 8902,\r
-  21164, 8022, 10546, 27967, 10407, 6770, 26873, 8672, 6436, 24350,\r
-  5325, 31766, 4010, 4435, 19738, 13743, 19874, 24681, 26917, 22764,\r
-  17429, 2511, 16111, 30935, 15031, 29695, 8796, 17366, 26661, 30129,\r
-  24468, 9345, 24427, 7503, 13482, 25777, 30409, 3242, 3708, 1753,\r
-  2999, 15595, 3290, 18842, 18470, 16076, 4586, 2449, 19721, 19208,\r
-  24778, 30068, 26132, 14095, 3960, 18525, 10947, 8703, 20463, 32357,\r
+  28526, 17598, 3476,  27508, 12448, 27877, 23590, 3046,  1802,  11684,\r
+  3129,  27134, 21015, 3011,  26181, 26588, 30896, 27293, 14345, 29915,\r
+  25368, 11895, 15751, 25214, 19476, 22800, 6992,  1447,  11600, 21625,\r
+  19969, 30730, 19198, 24615, 13070, 3554,  8896,  21575, 3774,  21474,\r
+  16840, 12113, 13175, 10607, 17981, 8672,  11836, 19212, 4065,  3265,\r
+  7284,  24854, 25586, 9546,  3821,  26289, 2126,  13293, 7712,  32002,\r
+  6618,  8461,  5047,  32415, 8739,  17423, 19788, 26435, 12358, 10421,\r
+  15476, 25543, 30990, 16039, 10236, 7757,  16989, 10067, 4722,  6847,\r
+  7629,  5623,  27111, 14200, 13974, 30204, 25844, 9792,  14003, 19334,\r
+  12539, 29054, 1856,  585,   21935, 25001, 28711, 7838,  29143, 22272,\r
+  23291, 1238,  13647, 27515, 15652, 19150, 15439, 28929, 27965, 18371,\r
+  12271, 8155,  26554, 22120, 20459, 2409,  18126, 32054, 18852, 8979,\r
+  29068, 28932, 104,   32131, 17996, 9687,  10995, 31761, 17488, 25083,\r
+  27190, 8319,  30887, 1875,  15703, 16103, 12882, 1773,  30456, 11761,\r
+  16806, 13017, 6076,  18249, 18161, 25148, 12807, 19537, 21600, 7072,\r
+  15110, 787,   26400, 14734, 27888, 8057,  31684, 15711, 7819,  19648,\r
+  16871, 17487, 13297, 27434, 13074, 21203, 3220,  22003, 4320,  27181,\r
+  4736,  17799, 3679,  7229,  20192, 8690,  10426, 4506,  10180, 22936,\r
+  29461, 13793, 11041, 4134,  22969, 32333, 2841,  14792, 8305,  32392,\r
+  12157, 30365, 8243,  16321, 145,   17000, 2051,  3583,  20239, 19592,\r
+  9493,  12213, 32110, 3114,  30258, 15254, 20067, 25789, 3676,  170,\r
+  31913, 28326, 2741,  13474, 32766, 14389, 8093,  23657, 9070,  4824,\r
+  283,   8955,  20691, 16527, 10878, 4730,  13725, 5536,  18756, 25471,\r
+  9423,  25228, 20282, 22190, 23114, 14913, 28645, 19597, 846,   26769,\r
+  3361,  3990,  12350, 11491, 22280, 1162,  5027,  3369,  8981,  13577,\r
+  12916, 21778, 16009, 26720, 27029, 5504,  16398, 16034, 27805, 14396,\r
+  7323,  506,   8668,  31721, 919,   8767,  32669, 27702, 17985, 3785,\r
+  20136, 10840, 20047, 25219, 30219, 6584,  26581, 5698,  13338, 17640,\r
+  25193, 11605, 26805, 3804,  19845, 4190,  21705, 1111,  21549, 2656,\r
+  29465, 24995, 31697, 7192,  20031, 8325,  19060, 6545,  30701, 8816,\r
+  6158,  17907, 1401,  19193, 3887,  24987, 13721, 7819,  8422,  24177,\r
+  9067,  14684, 28641, 11894, 10936, 12959, 30421, 24733, 24953, 16380,\r
+  28193, 32732, 19098, 11581, 13486, 26754, 9727,  31818, 16409, 1995,\r
+  453,   16727, 22548, 14770, 28874, 3932,  8457,  14598, 2671,  2245,\r
+  14849, 21952, 6044,  26731, 29125, 26004, 4357,  5828,  22338, 8902,\r
+  21164, 8022,  10546, 27967, 10407, 6770,  26873, 8672,  6436,  24350,\r
+  5325,  31766, 4010,  4435,  19738, 13743, 19874, 24681, 26917, 22764,\r
+  17429, 2511,  16111, 30935, 15031, 29695, 8796,  17366, 26661, 30129,\r
+  24468, 9345,  24427, 7503,  13482, 25777, 30409, 3242,  3708,  1753,\r
+  2999,  15595, 3290,  18842, 18470, 16076, 4586,  2449,  19721, 19208,\r
+  24778, 30068, 26132, 14095, 3960,  18525, 10947, 8703,  20463, 32357,\r
   12447, 28112, 21651, 14197, 12989, 22734, 21455, 15449, 21127, 19277,\r
-  28413, 23062, 21950, 11672, 134, 1918, 1472, 23082, 5450, 2305,\r
-  5127, 33, 5442, 1734, 10227, 2543, 24419, 18683, 31177, 23635,\r
-  23750, 3689, 7931, 392, 20231, 12619, 27562, 5308, 24043, 3680,\r
-  3433, 451, 10309, 25151, 17220, 27917, 23578, 4331, 22273, 22485,\r
-  6659, 2983, 15269, 21660, 10195, 18699, 30010, 24534, 13946, 856,\r
-  11728, 12515, 16169, 12553, 7106, 5952, 15287, 27562, 7482, 14335,\r
-  15940, 14573, 11511, 16244, 11292, 27131, 5198, 23346, 8157, 1288,\r
-  32367, 4150, 14045, 27946, 20714, 16737, 19910, 15467, 28018, 31276,\r
-  28803, 1053, 16608, 20887, 352, 26477, 17275, 31074, 23404, 17467,\r
+  28413, 23062, 21950, 11672, 134,   1918,  1472,  23082, 5450,  2305,\r
+  5127,  33,    5442,  1734,  10227, 2543,  24419, 18683, 31177, 23635,\r
+  23750, 3689,  7931,  392,   20231, 12619, 27562, 5308,  24043, 3680,\r
+  3433,  451,   10309, 25151, 17220, 27917, 23578, 4331,  22273, 22485,\r
+  6659,  2983,  15269, 21660, 10195, 18699, 30010, 24534, 13946, 856,\r
+  11728, 12515, 16169, 12553, 7106,  5952,  15287, 27562, 7482,  14335,\r
+  15940, 14573, 11511, 16244, 11292, 27131, 5198,  23346, 8157,  1288,\r
+  32367, 4150,  14045, 27946, 20714, 16737, 19910, 15467, 28018, 31276,\r
+  28803, 1053,  16608, 20887, 352,   26477, 17275, 31074, 23404, 17467,\r
   20086, 19840, 29730, 24105, 27322, 30665, 16457, 16370, 31974, 31727,\r
-  24601, 18174, 29332, 16307, 22175, 3379, 21727, 25432, 20579, 9485,\r
-  25634, 32344, 15687, 23537, 8449, 5207, 16818, 30398, 26286, 22101,\r
-  17134, 7334, 31333, 1063, 4815, 25660, 13369, 552, 32406, 14029,\r
-  9491, 30508, 17684, 32244, 24056, 1717, 14355, 20329, 15498, 31594,\r
-  3313, 2842, 24786, 30148, 8334, 8061, 12348, 29451, 12905, 26660,\r
-  2531, 16513, 23301, 23186, 4111, 11997, 16786, 30029, 11004, 6650,\r
-  21705, 9524, 10462, 6353, 2840, 5395, 7969, 27045, 28159, 7029,\r
-  28917, 28285, 29882, 15033, 7946, 19927, 29216, 26472, 17560, 2971,\r
-  6603, 2246, 26019, 11854, 24697, 26535, 29309, 17544, 15282, 32644,\r
-  9356, 24232, 1195, 26062, 6221, 20678, 619, 15234, 18585, 20713,\r
-  24364, 23806, 20264, 17786, 3332, 17427, 3667, 22521, 24004, 20571,\r
-  10270, 8175, 21025, 27085, 26229, 31268, 25617, 12686, 30902, 24593,\r
-  20600, 13578, 10864, 21400, 9220, 22340, 30571, 13043, 3925, 25706,\r
-  8424, 2283, 18018, 941, 10281, 11594, 28440, 31568, 21044, 18834,\r
-  25412, 31486, 6357, 5615, 18866, 24672, 11490, 25195, 19094, 10735,\r
-  28098, 16481, 25388, 3079, 31280, 24628, 7324, 23613, 15933, 30528,\r
-  10784, 18163, 8852, 16913, 12904, 810, 16642, 30419, 18494, 30871,\r
-  16950, 15370, 22118, 3064, 18629, 30596, 712, 1448, 3441, 2443,\r
-  19665, 18033, 4266, 18527, 27414, 16034, 1365, 20451, 11322, 23394,\r
-  22733, 31126, 24338, 24132, 31783, 4293, 1544, 21276, 21179, 5887,\r
-  22973, 6160, 27103, 11466, 24307, 11250, 24054, 29332, 5033, 14029,\r
-  4266, 30188, 30599, 189, 5237, 32498, 29565, 19204, 29030, 21004,\r
-  25768, 16219, 10018, 14811, 20085, 27014, 4137, 28014, 30728, 28459,\r
-  2650, 9909, 30943, 31204, 2234, 32056, 30898, 1939, 29297, 22792,\r
-  9886, 5366, 29461, 4598, 11139, 22139, 8235, 3844, 7083, 29525,\r
-  6123, 31257, 11180, 30415, 32068, 23545, 11407, 27616, 29984, 13427,\r
-  4913, 22272, 2281, 25309, 3818, 571, 4684, 29373, 29549, 20356,\r
-  5181, 8393, 31215, 1355, 9531, 11282, 7564, 18770, 20181, 18300,\r
-  5862, 15804, 1645, 16241, 15119, 29799, 9020, 10198, 16809, 11387,\r
-  30102, 9790, 13899, 3651, 25455, 11358, 6439, 22844, 11807, 14018,\r
+  24601, 18174, 29332, 16307, 22175, 3379,  21727, 25432, 20579, 9485,\r
+  25634, 32344, 15687, 23537, 8449,  5207,  16818, 30398, 26286, 22101,\r
+  17134, 7334,  31333, 1063,  4815,  25660, 13369, 552,   32406, 14029,\r
+  9491,  30508, 17684, 32244, 24056, 1717,  14355, 20329, 15498, 31594,\r
+  3313,  2842,  24786, 30148, 8334,  8061,  12348, 29451, 12905, 26660,\r
+  2531,  16513, 23301, 23186, 4111,  11997, 16786, 30029, 11004, 6650,\r
+  21705, 9524,  10462, 6353,  2840,  5395,  7969,  27045, 28159, 7029,\r
+  28917, 28285, 29882, 15033, 7946,  19927, 29216, 26472, 17560, 2971,\r
+  6603,  2246,  26019, 11854, 24697, 26535, 29309, 17544, 15282, 32644,\r
+  9356,  24232, 1195,  26062, 6221,  20678, 619,   15234, 18585, 20713,\r
+  24364, 23806, 20264, 17786, 3332,  17427, 3667,  22521, 24004, 20571,\r
+  10270, 8175,  21025, 27085, 26229, 31268, 25617, 12686, 30902, 24593,\r
+  20600, 13578, 10864, 21400, 9220,  22340, 30571, 13043, 3925,  25706,\r
+  8424,  2283,  18018, 941,   10281, 11594, 28440, 31568, 21044, 18834,\r
+  25412, 31486, 6357,  5615,  18866, 24672, 11490, 25195, 19094, 10735,\r
+  28098, 16481, 25388, 3079,  31280, 24628, 7324,  23613, 15933, 30528,\r
+  10784, 18163, 8852,  16913, 12904, 810,   16642, 30419, 18494, 30871,\r
+  16950, 15370, 22118, 3064,  18629, 30596, 712,   1448,  3441,  2443,\r
+  19665, 18033, 4266,  18527, 27414, 16034, 1365,  20451, 11322, 23394,\r
+  22733, 31126, 24338, 24132, 31783, 4293,  1544,  21276, 21179, 5887,\r
+  22973, 6160,  27103, 11466, 24307, 11250, 24054, 29332, 5033,  14029,\r
+  4266,  30188, 30599, 189,   5237,  32498, 29565, 19204, 29030, 21004,\r
+  25768, 16219, 10018, 14811, 20085, 27014, 4137,  28014, 30728, 28459,\r
+  2650,  9909,  30943, 31204, 2234,  32056, 30898, 1939,  29297, 22792,\r
+  9886,  5366,  29461, 4598,  11139, 22139, 8235,  3844,  7083,  29525,\r
+  6123,  31257, 11180, 30415, 32068, 23545, 11407, 27616, 29984, 13427,\r
+  4913,  22272, 2281,  25309, 3818,  571,   4684,  29373, 29549, 20356,\r
+  5181,  8393,  31215, 1355,  9531,  11282, 7564,  18770, 20181, 18300,\r
+  5862,  15804, 1645,  16241, 15119, 29799, 9020,  10198, 16809, 11387,\r
+  30102, 9790,  13899, 3651,  25455, 11358, 6439,  22844, 11807, 14018,\r
   29418, 14444, 17762, 25534, 24548, 12533, 19363, 30374, 22121, 24298,\r
-  12154, 6977, 11383, 29793, 32371, 32124, 8344, 11978, 21777, 2396,\r
-  27146, 13951, 4114, 26422, 5150, 7324, 8949, 2082, 10462, 27408,\r
-  14266, 22189, 28402, 31476, 31721, 24526, 16069, 1308, 16085, 2076,\r
-  13027, 8428, 17698, 8509, 14246, 9581, 30085, 29602, 15889, 8352,\r
-  17099, 4209, 5628, 22803, 30493, 32707, 13169, 3505, 17538, 7952,\r
-  25431, 26590, 16037, 17383, 13133, 21444, 8665, 30435, 4313, 13031,\r
-  2906, 23258, 25538, 7424, 1749, 5207, 10170, 8968, 5419, 17739,\r
-  18752, 18579, 4211, 28927, 18885, 10079, 4414, 23629, 28430, 28973,\r
-  14622, 15888, 473, 17359, 1641, 21465, 24515, 899, 5434, 12004,\r
+  12154, 6977,  11383, 29793, 32371, 32124, 8344,  11978, 21777, 2396,\r
+  27146, 13951, 4114,  26422, 5150,  7324,  8949,  2082,  10462, 27408,\r
+  14266, 22189, 28402, 31476, 31721, 24526, 16069, 1308,  16085, 2076,\r
+  13027, 8428,  17698, 8509,  14246, 9581,  30085, 29602, 15889, 8352,\r
+  17099, 4209,  5628,  22803, 30493, 32707, 13169, 3505,  17538, 7952,\r
+  25431, 26590, 16037, 17383, 13133, 21444, 8665,  30435, 4313,  13031,\r
+  2906,  23258, 25538, 7424,  1749,  5207,  10170, 8968,  5419,  17739,\r
+  18752, 18579, 4211,  28927, 18885, 10079, 4414,  23629, 28430, 28973,\r
+  14622, 15888, 473,   17359, 1641,  21465, 24515, 899,   5434,  12004,\r
   25705, 12159, 29113, 19786, 28110, 25805, 24476, 21367, 32765, 857,\r
-  15086, 31199, 19439, 10569, 22031, 749, 7598, 30860, 30973, 19772,\r
-  30139, 23222, 26065, 22026, 20909, 14091, 1677, 16362, 26652, 20185,\r
-  10260, 12728, 23485, 13324, 26234, 8658, 10702, 3580, 11902, 24965,\r
-  22453, 8329, 30805, 31942, 9188, 18794, 8106, 16931, 15871, 26562,\r
-  31970, 1785, 19009, 25076, 9124, 31718, 13340, 15801, 27289, 9601,\r
-  5151, 32368, 8304, 19785, 11549, 15797, 4646, 32476, 17548, 12852,\r
-  18052, 25962, 23083, 6335, 4841, 7528, 744, 13215, 27977, 20105,\r
-  27392, 21544, 8054, 8682, 17256, 8849, 16286, 26764, 7788, 6146,\r
-  4629, 1544, 32662, 24301, 14421, 29566, 8913, 3490, 20804, 28367,\r
-  16078, 28446, 28341, 10764, 18087, 20004, 1072, 3886, 28354, 30352,\r
-  13046, 27655, 30969, 24807, 5952, 6776, 3063, 15410, 31432, 30949,\r
-  6629, 18957, 4234, 18150, 6727, 16635, 7628, 14911, 6944, 10492,\r
-  13404, 24595, 27997, 26210, 25113, 7764, 28784, 26336, 31156, 27006,\r
-  16700, 9444, 22712, 645, 20529, 29990, 20168, 20747, 8888, 21121,\r
-  2600, 11735, 17361, 7171, 11648, 12675, 10234, 31040, 29404, 23412,\r
-  2132, 22763, 32758, 9488, 30977, 15783, 20408, 21802, 16080, 19738,\r
-  21757, 10177, 10268, 21827, 15000, 7659, 27889, 15374, 25751, 2572,\r
-  23153, 3366, 5833, 11339, 19830, 6667, 25725, 29511, 16505, 24676,\r
-  19853, 13573, 28851, 10902, 11419, 29742, 24193, 7829, 23195, 1399,\r
-  11533, 12027, 11153, 10592, 9515, 8791, 10396, 28193, 24449, 9415,\r
-  11060, 28129, 23019, 6089, 15792, 15658, 31774, 5198, 25867, 7578,\r
+  15086, 31199, 19439, 10569, 22031, 749,   7598,  30860, 30973, 19772,\r
+  30139, 23222, 26065, 22026, 20909, 14091, 1677,  16362, 26652, 20185,\r
+  10260, 12728, 23485, 13324, 26234, 8658,  10702, 3580,  11902, 24965,\r
+  22453, 8329,  30805, 31942, 9188,  18794, 8106,  16931, 15871, 26562,\r
+  31970, 1785,  19009, 25076, 9124,  31718, 13340, 15801, 27289, 9601,\r
+  5151,  32368, 8304,  19785, 11549, 15797, 4646,  32476, 17548, 12852,\r
+  18052, 25962, 23083, 6335,  4841,  7528,  744,   13215, 27977, 20105,\r
+  27392, 21544, 8054,  8682,  17256, 8849,  16286, 26764, 7788,  6146,\r
+  4629,  1544,  32662, 24301, 14421, 29566, 8913,  3490,  20804, 28367,\r
+  16078, 28446, 28341, 10764, 18087, 20004, 1072,  3886,  28354, 30352,\r
+  13046, 27655, 30969, 24807, 5952,  6776,  3063,  15410, 31432, 30949,\r
+  6629,  18957, 4234,  18150, 6727,  16635, 7628,  14911, 6944,  10492,\r
+  13404, 24595, 27997, 26210, 25113, 7764,  28784, 26336, 31156, 27006,\r
+  16700, 9444,  22712, 645,   20529, 29990, 20168, 20747, 8888,  21121,\r
+  2600,  11735, 17361, 7171,  11648, 12675, 10234, 31040, 29404, 23412,\r
+  2132,  22763, 32758, 9488,  30977, 15783, 20408, 21802, 16080, 19738,\r
+  21757, 10177, 10268, 21827, 15000, 7659,  27889, 15374, 25751, 2572,\r
+  23153, 3366,  5833,  11339, 19830, 6667,  25725, 29511, 16505, 24676,\r
+  19853, 13573, 28851, 10902, 11419, 29742, 24193, 7829,  23195, 1399,\r
+  11533, 12027, 11153, 10592, 9515,  8791,  10396, 28193, 24449, 9415,\r
+  11060, 28129, 23019, 6089,  15792, 15658, 31774, 5198,  25867, 7578,\r
   20363, 21264, 14311, 18651, 28294, 28454, 26322, 26581, 28327, 14037,\r
-  6601, 2593, 19056, 32426, 18170, 12737, 3633, 10949, 26318, 18191,\r
-  19497, 25208, 10535, 2292, 7150, 8721, 4071, 19802, 10511, 7923,\r
-  4785, 9700, 5367, 12780, 12275, 15580, 12308, 15298, 3876, 32365,\r
-  20025, 14351, 6218, 25106, 14913, 29263, 9408, 26702, 3318, 4408,\r
-  11574, 8350, 27441, 27722, 6393, 19372, 28482, 24486, 4725, 28101,\r
-  16785, 4643, 1272, 25997, 9350, 24991, 10168, 23281, 30631, 27027,\r
-  14872, 6750, 30208, 22506, 21799, 12336, 13256, 1044, 30313, 22638,\r
-  8001, 31830, 10203, 5812, 2272, 32100, 26929, 2672, 30382, 2097,\r
-  15970, 21329, 18158, 2566, 1894, 6653, 26112, 19154, 1342, 4355,\r
-  7045, 5569, 12342, 528, 12996, 20495, 17255, 15205, 589, 29215,\r
-  8575, 29064, 5851, 5831, 30405, 26938, 1407, 5358, 15447, 32170,\r
-  10491, 22362, 182, 22248, 20076, 26307, 6533, 25756, 5421, 23084,\r
-  8846, 28920, 1527, 8563, 28166, 24555, 9549, 24102, 18962, 28312,\r
-  1303, 16024, 16266, 1798, 6541, 3892, 11772, 31769, 21846, 30226,\r
-  26868, 16833, 20721, 3272, 14970, 30065, 341, 19587, 28381, 19155,\r
-  16852, 86, 19887, 12474, 13637, 12753, 9233, 16984, 16994, 17366,\r
-  17457, 22705, 12143, 12200, 7696, 20559, 8477, 6213, 21897, 22327,\r
-  173, 10230, 31119, 22301, 3416, 27684, 16566, 20436, 7407, 9069,\r
+  6601,  2593,  19056, 32426, 18170, 12737, 3633,  10949, 26318, 18191,\r
+  19497, 25208, 10535, 2292,  7150,  8721,  4071,  19802, 10511, 7923,\r
+  4785,  9700,  5367,  12780, 12275, 15580, 12308, 15298, 3876,  32365,\r
+  20025, 14351, 6218,  25106, 14913, 29263, 9408,  26702, 3318,  4408,\r
+  11574, 8350,  27441, 27722, 6393,  19372, 28482, 24486, 4725,  28101,\r
+  16785, 4643,  1272,  25997, 9350,  24991, 10168, 23281, 30631, 27027,\r
+  14872, 6750,  30208, 22506, 21799, 12336, 13256, 1044,  30313, 22638,\r
+  8001,  31830, 10203, 5812,  2272,  32100, 26929, 2672,  30382, 2097,\r
+  15970, 21329, 18158, 2566,  1894,  6653,  26112, 19154, 1342,  4355,\r
+  7045,  5569,  12342, 528,   12996, 20495, 17255, 15205, 589,   29215,\r
+  8575,  29064, 5851,  5831,  30405, 26938, 1407,  5358,  15447, 32170,\r
+  10491, 22362, 182,   22248, 20076, 26307, 6533,  25756, 5421,  23084,\r
+  8846,  28920, 1527,  8563,  28166, 24555, 9549,  24102, 18962, 28312,\r
+  1303,  16024, 16266, 1798,  6541,  3892,  11772, 31769, 21846, 30226,\r
+  26868, 16833, 20721, 3272,  14970, 30065, 341,   19587, 28381, 19155,\r
+  16852, 86,    19887, 12474, 13637, 12753, 9233,  16984, 16994, 17366,\r
+  17457, 22705, 12143, 12200, 7696,  20559, 8477,  6213,  21897, 22327,\r
+  173,   10230, 31119, 22301, 3416,  27684, 16566, 20436, 7407,  9069,\r
   28404, 13832, 20415, 12791, 18601, 10799, 15287, 12292, 14046, 7101,\r
-  21197, 18119, 202, 11415, 2205, 20343, 16027, 26827, 31571, 26785,\r
-  26995, 9854, 9164, 30146, 11440, 8742, 20728, 15637, 23664, 11001,\r
-  29315, 6058, 13652, 29604, 30388, 26552, 18821, 23361, 16277, 18740,\r
+  21197, 18119, 202,   11415, 2205,  20343, 16027, 26827, 31571, 26785,\r
+  26995, 9854,  9164,  30146, 11440, 8742,  20728, 15637, 23664, 11001,\r
+  29315, 6058,  13652, 29604, 30388, 26552, 18821, 23361, 16277, 18740,\r
   16117, 17027, 29524, 12450, 17128, 16692, 11241, 27692, 22194, 20450,\r
   18937, 15089, 22978, 14805, 28410, 28319, 29919, 27460, 25241, 19268,\r
-  19122, 28616, 26456, 6497, 4485, 13584, 17020, 7745, 31306, 26071,\r
-  31526, 28296, 2271, 28947, 5312, 20239, 16784, 4463, 18586, 6127,\r
-  20446, 26876, 725, 19932, 2686, 1315, 9857, 26037, 30885, 24287,\r
-  23810, 26200, 15491, 11049, 29880, 23739, 1805, 4019, 4831, 22073,\r
-  30976, 4056, 15539, 21801, 5411, 17875, 31704, 29621, 10188, 15408,\r
-  8698, 10474, 18341, 31617, 28593, 25611, 21424, 8274, 8871, 29227,\r
-  4745, 3423, 12028, 25082, 22252, 3588, 10217, 23008, 19830, 31988,\r
-  7076, 5192, 22448, 17198, 26244, 30271, 6217, 17197, 16742, 29757,\r
-  5283, 1119, 3919, 14658, 3986, 13017, 11859, 17445, 352, 18249,\r
-  20405, 28457, 20756, 27436, 6991, 5586, 13043, 27969, 8756, 19703,\r
-  20552, 23101, 25749, 24855, 7265, 3520, 28385, 3825, 31450, 20360,\r
-  21040, 10830, 6942, 20709, 31714, 10018, 11562, 7788, 12419, 14547,\r
+  19122, 28616, 26456, 6497,  4485,  13584, 17020, 7745,  31306, 26071,\r
+  31526, 28296, 2271,  28947, 5312,  20239, 16784, 4463,  18586, 6127,\r
+  20446, 26876, 725,   19932, 2686,  1315,  9857,  26037, 30885, 24287,\r
+  23810, 26200, 15491, 11049, 29880, 23739, 1805,  4019,  4831,  22073,\r
+  30976, 4056,  15539, 21801, 5411,  17875, 31704, 29621, 10188, 15408,\r
+  8698,  10474, 18341, 31617, 28593, 25611, 21424, 8274,  8871,  29227,\r
+  4745,  3423,  12028, 25082, 22252, 3588,  10217, 23008, 19830, 31988,\r
+  7076,  5192,  22448, 17198, 26244, 30271, 6217,  17197, 16742, 29757,\r
+  5283,  1119,  3919,  14658, 3986,  13017, 11859, 17445, 352,   18249,\r
+  20405, 28457, 20756, 27436, 6991,  5586,  13043, 27969, 8756,  19703,\r
+  20552, 23101, 25749, 24855, 7265,  3520,  28385, 3825,  31450, 20360,\r
+  21040, 10830, 6942,  20709, 31714, 10018, 11562, 7788,  12419, 14547,\r
   21396, 23024, 11762, 31705, 30412, 20654, 14531, 23943, 23971, 16840,\r
-  6369, 13864, 12041, 26869, 18808, 18766, 16667, 8566, 24594, 8295,\r
-  22877, 13644, 28416, 29585, 16963, 11432, 26363, 5296, 23031, 12707,\r
-  15371, 4285, 32342, 23599, 20904, 31585, 31291, 31309, 29215, 6338,\r
+  6369,  13864, 12041, 26869, 18808, 18766, 16667, 8566,  24594, 8295,\r
+  22877, 13644, 28416, 29585, 16963, 11432, 26363, 5296,  23031, 12707,\r
+  15371, 4285,  32342, 23599, 20904, 31585, 31291, 31309, 29215, 6338,\r
   22529, 10369, 21816, 22941, 15683, 20099, 31254, 23957, 13286, 21560,\r
-  22622, 28618, 1114, 8928, 11420, 12718, 1308, 18065, 25570, 26644,\r
-  896, 17380, 27314, 7818, 10669, 30190, 25373, 5353, 1513, 2162,\r
-  1581, 11050, 5911, 25172, 13441, 16251, 637, 5201, 31287, 12946,\r
-  22219, 8174, 2575, 1602, 89, 10926, 29644, 19020, 21169, 29064,\r
-  6622, 19319, 19277, 4248, 10815, 14563, 29090, 29461, 7835, 13210,\r
-  30813, 32643, 1971, 31848, 1004, 21546, 10243, 13293, 14912, 10182,\r
-  8610, 24816, 32721, 8832, 15211, 12534, 1507, 17181, 346, 10003,\r
-  3592, 9334, 17464, 11521, 1767, 14120, 15483, 14959, 26171, 17292,\r
-  21608, 1691, 25631, 18410, 23930, 30755, 31624, 1769, 13575, 18201,\r
-  21523, 23114, 7201, 1365, 30977, 7638, 18107, 271, 383, 18069,\r
-  26124, 13741, 3627, 31297, 12857, 16089, 16341, 15098, 14126, 471,\r
-  2946, 31547, 26828, 277, 4023, 11789, 16970, 3588, 20212, 10107,\r
-  29909, 19751, 29566, 24901, 27002, 16490, 97, 30681, 6726, 19380,\r
-  5046, 29566, 1708, 26559, 7714, 12755, 18214, 30504, 13215, 888,\r
-  1055, 29122, 22911, 21003, 21521, 23088, 30126, 25174, 17643, 12723,\r
-  17207, 1734, 5301, 24128, 28681, 22047, 23926, 14038, 18428, 14959,\r
-  14422, 10766, 4367, 27713, 7168, 13044, 31987, 11794, 31306, 4117,\r
-  21454, 23561, 24856, 28889, 15417, 9186, 8829, 3347, 17546, 31020,\r
-  18468, 23255, 4441, 6580, 21999, 22156, 21821, 13889, 8157, 4417,\r
-  30167, 4993, 14129, 31045, 530, 14148, 13009, 4337, 23976, 30184,\r
-  22252, 1993, 17897, 29716, 24543, 27076, 5048, 28842, 29786, 22759,\r
-  24278, 27382, 702, 1304, 26211, 31020, 3530, 22066, 25249, 25361,\r
-  11383, 31829, 9212, 21752, 16672, 23168, 9031, 16112, 11238, 32609,\r
-  26441, 13372, 31827, 8299, 25464, 24323, 26174, 19242, 13316, 23625,\r
-  32238, 16595, 23319, 5150, 32642, 12320, 25436, 25109, 9615, 16730,\r
-  3006, 8696, 21260, 10423, 24690, 29882, 5227, 13031, 25911, 20909,\r
-  15369, 32746, 13532, 14325, 7624, 24612, 14851, 5181, 11770, 1971,\r
-  25894, 11945, 1922, 3072, 983, 13579, 7477, 24468, 7500, 13657,\r
-  6791, 16430, 30746, 7263, 14179, 19218, 11585, 3249, 858, 11171,\r
-  27753, 8676, 27648, 6196, 21867, 29693, 659, 4380, 2835, 28458,\r
-  17630, 5640, 25381, 21424, 27997, 17814, 22429, 29221, 3746, 6943,\r
-  7483, 30687, 32247, 16083, 831, 24492, 20805, 7180, 114, 23235,\r
-  29749, 12764, 4453, 17915, 6292, 20968, 19453, 32571, 1532, 16762,\r
-  19503, 12082, 3249, 28881, 24073, 23368, 8137, 15548, 2290, 21460,\r
+  22622, 28618, 1114,  8928,  11420, 12718, 1308,  18065, 25570, 26644,\r
+  896,   17380, 27314, 7818,  10669, 30190, 25373, 5353,  1513,  2162,\r
+  1581,  11050, 5911,  25172, 13441, 16251, 637,   5201,  31287, 12946,\r
+  22219, 8174,  2575,  1602,  89,    10926, 29644, 19020, 21169, 29064,\r
+  6622,  19319, 19277, 4248,  10815, 14563, 29090, 29461, 7835,  13210,\r
+  30813, 32643, 1971,  31848, 1004,  21546, 10243, 13293, 14912, 10182,\r
+  8610,  24816, 32721, 8832,  15211, 12534, 1507,  17181, 346,   10003,\r
+  3592,  9334,  17464, 11521, 1767,  14120, 15483, 14959, 26171, 17292,\r
+  21608, 1691,  25631, 18410, 23930, 30755, 31624, 1769,  13575, 18201,\r
+  21523, 23114, 7201,  1365,  30977, 7638,  18107, 271,   383,   18069,\r
+  26124, 13741, 3627,  31297, 12857, 16089, 16341, 15098, 14126, 471,\r
+  2946,  31547, 26828, 277,   4023,  11789, 16970, 3588,  20212, 10107,\r
+  29909, 19751, 29566, 24901, 27002, 16490, 97,    30681, 6726,  19380,\r
+  5046,  29566, 1708,  26559, 7714,  12755, 18214, 30504, 13215, 888,\r
+  1055,  29122, 22911, 21003, 21521, 23088, 30126, 25174, 17643, 12723,\r
+  17207, 1734,  5301,  24128, 28681, 22047, 23926, 14038, 18428, 14959,\r
+  14422, 10766, 4367,  27713, 7168,  13044, 31987, 11794, 31306, 4117,\r
+  21454, 23561, 24856, 28889, 15417, 9186,  8829,  3347,  17546, 31020,\r
+  18468, 23255, 4441,  6580,  21999, 22156, 21821, 13889, 8157,  4417,\r
+  30167, 4993,  14129, 31045, 530,   14148, 13009, 4337,  23976, 30184,\r
+  22252, 1993,  17897, 29716, 24543, 27076, 5048,  28842, 29786, 22759,\r
+  24278, 27382, 702,   1304,  26211, 31020, 3530,  22066, 25249, 25361,\r
+  11383, 31829, 9212,  21752, 16672, 23168, 9031,  16112, 11238, 32609,\r
+  26441, 13372, 31827, 8299,  25464, 24323, 26174, 19242, 13316, 23625,\r
+  32238, 16595, 23319, 5150,  32642, 12320, 25436, 25109, 9615,  16730,\r
+  3006,  8696,  21260, 10423, 24690, 29882, 5227,  13031, 25911, 20909,\r
+  15369, 32746, 13532, 14325, 7624,  24612, 14851, 5181,  11770, 1971,\r
+  25894, 11945, 1922,  3072,  983,   13579, 7477,  24468, 7500,  13657,\r
+  6791,  16430, 30746, 7263,  14179, 19218, 11585, 3249,  858,   11171,\r
+  27753, 8676,  27648, 6196,  21867, 29693, 659,   4380,  2835,  28458,\r
+  17630, 5640,  25381, 21424, 27997, 17814, 22429, 29221, 3746,  6943,\r
+  7483,  30687, 32247, 16083, 831,   24492, 20805, 7180,  114,   23235,\r
+  29749, 12764, 4453,  17915, 6292,  20968, 19453, 32571, 1532,  16762,\r
+  19503, 12082, 3249,  28881, 24073, 23368, 8137,  15548, 2290,  21460,\r
   23184, 28263, 24626, 21135, 29994, 28020, 15541, 23881, 27770, 22605,\r
-  17419, 16602, 24899, 30393, 24756, 14428, 29325, 15022, 3995, 5271,\r
-  5963, 17255, 9952, 30653, 15162, 5813, 31194, 31064, 8972, 1178,\r
-  32349, 18048, 23494, 26900, 22328, 4689, 14695, 16439, 26626, 27292,\r
-  10442, 16510, 22039, 17629, 22733, 28515, 6877, 22381, 32435, 25645,\r
-  2892, 4857, 14791, 11530, 30893, 20531, 23106, 2653, 20129, 1479,\r
-  3951, 29785, 21094, 6801, 16653, 7887, 26454, 10253, 6133, 28484,\r
-  31920, 16655, 31229, 6471, 2203, 4276, 32027, 21762, 13416, 26008,\r
-  5582, 25614, 7704, 32073, 1209, 22668, 21278, 9212, 18321, 21105,\r
-  26726, 31871, 4410, 10017, 21397, 1135, 3373, 10048, 27027, 10411,\r
-  29213, 30404, 9799, 32264, 10202, 11087, 8609, 29255, 1141, 9405,\r
-  21982, 2372, 25765, 21496, 6919, 31343, 9065, 25620, 31675, 17024,\r
-  13551, 31128, 18223, 32103, 26805, 31769, 1139, 7298, 5870, 7694,\r
-  10999, 19731, 15655, 5855, 17485, 8945, 20010, 17215, 23344, 23422,\r
-  14627, 8124, 23494, 19672, 27649, 20884, 18722, 21844, 21791, 12747,\r
-  27661, 24360, 10276, 3706, 24326, 19559, 27176, 5738, 7047, 24371,\r
-  2328, 8929, 27786, 29230, 603, 21436, 27212, 5425, 23733, 12734,\r
-  25425, 25153, 31084, 19240, 22184, 7870, 170, 32394, 25456, 31966,\r
-  27939, 26584, 20891, 4442, 31479, 9152, 6130, 20839, 32218, 23867,\r
-  857, 11496, 25202, 22883, 25429, 6370, 24320, 30084, 24523, 7728,\r
-  5955, 19317, 23563, 16504, 14234, 28713, 2828, 20829, 19304, 129,\r
-  6393, 1014, 21180, 28772, 3565, 21631, 23346, 20498, 19964, 6223,\r
-  8212, 31669, 23154, 18954, 30149, 26938, 14431, 26136, 1120, 2142,\r
-  8275, 27478, 5532, 26892, 23398, 21515, 31219, 7142, 29051, 6941,\r
-  18691, 290, 3270, 8581, 308, 31127, 13964, 2048, 19099, 11799,\r
-  20778, 20743, 24862, 24832, 29529, 24322, 27097, 32270, 2224, 8889,\r
-  14273, 23667, 23403, 3595, 17287, 26410, 27498, 7906, 23232, 8072,\r
-  13949, 5734, 19010, 11796, 21982, 12401, 2001, 30104, 5375, 28483,\r
-  7931, 23672, 25990, 20344, 25920, 16451, 21654, 30775, 14710, 18312,\r
-  25937, 15275, 21100, 1515, 29851, 31671, 24782, 9847, 2592, 18149,\r
-  2120, 4150, 15000, 16800, 29678, 14591, 32586, 12196, 2524, 6800,\r
-  9934, 12722, 537, 32221, 17176, 2952, 25794, 4263, 14514, 1552,\r
-  13156, 31055, 21321, 16856, 16809, 23789, 875, 3522, 311, 2973,\r
-  10639, 5629, 17621, 18201, 4694, 32563, 16079, 22413, 2064, 16900,\r
-  16028, 25254, 7554, 23220, 29119, 14572, 5607, 8480, 11243, 3411,\r
-  3636, 23799, 31338, 19212, 19360, 27174, 1728, 32161, 21348, 404,\r
-  3211, 32577, 12223, 31248, 26285, 24921, 1598, 5512, 30637, 17252,\r
-  25402, 11899, 29019, 3075, 24226, 22960, 16307, 14416, 32251, 20521,\r
-  6916, 13679, 30628, 13651, 1362, 30823, 15199, 3455, 14072, 18480,\r
-  25613, 30869, 16017, 28174, 30393, 1287, 22553, 16413, 4824, 12037,\r
-  16208, 14892, 30671, 24560, 351, 6350, 950, 528, 4542, 10927,\r
-  3932, 31881, 9813, 19493, 19339, 11147, 7906, 16647, 909, 10442,\r
-  31642, 24770, 26862, 30766, 10003, 18601, 19588, 27851, 5985, 2189,\r
-  26797, 23059, 2688, 32142, 8408, 25930, 25074, 20272, 23111, 2875,\r
-  25000, 17074, 21011, 11818, 22054, 22683, 5232, 16393, 26083, 26773,\r
-  31026, 23791, 4590, 12158, 18832, 27077, 10711, 957, 29480, 2883,\r
-  14029, 9170, 27716, 2331, 8708, 21297, 11612, 29043, 6746, 14673,\r
-  25564, 4249, 32057, 14080, 16934, 4338, 18111, 9721, 4315, 22324,\r
-  19740, 14008, 25943, 28373, 19260, 24717, 8570, 6852, 32423, 6128,\r
-  8366, 24150, 23717, 16148, 13861, 4739, 8869, 1215, 24675, 23378,\r
-  17887, 9560, 22013, 4498, 1593, 16962, 20384, 29899, 10343, 17256,\r
-  13140, 14708, 6999, 30489, 1282, 18278, 3276, 25623, 16436, 15505,\r
-  12617, 490, 32541, 2030, 17200, 19322, 4825, 12468, 32043, 24541,\r
-  28918, 7631, 5067, 9582, 6706, 29070, 29295, 8991, 24198, 19868,\r
-  16232, 1040, 8804, 4913, 27482, 31072, 2366, 29577, 20453, 28227,\r
-  10567, 25750, 8581, 16980, 11389, 19954, 14519, 32301, 743, 535,\r
-  30302, 13877, 2587, 22482, 18276, 4026, 19972, 30709, 2980, 7232,\r
-  18146, 13133, 25608, 32536, 14482, 29907, 11246, 4404, 5904, 9254,\r
-  8657, 30521, 5178, 3129, 805, 24022, 15063, 6729, 8066, 20565,\r
-  15063, 2323, 9989, 23919, 19164, 19523, 14324, 32357, 17146, 20527,\r
-  28576, 29772, 21691, 25029, 656, 4008, 1127, 21186, 8155, 5693,\r
-  18306, 11814, 9174, 15138, 27797, 4324, 24047, 23831, 12338, 31453,\r
-  28121, 32536, 9010, 11279, 31722, 12083, 17985, 25098, 20673, 20374,\r
-  32413, 2468, 4139, 30188, 18458, 14574, 6984, 21738, 18538, 1383,\r
-  24041, 25636, 10139, 2671, 2877, 14886, 20961, 13310, 3501, 19648,\r
-  1686, 8597, 11780, 2977, 22655, 13685, 13779, 2343, 849, 9232,\r
-  4372, 9590, 14963, 6077, 13069, 28616, 21766, 15535, 17015, 12804,\r
-  31523, 18728, 20704, 23185, 14435, 21994, 8526, 14444, 6053, 6895,\r
+  17419, 16602, 24899, 30393, 24756, 14428, 29325, 15022, 3995,  5271,\r
+  5963,  17255, 9952,  30653, 15162, 5813,  31194, 31064, 8972,  1178,\r
+  32349, 18048, 23494, 26900, 22328, 4689,  14695, 16439, 26626, 27292,\r
+  10442, 16510, 22039, 17629, 22733, 28515, 6877,  22381, 32435, 25645,\r
+  2892,  4857,  14791, 11530, 30893, 20531, 23106, 2653,  20129, 1479,\r
+  3951,  29785, 21094, 6801,  16653, 7887,  26454, 10253, 6133,  28484,\r
+  31920, 16655, 31229, 6471,  2203,  4276,  32027, 21762, 13416, 26008,\r
+  5582,  25614, 7704,  32073, 1209,  22668, 21278, 9212,  18321, 21105,\r
+  26726, 31871, 4410,  10017, 21397, 1135,  3373,  10048, 27027, 10411,\r
+  29213, 30404, 9799,  32264, 10202, 11087, 8609,  29255, 1141,  9405,\r
+  21982, 2372,  25765, 21496, 6919,  31343, 9065,  25620, 31675, 17024,\r
+  13551, 31128, 18223, 32103, 26805, 31769, 1139,  7298,  5870,  7694,\r
+  10999, 19731, 15655, 5855,  17485, 8945,  20010, 17215, 23344, 23422,\r
+  14627, 8124,  23494, 19672, 27649, 20884, 18722, 21844, 21791, 12747,\r
+  27661, 24360, 10276, 3706,  24326, 19559, 27176, 5738,  7047,  24371,\r
+  2328,  8929,  27786, 29230, 603,   21436, 27212, 5425,  23733, 12734,\r
+  25425, 25153, 31084, 19240, 22184, 7870,  170,   32394, 25456, 31966,\r
+  27939, 26584, 20891, 4442,  31479, 9152,  6130,  20839, 32218, 23867,\r
+  857,   11496, 25202, 22883, 25429, 6370,  24320, 30084, 24523, 7728,\r
+  5955,  19317, 23563, 16504, 14234, 28713, 2828,  20829, 19304, 129,\r
+  6393,  1014,  21180, 28772, 3565,  21631, 23346, 20498, 19964, 6223,\r
+  8212,  31669, 23154, 18954, 30149, 26938, 14431, 26136, 1120,  2142,\r
+  8275,  27478, 5532,  26892, 23398, 21515, 31219, 7142,  29051, 6941,\r
+  18691, 290,   3270,  8581,  308,   31127, 13964, 2048,  19099, 11799,\r
+  20778, 20743, 24862, 24832, 29529, 24322, 27097, 32270, 2224,  8889,\r
+  14273, 23667, 23403, 3595,  17287, 26410, 27498, 7906,  23232, 8072,\r
+  13949, 5734,  19010, 11796, 21982, 12401, 2001,  30104, 5375,  28483,\r
+  7931,  23672, 25990, 20344, 25920, 16451, 21654, 30775, 14710, 18312,\r
+  25937, 15275, 21100, 1515,  29851, 31671, 24782, 9847,  2592,  18149,\r
+  2120,  4150,  15000, 16800, 29678, 14591, 32586, 12196, 2524,  6800,\r
+  9934,  12722, 537,   32221, 17176, 2952,  25794, 4263,  14514, 1552,\r
+  13156, 31055, 21321, 16856, 16809, 23789, 875,   3522,  311,   2973,\r
+  10639, 5629,  17621, 18201, 4694,  32563, 16079, 22413, 2064,  16900,\r
+  16028, 25254, 7554,  23220, 29119, 14572, 5607,  8480,  11243, 3411,\r
+  3636,  23799, 31338, 19212, 19360, 27174, 1728,  32161, 21348, 404,\r
+  3211,  32577, 12223, 31248, 26285, 24921, 1598,  5512,  30637, 17252,\r
+  25402, 11899, 29019, 3075,  24226, 22960, 16307, 14416, 32251, 20521,\r
+  6916,  13679, 30628, 13651, 1362,  30823, 15199, 3455,  14072, 18480,\r
+  25613, 30869, 16017, 28174, 30393, 1287,  22553, 16413, 4824,  12037,\r
+  16208, 14892, 30671, 24560, 351,   6350,  950,   528,   4542,  10927,\r
+  3932,  31881, 9813,  19493, 19339, 11147, 7906,  16647, 909,   10442,\r
+  31642, 24770, 26862, 30766, 10003, 18601, 19588, 27851, 5985,  2189,\r
+  26797, 23059, 2688,  32142, 8408,  25930, 25074, 20272, 23111, 2875,\r
+  25000, 17074, 21011, 11818, 22054, 22683, 5232,  16393, 26083, 26773,\r
+  31026, 23791, 4590,  12158, 18832, 27077, 10711, 957,   29480, 2883,\r
+  14029, 9170,  27716, 2331,  8708,  21297, 11612, 29043, 6746,  14673,\r
+  25564, 4249,  32057, 14080, 16934, 4338,  18111, 9721,  4315,  22324,\r
+  19740, 14008, 25943, 28373, 19260, 24717, 8570,  6852,  32423, 6128,\r
+  8366,  24150, 23717, 16148, 13861, 4739,  8869,  1215,  24675, 23378,\r
+  17887, 9560,  22013, 4498,  1593,  16962, 20384, 29899, 10343, 17256,\r
+  13140, 14708, 6999,  30489, 1282,  18278, 3276,  25623, 16436, 15505,\r
+  12617, 490,   32541, 2030,  17200, 19322, 4825,  12468, 32043, 24541,\r
+  28918, 7631,  5067,  9582,  6706,  29070, 29295, 8991,  24198, 19868,\r
+  16232, 1040,  8804,  4913,  27482, 31072, 2366,  29577, 20453, 28227,\r
+  10567, 25750, 8581,  16980, 11389, 19954, 14519, 32301, 743,   535,\r
+  30302, 13877, 2587,  22482, 18276, 4026,  19972, 30709, 2980,  7232,\r
+  18146, 13133, 25608, 32536, 14482, 29907, 11246, 4404,  5904,  9254,\r
+  8657,  30521, 5178,  3129,  805,   24022, 15063, 6729,  8066,  20565,\r
+  15063, 2323,  9989,  23919, 19164, 19523, 14324, 32357, 17146, 20527,\r
+  28576, 29772, 21691, 25029, 656,   4008,  1127,  21186, 8155,  5693,\r
+  18306, 11814, 9174,  15138, 27797, 4324,  24047, 23831, 12338, 31453,\r
+  28121, 32536, 9010,  11279, 31722, 12083, 17985, 25098, 20673, 20374,\r
+  32413, 2468,  4139,  30188, 18458, 14574, 6984,  21738, 18538, 1383,\r
+  24041, 25636, 10139, 2671,  2877,  14886, 20961, 13310, 3501,  19648,\r
+  1686,  8597,  11780, 2977,  22655, 13685, 13779, 2343,  849,   9232,\r
+  4372,  9590,  14963, 6077,  13069, 28616, 21766, 15535, 17015, 12804,\r
+  31523, 18728, 20704, 23185, 14435, 21994, 8526,  14444, 6053,  6895,\r
   16933, 15736, 11275, 25689, 32330, 15126, 11078, 21420, 27017, 19702,\r
-  32020, 16699, 3124, 26157, 25606, 20960, 29197, 13447, 9095, 5360,\r
-  8294, 19998, 18202, 15982, 14215, 23851, 28387, 20863, 17232, 15901,\r
-  17769, 20254, 32544, 17384, 666, 15633, 4341, 5792, 8208, 6428,\r
-  32724, 24646, 8850, 3188, 26987, 15330, 7390, 29558, 15093, 6865,\r
-  20389, 3481, 29022, 5217, 2776, 27042, 9383, 21403, 13346, 25111,\r
-  25229, 5984, 5814, 15861, 7269, 30904, 24650, 18853, 11339, 27494,\r
-  28515, 31789, 13691, 11456, 22228, 31908, 25599, 5309, 14977, 7144,\r
-  20363, 32080, 26985, 5779, 1445, 13300, 22756, 13098, 32520, 10632,\r
-  25896, 4248, 1099, 21598, 31506, 14555, 17854, 30863, 3876, 19454,\r
-  10901, 19089, 1482, 22343, 6984, 8203, 28897, 11441, 19257, 8935,\r
-  18041, 20124, 17816, 15017, 29914, 17348, 16771, 8192, 30662, 26480,\r
-  370, 20123, 21246, 2540, 16851, 18750, 5640, 30008, 31473, 25621,\r
-  19758, 10754, 31258, 2376, 970, 26834, 5633, 11215, 15297, 23429,\r
-  609, 23688, 32334, 29436, 1763, 13703, 27137, 19733, 7490, 4013,\r
-  25095, 14042, 15021, 13948, 17067, 7929, 18541, 3625, 16157, 3189,\r
-  4039, 24563, 19570, 28058, 7460, 16564, 15853, 21302, 24175, 17846,\r
-  30333, 27654, 191, 31687, 21382, 21615, 20790, 21648, 13540, 3694,\r
-  9513, 32290, 17966, 13778, 3456, 22738, 27959, 17577, 22880, 32583,\r
-  475, 31736, 11272, 5329, 13048, 17583, 10745, 19964, 15546, 7387,\r
-  346, 26470, 21532, 25886, 20890, 32461, 27563, 8796, 13911, 620,\r
-  13709, 1976, 31103, 10888, 1731, 23743, 12469, 12614, 32683, 5090,\r
-  18934, 15551, 7625, 9514, 19324, 12118, 6854, 295, 19170, 21066,\r
-  15545, 12330, 24458, 3719, 31654, 29108, 5180, 10178, 8260, 28717,\r
-  7183, 11716, 16388, 23769, 20109, 6150, 14926, 2057, 12050, 16255,\r
-  6926, 18830, 885, 10938, 1647, 19827, 15850, 24619, 4582, 6380,\r
-  15911, 12995, 11891, 23433, 11718, 15554, 2084, 24751, 31723, 31949,\r
-  32474, 13641, 15398, 18752, 7247, 21947, 27803, 3525, 11096, 30743,\r
-  26464, 1830, 21608, 18068, 806, 29023, 25430, 7740, 10012, 23544,\r
-  6752, 9700, 22032, 6289, 13935, 20833, 29911, 30655, 2205, 9465,\r
-  20464, 18454, 18676, 19736, 9316, 19335, 1656, 24132, 12272, 5869,\r
-  22632, 20819, 3174, 4066, 13506, 4060, 23121, 31959, 4101, 9451,\r
-  32472, 23396, 10810, 26105, 30949, 28892, 11573, 10267, 4486, 18725,\r
-  25, 21881, 27539, 6086, 29722, 30466, 13969, 12098, 11911, 1630,\r
-  2262, 677, 29703, 7204, 9454, 25948, 14627, 20046, 11838, 32073,\r
-  7172, 21226, 4327, 6935, 11134, 15122, 8429, 27851, 8014, 23069,\r
+  32020, 16699, 3124,  26157, 25606, 20960, 29197, 13447, 9095,  5360,\r
+  8294,  19998, 18202, 15982, 14215, 23851, 28387, 20863, 17232, 15901,\r
+  17769, 20254, 32544, 17384, 666,   15633, 4341,  5792,  8208,  6428,\r
+  32724, 24646, 8850,  3188,  26987, 15330, 7390,  29558, 15093, 6865,\r
+  20389, 3481,  29022, 5217,  2776,  27042, 9383,  21403, 13346, 25111,\r
+  25229, 5984,  5814,  15861, 7269,  30904, 24650, 18853, 11339, 27494,\r
+  28515, 31789, 13691, 11456, 22228, 31908, 25599, 5309,  14977, 7144,\r
+  20363, 32080, 26985, 5779,  1445,  13300, 22756, 13098, 32520, 10632,\r
+  25896, 4248,  1099,  21598, 31506, 14555, 17854, 30863, 3876,  19454,\r
+  10901, 19089, 1482,  22343, 6984,  8203,  28897, 11441, 19257, 8935,\r
+  18041, 20124, 17816, 15017, 29914, 17348, 16771, 8192,  30662, 26480,\r
+  370,   20123, 21246, 2540,  16851, 18750, 5640,  30008, 31473, 25621,\r
+  19758, 10754, 31258, 2376,  970,   26834, 5633,  11215, 15297, 23429,\r
+  609,   23688, 32334, 29436, 1763,  13703, 27137, 19733, 7490,  4013,\r
+  25095, 14042, 15021, 13948, 17067, 7929,  18541, 3625,  16157, 3189,\r
+  4039,  24563, 19570, 28058, 7460,  16564, 15853, 21302, 24175, 17846,\r
+  30333, 27654, 191,   31687, 21382, 21615, 20790, 21648, 13540, 3694,\r
+  9513,  32290, 17966, 13778, 3456,  22738, 27959, 17577, 22880, 32583,\r
+  475,   31736, 11272, 5329,  13048, 17583, 10745, 19964, 15546, 7387,\r
+  346,   26470, 21532, 25886, 20890, 32461, 27563, 8796,  13911, 620,\r
+  13709, 1976,  31103, 10888, 1731,  23743, 12469, 12614, 32683, 5090,\r
+  18934, 15551, 7625,  9514,  19324, 12118, 6854,  295,   19170, 21066,\r
+  15545, 12330, 24458, 3719,  31654, 29108, 5180,  10178, 8260,  28717,\r
+  7183,  11716, 16388, 23769, 20109, 6150,  14926, 2057,  12050, 16255,\r
+  6926,  18830, 885,   10938, 1647,  19827, 15850, 24619, 4582,  6380,\r
+  15911, 12995, 11891, 23433, 11718, 15554, 2084,  24751, 31723, 31949,\r
+  32474, 13641, 15398, 18752, 7247,  21947, 27803, 3525,  11096, 30743,\r
+  26464, 1830,  21608, 18068, 806,   29023, 25430, 7740,  10012, 23544,\r
+  6752,  9700,  22032, 6289,  13935, 20833, 29911, 30655, 2205,  9465,\r
+  20464, 18454, 18676, 19736, 9316,  19335, 1656,  24132, 12272, 5869,\r
+  22632, 20819, 3174,  4066,  13506, 4060,  23121, 31959, 4101,  9451,\r
+  32472, 23396, 10810, 26105, 30949, 28892, 11573, 10267, 4486,  18725,\r
+  25,    21881, 27539, 6086,  29722, 30466, 13969, 12098, 11911, 1630,\r
+  2262,  677,   29703, 7204,  9454,  25948, 14627, 20046, 11838, 32073,\r
+  7172,  21226, 4327,  6935,  11134, 15122, 8429,  27851, 8014,  23069,\r
   13465, 16028, 26016, 11543, 15899, 15877, 10709, 22127, 10356, 29464,\r
-  14466, 496, 31635, 25621, 25788, 17650, 3006, 5947, 21139, 20178,\r
+  14466, 496,   31635, 25621, 25788, 17650, 3006,  5947,  21139, 20178,\r
   14388, 26334, 19164, 32159, 32017, 23482, 31796, 11030, 23665, 391,\r
-  19777, 17873, 25304, 27086, 9275, 2747, 19154, 20730, 18347, 29383,\r
-  982, 6578, 15475, 10466, 8304, 4710, 17679, 7206, 28576, 14632,\r
-  26138, 592, 17789, 29118, 5140, 24180, 14109, 25077, 28258, 24559,\r
-  19897, 26680, 11158, 11678, 29965, 24672, 6897, 29005, 10494, 10958,\r
-  24358, 14194, 9855, 10679, 18017, 30492, 9141, 10432, 25480, 22054,\r
-  21337, 25291, 19649, 32176, 14175, 6672, 9012, 4815, 1749, 30319,\r
-  18450, 10116, 11021, 7684, 25302, 14315, 6142, 15357, 7371, 1973,\r
-  1000, 27048, 13774, 29656, 16951, 11728, 22101, 3205, 17834, 1610,\r
-  17072, 2907, 3508, 12235, 21391, 31194, 803, 8189, 22469, 7194,\r
-  2047, 26065, 17227, 29629, 16053, 25622, 20360, 28450, 19572, 6731,\r
-  28879, 6363, 6872, 28593, 17706, 23394, 23750, 13477, 24662, 11527,\r
-  23191, 20013, 6414, 14381, 18808, 16337, 15245, 21430, 12816, 1964,\r
-  17742, 24508, 10852, 194, 3606, 23170, 26360, 16276, 564, 16810,\r
-  26423, 7410, 20999, 5032, 16661, 25361, 15042, 1398, 20467, 20701,\r
-  19564, 16521, 19139, 26512, 20779, 15621, 1388, 13956, 14785, 3117,\r
-  24944, 6469, 13143, 10013, 12748, 7147, 19066, 5563, 5664, 31143,\r
-  16227, 491, 4367, 27035, 28539, 2818, 24041, 11759, 30750, 28030,\r
-  18823, 6433, 30367, 21236, 4727, 32156, 2445, 24137, 5210, 15245,\r
-  30517, 18469, 17033, 24818, 7528, 8101, 13823, 4083, 3711, 848,\r
-  21107, 8054, 32667, 26189, 18116, 10734, 27698, 13779, 27802, 32371,\r
-  4807, 29408, 19275, 10264, 12024, 5166, 16891, 32633, 5310, 17507,\r
-  7432, 31379, 4337, 20615, 6821, 11993, 13066, 23228, 8900, 14724,\r
-  25645, 9513, 13882, 554, 28519, 2360, 22813, 2962, 24372, 28417,\r
-  31857, 18119, 21572, 22790, 11012, 7275, 14718, 22560, 32151, 8270,\r
-  31046, 31673, 6718, 9023, 6139, 4668, 17162, 5922, 22468, 19914,\r
-  14308, 31043, 18829, 8495, 28604, 14058, 28492, 26900, 27876, 16432,\r
-  21385, 13685, 12470, 15632, 14877, 18262, 4733, 6337, 20026, 5810,\r
-  32147, 22339, 29099, 29877, 23238, 26937, 4445, 7723, 10496, 29174,\r
-  8991, 21047, 2344, 13274, 12454, 16712, 16707, 5855, 5076, 26697,\r
+  19777, 17873, 25304, 27086, 9275,  2747,  19154, 20730, 18347, 29383,\r
+  982,   6578,  15475, 10466, 8304,  4710,  17679, 7206,  28576, 14632,\r
+  26138, 592,   17789, 29118, 5140,  24180, 14109, 25077, 28258, 24559,\r
+  19897, 26680, 11158, 11678, 29965, 24672, 6897,  29005, 10494, 10958,\r
+  24358, 14194, 9855,  10679, 18017, 30492, 9141,  10432, 25480, 22054,\r
+  21337, 25291, 19649, 32176, 14175, 6672,  9012,  4815,  1749,  30319,\r
+  18450, 10116, 11021, 7684,  25302, 14315, 6142,  15357, 7371,  1973,\r
+  1000,  27048, 13774, 29656, 16951, 11728, 22101, 3205,  17834, 1610,\r
+  17072, 2907,  3508,  12235, 21391, 31194, 803,   8189,  22469, 7194,\r
+  2047,  26065, 17227, 29629, 16053, 25622, 20360, 28450, 19572, 6731,\r
+  28879, 6363,  6872,  28593, 17706, 23394, 23750, 13477, 24662, 11527,\r
+  23191, 20013, 6414,  14381, 18808, 16337, 15245, 21430, 12816, 1964,\r
+  17742, 24508, 10852, 194,   3606,  23170, 26360, 16276, 564,   16810,\r
+  26423, 7410,  20999, 5032,  16661, 25361, 15042, 1398,  20467, 20701,\r
+  19564, 16521, 19139, 26512, 20779, 15621, 1388,  13956, 14785, 3117,\r
+  24944, 6469,  13143, 10013, 12748, 7147,  19066, 5563,  5664,  31143,\r
+  16227, 491,   4367,  27035, 28539, 2818,  24041, 11759, 30750, 28030,\r
+  18823, 6433,  30367, 21236, 4727,  32156, 2445,  24137, 5210,  15245,\r
+  30517, 18469, 17033, 24818, 7528,  8101,  13823, 4083,  3711,  848,\r
+  21107, 8054,  32667, 26189, 18116, 10734, 27698, 13779, 27802, 32371,\r
+  4807,  29408, 19275, 10264, 12024, 5166,  16891, 32633, 5310,  17507,\r
+  7432,  31379, 4337,  20615, 6821,  11993, 13066, 23228, 8900,  14724,\r
+  25645, 9513,  13882, 554,   28519, 2360,  22813, 2962,  24372, 28417,\r
+  31857, 18119, 21572, 22790, 11012, 7275,  14718, 22560, 32151, 8270,\r
+  31046, 31673, 6718,  9023,  6139,  4668,  17162, 5922,  22468, 19914,\r
+  14308, 31043, 18829, 8495,  28604, 14058, 28492, 26900, 27876, 16432,\r
+  21385, 13685, 12470, 15632, 14877, 18262, 4733,  6337,  20026, 5810,\r
+  32147, 22339, 29099, 29877, 23238, 26937, 4445,  7723,  10496, 29174,\r
+  8991,  21047, 2344,  13274, 12454, 16712, 16707, 5855,  5076,  26697,\r
   31455, 32111, 18490, 11288, 16561, 23417, 30171, 18746, 32637, 17347,\r
-  6450, 27597, 3638, 24450, 27767, 957, 359, 1064, 30239, 10555,\r
-  19921, 23421, 24738, 9579, 32341, 20977, 32640, 29533, 277, 16176,\r
-  9606, 19775, 20439, 31992, 12365, 6609, 30634, 24615, 27909, 19993,\r
-  17355, 18457, 14960, 5975, 4041, 14384, 3121, 24891, 1256, 12212,\r
-  13127, 3158, 18115, 13278, 4053, 26831, 21302, 16431, 4132, 18775,\r
-  6523, 4358, 8426, 16990, 3219, 31858, 29389, 27015, 13544, 19781,\r
-  14627, 10586, 1328, 21610, 17916, 32058, 30356, 9336, 10082, 10646,\r
-  12306, 11142, 10719, 17507, 15648, 8002, 25664, 8649, 6034, 28477,\r
-  12441, 31004, 2237, 12681, 13961, 22031, 9693, 15750, 27327, 10788,\r
-  27572, 26873, 10173, 4711, 15732, 7006, 17372, 9564, 19167, 11136,\r
-  18577, 23862, 8621, 15174, 12014, 29257, 28206, 1488, 17772, 14786,\r
-  12080, 21442, 8935, 23702, 24867, 2528, 19178, 31416, 25723, 1500,\r
-  26413, 3727, 9046, 15723, 14940, 9383, 14943, 21406, 12314, 15271,\r
-  10482, 6256, 11846, 24707, 19585, 9884, 2941, 23282, 11062, 5041,\r
-  20192, 32291, 20953, 26215, 7447, 29099, 18677, 18228, 30358, 1731,\r
-  25910, 7963, 11038, 28080, 30486, 6341, 9863, 24450, 7608, 14290,\r
-  31422, 4097, 16660, 31345, 19210, 31717, 30549, 14638, 31891, 26437,\r
-  22911, 14604, 20516, 8274, 2901, 9172, 18736, 23109, 31354, 23212,\r
-  1555, 13462, 6358, 22251, 28059, 17007, 5691, 3372, 21959, 9824,\r
-  23881, 1698, 1998, 5716, 22415, 9387, 17763, 23492, 15602, 17063,\r
-  13112, 9258, 29267, 10762, 19649, 13753, 15212, 3248, 17722, 23627,\r
-  17403, 31089, 31211, 8859, 17443, 32502, 22955, 11188, 17423, 28874,\r
-  26019, 16553, 17112, 692, 12116, 26247, 17577, 11845, 30684, 4232,\r
-  3105, 5805, 21620, 17033, 760, 24275, 31806, 14270, 5606, 9636,\r
-  9022, 24997, 1984, 7338, 1701, 21304, 32741, 27873, 3670, 27751,\r
+  6450,  27597, 3638,  24450, 27767, 957,   359,   1064,  30239, 10555,\r
+  19921, 23421, 24738, 9579,  32341, 20977, 32640, 29533, 277,   16176,\r
+  9606,  19775, 20439, 31992, 12365, 6609,  30634, 24615, 27909, 19993,\r
+  17355, 18457, 14960, 5975,  4041,  14384, 3121,  24891, 1256,  12212,\r
+  13127, 3158,  18115, 13278, 4053,  26831, 21302, 16431, 4132,  18775,\r
+  6523,  4358,  8426,  16990, 3219,  31858, 29389, 27015, 13544, 19781,\r
+  14627, 10586, 1328,  21610, 17916, 32058, 30356, 9336,  10082, 10646,\r
+  12306, 11142, 10719, 17507, 15648, 8002,  25664, 8649,  6034,  28477,\r
+  12441, 31004, 2237,  12681, 13961, 22031, 9693,  15750, 27327, 10788,\r
+  27572, 26873, 10173, 4711,  15732, 7006,  17372, 9564,  19167, 11136,\r
+  18577, 23862, 8621,  15174, 12014, 29257, 28206, 1488,  17772, 14786,\r
+  12080, 21442, 8935,  23702, 24867, 2528,  19178, 31416, 25723, 1500,\r
+  26413, 3727,  9046,  15723, 14940, 9383,  14943, 21406, 12314, 15271,\r
+  10482, 6256,  11846, 24707, 19585, 9884,  2941,  23282, 11062, 5041,\r
+  20192, 32291, 20953, 26215, 7447,  29099, 18677, 18228, 30358, 1731,\r
+  25910, 7963,  11038, 28080, 30486, 6341,  9863,  24450, 7608,  14290,\r
+  31422, 4097,  16660, 31345, 19210, 31717, 30549, 14638, 31891, 26437,\r
+  22911, 14604, 20516, 8274,  2901,  9172,  18736, 23109, 31354, 23212,\r
+  1555,  13462, 6358,  22251, 28059, 17007, 5691,  3372,  21959, 9824,\r
+  23881, 1698,  1998,  5716,  22415, 9387,  17763, 23492, 15602, 17063,\r
+  13112, 9258,  29267, 10762, 19649, 13753, 15212, 3248,  17722, 23627,\r
+  17403, 31089, 31211, 8859,  17443, 32502, 22955, 11188, 17423, 28874,\r
+  26019, 16553, 17112, 692,   12116, 26247, 17577, 11845, 30684, 4232,\r
+  3105,  5805,  21620, 17033, 760,   24275, 31806, 14270, 5606,  9636,\r
+  9022,  24997, 1984,  7338,  1701,  21304, 32741, 27873, 3670,  27751,\r
   22488, 24007, 10147, 22981, 27694, 29363, 15703, 15490, 29867, 29287,\r
-  28922, 3737, 10152, 3304, 31056, 5962, 11447, 5006, 18979, 971,\r
-  8842, 30551, 26946, 30779, 15377, 384, 5322, 11479, 14563, 31319,\r
-  7844, 27504, 15583, 12875, 8527, 285, 19219, 8517, 29152, 30765,\r
-  26589, 4155, 29511, 11871, 9807, 258, 11987, 6998, 9432, 18531,\r
-  22009, 23367, 15649, 3698, 4433, 20981, 27446, 10523, 16609, 31199,\r
-  12262, 1278, 4510, 13239, 29292, 4221, 3120, 10775, 9551, 23826,\r
-  246, 7536, 12934, 27366, 30026, 11331, 29408, 21152, 30214, 27539,\r
-  13475, 16763, 29510, 25498, 5491, 31644, 2416, 17595, 13174, 22690,\r
-  23410, 26808, 31158, 28286, 25163, 29733, 3015, 24197, 21965, 11292,\r
-  5289, 30915, 4769, 21555, 31983, 10643, 8587, 10411, 19489, 25965,\r
-  17391, 18666, 14688, 1790, 10645, 9771, 12104, 21374, 13225, 19061,\r
-  18203, 6462, 26886, 3017, 32539, 7296, 32692, 32672, 12343, 18060,\r
-  8110, 17045, 1770, 19200, 17129, 26718, 865, 14184, 22163, 10240,\r
-  17628, 8462, 408, 6211, 9302, 25876, 13419, 4196, 25192, 11967,\r
-  26115, 267, 27755, 14358, 8740, 22908, 31965, 30892, 19679, 19729,\r
-  6917, 14010, 16220, 3304, 15834, 11888, 8663, 18905, 5666, 17293,\r
-  9961, 4779, 17367, 28974, 3081, 25223, 31438, 27619, 850, 29612,\r
-  23195, 10760, 27271, 10853, 32175, 18003, 29524, 11320, 963, 28841,\r
-  8406, 30561, 7034, 24886, 15966, 3711, 20289, 444, 13170, 3212,\r
-  6522, 16683, 22805, 13586, 987, 17779, 13385, 21660, 22032, 28566,\r
-  14801, 1387, 6056, 26113, 32571, 11371, 26926, 6428, 32030, 16998,\r
-  30870, 30240, 18081, 15734, 5340, 15401, 23100, 11968, 9447, 10124,\r
-  28611, 26719, 1459, 26474, 26528, 16287, 5039, 4485, 16223, 16236,\r
-  25444, 2131, 12145, 24330, 27992, 1873, 22057, 4358, 12594, 18842,\r
-  5131, 15980, 5150, 32440, 32070, 570, 32371, 442, 1151, 14613,\r
-  31892, 1670, 17104, 14651, 26388, 12657, 273, 18105, 22045, 19725,\r
-  26198, 6110, 25618, 4674, 28600, 32239, 883, 13985, 5465, 1564,\r
-  27649, 13556, 16546, 9907, 25379, 1050, 30671, 19604, 25481, 12306,\r
-  25262, 23781, 26639, 2389, 3235, 32518, 24036, 24169, 2032, 17095,\r
-  491, 29619, 22067, 30425, 11617, 11661, 14896, 17283, 21953, 8344,\r
-  22225, 23958, 17380, 31827, 16235, 26019, 18029, 1005, 23875, 18283,\r
-  25444, 2392, 20049, 11671, 19745, 7839, 8516, 23978, 7788, 29049,\r
-  4806, 4147, 8674, 1310, 12288, 6471, 10395, 15961, 609, 29998,\r
-  13321, 30175, 10395, 3421, 30499, 1247, 239, 18852, 29379, 32730,\r
-  18603, 16809, 12621, 5045, 21745, 8853, 26002, 14605, 18617, 7437,\r
-  28916, 12746, 27673, 28516, 5322, 1271, 2245, 24591, 21254, 27857,\r
-  28626, 15449, 16917, 27421, 3263, 12120, 22534, 30655, 10677, 1311,\r
-  28911, 32137, 18702, 11829, 5260, 6481, 14357, 5958, 16170, 20294,\r
-  16140, 10521, 12739, 10884, 4724, 1218, 3435, 31461, 27016, 20505,\r
-  15850, 9498, 24075, 9834, 30635, 14587, 31043, 366, 19669, 16924,\r
-  4678, 11898, 7607, 1697, 24948, 9207, 26729, 10323, 27973, 19218,\r
-  15280, 23539, 13381, 4532, 20771, 10958, 14428, 22709, 4748, 29329,\r
-  20307, 4685, 3729, 5983, 23700, 9419, 8340, 7201, 22577, 25993,\r
-  20439, 5405, 18216, 16415, 10724, 10443, 2278, 24023, 7212, 4835,\r
-  7689, 24929, 4334, 23995, 19562, 2760, 21338, 17872, 17499, 22437,\r
-  32503, 31650, 11053, 29587, 32322, 14278, 12022, 3298, 23704, 21814,\r
-  1936, 24976, 28501, 26091, 2277, 6260, 6718, 30126, 10858, 15037,\r
-  13084, 28459, 10218, 24987, 18602, 22343, 8069, 27708, 20657, 21171,\r
-  20728, 20986, 370, 10689, 25119, 25811, 23108, 15991, 19640, 6169,\r
-  8062, 10467, 22889, 8042, 19863, 28077, 19461, 31203, 18316, 755,\r
-  9483, 15761, 17538, 5968, 7279, 14120, 16557, 20286, 14749, 12792,\r
-  30064, 27807, 11452, 31772, 7366, 5270, 19759, 31477, 992, 10139,\r
-  24930, 25559, 12560, 24527, 5059, 27905, 8421, 10636, 14606, 2771,\r
-  24216, 27201, 19406, 3387, 31654, 10621, 16673, 12657, 10943, 20553,\r
-  6843, 31716, 479, 29371, 23085, 28276, 10171, 22472, 14695, 28385,\r
+  28922, 3737,  10152, 3304,  31056, 5962,  11447, 5006,  18979, 971,\r
+  8842,  30551, 26946, 30779, 15377, 384,   5322,  11479, 14563, 31319,\r
+  7844,  27504, 15583, 12875, 8527,  285,   19219, 8517,  29152, 30765,\r
+  26589, 4155,  29511, 11871, 9807,  258,   11987, 6998,  9432,  18531,\r
+  22009, 23367, 15649, 3698,  4433,  20981, 27446, 10523, 16609, 31199,\r
+  12262, 1278,  4510,  13239, 29292, 4221,  3120,  10775, 9551,  23826,\r
+  246,   7536,  12934, 27366, 30026, 11331, 29408, 21152, 30214, 27539,\r
+  13475, 16763, 29510, 25498, 5491,  31644, 2416,  17595, 13174, 22690,\r
+  23410, 26808, 31158, 28286, 25163, 29733, 3015,  24197, 21965, 11292,\r
+  5289,  30915, 4769,  21555, 31983, 10643, 8587,  10411, 19489, 25965,\r
+  17391, 18666, 14688, 1790,  10645, 9771,  12104, 21374, 13225, 19061,\r
+  18203, 6462,  26886, 3017,  32539, 7296,  32692, 32672, 12343, 18060,\r
+  8110,  17045, 1770,  19200, 17129, 26718, 865,   14184, 22163, 10240,\r
+  17628, 8462,  408,   6211,  9302,  25876, 13419, 4196,  25192, 11967,\r
+  26115, 267,   27755, 14358, 8740,  22908, 31965, 30892, 19679, 19729,\r
+  6917,  14010, 16220, 3304,  15834, 11888, 8663,  18905, 5666,  17293,\r
+  9961,  4779,  17367, 28974, 3081,  25223, 31438, 27619, 850,   29612,\r
+  23195, 10760, 27271, 10853, 32175, 18003, 29524, 11320, 963,   28841,\r
+  8406,  30561, 7034,  24886, 15966, 3711,  20289, 444,   13170, 3212,\r
+  6522,  16683, 22805, 13586, 987,   17779, 13385, 21660, 22032, 28566,\r
+  14801, 1387,  6056,  26113, 32571, 11371, 26926, 6428,  32030, 16998,\r
+  30870, 30240, 18081, 15734, 5340,  15401, 23100, 11968, 9447,  10124,\r
+  28611, 26719, 1459,  26474, 26528, 16287, 5039,  4485,  16223, 16236,\r
+  25444, 2131,  12145, 24330, 27992, 1873,  22057, 4358,  12594, 18842,\r
+  5131,  15980, 5150,  32440, 32070, 570,   32371, 442,   1151,  14613,\r
+  31892, 1670,  17104, 14651, 26388, 12657, 273,   18105, 22045, 19725,\r
+  26198, 6110,  25618, 4674,  28600, 32239, 883,   13985, 5465,  1564,\r
+  27649, 13556, 16546, 9907,  25379, 1050,  30671, 19604, 25481, 12306,\r
+  25262, 23781, 26639, 2389,  3235,  32518, 24036, 24169, 2032,  17095,\r
+  491,   29619, 22067, 30425, 11617, 11661, 14896, 17283, 21953, 8344,\r
+  22225, 23958, 17380, 31827, 16235, 26019, 18029, 1005,  23875, 18283,\r
+  25444, 2392,  20049, 11671, 19745, 7839,  8516,  23978, 7788,  29049,\r
+  4806,  4147,  8674,  1310,  12288, 6471,  10395, 15961, 609,   29998,\r
+  13321, 30175, 10395, 3421,  30499, 1247,  239,   18852, 29379, 32730,\r
+  18603, 16809, 12621, 5045,  21745, 8853,  26002, 14605, 18617, 7437,\r
+  28916, 12746, 27673, 28516, 5322,  1271,  2245,  24591, 21254, 27857,\r
+  28626, 15449, 16917, 27421, 3263,  12120, 22534, 30655, 10677, 1311,\r
+  28911, 32137, 18702, 11829, 5260,  6481,  14357, 5958,  16170, 20294,\r
+  16140, 10521, 12739, 10884, 4724,  1218,  3435,  31461, 27016, 20505,\r
+  15850, 9498,  24075, 9834,  30635, 14587, 31043, 366,   19669, 16924,\r
+  4678,  11898, 7607,  1697,  24948, 9207,  26729, 10323, 27973, 19218,\r
+  15280, 23539, 13381, 4532,  20771, 10958, 14428, 22709, 4748,  29329,\r
+  20307, 4685,  3729,  5983,  23700, 9419,  8340,  7201,  22577, 25993,\r
+  20439, 5405,  18216, 16415, 10724, 10443, 2278,  24023, 7212,  4835,\r
+  7689,  24929, 4334,  23995, 19562, 2760,  21338, 17872, 17499, 22437,\r
+  32503, 31650, 11053, 29587, 32322, 14278, 12022, 3298,  23704, 21814,\r
+  1936,  24976, 28501, 26091, 2277,  6260,  6718,  30126, 10858, 15037,\r
+  13084, 28459, 10218, 24987, 18602, 22343, 8069,  27708, 20657, 21171,\r
+  20728, 20986, 370,   10689, 25119, 25811, 23108, 15991, 19640, 6169,\r
+  8062,  10467, 22889, 8042,  19863, 28077, 19461, 31203, 18316, 755,\r
+  9483,  15761, 17538, 5968,  7279,  14120, 16557, 20286, 14749, 12792,\r
+  30064, 27807, 11452, 31772, 7366,  5270,  19759, 31477, 992,   10139,\r
+  24930, 25559, 12560, 24527, 5059,  27905, 8421,  10636, 14606, 2771,\r
+  24216, 27201, 19406, 3387,  31654, 10621, 16673, 12657, 10943, 20553,\r
+  6843,  31716, 479,   29371, 23085, 28276, 10171, 22472, 14695, 28385,\r
   28766, 13146, 19580, 29059, 11540, 18082, 28838, 15420, 13191, 23216,\r
-  11402, 21932, 24616, 18753, 26045, 29859, 6096, 2008, 3974, 988,\r
-  3239, 26896, 14054, 3560, 19014, 2096, 4053, 9576, 19736, 4864,\r
-  26575, 7551, 10502, 26075, 8591, 9863, 851, 11782, 7707, 8963,\r
-  25540, 1600, 14080, 18645, 8453, 16794, 11743, 25266, 27720, 22665,\r
-  13608, 17874, 16431, 11322, 30246, 20460, 14060, 5157, 14396, 353,\r
-  2983, 27109, 3438, 1976, 19231, 1863, 10274, 19530, 30613, 27297,\r
-  15912, 23358, 9190, 30053, 7417, 14008, 18935, 30965, 21308, 27214,\r
-  24661, 1465, 5007, 29372, 29469, 12400, 13443, 19928, 17434, 16835,\r
-  29160, 18120, 13870, 1056, 21324, 21106, 2035, 9157, 23486, 4148,\r
-  8609, 21787, 26328, 17109, 31283, 13638, 22268, 21948, 22469, 6394,\r
-  30941, 16992, 28481, 15760, 16449, 27136, 10042, 4185, 16902, 14228,\r
-  536, 50, 3939, 7683, 29558, 3416, 22129, 18070, 9416, 2942,\r
-  27626, 941, 27969, 18973, 8752, 23473, 244, 5900, 4497, 16457,\r
-  6969, 20304, 13769, 17873, 10322, 29237, 1224, 28424, 12878, 27294,\r
-  25270, 24840, 5422, 665, 5941, 4988, 15943, 13622, 10214, 20749,\r
-  31463, 21146, 15406, 7197, 6715, 10831, 28218, 19384, 26224, 12254,\r
-  11584, 29895, 14617, 19872, 5384, 29575, 11985, 22993, 24236, 10554,\r
-  15905, 25062, 20124, 16925, 13732, 16416, 17380, 6041, 25960, 12130,\r
-  19634, 701, 30616, 20800, 25618, 13036, 15448, 23128, 15613, 23763,\r
-  27889, 22757, 16018, 21918, 10798, 18833, 5539, 28268, 14854, 28299,\r
-  32627, 9216, 18554, 7386, 12734, 30393, 12225, 29681, 1018, 32452,\r
-  2979, 13187, 15837, 4240, 7203, 9112, 12063, 1410, 15200, 17121,\r
-  29825, 31979, 27325, 12104, 3598, 10551, 15168, 31948, 10913, 32103,\r
-  5432, 28300, 19623, 20161, 8995, 17953, 11302, 16069, 25550, 7473,\r
-  31231, 356, 10174, 32065, 26736, 21357, 32207, 10699, 7388, 13640,\r
-  21275, 20625, 28367, 15846, 18973, 5168, 6205, 6648, 3351, 9464,\r
-  15114, 2911, 8112, 23547, 24527, 31972, 29666, 3172, 20956, 32298,\r
-  17939, 32523, 31865, 15328, 1154, 19526, 11634, 18491, 17893, 2049,\r
-  24786, 18340, 4945, 29713, 31214, 21934, 2393, 11461, 3493, 13898,\r
-  5242, 958, 8679, 10046, 19639, 32001, 1652, 26067, 13440, 8779,\r
-  10982, 15566, 24280, 8357, 5618, 11938, 16567, 25655, 25067, 4068,\r
-  12717, 9825, 25223, 9727, 24521, 8712, 22502, 7721, 15033, 25134,\r
-  21200, 28822, 6706, 24262, 11839, 1003, 9107, 23494, 16925, 9461,\r
-  12997, 15997, 13134, 9883, 19045, 19751, 1265, 15889, 20261, 3263,\r
-  20195, 28495, 4719, 12564, 15749, 7618, 28748, 21279, 16064, 5441,\r
-  1157, 24980, 70, 8002, 15112, 32695, 8986, 30798, 16268, 18033,\r
-  18514, 14770, 4216, 7075, 23324, 2936, 14593, 5050, 15359, 12949,\r
-  30355, 4484, 12643, 20324, 19827, 6210, 16724, 24659, 20642, 1022,\r
-  22659, 23773, 8452, 7198, 25229, 31928, 26561, 13370, 14208, 32591,\r
-  20460, 20267, 668, 1906, 17251, 30820, 1622, 24396, 28406, 18310,\r
-  24995, 14486, 20939, 16942, 14962, 15627, 23552, 4113, 29050, 796,\r
+  11402, 21932, 24616, 18753, 26045, 29859, 6096,  2008,  3974,  988,\r
+  3239,  26896, 14054, 3560,  19014, 2096,  4053,  9576,  19736, 4864,\r
+  26575, 7551,  10502, 26075, 8591,  9863,  851,   11782, 7707,  8963,\r
+  25540, 1600,  14080, 18645, 8453,  16794, 11743, 25266, 27720, 22665,\r
+  13608, 17874, 16431, 11322, 30246, 20460, 14060, 5157,  14396, 353,\r
+  2983,  27109, 3438,  1976,  19231, 1863,  10274, 19530, 30613, 27297,\r
+  15912, 23358, 9190,  30053, 7417,  14008, 18935, 30965, 21308, 27214,\r
+  24661, 1465,  5007,  29372, 29469, 12400, 13443, 19928, 17434, 16835,\r
+  29160, 18120, 13870, 1056,  21324, 21106, 2035,  9157,  23486, 4148,\r
+  8609,  21787, 26328, 17109, 31283, 13638, 22268, 21948, 22469, 6394,\r
+  30941, 16992, 28481, 15760, 16449, 27136, 10042, 4185,  16902, 14228,\r
+  536,   50,    3939,  7683,  29558, 3416,  22129, 18070, 9416,  2942,\r
+  27626, 941,   27969, 18973, 8752,  23473, 244,   5900,  4497,  16457,\r
+  6969,  20304, 13769, 17873, 10322, 29237, 1224,  28424, 12878, 27294,\r
+  25270, 24840, 5422,  665,   5941,  4988,  15943, 13622, 10214, 20749,\r
+  31463, 21146, 15406, 7197,  6715,  10831, 28218, 19384, 26224, 12254,\r
+  11584, 29895, 14617, 19872, 5384,  29575, 11985, 22993, 24236, 10554,\r
+  15905, 25062, 20124, 16925, 13732, 16416, 17380, 6041,  25960, 12130,\r
+  19634, 701,   30616, 20800, 25618, 13036, 15448, 23128, 15613, 23763,\r
+  27889, 22757, 16018, 21918, 10798, 18833, 5539,  28268, 14854, 28299,\r
+  32627, 9216,  18554, 7386,  12734, 30393, 12225, 29681, 1018,  32452,\r
+  2979,  13187, 15837, 4240,  7203,  9112,  12063, 1410,  15200, 17121,\r
+  29825, 31979, 27325, 12104, 3598,  10551, 15168, 31948, 10913, 32103,\r
+  5432,  28300, 19623, 20161, 8995,  17953, 11302, 16069, 25550, 7473,\r
+  31231, 356,   10174, 32065, 26736, 21357, 32207, 10699, 7388,  13640,\r
+  21275, 20625, 28367, 15846, 18973, 5168,  6205,  6648,  3351,  9464,\r
+  15114, 2911,  8112,  23547, 24527, 31972, 29666, 3172,  20956, 32298,\r
+  17939, 32523, 31865, 15328, 1154,  19526, 11634, 18491, 17893, 2049,\r
+  24786, 18340, 4945,  29713, 31214, 21934, 2393,  11461, 3493,  13898,\r
+  5242,  958,   8679,  10046, 19639, 32001, 1652,  26067, 13440, 8779,\r
+  10982, 15566, 24280, 8357,  5618,  11938, 16567, 25655, 25067, 4068,\r
+  12717, 9825,  25223, 9727,  24521, 8712,  22502, 7721,  15033, 25134,\r
+  21200, 28822, 6706,  24262, 11839, 1003,  9107,  23494, 16925, 9461,\r
+  12997, 15997, 13134, 9883,  19045, 19751, 1265,  15889, 20261, 3263,\r
+  20195, 28495, 4719,  12564, 15749, 7618,  28748, 21279, 16064, 5441,\r
+  1157,  24980, 70,    8002,  15112, 32695, 8986,  30798, 16268, 18033,\r
+  18514, 14770, 4216,  7075,  23324, 2936,  14593, 5050,  15359, 12949,\r
+  30355, 4484,  12643, 20324, 19827, 6210,  16724, 24659, 20642, 1022,\r
+  22659, 23773, 8452,  7198,  25229, 31928, 26561, 13370, 14208, 32591,\r
+  20460, 20267, 668,   1906,  17251, 30820, 1622,  24396, 28406, 18310,\r
+  24995, 14486, 20939, 16942, 14962, 15627, 23552, 4113,  29050, 796,\r
   24723, 13644, 17207, 15076, 24191, 18165, 31279, 10078, 25896, 19958,\r
-  5754, 14294, 6137, 19483, 3713, 21917, 5452, 5993, 3334, 14849,\r
-  17546, 32690, 20581, 24700, 20371, 29286, 3865, 26924, 19296, 4268,\r
-  1409, 32643, 21479, 27569, 4324, 6464, 7998, 23360, 31668, 8606,\r
-  19460, 8852, 24335, 25803, 28413, 22378, 15755, 20379, 9212, 16218,\r
-  15155, 22398, 9734, 5990, 5837, 7856, 12980, 31188, 18527, 10415,\r
-  15577, 22073, 26865, 13042, 12901, 12247, 18323, 1496, 22921, 5672,\r
-  20386, 20959, 2332, 3003, 9288, 27926, 16446, 20287, 5442, 1237,\r
-  24891, 15070, 20710, 6059, 5042, 11724, 30564, 19352, 4598, 13343,\r
-  29516, 29820, 26036, 24801, 15184, 24272, 22486, 3683, 24908, 12948,\r
-  6056, 30933, 4739, 648, 23865, 26388, 27947, 23455, 2821, 21955,\r
-  20269, 26801, 4816, 22685, 550, 32368, 8661, 9737, 26801, 9117,\r
-  22560, 239, 4328, 27004, 3897, 29899, 20520, 10373, 29698, 6144,\r
-  19477, 30044, 30690, 18542, 5342, 25091, 23843, 5702, 13507, 24399,\r
+  5754,  14294, 6137,  19483, 3713,  21917, 5452,  5993,  3334,  14849,\r
+  17546, 32690, 20581, 24700, 20371, 29286, 3865,  26924, 19296, 4268,\r
+  1409,  32643, 21479, 27569, 4324,  6464,  7998,  23360, 31668, 8606,\r
+  19460, 8852,  24335, 25803, 28413, 22378, 15755, 20379, 9212,  16218,\r
+  15155, 22398, 9734,  5990,  5837,  7856,  12980, 31188, 18527, 10415,\r
+  15577, 22073, 26865, 13042, 12901, 12247, 18323, 1496,  22921, 5672,\r
+  20386, 20959, 2332,  3003,  9288,  27926, 16446, 20287, 5442,  1237,\r
+  24891, 15070, 20710, 6059,  5042,  11724, 30564, 19352, 4598,  13343,\r
+  29516, 29820, 26036, 24801, 15184, 24272, 22486, 3683,  24908, 12948,\r
+  6056,  30933, 4739,  648,   23865, 26388, 27947, 23455, 2821,  21955,\r
+  20269, 26801, 4816,  22685, 550,   32368, 8661,  9737,  26801, 9117,\r
+  22560, 239,   4328,  27004, 3897,  29899, 20520, 10373, 29698, 6144,\r
+  19477, 30044, 30690, 18542, 5342,  25091, 23843, 5702,  13507, 24399,\r
   25241, 20765, 22740, 21144, 21125, 27456, 30459, 13237, 30904, 10056,\r
-  5436, 18215, 17404, 17390, 5692, 18581, 5807, 6688, 12032, 6521,\r
-  2737, 24916, 27128, 18456, 11393, 3612, 23356, 695, 29090, 32506,\r
-  27157, 19212, 28228, 27510, 21439, 32243, 3616, 18799, 19309, 866,\r
-  21668, 7343, 23438, 15007, 26704, 25794, 27727, 30384, 28000, 7431,\r
-  4961, 7956, 29611, 775, 4348, 18608, 31691, 5894, 7716, 23308,\r
-  22398, 2776, 28715, 5567, 26956, 4854, 5495, 2600, 1898, 19921,\r
-  3973, 23903, 1503, 13670, 20014, 26219, 11237, 20243, 28713, 31926,\r
-  6290, 3497, 27858, 2750, 23223, 6594, 2857, 14604, 16393, 29781,\r
-  18974, 17770, 8062, 10119, 7692, 23121, 8954, 31172, 10115, 31393,\r
-  21547, 22287, 18250, 21908, 28849, 25750, 13220, 5877, 18819, 29322,\r
-  29395, 1933, 12686, 16429, 24283, 4575, 16287, 17965, 5768, 32533,\r
-  26498, 31536, 32690, 57, 11884, 18096, 16064, 22440, 32406, 5641,\r
-  18283, 14020, 24107, 18384, 27333, 9194, 3428, 24935, 1657, 31908,\r
+  5436,  18215, 17404, 17390, 5692,  18581, 5807,  6688,  12032, 6521,\r
+  2737,  24916, 27128, 18456, 11393, 3612,  23356, 695,   29090, 32506,\r
+  27157, 19212, 28228, 27510, 21439, 32243, 3616,  18799, 19309, 866,\r
+  21668, 7343,  23438, 15007, 26704, 25794, 27727, 30384, 28000, 7431,\r
+  4961,  7956,  29611, 775,   4348,  18608, 31691, 5894,  7716,  23308,\r
+  22398, 2776,  28715, 5567,  26956, 4854,  5495,  2600,  1898,  19921,\r
+  3973,  23903, 1503,  13670, 20014, 26219, 11237, 20243, 28713, 31926,\r
+  6290,  3497,  27858, 2750,  23223, 6594,  2857,  14604, 16393, 29781,\r
+  18974, 17770, 8062,  10119, 7692,  23121, 8954,  31172, 10115, 31393,\r
+  21547, 22287, 18250, 21908, 28849, 25750, 13220, 5877,  18819, 29322,\r
+  29395, 1933,  12686, 16429, 24283, 4575,  16287, 17965, 5768,  32533,\r
+  26498, 31536, 32690, 57,    11884, 18096, 16064, 22440, 32406, 5641,\r
+  18283, 14020, 24107, 18384, 27333, 9194,  3428,  24935, 1657,  31908,\r
   20465, 17102, 14676, 26655, 26012, 19644, 16644, 19935, 30249, 11503,\r
-  25888, 9393, 29824, 17600, 4969, 11745, 15630, 24058, 4432, 28846,\r
-  29544, 8684, 26296, 2555, 25393, 1725, 26108, 9287, 26687, 9984,\r
-  30004, 11231, 8697, 14216, 31924, 4946, 30211, 3966, 7894, 15398,\r
-  9758, 30384, 7418, 22473, 32073, 11820, 3530, 21706, 22572, 26382,\r
-  18627, 11337, 3255, 7062, 10993, 9133, 29959, 32382, 6393, 22165,\r
-  8585, 29834, 25181, 7440, 30305, 19552, 27132, 8720, 14349, 10394,\r
+  25888, 9393,  29824, 17600, 4969,  11745, 15630, 24058, 4432,  28846,\r
+  29544, 8684,  26296, 2555,  25393, 1725,  26108, 9287,  26687, 9984,\r
+  30004, 11231, 8697,  14216, 31924, 4946,  30211, 3966,  7894,  15398,\r
+  9758,  30384, 7418,  22473, 32073, 11820, 3530,  21706, 22572, 26382,\r
+  18627, 11337, 3255,  7062,  10993, 9133,  29959, 32382, 6393,  22165,\r
+  8585,  29834, 25181, 7440,  30305, 19552, 27132, 8720,  14349, 10394,\r
   14296, 15900, 19269, 20506, 22556, 27206, 11302, 22685, 11102, 24413,\r
-  24720, 24467, 3105, 13667, 27085, 17711, 28062, 5953, 31091, 7610,\r
-  22468, 24250, 28043, 19756, 25725, 11422, 22514, 253, 8755, 20800,\r
-  5376, 31801, 32659, 6441, 13672, 27091, 9360, 21006, 16223, 10555,\r
-  23723, 7168, 2817, 18738, 30322, 23267, 15856, 9438, 15431, 23585,\r
-  10814, 22297, 27235, 1184, 5261, 30735, 17947, 6897, 9588, 22792,\r
-  14945, 458, 2597, 12930, 7565, 30390, 2125, 30851, 1118, 10507,\r
-  2364, 18733, 17979, 15644, 24646, 10643, 5823, 4017, 20585, 1227,\r
-  22645, 19892, 5424, 8517, 3296, 13357, 29398, 90, 1471, 3185,\r
-  4527, 23592, 15246, 14485, 10436, 14238, 27984, 25641, 15293, 13523,\r
-  28044, 11555, 28677, 9628, 16534, 22810, 15656, 2653, 28687, 27317,\r
-  31872, 29471, 14255, 11106, 7184, 30435, 28482, 32075, 30896, 13622,\r
-  22001, 2438, 9067, 5638, 8899, 7819, 5669, 15284, 32356, 21228,\r
-  7040, 23402, 18980, 16448, 28161, 28591, 22594, 27232, 21103, 31033,\r
-  31083, 9943, 12668, 16898, 894, 6291, 29864, 22174, 13714, 5089,\r
-  10849, 10699, 7482, 32408, 13679, 5706, 24840, 147, 2959, 13037,\r
-  5199, 6245, 18270, 11506, 30765, 26697, 4473, 7311, 19913, 20312,\r
-  9443, 1998, 7642, 8959, 29351, 1947, 6505, 7343, 10430, 17179,\r
-  30679, 20438, 8242, 13632, 30241, 15375, 30340, 28827, 23395, 20373,\r
-  22092, 21873, 9883, 28158, 13087, 28176, 18864, 20262, 31925, 25955,\r
-  5555, 19049, 3403, 19397, 15460, 25109, 22343, 7699, 2808, 8990,\r
-  5659, 17157, 16921, 11540, 1643, 29374, 12079, 30291, 26994, 15521,\r
-  27358, 8314, 22434, 8039, 24783, 28958, 9866, 26478, 1204, 17087,\r
-  26109, 18260, 22662, 506, 14449, 24261, 10257, 2817, 2725, 9105,\r
-  7603, 31561, 28295, 24834, 5217, 19330, 7508, 16748, 19178, 17868,\r
-  25857, 5637, 23680, 11304, 1242, 20727, 8820, 9004, 15721, 26036,\r
-  25409, 13564, 6041, 906, 29388, 117, 10011, 24183, 10218, 26795,\r
+  24720, 24467, 3105,  13667, 27085, 17711, 28062, 5953,  31091, 7610,\r
+  22468, 24250, 28043, 19756, 25725, 11422, 22514, 253,   8755,  20800,\r
+  5376,  31801, 32659, 6441,  13672, 27091, 9360,  21006, 16223, 10555,\r
+  23723, 7168,  2817,  18738, 30322, 23267, 15856, 9438,  15431, 23585,\r
+  10814, 22297, 27235, 1184,  5261,  30735, 17947, 6897,  9588,  22792,\r
+  14945, 458,   2597,  12930, 7565,  30390, 2125,  30851, 1118,  10507,\r
+  2364,  18733, 17979, 15644, 24646, 10643, 5823,  4017,  20585, 1227,\r
+  22645, 19892, 5424,  8517,  3296,  13357, 29398, 90,    1471,  3185,\r
+  4527,  23592, 15246, 14485, 10436, 14238, 27984, 25641, 15293, 13523,\r
+  28044, 11555, 28677, 9628,  16534, 22810, 15656, 2653,  28687, 27317,\r
+  31872, 29471, 14255, 11106, 7184,  30435, 28482, 32075, 30896, 13622,\r
+  22001, 2438,  9067,  5638,  8899,  7819,  5669,  15284, 32356, 21228,\r
+  7040,  23402, 18980, 16448, 28161, 28591, 22594, 27232, 21103, 31033,\r
+  31083, 9943,  12668, 16898, 894,   6291,  29864, 22174, 13714, 5089,\r
+  10849, 10699, 7482,  32408, 13679, 5706,  24840, 147,   2959,  13037,\r
+  5199,  6245,  18270, 11506, 30765, 26697, 4473,  7311,  19913, 20312,\r
+  9443,  1998,  7642,  8959,  29351, 1947,  6505,  7343,  10430, 17179,\r
+  30679, 20438, 8242,  13632, 30241, 15375, 30340, 28827, 23395, 20373,\r
+  22092, 21873, 9883,  28158, 13087, 28176, 18864, 20262, 31925, 25955,\r
+  5555,  19049, 3403,  19397, 15460, 25109, 22343, 7699,  2808,  8990,\r
+  5659,  17157, 16921, 11540, 1643,  29374, 12079, 30291, 26994, 15521,\r
+  27358, 8314,  22434, 8039,  24783, 28958, 9866,  26478, 1204,  17087,\r
+  26109, 18260, 22662, 506,   14449, 24261, 10257, 2817,  2725,  9105,\r
+  7603,  31561, 28295, 24834, 5217,  19330, 7508,  16748, 19178, 17868,\r
+  25857, 5637,  23680, 11304, 1242,  20727, 8820,  9004,  15721, 26036,\r
+  25409, 13564, 6041,  906,   29388, 117,   10011, 24183, 10218, 26795,\r
   19465, 31294, 19235, 22678, 14281, 11194, 25270, 28424, 14645, 17523,\r
-  32732, 9954, 5112, 7279, 29009, 20360, 26427, 28235, 32529, 27026,\r
-  26498, 14730, 4959, 15301, 28624, 7980, 29964, 13377, 11794, 27778,\r
-  30454, 27131, 28346, 18498, 16591, 21102, 19371, 13783, 5408, 32654,\r
-  16981, 25338, 14477, 31230, 29985, 29574, 24154, 2946, 7183, 16264,\r
-  15918, 3511, 26781, 14230, 14103, 4354, 24812, 25443, 9167, 28614,\r
-  30238, 11920, 17470, 8666, 23042, 30660, 24639, 25658, 22515, 5630,\r
-  1959, 2300, 13565, 18474, 4996, 902, 23362, 17139, 19618, 1279,\r
-  21660, 20697, 23380, 15619, 22660, 14467, 25712, 4763, 28979, 23894,\r
-  30620, 26988, 31750, 20038, 13000, 18222, 2343, 14060, 16124, 28000,\r
-  24170, 26329, 2644, 15162, 8565, 25387, 25417, 27620, 27940, 13918,\r
-  22833, 1253, 22060, 29284, 1545, 2270, 8958, 6391, 9587, 17016,\r
-  15086, 24110, 7419, 15259, 4244, 31054, 22942, 13537, 2930, 30691,\r
-  9869, 12618, 13528, 18192, 24878, 27185, 11269, 26404, 11876, 16254,\r
-  9615, 32109, 5392, 30750, 31237, 14417, 8664, 26288, 2002, 14746,\r
+  32732, 9954,  5112,  7279,  29009, 20360, 26427, 28235, 32529, 27026,\r
+  26498, 14730, 4959,  15301, 28624, 7980,  29964, 13377, 11794, 27778,\r
+  30454, 27131, 28346, 18498, 16591, 21102, 19371, 13783, 5408,  32654,\r
+  16981, 25338, 14477, 31230, 29985, 29574, 24154, 2946,  7183,  16264,\r
+  15918, 3511,  26781, 14230, 14103, 4354,  24812, 25443, 9167,  28614,\r
+  30238, 11920, 17470, 8666,  23042, 30660, 24639, 25658, 22515, 5630,\r
+  1959,  2300,  13565, 18474, 4996,  902,   23362, 17139, 19618, 1279,\r
+  21660, 20697, 23380, 15619, 22660, 14467, 25712, 4763,  28979, 23894,\r
+  30620, 26988, 31750, 20038, 13000, 18222, 2343,  14060, 16124, 28000,\r
+  24170, 26329, 2644,  15162, 8565,  25387, 25417, 27620, 27940, 13918,\r
+  22833, 1253,  22060, 29284, 1545,  2270,  8958,  6391,  9587,  17016,\r
+  15086, 24110, 7419,  15259, 4244,  31054, 22942, 13537, 2930,  30691,\r
+  9869,  12618, 13528, 18192, 24878, 27185, 11269, 26404, 11876, 16254,\r
+  9615,  32109, 5392,  30750, 31237, 14417, 8664,  26288, 2002,  14746,\r
   30759, 18049, 27748, 31506, 29812, 25787, 22670, 24912, 17352, 27097,\r
-  1067, 28881, 5242, 22366, 1285, 22859, 17469, 3527, 3317, 19261,\r
-  12126, 28350, 21323, 19403, 1350, 28560, 11631, 31433, 17990, 12257,\r
-  6857, 32534, 20116, 26783, 18399, 3371, 4752, 18228, 19645, 15347,\r
-  28748, 2304, 10906, 7134, 14924, 27398, 19640, 17457, 24458, 16869,\r
-  4236, 19104, 21693, 19979, 6431, 22814, 8923, 8229, 29108, 22004,\r
-  16093, 8665, 17323, 21008, 3778, 5816, 9125, 12704, 16342, 10606,\r
+  1067,  28881, 5242,  22366, 1285,  22859, 17469, 3527,  3317,  19261,\r
+  12126, 28350, 21323, 19403, 1350,  28560, 11631, 31433, 17990, 12257,\r
+  6857,  32534, 20116, 26783, 18399, 3371,  4752,  18228, 19645, 15347,\r
+  28748, 2304,  10906, 7134,  14924, 27398, 19640, 17457, 24458, 16869,\r
+  4236,  19104, 21693, 19979, 6431,  22814, 8923,  8229,  29108, 22004,\r
+  16093, 8665,  17323, 21008, 3778,  5816,  9125,  12704, 16342, 10606,\r
   14825, 17120, 21044, 22844, 18951, 14128, 32138, 23465, 23995, 12906,\r
-  21276, 18036, 5907, 25714, 16652, 5580, 28116, 24847, 23256, 25283,\r
-  23579, 10745, 2852, 24065, 15936, 7987, 4794, 25269, 27135, 18842,\r
+  21276, 18036, 5907,  25714, 16652, 5580,  28116, 24847, 23256, 25283,\r
+  23579, 10745, 2852,  24065, 15936, 7987,  4794,  25269, 27135, 18842,\r
   30927, 13778, 16602, 13247, 20616, 17783, 16825, 17650, 30652, 31918,\r
-  24020, 21151, 13052, 32602, 5330, 23518, 19152, 25195, 7218, 9029,\r
-  3652, 13396, 5611, 6912, 24227, 27071, 6735, 22308, 10371, 639,\r
-  6453, 31297, 28161, 31430, 22103, 20535, 17998, 23704, 1273, 2890,\r
-  30315, 1407, 18124, 22392, 1840, 29825, 4625, 14345, 31891, 13391,\r
-  17153, 25449, 4647, 13759, 23661, 4403, 8419, 11900, 15266, 28302,\r
-  4645, 20476, 17295, 11452, 1014, 27315, 17194, 24048, 656, 20871,\r
-  6927, 5216, 31518, 4483, 26218, 30620, 19394, 20943, 11032, 17438,\r
-  5340, 28640, 21769, 26914, 12170, 11244, 233, 14520, 28011, 31137,\r
-  23039, 24087, 1449, 18710, 3925, 3636, 21302, 23554, 9241, 9875,\r
-  18517, 31532, 8003, 11869, 15197, 8226, 24184, 28084, 28857, 26414,\r
-  4142, 3907, 1588, 23942, 6418, 25, 9076, 32707, 26790, 439,\r
-  5059, 31892, 303, 8807, 11542, 4020, 14030, 4048, 10311, 2329,\r
-  27117, 30664, 20134, 21615, 16604, 27497, 8368, 5316, 9404, 30823,\r
-  23070, 10373, 1437, 27808, 30498, 10665, 10723, 30709, 7917, 15916,\r
-  3310, 8281, 6004, 19647, 4346, 15399, 9844, 27070, 2115, 26297,\r
-  947, 4194, 22893, 9014, 16522, 31800, 17188, 8619, 18592, 14033,\r
-  768, 23134, 24568, 11707, 25515, 29535, 16942, 25777, 30277, 9311,\r
-  18173, 6159, 31495, 3269, 12293, 25481, 15655, 12287, 971, 16667,\r
-  26108, 3094, 6658, 29763, 2915, 32390, 15625, 13679, 32097, 27468,\r
-  1204, 12721, 5898, 23104, 20047, 12986, 5793, 32421, 30176, 774,\r
-  16640, 23807, 13485, 25172, 21562, 804, 18686, 7769, 3456, 1686,\r
-  19236, 9141, 17985, 15632, 21434, 6950, 27797, 25439, 22315, 26364,\r
-  23260, 9843, 23157, 5325, 21154, 17078, 25900, 5993, 7879, 11677,\r
-  21697, 23824, 8412, 32124, 29956, 5603, 19919, 926, 488, 16025,\r
+  24020, 21151, 13052, 32602, 5330,  23518, 19152, 25195, 7218,  9029,\r
+  3652,  13396, 5611,  6912,  24227, 27071, 6735,  22308, 10371, 639,\r
+  6453,  31297, 28161, 31430, 22103, 20535, 17998, 23704, 1273,  2890,\r
+  30315, 1407,  18124, 22392, 1840,  29825, 4625,  14345, 31891, 13391,\r
+  17153, 25449, 4647,  13759, 23661, 4403,  8419,  11900, 15266, 28302,\r
+  4645,  20476, 17295, 11452, 1014,  27315, 17194, 24048, 656,   20871,\r
+  6927,  5216,  31518, 4483,  26218, 30620, 19394, 20943, 11032, 17438,\r
+  5340,  28640, 21769, 26914, 12170, 11244, 233,   14520, 28011, 31137,\r
+  23039, 24087, 1449,  18710, 3925,  3636,  21302, 23554, 9241,  9875,\r
+  18517, 31532, 8003,  11869, 15197, 8226,  24184, 28084, 28857, 26414,\r
+  4142,  3907,  1588,  23942, 6418,  25,    9076,  32707, 26790, 439,\r
+  5059,  31892, 303,   8807,  11542, 4020,  14030, 4048,  10311, 2329,\r
+  27117, 30664, 20134, 21615, 16604, 27497, 8368,  5316,  9404,  30823,\r
+  23070, 10373, 1437,  27808, 30498, 10665, 10723, 30709, 7917,  15916,\r
+  3310,  8281,  6004,  19647, 4346,  15399, 9844,  27070, 2115,  26297,\r
+  947,   4194,  22893, 9014,  16522, 31800, 17188, 8619,  18592, 14033,\r
+  768,   23134, 24568, 11707, 25515, 29535, 16942, 25777, 30277, 9311,\r
+  18173, 6159,  31495, 3269,  12293, 25481, 15655, 12287, 971,   16667,\r
+  26108, 3094,  6658,  29763, 2915,  32390, 15625, 13679, 32097, 27468,\r
+  1204,  12721, 5898,  23104, 20047, 12986, 5793,  32421, 30176, 774,\r
+  16640, 23807, 13485, 25172, 21562, 804,   18686, 7769,  3456,  1686,\r
+  19236, 9141,  17985, 15632, 21434, 6950,  27797, 25439, 22315, 26364,\r
+  23260, 9843,  23157, 5325,  21154, 17078, 25900, 5993,  7879,  11677,\r
+  21697, 23824, 8412,  32124, 29956, 5603,  19919, 926,   488,   16025,\r
   24011, 19605, 30342, 17267, 13146, 31439, 19813, 20338, 15821, 12138,\r
-  5625, 7111, 23261, 30025, 873, 21387, 31634, 25192, 22678, 24496,\r
-  4196, 25452, 21848, 12088, 161, 25983, 2314, 20388, 12558, 21082,\r
-  11850, 27056, 24017, 4771, 29690, 30269, 19342, 2682, 22410, 16271,\r
-  5073, 17487, 29818, 696, 4268, 15862, 27930, 17748, 11169, 3069,\r
-  20629, 13175, 5057, 18237, 8749, 6628, 7958, 30895, 26056, 20608,\r
-  23359, 30593, 21932, 10502, 4442, 28009, 9607, 13819, 16679, 30010,\r
-  30386, 32229, 22377, 1973, 25014, 28344, 9104, 10913, 14608, 9617,\r
-  20630, 5662, 26929, 24230, 25895, 17462, 6601, 8573, 3844, 7861,\r
+  5625,  7111,  23261, 30025, 873,   21387, 31634, 25192, 22678, 24496,\r
+  4196,  25452, 21848, 12088, 161,   25983, 2314,  20388, 12558, 21082,\r
+  11850, 27056, 24017, 4771,  29690, 30269, 19342, 2682,  22410, 16271,\r
+  5073,  17487, 29818, 696,   4268,  15862, 27930, 17748, 11169, 3069,\r
+  20629, 13175, 5057,  18237, 8749,  6628,  7958,  30895, 26056, 20608,\r
+  23359, 30593, 21932, 10502, 4442,  28009, 9607,  13819, 16679, 30010,\r
+  30386, 32229, 22377, 1973,  25014, 28344, 9104,  10913, 14608, 9617,\r
+  20630, 5662,  26929, 24230, 25895, 17462, 6601,  8573,  3844,  7861,\r
   29765, 32093, 15785, 16186, 13206, 27139, 20526, 30095, 24885, 8341,\r
-  23147, 2102, 25444, 220, 17759, 25412, 16566, 22189, 20179, 10611,\r
-  15569, 5032, 11322, 23410, 12915, 20774, 21724, 2431, 20147, 11884,\r
-  14131, 17208, 4490, 24357, 23957, 14766, 14225, 32271, 17940, 18364,\r
-  28940, 30708, 29091, 21655, 2600, 8924, 28282, 17573, 26753, 21889,\r
-  25019, 27795, 487, 4867, 21589, 15010, 12386, 7901, 18216, 2625,\r
-  1907, 3352, 21099, 21985, 3741, 8894, 21579, 15109, 1316, 6802,\r
-  29397, 1176, 4885, 8702, 29974, 12164, 2950, 8781, 14209, 7552,\r
-  9247, 10778, 16273, 27177, 17882, 2824, 12975, 5717, 23302, 32692,\r
-  13397, 32164, 16018, 28136, 28532, 19032, 12424, 6418, 20243, 23398,\r
+  23147, 2102,  25444, 220,   17759, 25412, 16566, 22189, 20179, 10611,\r
+  15569, 5032,  11322, 23410, 12915, 20774, 21724, 2431,  20147, 11884,\r
+  14131, 17208, 4490,  24357, 23957, 14766, 14225, 32271, 17940, 18364,\r
+  28940, 30708, 29091, 21655, 2600,  8924,  28282, 17573, 26753, 21889,\r
+  25019, 27795, 487,   4867,  21589, 15010, 12386, 7901,  18216, 2625,\r
+  1907,  3352,  21099, 21985, 3741,  8894,  21579, 15109, 1316,  6802,\r
+  29397, 1176,  4885,  8702,  29974, 12164, 2950,  8781,  14209, 7552,\r
+  9247,  10778, 16273, 27177, 17882, 2824,  12975, 5717,  23302, 32692,\r
+  13397, 32164, 16018, 28136, 28532, 19032, 12424, 6418,  20243, 23398,\r
   29656, 22772, 10809, 20684, 31063, 10396, 26382, 12838, 15367, 8599,\r
-  22845, 25468, 12953, 14178, 24476, 23647, 31280, 18209, 1295, 21812,\r
-  7784, 20371, 10410, 24271, 8855, 25926, 28949, 6212, 12371, 14087,\r
-  3893, 30457, 3892, 13981, 5128, 21760, 18906, 14775, 24017, 14756,\r
-  9266, 10018, 24694, 4162, 18166, 1087, 19750, 16731, 17523, 30389,\r
-  23870, 25062, 23183, 3683, 17518, 27883, 5642, 27545, 3608, 15181,\r
-  15108, 5511, 27128, 11752, 5824, 5365, 11274, 15835, 7847, 10037,\r
-  936, 26407, 144, 7510, 11763, 8570, 2110, 15259, 10101, 23365,\r
-  32298, 11563, 8453, 11028, 25475, 24586, 15338, 11039, 12148, 23880,\r
+  22845, 25468, 12953, 14178, 24476, 23647, 31280, 18209, 1295,  21812,\r
+  7784,  20371, 10410, 24271, 8855,  25926, 28949, 6212,  12371, 14087,\r
+  3893,  30457, 3892,  13981, 5128,  21760, 18906, 14775, 24017, 14756,\r
+  9266,  10018, 24694, 4162,  18166, 1087,  19750, 16731, 17523, 30389,\r
+  23870, 25062, 23183, 3683,  17518, 27883, 5642,  27545, 3608,  15181,\r
+  15108, 5511,  27128, 11752, 5824,  5365,  11274, 15835, 7847,  10037,\r
+  936,   26407, 144,   7510,  11763, 8570,  2110,  15259, 10101, 23365,\r
+  32298, 11563, 8453,  11028, 25475, 24586, 15338, 11039, 12148, 23880,\r
   20803, 13084, 29093, 29049, 18598, 25688, 32260, 14693, 16903, 15366,\r
-  1477, 26368, 5851, 8151, 16807, 21148, 30334, 6347, 4474, 11357,\r
-  8658, 12358, 13534, 25069, 2602, 9062, 333, 3186, 22374, 24724,\r
-  14684, 31421, 6495, 857, 26941, 11204, 10373, 17011, 27785, 19795,\r
-  31174, 1065, 316, 4862, 27058, 3291, 3074, 31066, 17117, 31709,\r
-  29105, 18797, 901, 2694, 10774, 28770, 9845, 16771, 28660, 32641,\r
-  29481, 6257, 12874, 26719, 6451, 13228, 10965, 18770, 6878, 13409,\r
-  15830, 24104, 19216, 20203, 1813, 26905, 25205, 7004, 14374, 10233,\r
-  28633, 21593, 11243, 10675, 10198, 30764, 21338, 6130, 22448, 20,\r
-  24448, 18721, 32637, 8671, 19654, 11926, 22409, 20411, 13172, 29450,\r
-  17656, 27210, 371, 23885, 429, 22772, 343, 19255, 31595, 31873,\r
-  21149, 22754, 11834, 12263, 14128, 2070, 32269, 19296, 23090, 31749,\r
-  21409, 24000, 29690, 7481, 168, 4102, 28505, 14794, 12071, 26417,\r
-  29730, 30164, 24605, 22613, 31465, 8232, 15717, 25325, 19978, 16194,\r
-  17117, 9587, 7150, 27260, 712, 8238, 32393, 17281, 2417, 6732,\r
-  7207, 9219, 9234, 23856, 17769, 21425, 3827, 14861, 13450, 23139,\r
-  20182, 3508, 20967, 17048, 14739, 13994, 8639, 24611, 29184, 12670,\r
-  16183, 28449, 23315, 20313, 2209, 7982, 17995, 15063, 24829, 24281,\r
-  24907, 16149, 10944, 31573, 9929, 1292, 24533, 26737, 22182, 15133,\r
-  27362, 17609, 14686, 23276, 9676, 28222, 12963, 370, 8573, 15013,\r
-  26437, 3406, 6885, 10428, 31317, 30556, 16702, 7522, 9610, 6537,\r
-  12693, 263, 12515, 22502, 19334, 20833, 3470, 24571, 17223, 31584,\r
-  6153, 29277, 5352, 4453, 17799, 27267, 15576, 12719, 16533, 30933,\r
-  22956, 12565, 14589, 17158, 6940, 24059, 27371, 24228, 8782, 28543,\r
-  8526, 23021, 14168, 29939, 14209, 18149, 30720, 22928, 24107, 31909,\r
-  25541, 20584, 10084, 758, 26916, 15517, 7705, 23582, 22548, 27089,\r
-  27825, 8442, 24019, 10461, 22256, 9037, 28132, 9414, 2844, 2648,\r
-  15449, 1005, 3679, 7595, 11598, 10629, 18541, 12858, 23990, 11082,\r
-  29286, 28083, 10586, 20336, 27902, 21519, 21022, 9946, 16859, 21352,\r
-  11398, 6029, 21567, 16906, 30074, 27492, 1254, 716, 13638, 14085,\r
-  19762, 17313, 21477, 11539, 5509, 2666, 17023, 12710, 19182, 1038,\r
-  24112, 16888, 30729, 18893, 28683, 1121, 25888, 4305, 28255, 5253,\r
-  918, 30726, 25400, 24524, 10374, 26668, 7209, 9746, 23207, 14891,\r
-  1865, 29344, 14195, 6054, 24956, 8539, 13192, 18898, 6644, 17468,\r
-  14926, 27273, 3831, 32000, 28890, 11162, 2018, 7969, 8210, 10340,\r
-  4206, 11780, 2578, 30115, 6450, 2932, 11983, 25481, 361, 27215,\r
-  17402, 9745, 28150, 22911, 25640, 22416, 4517, 31532, 14639, 2444,\r
-  19124, 15408, 9683, 22482, 14738, 8140, 12962, 12739, 13542, 29593,\r
-  16924, 19951, 16083, 32705, 20503, 31717, 24442, 1902, 16482, 18504,\r
-  2241, 11651, 169, 10022, 26451, 4491, 408, 6278, 17641, 14574,\r
-  19267, 31552, 24519, 6251, 12486, 530, 23433, 20930, 26408, 32495,\r
-  12063, 31153, 902, 30874, 13335, 31266, 9325, 15988, 15130, 25763,\r
-  19079, 28307, 18874, 18710, 9338, 8723, 25963, 25770, 21005, 13233,\r
-  4046, 15626, 25229, 21653, 22582, 31700, 4719, 25456, 9829, 7756,\r
-  3126, 14791, 8854, 19794, 12439, 25487, 24257, 29073, 10715, 29945,\r
-  9498, 22522, 20102, 29327, 4058, 31345, 5942, 32640, 20035, 16581,\r
-  11213, 17976, 15070, 19942, 19410, 20276, 9992, 11602, 5653, 14869,\r
-  32684, 29905, 29586, 3315, 12114, 11874, 10648, 3571, 24921, 7797,\r
-  22315, 23324, 2688, 14938, 24998, 13414, 23212, 25338, 5285, 11284,\r
-  31717, 14277, 31009, 12612, 17057, 5611, 10205, 10437, 13125, 6095,\r
-  6913, 2088, 233, 10425, 17157, 10010, 26971, 202, 25297, 15089,\r
-  4711, 7478, 30499, 12420, 19542, 2221, 11568, 22592, 23989, 2074,\r
-  11406, 6264, 15448, 32656, 14417, 6653, 22430, 9089, 27509, 8943,\r
-  22517, 18994, 5244, 5074, 30625, 29035, 29783, 15076, 22714, 19571,\r
+  1477,  26368, 5851,  8151,  16807, 21148, 30334, 6347,  4474,  11357,\r
+  8658,  12358, 13534, 25069, 2602,  9062,  333,   3186,  22374, 24724,\r
+  14684, 31421, 6495,  857,   26941, 11204, 10373, 17011, 27785, 19795,\r
+  31174, 1065,  316,   4862,  27058, 3291,  3074,  31066, 17117, 31709,\r
+  29105, 18797, 901,   2694,  10774, 28770, 9845,  16771, 28660, 32641,\r
+  29481, 6257,  12874, 26719, 6451,  13228, 10965, 18770, 6878,  13409,\r
+  15830, 24104, 19216, 20203, 1813,  26905, 25205, 7004,  14374, 10233,\r
+  28633, 21593, 11243, 10675, 10198, 30764, 21338, 6130,  22448, 20,\r
+  24448, 18721, 32637, 8671,  19654, 11926, 22409, 20411, 13172, 29450,\r
+  17656, 27210, 371,   23885, 429,   22772, 343,   19255, 31595, 31873,\r
+  21149, 22754, 11834, 12263, 14128, 2070,  32269, 19296, 23090, 31749,\r
+  21409, 24000, 29690, 7481,  168,   4102,  28505, 14794, 12071, 26417,\r
+  29730, 30164, 24605, 22613, 31465, 8232,  15717, 25325, 19978, 16194,\r
+  17117, 9587,  7150,  27260, 712,   8238,  32393, 17281, 2417,  6732,\r
+  7207,  9219,  9234,  23856, 17769, 21425, 3827,  14861, 13450, 23139,\r
+  20182, 3508,  20967, 17048, 14739, 13994, 8639,  24611, 29184, 12670,\r
+  16183, 28449, 23315, 20313, 2209,  7982,  17995, 15063, 24829, 24281,\r
+  24907, 16149, 10944, 31573, 9929,  1292,  24533, 26737, 22182, 15133,\r
+  27362, 17609, 14686, 23276, 9676,  28222, 12963, 370,   8573,  15013,\r
+  26437, 3406,  6885,  10428, 31317, 30556, 16702, 7522,  9610,  6537,\r
+  12693, 263,   12515, 22502, 19334, 20833, 3470,  24571, 17223, 31584,\r
+  6153,  29277, 5352,  4453,  17799, 27267, 15576, 12719, 16533, 30933,\r
+  22956, 12565, 14589, 17158, 6940,  24059, 27371, 24228, 8782,  28543,\r
+  8526,  23021, 14168, 29939, 14209, 18149, 30720, 22928, 24107, 31909,\r
+  25541, 20584, 10084, 758,   26916, 15517, 7705,  23582, 22548, 27089,\r
+  27825, 8442,  24019, 10461, 22256, 9037,  28132, 9414,  2844,  2648,\r
+  15449, 1005,  3679,  7595,  11598, 10629, 18541, 12858, 23990, 11082,\r
+  29286, 28083, 10586, 20336, 27902, 21519, 21022, 9946,  16859, 21352,\r
+  11398, 6029,  21567, 16906, 30074, 27492, 1254,  716,   13638, 14085,\r
+  19762, 17313, 21477, 11539, 5509,  2666,  17023, 12710, 19182, 1038,\r
+  24112, 16888, 30729, 18893, 28683, 1121,  25888, 4305,  28255, 5253,\r
+  918,   30726, 25400, 24524, 10374, 26668, 7209,  9746,  23207, 14891,\r
+  1865,  29344, 14195, 6054,  24956, 8539,  13192, 18898, 6644,  17468,\r
+  14926, 27273, 3831,  32000, 28890, 11162, 2018,  7969,  8210,  10340,\r
+  4206,  11780, 2578,  30115, 6450,  2932,  11983, 25481, 361,   27215,\r
+  17402, 9745,  28150, 22911, 25640, 22416, 4517,  31532, 14639, 2444,\r
+  19124, 15408, 9683,  22482, 14738, 8140,  12962, 12739, 13542, 29593,\r
+  16924, 19951, 16083, 32705, 20503, 31717, 24442, 1902,  16482, 18504,\r
+  2241,  11651, 169,   10022, 26451, 4491,  408,   6278,  17641, 14574,\r
+  19267, 31552, 24519, 6251,  12486, 530,   23433, 20930, 26408, 32495,\r
+  12063, 31153, 902,   30874, 13335, 31266, 9325,  15988, 15130, 25763,\r
+  19079, 28307, 18874, 18710, 9338,  8723,  25963, 25770, 21005, 13233,\r
+  4046,  15626, 25229, 21653, 22582, 31700, 4719,  25456, 9829,  7756,\r
+  3126,  14791, 8854,  19794, 12439, 25487, 24257, 29073, 10715, 29945,\r
+  9498,  22522, 20102, 29327, 4058,  31345, 5942,  32640, 20035, 16581,\r
+  11213, 17976, 15070, 19942, 19410, 20276, 9992,  11602, 5653,  14869,\r
+  32684, 29905, 29586, 3315,  12114, 11874, 10648, 3571,  24921, 7797,\r
+  22315, 23324, 2688,  14938, 24998, 13414, 23212, 25338, 5285,  11284,\r
+  31717, 14277, 31009, 12612, 17057, 5611,  10205, 10437, 13125, 6095,\r
+  6913,  2088,  233,   10425, 17157, 10010, 26971, 202,   25297, 15089,\r
+  4711,  7478,  30499, 12420, 19542, 2221,  11568, 22592, 23989, 2074,\r
+  11406, 6264,  15448, 32656, 14417, 6653,  22430, 9089,  27509, 8943,\r
+  22517, 18994, 5244,  5074,  30625, 29035, 29783, 15076, 22714, 19571,\r
   25738, 29102, 31860, 28220, 10380, 14554, 16292, 25562, 28268, 17988,\r
-  127, 21305, 17082, 14676, 20900, 29200, 31653, 27018, 24157, 26897,\r
-  24417, 858, 25633, 30563, 2508, 26427, 25950, 27217, 21840, 32507,\r
+  127,   21305, 17082, 14676, 20900, 29200, 31653, 27018, 24157, 26897,\r
+  24417, 858,   25633, 30563, 2508,  26427, 25950, 27217, 21840, 32507,\r
   31094, 15684, 19211, 32085, 24071, 30190, 24109, 15301, 11632, 4297,\r
-  30370, 10907, 24209, 4544, 3826, 1871, 29138, 3371, 26981, 19732,\r
-  28518, 15617, 8298, 5039, 6865, 30281, 5689, 20618, 32679, 4818,\r
-  1976, 11780, 15255, 8996, 18075, 27916, 10665, 31926, 24272, 1262,\r
-  21188, 30818, 11034, 30060, 18291, 29973, 7420, 32529, 18152, 29387,\r
-  15320, 13762, 22338, 22971, 8024, 8598, 13067, 16846, 26893, 25064,\r
-  12293, 20054, 342, 1706, 806, 29181, 7044, 5115, 1505, 12027,\r
-  17723, 25596, 24743, 10125, 1307, 23264, 16046, 4770, 19616, 8515,\r
-  28401, 26839, 16711, 22717, 5752, 23973, 8435, 32438, 22489, 30937,\r
-  17806, 29052, 5119, 25669, 3059, 19346, 10282, 16822, 8716, 2380,\r
-  19767, 7462, 55, 11416, 31778, 20274, 4591, 21279, 31689, 25550,\r
+  30370, 10907, 24209, 4544,  3826,  1871,  29138, 3371,  26981, 19732,\r
+  28518, 15617, 8298,  5039,  6865,  30281, 5689,  20618, 32679, 4818,\r
+  1976,  11780, 15255, 8996,  18075, 27916, 10665, 31926, 24272, 1262,\r
+  21188, 30818, 11034, 30060, 18291, 29973, 7420,  32529, 18152, 29387,\r
+  15320, 13762, 22338, 22971, 8024,  8598,  13067, 16846, 26893, 25064,\r
+  12293, 20054, 342,   1706,  806,   29181, 7044,  5115,  1505,  12027,\r
+  17723, 25596, 24743, 10125, 1307,  23264, 16046, 4770,  19616, 8515,\r
+  28401, 26839, 16711, 22717, 5752,  23973, 8435,  32438, 22489, 30937,\r
+  17806, 29052, 5119,  25669, 3059,  19346, 10282, 16822, 8716,  2380,\r
+  19767, 7462,  55,    11416, 31778, 20274, 4591,  21279, 31689, 25550,\r
   20904, 29325, 31730, 22839, 23546, 12076, 24976, 19241, 15874, 184,\r
-  10306, 24147, 774, 6511, 32029, 8, 17751, 17255, 30379, 20023,\r
-  18044, 10276, 3635, 15261, 21132, 13930, 15931, 17465, 29404, 6736,\r
-  27212, 17920, 13274, 31638, 29685, 20947, 569, 30264, 8466, 2222,\r
-  25423, 323, 14159, 22818, 3259, 14312, 28903, 12549, 8010, 14543,\r
-  11954, 30568, 2332, 4014, 2910, 25289, 21250, 23833, 13308, 32650,\r
-  23851, 12444, 10687, 31394, 20224, 18695, 20737, 1171, 15948, 12041,\r
-  29063, 24732, 20896, 24064, 3078, 29743, 25078, 28432, 10470, 27301,\r
-  24468, 31346, 1093, 16689, 32307, 8975, 15167, 20242, 27745, 78,\r
-  24173, 7693, 6692, 23082, 3499, 10011, 21216, 27527, 287, 18271,\r
-  11898, 7878, 9079, 346, 7614, 30871, 8561, 24162, 5630, 9486,\r
-  4769, 1104, 8188, 23290, 8047, 21370, 19979, 2418, 18527, 8417,\r
-  23920, 944, 12949, 24747, 1806, 7971, 7576, 21715, 17219, 30655,\r
-  26198, 5151, 1293, 20120, 15208, 32082, 12401, 13999, 26264, 27299,\r
-  20509, 1035, 20384, 14703, 20044, 12556, 7221, 31275, 13546, 11773,\r
-  4420, 23708, 14584, 20200, 6524, 11338, 5427, 19374, 5388, 28978,\r
-  30704, 1622, 22190, 2235, 2123, 2982, 29156, 19179, 18048, 496,\r
-  16001, 4059, 19353, 31279, 13676, 10600, 11338, 22355, 2721, 9516,\r
-  793, 16344, 10360, 27309, 26049, 19869, 28714, 2515, 18905, 28660,\r
-  25489, 19872, 7345, 13301, 7215, 26395, 4733, 26393, 13170, 17549,\r
-  28853, 18436, 54, 26864, 22459, 14753, 19852, 22437, 20415, 11380,\r
-  28346, 26725, 7392, 12844, 21635, 6010, 7827, 28536, 1960, 9775,\r
-  15945, 24604, 11438, 8069, 12620, 8516, 29922, 5415, 4586, 13848,\r
-  8347, 10400, 5078, 31376, 30399, 13516, 22475, 14474, 21896, 11148,\r
-  8818, 4890, 16520, 31678, 31366, 15393, 4075, 4973, 29238, 10273,\r
-  9469, 21060, 8139, 13391, 18412, 73, 2442, 29418, 4814, 7368,\r
-  2268, 4556, 3557, 6540, 26796, 3903, 24866, 22101, 17169, 12561,\r
-  16105, 28807, 25133, 29163, 27668, 15136, 10325, 22750, 2362, 29420,\r
-  17265, 28479, 305, 764, 12198, 18613, 16593, 27988, 19763, 20880,\r
-  7163, 11236, 3481, 22364, 986, 7610, 31743, 32694, 29289, 21621,\r
-  9428, 8543, 12086, 22013, 8374, 13199, 20837, 9841, 18067, 18316,\r
-  8951, 11873, 18702, 16506, 18765, 20798, 17188, 15733, 22247, 18446,\r
-  30735, 27101, 10866, 5220, 19050, 10225, 16130, 8080, 11927, 18848,\r
-  20892, 23059, 7262, 19355, 32759, 28502, 17366, 18095, 17539, 24987,\r
-  2441, 2898, 29611, 8755, 3539, 7036, 7767, 31217, 17291, 30392,\r
+  10306, 24147, 774,   6511,  32029, 8,     17751, 17255, 30379, 20023,\r
+  18044, 10276, 3635,  15261, 21132, 13930, 15931, 17465, 29404, 6736,\r
+  27212, 17920, 13274, 31638, 29685, 20947, 569,   30264, 8466,  2222,\r
+  25423, 323,   14159, 22818, 3259,  14312, 28903, 12549, 8010,  14543,\r
+  11954, 30568, 2332,  4014,  2910,  25289, 21250, 23833, 13308, 32650,\r
+  23851, 12444, 10687, 31394, 20224, 18695, 20737, 1171,  15948, 12041,\r
+  29063, 24732, 20896, 24064, 3078,  29743, 25078, 28432, 10470, 27301,\r
+  24468, 31346, 1093,  16689, 32307, 8975,  15167, 20242, 27745, 78,\r
+  24173, 7693,  6692,  23082, 3499,  10011, 21216, 27527, 287,   18271,\r
+  11898, 7878,  9079,  346,   7614,  30871, 8561,  24162, 5630,  9486,\r
+  4769,  1104,  8188,  23290, 8047,  21370, 19979, 2418,  18527, 8417,\r
+  23920, 944,   12949, 24747, 1806,  7971,  7576,  21715, 17219, 30655,\r
+  26198, 5151,  1293,  20120, 15208, 32082, 12401, 13999, 26264, 27299,\r
+  20509, 1035,  20384, 14703, 20044, 12556, 7221,  31275, 13546, 11773,\r
+  4420,  23708, 14584, 20200, 6524,  11338, 5427,  19374, 5388,  28978,\r
+  30704, 1622,  22190, 2235,  2123,  2982,  29156, 19179, 18048, 496,\r
+  16001, 4059,  19353, 31279, 13676, 10600, 11338, 22355, 2721,  9516,\r
+  793,   16344, 10360, 27309, 26049, 19869, 28714, 2515,  18905, 28660,\r
+  25489, 19872, 7345,  13301, 7215,  26395, 4733,  26393, 13170, 17549,\r
+  28853, 18436, 54,    26864, 22459, 14753, 19852, 22437, 20415, 11380,\r
+  28346, 26725, 7392,  12844, 21635, 6010,  7827,  28536, 1960,  9775,\r
+  15945, 24604, 11438, 8069,  12620, 8516,  29922, 5415,  4586,  13848,\r
+  8347,  10400, 5078,  31376, 30399, 13516, 22475, 14474, 21896, 11148,\r
+  8818,  4890,  16520, 31678, 31366, 15393, 4075,  4973,  29238, 10273,\r
+  9469,  21060, 8139,  13391, 18412, 73,    2442,  29418, 4814,  7368,\r
+  2268,  4556,  3557,  6540,  26796, 3903,  24866, 22101, 17169, 12561,\r
+  16105, 28807, 25133, 29163, 27668, 15136, 10325, 22750, 2362,  29420,\r
+  17265, 28479, 305,   764,   12198, 18613, 16593, 27988, 19763, 20880,\r
+  7163,  11236, 3481,  22364, 986,   7610,  31743, 32694, 29289, 21621,\r
+  9428,  8543,  12086, 22013, 8374,  13199, 20837, 9841,  18067, 18316,\r
+  8951,  11873, 18702, 16506, 18765, 20798, 17188, 15733, 22247, 18446,\r
+  30735, 27101, 10866, 5220,  19050, 10225, 16130, 8080,  11927, 18848,\r
+  20892, 23059, 7262,  19355, 32759, 28502, 17366, 18095, 17539, 24987,\r
+  2441,  2898,  29611, 8755,  3539,  7036,  7767,  31217, 17291, 30392,\r
   32182, 21984, 23013, 27770, 19514, 19505, 32151, 26803, 12260, 28023,\r
-  13627, 28323, 6593, 13847, 23797, 13806, 16053, 13305, 1365, 7667,\r
-  3447, 13444, 14719, 27481, 17885, 3786, 28809, 1002, 5466, 24063,\r
-  11812, 7333, 23749, 16432, 5759, 3598, 859, 27953, 31080, 17097,\r
-  31496, 14808, 6325, 29799, 23010, 23400, 11746, 10880, 11510, 32592,\r
-  29435, 12290, 26696, 2838, 12988, 29384, 6165, 6286, 9208, 367,\r
-  14171, 591, 5175, 7013, 20380, 5223, 9635, 1858, 17886, 13646,\r
-  9253, 9052, 30966, 6937, 13771, 25749, 5382, 24816, 27245, 14200,\r
-  16453, 4290, 28304, 30597, 1278, 30007, 25994, 28872, 7388, 18407,\r
-  12007, 8113, 356, 4041, 6924, 8991, 26051, 17390, 21274, 5310,\r
-  32202, 1647, 30741, 15251, 13879, 2980, 15686, 19669, 16950, 406,\r
-  477, 12031, 8743, 2999, 11739, 29475, 1954, 9937, 22063, 30849,\r
-  15032, 2365, 27679, 28248, 25724, 21333, 31722, 10236, 25283, 9259,\r
-  16044, 30505, 2343, 26236, 897, 151, 29522, 27103, 13293, 16078,\r
-  19577, 7234, 30588, 10044, 12326, 30615, 15013, 9605, 2107, 30667,\r
-  7412, 24858, 3124, 11512, 2665, 269, 17836, 15835, 1051, 25124,\r
-  15906, 28296, 23584, 29484, 14846, 32604, 26801, 11151, 9423, 30772,\r
-  29322, 20521, 4823, 13276, 25232, 31320, 31689, 16331, 29366, 5458,\r
-  4817, 25613, 26145, 17852, 24533, 26496, 3211, 28536, 32251, 25667,\r
-  5349, 19902, 9067, 16492, 29504, 20846, 22102, 7929, 24045, 14756,\r
-  29495, 23818, 9699, 6797, 26712, 28493, 28258, 18042, 19096, 13241,\r
-  2006, 19763, 10093, 2943, 29182, 1422, 14373, 20797, 18765, 21824,\r
-  23153, 32629, 9105, 10994, 29219, 6975, 8146, 24216, 6199, 14138,\r
-  11645, 27646, 15120, 8904, 20162, 15267, 5125, 6523, 23098, 28107,\r
-  5660, 1738, 32717, 23504, 14869, 12809, 5331, 17337, 19371, 26264,\r
-  27513, 21005, 7190, 27738, 14694, 32234, 15828, 25704, 20895, 27473,\r
-  11689, 24071, 13736, 18372, 3301, 14296, 16877, 21779, 20709, 8527,\r
-  31072, 5747, 3036, 20582, 13410, 21456, 13012, 16275, 14055, 26468,\r
-  1263, 2039, 29141, 2441, 30707, 11224, 29614, 3787, 19973, 25937,\r
-  19567, 19522, 14517, 19784, 26808, 5663, 11579, 28321, 10284, 3204,\r
-  19968, 6577, 13083, 10905, 3425, 3062, 21343, 19420, 28079, 16389,\r
-  21635, 7096, 634, 31171, 12075, 9050, 5903, 25304, 943, 27072,\r
-  7743, 19297, 10250, 23058, 20322, 25317, 19699, 25654, 5276, 32139,\r
-  32329, 2975, 11871, 14730, 692, 22629, 12337, 6368, 24202, 24219,\r
-  15024, 25415, 32239, 20445, 5843, 25701, 19009, 19240, 5746, 23107,\r
-  11955, 24302, 24073, 10240, 20535, 29034, 31673, 8391, 31906, 818,\r
-  28559, 32510, 5386, 11, 2313, 23488, 30579, 4608, 15830, 14990,\r
+  13627, 28323, 6593,  13847, 23797, 13806, 16053, 13305, 1365,  7667,\r
+  3447,  13444, 14719, 27481, 17885, 3786,  28809, 1002,  5466,  24063,\r
+  11812, 7333,  23749, 16432, 5759,  3598,  859,   27953, 31080, 17097,\r
+  31496, 14808, 6325,  29799, 23010, 23400, 11746, 10880, 11510, 32592,\r
+  29435, 12290, 26696, 2838,  12988, 29384, 6165,  6286,  9208,  367,\r
+  14171, 591,   5175,  7013,  20380, 5223,  9635,  1858,  17886, 13646,\r
+  9253,  9052,  30966, 6937,  13771, 25749, 5382,  24816, 27245, 14200,\r
+  16453, 4290,  28304, 30597, 1278,  30007, 25994, 28872, 7388,  18407,\r
+  12007, 8113,  356,   4041,  6924,  8991,  26051, 17390, 21274, 5310,\r
+  32202, 1647,  30741, 15251, 13879, 2980,  15686, 19669, 16950, 406,\r
+  477,   12031, 8743,  2999,  11739, 29475, 1954,  9937,  22063, 30849,\r
+  15032, 2365,  27679, 28248, 25724, 21333, 31722, 10236, 25283, 9259,\r
+  16044, 30505, 2343,  26236, 897,   151,   29522, 27103, 13293, 16078,\r
+  19577, 7234,  30588, 10044, 12326, 30615, 15013, 9605,  2107,  30667,\r
+  7412,  24858, 3124,  11512, 2665,  269,   17836, 15835, 1051,  25124,\r
+  15906, 28296, 23584, 29484, 14846, 32604, 26801, 11151, 9423,  30772,\r
+  29322, 20521, 4823,  13276, 25232, 31320, 31689, 16331, 29366, 5458,\r
+  4817,  25613, 26145, 17852, 24533, 26496, 3211,  28536, 32251, 25667,\r
+  5349,  19902, 9067,  16492, 29504, 20846, 22102, 7929,  24045, 14756,\r
+  29495, 23818, 9699,  6797,  26712, 28493, 28258, 18042, 19096, 13241,\r
+  2006,  19763, 10093, 2943,  29182, 1422,  14373, 20797, 18765, 21824,\r
+  23153, 32629, 9105,  10994, 29219, 6975,  8146,  24216, 6199,  14138,\r
+  11645, 27646, 15120, 8904,  20162, 15267, 5125,  6523,  23098, 28107,\r
+  5660,  1738,  32717, 23504, 14869, 12809, 5331,  17337, 19371, 26264,\r
+  27513, 21005, 7190,  27738, 14694, 32234, 15828, 25704, 20895, 27473,\r
+  11689, 24071, 13736, 18372, 3301,  14296, 16877, 21779, 20709, 8527,\r
+  31072, 5747,  3036,  20582, 13410, 21456, 13012, 16275, 14055, 26468,\r
+  1263,  2039,  29141, 2441,  30707, 11224, 29614, 3787,  19973, 25937,\r
+  19567, 19522, 14517, 19784, 26808, 5663,  11579, 28321, 10284, 3204,\r
+  19968, 6577,  13083, 10905, 3425,  3062,  21343, 19420, 28079, 16389,\r
+  21635, 7096,  634,   31171, 12075, 9050,  5903,  25304, 943,   27072,\r
+  7743,  19297, 10250, 23058, 20322, 25317, 19699, 25654, 5276,  32139,\r
+  32329, 2975,  11871, 14730, 692,   22629, 12337, 6368,  24202, 24219,\r
+  15024, 25415, 32239, 20445, 5843,  25701, 19009, 19240, 5746,  23107,\r
+  11955, 24302, 24073, 10240, 20535, 29034, 31673, 8391,  31906, 818,\r
+  28559, 32510, 5386,  11,    2313,  23488, 30579, 4608,  15830, 14990,\r
   11179, 10934, 24030, 32065, 22387, 14074, 18562, 21571, 15839, 12444,\r
-  1829, 32511, 19968, 640, 28907, 28822, 1216, 29426, 15296, 11476,\r
-  9740, 2106, 7837, 29026, 4409, 7024, 26886, 32573, 13472, 3474,\r
-  13272, 6246, 25740, 21204, 3905, 1500, 6487, 18487, 21008, 14791,\r
-  22735, 1885, 28207, 25078, 20190, 11420, 28269, 32395, 22891, 17233,\r
-  385, 20725, 2939, 19575, 13900, 14111, 27548, 4984, 19807, 18151,\r
-  29059, 17730, 17341, 15826, 1780, 32158, 31458, 6398, 4066, 16061,\r
-  8708, 26968, 15832, 1812, 17560, 14350, 12951, 31083, 8728, 3912,\r
-  13825, 19248, 13060, 31507, 821, 27920, 32551, 5789, 28924, 8649,\r
-  10523, 31144, 31076, 30521, 21263, 6713, 25770, 21947, 16584, 30352,\r
-  7005, 6580, 23270, 7005, 25537, 27497, 30569, 23089, 3698, 18708,\r
-  2931, 17459, 22089, 30518, 10831, 15636, 30595, 19246, 30131, 14917,\r
-  16928, 1035, 25410, 615, 11146, 9631, 31573, 259, 9079, 2516,\r
-  29947, 635, 12304, 7236, 21311, 27712, 5459, 29699, 26537, 17734,\r
-  2998, 16319, 24071, 8885, 18957, 14348, 13676, 19682, 26285, 3065,\r
-  19066, 12413, 21458, 31719, 22237, 28684, 31550, 5787, 2584, 10647,\r
-  15651, 19601, 8068, 17573, 22083, 19859, 5525, 23656, 29014, 25739,\r
-  27232, 6709, 26540, 17814, 346, 5175, 29971, 601, 5731, 1123,\r
-  25339, 6296, 25091, 27566, 28376, 20228, 21235, 30078, 28616, 21589,\r
-  223, 12127, 32630, 21657, 15466, 26872, 10814, 30924, 24691, 20541,\r
-  27282, 1192, 18582, 7654, 29596, 1726, 4342, 26143, 3876, 20166,\r
-  826, 24961, 4789, 7732, 21718, 16961, 12283, 18188, 6796, 27047,\r
-  9328, 11510, 5426, 4546, 3128, 23701, 15285, 16219, 23624, 11541,\r
-  9822, 4135, 18382, 8195, 16212, 14656, 5325, 29538, 23651, 18902,\r
-  9224, 6651, 9723, 1570, 12322, 3572, 28540, 28316, 2051, 12708,\r
-  25776, 18286, 18558, 12966, 12441, 13352, 22832, 9004, 366, 15285,\r
-  12459, 15766, 3552, 18574, 9172, 1604, 32673, 31021, 17545, 16296,\r
-  26407, 21701, 4999, 25759, 7342, 14384, 2443, 7425, 12924, 3881,\r
-  15288, 24694, 23656, 11707, 7993, 15244, 28829, 24057, 12327, 27399,\r
-  26012, 30192, 32685, 16761, 29056, 2522, 28010, 2834, 11910, 3733,\r
-  4118, 25528, 26828, 83, 4457, 13146, 31065, 24978, 312, 17538,\r
-  21086, 9807, 25570, 10538, 8379, 24438, 32746, 25041, 9925, 15006,\r
-  12005, 31438, 13383, 10739, 13719, 5091, 24519, 18547, 26457, 1557,\r
-  25866, 20062, 6333, 7099, 19674, 10727, 9589, 3798, 16902, 4144,\r
-  3441, 16800, 14251, 6773, 27976, 25960, 17586, 17288, 21977, 924,\r
-  22682, 22909, 18226, 7464, 11639, 14246, 21169, 21502, 6971, 23746,\r
-  10344, 21238, 12341, 12657, 5062, 26585, 13015, 4843, 11124, 952,\r
-  28860, 30194, 14462, 5507, 32490, 13829, 6323, 29399, 20308, 25815,\r
-  8270, 17174, 16291, 11775, 16086, 8381, 1333, 8945, 27458, 25842,\r
-  6758, 813, 7009, 20829, 4367, 21686, 19065, 3129, 28237, 24774,\r
-  21295, 8875, 29572, 26816, 8358, 1362, 30883, 10086, 31467, 13087,\r
-  15273, 29260, 29329, 1639, 18792, 3980, 12184, 22582, 25480, 5052,\r
-  10132, 28135, 2000, 23581, 32522, 25841, 31905, 30997, 6686, 4356,\r
-  1731, 7392, 8299, 85, 11365, 25218, 30771, 6710, 10590, 256,\r
-  31928, 3049, 30905, 16079, 29673, 30646, 6001, 14733, 1857, 6715,\r
+  1829,  32511, 19968, 640,   28907, 28822, 1216,  29426, 15296, 11476,\r
+  9740,  2106,  7837,  29026, 4409,  7024,  26886, 32573, 13472, 3474,\r
+  13272, 6246,  25740, 21204, 3905,  1500,  6487,  18487, 21008, 14791,\r
+  22735, 1885,  28207, 25078, 20190, 11420, 28269, 32395, 22891, 17233,\r
+  385,   20725, 2939,  19575, 13900, 14111, 27548, 4984,  19807, 18151,\r
+  29059, 17730, 17341, 15826, 1780,  32158, 31458, 6398,  4066,  16061,\r
+  8708,  26968, 15832, 1812,  17560, 14350, 12951, 31083, 8728,  3912,\r
+  13825, 19248, 13060, 31507, 821,   27920, 32551, 5789,  28924, 8649,\r
+  10523, 31144, 31076, 30521, 21263, 6713,  25770, 21947, 16584, 30352,\r
+  7005,  6580,  23270, 7005,  25537, 27497, 30569, 23089, 3698,  18708,\r
+  2931,  17459, 22089, 30518, 10831, 15636, 30595, 19246, 30131, 14917,\r
+  16928, 1035,  25410, 615,   11146, 9631,  31573, 259,   9079,  2516,\r
+  29947, 635,   12304, 7236,  21311, 27712, 5459,  29699, 26537, 17734,\r
+  2998,  16319, 24071, 8885,  18957, 14348, 13676, 19682, 26285, 3065,\r
+  19066, 12413, 21458, 31719, 22237, 28684, 31550, 5787,  2584,  10647,\r
+  15651, 19601, 8068,  17573, 22083, 19859, 5525,  23656, 29014, 25739,\r
+  27232, 6709,  26540, 17814, 346,   5175,  29971, 601,   5731,  1123,\r
+  25339, 6296,  25091, 27566, 28376, 20228, 21235, 30078, 28616, 21589,\r
+  223,   12127, 32630, 21657, 15466, 26872, 10814, 30924, 24691, 20541,\r
+  27282, 1192,  18582, 7654,  29596, 1726,  4342,  26143, 3876,  20166,\r
+  826,   24961, 4789,  7732,  21718, 16961, 12283, 18188, 6796,  27047,\r
+  9328,  11510, 5426,  4546,  3128,  23701, 15285, 16219, 23624, 11541,\r
+  9822,  4135,  18382, 8195,  16212, 14656, 5325,  29538, 23651, 18902,\r
+  9224,  6651,  9723,  1570,  12322, 3572,  28540, 28316, 2051,  12708,\r
+  25776, 18286, 18558, 12966, 12441, 13352, 22832, 9004,  366,   15285,\r
+  12459, 15766, 3552,  18574, 9172,  1604,  32673, 31021, 17545, 16296,\r
+  26407, 21701, 4999,  25759, 7342,  14384, 2443,  7425,  12924, 3881,\r
+  15288, 24694, 23656, 11707, 7993,  15244, 28829, 24057, 12327, 27399,\r
+  26012, 30192, 32685, 16761, 29056, 2522,  28010, 2834,  11910, 3733,\r
+  4118,  25528, 26828, 83,    4457,  13146, 31065, 24978, 312,   17538,\r
+  21086, 9807,  25570, 10538, 8379,  24438, 32746, 25041, 9925,  15006,\r
+  12005, 31438, 13383, 10739, 13719, 5091,  24519, 18547, 26457, 1557,\r
+  25866, 20062, 6333,  7099,  19674, 10727, 9589,  3798,  16902, 4144,\r
+  3441,  16800, 14251, 6773,  27976, 25960, 17586, 17288, 21977, 924,\r
+  22682, 22909, 18226, 7464,  11639, 14246, 21169, 21502, 6971,  23746,\r
+  10344, 21238, 12341, 12657, 5062,  26585, 13015, 4843,  11124, 952,\r
+  28860, 30194, 14462, 5507,  32490, 13829, 6323,  29399, 20308, 25815,\r
+  8270,  17174, 16291, 11775, 16086, 8381,  1333,  8945,  27458, 25842,\r
+  6758,  813,   7009,  20829, 4367,  21686, 19065, 3129,  28237, 24774,\r
+  21295, 8875,  29572, 26816, 8358,  1362,  30883, 10086, 31467, 13087,\r
+  15273, 29260, 29329, 1639,  18792, 3980,  12184, 22582, 25480, 5052,\r
+  10132, 28135, 2000,  23581, 32522, 25841, 31905, 30997, 6686,  4356,\r
+  1731,  7392,  8299,  85,    11365, 25218, 30771, 6710,  10590, 256,\r
+  31928, 3049,  30905, 16079, 29673, 30646, 6001,  14733, 1857,  6715,\r
   25721, 21999, 17389, 23044, 16895, 27643, 26157, 30043, 23538, 887,\r
-  29692, 16993, 14274, 13473, 27379, 13662, 29031, 288, 1387, 8534,\r
-  18852, 14651, 23266, 26333, 27021, 16713, 24480, 1323, 32583, 19304,\r
-  1945, 16755, 6159, 22898, 4246, 22641, 23421, 6957, 14224, 28227,\r
-  3082, 31938, 23900, 12409, 28881, 31089, 24206, 24175, 3218, 1666,\r
-  8855, 11227, 17916, 10879, 9776, 12706, 25900, 5280, 1276, 24816,\r
-  2673, 18567, 18024, 11399, 594, 12845, 29143, 23639, 6866, 13853,\r
-  11772, 16207, 24050, 4576, 28550, 12148, 21880, 8376, 31491, 7216,\r
-  15343, 22673, 15870, 3820, 16111, 4916, 17259, 24033, 13982, 30654,\r
-  18246, 298, 30327, 6224, 11638, 15902, 6986, 6153, 24567, 7390,\r
-  31364, 27953, 22584, 23594, 5809, 5047, 22466, 22393, 15679, 17374,\r
-  5147, 4936, 12677, 307, 23018, 25522, 2308, 5570, 27483, 24897,\r
-  7404, 19849, 7621, 8196, 13538, 1581, 31371, 23777, 20224, 26348,\r
-  26432, 5421, 10525, 21715, 6414, 15482, 28495, 30513, 22360, 1200,\r
-  13231, 24651, 20894, 27744, 4956, 11857, 3233, 1876, 11459, 14481,\r
-  10952, 13675, 19229, 7403, 5059, 15268, 27448, 16773, 16238, 29560,\r
-  32123, 7872, 10232, 1133, 2341, 25962, 10052, 23528, 5333, 21813,\r
-  17295, 22338, 30799, 22375, 12116, 21535, 31613, 12756, 108, 6907,\r
-  26292, 26121, 25210, 22534, 26681, 4299, 18566, 5682, 29444, 24000,\r
-  25064, 28810, 31427, 25451, 22120, 28101, 12578, 31582, 3491, 14875,\r
-  10314, 27306, 1457, 13143, 32423, 28315, 32004, 31534, 30703, 418,\r
-  29587, 975, 10080, 27795, 18232, 19131, 3913, 30736, 28503, 13783,\r
-  22987, 21061, 7105, 18111, 3809, 31959, 15064, 6238, 27550, 22294,\r
-  10995, 23228, 16054, 6266, 6916, 16662, 28224, 20301, 24184, 5684,\r
-  2746, 14245, 14430, 27383, 4942, 32405, 25036, 4914, 20307, 17828,\r
+  29692, 16993, 14274, 13473, 27379, 13662, 29031, 288,   1387,  8534,\r
+  18852, 14651, 23266, 26333, 27021, 16713, 24480, 1323,  32583, 19304,\r
+  1945,  16755, 6159,  22898, 4246,  22641, 23421, 6957,  14224, 28227,\r
+  3082,  31938, 23900, 12409, 28881, 31089, 24206, 24175, 3218,  1666,\r
+  8855,  11227, 17916, 10879, 9776,  12706, 25900, 5280,  1276,  24816,\r
+  2673,  18567, 18024, 11399, 594,   12845, 29143, 23639, 6866,  13853,\r
+  11772, 16207, 24050, 4576,  28550, 12148, 21880, 8376,  31491, 7216,\r
+  15343, 22673, 15870, 3820,  16111, 4916,  17259, 24033, 13982, 30654,\r
+  18246, 298,   30327, 6224,  11638, 15902, 6986,  6153,  24567, 7390,\r
+  31364, 27953, 22584, 23594, 5809,  5047,  22466, 22393, 15679, 17374,\r
+  5147,  4936,  12677, 307,   23018, 25522, 2308,  5570,  27483, 24897,\r
+  7404,  19849, 7621,  8196,  13538, 1581,  31371, 23777, 20224, 26348,\r
+  26432, 5421,  10525, 21715, 6414,  15482, 28495, 30513, 22360, 1200,\r
+  13231, 24651, 20894, 27744, 4956,  11857, 3233,  1876,  11459, 14481,\r
+  10952, 13675, 19229, 7403,  5059,  15268, 27448, 16773, 16238, 29560,\r
+  32123, 7872,  10232, 1133,  2341,  25962, 10052, 23528, 5333,  21813,\r
+  17295, 22338, 30799, 22375, 12116, 21535, 31613, 12756, 108,   6907,\r
+  26292, 26121, 25210, 22534, 26681, 4299,  18566, 5682,  29444, 24000,\r
+  25064, 28810, 31427, 25451, 22120, 28101, 12578, 31582, 3491,  14875,\r
+  10314, 27306, 1457,  13143, 32423, 28315, 32004, 31534, 30703, 418,\r
+  29587, 975,   10080, 27795, 18232, 19131, 3913,  30736, 28503, 13783,\r
+  22987, 21061, 7105,  18111, 3809,  31959, 15064, 6238,  27550, 22294,\r
+  10995, 23228, 16054, 6266,  6916,  16662, 28224, 20301, 24184, 5684,\r
+  2746,  14245, 14430, 27383, 4942,  32405, 25036, 4914,  20307, 17828,\r
   20350, 25786, 24855, 31358, 31425, 27841, 30172, 22250, 12687, 3935,\r
-  14112, 7420, 12796, 17778, 24866, 25484, 5329, 27816, 8865, 1767,\r
-  19318, 24026, 10727, 4547, 13589, 15772, 774, 12921, 3836, 15122,\r
-  11106, 4206, 17475, 12549, 32367, 5586, 24751, 23861, 24508, 398,\r
-  10967, 8689, 17969, 21879, 10629, 1510, 3221, 29896, 6239, 26165,\r
-  11090, 1743, 4039, 3784, 16253, 29158, 25599, 11493, 785, 677,\r
-  32657, 20483, 6779, 4950, 15598, 27869, 23388, 18345, 853, 5830,\r
+  14112, 7420,  12796, 17778, 24866, 25484, 5329,  27816, 8865,  1767,\r
+  19318, 24026, 10727, 4547,  13589, 15772, 774,   12921, 3836,  15122,\r
+  11106, 4206,  17475, 12549, 32367, 5586,  24751, 23861, 24508, 398,\r
+  10967, 8689,  17969, 21879, 10629, 1510,  3221,  29896, 6239,  26165,\r
+  11090, 1743,  4039,  3784,  16253, 29158, 25599, 11493, 785,   677,\r
+  32657, 20483, 6779,  4950,  15598, 27869, 23388, 18345, 853,   5830,\r
   28810, 12458, 10998, 25404, 32600, 27887, 27736, 11199, 12823, 6422,\r
-  24312, 8676, 19420, 9327, 19251, 27045, 10628, 24053, 21349, 11771,\r
-  21494, 19843, 14419, 25519, 1960, 11588, 15558, 11884, 21861, 5996,\r
-  27769, 7194, 16461, 15397, 18997, 10855, 32029, 13260, 10555, 19110,\r
-  14000, 16734, 13794, 22493, 31686, 6445, 29057, 13081, 14853, 32728,\r
-  9615, 31237, 27197, 21881, 4617, 3003, 20976, 24864, 23316, 20442,\r
-  32274, 28801, 31204, 29657, 23309, 8169, 13532, 4763, 3592, 24183,\r
-  25335, 31299, 29545, 648, 32358, 1097, 26264, 627, 19067, 13262,\r
-  14086, 9591, 4293, 3628, 28271, 16625, 14717, 25042, 19548, 21970,\r
-  17184, 28495, 6891, 8785, 23902, 10412, 16594, 31709, 11059, 31487,\r
-  13474, 1366, 28756, 22077, 13641, 5500, 11724, 26448, 27611, 25000,\r
-  29159, 14441, 23186, 16570, 24399, 11160, 15635, 6738, 12149, 922,\r
-  15858, 22083, 13362, 28402, 9593, 24644, 7343, 18747, 26021, 5097,\r
-  386, 1724, 10098, 9426, 31769, 32317, 15704, 22307, 19804, 1305,\r
-  7958, 7219, 22414, 4501, 21166, 26505, 28532, 22384, 26289, 20484,\r
-  18618, 4795, 25020, 20825, 402, 29931, 19267, 16835, 4510, 26669,\r
-  12685, 20469, 8208, 7417, 20736, 7508, 1296, 5610, 16543, 18531,\r
-  31326, 9677, 18385, 31614, 16184, 5112, 16740, 21452, 13182, 23261,\r
-  12241, 13423, 11796, 13534, 26306, 23037, 4744, 27491, 28113, 16948,\r
-  27124, 7210, 147, 15337, 806, 26847, 20437, 13122, 24063, 17645,\r
-  26661, 3621, 26137, 21907, 24981, 11504, 16556, 6202, 15547, 25451,\r
-  12723, 17158, 4348, 32251, 23626, 5035, 28683, 10008, 25179, 130,\r
-  8876, 16640, 10105, 32732, 8894, 1965, 15116, 22934, 30328, 3845,\r
-  11695, 14061, 20723, 29010, 21974, 25748, 7144, 16881, 18356, 31492,\r
-  20156, 6222, 1116, 24852, 14009, 18192, 9254, 23753, 5279, 5008,\r
-  84, 9839, 13147, 400, 8181, 12776, 23574, 1834, 27658, 8773,\r
-  19313, 15622, 28392, 7059, 3087, 24272, 8925, 26359, 23125, 12265,\r
-  5142, 7422, 30061, 6237, 22976, 18990, 401, 3606, 10862, 16865,\r
-  24454, 7759, 4027, 4947, 7526, 11083, 32048, 21753, 25763, 12870,\r
-  20072, 14868, 2377, 11692, 28785, 9863, 7811, 26505, 14966, 13541,\r
-  13409, 20544, 14747, 25295, 8920, 11649, 29737, 22397, 1547, 13685,\r
-  26603, 30874, 20424, 27195, 18392, 16725, 4694, 18840, 15601, 4021,\r
-  26734, 9450, 11885, 23596, 7815, 13662, 21780, 3952, 343, 16483,\r
-  7657, 27270, 30102, 24671, 8203, 13599, 15621, 17824, 10717, 9768,\r
-  3247, 917, 10597, 15005, 22638, 15934, 29682, 28318, 30642, 19425,\r
-  12546, 3268, 1918, 7935, 27746, 1973, 11699, 3206, 5015, 4598,\r
-  8593, 16968, 25213, 26625, 7547, 428, 814, 152, 7674, 29347,\r
-  25893, 5976, 4613, 8926, 4004, 17809, 24704, 1343, 29522, 7509,\r
-  26370, 1421, 32553, 31439, 21979, 1131, 31887, 32726, 3414, 20363,\r
+  24312, 8676,  19420, 9327,  19251, 27045, 10628, 24053, 21349, 11771,\r
+  21494, 19843, 14419, 25519, 1960,  11588, 15558, 11884, 21861, 5996,\r
+  27769, 7194,  16461, 15397, 18997, 10855, 32029, 13260, 10555, 19110,\r
+  14000, 16734, 13794, 22493, 31686, 6445,  29057, 13081, 14853, 32728,\r
+  9615,  31237, 27197, 21881, 4617,  3003,  20976, 24864, 23316, 20442,\r
+  32274, 28801, 31204, 29657, 23309, 8169,  13532, 4763,  3592,  24183,\r
+  25335, 31299, 29545, 648,   32358, 1097,  26264, 627,   19067, 13262,\r
+  14086, 9591,  4293,  3628,  28271, 16625, 14717, 25042, 19548, 21970,\r
+  17184, 28495, 6891,  8785,  23902, 10412, 16594, 31709, 11059, 31487,\r
+  13474, 1366,  28756, 22077, 13641, 5500,  11724, 26448, 27611, 25000,\r
+  29159, 14441, 23186, 16570, 24399, 11160, 15635, 6738,  12149, 922,\r
+  15858, 22083, 13362, 28402, 9593,  24644, 7343,  18747, 26021, 5097,\r
+  386,   1724,  10098, 9426,  31769, 32317, 15704, 22307, 19804, 1305,\r
+  7958,  7219,  22414, 4501,  21166, 26505, 28532, 22384, 26289, 20484,\r
+  18618, 4795,  25020, 20825, 402,   29931, 19267, 16835, 4510,  26669,\r
+  12685, 20469, 8208,  7417,  20736, 7508,  1296,  5610,  16543, 18531,\r
+  31326, 9677,  18385, 31614, 16184, 5112,  16740, 21452, 13182, 23261,\r
+  12241, 13423, 11796, 13534, 26306, 23037, 4744,  27491, 28113, 16948,\r
+  27124, 7210,  147,   15337, 806,   26847, 20437, 13122, 24063, 17645,\r
+  26661, 3621,  26137, 21907, 24981, 11504, 16556, 6202,  15547, 25451,\r
+  12723, 17158, 4348,  32251, 23626, 5035,  28683, 10008, 25179, 130,\r
+  8876,  16640, 10105, 32732, 8894,  1965,  15116, 22934, 30328, 3845,\r
+  11695, 14061, 20723, 29010, 21974, 25748, 7144,  16881, 18356, 31492,\r
+  20156, 6222,  1116,  24852, 14009, 18192, 9254,  23753, 5279,  5008,\r
+  84,    9839,  13147, 400,   8181,  12776, 23574, 1834,  27658, 8773,\r
+  19313, 15622, 28392, 7059,  3087,  24272, 8925,  26359, 23125, 12265,\r
+  5142,  7422,  30061, 6237,  22976, 18990, 401,   3606,  10862, 16865,\r
+  24454, 7759,  4027,  4947,  7526,  11083, 32048, 21753, 25763, 12870,\r
+  20072, 14868, 2377,  11692, 28785, 9863,  7811,  26505, 14966, 13541,\r
+  13409, 20544, 14747, 25295, 8920,  11649, 29737, 22397, 1547,  13685,\r
+  26603, 30874, 20424, 27195, 18392, 16725, 4694,  18840, 15601, 4021,\r
+  26734, 9450,  11885, 23596, 7815,  13662, 21780, 3952,  343,   16483,\r
+  7657,  27270, 30102, 24671, 8203,  13599, 15621, 17824, 10717, 9768,\r
+  3247,  917,   10597, 15005, 22638, 15934, 29682, 28318, 30642, 19425,\r
+  12546, 3268,  1918,  7935,  27746, 1973,  11699, 3206,  5015,  4598,\r
+  8593,  16968, 25213, 26625, 7547,  428,   814,   152,   7674,  29347,\r
+  25893, 5976,  4613,  8926,  4004,  17809, 24704, 1343,  29522, 7509,\r
+  26370, 1421,  32553, 31439, 21979, 1131,  31887, 32726, 3414,  20363,\r
   30403, 28098, 24635, 27167, 12667, 20863, 24472, 14736, 29388, 13792,\r
-  5057, 27251, 9289, 20533, 18070, 8633, 3951, 23327, 17156, 20005,\r
-  14657, 5027, 11727, 11780, 8495, 3198, 23438, 23832, 26428, 19384,\r
-  18423, 32469, 7520, 26236, 4700, 22736, 18475, 3879, 9078, 29044,\r
-  21164, 18847, 24674, 1782, 31121, 14822, 3817, 29324, 29071, 16623,\r
-  20228, 19418, 19717, 23472, 19871, 24749, 25820, 30840, 5278, 21740,\r
-  18609, 13955, 7198, 32460, 31286, 17356, 253, 21314, 30677, 19746,\r
-  1180, 30398, 23191, 13438, 14819, 17942, 2885, 404, 902, 27584,\r
-  21197, 16552, 18311, 21829, 18918, 17315, 31741, 7410, 27639, 31078,\r
-  28947, 15313, 20789, 20318, 31827, 6104, 21516, 20824, 26917, 16991,\r
-  9665, 31639, 21138, 31448, 5717, 29476, 19022, 18874, 5036, 6246,\r
-  28918, 18366, 9199, 10226, 25494, 25934, 24366, 23972, 8814, 17978,\r
-  11338, 19951, 21750, 1454, 17682, 26993, 3871, 30305, 17836, 24267,\r
-  31708, 13070, 19255, 20143, 4321, 4904, 26030, 1595, 12202, 22474,\r
-  24847, 13189, 22464, 9453, 10685, 18551, 20024, 6877, 20515, 32733,\r
-  24188, 9198, 28571, 14524, 6222, 19050, 31886, 7141, 12041, 10959,\r
+  5057,  27251, 9289,  20533, 18070, 8633,  3951,  23327, 17156, 20005,\r
+  14657, 5027,  11727, 11780, 8495,  3198,  23438, 23832, 26428, 19384,\r
+  18423, 32469, 7520,  26236, 4700,  22736, 18475, 3879,  9078,  29044,\r
+  21164, 18847, 24674, 1782,  31121, 14822, 3817,  29324, 29071, 16623,\r
+  20228, 19418, 19717, 23472, 19871, 24749, 25820, 30840, 5278,  21740,\r
+  18609, 13955, 7198,  32460, 31286, 17356, 253,   21314, 30677, 19746,\r
+  1180,  30398, 23191, 13438, 14819, 17942, 2885,  404,   902,   27584,\r
+  21197, 16552, 18311, 21829, 18918, 17315, 31741, 7410,  27639, 31078,\r
+  28947, 15313, 20789, 20318, 31827, 6104,  21516, 20824, 26917, 16991,\r
+  9665,  31639, 21138, 31448, 5717,  29476, 19022, 18874, 5036,  6246,\r
+  28918, 18366, 9199,  10226, 25494, 25934, 24366, 23972, 8814,  17978,\r
+  11338, 19951, 21750, 1454,  17682, 26993, 3871,  30305, 17836, 24267,\r
+  31708, 13070, 19255, 20143, 4321,  4904,  26030, 1595,  12202, 22474,\r
+  24847, 13189, 22464, 9453,  10685, 18551, 20024, 6877,  20515, 32733,\r
+  24188, 9198,  28571, 14524, 6222,  19050, 31886, 7141,  12041, 10959,\r
   15836, 16331, 24106, 22071, 30078, 16018, 30480, 14616, 31850, 29288,\r
-  31744, 23085, 21942, 19480, 27756, 1460, 32001, 30684, 9845, 14554,\r
-  29711, 17523, 430, 24948, 21427, 116, 1827, 17903, 25586, 16866,\r
-  27290, 10634, 32613, 19456, 10520, 194, 17887, 1895, 28839, 18958,\r
-  25168, 16469, 13655, 24269, 26601, 8008, 6019, 20605, 2689, 4044,\r
-  32597, 9773, 13880, 2449, 4492, 3637, 19034, 28608, 24957, 22564,\r
-  31622, 31375, 1112, 19194, 8463, 24340, 27053, 11160, 29090, 10582,\r
-  7471, 1908, 29481, 31914, 21943, 6033, 8688, 11837, 30092, 20399,\r
-  4870, 28141, 24545, 28095, 5607, 29021, 18335, 7577, 6487, 21832,\r
-  23397, 1265, 22417, 10517, 29389, 19335, 3489, 22700, 8434, 29599,\r
-  16911, 26761, 20527, 5809, 24253, 14350, 19241, 23137, 8722, 15902,\r
-  22287, 12721, 11096, 29671, 17184, 15990, 9827, 25087, 4462, 26377,\r
-  23156, 947, 7394, 29758, 8285, 29852, 24705, 19354, 997, 7283,\r
-  17389, 6592, 5229, 19749, 4399, 301, 10452, 1834, 30643, 8485,\r
-  6809, 22547, 16532, 2285, 15423, 1891, 6171, 27451, 3830, 1440,\r
-  4226, 9707, 31607, 20906, 16893, 29171, 4656, 18507, 11259, 20377,\r
-  5793, 4622, 15272, 740, 23046, 9045, 7095, 13392, 10550, 678,\r
-  12640, 2501, 20939, 18758, 27300, 19402, 643, 4617, 16856, 27383,\r
-  2790, 19048, 6753, 31144, 15913, 6612, 23229, 28153, 32083, 21322,\r
-  26563, 16366, 11422, 9512, 25899, 14321, 6176, 31551, 24400, 386,\r
-  2986, 18217, 16949, 22058, 8689, 8924, 16838, 21680, 3819, 384,\r
-  5985, 22672, 27004, 25214, 14485, 26025, 14418, 15066, 27434, 31798,\r
-  17934, 2242, 23137, 26879, 164, 17767, 4476, 26065, 26628, 10507,\r
-  32641, 7723, 20474, 30043, 26684, 27706, 31058, 14848, 26243, 25095,\r
-  17985, 18289, 25534, 29424, 3584, 17419, 10406, 20821, 21434, 5987,\r
-  27468, 21651, 25768, 8155, 32349, 31542, 8571, 26227, 1445, 23914,\r
-  30458, 17634, 21459, 9139, 18924, 12774, 21884, 21982, 23096, 10200,\r
-  11618, 5688, 24907, 22915, 26101, 7421, 28602, 10550, 23578, 2067,\r
-  20008, 5656, 18220, 21240, 25963, 5052, 576, 2810, 29162, 32757,\r
-  31406, 5030, 1609, 10988, 26573, 3970, 8521, 9583, 12285, 16639,\r
-  23273, 18828, 7915, 30633, 27858, 12639, 20752, 23969, 6641, 4136,\r
-  30843, 14669, 14694, 8608, 24273, 30542, 26781, 9102, 18578, 4274,\r
-  10426, 3477, 7581, 8555, 27451, 31568, 31479, 17152, 20952, 31905,\r
-  4552, 32643, 9646, 16453, 30630, 28867, 18845, 19628, 19478, 24514,\r
-  11247, 15112, 22352, 30826, 31546, 10405, 1603, 25979, 8839, 21112,\r
-  26585, 26824, 20659, 3834, 3964, 17315, 3862, 6711, 217, 918,\r
-  11107, 26657, 2276, 1876, 30927, 28971, 10268, 20462, 11382, 11539,\r
-  29200, 29258, 22778, 12287, 1570, 15570, 19821, 7628, 1419, 25961,\r
-  23409, 26531, 10911, 21411, 18589, 1997, 25938, 23349, 28451, 12232,\r
-  8444, 31402, 20912, 7322, 5977, 29272, 9876, 1381, 21716, 18323,\r
-  7715, 22588, 20997, 2080, 26715, 14645, 18040, 25068, 15815, 30655,\r
-  6320, 25342, 28578, 28214, 3947, 30123, 17216, 32693, 10280, 27913,\r
-  7338, 10284, 14055, 13734, 15497, 21170, 13104, 32377, 5445, 27164,\r
-  22102, 28184, 31597, 22478, 28413, 14380, 13658, 25809, 3546, 10018,\r
+  31744, 23085, 21942, 19480, 27756, 1460,  32001, 30684, 9845,  14554,\r
+  29711, 17523, 430,   24948, 21427, 116,   1827,  17903, 25586, 16866,\r
+  27290, 10634, 32613, 19456, 10520, 194,   17887, 1895,  28839, 18958,\r
+  25168, 16469, 13655, 24269, 26601, 8008,  6019,  20605, 2689,  4044,\r
+  32597, 9773,  13880, 2449,  4492,  3637,  19034, 28608, 24957, 22564,\r
+  31622, 31375, 1112,  19194, 8463,  24340, 27053, 11160, 29090, 10582,\r
+  7471,  1908,  29481, 31914, 21943, 6033,  8688,  11837, 30092, 20399,\r
+  4870,  28141, 24545, 28095, 5607,  29021, 18335, 7577,  6487,  21832,\r
+  23397, 1265,  22417, 10517, 29389, 19335, 3489,  22700, 8434,  29599,\r
+  16911, 26761, 20527, 5809,  24253, 14350, 19241, 23137, 8722,  15902,\r
+  22287, 12721, 11096, 29671, 17184, 15990, 9827,  25087, 4462,  26377,\r
+  23156, 947,   7394,  29758, 8285,  29852, 24705, 19354, 997,   7283,\r
+  17389, 6592,  5229,  19749, 4399,  301,   10452, 1834,  30643, 8485,\r
+  6809,  22547, 16532, 2285,  15423, 1891,  6171,  27451, 3830,  1440,\r
+  4226,  9707,  31607, 20906, 16893, 29171, 4656,  18507, 11259, 20377,\r
+  5793,  4622,  15272, 740,   23046, 9045,  7095,  13392, 10550, 678,\r
+  12640, 2501,  20939, 18758, 27300, 19402, 643,   4617,  16856, 27383,\r
+  2790,  19048, 6753,  31144, 15913, 6612,  23229, 28153, 32083, 21322,\r
+  26563, 16366, 11422, 9512,  25899, 14321, 6176,  31551, 24400, 386,\r
+  2986,  18217, 16949, 22058, 8689,  8924,  16838, 21680, 3819,  384,\r
+  5985,  22672, 27004, 25214, 14485, 26025, 14418, 15066, 27434, 31798,\r
+  17934, 2242,  23137, 26879, 164,   17767, 4476,  26065, 26628, 10507,\r
+  32641, 7723,  20474, 30043, 26684, 27706, 31058, 14848, 26243, 25095,\r
+  17985, 18289, 25534, 29424, 3584,  17419, 10406, 20821, 21434, 5987,\r
+  27468, 21651, 25768, 8155,  32349, 31542, 8571,  26227, 1445,  23914,\r
+  30458, 17634, 21459, 9139,  18924, 12774, 21884, 21982, 23096, 10200,\r
+  11618, 5688,  24907, 22915, 26101, 7421,  28602, 10550, 23578, 2067,\r
+  20008, 5656,  18220, 21240, 25963, 5052,  576,   2810,  29162, 32757,\r
+  31406, 5030,  1609,  10988, 26573, 3970,  8521,  9583,  12285, 16639,\r
+  23273, 18828, 7915,  30633, 27858, 12639, 20752, 23969, 6641,  4136,\r
+  30843, 14669, 14694, 8608,  24273, 30542, 26781, 9102,  18578, 4274,\r
+  10426, 3477,  7581,  8555,  27451, 31568, 31479, 17152, 20952, 31905,\r
+  4552,  32643, 9646,  16453, 30630, 28867, 18845, 19628, 19478, 24514,\r
+  11247, 15112, 22352, 30826, 31546, 10405, 1603,  25979, 8839,  21112,\r
+  26585, 26824, 20659, 3834,  3964,  17315, 3862,  6711,  217,   918,\r
+  11107, 26657, 2276,  1876,  30927, 28971, 10268, 20462, 11382, 11539,\r
+  29200, 29258, 22778, 12287, 1570,  15570, 19821, 7628,  1419,  25961,\r
+  23409, 26531, 10911, 21411, 18589, 1997,  25938, 23349, 28451, 12232,\r
+  8444,  31402, 20912, 7322,  5977,  29272, 9876,  1381,  21716, 18323,\r
+  7715,  22588, 20997, 2080,  26715, 14645, 18040, 25068, 15815, 30655,\r
+  6320,  25342, 28578, 28214, 3947,  30123, 17216, 32693, 10280, 27913,\r
+  7338,  10284, 14055, 13734, 15497, 21170, 13104, 32377, 5445,  27164,\r
+  22102, 28184, 31597, 22478, 28413, 14380, 13658, 25809, 3546,  10018,\r
   11791, 12582, 28602, 28196, 20324, 13658, 18630, 22344, 18276, 603,\r
-  21765, 8711, 15603, 13194, 21026, 9712, 14260, 18193, 18032, 3485,\r
+  21765, 8711,  15603, 13194, 21026, 9712,  14260, 18193, 18032, 3485,\r
   16169, 20599, 14635, 15847, 29980, 14706, 16385, 15702, 12094, 1276,\r
-  1488, 12251, 21519, 18600, 11954, 15042, 32509, 20535, 15671, 25826,\r
-  12240, 8038, 23793, 18199, 2373, 17931, 13878, 8434, 25337, 14944,\r
-  12065, 9646, 12937, 11679, 15834, 5478, 4088, 3791, 12311, 30342,\r
-  22865, 12253, 3043, 896, 14733, 16622, 28063, 8384, 5814, 5620,\r
-  1862, 28385, 11085, 27263, 9461, 19745, 20202, 6103, 23210, 24594,\r
-  12834, 28999, 16203, 28819, 4525, 15035, 22763, 14079, 9416, 28046,\r
-  7754, 26276, 19161, 16285, 12698, 3447, 15442, 8352, 14473, 7173,\r
-  17111, 8634, 30075, 10669, 15523, 31566, 1559, 18701, 28456, 9493,\r
-  27398, 186, 27893, 13421, 15607, 15412, 4829, 29940, 13031, 18713,\r
-  24662, 28502, 23967, 13464, 12063, 21091, 15486, 7465, 3622, 29285,\r
-  3960, 19579, 17320, 21168, 2655, 11694, 15002, 28026, 19809, 29635,\r
-  24392, 11757, 18131, 1105, 12092, 20603, 25133, 31353, 97, 7538,\r
-  10325, 22043, 17256, 12752, 13600, 11082, 17771, 19032, 9750, 26110,\r
+  1488,  12251, 21519, 18600, 11954, 15042, 32509, 20535, 15671, 25826,\r
+  12240, 8038,  23793, 18199, 2373,  17931, 13878, 8434,  25337, 14944,\r
+  12065, 9646,  12937, 11679, 15834, 5478,  4088,  3791,  12311, 30342,\r
+  22865, 12253, 3043,  896,   14733, 16622, 28063, 8384,  5814,  5620,\r
+  1862,  28385, 11085, 27263, 9461,  19745, 20202, 6103,  23210, 24594,\r
+  12834, 28999, 16203, 28819, 4525,  15035, 22763, 14079, 9416,  28046,\r
+  7754,  26276, 19161, 16285, 12698, 3447,  15442, 8352,  14473, 7173,\r
+  17111, 8634,  30075, 10669, 15523, 31566, 1559,  18701, 28456, 9493,\r
+  27398, 186,   27893, 13421, 15607, 15412, 4829,  29940, 13031, 18713,\r
+  24662, 28502, 23967, 13464, 12063, 21091, 15486, 7465,  3622,  29285,\r
+  3960,  19579, 17320, 21168, 2655,  11694, 15002, 28026, 19809, 29635,\r
+  24392, 11757, 18131, 1105,  12092, 20603, 25133, 31353, 97,    7538,\r
+  10325, 22043, 17256, 12752, 13600, 11082, 17771, 19032, 9750,  26110,\r
   13520, 17637, 26229, 30217, 28017, 19455, 31865, 30541, 20473, 24748,\r
-  15323, 10795, 10385, 13960, 407, 20543, 26813, 5656, 23795, 16714,\r
-  14464, 14684, 18877, 19567, 8903, 22179, 24532, 14755, 24837, 19875,\r
-  7146, 32607, 2586, 10953, 9607, 151, 10361, 29902, 13905, 26352,\r
-  31626, 30859, 1676, 27950, 26701, 1806, 25309, 11755, 23873, 23021,\r
-  20307, 19087, 11652, 4570, 23463, 32380, 10043, 888, 3267, 29321,\r
+  15323, 10795, 10385, 13960, 407,   20543, 26813, 5656,  23795, 16714,\r
+  14464, 14684, 18877, 19567, 8903,  22179, 24532, 14755, 24837, 19875,\r
+  7146,  32607, 2586,  10953, 9607,  151,   10361, 29902, 13905, 26352,\r
+  31626, 30859, 1676,  27950, 26701, 1806,  25309, 11755, 23873, 23021,\r
+  20307, 19087, 11652, 4570,  23463, 32380, 10043, 888,   3267,  29321,\r
   26932, 18030, 32642, 25778, 15306, 15033, 10423, 30734, 28937, 30790,\r
-  22128, 16641, 4115, 23744, 22140, 25010, 20418, 11175, 26154, 19135,\r
-  9359, 29858, 20308, 29744, 26035, 13334, 22172, 8874, 19852, 25079,\r
-  24310, 3301, 22849, 25310, 26215, 30048, 19369, 3932, 16396, 3156,\r
-  22377, 17807, 12125, 11750, 13405, 14578, 18611, 20640, 9274, 29817,\r
+  22128, 16641, 4115,  23744, 22140, 25010, 20418, 11175, 26154, 19135,\r
+  9359,  29858, 20308, 29744, 26035, 13334, 22172, 8874,  19852, 25079,\r
+  24310, 3301,  22849, 25310, 26215, 30048, 19369, 3932,  16396, 3156,\r
+  22377, 17807, 12125, 11750, 13405, 14578, 18611, 20640, 9274,  29817,\r
   15112, 14370, 10865, 17118, 26366, 16405, 31574, 28981, 26403, 21345,\r
-  26241, 8135, 28020, 25504, 16500, 5405, 6688, 29906, 3967, 18267,\r
-  12174, 4434, 32737, 4048, 18336, 14857, 25392, 15562, 28218, 9953,\r
-  16123, 30127, 17662, 27516, 11949, 9545, 5210, 21543, 7348, 24162,\r
-  28101, 3849, 5859, 28305, 17221, 30112, 16917, 4947, 6197, 2671,\r
-  12564, 1373, 12101, 32496, 8889, 20017, 22978, 21968, 27476, 7152,\r
-  19480, 30043, 3405, 1903, 7061, 15926, 17676, 140, 18799, 31308,\r
-  3095, 21699, 32521, 14346, 22394, 1020, 24434, 26063, 5484, 22439,\r
-  4654, 16798, 11823, 28683, 27450, 28951, 3128, 15323, 21578, 21925,\r
-  28560, 3595, 23381, 28920, 4218, 17889, 2643, 28086, 21846, 15695,\r
-  27718, 8301, 8133, 29056, 25463, 5325, 29966, 6577, 13570, 31508,\r
-  1473, 8258, 28052, 2505, 22682, 12813, 884, 10157, 7335, 22518,\r
-  22976, 29167, 26285, 20163, 2298, 29343, 24009, 4399, 4291, 7013,\r
-  6995, 18489, 22245, 22643, 16903, 5570, 6039, 20408, 4199, 27991,\r
-  11005, 8278, 29275, 28492, 17391, 13911, 22043, 31242, 3067, 1691,\r
-  18510, 26025, 16557, 18197, 7028, 7618, 13837, 30520, 7809, 3454,\r
-  25194, 19627, 9930, 4595, 22358, 22596, 28965, 26289, 19442, 30516,\r
-  7756, 16535, 7276, 25727, 20099, 2796, 25285, 32432, 8315, 31403,\r
-  3288, 5578, 6005, 27677, 5016, 21889, 11434, 16045, 14233, 8106,\r
-  4075, 8953, 26322, 27377, 23429, 3877, 12193, 31178, 16231, 19828,\r
-  25871, 32170, 26503, 22809, 22614, 31350, 8577, 32074, 19360, 32316,\r
-  1409, 27287, 530, 289, 9828, 13946, 4361, 410, 3354, 31023,\r
-  22179, 12511, 847, 32197, 14722, 17309, 29002, 14454, 5580, 15083,\r
-  21269, 30516, 31606, 14720, 2270, 132, 8643, 14627, 1693, 5263,\r
-  13319, 13410, 9975, 1142, 23473, 6279, 9570, 21479, 11144, 5064,\r
-  907, 6382, 20533, 5054, 24053, 3597, 10754, 2073, 29666, 2702,\r
-  13281, 15761, 26230, 21784, 23472, 25888, 29466, 1153, 12219, 7022,\r
-  11551, 25315, 1411, 1165, 31395, 1778, 32190, 20454, 22713, 6028,\r
-  2462, 14451, 10948, 28050, 21846, 21807, 6436, 2039, 15323, 19915,\r
-  17173, 1558, 10215, 18339, 18387, 7241, 1604, 7920, 27395, 14007,\r
+  26241, 8135,  28020, 25504, 16500, 5405,  6688,  29906, 3967,  18267,\r
+  12174, 4434,  32737, 4048,  18336, 14857, 25392, 15562, 28218, 9953,\r
+  16123, 30127, 17662, 27516, 11949, 9545,  5210,  21543, 7348,  24162,\r
+  28101, 3849,  5859,  28305, 17221, 30112, 16917, 4947,  6197,  2671,\r
+  12564, 1373,  12101, 32496, 8889,  20017, 22978, 21968, 27476, 7152,\r
+  19480, 30043, 3405,  1903,  7061,  15926, 17676, 140,   18799, 31308,\r
+  3095,  21699, 32521, 14346, 22394, 1020,  24434, 26063, 5484,  22439,\r
+  4654,  16798, 11823, 28683, 27450, 28951, 3128,  15323, 21578, 21925,\r
+  28560, 3595,  23381, 28920, 4218,  17889, 2643,  28086, 21846, 15695,\r
+  27718, 8301,  8133,  29056, 25463, 5325,  29966, 6577,  13570, 31508,\r
+  1473,  8258,  28052, 2505,  22682, 12813, 884,   10157, 7335,  22518,\r
+  22976, 29167, 26285, 20163, 2298,  29343, 24009, 4399,  4291,  7013,\r
+  6995,  18489, 22245, 22643, 16903, 5570,  6039,  20408, 4199,  27991,\r
+  11005, 8278,  29275, 28492, 17391, 13911, 22043, 31242, 3067,  1691,\r
+  18510, 26025, 16557, 18197, 7028,  7618,  13837, 30520, 7809,  3454,\r
+  25194, 19627, 9930,  4595,  22358, 22596, 28965, 26289, 19442, 30516,\r
+  7756,  16535, 7276,  25727, 20099, 2796,  25285, 32432, 8315,  31403,\r
+  3288,  5578,  6005,  27677, 5016,  21889, 11434, 16045, 14233, 8106,\r
+  4075,  8953,  26322, 27377, 23429, 3877,  12193, 31178, 16231, 19828,\r
+  25871, 32170, 26503, 22809, 22614, 31350, 8577,  32074, 19360, 32316,\r
+  1409,  27287, 530,   289,   9828,  13946, 4361,  410,   3354,  31023,\r
+  22179, 12511, 847,   32197, 14722, 17309, 29002, 14454, 5580,  15083,\r
+  21269, 30516, 31606, 14720, 2270,  132,   8643,  14627, 1693,  5263,\r
+  13319, 13410, 9975,  1142,  23473, 6279,  9570,  21479, 11144, 5064,\r
+  907,   6382,  20533, 5054,  24053, 3597,  10754, 2073,  29666, 2702,\r
+  13281, 15761, 26230, 21784, 23472, 25888, 29466, 1153,  12219, 7022,\r
+  11551, 25315, 1411,  1165,  31395, 1778,  32190, 20454, 22713, 6028,\r
+  2462,  14451, 10948, 28050, 21846, 21807, 6436,  2039,  15323, 19915,\r
+  17173, 1558,  10215, 18339, 18387, 7241,  1604,  7920,  27395, 14007,\r
   11591, 16447, 22606, 15981, 23963, 13858, 19023, 13489, 16447, 16165,\r
-  6319, 6290, 1490, 3, 29070, 19140, 2831, 9754, 16933, 25515,\r
-  9876, 3613, 4778, 12214, 999, 17161, 22900, 17902, 12218, 26970,\r
-  2400, 27855, 14702, 27262, 24435, 16726, 3543, 29834, 13249, 21595,\r
-  28479, 8748, 20877, 12833, 11949, 24288, 6833, 2092, 2663, 23399,\r
-  31297, 23890, 21941, 9846, 27243, 4117, 19944, 15787, 4513, 3888,\r
-  16539, 10948, 15099, 112, 26425, 275, 11734, 18885, 7103, 20269,\r
-  10434, 12441, 19139, 22755, 923, 864, 18102, 11635, 15605, 369,\r
-  24678, 28159, 30397, 29972, 26822, 22589, 9758, 13276, 32754, 26993,\r
-  31394, 31031, 21870, 11672, 16538, 20291, 15790, 3814, 17087, 31203,\r
-  16604, 14707, 28441, 6163, 1749, 26418, 17184, 28536, 17525, 10274,\r
-  17186, 5691, 3604, 31432, 228, 28440, 13136, 18652, 30092, 11186,\r
-  2061, 7235, 12990, 18730, 16059, 8253, 12038, 15087, 14296, 17120,\r
-  12662, 14296, 27317, 2757, 8336, 23920, 19324, 29953, 14438, 7569,\r
-  21106, 28502, 27647, 10804, 2170, 17067, 30205, 21383, 15579, 442,\r
-  23677, 3136, 18498, 20489, 27711, 2097, 267, 5403, 28423, 10525,\r
-  17596, 28647, 8514, 11723, 15058, 32393, 10989, 22360, 13505, 20024,\r
-  8115, 30929, 20278, 1912, 19029, 9474, 14495, 10896, 18255, 28296,\r
-  16621, 28735, 12985, 28206, 5784, 8875, 28011, 886, 21732, 666,\r
-  15716, 885, 18276, 3300, 19821, 18916, 1724, 13353, 20473, 24693,\r
+  6319,  6290,  1490,  3,     29070, 19140, 2831,  9754,  16933, 25515,\r
+  9876,  3613,  4778,  12214, 999,   17161, 22900, 17902, 12218, 26970,\r
+  2400,  27855, 14702, 27262, 24435, 16726, 3543,  29834, 13249, 21595,\r
+  28479, 8748,  20877, 12833, 11949, 24288, 6833,  2092,  2663,  23399,\r
+  31297, 23890, 21941, 9846,  27243, 4117,  19944, 15787, 4513,  3888,\r
+  16539, 10948, 15099, 112,   26425, 275,   11734, 18885, 7103,  20269,\r
+  10434, 12441, 19139, 22755, 923,   864,   18102, 11635, 15605, 369,\r
+  24678, 28159, 30397, 29972, 26822, 22589, 9758,  13276, 32754, 26993,\r
+  31394, 31031, 21870, 11672, 16538, 20291, 15790, 3814,  17087, 31203,\r
+  16604, 14707, 28441, 6163,  1749,  26418, 17184, 28536, 17525, 10274,\r
+  17186, 5691,  3604,  31432, 228,   28440, 13136, 18652, 30092, 11186,\r
+  2061,  7235,  12990, 18730, 16059, 8253,  12038, 15087, 14296, 17120,\r
+  12662, 14296, 27317, 2757,  8336,  23920, 19324, 29953, 14438, 7569,\r
+  21106, 28502, 27647, 10804, 2170,  17067, 30205, 21383, 15579, 442,\r
+  23677, 3136,  18498, 20489, 27711, 2097,  267,   5403,  28423, 10525,\r
+  17596, 28647, 8514,  11723, 15058, 32393, 10989, 22360, 13505, 20024,\r
+  8115,  30929, 20278, 1912,  19029, 9474,  14495, 10896, 18255, 28296,\r
+  16621, 28735, 12985, 28206, 5784,  8875,  28011, 886,   21732, 666,\r
+  15716, 885,   18276, 3300,  19821, 18916, 1724,  13353, 20473, 24693,\r
   21162, 25279, 18768, 12387, 19784, 22766, 17644, 29261, 31627, 15200,\r
-  31267, 20548, 12048, 26067, 9223, 28195, 15640, 22033, 4235, 19486,\r
-  9937, 17186, 10983, 14238, 5847, 13504, 1341, 15949, 22522, 12043,\r
-  9596, 22380, 10562, 18046, 6533, 14189, 4912, 12322, 5772, 446,\r
-  8775, 8705, 10177, 19683, 10955, 6110, 12336, 11463, 31177, 20515,\r
-  17382, 14164, 5975, 5403, 7254, 14145, 32285, 9825, 11259, 299,\r
-  27668, 22169, 5438, 7912, 12430, 12637, 2201, 17688, 7031, 15738,\r
-  19965, 18172, 29146, 12125, 32113, 31884, 2982, 8136, 11005, 20163,\r
-  32435, 6858, 2502, 24126, 31488, 6893, 19066, 30725, 15423, 17585,\r
-  14574, 19625, 13459, 30265, 23814, 7567, 21656, 32581, 8918, 21643,\r
-  5284, 5472, 19974, 14768, 9036, 22619, 15483, 15207, 23850, 31481,\r
-  15411, 31935, 29150, 25580, 30833, 7684, 23123, 23296, 16923, 29587,\r
-  1092, 5783, 14176, 7916, 22270, 15701, 3741, 15881, 30055, 12316,\r
-  2178, 9455, 24895, 12347, 19825, 21890, 25510, 13794, 14886, 10653,\r
-  24286, 2778, 24477, 25442, 27987, 32114, 14896, 6095, 29144, 16317,\r
-  25601, 10130, 32052, 18170, 18071, 14879, 11485, 16212, 4044, 28415,\r
-  26371, 26572, 28134, 14699, 6096, 27251, 22276, 6681, 21487, 1244,\r
-  24508, 11094, 1099, 5329, 25858, 13141, 32537, 23877, 3403, 12487,\r
-  12824, 6026, 25843, 5547, 16919, 9412, 6620, 9320, 17337, 29598,\r
-  6745, 8985, 29045, 28219, 6986, 22824, 736, 1136, 18824, 2846,\r
-  2351, 9776, 10883, 26809, 29943, 16967, 28713, 8512, 10552, 7499,\r
-  17418, 4627, 16282, 5328, 19898, 17286, 25078, 8924, 30839, 10223,\r
-  23832, 13723, 15372, 20734, 20676, 12115, 27893, 3917, 8438, 8857,\r
-  22468, 12344, 3182, 7878, 11204, 19951, 3180, 8357, 30939, 26057,\r
+  31267, 20548, 12048, 26067, 9223,  28195, 15640, 22033, 4235,  19486,\r
+  9937,  17186, 10983, 14238, 5847,  13504, 1341,  15949, 22522, 12043,\r
+  9596,  22380, 10562, 18046, 6533,  14189, 4912,  12322, 5772,  446,\r
+  8775,  8705,  10177, 19683, 10955, 6110,  12336, 11463, 31177, 20515,\r
+  17382, 14164, 5975,  5403,  7254,  14145, 32285, 9825,  11259, 299,\r
+  27668, 22169, 5438,  7912,  12430, 12637, 2201,  17688, 7031,  15738,\r
+  19965, 18172, 29146, 12125, 32113, 31884, 2982,  8136,  11005, 20163,\r
+  32435, 6858,  2502,  24126, 31488, 6893,  19066, 30725, 15423, 17585,\r
+  14574, 19625, 13459, 30265, 23814, 7567,  21656, 32581, 8918,  21643,\r
+  5284,  5472,  19974, 14768, 9036,  22619, 15483, 15207, 23850, 31481,\r
+  15411, 31935, 29150, 25580, 30833, 7684,  23123, 23296, 16923, 29587,\r
+  1092,  5783,  14176, 7916,  22270, 15701, 3741,  15881, 30055, 12316,\r
+  2178,  9455,  24895, 12347, 19825, 21890, 25510, 13794, 14886, 10653,\r
+  24286, 2778,  24477, 25442, 27987, 32114, 14896, 6095,  29144, 16317,\r
+  25601, 10130, 32052, 18170, 18071, 14879, 11485, 16212, 4044,  28415,\r
+  26371, 26572, 28134, 14699, 6096,  27251, 22276, 6681,  21487, 1244,\r
+  24508, 11094, 1099,  5329,  25858, 13141, 32537, 23877, 3403,  12487,\r
+  12824, 6026,  25843, 5547,  16919, 9412,  6620,  9320,  17337, 29598,\r
+  6745,  8985,  29045, 28219, 6986,  22824, 736,   1136,  18824, 2846,\r
+  2351,  9776,  10883, 26809, 29943, 16967, 28713, 8512,  10552, 7499,\r
+  17418, 4627,  16282, 5328,  19898, 17286, 25078, 8924,  30839, 10223,\r
+  23832, 13723, 15372, 20734, 20676, 12115, 27893, 3917,  8438,  8857,\r
+  22468, 12344, 3182,  7878,  11204, 19951, 3180,  8357,  30939, 26057,\r
   25017, 31598, 17589, 10460, 29414, 19960, 31518, 15050, 24536, 22570,\r
   15792, 21213, 28293, 17587, 22191, 29527, 13560, 15098, 21297, 11011,\r
-  9371, 19800, 2178, 5392, 23221, 6022, 2246, 2847, 23090, 8529,\r
-  19168, 15771, 4771, 22933, 2451, 9801, 22661, 15720, 7655, 2336,\r
-  12998, 32662, 22735, 30554, 8581, 17486, 8200, 2251, 16922, 17690,\r
+  9371,  19800, 2178,  5392,  23221, 6022,  2246,  2847,  23090, 8529,\r
+  19168, 15771, 4771,  22933, 2451,  9801,  22661, 15720, 7655,  2336,\r
+  12998, 32662, 22735, 30554, 8581,  17486, 8200,  2251,  16922, 17690,\r
   21060, 16242, 29782, 28948, 13960, 18766, 25867, 23896, 31443, 5234,\r
-  8655, 6581, 1536, 26972, 6654, 15784, 8429, 32643, 12542, 16778,\r
-  15069, 16431, 17863, 30728, 19739, 11149, 21410, 15316, 8673, 5123,\r
-  4144, 9626, 631, 9153, 10927, 24118, 4255, 24729, 4217, 24868,\r
-  20273, 8720, 23245, 17207, 7683, 11701, 18898, 20878, 11531, 28081,\r
-  28889, 7365, 10952, 30112, 30691, 17512, 12765, 18847, 5731, 5805,\r
-  14848, 7078, 11077, 22626, 4114, 29465, 5678, 18724, 6543, 29337,\r
+  8655,  6581,  1536,  26972, 6654,  15784, 8429,  32643, 12542, 16778,\r
+  15069, 16431, 17863, 30728, 19739, 11149, 21410, 15316, 8673,  5123,\r
+  4144,  9626,  631,   9153,  10927, 24118, 4255,  24729, 4217,  24868,\r
+  20273, 8720,  23245, 17207, 7683,  11701, 18898, 20878, 11531, 28081,\r
+  28889, 7365,  10952, 30112, 30691, 17512, 12765, 18847, 5731,  5805,\r
+  14848, 7078,  11077, 22626, 4114,  29465, 5678,  18724, 6543,  29337,\r
   13830, 14290, 26409, 12320, 12468, 15169, 23216, 21325, 26664, 25393,\r
-  25653, 28156, 16543, 30080, 6767, 17178, 7202, 2974, 12894, 28600,\r
-  12112, 9281, 6701, 10845, 4958, 32090, 15197, 3233, 14684, 19015,\r
-  10272, 6903, 8890, 6730, 14339, 32459, 778, 826, 22480, 9933,\r
-  12039, 25720, 4275, 16780, 31959, 22053, 2715, 17990, 31117, 6290,\r
-  3555, 32766, 6130, 6136, 18482, 20176, 15493, 22634, 22688, 4994,\r
-  19136, 24071, 26394, 31067, 6045, 25972, 19207, 4664, 25945, 138,\r
-  1323, 30940, 19576, 27467, 4300, 28040, 13833, 11547, 20500, 8395,\r
-  19243, 23085, 6071, 8348, 32208, 2363, 7638, 7078, 3777, 20858,\r
-  20514, 28387, 13539, 25805, 21828, 12652, 18872, 6712, 15741, 12944,\r
-  7976, 31896, 9865, 7715, 25218, 12690, 22218, 15128, 12478, 19658,\r
-  5026, 30803, 16389, 25429, 14113, 15288, 17011, 29552, 18656, 10120,\r
-  26139, 29810, 7724, 18925, 5707, 8959, 17767, 27347, 25106, 23935,\r
-  16556, 27642, 11264, 9422, 21426, 28489, 1837, 5429, 26867, 14182,\r
+  25653, 28156, 16543, 30080, 6767,  17178, 7202,  2974,  12894, 28600,\r
+  12112, 9281,  6701,  10845, 4958,  32090, 15197, 3233,  14684, 19015,\r
+  10272, 6903,  8890,  6730,  14339, 32459, 778,   826,   22480, 9933,\r
+  12039, 25720, 4275,  16780, 31959, 22053, 2715,  17990, 31117, 6290,\r
+  3555,  32766, 6130,  6136,  18482, 20176, 15493, 22634, 22688, 4994,\r
+  19136, 24071, 26394, 31067, 6045,  25972, 19207, 4664,  25945, 138,\r
+  1323,  30940, 19576, 27467, 4300,  28040, 13833, 11547, 20500, 8395,\r
+  19243, 23085, 6071,  8348,  32208, 2363,  7638,  7078,  3777,  20858,\r
+  20514, 28387, 13539, 25805, 21828, 12652, 18872, 6712,  15741, 12944,\r
+  7976,  31896, 9865,  7715,  25218, 12690, 22218, 15128, 12478, 19658,\r
+  5026,  30803, 16389, 25429, 14113, 15288, 17011, 29552, 18656, 10120,\r
+  26139, 29810, 7724,  18925, 5707,  8959,  17767, 27347, 25106, 23935,\r
+  16556, 27642, 11264, 9422,  21426, 28489, 1837,  5429,  26867, 14182,\r
   25980, 27546, 21005, 30339, 31521, 27379, 26472, 32635, 31585, 13825,\r
-  19225, 3357, 4761, 28986, 21254, 5063, 16770, 16647, 24139, 20792,\r
-  32179, 30767, 6621, 3743, 15208, 2707, 30829, 18679, 17537, 6173,\r
-  24976, 13207, 206, 9203, 23580, 18693, 5001, 19440, 14293, 24076,\r
-  29220, 5204, 31305, 27406, 22598, 7098, 4856, 32667, 15632, 19275,\r
-  6840, 5185, 11684, 22322, 8792, 11942, 12520, 9039, 21636, 3029,\r
-  6279, 24624, 28392, 17622, 25401, 29757, 22169, 8577, 5189, 1330,\r
-  19376, 3475, 9284, 13779, 56, 25602, 28455, 27611, 5706, 1166,\r
-  17275, 12853, 18806, 26521, 30444, 2926, 18277, 9272, 9224, 18539,\r
-  31677, 7306, 30022, 14167, 21317, 17481, 8519, 16096, 14922, 13726,\r
-  31835, 14755, 23105, 2106, 17223, 9700, 23213, 7842, 838, 32131,\r
-  10563, 24010, 17229, 18987, 3404, 742, 21139, 18893, 2636, 2941,\r
-  24657, 14157, 21985, 25535, 16582, 2939, 25837, 20248, 895, 19012,\r
-  21495, 16133, 16085, 12330, 11983, 3111, 13495, 21489, 23409, 17814,\r
-  13482, 4251, 11308, 2679, 24333, 19351, 23812, 8657, 11682, 27446,\r
-  84, 17564, 25930, 4446, 7864, 19995, 21776, 28290, 3625, 18028,\r
-  1641, 16593, 17514, 31582, 17082, 21422, 10404, 7042, 4635, 4961,\r
-  10317, 1925, 5979, 2316, 4941, 19900, 27972, 21216, 868, 1025,\r
-  26912, 27792, 21190, 29630, 26236, 23558, 26121, 19527, 43, 5718,\r
-  19777, 20333, 23182, 12528, 106, 11344, 25363, 13081, 15110, 31860,\r
-  10492, 7068, 15110, 5911, 13154, 28348, 26350, 11970, 30841, 24686,\r
-  7989, 27935, 23061, 28357, 16106, 266, 19309, 174, 3998, 21226,\r
-  1055, 23773, 13437, 21314, 25717, 3335, 20670, 6019, 28391, 338,\r
-  27966, 14629, 31457, 2058, 24935, 10997, 1222, 28053, 17239, 30897,\r
-  16180, 22697, 9022, 9426, 18826, 14012, 5640, 6313, 12199, 19644,\r
-  21309, 23213, 5877, 16385, 27173, 32532, 15527, 11136, 21039, 1696,\r
-  10558, 5441, 23187, 8124, 15698, 22547, 15671, 32199, 31631, 21886,\r
-  22736, 15024, 13310, 1017, 22089, 30403, 29829, 11613, 15720, 10946,\r
+  19225, 3357,  4761,  28986, 21254, 5063,  16770, 16647, 24139, 20792,\r
+  32179, 30767, 6621,  3743,  15208, 2707,  30829, 18679, 17537, 6173,\r
+  24976, 13207, 206,   9203,  23580, 18693, 5001,  19440, 14293, 24076,\r
+  29220, 5204,  31305, 27406, 22598, 7098,  4856,  32667, 15632, 19275,\r
+  6840,  5185,  11684, 22322, 8792,  11942, 12520, 9039,  21636, 3029,\r
+  6279,  24624, 28392, 17622, 25401, 29757, 22169, 8577,  5189,  1330,\r
+  19376, 3475,  9284,  13779, 56,    25602, 28455, 27611, 5706,  1166,\r
+  17275, 12853, 18806, 26521, 30444, 2926,  18277, 9272,  9224,  18539,\r
+  31677, 7306,  30022, 14167, 21317, 17481, 8519,  16096, 14922, 13726,\r
+  31835, 14755, 23105, 2106,  17223, 9700,  23213, 7842,  838,   32131,\r
+  10563, 24010, 17229, 18987, 3404,  742,   21139, 18893, 2636,  2941,\r
+  24657, 14157, 21985, 25535, 16582, 2939,  25837, 20248, 895,   19012,\r
+  21495, 16133, 16085, 12330, 11983, 3111,  13495, 21489, 23409, 17814,\r
+  13482, 4251,  11308, 2679,  24333, 19351, 23812, 8657,  11682, 27446,\r
+  84,    17564, 25930, 4446,  7864,  19995, 21776, 28290, 3625,  18028,\r
+  1641,  16593, 17514, 31582, 17082, 21422, 10404, 7042,  4635,  4961,\r
+  10317, 1925,  5979,  2316,  4941,  19900, 27972, 21216, 868,   1025,\r
+  26912, 27792, 21190, 29630, 26236, 23558, 26121, 19527, 43,    5718,\r
+  19777, 20333, 23182, 12528, 106,   11344, 25363, 13081, 15110, 31860,\r
+  10492, 7068,  15110, 5911,  13154, 28348, 26350, 11970, 30841, 24686,\r
+  7989,  27935, 23061, 28357, 16106, 266,   19309, 174,   3998,  21226,\r
+  1055,  23773, 13437, 21314, 25717, 3335,  20670, 6019,  28391, 338,\r
+  27966, 14629, 31457, 2058,  24935, 10997, 1222,  28053, 17239, 30897,\r
+  16180, 22697, 9022,  9426,  18826, 14012, 5640,  6313,  12199, 19644,\r
+  21309, 23213, 5877,  16385, 27173, 32532, 15527, 11136, 21039, 1696,\r
+  10558, 5441,  23187, 8124,  15698, 22547, 15671, 32199, 31631, 21886,\r
+  22736, 15024, 13310, 1017,  22089, 30403, 29829, 11613, 15720, 10946,\r
   25266, 29082, 15535, 24632, 25268, 25000, 10368, 17418, 12202, 18113,\r
   30085, 18255, 18721, 27086, 12879, 16993, 22999, 28447, 17469, 20020,\r
-  31685, 6750, 27552, 18407, 32093, 3782, 21276, 12953, 3089, 24464,\r
-  11858, 27518, 26644, 1198, 11195, 25650, 1380, 1980, 15831, 22349,\r
-  15880, 32052, 32648, 11063, 31126, 7649, 14264, 30526, 28153, 5270,\r
-  16450, 24293, 23921, 21535, 21520, 14207, 30171, 2424, 2177, 11261,\r
-  13619, 32317, 30221, 21253, 30551, 32610, 21547, 27460, 4366, 7204,\r
-  3186, 12804, 7240, 20799, 2303, 2049, 22952, 29794, 16920, 22648,\r
+  31685, 6750,  27552, 18407, 32093, 3782,  21276, 12953, 3089,  24464,\r
+  11858, 27518, 26644, 1198,  11195, 25650, 1380,  1980,  15831, 22349,\r
+  15880, 32052, 32648, 11063, 31126, 7649,  14264, 30526, 28153, 5270,\r
+  16450, 24293, 23921, 21535, 21520, 14207, 30171, 2424,  2177,  11261,\r
+  13619, 32317, 30221, 21253, 30551, 32610, 21547, 27460, 4366,  7204,\r
+  3186,  12804, 7240,  20799, 2303,  2049,  22952, 29794, 16920, 22648,\r
   19263, 29664, 20238, 30338, 27803, 16040, 32360, 25760, 11264, 26743,\r
-  14653, 14999, 2293, 24140, 13794, 7550, 31746, 16157, 15814, 32277,\r
-  3001, 11464, 2713, 4440, 13043, 10572, 32436, 14164, 31836, 21561,\r
-  15541, 17466, 30514, 7269, 25193, 24498, 26953, 14817, 27376, 28273,\r
-  25171, 1067, 31771, 14862, 5214, 30885, 8985, 19217, 5534, 1350,\r
-  17491, 10574, 28525, 27536, 17044, 30321, 7824, 20418, 8557, 5849,\r
-  26812, 18510, 9944, 23722, 11096, 397, 16411, 26909, 1925, 18866,\r
-  11759, 14363, 3932, 6397, 15330, 2571, 22646, 27185, 1786, 8168,\r
-  6066, 30535, 6043, 32150, 10802, 11876, 21162, 9846, 12199, 29449,\r
-  1523, 2104, 6607, 32649, 5064, 2032, 21820, 31425, 491, 25964,\r
-  28502, 5635, 28591, 26821, 23971, 18259, 14169, 3637, 19014, 29654,\r
-  16076, 9256, 2502, 7815, 15206, 3990, 7697, 28460, 27941, 10895,\r
-  27329, 9609, 5390, 28952, 32413, 19667, 10959, 28725, 5731, 17255,\r
-  5539, 11079, 15557, 27324, 27766, 27544, 11185, 5014, 330, 11829,\r
-  21205, 31357, 15321, 9212, 10083, 26734, 1915, 30709, 8465, 19408,\r
-  22603, 20454, 2149, 23977, 2949, 15137, 31279, 10002, 10035, 929,\r
-  17495, 31465, 15625, 5461, 32728, 14277, 29837, 28604, 3085, 26159,\r
-  123, 21938, 20268, 1807, 871, 12170, 24592, 9828, 10148, 21340,\r
-  32059, 1592, 28261, 10144, 29979, 30164, 31266, 21500, 25484, 10544,\r
-  22589, 29787, 26783, 9389, 3558, 575, 15513, 4358, 27708, 26712,\r
-  17727, 2948, 28596, 29781, 4177, 18034, 11967, 6906, 22357, 3537,\r
-  7079, 17011, 28821, 1101, 7610, 1768, 20843, 11375, 17835, 11601,\r
-  1468, 4627, 8501, 14476, 16579, 10269, 29185, 21676, 27408, 11880,\r
-  19402, 3221, 20944, 13311, 23999, 32198, 23374, 2448, 27433, 32373,\r
-  25786, 14365, 14157, 27105, 11562, 20469, 26772, 1764, 29150, 9187,\r
-  9961, 15559, 8136, 17573, 31075, 2651, 15947, 20639, 10020, 29509,\r
-  30532, 27601, 8065, 22426, 24647, 29703, 11619, 27052, 26923, 17743,\r
-  31212, 13859, 5064, 8880, 8798, 29263, 22783, 5913, 25913, 1212,\r
-  24315, 25240, 10916, 31751, 25783, 18380, 27662, 26609, 1728, 19869,\r
-  16149, 18610, 16701, 18730, 1959, 2192, 21292, 17411, 5479, 13231,\r
-  26350, 4761, 12370, 25131, 9222, 12019, 22690, 2148, 3614, 11170,\r
-  15858, 8601, 21834, 21238, 12708, 26809, 31633, 18034, 6272, 4981,\r
-  29610, 12926, 8093, 17306, 7427, 27228, 14469, 8862, 16648, 93,\r
-  8340, 23416, 30113, 11861, 30625, 26293, 2300, 8780, 10721, 23753,\r
-  23182, 886, 12551, 17059, 17748, 17254, 28848, 1156, 32607, 3966,\r
-  12799, 4880, 4751, 30378, 644, 22182, 21151, 5966, 31331, 27885,\r
+  14653, 14999, 2293,  24140, 13794, 7550,  31746, 16157, 15814, 32277,\r
+  3001,  11464, 2713,  4440,  13043, 10572, 32436, 14164, 31836, 21561,\r
+  15541, 17466, 30514, 7269,  25193, 24498, 26953, 14817, 27376, 28273,\r
+  25171, 1067,  31771, 14862, 5214,  30885, 8985,  19217, 5534,  1350,\r
+  17491, 10574, 28525, 27536, 17044, 30321, 7824,  20418, 8557,  5849,\r
+  26812, 18510, 9944,  23722, 11096, 397,   16411, 26909, 1925,  18866,\r
+  11759, 14363, 3932,  6397,  15330, 2571,  22646, 27185, 1786,  8168,\r
+  6066,  30535, 6043,  32150, 10802, 11876, 21162, 9846,  12199, 29449,\r
+  1523,  2104,  6607,  32649, 5064,  2032,  21820, 31425, 491,   25964,\r
+  28502, 5635,  28591, 26821, 23971, 18259, 14169, 3637,  19014, 29654,\r
+  16076, 9256,  2502,  7815,  15206, 3990,  7697,  28460, 27941, 10895,\r
+  27329, 9609,  5390,  28952, 32413, 19667, 10959, 28725, 5731,  17255,\r
+  5539,  11079, 15557, 27324, 27766, 27544, 11185, 5014,  330,   11829,\r
+  21205, 31357, 15321, 9212,  10083, 26734, 1915,  30709, 8465,  19408,\r
+  22603, 20454, 2149,  23977, 2949,  15137, 31279, 10002, 10035, 929,\r
+  17495, 31465, 15625, 5461,  32728, 14277, 29837, 28604, 3085,  26159,\r
+  123,   21938, 20268, 1807,  871,   12170, 24592, 9828,  10148, 21340,\r
+  32059, 1592,  28261, 10144, 29979, 30164, 31266, 21500, 25484, 10544,\r
+  22589, 29787, 26783, 9389,  3558,  575,   15513, 4358,  27708, 26712,\r
+  17727, 2948,  28596, 29781, 4177,  18034, 11967, 6906,  22357, 3537,\r
+  7079,  17011, 28821, 1101,  7610,  1768,  20843, 11375, 17835, 11601,\r
+  1468,  4627,  8501,  14476, 16579, 10269, 29185, 21676, 27408, 11880,\r
+  19402, 3221,  20944, 13311, 23999, 32198, 23374, 2448,  27433, 32373,\r
+  25786, 14365, 14157, 27105, 11562, 20469, 26772, 1764,  29150, 9187,\r
+  9961,  15559, 8136,  17573, 31075, 2651,  15947, 20639, 10020, 29509,\r
+  30532, 27601, 8065,  22426, 24647, 29703, 11619, 27052, 26923, 17743,\r
+  31212, 13859, 5064,  8880,  8798,  29263, 22783, 5913,  25913, 1212,\r
+  24315, 25240, 10916, 31751, 25783, 18380, 27662, 26609, 1728,  19869,\r
+  16149, 18610, 16701, 18730, 1959,  2192,  21292, 17411, 5479,  13231,\r
+  26350, 4761,  12370, 25131, 9222,  12019, 22690, 2148,  3614,  11170,\r
+  15858, 8601,  21834, 21238, 12708, 26809, 31633, 18034, 6272,  4981,\r
+  29610, 12926, 8093,  17306, 7427,  27228, 14469, 8862,  16648, 93,\r
+  8340,  23416, 30113, 11861, 30625, 26293, 2300,  8780,  10721, 23753,\r
+  23182, 886,   12551, 17059, 17748, 17254, 28848, 1156,  32607, 3966,\r
+  12799, 4880,  4751,  30378, 644,   22182, 21151, 5966,  31331, 27885,\r
   29793, 27004, 11698, 25775, 10827, 31083, 19746, 27627, 27187, 9764,\r
-  14818, 9253, 16471, 14463, 4288, 4353, 21408, 26190, 28818, 21776,\r
-  32552, 5592, 32724, 12522, 9465, 30089, 30098, 30845, 7704, 15335,\r
-  10633, 29348, 27586, 9160, 28553, 22268, 3573, 30914, 16925, 24051,\r
-  9010, 18404, 110, 5921, 13698, 2211, 17253, 31196, 22711, 21015,\r
-  3600, 25606, 32244, 28776, 23879, 31530, 8303, 28291, 23183, 9159,\r
-  12150, 26641, 13886, 748, 22960, 14249, 27872, 15877, 7590, 21828,\r
-  31706, 27893, 17281, 30962, 18765, 29285, 9237, 21964, 17213, 11867,\r
-  24863, 298, 31219, 16142, 29387, 23062, 14751, 17401, 11898, 1280,\r
-  26434, 22318, 10945, 20403, 9419, 12525, 9397, 4487, 128, 10613,\r
-  19046, 23512, 13216, 3354, 3753, 3768, 13383, 30360, 27163, 9697,\r
-  7825, 9127, 11618, 20973, 14594, 30671, 18614, 12746, 6182, 8574,\r
-  11425, 16488, 9588, 5464, 10242, 19124, 3448, 21454, 26456, 458,\r
+  14818, 9253,  16471, 14463, 4288,  4353,  21408, 26190, 28818, 21776,\r
+  32552, 5592,  32724, 12522, 9465,  30089, 30098, 30845, 7704,  15335,\r
+  10633, 29348, 27586, 9160,  28553, 22268, 3573,  30914, 16925, 24051,\r
+  9010,  18404, 110,   5921,  13698, 2211,  17253, 31196, 22711, 21015,\r
+  3600,  25606, 32244, 28776, 23879, 31530, 8303,  28291, 23183, 9159,\r
+  12150, 26641, 13886, 748,   22960, 14249, 27872, 15877, 7590,  21828,\r
+  31706, 27893, 17281, 30962, 18765, 29285, 9237,  21964, 17213, 11867,\r
+  24863, 298,   31219, 16142, 29387, 23062, 14751, 17401, 11898, 1280,\r
+  26434, 22318, 10945, 20403, 9419,  12525, 9397,  4487,  128,   10613,\r
+  19046, 23512, 13216, 3354,  3753,  3768,  13383, 30360, 27163, 9697,\r
+  7825,  9127,  11618, 20973, 14594, 30671, 18614, 12746, 6182,  8574,\r
+  11425, 16488, 9588,  5464,  10242, 19124, 3448,  21454, 26456, 458,\r
   22834, 11506, 31037, 32102, 14009, 30345, 31793, 17052, 13603, 26722,\r
-  22937, 8906, 30633, 4839, 12807, 1738, 9223, 9202, 24252, 31340,\r
-  4130, 28130, 11372, 3107, 29421, 25837, 13121, 21758, 7309, 1720,\r
-  28706, 15578, 31164, 24612, 820, 20183, 26219, 9579, 14241, 12808,\r
-  5035, 4205, 14489, 6767, 1229, 31044, 6039, 17960, 26568, 23838,\r
-  2022, 23268, 19676, 18252, 29539, 14233, 373, 20630, 19588, 3704,\r
-  4690, 10450, 16793, 23328, 14566, 24245, 13650, 2321, 14335, 23016,\r
-  8322, 24163, 27557, 15198, 16674, 32440, 4165, 6118, 15001, 6767,\r
-  1295, 16636, 2875, 7706, 3484, 4069, 31503, 30258, 22228, 26363,\r
-  26581, 15114, 17167, 23877, 4679, 22786, 16762, 18506, 20640, 2301,\r
-  13501, 6183, 19035, 11541, 11482, 14816, 8509, 25997, 30808, 29684,\r
-  11157, 29190, 20642, 28980, 9155, 13046, 9642, 28116, 28919, 24407,\r
-  19665, 15043, 27963, 17052, 5899, 2872, 19636, 5865, 4670, 16526,\r
-  2596, 20355, 31212, 10321, 31924, 26502, 6930, 24729, 31473, 2262,\r
-  12112, 22166, 12052, 8023, 29513, 4973, 134, 11361, 31821, 19266,\r
-  13987, 28270, 4406, 25238, 14527, 12566, 2703, 24020, 3942, 22846,\r
-  32252, 28454, 2792, 396, 14549, 5773, 13077, 15134, 19989, 2097,\r
+  22937, 8906,  30633, 4839,  12807, 1738,  9223,  9202,  24252, 31340,\r
+  4130,  28130, 11372, 3107,  29421, 25837, 13121, 21758, 7309,  1720,\r
+  28706, 15578, 31164, 24612, 820,   20183, 26219, 9579,  14241, 12808,\r
+  5035,  4205,  14489, 6767,  1229,  31044, 6039,  17960, 26568, 23838,\r
+  2022,  23268, 19676, 18252, 29539, 14233, 373,   20630, 19588, 3704,\r
+  4690,  10450, 16793, 23328, 14566, 24245, 13650, 2321,  14335, 23016,\r
+  8322,  24163, 27557, 15198, 16674, 32440, 4165,  6118,  15001, 6767,\r
+  1295,  16636, 2875,  7706,  3484,  4069,  31503, 30258, 22228, 26363,\r
+  26581, 15114, 17167, 23877, 4679,  22786, 16762, 18506, 20640, 2301,\r
+  13501, 6183,  19035, 11541, 11482, 14816, 8509,  25997, 30808, 29684,\r
+  11157, 29190, 20642, 28980, 9155,  13046, 9642,  28116, 28919, 24407,\r
+  19665, 15043, 27963, 17052, 5899,  2872,  19636, 5865,  4670,  16526,\r
+  2596,  20355, 31212, 10321, 31924, 26502, 6930,  24729, 31473, 2262,\r
+  12112, 22166, 12052, 8023,  29513, 4973,  134,   11361, 31821, 19266,\r
+  13987, 28270, 4406,  25238, 14527, 12566, 2703,  24020, 3942,  22846,\r
+  32252, 28454, 2792,  396,   14549, 5773,  13077, 15134, 19989, 2097,\r
   25670, 18043, 15219, 19702, 15773, 22729, 27086, 20815, 17549, 16705,\r
-  3278, 22103, 24988, 737, 9673, 31006, 6759, 13920, 11747, 17472,\r
-  11495, 18535, 11130, 32701, 28660, 26622, 14017, 13060, 7431, 14661,\r
-  12714, 3409, 26436, 8292, 14090, 10297, 952, 14532, 1272, 22660,\r
-  1759, 19584, 26229, 314, 15209, 24598, 24659, 7424, 22077, 9827,\r
-  9551, 29093, 11199, 28878, 5505, 8697, 19022, 28611, 19702, 4574,\r
-  7697, 22371, 1435, 20641, 500, 15481, 20572, 32138, 25069, 15792,\r
-  27022, 23217, 21124, 19716, 11402, 532, 16786, 11639, 27291, 28903,\r
-  9289, 30981, 10523, 23851, 18036, 17113, 2776, 2434, 7936, 10689,\r
-  26813, 2882, 19900, 28384, 23982, 14024, 9821, 25763, 18867, 9743,\r
-  27845, 18934, 4185, 3457, 9861, 26039, 5717, 21260, 9632, 30314,\r
-  17003, 7033, 12434, 18991, 1422, 16889, 27536, 4850, 11849, 28161,\r
-  26386, 19170, 2909, 15192, 30607, 15652, 8620, 10351, 14983, 1736,\r
-  31061, 16112, 27847, 9212, 17953, 10905, 30185, 23935, 28446, 12875,\r
-  19738, 10841, 14729, 18270, 6944, 22986, 6897, 7992, 15771, 6528,\r
-  30362, 2846, 3978, 11276, 18976, 585, 6930, 25495, 3420, 4669,\r
-  6267, 13521, 18827, 10582, 24188, 30251, 11181, 28580, 10168, 8006,\r
-  5676, 8697, 20872, 7339, 30142, 9023, 30715, 3004, 23948, 14351,\r
-  4891, 29419, 11924, 8320, 31090, 18985, 20044, 1085, 27597, 26529,\r
-  12424, 25819, 3648, 9383, 14493, 2665, 29290, 20203, 13767, 7752,\r
-  5882, 14835, 32456, 26685, 114, 1224, 28882, 25028, 20268, 26607,\r
-  21927, 5031, 30362, 8090, 29951, 29136, 31185, 17952, 21802, 10587,\r
-  20809, 12971, 28406, 5360, 24030, 12336, 22739, 19280, 3355, 8357,\r
-  11573, 31789, 4792, 24686, 12346, 3903, 23393, 32280, 30861, 14740,\r
-  7354, 6729, 8074, 32040, 9887, 1015, 15523, 18101, 22960, 25817,\r
-  12290, 7628, 26381, 4635, 111, 6949, 15710, 21846, 20597, 6452,\r
-  18199, 16831, 11968, 21244, 24058, 27039, 17866, 25896, 6109, 2051,\r
-  11959, 25944, 20653, 29364, 27517, 953, 5555, 26729, 19527, 27352,\r
-  22038, 3900, 17436, 20920, 31905, 14171, 28859, 29730, 22215, 13824,\r
+  3278,  22103, 24988, 737,   9673,  31006, 6759,  13920, 11747, 17472,\r
+  11495, 18535, 11130, 32701, 28660, 26622, 14017, 13060, 7431,  14661,\r
+  12714, 3409,  26436, 8292,  14090, 10297, 952,   14532, 1272,  22660,\r
+  1759,  19584, 26229, 314,   15209, 24598, 24659, 7424,  22077, 9827,\r
+  9551,  29093, 11199, 28878, 5505,  8697,  19022, 28611, 19702, 4574,\r
+  7697,  22371, 1435,  20641, 500,   15481, 20572, 32138, 25069, 15792,\r
+  27022, 23217, 21124, 19716, 11402, 532,   16786, 11639, 27291, 28903,\r
+  9289,  30981, 10523, 23851, 18036, 17113, 2776,  2434,  7936,  10689,\r
+  26813, 2882,  19900, 28384, 23982, 14024, 9821,  25763, 18867, 9743,\r
+  27845, 18934, 4185,  3457,  9861,  26039, 5717,  21260, 9632,  30314,\r
+  17003, 7033,  12434, 18991, 1422,  16889, 27536, 4850,  11849, 28161,\r
+  26386, 19170, 2909,  15192, 30607, 15652, 8620,  10351, 14983, 1736,\r
+  31061, 16112, 27847, 9212,  17953, 10905, 30185, 23935, 28446, 12875,\r
+  19738, 10841, 14729, 18270, 6944,  22986, 6897,  7992,  15771, 6528,\r
+  30362, 2846,  3978,  11276, 18976, 585,   6930,  25495, 3420,  4669,\r
+  6267,  13521, 18827, 10582, 24188, 30251, 11181, 28580, 10168, 8006,\r
+  5676,  8697,  20872, 7339,  30142, 9023,  30715, 3004,  23948, 14351,\r
+  4891,  29419, 11924, 8320,  31090, 18985, 20044, 1085,  27597, 26529,\r
+  12424, 25819, 3648,  9383,  14493, 2665,  29290, 20203, 13767, 7752,\r
+  5882,  14835, 32456, 26685, 114,   1224,  28882, 25028, 20268, 26607,\r
+  21927, 5031,  30362, 8090,  29951, 29136, 31185, 17952, 21802, 10587,\r
+  20809, 12971, 28406, 5360,  24030, 12336, 22739, 19280, 3355,  8357,\r
+  11573, 31789, 4792,  24686, 12346, 3903,  23393, 32280, 30861, 14740,\r
+  7354,  6729,  8074,  32040, 9887,  1015,  15523, 18101, 22960, 25817,\r
+  12290, 7628,  26381, 4635,  111,   6949,  15710, 21846, 20597, 6452,\r
+  18199, 16831, 11968, 21244, 24058, 27039, 17866, 25896, 6109,  2051,\r
+  11959, 25944, 20653, 29364, 27517, 953,   5555,  26729, 19527, 27352,\r
+  22038, 3900,  17436, 20920, 31905, 14171, 28859, 29730, 22215, 13824,\r
   22986, 25916, 27876, 27811, 11056, 28765, 12230, 20590, 28352, 31776,\r
-  8044, 1521, 2327, 9143, 20237, 25879, 32199, 31362, 27229, 31064,\r
-  16053, 11744, 8203, 21041, 2751, 31046, 5518, 14289, 8098, 8334,\r
-  18465, 6166, 17179, 25745, 32524, 16311, 26445, 9719, 13094, 13251,\r
-  28259, 10830, 3992, 16202, 20854, 14170, 28643, 2393, 11953, 30892,\r
-  32549, 18220, 691, 25462, 23704, 24224, 4404, 3230, 26971, 3303,\r
-  16620, 9489, 9077, 25983, 28336, 4186, 12823, 15717, 31711, 18803,\r
-  1825, 22150, 7164, 2523, 14824, 24438, 9628, 26344, 32566, 7012,\r
-  27267, 22879, 25235, 17998, 23306, 25410, 9411, 2417, 30916, 18409,\r
-  25488, 5124, 23648, 2644, 28362, 11301, 21201, 9664, 28299, 19476,\r
-  21933, 13432, 16063, 8095, 25299, 30958, 9188, 30173, 30545, 32010,\r
-  15631, 31519, 12677, 15298, 22320, 20260, 24194, 2283, 1430, 19340,\r
-  30388, 11087, 9142, 3727, 19912, 23807, 9256, 7663, 31174, 9707,\r
-  20722, 13867, 13696, 17583, 24841, 6646, 16944, 6576, 1813, 30183,\r
-  3165, 18536, 23925, 11378, 6142, 766, 21379, 7703, 30690, 13338,\r
-  25, 16857, 21583, 31479, 32084, 8690, 17642, 11706, 12695, 4293,\r
-  470, 22018, 10707, 10772, 12320, 23488, 26886, 29811, 19803, 21065,\r
-  20738, 14077, 32391, 7081, 2160, 22341, 17976, 22074, 532, 21392,\r
-  26100, 18550, 2387, 11585, 28380, 16138, 30706, 22420, 17806, 4395,\r
-  31008, 32399, 7499, 16173, 32183, 14902, 11861, 24402, 17855, 511,\r
-  11163, 19680, 9012, 29829, 15256, 19830, 23048, 18304, 30841, 8351,\r
-  16748, 29685, 15230, 11688, 2636, 29354, 14242, 17327, 20248, 7389,\r
-  10110, 8189, 20682, 1333, 4715, 11926, 1317, 23801, 27879, 14605,\r
-  23098, 14720, 6202, 30621, 21297, 19945, 1369, 14454, 25158, 27916,\r
-  32522, 4437, 9234, 26543, 24393, 20311, 24588, 6910, 13290, 6415,\r
-  29263, 17205, 5761, 30422, 670, 26272, 15231, 13666, 11429, 27845,\r
-  31901, 22171, 32129, 13792, 25214, 1193, 27267, 18063, 29071, 15186,\r
-  9521, 23503, 15923, 7043, 28814, 31527, 3101, 7468, 23452, 21283,\r
-  31996, 4945, 1310, 4, 4702, 13919, 19618, 2230, 1742, 10428,\r
-  5311, 10242, 16960, 10657, 31388, 13829, 28080, 27180, 9905, 17889,\r
-  27141, 14513, 6866, 19378, 11835, 30290, 8553, 24260, 20673, 2767,\r
-  16899, 27651, 16416, 19103, 24334, 27826, 28382, 831, 24800, 30048,\r
-  30370, 8650, 4604, 12568, 30360, 10186, 4241, 7385, 12567, 25165,\r
-  31044, 5957, 11394, 5948, 12079, 6301, 23404, 7401, 25898, 9965,\r
-  4095, 4071, 19529, 23172, 16030, 6942, 2982, 1703, 21449, 1566,\r
-  25952, 23175, 8513, 32180, 11491, 3696, 9837, 19131, 29290, 28994,\r
-  14333, 27445, 1987, 27173, 19149, 16795, 16978, 17017, 26124, 20081,\r
-  7769, 19468, 157, 10268, 10103, 14224, 19901, 9464, 19054, 12108,\r
-  15591, 27558, 29737, 2577, 12532, 23971, 8701, 10864, 12935, 4127,\r
-  18223, 24106, 8616, 18188, 11190, 20968, 10927, 9845, 10307, 27948,\r
-  612, 3601, 25471, 10888, 11620, 21272, 29843, 16398, 22215, 19541,\r
-  3822, 11271, 31231, 25725, 6978, 31208, 25603, 9919, 25040, 21377,\r
-  20398, 31132, 10726, 12920, 8545, 31737, 29350, 17910, 1520, 14450,\r
-  10504, 24736, 30908, 8946, 32547, 713, 29980, 5248, 18600, 21733,\r
-  22274, 14684, 175, 9793, 11995, 9547, 23734, 17394, 3254, 559,\r
-  4326, 15372, 1705, 3290, 10649, 24852, 32368, 21540, 7706, 8631,\r
-  27224, 28219, 171, 2235, 9564, 6203, 28621, 31031, 2701, 29695,\r
+  8044,  1521,  2327,  9143,  20237, 25879, 32199, 31362, 27229, 31064,\r
+  16053, 11744, 8203,  21041, 2751,  31046, 5518,  14289, 8098,  8334,\r
+  18465, 6166,  17179, 25745, 32524, 16311, 26445, 9719,  13094, 13251,\r
+  28259, 10830, 3992,  16202, 20854, 14170, 28643, 2393,  11953, 30892,\r
+  32549, 18220, 691,   25462, 23704, 24224, 4404,  3230,  26971, 3303,\r
+  16620, 9489,  9077,  25983, 28336, 4186,  12823, 15717, 31711, 18803,\r
+  1825,  22150, 7164,  2523,  14824, 24438, 9628,  26344, 32566, 7012,\r
+  27267, 22879, 25235, 17998, 23306, 25410, 9411,  2417,  30916, 18409,\r
+  25488, 5124,  23648, 2644,  28362, 11301, 21201, 9664,  28299, 19476,\r
+  21933, 13432, 16063, 8095,  25299, 30958, 9188,  30173, 30545, 32010,\r
+  15631, 31519, 12677, 15298, 22320, 20260, 24194, 2283,  1430,  19340,\r
+  30388, 11087, 9142,  3727,  19912, 23807, 9256,  7663,  31174, 9707,\r
+  20722, 13867, 13696, 17583, 24841, 6646,  16944, 6576,  1813,  30183,\r
+  3165,  18536, 23925, 11378, 6142,  766,   21379, 7703,  30690, 13338,\r
+  25,    16857, 21583, 31479, 32084, 8690,  17642, 11706, 12695, 4293,\r
+  470,   22018, 10707, 10772, 12320, 23488, 26886, 29811, 19803, 21065,\r
+  20738, 14077, 32391, 7081,  2160,  22341, 17976, 22074, 532,   21392,\r
+  26100, 18550, 2387,  11585, 28380, 16138, 30706, 22420, 17806, 4395,\r
+  31008, 32399, 7499,  16173, 32183, 14902, 11861, 24402, 17855, 511,\r
+  11163, 19680, 9012,  29829, 15256, 19830, 23048, 18304, 30841, 8351,\r
+  16748, 29685, 15230, 11688, 2636,  29354, 14242, 17327, 20248, 7389,\r
+  10110, 8189,  20682, 1333,  4715,  11926, 1317,  23801, 27879, 14605,\r
+  23098, 14720, 6202,  30621, 21297, 19945, 1369,  14454, 25158, 27916,\r
+  32522, 4437,  9234,  26543, 24393, 20311, 24588, 6910,  13290, 6415,\r
+  29263, 17205, 5761,  30422, 670,   26272, 15231, 13666, 11429, 27845,\r
+  31901, 22171, 32129, 13792, 25214, 1193,  27267, 18063, 29071, 15186,\r
+  9521,  23503, 15923, 7043,  28814, 31527, 3101,  7468,  23452, 21283,\r
+  31996, 4945,  1310,  4,     4702,  13919, 19618, 2230,  1742,  10428,\r
+  5311,  10242, 16960, 10657, 31388, 13829, 28080, 27180, 9905,  17889,\r
+  27141, 14513, 6866,  19378, 11835, 30290, 8553,  24260, 20673, 2767,\r
+  16899, 27651, 16416, 19103, 24334, 27826, 28382, 831,   24800, 30048,\r
+  30370, 8650,  4604,  12568, 30360, 10186, 4241,  7385,  12567, 25165,\r
+  31044, 5957,  11394, 5948,  12079, 6301,  23404, 7401,  25898, 9965,\r
+  4095,  4071,  19529, 23172, 16030, 6942,  2982,  1703,  21449, 1566,\r
+  25952, 23175, 8513,  32180, 11491, 3696,  9837,  19131, 29290, 28994,\r
+  14333, 27445, 1987,  27173, 19149, 16795, 16978, 17017, 26124, 20081,\r
+  7769,  19468, 157,   10268, 10103, 14224, 19901, 9464,  19054, 12108,\r
+  15591, 27558, 29737, 2577,  12532, 23971, 8701,  10864, 12935, 4127,\r
+  18223, 24106, 8616,  18188, 11190, 20968, 10927, 9845,  10307, 27948,\r
+  612,   3601,  25471, 10888, 11620, 21272, 29843, 16398, 22215, 19541,\r
+  3822,  11271, 31231, 25725, 6978,  31208, 25603, 9919,  25040, 21377,\r
+  20398, 31132, 10726, 12920, 8545,  31737, 29350, 17910, 1520,  14450,\r
+  10504, 24736, 30908, 8946,  32547, 713,   29980, 5248,  18600, 21733,\r
+  22274, 14684, 175,   9793,  11995, 9547,  23734, 17394, 3254,  559,\r
+  4326,  15372, 1705,  3290,  10649, 24852, 32368, 21540, 7706,  8631,\r
+  27224, 28219, 171,   2235,  9564,  6203,  28621, 31031, 2701,  29695,\r
   11451, 31487, 24503, 22582, 31544, 11107, 21313, 26297, 11914, 9753,\r
-  4437, 23836, 1991, 31351, 13377, 21378, 18767, 229, 5149, 23990,\r
-  9114, 9363, 14766, 17016, 24372, 30055, 30859, 15637, 26629, 5690,\r
-  29822, 32059, 7638, 23363, 5677, 22794, 3601, 11475, 13050, 25966,\r
-  31432, 579, 27687, 26797, 21241, 2347, 2366, 23356, 17, 19669,\r
+  4437,  23836, 1991,  31351, 13377, 21378, 18767, 229,   5149,  23990,\r
+  9114,  9363,  14766, 17016, 24372, 30055, 30859, 15637, 26629, 5690,\r
+  29822, 32059, 7638,  23363, 5677,  22794, 3601,  11475, 13050, 25966,\r
+  31432, 579,   27687, 26797, 21241, 2347,  2366,  23356, 17,    19669,\r
   20912, 27351, 11438, 29170, 10684, 13264, 26793, 23179, 30354, 9384,\r
-  20052, 17978, 3513, 16348, 3328, 17049, 13230, 12289, 31939, 32763,\r
-  28110, 25107, 8056, 24154, 11125, 6667, 13062, 18065, 2664, 13743,\r
-  14566, 9163, 14960, 4526, 5855, 4412, 17480, 17644, 13588, 4111,\r
-  14265, 9755, 15681, 22943, 1284, 20363, 24386, 8681, 1408, 5443,\r
-  16085, 24130, 30596, 8528, 28320, 25669, 29063, 10845, 7286, 29968,\r
-  4230, 30852, 21206, 2224, 26023, 11364, 29620, 28121, 26395, 31860,\r
-  20604, 4570, 26696, 23702, 853, 1233, 23848, 17392, 28067, 3611,\r
-  27884, 1271, 32719, 25871, 6118, 27596, 11850, 25068, 29861, 5836,\r
-  14287, 15119, 18530, 15715, 8425, 8810, 32411, 22816, 2230, 22321,\r
-  17405, 25871, 15082, 32726, 18567, 10051, 8982, 24632, 27885, 14514,\r
-  1323, 16408, 24378, 16198, 7994, 5580, 27322, 3632, 6269, 18743,\r
-  32535, 8320, 24987, 8952, 12994, 8690, 27176, 15330, 17556, 31243,\r
-  20331, 172, 24758, 3429, 26725, 7658, 11454, 10568, 21262, 26684,\r
-  24346, 19833, 26338, 5318, 26034, 18519, 12444, 21984, 24521, 22819,\r
-  23362, 12302, 28452, 19616, 10849, 6962, 9327, 18396, 27034, 17408,\r
-  2780, 13645, 30045, 435, 5901, 2079, 16629, 21502, 32052, 18893,\r
-  32197, 32070, 12921, 9711, 18385, 3342, 7580, 26707, 31616, 28339,\r
-  15067, 8526, 6304, 20569, 14102, 25684, 22186, 30245, 17969, 21703,\r
-  20039, 19885, 14522, 29965, 23572, 21932, 5323, 27621, 8354, 11771,\r
+  20052, 17978, 3513,  16348, 3328,  17049, 13230, 12289, 31939, 32763,\r
+  28110, 25107, 8056,  24154, 11125, 6667,  13062, 18065, 2664,  13743,\r
+  14566, 9163,  14960, 4526,  5855,  4412,  17480, 17644, 13588, 4111,\r
+  14265, 9755,  15681, 22943, 1284,  20363, 24386, 8681,  1408,  5443,\r
+  16085, 24130, 30596, 8528,  28320, 25669, 29063, 10845, 7286,  29968,\r
+  4230,  30852, 21206, 2224,  26023, 11364, 29620, 28121, 26395, 31860,\r
+  20604, 4570,  26696, 23702, 853,   1233,  23848, 17392, 28067, 3611,\r
+  27884, 1271,  32719, 25871, 6118,  27596, 11850, 25068, 29861, 5836,\r
+  14287, 15119, 18530, 15715, 8425,  8810,  32411, 22816, 2230,  22321,\r
+  17405, 25871, 15082, 32726, 18567, 10051, 8982,  24632, 27885, 14514,\r
+  1323,  16408, 24378, 16198, 7994,  5580,  27322, 3632,  6269,  18743,\r
+  32535, 8320,  24987, 8952,  12994, 8690,  27176, 15330, 17556, 31243,\r
+  20331, 172,   24758, 3429,  26725, 7658,  11454, 10568, 21262, 26684,\r
+  24346, 19833, 26338, 5318,  26034, 18519, 12444, 21984, 24521, 22819,\r
+  23362, 12302, 28452, 19616, 10849, 6962,  9327,  18396, 27034, 17408,\r
+  2780,  13645, 30045, 435,   5901,  2079,  16629, 21502, 32052, 18893,\r
+  32197, 32070, 12921, 9711,  18385, 3342,  7580,  26707, 31616, 28339,\r
+  15067, 8526,  6304,  20569, 14102, 25684, 22186, 30245, 17969, 21703,\r
+  20039, 19885, 14522, 29965, 23572, 21932, 5323,  27621, 8354,  11771,\r
   13874, 13307, 16834, 25532, 14800, 27066, 20735, 19928, 14399, 11105,\r
-  31595, 3501, 5048, 16217, 26271, 2048, 23859, 29894, 24317, 27193,\r
-  5327, 29276, 15160, 4047, 18805, 26483, 6423, 23553, 23480, 21342,\r
-  22389, 23495, 26624, 22265, 29069, 17416, 7144, 17538, 8052, 8205,\r
-  31460, 25002, 24551, 17462, 22055, 4075, 20295, 22763, 31684, 20251,\r
-  28642, 4566, 24851, 20034, 18292, 25935, 19542, 32425, 30190, 22552,\r
-  16796, 23859, 10613, 12619, 14054, 26096, 5038, 10896, 21385, 26096,\r
-  17465, 28819, 16083, 8021, 3195, 1974, 16881, 29612, 20641, 26883,\r
-  16656, 2174, 27105, 27492, 20419, 6689, 32259, 19734, 25765, 28884,\r
-  28705, 29019, 28735, 11276, 20139, 9839, 23340, 22536, 25261, 1982,\r
-  12154, 427, 17493, 20564, 29012, 15499, 6320, 12693, 27358, 20294,\r
-  23732, 558, 28513, 31253, 24963, 22859, 22952, 2979, 24046, 27147,\r
-  18858, 14367, 14648, 13104, 25961, 26255, 29469, 22300, 8473, 26728,\r
-  19731, 12281, 21125, 20316, 6352, 29751, 5039, 21876, 20492, 32571,\r
-  14518, 2910, 22920, 4693, 23805, 16648, 8015, 8691, 19338, 23662,\r
-  23100, 789, 18092, 4784, 14012, 3329, 29409, 14183, 14037, 824,\r
-  26870, 5689, 30056, 23464, 13168, 2731, 11955, 13603, 15147, 18999,\r
-  12825, 4624, 26433, 5279, 8486, 11105, 29741, 16000, 8142, 28613,\r
-  17969, 18986, 23029, 798, 15093, 687, 565, 21045, 15984, 19770,\r
-  11739, 3756, 9995, 9378, 12850, 10037, 7428, 29503, 26373, 4098,\r
-  4369, 16125, 29279, 28541, 1607, 23470, 405, 824, 13113, 6053,\r
-  4998, 20775, 15972, 5760, 14370, 30989, 6603, 20037, 26921, 14900,\r
-  16862, 23217, 24629, 353, 25504, 6860, 3579, 4871, 11785, 19649,\r
-  5838, 9659, 21161, 7149, 30821, 232, 31119, 21814, 15581, 29636,\r
-  11369, 13726, 24321, 14466, 31981, 1815, 17354, 6090, 27255, 32666,\r
-  27938, 24678, 19187, 5747, 18925, 1854, 15101, 17375, 18250, 902,\r
-  22855, 24280, 1814, 15158, 20795, 3376, 24499, 5050, 30946, 31197,\r
-  2311, 31467, 1541, 17812, 6855, 31807, 7826, 26009, 16373, 13884,\r
+  31595, 3501,  5048,  16217, 26271, 2048,  23859, 29894, 24317, 27193,\r
+  5327,  29276, 15160, 4047,  18805, 26483, 6423,  23553, 23480, 21342,\r
+  22389, 23495, 26624, 22265, 29069, 17416, 7144,  17538, 8052,  8205,\r
+  31460, 25002, 24551, 17462, 22055, 4075,  20295, 22763, 31684, 20251,\r
+  28642, 4566,  24851, 20034, 18292, 25935, 19542, 32425, 30190, 22552,\r
+  16796, 23859, 10613, 12619, 14054, 26096, 5038,  10896, 21385, 26096,\r
+  17465, 28819, 16083, 8021,  3195,  1974,  16881, 29612, 20641, 26883,\r
+  16656, 2174,  27105, 27492, 20419, 6689,  32259, 19734, 25765, 28884,\r
+  28705, 29019, 28735, 11276, 20139, 9839,  23340, 22536, 25261, 1982,\r
+  12154, 427,   17493, 20564, 29012, 15499, 6320,  12693, 27358, 20294,\r
+  23732, 558,   28513, 31253, 24963, 22859, 22952, 2979,  24046, 27147,\r
+  18858, 14367, 14648, 13104, 25961, 26255, 29469, 22300, 8473,  26728,\r
+  19731, 12281, 21125, 20316, 6352,  29751, 5039,  21876, 20492, 32571,\r
+  14518, 2910,  22920, 4693,  23805, 16648, 8015,  8691,  19338, 23662,\r
+  23100, 789,   18092, 4784,  14012, 3329,  29409, 14183, 14037, 824,\r
+  26870, 5689,  30056, 23464, 13168, 2731,  11955, 13603, 15147, 18999,\r
+  12825, 4624,  26433, 5279,  8486,  11105, 29741, 16000, 8142,  28613,\r
+  17969, 18986, 23029, 798,   15093, 687,   565,   21045, 15984, 19770,\r
+  11739, 3756,  9995,  9378,  12850, 10037, 7428,  29503, 26373, 4098,\r
+  4369,  16125, 29279, 28541, 1607,  23470, 405,   824,   13113, 6053,\r
+  4998,  20775, 15972, 5760,  14370, 30989, 6603,  20037, 26921, 14900,\r
+  16862, 23217, 24629, 353,   25504, 6860,  3579,  4871,  11785, 19649,\r
+  5838,  9659,  21161, 7149,  30821, 232,   31119, 21814, 15581, 29636,\r
+  11369, 13726, 24321, 14466, 31981, 1815,  17354, 6090,  27255, 32666,\r
+  27938, 24678, 19187, 5747,  18925, 1854,  15101, 17375, 18250, 902,\r
+  22855, 24280, 1814,  15158, 20795, 3376,  24499, 5050,  30946, 31197,\r
+  2311,  31467, 1541,  17812, 6855,  31807, 7826,  26009, 16373, 13884,\r
   18496, 25813, 17319, 17459, 31606, 15145, 23307, 28714, 23914, 12034,\r
-  20648, 16666, 25990, 29997, 29926, 14683, 29199, 749, 30673, 22876,\r
-  4104, 17995, 4122, 14999, 31316, 14510, 4958, 22212, 5148, 32683,\r
-  25515, 20301, 25200, 4126, 22081, 18691, 18737, 1914, 30613, 12303,\r
-  3886, 12125, 20636, 30763, 28045, 24424, 4421, 11538, 11885, 12621,\r
-  17480, 26420, 7881, 15145, 28702, 30895, 22431, 17429, 18768, 26235,\r
-  8786, 9975, 23029, 484, 31822, 22431, 17014, 13886, 32234, 15887,\r
-  30613, 24276, 10386, 23577, 8622, 14625, 24613, 28976, 316, 18243,\r
-  5020, 4216, 31902, 13996, 22765, 23839, 15132, 7963, 46, 24816,\r
-  28965, 11722, 25086, 12581, 16858, 4329, 27937, 21885, 22993, 14156,\r
-  14186, 9615, 10002, 14433, 5598, 4190, 21094, 30820, 22, 557,\r
-  24018, 23766, 17125, 23701, 3166, 9515, 17979, 13524, 30490, 15299,\r
-  27209, 19560, 29539, 4891, 16358, 30685, 11875, 25413, 8242, 26595,\r
-  8663, 23445, 26489, 2211, 17941, 7326, 22362, 27475, 9549, 3676,\r
-  25640, 28168, 13327, 26291, 29072, 5580, 4877, 29720, 17020, 20209,\r
-  7715, 143, 8248, 1957, 27796, 24789, 31955, 22726, 9879, 990,\r
-  5321, 12535, 21522, 5762, 21470, 13811, 2213, 3955, 333, 20513,\r
-  4330, 14194, 30498, 5225, 1275, 450, 26853, 71, 25653, 18653,\r
-  32120, 15389, 7740, 17255, 16450, 22478, 11583, 17760, 11662, 13704,\r
-  9598, 8605, 24109, 5857, 24073, 16249, 5731, 38, 5834, 14536,\r
-  15361, 26095, 16325, 5132, 30670, 22775, 17823, 28396, 1579, 9259,\r
-  1885, 11489, 31479, 4353, 22895, 32307, 31921, 17931, 14829, 21284,\r
-  15068, 29644, 6688, 3946, 9128, 17354, 24900, 4579, 7374, 15844,\r
-  3212, 25733, 17340, 6118, 4199, 10388, 30962, 9051, 24322, 4887,\r
-  15020, 19875, 14350, 3468, 4801, 26181, 9667, 20187, 7115, 8070,\r
-  19237, 137, 24968, 32058, 26502, 17454, 8320, 9690, 13132, 11561,\r
-  10472, 18903, 31220, 658, 26823, 5422, 5463, 23920, 24919, 24381,\r
-  11820, 30508, 2990, 3284, 26063, 15430, 28829, 22672, 19777, 30535,\r
-  30681, 30052, 19823, 10231, 12888, 16249, 25783, 23247, 9214, 28472,\r
-  23976, 5297, 20601, 677, 25353, 9943, 3946, 20718, 5405, 32522,\r
-  27589, 31811, 1062, 18452, 4730, 13801, 13352, 28279, 5205, 2186,\r
-  3567, 23903, 32546, 7376, 24915, 2006, 4630, 11314, 23739, 4663,\r
-  4458, 5645, 7648, 12261, 32073, 19190, 16340, 2364, 12268, 591,\r
-  2626, 15816, 9988, 28184, 9719, 22197, 31832, 24840, 31393, 15751,\r
-  20911, 6876, 6615, 2828, 13296, 12016, 23386, 17038, 14728, 14604,\r
-  3739, 19788, 24588, 21632, 25981, 18988, 27935, 2419, 31835, 1450,\r
-  22167, 9336, 9037, 11796, 30171, 11362, 19623, 6137, 2703, 27226,\r
-  17603, 9951, 20596, 14382, 5889, 11828, 11401, 2284, 17419, 24199,\r
-  13687, 24496, 11614, 4856, 6955, 10426, 23046, 4845, 12741, 10435,\r
-  30888, 7175, 9137, 30353, 17094, 18517, 3859, 13002, 9535, 9415,\r
-  4713, 29190, 21013, 3045, 3180, 3367, 8051, 6336, 4918, 19437,\r
-  22511, 17961, 26282, 7621, 24588, 3618, 25105, 21730, 21763, 7570,\r
-  12545, 6031, 2243, 28733, 19331, 31684, 32566, 26866, 32116, 247,\r
-  20678, 14854, 32044, 23604, 5664, 12802, 21854, 19056, 16695, 16537,\r
-  9791, 23835, 1932, 18397, 491, 29940, 16814, 3506, 26628, 24353,\r
-  25596, 24962, 9372, 18559, 29874, 18994, 5717, 31543, 8996, 20565,\r
-  8134, 6802, 25668, 14496, 18465, 20750, 14442, 17054, 20243, 9393,\r
-  32341, 16293, 14316, 26013, 30573, 5641, 4096, 27365, 24906, 1167,\r
-  29773, 4511, 18554, 14885, 6750, 12858, 30847, 5584, 24687, 18,\r
-  11544, 8933, 10449, 1858, 26818, 9596, 1168, 15545, 5245, 19234,\r
-  29012, 21649, 19667, 21454, 11909, 21148, 23, 18199, 28082, 2367,\r
-  16875, 2467, 25140, 31363, 30724, 26339, 29710, 20329, 17458, 25341,\r
-  6680, 22910, 20378, 26890, 8029, 21168, 23366, 10626, 22465, 20320,\r
-  14817, 15604, 2023, 5816, 5819, 24315, 1105, 21823, 11796, 21869,\r
-  19401, 23978, 23190, 22485, 8448, 27638, 7203, 2852, 26486, 7859,\r
-  31697, 26019, 18329, 6819, 28979, 3884, 24113, 3203, 11483, 4506,\r
+  20648, 16666, 25990, 29997, 29926, 14683, 29199, 749,   30673, 22876,\r
+  4104,  17995, 4122,  14999, 31316, 14510, 4958,  22212, 5148,  32683,\r
+  25515, 20301, 25200, 4126,  22081, 18691, 18737, 1914,  30613, 12303,\r
+  3886,  12125, 20636, 30763, 28045, 24424, 4421,  11538, 11885, 12621,\r
+  17480, 26420, 7881,  15145, 28702, 30895, 22431, 17429, 18768, 26235,\r
+  8786,  9975,  23029, 484,   31822, 22431, 17014, 13886, 32234, 15887,\r
+  30613, 24276, 10386, 23577, 8622,  14625, 24613, 28976, 316,   18243,\r
+  5020,  4216,  31902, 13996, 22765, 23839, 15132, 7963,  46,    24816,\r
+  28965, 11722, 25086, 12581, 16858, 4329,  27937, 21885, 22993, 14156,\r
+  14186, 9615,  10002, 14433, 5598,  4190,  21094, 30820, 22,    557,\r
+  24018, 23766, 17125, 23701, 3166,  9515,  17979, 13524, 30490, 15299,\r
+  27209, 19560, 29539, 4891,  16358, 30685, 11875, 25413, 8242,  26595,\r
+  8663,  23445, 26489, 2211,  17941, 7326,  22362, 27475, 9549,  3676,\r
+  25640, 28168, 13327, 26291, 29072, 5580,  4877,  29720, 17020, 20209,\r
+  7715,  143,   8248,  1957,  27796, 24789, 31955, 22726, 9879,  990,\r
+  5321,  12535, 21522, 5762,  21470, 13811, 2213,  3955,  333,   20513,\r
+  4330,  14194, 30498, 5225,  1275,  450,   26853, 71,    25653, 18653,\r
+  32120, 15389, 7740,  17255, 16450, 22478, 11583, 17760, 11662, 13704,\r
+  9598,  8605,  24109, 5857,  24073, 16249, 5731,  38,    5834,  14536,\r
+  15361, 26095, 16325, 5132,  30670, 22775, 17823, 28396, 1579,  9259,\r
+  1885,  11489, 31479, 4353,  22895, 32307, 31921, 17931, 14829, 21284,\r
+  15068, 29644, 6688,  3946,  9128,  17354, 24900, 4579,  7374,  15844,\r
+  3212,  25733, 17340, 6118,  4199,  10388, 30962, 9051,  24322, 4887,\r
+  15020, 19875, 14350, 3468,  4801,  26181, 9667,  20187, 7115,  8070,\r
+  19237, 137,   24968, 32058, 26502, 17454, 8320,  9690,  13132, 11561,\r
+  10472, 18903, 31220, 658,   26823, 5422,  5463,  23920, 24919, 24381,\r
+  11820, 30508, 2990,  3284,  26063, 15430, 28829, 22672, 19777, 30535,\r
+  30681, 30052, 19823, 10231, 12888, 16249, 25783, 23247, 9214,  28472,\r
+  23976, 5297,  20601, 677,   25353, 9943,  3946,  20718, 5405,  32522,\r
+  27589, 31811, 1062,  18452, 4730,  13801, 13352, 28279, 5205,  2186,\r
+  3567,  23903, 32546, 7376,  24915, 2006,  4630,  11314, 23739, 4663,\r
+  4458,  5645,  7648,  12261, 32073, 19190, 16340, 2364,  12268, 591,\r
+  2626,  15816, 9988,  28184, 9719,  22197, 31832, 24840, 31393, 15751,\r
+  20911, 6876,  6615,  2828,  13296, 12016, 23386, 17038, 14728, 14604,\r
+  3739,  19788, 24588, 21632, 25981, 18988, 27935, 2419,  31835, 1450,\r
+  22167, 9336,  9037,  11796, 30171, 11362, 19623, 6137,  2703,  27226,\r
+  17603, 9951,  20596, 14382, 5889,  11828, 11401, 2284,  17419, 24199,\r
+  13687, 24496, 11614, 4856,  6955,  10426, 23046, 4845,  12741, 10435,\r
+  30888, 7175,  9137,  30353, 17094, 18517, 3859,  13002, 9535,  9415,\r
+  4713,  29190, 21013, 3045,  3180,  3367,  8051,  6336,  4918,  19437,\r
+  22511, 17961, 26282, 7621,  24588, 3618,  25105, 21730, 21763, 7570,\r
+  12545, 6031,  2243,  28733, 19331, 31684, 32566, 26866, 32116, 247,\r
+  20678, 14854, 32044, 23604, 5664,  12802, 21854, 19056, 16695, 16537,\r
+  9791,  23835, 1932,  18397, 491,   29940, 16814, 3506,  26628, 24353,\r
+  25596, 24962, 9372,  18559, 29874, 18994, 5717,  31543, 8996,  20565,\r
+  8134,  6802,  25668, 14496, 18465, 20750, 14442, 17054, 20243, 9393,\r
+  32341, 16293, 14316, 26013, 30573, 5641,  4096,  27365, 24906, 1167,\r
+  29773, 4511,  18554, 14885, 6750,  12858, 30847, 5584,  24687, 18,\r
+  11544, 8933,  10449, 1858,  26818, 9596,  1168,  15545, 5245,  19234,\r
+  29012, 21649, 19667, 21454, 11909, 21148, 23,    18199, 28082, 2367,\r
+  16875, 2467,  25140, 31363, 30724, 26339, 29710, 20329, 17458, 25341,\r
+  6680,  22910, 20378, 26890, 8029,  21168, 23366, 10626, 22465, 20320,\r
+  14817, 15604, 2023,  5816,  5819,  24315, 1105,  21823, 11796, 21869,\r
+  19401, 23978, 23190, 22485, 8448,  27638, 7203,  2852,  26486, 7859,\r
+  31697, 26019, 18329, 6819,  28979, 3884,  24113, 3203,  11483, 4506,\r
   31483, 32041, 27676, 28030, 12948, 11215, 14869, 26388, 18329, 25263,\r
-  16874, 8053, 12045, 31184, 5717, 19981, 13307, 31775, 4702, 11856,\r
-  32348, 8897, 14182, 30121, 314, 6824, 11370, 26035, 5142, 18532,\r
-  17030, 20140, 15240, 32316, 8888, 5671, 25893, 22654, 2279, 5632,\r
-  6821, 13331, 12324, 26517, 28742, 29526, 21551, 28467, 12907, 1319,\r
-  27709, 15311, 5769, 25146, 760, 3831, 29507, 29877, 20424, 8456,\r
-  17364, 7675, 30033, 30112, 31406, 20162, 2365, 21590, 26464, 25964,\r
-  18747, 14761, 13245, 18068, 8519, 21559, 15419, 25575, 26413, 25136,\r
-  18329, 9525, 28488, 777, 25029, 26567, 24208, 20853, 24060, 2036,\r
-  24020, 22929, 17459, 10479, 4675, 16222, 11702, 12003, 32561, 10613,\r
-  21775, 8002, 13592, 17398, 23849, 23386, 29149, 28610, 5045, 26921,\r
-  5717, 29162, 13005, 15986, 5384, 14183, 26071, 16912, 15925, 267,\r
-  5549, 30603, 3350, 2999, 16379, 2281, 23140, 2255, 24040, 8902,\r
-  6174, 31467, 7672, 22183, 31367, 19151, 30000, 30604, 12910, 10398,\r
-  19324, 9412, 7345, 3402, 18255, 30469, 2820, 28751, 31881, 956,\r
-  2543, 1441, 669, 10914, 18454, 6114, 13811, 24976, 701, 21209,\r
-  10379, 29332, 7051, 4640, 1508, 24644, 15246, 2076, 28188, 25682,\r
-  10112, 20786, 3160, 15457, 10569, 18232, 27750, 14615, 12996, 10538,\r
-  21409, 17268, 7622, 27423, 8469, 19554, 11613, 17019, 30948, 23181,\r
-  13397, 16997, 16105, 10868, 1281, 7292, 9370, 5313, 3640, 22981,\r
-  20019, 11989, 18845, 8168, 21265, 22952, 24355, 22173, 7515, 13008,\r
-  8657, 16737, 27880, 7135, 18883, 24941, 349, 19442, 3954, 13288,\r
-  12182, 8071, 3125, 8284, 26184, 6799, 1031, 11111, 26084, 20677,\r
+  16874, 8053,  12045, 31184, 5717,  19981, 13307, 31775, 4702,  11856,\r
+  32348, 8897,  14182, 30121, 314,   6824,  11370, 26035, 5142,  18532,\r
+  17030, 20140, 15240, 32316, 8888,  5671,  25893, 22654, 2279,  5632,\r
+  6821,  13331, 12324, 26517, 28742, 29526, 21551, 28467, 12907, 1319,\r
+  27709, 15311, 5769,  25146, 760,   3831,  29507, 29877, 20424, 8456,\r
+  17364, 7675,  30033, 30112, 31406, 20162, 2365,  21590, 26464, 25964,\r
+  18747, 14761, 13245, 18068, 8519,  21559, 15419, 25575, 26413, 25136,\r
+  18329, 9525,  28488, 777,   25029, 26567, 24208, 20853, 24060, 2036,\r
+  24020, 22929, 17459, 10479, 4675,  16222, 11702, 12003, 32561, 10613,\r
+  21775, 8002,  13592, 17398, 23849, 23386, 29149, 28610, 5045,  26921,\r
+  5717,  29162, 13005, 15986, 5384,  14183, 26071, 16912, 15925, 267,\r
+  5549,  30603, 3350,  2999,  16379, 2281,  23140, 2255,  24040, 8902,\r
+  6174,  31467, 7672,  22183, 31367, 19151, 30000, 30604, 12910, 10398,\r
+  19324, 9412,  7345,  3402,  18255, 30469, 2820,  28751, 31881, 956,\r
+  2543,  1441,  669,   10914, 18454, 6114,  13811, 24976, 701,   21209,\r
+  10379, 29332, 7051,  4640,  1508,  24644, 15246, 2076,  28188, 25682,\r
+  10112, 20786, 3160,  15457, 10569, 18232, 27750, 14615, 12996, 10538,\r
+  21409, 17268, 7622,  27423, 8469,  19554, 11613, 17019, 30948, 23181,\r
+  13397, 16997, 16105, 10868, 1281,  7292,  9370,  5313,  3640,  22981,\r
+  20019, 11989, 18845, 8168,  21265, 22952, 24355, 22173, 7515,  13008,\r
+  8657,  16737, 27880, 7135,  18883, 24941, 349,   19442, 3954,  13288,\r
+  12182, 8071,  3125,  8284,  26184, 6799,  1031,  11111, 26084, 20677,\r
   31882, 16819, 12222, 10301, 17740, 12071, 28782, 10816, 21833, 5727,\r
-  26998, 22103, 8626, 31834, 7718, 11174, 20973, 15475, 18365, 23675,\r
-  29917, 30867, 21713, 24615, 7011, 22948, 30705, 22285, 31781, 13385,\r
-  2440, 29944, 1166, 26060, 16644, 26034, 31510, 32088, 2360, 24530,\r
-  5827, 1384, 29695, 22997, 12271, 383, 4387, 5488, 28237, 29722,\r
-  11389, 29989, 6183, 226, 14173, 20501, 26345, 32551, 24876, 14357,\r
-  1251, 4234, 9039, 26115, 6219, 4089, 17487, 16475, 32641, 27873,\r
-  5687, 12293, 8855, 18078, 29758, 14193, 32273, 23607, 17318, 32742,\r
-  19177, 9288, 31716, 20759, 26583, 8511, 31233, 9976, 26575, 17867,\r
-  9024, 22991, 27082, 32146, 6913, 3214, 7625, 11811, 4069, 21856,\r
-  6935, 17451, 25651, 21634, 27599, 8427, 13691, 11604, 29087, 31721,\r
-  1913, 5552, 1995, 3302, 5691, 28538, 1653, 4625, 4998, 8312,\r
-  2843, 1658, 21367, 7268, 10849, 7369, 11366, 21824, 28433, 21040,\r
-  3599, 1514, 19040, 11678, 5108, 2800, 22899, 32566, 5885, 15781,\r
-  9249, 13311, 610, 1397, 14587, 4573, 28618, 4981, 19081, 28608,\r
-  20149, 31806, 12759, 15899, 6935, 9212, 31280, 29592, 26437, 12482,\r
-  23082, 12810, 15637, 30497, 15843, 14242, 6721, 5368, 18057, 28775,\r
-  3085, 11917, 25376, 15328, 11818, 477, 26239, 15123, 4313, 17457,\r
-  16028, 15028, 19028, 32242, 12554, 3478, 14185, 22718, 16576, 27493,\r
-  12136, 5051, 8476, 10135, 12095, 4652, 23080, 21664, 16356, 14402,\r
-  539, 10085, 7155, 2612, 12323, 12020, 22681, 16786, 3169, 13426,\r
-  5552, 19670, 8501, 22356, 31019, 27964, 20925, 14803, 31157, 26323,\r
-  6552, 20889, 15509, 30420, 31216, 12481, 2773, 1075, 14263, 23294,\r
-  8611, 15989, 20272, 31514, 25079, 7873, 16562, 3235, 9078, 32569,\r
-  6825, 19937, 11927, 15499, 25821, 3594, 8708, 5570, 20727, 11193,\r
-  18243, 15971, 21569, 22429, 6805, 22197, 3757, 28526, 2590, 15968,\r
-  8985, 1318, 12359, 30009, 25809, 26221, 3425, 32349, 32341, 14421,\r
-  1163, 31101, 30045, 31559, 8149, 26232, 12315, 2878, 24485, 18223,\r
-  24512, 28722, 6490, 5013, 29761, 4824, 10544, 13317, 32091, 10632,\r
-  31587, 30169, 7381, 29054, 12440, 11832, 28165, 2118, 24952, 32559,\r
-  1685, 31090, 17822, 29443, 29831, 21646, 16819, 25030, 23927, 24406,\r
-  8407, 21801, 8992, 14374, 32067, 24209, 12578, 31921, 7213, 4973,\r
-  22531, 18678, 16620, 9158, 22899, 8816, 15197, 16151, 2516, 9101,\r
-  13701, 15200, 11001, 31586, 1144, 12918, 25646, 5533, 121, 2461,\r
-  31609, 32443, 10338, 5976, 13344, 22651, 5191, 23424, 30315, 29330,\r
-  31574, 32148, 9387, 23456, 20737, 1360, 16763, 32355, 15712, 385,\r
-  19270, 7978, 29904, 4375, 28938, 19853, 13025, 636, 1115, 7772,\r
-  23663, 32036, 19626, 16853, 3342, 26982, 8135, 18970, 5036, 2698,\r
-  25509, 13794, 8817, 32547, 23902, 4974, 13802, 7071, 29046, 20415,\r
-  30567, 21276, 14692, 1542, 7841, 8829, 4686, 25436, 5792, 12733,\r
-  2325, 29363, 27100, 8068, 18321, 25868, 14755, 11000, 26398, 10731,\r
-  17594, 12246, 19543, 27656, 16711, 10433, 28705, 17992, 3566, 11226,\r
-  14828, 17643, 32315, 5520, 20277, 1799, 17984, 21946, 31823, 5173,\r
-  18815, 4835, 6756, 14986, 20746, 6116, 5815, 2249, 27880, 16313,\r
-  32555, 14550, 1211, 21389, 14345, 7790, 23456, 3863, 16126, 28182,\r
-  2903, 16169, 8035, 28753, 15012, 11910, 31681, 29974, 4852, 21749,\r
-  20629, 7041, 14660, 31891, 21584, 16841, 20031, 20845, 6306, 12658,\r
-  14758, 3918, 20728, 23492, 17653, 16854, 25156, 14971, 18756, 19148,\r
-  8188, 10432, 29803, 8885, 23141, 18520, 26985, 1958, 8721, 18204,\r
-  16391, 3670, 25766, 6313, 10168, 18807, 18146, 30808, 12740, 31559,\r
-  24540, 18289, 1701, 1378, 14733, 7067, 2737, 2778, 14990, 4503,\r
-  13818, 30857, 23843, 14382, 9075, 26534, 22393, 10088, 6996, 3735,\r
-  6444, 6143, 7359, 13318, 16908, 3859, 10915, 22583, 30241, 29215,\r
-  24545, 2201, 13037, 5932, 3757, 4507, 2544, 9541, 28471, 704,\r
-  25714, 22826, 8587, 14582, 13436, 585, 1718, 25380, 14120, 19433,\r
-  13611, 13570, 11290, 9897, 3173, 15405, 9807, 26153, 11213, 2939,\r
-  23062, 26375, 20701, 12427, 3163, 20749, 24710, 10145, 1835, 18856,\r
-  8143, 16817, 14197, 10908, 24512, 12474, 22542, 4343, 8318, 11862,\r
-  19960, 22595, 28599, 28814, 6628, 22016, 1600, 24818, 757, 26962,\r
-  26877, 18922, 24263, 13046, 4354, 28231, 6832, 2426, 24311, 16157,\r
-  27206, 32174, 24001, 9173, 16161, 854, 6239, 2174, 28130, 4641,\r
-  1809, 9828, 9331, 21215, 22464, 15076, 5521, 11502, 5530, 8318,\r
-  32136, 18421, 29693, 32300, 25662, 21973, 16534, 242, 16499, 14557,\r
+  26998, 22103, 8626,  31834, 7718,  11174, 20973, 15475, 18365, 23675,\r
+  29917, 30867, 21713, 24615, 7011,  22948, 30705, 22285, 31781, 13385,\r
+  2440,  29944, 1166,  26060, 16644, 26034, 31510, 32088, 2360,  24530,\r
+  5827,  1384,  29695, 22997, 12271, 383,   4387,  5488,  28237, 29722,\r
+  11389, 29989, 6183,  226,   14173, 20501, 26345, 32551, 24876, 14357,\r
+  1251,  4234,  9039,  26115, 6219,  4089,  17487, 16475, 32641, 27873,\r
+  5687,  12293, 8855,  18078, 29758, 14193, 32273, 23607, 17318, 32742,\r
+  19177, 9288,  31716, 20759, 26583, 8511,  31233, 9976,  26575, 17867,\r
+  9024,  22991, 27082, 32146, 6913,  3214,  7625,  11811, 4069,  21856,\r
+  6935,  17451, 25651, 21634, 27599, 8427,  13691, 11604, 29087, 31721,\r
+  1913,  5552,  1995,  3302,  5691,  28538, 1653,  4625,  4998,  8312,\r
+  2843,  1658,  21367, 7268,  10849, 7369,  11366, 21824, 28433, 21040,\r
+  3599,  1514,  19040, 11678, 5108,  2800,  22899, 32566, 5885,  15781,\r
+  9249,  13311, 610,   1397,  14587, 4573,  28618, 4981,  19081, 28608,\r
+  20149, 31806, 12759, 15899, 6935,  9212,  31280, 29592, 26437, 12482,\r
+  23082, 12810, 15637, 30497, 15843, 14242, 6721,  5368,  18057, 28775,\r
+  3085,  11917, 25376, 15328, 11818, 477,   26239, 15123, 4313,  17457,\r
+  16028, 15028, 19028, 32242, 12554, 3478,  14185, 22718, 16576, 27493,\r
+  12136, 5051,  8476,  10135, 12095, 4652,  23080, 21664, 16356, 14402,\r
+  539,   10085, 7155,  2612,  12323, 12020, 22681, 16786, 3169,  13426,\r
+  5552,  19670, 8501,  22356, 31019, 27964, 20925, 14803, 31157, 26323,\r
+  6552,  20889, 15509, 30420, 31216, 12481, 2773,  1075,  14263, 23294,\r
+  8611,  15989, 20272, 31514, 25079, 7873,  16562, 3235,  9078,  32569,\r
+  6825,  19937, 11927, 15499, 25821, 3594,  8708,  5570,  20727, 11193,\r
+  18243, 15971, 21569, 22429, 6805,  22197, 3757,  28526, 2590,  15968,\r
+  8985,  1318,  12359, 30009, 25809, 26221, 3425,  32349, 32341, 14421,\r
+  1163,  31101, 30045, 31559, 8149,  26232, 12315, 2878,  24485, 18223,\r
+  24512, 28722, 6490,  5013,  29761, 4824,  10544, 13317, 32091, 10632,\r
+  31587, 30169, 7381,  29054, 12440, 11832, 28165, 2118,  24952, 32559,\r
+  1685,  31090, 17822, 29443, 29831, 21646, 16819, 25030, 23927, 24406,\r
+  8407,  21801, 8992,  14374, 32067, 24209, 12578, 31921, 7213,  4973,\r
+  22531, 18678, 16620, 9158,  22899, 8816,  15197, 16151, 2516,  9101,\r
+  13701, 15200, 11001, 31586, 1144,  12918, 25646, 5533,  121,   2461,\r
+  31609, 32443, 10338, 5976,  13344, 22651, 5191,  23424, 30315, 29330,\r
+  31574, 32148, 9387,  23456, 20737, 1360,  16763, 32355, 15712, 385,\r
+  19270, 7978,  29904, 4375,  28938, 19853, 13025, 636,   1115,  7772,\r
+  23663, 32036, 19626, 16853, 3342,  26982, 8135,  18970, 5036,  2698,\r
+  25509, 13794, 8817,  32547, 23902, 4974,  13802, 7071,  29046, 20415,\r
+  30567, 21276, 14692, 1542,  7841,  8829,  4686,  25436, 5792,  12733,\r
+  2325,  29363, 27100, 8068,  18321, 25868, 14755, 11000, 26398, 10731,\r
+  17594, 12246, 19543, 27656, 16711, 10433, 28705, 17992, 3566,  11226,\r
+  14828, 17643, 32315, 5520,  20277, 1799,  17984, 21946, 31823, 5173,\r
+  18815, 4835,  6756,  14986, 20746, 6116,  5815,  2249,  27880, 16313,\r
+  32555, 14550, 1211,  21389, 14345, 7790,  23456, 3863,  16126, 28182,\r
+  2903,  16169, 8035,  28753, 15012, 11910, 31681, 29974, 4852,  21749,\r
+  20629, 7041,  14660, 31891, 21584, 16841, 20031, 20845, 6306,  12658,\r
+  14758, 3918,  20728, 23492, 17653, 16854, 25156, 14971, 18756, 19148,\r
+  8188,  10432, 29803, 8885,  23141, 18520, 26985, 1958,  8721,  18204,\r
+  16391, 3670,  25766, 6313,  10168, 18807, 18146, 30808, 12740, 31559,\r
+  24540, 18289, 1701,  1378,  14733, 7067,  2737,  2778,  14990, 4503,\r
+  13818, 30857, 23843, 14382, 9075,  26534, 22393, 10088, 6996,  3735,\r
+  6444,  6143,  7359,  13318, 16908, 3859,  10915, 22583, 30241, 29215,\r
+  24545, 2201,  13037, 5932,  3757,  4507,  2544,  9541,  28471, 704,\r
+  25714, 22826, 8587,  14582, 13436, 585,   1718,  25380, 14120, 19433,\r
+  13611, 13570, 11290, 9897,  3173,  15405, 9807,  26153, 11213, 2939,\r
+  23062, 26375, 20701, 12427, 3163,  20749, 24710, 10145, 1835,  18856,\r
+  8143,  16817, 14197, 10908, 24512, 12474, 22542, 4343,  8318,  11862,\r
+  19960, 22595, 28599, 28814, 6628,  22016, 1600,  24818, 757,   26962,\r
+  26877, 18922, 24263, 13046, 4354,  28231, 6832,  2426,  24311, 16157,\r
+  27206, 32174, 24001, 9173,  16161, 854,   6239,  2174,  28130, 4641,\r
+  1809,  9828,  9331,  21215, 22464, 15076, 5521,  11502, 5530,  8318,\r
+  32136, 18421, 29693, 32300, 25662, 21973, 16534, 242,   16499, 14557,\r
   16586, 21431, 24647, 23102, 32340, 18771, 15101, 17598, 18224, 27881,\r
-  4094, 22448, 25784, 27767, 30497, 9763, 19982, 4523, 17961, 22106,\r
-  22969, 15609, 28560, 5500, 12947, 5866, 16003, 29581, 5090, 27575,\r
-  5165, 15261, 4293, 25878, 2616, 7231, 27346, 5716, 7825, 13373,\r
-  15357, 3748, 19564, 22410, 30651, 26039, 13961, 8312, 1896, 30348,\r
-  18101, 8491, 1510, 15498, 26259, 18766, 24200, 1740, 13724, 21508,\r
-  21294, 30140, 24677, 21026, 11697, 30435, 32032, 9371, 8321, 13055,\r
-  4454, 31548, 6796, 8790, 9524, 11161, 4706, 15179, 1843, 29767,\r
-  3223, 28463, 9788, 75, 24937, 26969, 9243, 16083, 1443, 17529,\r
-  1427, 25380, 23234, 10793, 9123, 8404, 19029, 4293, 16904, 30777,\r
-  12458, 2941, 28419, 10017, 23206, 24744, 4188, 4547, 6901, 23131,\r
-  16807, 14326, 14948, 1339, 26566, 2721, 18314, 20879, 7599, 13683,\r
-  2478, 19098, 24176, 12500, 6885, 22567, 4208, 12315, 28027, 15973,\r
-  22007, 16385, 16532, 20469, 18160, 10581, 18451, 1602, 30702, 27634,\r
-  3003, 29713, 29294, 26095, 16788, 18009, 604, 31509, 10129, 18260,\r
-  31960, 20630, 8303, 6102, 25657, 28923, 6112, 4830, 3410, 27743,\r
-  29161, 3946, 10741, 18651, 2441, 29840, 23734, 22337, 667, 21451,\r
-  14833, 16397, 29437, 32147, 23055, 23704, 9970, 17456, 24836, 12431,\r
-  1221, 24783, 7964, 6052, 21424, 11990, 12024, 31619, 27131, 12661,\r
-  13523, 9736, 1640, 6013, 8971, 943, 22735, 12662, 10204, 27212,\r
-  32262, 3564, 10350, 14332, 29443, 12297, 27922, 24155, 17221, 5225,\r
-  25288, 11767, 30320, 30761, 5638, 30213, 311, 5697, 19124, 19539,\r
-  15742, 20244, 21883, 4478, 11712, 28230, 6719, 1381, 4015, 718,\r
-  21482, 32733, 539, 32076, 2412, 8615, 16917, 2204, 21504, 4511,\r
-  17236, 20651, 23216, 6709, 10200, 11145, 10011, 15137, 23244, 22720,\r
-  14198, 851, 21169, 19173, 29137, 18217, 16057, 12140, 23707, 1765,\r
-  9073, 10432, 16489, 6494, 10915, 28308, 5875, 28406, 10875, 18547,\r
-  27487, 203, 10216, 5791, 4035, 16434, 22597, 23832, 19429, 6753,\r
-  26169, 1275, 26949, 25707, 32220, 18445, 16477, 17266, 25627, 31384,\r
-  11047, 25879, 7517, 10102, 224, 7222, 26471, 12907, 32524, 13777,\r
-  2684, 29880, 17338, 6729, 17865, 2028, 15625, 3796, 23297, 13054,\r
+  4094,  22448, 25784, 27767, 30497, 9763,  19982, 4523,  17961, 22106,\r
+  22969, 15609, 28560, 5500,  12947, 5866,  16003, 29581, 5090,  27575,\r
+  5165,  15261, 4293,  25878, 2616,  7231,  27346, 5716,  7825,  13373,\r
+  15357, 3748,  19564, 22410, 30651, 26039, 13961, 8312,  1896,  30348,\r
+  18101, 8491,  1510,  15498, 26259, 18766, 24200, 1740,  13724, 21508,\r
+  21294, 30140, 24677, 21026, 11697, 30435, 32032, 9371,  8321,  13055,\r
+  4454,  31548, 6796,  8790,  9524,  11161, 4706,  15179, 1843,  29767,\r
+  3223,  28463, 9788,  75,    24937, 26969, 9243,  16083, 1443,  17529,\r
+  1427,  25380, 23234, 10793, 9123,  8404,  19029, 4293,  16904, 30777,\r
+  12458, 2941,  28419, 10017, 23206, 24744, 4188,  4547,  6901,  23131,\r
+  16807, 14326, 14948, 1339,  26566, 2721,  18314, 20879, 7599,  13683,\r
+  2478,  19098, 24176, 12500, 6885,  22567, 4208,  12315, 28027, 15973,\r
+  22007, 16385, 16532, 20469, 18160, 10581, 18451, 1602,  30702, 27634,\r
+  3003,  29713, 29294, 26095, 16788, 18009, 604,   31509, 10129, 18260,\r
+  31960, 20630, 8303,  6102,  25657, 28923, 6112,  4830,  3410,  27743,\r
+  29161, 3946,  10741, 18651, 2441,  29840, 23734, 22337, 667,   21451,\r
+  14833, 16397, 29437, 32147, 23055, 23704, 9970,  17456, 24836, 12431,\r
+  1221,  24783, 7964,  6052,  21424, 11990, 12024, 31619, 27131, 12661,\r
+  13523, 9736,  1640,  6013,  8971,  943,   22735, 12662, 10204, 27212,\r
+  32262, 3564,  10350, 14332, 29443, 12297, 27922, 24155, 17221, 5225,\r
+  25288, 11767, 30320, 30761, 5638,  30213, 311,   5697,  19124, 19539,\r
+  15742, 20244, 21883, 4478,  11712, 28230, 6719,  1381,  4015,  718,\r
+  21482, 32733, 539,   32076, 2412,  8615,  16917, 2204,  21504, 4511,\r
+  17236, 20651, 23216, 6709,  10200, 11145, 10011, 15137, 23244, 22720,\r
+  14198, 851,   21169, 19173, 29137, 18217, 16057, 12140, 23707, 1765,\r
+  9073,  10432, 16489, 6494,  10915, 28308, 5875,  28406, 10875, 18547,\r
+  27487, 203,   10216, 5791,  4035,  16434, 22597, 23832, 19429, 6753,\r
+  26169, 1275,  26949, 25707, 32220, 18445, 16477, 17266, 25627, 31384,\r
+  11047, 25879, 7517,  10102, 224,   7222,  26471, 12907, 32524, 13777,\r
+  2684,  29880, 17338, 6729,  17865, 2028,  15625, 3796,  23297, 13054,\r
   12779, 11051, 32069, 11673, 18473, 22403, 10054, 11703, 11175, 26303,\r
-  7341, 29553, 15082, 8420, 6843, 18197, 23767, 20941, 31788, 7546,\r
-  25533, 12320, 21602, 22160, 8598, 12416, 17855, 19003, 4490, 6404,\r
-  5971, 5986, 15029, 26856, 19895, 26947, 12330, 26755, 19256, 9993,\r
-  21048, 30073, 15160, 16800, 13548, 24370, 19666, 5064, 20438, 26507,\r
-  189, 2152, 23312, 15307, 3699, 31525, 32125, 31192, 9362, 1844,\r
-  12367, 5547, 2178, 14444, 31692, 13057, 22872, 21152, 29009, 18259,\r
-  31226, 9003, 1687, 6153, 26244, 4300, 13877, 26859, 30955, 23989,\r
-  2406, 28376, 24801, 20446, 28429, 23226, 21240, 13215, 1014, 4281,\r
-  13065, 27774, 12383, 24495, 15831, 2118, 16055, 19676, 30192, 2137,\r
-  20389, 18396, 22484, 21830, 20300, 23253, 6489, 4254, 20430, 10997,\r
-  30798, 14596, 27918, 23836, 23647, 21636, 7611, 13013, 20536, 5414,\r
-  5514, 29579, 5614, 11202, 7362, 30202, 23194, 15637, 254, 24035,\r
-  19783, 11541, 814, 25092, 7438, 13442, 26336, 11847, 8831, 29886,\r
-  1726, 13882, 14403, 32222, 4695, 3007, 1792, 31489, 22818, 3589,\r
-  18557, 30944, 18111, 1206, 17927, 31399, 29825, 31602, 5651, 20740,\r
-  29738, 29053, 23844, 26493, 14325, 12724, 5615, 31750, 15322, 26310,\r
-  9405, 29907, 21517, 16288, 14866, 18539, 17608, 14377, 18572, 11262,\r
-  1866, 23088, 4621, 31736, 24608, 2722, 4125, 4822, 10915, 14081,\r
-  15241, 568, 32194, 30481, 30544, 25144, 3585, 30421, 8896, 11003,\r
-  28866, 15545, 5853, 19589, 9411, 8209, 4866, 30930, 1001, 962,\r
-  23755, 21538, 572, 10559, 5937, 32660, 24114, 12216, 5367, 12790,\r
-  9776, 5006, 10822, 21212, 14158, 16905, 16788, 19439, 6491, 5453,\r
-  14282, 1160, 23585, 19594, 17317, 15230, 23017, 21620, 27740, 13116,\r
-  834, 29683, 21380, 25622, 6143, 12571, 22065, 10461, 29055, 606,\r
-  18783, 6576, 16945, 8192, 21904, 2326, 28246, 2508, 13750, 22346,\r
-  25097, 5382, 23890, 4054, 2173, 5792, 18910, 1379, 18567, 32176,\r
-  873, 24528, 10844, 29218, 4225, 20609, 2715, 19370, 24917, 24826,\r
-  32398, 29949, 30235, 4012, 19885, 3905, 17584, 12046, 9315, 27074,\r
-  8574, 15088, 25621, 8678, 12195, 6157, 13409, 32611, 7248, 29151,\r
-  14755, 24751, 10606, 10935, 5310, 19385, 19336, 4620, 4121, 30422,\r
-  24293, 21779, 7655, 24062, 14324, 23953, 2988, 14392, 4846, 4846,\r
-  3836, 24915, 9910, 12682, 3974, 3031, 24324, 11348, 21074, 20283,\r
-  450, 19608, 27207, 26200, 17334, 1048, 4592, 12830, 4194, 9567,\r
-  21120, 21638, 2344, 30290, 7187, 30663, 32690, 20744, 13110, 5581,\r
-  28561, 18139, 6058, 21479, 15140, 31167, 18533, 18112, 12220, 8147,\r
-  2266, 12944, 5373, 25910, 2938, 7059, 19336, 8220, 9595, 15035,\r
-  16087, 2849, 28632, 10914, 11879, 31197, 31129, 24770, 4637, 15288,\r
-  28500, 18152, 7651, 8447, 23540, 2278, 10386, 22072, 26297, 27272,\r
-  31252, 2483, 12928, 14794, 17610, 3938, 16965, 12616, 20011, 30442,\r
-  1766, 24310, 2734, 18426, 31273, 25361, 12522, 22748, 27393, 6998,\r
-  2044, 29514, 24333, 3697, 29994, 15234, 11618, 11192, 3270, 3485,\r
-  13962, 13081, 10836, 17692, 24012, 22865, 21487, 8900, 10158, 31839,\r
-  27880, 17580, 8633, 31801, 31665, 25748, 30588, 3005, 1785, 20600,\r
-  22740, 3562, 19993, 20837, 5482, 21328, 24751, 29836, 4476, 19397,\r
-  22920, 27285, 30689, 90, 16580, 28981, 19783, 27022, 22836, 31491,\r
-  18624, 30145, 23815, 2439, 5501, 21483, 28070, 28052, 25048, 22157,\r
-  15068, 25048, 24472, 744, 9530, 13234, 6513, 8302, 24506, 28227,\r
+  7341,  29553, 15082, 8420,  6843,  18197, 23767, 20941, 31788, 7546,\r
+  25533, 12320, 21602, 22160, 8598,  12416, 17855, 19003, 4490,  6404,\r
+  5971,  5986,  15029, 26856, 19895, 26947, 12330, 26755, 19256, 9993,\r
+  21048, 30073, 15160, 16800, 13548, 24370, 19666, 5064,  20438, 26507,\r
+  189,   2152,  23312, 15307, 3699,  31525, 32125, 31192, 9362,  1844,\r
+  12367, 5547,  2178,  14444, 31692, 13057, 22872, 21152, 29009, 18259,\r
+  31226, 9003,  1687,  6153,  26244, 4300,  13877, 26859, 30955, 23989,\r
+  2406,  28376, 24801, 20446, 28429, 23226, 21240, 13215, 1014,  4281,\r
+  13065, 27774, 12383, 24495, 15831, 2118,  16055, 19676, 30192, 2137,\r
+  20389, 18396, 22484, 21830, 20300, 23253, 6489,  4254,  20430, 10997,\r
+  30798, 14596, 27918, 23836, 23647, 21636, 7611,  13013, 20536, 5414,\r
+  5514,  29579, 5614,  11202, 7362,  30202, 23194, 15637, 254,   24035,\r
+  19783, 11541, 814,   25092, 7438,  13442, 26336, 11847, 8831,  29886,\r
+  1726,  13882, 14403, 32222, 4695,  3007,  1792,  31489, 22818, 3589,\r
+  18557, 30944, 18111, 1206,  17927, 31399, 29825, 31602, 5651,  20740,\r
+  29738, 29053, 23844, 26493, 14325, 12724, 5615,  31750, 15322, 26310,\r
+  9405,  29907, 21517, 16288, 14866, 18539, 17608, 14377, 18572, 11262,\r
+  1866,  23088, 4621,  31736, 24608, 2722,  4125,  4822,  10915, 14081,\r
+  15241, 568,   32194, 30481, 30544, 25144, 3585,  30421, 8896,  11003,\r
+  28866, 15545, 5853,  19589, 9411,  8209,  4866,  30930, 1001,  962,\r
+  23755, 21538, 572,   10559, 5937,  32660, 24114, 12216, 5367,  12790,\r
+  9776,  5006,  10822, 21212, 14158, 16905, 16788, 19439, 6491,  5453,\r
+  14282, 1160,  23585, 19594, 17317, 15230, 23017, 21620, 27740, 13116,\r
+  834,   29683, 21380, 25622, 6143,  12571, 22065, 10461, 29055, 606,\r
+  18783, 6576,  16945, 8192,  21904, 2326,  28246, 2508,  13750, 22346,\r
+  25097, 5382,  23890, 4054,  2173,  5792,  18910, 1379,  18567, 32176,\r
+  873,   24528, 10844, 29218, 4225,  20609, 2715,  19370, 24917, 24826,\r
+  32398, 29949, 30235, 4012,  19885, 3905,  17584, 12046, 9315,  27074,\r
+  8574,  15088, 25621, 8678,  12195, 6157,  13409, 32611, 7248,  29151,\r
+  14755, 24751, 10606, 10935, 5310,  19385, 19336, 4620,  4121,  30422,\r
+  24293, 21779, 7655,  24062, 14324, 23953, 2988,  14392, 4846,  4846,\r
+  3836,  24915, 9910,  12682, 3974,  3031,  24324, 11348, 21074, 20283,\r
+  450,   19608, 27207, 26200, 17334, 1048,  4592,  12830, 4194,  9567,\r
+  21120, 21638, 2344,  30290, 7187,  30663, 32690, 20744, 13110, 5581,\r
+  28561, 18139, 6058,  21479, 15140, 31167, 18533, 18112, 12220, 8147,\r
+  2266,  12944, 5373,  25910, 2938,  7059,  19336, 8220,  9595,  15035,\r
+  16087, 2849,  28632, 10914, 11879, 31197, 31129, 24770, 4637,  15288,\r
+  28500, 18152, 7651,  8447,  23540, 2278,  10386, 22072, 26297, 27272,\r
+  31252, 2483,  12928, 14794, 17610, 3938,  16965, 12616, 20011, 30442,\r
+  1766,  24310, 2734,  18426, 31273, 25361, 12522, 22748, 27393, 6998,\r
+  2044,  29514, 24333, 3697,  29994, 15234, 11618, 11192, 3270,  3485,\r
+  13962, 13081, 10836, 17692, 24012, 22865, 21487, 8900,  10158, 31839,\r
+  27880, 17580, 8633,  31801, 31665, 25748, 30588, 3005,  1785,  20600,\r
+  22740, 3562,  19993, 20837, 5482,  21328, 24751, 29836, 4476,  19397,\r
+  22920, 27285, 30689, 90,    16580, 28981, 19783, 27022, 22836, 31491,\r
+  18624, 30145, 23815, 2439,  5501,  21483, 28070, 28052, 25048, 22157,\r
+  15068, 25048, 24472, 744,   9530,  13234, 6513,  8302,  24506, 28227,\r
   16843, 23670, 21666, 15304, 24261, 22067, 20907, 28967, 30584, 9959,\r
-  16227, 30663, 9856, 14932, 26576, 2469, 13753, 2931, 4182, 29605,\r
-  10054, 6505, 27354, 21030, 20440, 10423, 8744, 31704, 26156, 9393,\r
-  1426, 3794, 11222, 13617, 6106, 21471, 4926, 23692, 1363, 27673,\r
-  1768, 12741, 17730, 31930, 13816, 2817, 27274, 19758, 2549, 11323,\r
-  26505, 2925, 10701, 20025, 18749, 10887, 11801, 4543, 11691, 3968,\r
-  27299, 13058, 31105, 95, 28965, 4447, 4346, 2434, 12628, 24397,\r
-  6146, 19764, 23069, 3729, 32155, 29058, 24623, 19633, 22143, 8266,\r
-  19897, 9130, 19206, 19860, 16245, 4837, 7243, 14373, 13029, 13416,\r
-  1162, 22610, 2525, 16970, 30413, 12563, 26433, 4201, 456, 14168,\r
-  18704, 20063, 23041, 17312, 929, 9649, 20276, 16839, 557, 2122,\r
-  12533, 4895, 28814, 17192, 26263, 22211, 12870, 10582, 15949, 3112,\r
-  19139, 27418, 14223, 17397, 6882, 28015, 19647, 21269, 6065, 13749,\r
-  13, 15370, 24185, 15784, 12184, 17028, 18940, 17295, 29909, 23858,\r
-  27899, 27317, 4917, 31192, 5627, 16413, 14850, 18338, 16457, 30578,\r
-  7562, 31672, 5692, 29757, 11136, 17426, 26810, 29531, 24223, 23694,\r
-  16381, 26797, 30096, 31295, 27031, 25873, 4366, 264, 10164, 6289,\r
-  32072, 14186, 26016, 17627, 10887, 27803, 5513, 13297, 6416, 17624,\r
-  7045, 1826, 15436, 8187, 27095, 29241, 6438, 20048, 12910, 14068,\r
-  9141, 1957, 20910, 29880, 8219, 22688, 22131, 8322, 2733, 31318,\r
-  19283, 14625, 19284, 18456, 9508, 2979, 14386, 18320, 31422, 7181,\r
-  11145, 30478, 27138, 1615, 12505, 22044, 19996, 27510, 3401, 23640,\r
-  11012, 16164, 10056, 21123, 29259, 2365, 4468, 16853, 1300, 28644,\r
-  15547, 28051, 5985, 7590, 5568, 2788, 22672, 22516, 4480, 10977,\r
-  1317, 22999, 27957, 2795, 17865, 18143, 9595, 16193, 32659, 19037,\r
-  26801, 27601, 31111, 14033, 2210, 32591, 31580, 14758, 12132, 9349,\r
-  18819, 30493, 23425, 24042, 8804, 8840, 26453, 32629, 8427, 26296,\r
-  8119, 31411, 10307, 12984, 11740, 12568, 15585, 16060, 22647, 16531,\r
-  28357, 23892, 24613, 32356, 14588, 27877, 31497, 5170, 31338, 32090,\r
-  13235, 29528, 27590, 32279, 12103, 4737, 14054, 2094, 7899, 10612,\r
-  4925, 6358, 24608, 24369, 2978, 20505, 4421, 7740, 20818, 1996,\r
-  7192, 825, 16441, 22212, 31855, 6585, 30829, 21575, 17862, 23380,\r
-  12540, 12225, 11305, 9464, 10215, 28856, 5205, 5760, 21358, 29442,\r
-  28442, 4232, 14478, 29494, 25603, 17536, 2761, 16224, 3897, 2816,\r
-  31013, 24569, 22181, 29787, 19575, 19734, 6741, 18295, 15073, 991,\r
-  17441, 25308, 5274, 4163, 31374, 13322, 11757, 24298, 31474, 14608,\r
-  10885, 27499, 24281, 16474, 3559, 7872, 20648, 23243, 13632, 29175,\r
-  29568, 13324, 7777, 10537, 613, 17699, 8200, 15024, 27296, 5447,\r
-  30561, 13973, 25953, 31986, 20172, 16968, 21673, 7993, 8673, 31892,\r
-  26471, 3417, 8881, 24017, 18658, 18578, 1103, 26716, 24406, 5688,\r
-  20112, 15684, 24034, 23047, 7950, 26950, 11681, 27319, 31603, 32252,\r
-  29208, 5328, 6388, 19281, 11472, 16320, 15643, 19768, 17475, 26922,\r
-  7114, 8606, 29181, 27266, 22141, 6812, 23547, 15575, 207, 16626,\r
+  16227, 30663, 9856,  14932, 26576, 2469,  13753, 2931,  4182,  29605,\r
+  10054, 6505,  27354, 21030, 20440, 10423, 8744,  31704, 26156, 9393,\r
+  1426,  3794,  11222, 13617, 6106,  21471, 4926,  23692, 1363,  27673,\r
+  1768,  12741, 17730, 31930, 13816, 2817,  27274, 19758, 2549,  11323,\r
+  26505, 2925,  10701, 20025, 18749, 10887, 11801, 4543,  11691, 3968,\r
+  27299, 13058, 31105, 95,    28965, 4447,  4346,  2434,  12628, 24397,\r
+  6146,  19764, 23069, 3729,  32155, 29058, 24623, 19633, 22143, 8266,\r
+  19897, 9130,  19206, 19860, 16245, 4837,  7243,  14373, 13029, 13416,\r
+  1162,  22610, 2525,  16970, 30413, 12563, 26433, 4201,  456,   14168,\r
+  18704, 20063, 23041, 17312, 929,   9649,  20276, 16839, 557,   2122,\r
+  12533, 4895,  28814, 17192, 26263, 22211, 12870, 10582, 15949, 3112,\r
+  19139, 27418, 14223, 17397, 6882,  28015, 19647, 21269, 6065,  13749,\r
+  13,    15370, 24185, 15784, 12184, 17028, 18940, 17295, 29909, 23858,\r
+  27899, 27317, 4917,  31192, 5627,  16413, 14850, 18338, 16457, 30578,\r
+  7562,  31672, 5692,  29757, 11136, 17426, 26810, 29531, 24223, 23694,\r
+  16381, 26797, 30096, 31295, 27031, 25873, 4366,  264,   10164, 6289,\r
+  32072, 14186, 26016, 17627, 10887, 27803, 5513,  13297, 6416,  17624,\r
+  7045,  1826,  15436, 8187,  27095, 29241, 6438,  20048, 12910, 14068,\r
+  9141,  1957,  20910, 29880, 8219,  22688, 22131, 8322,  2733,  31318,\r
+  19283, 14625, 19284, 18456, 9508,  2979,  14386, 18320, 31422, 7181,\r
+  11145, 30478, 27138, 1615,  12505, 22044, 19996, 27510, 3401,  23640,\r
+  11012, 16164, 10056, 21123, 29259, 2365,  4468,  16853, 1300,  28644,\r
+  15547, 28051, 5985,  7590,  5568,  2788,  22672, 22516, 4480,  10977,\r
+  1317,  22999, 27957, 2795,  17865, 18143, 9595,  16193, 32659, 19037,\r
+  26801, 27601, 31111, 14033, 2210,  32591, 31580, 14758, 12132, 9349,\r
+  18819, 30493, 23425, 24042, 8804,  8840,  26453, 32629, 8427,  26296,\r
+  8119,  31411, 10307, 12984, 11740, 12568, 15585, 16060, 22647, 16531,\r
+  28357, 23892, 24613, 32356, 14588, 27877, 31497, 5170,  31338, 32090,\r
+  13235, 29528, 27590, 32279, 12103, 4737,  14054, 2094,  7899,  10612,\r
+  4925,  6358,  24608, 24369, 2978,  20505, 4421,  7740,  20818, 1996,\r
+  7192,  825,   16441, 22212, 31855, 6585,  30829, 21575, 17862, 23380,\r
+  12540, 12225, 11305, 9464,  10215, 28856, 5205,  5760,  21358, 29442,\r
+  28442, 4232,  14478, 29494, 25603, 17536, 2761,  16224, 3897,  2816,\r
+  31013, 24569, 22181, 29787, 19575, 19734, 6741,  18295, 15073, 991,\r
+  17441, 25308, 5274,  4163,  31374, 13322, 11757, 24298, 31474, 14608,\r
+  10885, 27499, 24281, 16474, 3559,  7872,  20648, 23243, 13632, 29175,\r
+  29568, 13324, 7777,  10537, 613,   17699, 8200,  15024, 27296, 5447,\r
+  30561, 13973, 25953, 31986, 20172, 16968, 21673, 7993,  8673,  31892,\r
+  26471, 3417,  8881,  24017, 18658, 18578, 1103,  26716, 24406, 5688,\r
+  20112, 15684, 24034, 23047, 7950,  26950, 11681, 27319, 31603, 32252,\r
+  29208, 5328,  6388,  19281, 11472, 16320, 15643, 19768, 17475, 26922,\r
+  7114,  8606,  29181, 27266, 22141, 6812,  23547, 15575, 207,   16626,\r
   23895, 12015, 20032, 23217, 16935, 16793, 19765, 18999, 31394, 7743,\r
-  21312, 22880, 2436, 23483, 32418, 17659, 12724, 1387, 28942, 7291,\r
-  10020, 6280, 10160, 18927, 18169, 27571, 5230, 22069, 6893, 13521,\r
-  23662, 15722, 11249, 8473, 24536, 26532, 26646, 13163, 28381, 6628,\r
-  8109, 23780, 20472, 29510, 23981, 943, 31603, 19067, 8022, 27678,\r
-  12334, 32633, 12052, 14329, 17820, 5489, 9894, 28694, 24334, 10498,\r
-  23679, 19497, 25652, 5804, 16493, 11486, 25312, 25991, 27512, 31781,\r
+  21312, 22880, 2436,  23483, 32418, 17659, 12724, 1387,  28942, 7291,\r
+  10020, 6280,  10160, 18927, 18169, 27571, 5230,  22069, 6893,  13521,\r
+  23662, 15722, 11249, 8473,  24536, 26532, 26646, 13163, 28381, 6628,\r
+  8109,  23780, 20472, 29510, 23981, 943,   31603, 19067, 8022,  27678,\r
+  12334, 32633, 12052, 14329, 17820, 5489,  9894,  28694, 24334, 10498,\r
+  23679, 19497, 25652, 5804,  16493, 11486, 25312, 25991, 27512, 31781,\r
   15886, 18997, 26381, 26573, 20002, 22037, 28508, 10837, 22128, 9913,\r
   13566, 22015, 29697, 10651, 25051, 22053, 27028, 18443, 25931, 6864,\r
-  27876, 3948, 19323, 8839, 22825, 10656, 9235, 22117, 27361, 14785,\r
-  15381, 27759, 26832, 28946, 12040, 17444, 24134, 28725, 4951, 29013,\r
-  19104, 18590, 17908, 26934, 27153, 12871, 6464, 1462, 31651, 18853,\r
+  27876, 3948,  19323, 8839,  22825, 10656, 9235,  22117, 27361, 14785,\r
+  15381, 27759, 26832, 28946, 12040, 17444, 24134, 28725, 4951,  29013,\r
+  19104, 18590, 17908, 26934, 27153, 12871, 6464,  1462,  31651, 18853,\r
   27439, 21260, 10360, 27100, 26279, 23442, 28758, 30511, 29738, 26071,\r
-  16227, 11706, 7605, 22767, 4396, 18531, 27112, 15118, 17644, 5134,\r
-  29286, 32342, 1804, 17168, 14719, 4076, 29670, 5350, 781, 23889,\r
-  22478, 9768, 13467, 17392, 12371, 31928, 205, 7923, 21186, 9279,\r
-  25084, 26459, 23532, 28378, 10272, 6736, 19753, 11792, 7667, 22965,\r
-  31389, 30728, 2387, 31488, 11962, 19704, 2792, 30793, 9990, 12513,\r
-  8456, 30624, 19999, 3450, 20951, 23716, 22268, 28777, 16563, 6226,\r
-  7541, 31161, 13007, 11034, 28678, 3721, 18205, 3384, 9936, 9217,\r
-  25970, 28993, 11232, 13963, 10469, 5372, 22708, 16703, 18808, 5236,\r
-  19707, 18846, 18682, 29515, 8861, 21380, 26411, 20561, 8955, 20824,\r
-  8482, 30549, 24952, 25734, 16364, 17724, 24376, 559, 14966, 4688,\r
-  7208, 20511, 28332, 5850, 14654, 19967, 30179, 32242, 4098, 7883,\r
-  6260, 6806, 25421, 1671, 9386, 29434, 3408, 28718, 11487, 5663,\r
-  20185, 4076, 28897, 28583, 9170, 30092, 30363, 3560, 16650, 9012,\r
-  5617, 3647, 7993, 31824, 31723, 9126, 14142, 8396, 26902, 27529,\r
-  21418, 2182, 12071, 1238, 7042, 29443, 12770, 7508, 14913, 32609,\r
-  28474, 26933, 18717, 140, 21178, 14574, 23947, 25013, 22563, 8518,\r
-  24837, 12032, 16727, 27053, 5643, 5757, 25461, 13520, 28264, 30042,\r
-  20294, 5994, 5814, 17751, 22744, 4445, 23332, 32377, 17000, 7425,\r
-  18807, 16643, 3717, 18620, 13391, 23458, 15731, 3795, 31660, 488,\r
-  31182, 24447, 16048, 18171, 30831, 4420, 23207, 12431, 3988, 11134,\r
+  16227, 11706, 7605,  22767, 4396,  18531, 27112, 15118, 17644, 5134,\r
+  29286, 32342, 1804,  17168, 14719, 4076,  29670, 5350,  781,   23889,\r
+  22478, 9768,  13467, 17392, 12371, 31928, 205,   7923,  21186, 9279,\r
+  25084, 26459, 23532, 28378, 10272, 6736,  19753, 11792, 7667,  22965,\r
+  31389, 30728, 2387,  31488, 11962, 19704, 2792,  30793, 9990,  12513,\r
+  8456,  30624, 19999, 3450,  20951, 23716, 22268, 28777, 16563, 6226,\r
+  7541,  31161, 13007, 11034, 28678, 3721,  18205, 3384,  9936,  9217,\r
+  25970, 28993, 11232, 13963, 10469, 5372,  22708, 16703, 18808, 5236,\r
+  19707, 18846, 18682, 29515, 8861,  21380, 26411, 20561, 8955,  20824,\r
+  8482,  30549, 24952, 25734, 16364, 17724, 24376, 559,   14966, 4688,\r
+  7208,  20511, 28332, 5850,  14654, 19967, 30179, 32242, 4098,  7883,\r
+  6260,  6806,  25421, 1671,  9386,  29434, 3408,  28718, 11487, 5663,\r
+  20185, 4076,  28897, 28583, 9170,  30092, 30363, 3560,  16650, 9012,\r
+  5617,  3647,  7993,  31824, 31723, 9126,  14142, 8396,  26902, 27529,\r
+  21418, 2182,  12071, 1238,  7042,  29443, 12770, 7508,  14913, 32609,\r
+  28474, 26933, 18717, 140,   21178, 14574, 23947, 25013, 22563, 8518,\r
+  24837, 12032, 16727, 27053, 5643,  5757,  25461, 13520, 28264, 30042,\r
+  20294, 5994,  5814,  17751, 22744, 4445,  23332, 32377, 17000, 7425,\r
+  18807, 16643, 3717,  18620, 13391, 23458, 15731, 3795,  31660, 488,\r
+  31182, 24447, 16048, 18171, 30831, 4420,  23207, 12431, 3988,  11134,\r
   23364, 30225, 18746, 16189, 16429, 16421, 29902, 16978, 15291, 31827,\r
-  31749, 8362, 20218, 6397, 32521, 30683, 26360, 15765, 31701, 12541,\r
-  24380, 21261, 1250, 27835, 3476, 28814, 19203, 30121, 15124, 108,\r
-  32397, 11481, 11867, 12634, 19388, 9385, 11032, 2010, 30290, 24030,\r
-  2765, 9208, 22657, 23287, 21203, 3896, 18699, 32187, 27551, 9933,\r
-  11432, 25365, 23875, 30219, 13992, 12577, 13623, 5407, 7385, 2951,\r
-  31066, 24574, 17067, 8712, 19508, 6555, 8082, 3414, 9854, 20317,\r
-  25772, 28201, 18916, 4304, 9636, 655, 20745, 20379, 2262, 9603,\r
-  204, 31666, 17076, 27842, 16074, 12236, 24680, 22746, 20771, 536,\r
-  9659, 19332, 19330, 19755, 565, 14387, 19799, 1341, 24965, 17133,\r
-  30055, 28054, 23332, 16730, 11911, 16963, 1334, 21019, 14756, 10765,\r
-  28337, 32348, 6407, 1196, 1216, 6573, 16599, 26935, 26474, 21517,\r
+  31749, 8362,  20218, 6397,  32521, 30683, 26360, 15765, 31701, 12541,\r
+  24380, 21261, 1250,  27835, 3476,  28814, 19203, 30121, 15124, 108,\r
+  32397, 11481, 11867, 12634, 19388, 9385,  11032, 2010,  30290, 24030,\r
+  2765,  9208,  22657, 23287, 21203, 3896,  18699, 32187, 27551, 9933,\r
+  11432, 25365, 23875, 30219, 13992, 12577, 13623, 5407,  7385,  2951,\r
+  31066, 24574, 17067, 8712,  19508, 6555,  8082,  3414,  9854,  20317,\r
+  25772, 28201, 18916, 4304,  9636,  655,   20745, 20379, 2262,  9603,\r
+  204,   31666, 17076, 27842, 16074, 12236, 24680, 22746, 20771, 536,\r
+  9659,  19332, 19330, 19755, 565,   14387, 19799, 1341,  24965, 17133,\r
+  30055, 28054, 23332, 16730, 11911, 16963, 1334,  21019, 14756, 10765,\r
+  28337, 32348, 6407,  1196,  1216,  6573,  16599, 26935, 26474, 21517,\r
   12512, 26847, 29039, 12872, 23442, 27101, 30578, 24708, 32333, 11945,\r
-  605, 4886, 20188, 23917, 2306, 27034, 8767, 7097, 27902, 2114,\r
-  28845, 4728, 16099, 23406, 23257, 28195, 3478, 14717, 5237, 12084,\r
+  605,   4886,  20188, 23917, 2306,  27034, 8767,  7097,  27902, 2114,\r
+  28845, 4728,  16099, 23406, 23257, 28195, 3478,  14717, 5237,  12084,\r
   17653, 22243, 22516, 24286, 24509, 16508, 18325, 31739, 28843, 20513,\r
   24477, 13382, 18146, 20344, 24035, 15818, 12685, 15632, 17042, 25754,\r
-  9925, 26541, 20011, 8387, 20917, 21472, 8393, 18559, 19452, 8155,\r
-  24233, 12971, 1618, 22916, 32233, 23931, 9327, 31432, 8592, 28013,\r
-  20521, 50, 9679, 6267, 18396, 19900, 16775, 20885, 11278, 21989,\r
-  24842, 18510, 20563, 14083, 7718, 4310, 4975, 17115, 31072, 2088,\r
-  699, 9327, 14461, 18564, 19658, 6167, 3655, 16928, 18251, 27091,\r
-  28557, 19483, 3121, 11744, 14700, 16818, 29202, 26505, 3277, 32694,\r
-  25549, 4672, 815, 22077, 23408, 16621, 8359, 17049, 1113, 18310,\r
-  10020, 1414, 18587, 8928, 12024, 27047, 19875, 4805, 10388, 20020,\r
-  9243, 6726, 11155, 18925, 12046, 23122, 14075, 31314, 1613, 31368,\r
-  18111, 21269, 22546, 5194, 25224, 464, 3556, 21523, 2484, 14836,\r
-  14522, 17674, 8351, 32001, 2147, 31447, 17186, 13053, 21029, 3509,\r
-  8282, 10015, 27301, 7368, 17323, 15563, 22278, 19122, 28420, 28867,\r
-  6485, 26721, 27236, 31387, 7205, 16938, 27805, 8813, 374, 17180,\r
-  344, 7887, 22748, 25230, 4185, 3842, 221, 4091, 27140, 25964,\r
-  14234, 4368, 32032, 22088, 7858, 1538, 6620, 7837, 13923, 2085,\r
-  26127, 14188, 5106, 5819, 26308, 18734, 22349, 17929, 17142, 29566,\r
-  9200, 25777, 9112, 15634, 8453, 2875, 21721, 16367, 17615, 18933,\r
-  3237, 26077, 28488, 26877, 31343, 18713, 6153, 28316, 1070, 3403,\r
-  4971, 24533, 21669, 17591, 13036, 28478, 7912, 13751, 17620, 3599,\r
-  15132, 5225, 14104, 4985, 126, 1189, 24958, 28217, 167, 30770,\r
-  15106, 5228, 2062, 15673, 32376, 9637, 1998, 20729, 628, 29501,\r
-  19625, 19133, 18535, 25322, 10061, 29451, 1802, 24467, 27095, 23327,\r
-  13312, 19555, 24214, 2200, 20663, 11805, 7185, 2416, 32399, 32431,\r
-  23115, 1073, 7742, 24329, 11589, 6246, 32371, 6959, 18629, 9040,\r
-  23993, 13453, 12630, 15579, 17310, 26252, 32400, 208, 29973, 22882,\r
-  4761, 30796, 2074, 30510, 27372, 14193, 23188, 5956, 28249, 859,\r
-  28799, 29637, 23629, 5206, 32074, 7540, 16724, 18510, 7294, 25028,\r
-  5340, 22919, 32161, 22326, 25660, 28046, 1882, 993, 12021, 4207,\r
-  13782, 21074, 22583, 28712, 14441, 18583, 20903, 27742, 4729, 13719,\r
+  9925,  26541, 20011, 8387,  20917, 21472, 8393,  18559, 19452, 8155,\r
+  24233, 12971, 1618,  22916, 32233, 23931, 9327,  31432, 8592,  28013,\r
+  20521, 50,    9679,  6267,  18396, 19900, 16775, 20885, 11278, 21989,\r
+  24842, 18510, 20563, 14083, 7718,  4310,  4975,  17115, 31072, 2088,\r
+  699,   9327,  14461, 18564, 19658, 6167,  3655,  16928, 18251, 27091,\r
+  28557, 19483, 3121,  11744, 14700, 16818, 29202, 26505, 3277,  32694,\r
+  25549, 4672,  815,   22077, 23408, 16621, 8359,  17049, 1113,  18310,\r
+  10020, 1414,  18587, 8928,  12024, 27047, 19875, 4805,  10388, 20020,\r
+  9243,  6726,  11155, 18925, 12046, 23122, 14075, 31314, 1613,  31368,\r
+  18111, 21269, 22546, 5194,  25224, 464,   3556,  21523, 2484,  14836,\r
+  14522, 17674, 8351,  32001, 2147,  31447, 17186, 13053, 21029, 3509,\r
+  8282,  10015, 27301, 7368,  17323, 15563, 22278, 19122, 28420, 28867,\r
+  6485,  26721, 27236, 31387, 7205,  16938, 27805, 8813,  374,   17180,\r
+  344,   7887,  22748, 25230, 4185,  3842,  221,   4091,  27140, 25964,\r
+  14234, 4368,  32032, 22088, 7858,  1538,  6620,  7837,  13923, 2085,\r
+  26127, 14188, 5106,  5819,  26308, 18734, 22349, 17929, 17142, 29566,\r
+  9200,  25777, 9112,  15634, 8453,  2875,  21721, 16367, 17615, 18933,\r
+  3237,  26077, 28488, 26877, 31343, 18713, 6153,  28316, 1070,  3403,\r
+  4971,  24533, 21669, 17591, 13036, 28478, 7912,  13751, 17620, 3599,\r
+  15132, 5225,  14104, 4985,  126,   1189,  24958, 28217, 167,   30770,\r
+  15106, 5228,  2062,  15673, 32376, 9637,  1998,  20729, 628,   29501,\r
+  19625, 19133, 18535, 25322, 10061, 29451, 1802,  24467, 27095, 23327,\r
+  13312, 19555, 24214, 2200,  20663, 11805, 7185,  2416,  32399, 32431,\r
+  23115, 1073,  7742,  24329, 11589, 6246,  32371, 6959,  18629, 9040,\r
+  23993, 13453, 12630, 15579, 17310, 26252, 32400, 208,   29973, 22882,\r
+  4761,  30796, 2074,  30510, 27372, 14193, 23188, 5956,  28249, 859,\r
+  28799, 29637, 23629, 5206,  32074, 7540,  16724, 18510, 7294,  25028,\r
+  5340,  22919, 32161, 22326, 25660, 28046, 1882,  993,   12021, 4207,\r
+  13782, 21074, 22583, 28712, 14441, 18583, 20903, 27742, 4729,  13719,\r
   25439, 20047, 17304, 18597, 13622, 15624, 15088, 18260, 32066, 16855,\r
-  6628, 21900, 30620, 28932, 2548, 989, 2915, 2748, 10721, 6164,\r
+  6628,  21900, 30620, 28932, 2548,  989,   2915,  2748,  10721, 6164,\r
   16644, 10318, 22034, 17420, 28088, 18842, 20535, 16071, 14414, 22213,\r
-  2604, 29629, 23338, 27186, 6176, 15476, 18318, 30382, 3574, 22609,\r
-  3608, 7659, 19435, 5806, 12428, 19248, 32378, 26413, 16596, 26190,\r
+  2604,  29629, 23338, 27186, 6176,  15476, 18318, 30382, 3574,  22609,\r
+  3608,  7659,  19435, 5806,  12428, 19248, 32378, 26413, 16596, 26190,\r
   21885, 17483, 28997, 13014, 13972, 11320, 31268, 12169, 28362, 7142,\r
-  30825, 2576, 10102, 16479, 10690, 31470, 8800, 21085, 10715, 7602,\r
-  293, 20500, 5341, 6513, 7133, 2387, 13109, 11635, 11002, 12747,\r
-  4758, 30253, 18547, 28078, 12353, 32367, 3107, 3197, 6276, 28895,\r
-  18284, 26139, 8064, 32166, 9247, 3621, 5936, 18537, 10912, 20870,\r
-  9895, 29307, 29509, 12869, 9881, 5457, 1792, 21922, 10013, 16694,\r
-  13118, 6242, 689, 21567, 21774, 15719, 8831, 15746, 24454, 27267,\r
-  22495, 131, 8546, 26510, 28444, 3311, 3567, 21430, 24443, 16013,\r
-  3368, 17687, 15481, 6513, 5918, 1676, 19541, 5747, 7837, 26564,\r
-  26574, 5087, 3852, 21400, 1838, 15982, 24981, 8347, 8327, 1653,\r
-  3462, 20467, 15165, 30045, 22519, 11880, 23748, 30547, 18094, 3003,\r
-  12971, 27968, 14911, 31801, 7642, 6908, 29559, 22671, 792, 17855,\r
-  2043, 28640, 1232, 5848, 2605, 8213, 2580, 5793, 26703, 18549,\r
-  14050, 21426, 18155, 19061, 14758, 2645, 23154, 3281, 4609, 24634,\r
-  1059, 13531, 13513, 2156, 13870, 2579, 12625, 25476, 25370, 14329,\r
-  15338, 28701, 31844, 25119, 16809, 8071, 17513, 16002, 26987, 25280,\r
-  30597, 10778, 9751, 927, 4221, 27568, 15907, 7763, 11290, 6384,\r
-  27738, 20236, 20503, 20927, 32220, 26616, 6462, 17871, 4454, 17265,\r
-  5325, 14448, 23507, 1653, 18718, 30377, 5603, 26454, 12679, 29575,\r
+  30825, 2576,  10102, 16479, 10690, 31470, 8800,  21085, 10715, 7602,\r
+  293,   20500, 5341,  6513,  7133,  2387,  13109, 11635, 11002, 12747,\r
+  4758,  30253, 18547, 28078, 12353, 32367, 3107,  3197,  6276,  28895,\r
+  18284, 26139, 8064,  32166, 9247,  3621,  5936,  18537, 10912, 20870,\r
+  9895,  29307, 29509, 12869, 9881,  5457,  1792,  21922, 10013, 16694,\r
+  13118, 6242,  689,   21567, 21774, 15719, 8831,  15746, 24454, 27267,\r
+  22495, 131,   8546,  26510, 28444, 3311,  3567,  21430, 24443, 16013,\r
+  3368,  17687, 15481, 6513,  5918,  1676,  19541, 5747,  7837,  26564,\r
+  26574, 5087,  3852,  21400, 1838,  15982, 24981, 8347,  8327,  1653,\r
+  3462,  20467, 15165, 30045, 22519, 11880, 23748, 30547, 18094, 3003,\r
+  12971, 27968, 14911, 31801, 7642,  6908,  29559, 22671, 792,   17855,\r
+  2043,  28640, 1232,  5848,  2605,  8213,  2580,  5793,  26703, 18549,\r
+  14050, 21426, 18155, 19061, 14758, 2645,  23154, 3281,  4609,  24634,\r
+  1059,  13531, 13513, 2156,  13870, 2579,  12625, 25476, 25370, 14329,\r
+  15338, 28701, 31844, 25119, 16809, 8071,  17513, 16002, 26987, 25280,\r
+  30597, 10778, 9751,  927,   4221,  27568, 15907, 7763,  11290, 6384,\r
+  27738, 20236, 20503, 20927, 32220, 26616, 6462,  17871, 4454,  17265,\r
+  5325,  14448, 23507, 1653,  18718, 30377, 5603,  26454, 12679, 29575,\r
   30524, 19634, 12672, 32437, 25262, 22694, 17155, 18765, 10171, 13375,\r
-  25657, 11502, 32087, 12081, 2130, 26895, 6636, 1996, 4020, 19090,\r
-  3233, 28459, 2905, 29084, 15324, 7599, 20338, 10661, 11525, 2988,\r
-  6481, 1995, 31118, 8801, 19589, 17260, 5424, 31022, 2887, 31987,\r
-  18807, 29441, 11797, 26354, 2688, 20498, 24220, 1394, 2306, 2000,\r
-  23003, 30599, 9611, 32538, 7558, 32551, 10508, 28339, 1192, 15163,\r
-  26264, 3568, 6029, 18423, 10857, 21940, 4831, 14695, 6692, 28574,\r
-  27151, 9291, 27229, 9601, 18678, 10533, 3422, 25877, 22717, 13712,\r
-  16164, 11244, 19450, 28627, 4779, 28583, 30235, 182, 25708, 22121,\r
-  29192, 12181, 22051, 21388, 7172, 1202, 14293, 31891, 25300, 26063,\r
-  530, 10848, 13348, 24829, 17784, 15016, 2086, 6575, 13176, 1443,\r
-  20604, 3090, 9309, 23560, 20056, 6817, 16009, 8504, 5090, 6644,\r
-  8962, 21945, 13530, 20184, 17198, 9703, 27262, 4773, 17371, 20710,\r
-  11950, 4556, 4482, 31707, 4686, 22704, 2509, 17756, 21228, 8887,\r
-  24150, 11557, 29602, 8096, 5298, 9228, 23870, 8983, 18350, 22583,\r
-  18849, 29318, 3544, 4492, 32357, 9519, 10562, 12905, 6851, 19064,\r
-  25730, 12437, 31923, 19077, 16637, 6775, 340, 13580, 23142, 31878,\r
-  9359, 29285, 9089, 15105, 17399, 2785, 24621, 13280, 2292, 30813,\r
-  161, 15626, 15905, 13847, 16886, 21192, 5106, 704, 14310, 2682,\r
-  6298, 2258, 9171, 7561, 26412, 24867, 15626, 8348, 20992, 9147,\r
-  20042, 15119, 3160, 31458, 19584, 29345, 5955, 27774, 19157, 24428,\r
-  30146, 19868, 28650, 23579, 27690, 5197, 20578, 1623, 20169, 31667,\r
-  21154, 9090, 9164, 11867, 32724, 15784, 7264, 27341, 26162, 3250,\r
-  10520, 22114, 28801, 32733, 11663, 29270, 22235, 31595, 5966, 26398,\r
-  3250, 7833, 23536, 6652, 20498, 9680, 8836, 16592, 15910, 15647,\r
-  7218, 26673, 4350, 22249, 20514, 8124, 27279, 23259, 24217, 16556,\r
-  20732, 16673, 32613, 684, 16404, 28122, 16252, 21225, 29723, 24777,\r
-  16864, 8554, 20941, 3405, 1989, 6308, 4000, 28307, 1014, 29513,\r
-  1098, 11274, 32117, 25698, 16003, 25111, 1377, 17821, 18956, 25355,\r
-  1053, 32744, 17904, 1106, 8623, 25150, 12298, 19436, 3430, 23233,\r
-  2503, 4642, 26816, 17930, 14893, 27505, 22922, 18621, 20764, 28363,\r
-  1865, 26464, 4052, 11263, 2009, 20589, 23224, 26229, 32596, 3237,\r
-  30802, 26654, 30518, 2472, 16790, 171, 12478, 12995, 10091, 1277,\r
-  30359, 3081, 12647, 25309, 12727, 933, 23002, 7406, 17800, 28014,\r
-  27407, 17119, 30533, 23740, 16846, 14821, 25767, 20602, 6437, 26985,\r
-  19906, 25981, 17257, 8190, 13865, 788, 29815, 17557, 8537, 13793,\r
-  319, 10228, 28245, 11495, 14468, 2660, 5773, 3299, 14557, 10666,\r
-  21508, 3552, 26624, 27449, 29362, 5894, 28479, 30374, 20776, 19635,\r
+  25657, 11502, 32087, 12081, 2130,  26895, 6636,  1996,  4020,  19090,\r
+  3233,  28459, 2905,  29084, 15324, 7599,  20338, 10661, 11525, 2988,\r
+  6481,  1995,  31118, 8801,  19589, 17260, 5424,  31022, 2887,  31987,\r
+  18807, 29441, 11797, 26354, 2688,  20498, 24220, 1394,  2306,  2000,\r
+  23003, 30599, 9611,  32538, 7558,  32551, 10508, 28339, 1192,  15163,\r
+  26264, 3568,  6029,  18423, 10857, 21940, 4831,  14695, 6692,  28574,\r
+  27151, 9291,  27229, 9601,  18678, 10533, 3422,  25877, 22717, 13712,\r
+  16164, 11244, 19450, 28627, 4779,  28583, 30235, 182,   25708, 22121,\r
+  29192, 12181, 22051, 21388, 7172,  1202,  14293, 31891, 25300, 26063,\r
+  530,   10848, 13348, 24829, 17784, 15016, 2086,  6575,  13176, 1443,\r
+  20604, 3090,  9309,  23560, 20056, 6817,  16009, 8504,  5090,  6644,\r
+  8962,  21945, 13530, 20184, 17198, 9703,  27262, 4773,  17371, 20710,\r
+  11950, 4556,  4482,  31707, 4686,  22704, 2509,  17756, 21228, 8887,\r
+  24150, 11557, 29602, 8096,  5298,  9228,  23870, 8983,  18350, 22583,\r
+  18849, 29318, 3544,  4492,  32357, 9519,  10562, 12905, 6851,  19064,\r
+  25730, 12437, 31923, 19077, 16637, 6775,  340,   13580, 23142, 31878,\r
+  9359,  29285, 9089,  15105, 17399, 2785,  24621, 13280, 2292,  30813,\r
+  161,   15626, 15905, 13847, 16886, 21192, 5106,  704,   14310, 2682,\r
+  6298,  2258,  9171,  7561,  26412, 24867, 15626, 8348,  20992, 9147,\r
+  20042, 15119, 3160,  31458, 19584, 29345, 5955,  27774, 19157, 24428,\r
+  30146, 19868, 28650, 23579, 27690, 5197,  20578, 1623,  20169, 31667,\r
+  21154, 9090,  9164,  11867, 32724, 15784, 7264,  27341, 26162, 3250,\r
+  10520, 22114, 28801, 32733, 11663, 29270, 22235, 31595, 5966,  26398,\r
+  3250,  7833,  23536, 6652,  20498, 9680,  8836,  16592, 15910, 15647,\r
+  7218,  26673, 4350,  22249, 20514, 8124,  27279, 23259, 24217, 16556,\r
+  20732, 16673, 32613, 684,   16404, 28122, 16252, 21225, 29723, 24777,\r
+  16864, 8554,  20941, 3405,  1989,  6308,  4000,  28307, 1014,  29513,\r
+  1098,  11274, 32117, 25698, 16003, 25111, 1377,  17821, 18956, 25355,\r
+  1053,  32744, 17904, 1106,  8623,  25150, 12298, 19436, 3430,  23233,\r
+  2503,  4642,  26816, 17930, 14893, 27505, 22922, 18621, 20764, 28363,\r
+  1865,  26464, 4052,  11263, 2009,  20589, 23224, 26229, 32596, 3237,\r
+  30802, 26654, 30518, 2472,  16790, 171,   12478, 12995, 10091, 1277,\r
+  30359, 3081,  12647, 25309, 12727, 933,   23002, 7406,  17800, 28014,\r
+  27407, 17119, 30533, 23740, 16846, 14821, 25767, 20602, 6437,  26985,\r
+  19906, 25981, 17257, 8190,  13865, 788,   29815, 17557, 8537,  13793,\r
+  319,   10228, 28245, 11495, 14468, 2660,  5773,  3299,  14557, 10666,\r
+  21508, 3552,  26624, 27449, 29362, 5894,  28479, 30374, 20776, 19635,\r
   24915, 21596, 21618, 17613, 27993, 25745, 21313, 21846, 17178, 17017,\r
-  15434, 12608, 3215, 26553, 31721, 18307, 8357, 9246, 25866, 6254,\r
-  21309, 15759, 8521, 30010, 1655, 19520, 27736, 24037, 24880, 10025,\r
-  7841, 28990, 20169, 29879, 19245, 9020, 11306, 13249, 29893, 11667,\r
-  17927, 20669, 7767, 28297, 3170, 6964, 15003, 10758, 8018, 12147,\r
-  16117, 24811, 6402, 10372, 23966, 12965, 14588, 11868, 11007, 32002,\r
+  15434, 12608, 3215,  26553, 31721, 18307, 8357,  9246,  25866, 6254,\r
+  21309, 15759, 8521,  30010, 1655,  19520, 27736, 24037, 24880, 10025,\r
+  7841,  28990, 20169, 29879, 19245, 9020,  11306, 13249, 29893, 11667,\r
+  17927, 20669, 7767,  28297, 3170,  6964,  15003, 10758, 8018,  12147,\r
+  16117, 24811, 6402,  10372, 23966, 12965, 14588, 11868, 11007, 32002,\r
   21672, 13398, 12893, 11843, 12559, 31712, 15803, 32114, 10725, 12148,\r
   21756, 31990, 18887, 10699, 14409, 15204, 14273, 15693, 22962, 26264,\r
-  7699, 4043, 6680, 9477, 28213, 24176, 19786, 6473, 9752, 15861,\r
-  18798, 17412, 31407, 11029, 1443, 14315, 2990, 32577, 3044, 21528,\r
-  1170, 7572, 16943, 30884, 20193, 27657, 20199, 27000, 14771, 27884,\r
-  7288, 21344, 14961, 3214, 16441, 10082, 10973, 30525, 18582, 16461,\r
-  10322, 2931, 13934, 1684, 30797, 15438, 9658, 1629, 5677, 30784,\r
-  26992, 11222, 20023, 26632, 7847, 6600, 2525, 6625, 31483, 20078,\r
-  12608, 27897, 23091, 2695, 17907, 20772, 20257, 11946, 6914, 11986,\r
-  15306, 730, 20019, 2879, 13511, 7258, 26251, 15593, 13291, 21954,\r
-  15380, 17479, 24102, 3411, 3294, 7352, 24745, 7560, 25412, 6586,\r
-  10571, 17389, 12656, 9308, 32300, 27188, 17954, 27894, 14488, 1414,\r
-  32428, 25879, 10030, 23, 23106, 5567, 23361, 24829, 21104, 9678,\r
-  25982, 9794, 7404, 9405, 17871, 1336, 14990, 28044, 4736, 1292,\r
-  30621, 13819, 6817, 10142, 16716, 7677, 1963, 5264, 29828, 21354,\r
-  16998, 31390, 2532, 7668, 7945, 6957, 17159, 26460, 5283, 13350,\r
-  15621, 5094, 955, 15364, 3132, 16138, 20531, 9260, 17744, 12396,\r
-  21107, 5501, 6000, 7438, 25539, 23337, 23515, 2244, 2551, 28611,\r
-  16035, 23529, 1618, 24729, 25777, 337, 19365, 31555, 13066, 8318,\r
-  8119, 31100, 6993, 18455, 27625, 7985, 4492, 7317, 282, 32472,\r
-  3883, 24384, 21193, 22531, 18246, 24922, 28025, 17461, 28710, 14234,\r
-  11354, 9716, 17927, 16860, 29221, 3615, 11036, 23318, 26952, 2946,\r
-  2260, 17806, 3907, 6312, 22108, 10058, 3922, 7152, 26725, 10952,\r
-  12364, 11747, 28199, 6128, 22987, 6597, 16293, 31047, 29837, 19562,\r
-  24883, 8549, 10778, 9548, 24630, 9385, 18343, 24026, 27948, 6955,\r
+  7699,  4043,  6680,  9477,  28213, 24176, 19786, 6473,  9752,  15861,\r
+  18798, 17412, 31407, 11029, 1443,  14315, 2990,  32577, 3044,  21528,\r
+  1170,  7572,  16943, 30884, 20193, 27657, 20199, 27000, 14771, 27884,\r
+  7288,  21344, 14961, 3214,  16441, 10082, 10973, 30525, 18582, 16461,\r
+  10322, 2931,  13934, 1684,  30797, 15438, 9658,  1629,  5677,  30784,\r
+  26992, 11222, 20023, 26632, 7847,  6600,  2525,  6625,  31483, 20078,\r
+  12608, 27897, 23091, 2695,  17907, 20772, 20257, 11946, 6914,  11986,\r
+  15306, 730,   20019, 2879,  13511, 7258,  26251, 15593, 13291, 21954,\r
+  15380, 17479, 24102, 3411,  3294,  7352,  24745, 7560,  25412, 6586,\r
+  10571, 17389, 12656, 9308,  32300, 27188, 17954, 27894, 14488, 1414,\r
+  32428, 25879, 10030, 23,    23106, 5567,  23361, 24829, 21104, 9678,\r
+  25982, 9794,  7404,  9405,  17871, 1336,  14990, 28044, 4736,  1292,\r
+  30621, 13819, 6817,  10142, 16716, 7677,  1963,  5264,  29828, 21354,\r
+  16998, 31390, 2532,  7668,  7945,  6957,  17159, 26460, 5283,  13350,\r
+  15621, 5094,  955,   15364, 3132,  16138, 20531, 9260,  17744, 12396,\r
+  21107, 5501,  6000,  7438,  25539, 23337, 23515, 2244,  2551,  28611,\r
+  16035, 23529, 1618,  24729, 25777, 337,   19365, 31555, 13066, 8318,\r
+  8119,  31100, 6993,  18455, 27625, 7985,  4492,  7317,  282,   32472,\r
+  3883,  24384, 21193, 22531, 18246, 24922, 28025, 17461, 28710, 14234,\r
+  11354, 9716,  17927, 16860, 29221, 3615,  11036, 23318, 26952, 2946,\r
+  2260,  17806, 3907,  6312,  22108, 10058, 3922,  7152,  26725, 10952,\r
+  12364, 11747, 28199, 6128,  22987, 6597,  16293, 31047, 29837, 19562,\r
+  24883, 8549,  10778, 9548,  24630, 9385,  18343, 24026, 27948, 6955,\r
   18491, 31506, 22252, 16114, 18960, 32081, 19246, 14952, 29500, 17002,\r
-  77, 15114, 2448, 19958, 11340, 7268, 16833, 27628, 27928, 16189,\r
-  2501, 24946, 1548, 24847, 21120, 8178, 5818, 1978, 7328, 11887,\r
-  12009, 21880, 19654, 15642, 25562, 22804, 2790, 5920, 19152, 11863,\r
-  12528, 26311, 31950, 708, 3248, 32697, 1955, 21125, 30963, 9119,\r
-  28708, 29092, 4587, 29938, 10681, 13694, 2260, 3086, 10011, 21109,\r
-  23256, 25225, 26715, 16870, 28464, 2242, 10791, 17499, 24717, 22973,\r
-  6729, 21505, 30134, 8494, 13680, 7004, 3442, 26579, 12851, 17465,\r
-  424, 23047, 7507, 13028, 17861, 31893, 2880, 412, 17502, 9162,\r
-  735, 20548, 16407, 24782, 1419, 15451, 15299, 22836, 22618, 5422,\r
-  11724, 15567, 29345, 8268, 725, 19911, 13754, 571, 13215, 12013,\r
-  20996, 8041, 29225, 27724, 32044, 2405, 12828, 29184, 23979, 19535,\r
-  4197, 25932, 20368, 12430, 24100, 5094, 26240, 17600, 21189, 28053,\r
-  20731, 17399, 10604, 15358, 224, 11298, 11671, 3259, 15668, 6345,\r
-  31487, 430, 287, 13822, 29887, 31637, 19511, 24464, 14263, 21214,\r
-  18434, 16513, 3123, 4796, 26293, 1722, 6856, 27258, 24386, 32510,\r
+  77,    15114, 2448,  19958, 11340, 7268,  16833, 27628, 27928, 16189,\r
+  2501,  24946, 1548,  24847, 21120, 8178,  5818,  1978,  7328,  11887,\r
+  12009, 21880, 19654, 15642, 25562, 22804, 2790,  5920,  19152, 11863,\r
+  12528, 26311, 31950, 708,   3248,  32697, 1955,  21125, 30963, 9119,\r
+  28708, 29092, 4587,  29938, 10681, 13694, 2260,  3086,  10011, 21109,\r
+  23256, 25225, 26715, 16870, 28464, 2242,  10791, 17499, 24717, 22973,\r
+  6729,  21505, 30134, 8494,  13680, 7004,  3442,  26579, 12851, 17465,\r
+  424,   23047, 7507,  13028, 17861, 31893, 2880,  412,   17502, 9162,\r
+  735,   20548, 16407, 24782, 1419,  15451, 15299, 22836, 22618, 5422,\r
+  11724, 15567, 29345, 8268,  725,   19911, 13754, 571,   13215, 12013,\r
+  20996, 8041,  29225, 27724, 32044, 2405,  12828, 29184, 23979, 19535,\r
+  4197,  25932, 20368, 12430, 24100, 5094,  26240, 17600, 21189, 28053,\r
+  20731, 17399, 10604, 15358, 224,   11298, 11671, 3259,  15668, 6345,\r
+  31487, 430,   287,   13822, 29887, 31637, 19511, 24464, 14263, 21214,\r
+  18434, 16513, 3123,  4796,  26293, 1722,  6856,  27258, 24386, 32510,\r
   26751, 18704, 10898, 11549, 24118, 22260, 26127, 13418, 24386, 16946,\r
-  16230, 9326, 13145, 4287, 19851, 32222, 18352, 27914, 31485, 971,\r
-  2912, 8405, 25931, 11545, 27406, 12867, 21975, 18994, 12235, 22322,\r
-  14298, 13051, 17721, 13002, 12200, 4360, 10991, 4438, 14134, 6668,\r
-  5407, 5715, 25561, 20115, 118, 4295, 14672, 4339, 15684, 27093,\r
-  11781, 10367, 13789, 24973, 17552, 1279, 29759, 3593, 24189, 22109,\r
-  10997, 20661, 11343, 19617, 17723, 13806, 24260, 5151, 16994, 29391,\r
-  32091, 25071, 24694, 30023, 1556, 9374, 23071, 14959, 14967, 11555,\r
-  15301, 24347, 15831, 25621, 5111, 7856, 26840, 24347, 782, 13365,\r
-  30255, 27299, 28173, 20908, 27817, 23511, 22732, 8610, 27247, 16076,\r
-  11094, 1797, 13704, 13565, 26255, 3894, 13727, 6137, 3098, 19039,\r
+  16230, 9326,  13145, 4287,  19851, 32222, 18352, 27914, 31485, 971,\r
+  2912,  8405,  25931, 11545, 27406, 12867, 21975, 18994, 12235, 22322,\r
+  14298, 13051, 17721, 13002, 12200, 4360,  10991, 4438,  14134, 6668,\r
+  5407,  5715,  25561, 20115, 118,   4295,  14672, 4339,  15684, 27093,\r
+  11781, 10367, 13789, 24973, 17552, 1279,  29759, 3593,  24189, 22109,\r
+  10997, 20661, 11343, 19617, 17723, 13806, 24260, 5151,  16994, 29391,\r
+  32091, 25071, 24694, 30023, 1556,  9374,  23071, 14959, 14967, 11555,\r
+  15301, 24347, 15831, 25621, 5111,  7856,  26840, 24347, 782,   13365,\r
+  30255, 27299, 28173, 20908, 27817, 23511, 22732, 8610,  27247, 16076,\r
+  11094, 1797,  13704, 13565, 26255, 3894,  13727, 6137,  3098,  19039,\r
   15111, 13400, 15737, 32263, 14076, 12531, 22134, 26083, 18732, 30293,\r
-  1730, 30447, 18038, 10860, 11997, 22718, 7409, 5252, 1077, 2318,\r
+  1730,  30447, 18038, 10860, 11997, 22718, 7409,  5252,  1077,  2318,\r
   14640, 32119, 16530, 23968, 20676, 24605, 24753, 22599, 13827, 32266,\r
-  13871, 318, 6408, 11385, 20650, 15294, 23035, 28035, 546, 18640,\r
-  20627, 10645, 677, 27745, 11480, 7456, 30507, 26772, 21806, 20114,\r
-  24511, 17244, 25999, 8326, 12511, 2633, 13336, 21559, 7206, 2210,\r
-  32455, 4155, 19496, 9141, 9859, 16238, 6046, 20843, 7004, 23596,\r
-  28611, 23839, 24085, 31683, 3581, 28336, 15071, 11815, 9408, 2005,\r
-  8552, 1512, 6063, 27569, 15892, 23650, 32517, 9384, 14474, 9780,\r
-  31284, 7280, 15219, 27635, 5580, 31339, 10622, 15135, 18589, 15412,\r
-  9128, 9045, 19488, 15480, 17594, 5063, 21523, 7175, 13843, 11498,\r
-  26980, 16682, 423, 23150, 27728, 24888, 17736, 18803, 460, 18532,\r
-  11045, 3834, 28708, 21465, 19344, 4761, 12002, 21001, 23556, 4468,\r
-  11761, 15681, 20326, 19816, 6146, 1153, 19339, 15497, 5167, 22156,\r
-  6139, 19663, 19166, 9019, 27124, 4108, 12777, 18198, 12722, 25633,\r
-  25596, 5413, 19694, 27506, 1854, 13060, 17061, 27031, 1843, 31542,\r
-  27674, 22613, 9697, 22971, 12062, 18636, 10289, 22245, 11663, 25841,\r
-  8601, 17511, 3615, 9535, 8952, 16559, 16982, 3754, 20673, 1142,\r
-  28123, 3285, 9308, 11925, 21231, 15492, 23753, 538, 26682, 14932,\r
-  25223, 19099, 31690, 18858, 8884, 23242, 1881, 26601, 9589, 22858,\r
-  6606, 8168, 25496, 20417, 31239, 12707, 8056, 12335, 26326, 25136,\r
-  17697, 17534, 6217, 2037, 5557, 15450, 26159, 10009, 8719, 19778,\r
-  14295, 12856, 22693, 6367, 8475, 17243, 10931, 19861, 20637, 24871,\r
-  3222, 13657, 13137, 9300, 21877, 9922, 28988, 20833, 16935, 3170,\r
-  10107, 14982, 8017, 30294, 902, 32235, 24271, 27164, 9142, 29719,\r
-  7254, 25765, 24837, 25259, 21847, 17067, 26134, 18256, 22566, 837,\r
-  14197, 20206, 11867, 6329, 4383, 19743, 1657, 15249, 15685, 18403,\r
-  24781, 29681, 18509, 27541, 921, 19751, 13850, 31517, 31346, 26500,\r
-  7309, 4200, 9447, 23658, 18251, 16661, 6243, 10407, 18625, 31601,\r
-  22869, 4353, 7270, 12198, 12173, 13586, 15936, 6447, 6633, 17495,\r
-  23466, 15503, 9522, 2435, 340, 27971, 10817, 16409, 27275, 28661,\r
-  14182, 26681, 21947, 3314, 10506, 3258, 562, 9950, 13714, 12154,\r
-  15142, 10663, 28807, 20466, 5114, 26039, 2292, 16398, 14781, 11118,\r
-  18192, 15163, 32244, 15055, 3357, 29633, 32409, 23417, 24464, 2643,\r
-  3939, 12505, 14450, 9188, 18504, 7839, 10758, 4541, 23873, 20846,\r
-  5292, 16333, 9037, 16344, 29701, 23872, 26296, 14217, 1880, 29523,\r
-  30365, 19138, 22837, 24166, 2474, 12810, 27224, 23890, 24611, 30240,\r
-  975, 11006, 18217, 30259, 29792, 22061, 24893, 7765, 15653, 19354,\r
-  22528, 25134, 29049, 17991, 23356, 20461, 19992, 6674, 4392, 20356,\r
-  19329, 3209, 23528, 25109, 12191, 12287, 6228, 30119, 25257, 29920,\r
-  14842, 8478, 2887, 25921, 26726, 23658, 13814, 16059, 417, 2302,\r
-  2989, 24186, 9719, 24196, 23489, 13201, 12541, 4047, 32006, 11152,\r
-  17363, 15377, 18999, 19801, 17575, 78, 15767, 30255, 30586, 15632,\r
-  28633, 27920, 5159, 25693, 32317, 16453, 32161, 25574, 7165, 8503,\r
+  13871, 318,   6408,  11385, 20650, 15294, 23035, 28035, 546,   18640,\r
+  20627, 10645, 677,   27745, 11480, 7456,  30507, 26772, 21806, 20114,\r
+  24511, 17244, 25999, 8326,  12511, 2633,  13336, 21559, 7206,  2210,\r
+  32455, 4155,  19496, 9141,  9859,  16238, 6046,  20843, 7004,  23596,\r
+  28611, 23839, 24085, 31683, 3581,  28336, 15071, 11815, 9408,  2005,\r
+  8552,  1512,  6063,  27569, 15892, 23650, 32517, 9384,  14474, 9780,\r
+  31284, 7280,  15219, 27635, 5580,  31339, 10622, 15135, 18589, 15412,\r
+  9128,  9045,  19488, 15480, 17594, 5063,  21523, 7175,  13843, 11498,\r
+  26980, 16682, 423,   23150, 27728, 24888, 17736, 18803, 460,   18532,\r
+  11045, 3834,  28708, 21465, 19344, 4761,  12002, 21001, 23556, 4468,\r
+  11761, 15681, 20326, 19816, 6146,  1153,  19339, 15497, 5167,  22156,\r
+  6139,  19663, 19166, 9019,  27124, 4108,  12777, 18198, 12722, 25633,\r
+  25596, 5413,  19694, 27506, 1854,  13060, 17061, 27031, 1843,  31542,\r
+  27674, 22613, 9697,  22971, 12062, 18636, 10289, 22245, 11663, 25841,\r
+  8601,  17511, 3615,  9535,  8952,  16559, 16982, 3754,  20673, 1142,\r
+  28123, 3285,  9308,  11925, 21231, 15492, 23753, 538,   26682, 14932,\r
+  25223, 19099, 31690, 18858, 8884,  23242, 1881,  26601, 9589,  22858,\r
+  6606,  8168,  25496, 20417, 31239, 12707, 8056,  12335, 26326, 25136,\r
+  17697, 17534, 6217,  2037,  5557,  15450, 26159, 10009, 8719,  19778,\r
+  14295, 12856, 22693, 6367,  8475,  17243, 10931, 19861, 20637, 24871,\r
+  3222,  13657, 13137, 9300,  21877, 9922,  28988, 20833, 16935, 3170,\r
+  10107, 14982, 8017,  30294, 902,   32235, 24271, 27164, 9142,  29719,\r
+  7254,  25765, 24837, 25259, 21847, 17067, 26134, 18256, 22566, 837,\r
+  14197, 20206, 11867, 6329,  4383,  19743, 1657,  15249, 15685, 18403,\r
+  24781, 29681, 18509, 27541, 921,   19751, 13850, 31517, 31346, 26500,\r
+  7309,  4200,  9447,  23658, 18251, 16661, 6243,  10407, 18625, 31601,\r
+  22869, 4353,  7270,  12198, 12173, 13586, 15936, 6447,  6633,  17495,\r
+  23466, 15503, 9522,  2435,  340,   27971, 10817, 16409, 27275, 28661,\r
+  14182, 26681, 21947, 3314,  10506, 3258,  562,   9950,  13714, 12154,\r
+  15142, 10663, 28807, 20466, 5114,  26039, 2292,  16398, 14781, 11118,\r
+  18192, 15163, 32244, 15055, 3357,  29633, 32409, 23417, 24464, 2643,\r
+  3939,  12505, 14450, 9188,  18504, 7839,  10758, 4541,  23873, 20846,\r
+  5292,  16333, 9037,  16344, 29701, 23872, 26296, 14217, 1880,  29523,\r
+  30365, 19138, 22837, 24166, 2474,  12810, 27224, 23890, 24611, 30240,\r
+  975,   11006, 18217, 30259, 29792, 22061, 24893, 7765,  15653, 19354,\r
+  22528, 25134, 29049, 17991, 23356, 20461, 19992, 6674,  4392,  20356,\r
+  19329, 3209,  23528, 25109, 12191, 12287, 6228,  30119, 25257, 29920,\r
+  14842, 8478,  2887,  25921, 26726, 23658, 13814, 16059, 417,   2302,\r
+  2989,  24186, 9719,  24196, 23489, 13201, 12541, 4047,  32006, 11152,\r
+  17363, 15377, 18999, 19801, 17575, 78,    15767, 30255, 30586, 15632,\r
+  28633, 27920, 5159,  25693, 32317, 16453, 32161, 25574, 7165,  8503,\r
   32380, 32641, 21223, 12932, 11951, 12249, 14155, 31826, 26264, 22884,\r
-  4887, 31460, 25408, 28566, 19521, 31595, 32737, 22613, 2661, 15134,\r
-  10405, 9132, 24496, 31884, 27313, 27587, 30972, 1841, 17762, 28943,\r
-  6460, 17736, 8406, 18118, 25627, 29665, 3503, 9110, 15328, 6451,\r
-  12819, 10902, 13973, 13619, 2039, 16509, 28264, 24678, 20638, 16658,\r
-  12625, 19699, 24924, 10467, 21493, 24060, 11680, 1850, 11211, 18734,\r
-  12850, 19533, 29821, 30359, 9656, 18357, 9361, 4792, 4735, 27425,\r
-  30024, 1756, 15736, 9548, 8646, 19368, 32385, 26924, 8564, 18930,\r
-  28134, 13677, 24995, 15831, 2856, 12317, 17010, 20487, 16637, 10921,\r
-  23281, 22884, 27287, 8712, 18566, 1228, 15913, 3894, 3472, 17202,\r
-  16552, 7140, 17227, 17908, 9935, 3950, 8948, 29544, 18277, 2061,\r
-  10797, 2488, 706, 21582, 24226, 25585, 17296, 194, 29933, 5462,\r
-  31951, 28151, 24247, 20218, 18715, 680, 1056, 17294, 3890, 20017,\r
-  11361, 32119, 20401, 12101, 22960, 23332, 30, 21219, 7269, 9630,\r
-  5931, 8070, 8538, 30048, 11833, 24733, 32663, 22890, 23580, 17978,\r
-  2351, 29841, 11550, 3342, 9061, 1305, 23622, 25237, 27155, 2693,\r
-  12762, 22926, 8781, 32174, 11042, 686, 16449, 20243, 20335, 32149,\r
-  1121, 8048, 22108, 5633, 29637, 26258, 852, 16706, 12234, 31849,\r
-  23124, 4078, 28928, 14431, 4594, 26581, 10563, 6888, 26271, 6711,\r
-  4391, 13658, 13097, 10805, 9370, 17408, 29316, 22406, 21188, 11881,\r
-  3785, 16747, 25906, 25094, 8575, 13797, 25140, 15093, 2330, 293,\r
-  28291, 28439, 30657, 20804, 29223, 12136, 24404, 564, 1176, 29584,\r
-  24238, 26103, 25636, 9141, 5159, 23822, 31888, 5268, 31069, 21301,\r
-  16642, 2512, 11317, 29773, 23839, 12937, 18716, 11674, 368, 21553,\r
-  14995, 20270, 20234, 6043, 8682, 24997, 9838, 11349, 15691, 1043,\r
-  23982, 13880, 28411, 26171, 8657, 14653, 18909, 13058, 1913, 30611,\r
-  18232, 32547, 3779, 30190, 2489, 4131, 7791, 6689, 20924, 3976,\r
-  14913, 6127, 1735, 32326, 30886, 8222, 31319, 31866, 31643, 1486,\r
-  18400, 14682, 28875, 19977, 30223, 8044, 23799, 23963, 15698, 4343,\r
-  13979, 14628, 6042, 18616, 5071, 2923, 32096, 13013, 28523, 26101,\r
-  29670, 21015, 18798, 28631, 20671, 1363, 9889, 30408, 22161, 16681,\r
-  13175, 5754, 3866, 4593, 3640, 27179, 1649, 31219, 31838, 31863,\r
-  19342, 32726, 3904, 26992, 23053, 348, 31725, 26352, 20783, 7756,\r
-  10843, 10030, 7202, 20399, 16321, 18832, 28546, 32574, 10305, 19904,\r
-  16415, 13084, 25546, 15618, 5889, 8641, 6717, 32197, 26281, 16950,\r
-  15054, 1399, 17818, 11400, 10926, 23710, 12824, 24183, 18151, 10533,\r
-  17200, 14446, 15751, 13043, 27384, 18104, 512, 5827, 11800, 10992,\r
-  24783, 6959, 29833, 14777, 30300, 23565, 22429, 8368, 3361, 16383,\r
-  4416, 10399, 9999, 27718, 28797, 26612, 13869, 10967, 30532, 31089,\r
-  18563, 30385, 1386, 2852, 11062, 8813, 13553, 22938, 18676, 19735,\r
-  19338, 27472, 18322, 6460, 25944, 8298, 10484, 23108, 15607, 27303,\r
-  29486, 11266, 13501, 16789, 9192, 10378, 1343, 9985, 29447, 12355,\r
-  13591, 20402, 10378, 30781, 15845, 17495, 2481, 21188, 660, 3773,\r
-  8549, 26165, 31455, 18245, 26580, 17936, 14355, 5782, 3420, 8783,\r
-  10006, 32655, 27818, 246, 13224, 1407, 26659, 13804, 12521, 665,\r
-  13954, 3337, 11035, 17058, 25283, 23152, 1706, 13805, 833, 25887,\r
-  4201, 20617, 27675, 24516, 25375, 27065, 24795, 25554, 17986, 12196,\r
-  2394, 8917, 27138, 846, 11742, 16899, 9354, 20679, 32390, 5139,\r
-  5250, 14243, 27112, 9554, 19672, 6057, 18168, 19955, 28096, 21968,\r
-  22060, 16038, 20217, 28007, 24029, 15213, 8018, 8595, 26097, 30891,\r
-  7534, 25342, 22199, 20094, 19908, 15822, 32530, 13903, 20969, 25556,\r
-  17882, 18088, 17682, 9990, 2687, 8517, 16853, 30768, 30959, 1901,\r
-  29999, 15846, 21690, 2179, 25291, 6077, 32628, 32472, 16001, 25019,\r
-  15964, 20163, 32542, 3083, 826, 7156, 3683, 6901, 15502, 26885,\r
+  4887,  31460, 25408, 28566, 19521, 31595, 32737, 22613, 2661,  15134,\r
+  10405, 9132,  24496, 31884, 27313, 27587, 30972, 1841,  17762, 28943,\r
+  6460,  17736, 8406,  18118, 25627, 29665, 3503,  9110,  15328, 6451,\r
+  12819, 10902, 13973, 13619, 2039,  16509, 28264, 24678, 20638, 16658,\r
+  12625, 19699, 24924, 10467, 21493, 24060, 11680, 1850,  11211, 18734,\r
+  12850, 19533, 29821, 30359, 9656,  18357, 9361,  4792,  4735,  27425,\r
+  30024, 1756,  15736, 9548,  8646,  19368, 32385, 26924, 8564,  18930,\r
+  28134, 13677, 24995, 15831, 2856,  12317, 17010, 20487, 16637, 10921,\r
+  23281, 22884, 27287, 8712,  18566, 1228,  15913, 3894,  3472,  17202,\r
+  16552, 7140,  17227, 17908, 9935,  3950,  8948,  29544, 18277, 2061,\r
+  10797, 2488,  706,   21582, 24226, 25585, 17296, 194,   29933, 5462,\r
+  31951, 28151, 24247, 20218, 18715, 680,   1056,  17294, 3890,  20017,\r
+  11361, 32119, 20401, 12101, 22960, 23332, 30,    21219, 7269,  9630,\r
+  5931,  8070,  8538,  30048, 11833, 24733, 32663, 22890, 23580, 17978,\r
+  2351,  29841, 11550, 3342,  9061,  1305,  23622, 25237, 27155, 2693,\r
+  12762, 22926, 8781,  32174, 11042, 686,   16449, 20243, 20335, 32149,\r
+  1121,  8048,  22108, 5633,  29637, 26258, 852,   16706, 12234, 31849,\r
+  23124, 4078,  28928, 14431, 4594,  26581, 10563, 6888,  26271, 6711,\r
+  4391,  13658, 13097, 10805, 9370,  17408, 29316, 22406, 21188, 11881,\r
+  3785,  16747, 25906, 25094, 8575,  13797, 25140, 15093, 2330,  293,\r
+  28291, 28439, 30657, 20804, 29223, 12136, 24404, 564,   1176,  29584,\r
+  24238, 26103, 25636, 9141,  5159,  23822, 31888, 5268,  31069, 21301,\r
+  16642, 2512,  11317, 29773, 23839, 12937, 18716, 11674, 368,   21553,\r
+  14995, 20270, 20234, 6043,  8682,  24997, 9838,  11349, 15691, 1043,\r
+  23982, 13880, 28411, 26171, 8657,  14653, 18909, 13058, 1913,  30611,\r
+  18232, 32547, 3779,  30190, 2489,  4131,  7791,  6689,  20924, 3976,\r
+  14913, 6127,  1735,  32326, 30886, 8222,  31319, 31866, 31643, 1486,\r
+  18400, 14682, 28875, 19977, 30223, 8044,  23799, 23963, 15698, 4343,\r
+  13979, 14628, 6042,  18616, 5071,  2923,  32096, 13013, 28523, 26101,\r
+  29670, 21015, 18798, 28631, 20671, 1363,  9889,  30408, 22161, 16681,\r
+  13175, 5754,  3866,  4593,  3640,  27179, 1649,  31219, 31838, 31863,\r
+  19342, 32726, 3904,  26992, 23053, 348,   31725, 26352, 20783, 7756,\r
+  10843, 10030, 7202,  20399, 16321, 18832, 28546, 32574, 10305, 19904,\r
+  16415, 13084, 25546, 15618, 5889,  8641,  6717,  32197, 26281, 16950,\r
+  15054, 1399,  17818, 11400, 10926, 23710, 12824, 24183, 18151, 10533,\r
+  17200, 14446, 15751, 13043, 27384, 18104, 512,   5827,  11800, 10992,\r
+  24783, 6959,  29833, 14777, 30300, 23565, 22429, 8368,  3361,  16383,\r
+  4416,  10399, 9999,  27718, 28797, 26612, 13869, 10967, 30532, 31089,\r
+  18563, 30385, 1386,  2852,  11062, 8813,  13553, 22938, 18676, 19735,\r
+  19338, 27472, 18322, 6460,  25944, 8298,  10484, 23108, 15607, 27303,\r
+  29486, 11266, 13501, 16789, 9192,  10378, 1343,  9985,  29447, 12355,\r
+  13591, 20402, 10378, 30781, 15845, 17495, 2481,  21188, 660,   3773,\r
+  8549,  26165, 31455, 18245, 26580, 17936, 14355, 5782,  3420,  8783,\r
+  10006, 32655, 27818, 246,   13224, 1407,  26659, 13804, 12521, 665,\r
+  13954, 3337,  11035, 17058, 25283, 23152, 1706,  13805, 833,   25887,\r
+  4201,  20617, 27675, 24516, 25375, 27065, 24795, 25554, 17986, 12196,\r
+  2394,  8917,  27138, 846,   11742, 16899, 9354,  20679, 32390, 5139,\r
+  5250,  14243, 27112, 9554,  19672, 6057,  18168, 19955, 28096, 21968,\r
+  22060, 16038, 20217, 28007, 24029, 15213, 8018,  8595,  26097, 30891,\r
+  7534,  25342, 22199, 20094, 19908, 15822, 32530, 13903, 20969, 25556,\r
+  17882, 18088, 17682, 9990,  2687,  8517,  16853, 30768, 30959, 1901,\r
+  29999, 15846, 21690, 2179,  25291, 6077,  32628, 32472, 16001, 25019,\r
+  15964, 20163, 32542, 3083,  826,   7156,  3683,  6901,  15502, 26885,\r
   14928, 25358, 28902, 21842, 19362, 21932, 10640, 27915, 26010, 29085,\r
-  28785, 16263, 4864, 11289, 25909, 12251, 9320, 26100, 11689, 13228,\r
-  17332, 16664, 17764, 29761, 24794, 27187, 28845, 1500, 23527, 10925,\r
-  22169, 10571, 4164, 22237, 1652, 19386, 9528, 27772, 27746, 14539,\r
-  18351, 30042, 31046, 13033, 12602, 591, 483, 26073, 8278, 21109,\r
-  6466, 26513, 9713, 31380, 27219, 15182, 27690, 8414, 21718, 2785,\r
-  23129, 8413, 20860, 2633, 14927, 11177, 24906, 14727, 17119, 14430,\r
-  3135, 30894, 11165, 22733, 13110, 8762, 11749, 18034, 14606, 8098,\r
-  5919, 15271, 18183, 11313, 20546, 27926, 12399, 14865, 32407, 14196,\r
-  14719, 11689, 8640, 21869, 17792, 25385, 21240, 12762, 12337, 12898,\r
-  2460, 10810, 22125, 25820, 2283, 21856, 4617, 21026, 23306, 8809,\r
-  11516, 5729, 32074, 25585, 4034, 5937, 8622, 7047, 12034, 19123,\r
-  10664, 6493, 31854, 29916, 15908, 17476, 24298, 20240, 10439, 7640,\r
-  30193, 19955, 21113, 22264, 11317, 31100, 2849, 2170, 23942, 2891,\r
-  32431, 25628, 5109, 18236, 31584, 29117, 8249, 16956, 27965, 11469,\r
-  4434, 2907, 13030, 5634, 20332, 27427, 12173, 3404, 24069, 11560,\r
-  15941, 2060, 2386, 10209, 27261, 30593, 735, 30390, 4551, 29570,\r
-  12663, 6746, 21215, 32115, 14403, 29531, 28136, 28530, 31029, 19192,\r
-  31224, 27601, 5800, 24114, 5079, 24777, 14400, 7974, 27140, 29804,\r
-  5912, 8345, 18937, 27868, 5404, 24533, 4784, 26811, 25523, 24756,\r
-  12390, 31714, 32162, 20474, 1439, 1110, 30765, 8167, 25962, 19319,\r
-  28542, 21261, 742, 18299, 4683, 26976, 31237, 4379, 4276, 9100,\r
-  21904, 24972, 29290, 4235, 13932, 11441, 6166, 6518, 27, 11151,\r
-  27641, 32667, 11909, 27393, 1487, 209, 14585, 12973, 17914, 5640,\r
-  9839, 22582, 11228, 36, 14096, 21172, 27525, 5900, 18168, 8801,\r
-  1678, 3837, 20026, 24724, 27716, 10277, 8740, 3060, 25866, 31853,\r
-  23493, 25829, 19704, 24470, 1965, 28231, 25032, 1415, 756, 26208,\r
-  10227, 25317, 10622, 19478, 11031, 31717, 14716, 17506, 7580, 5470,\r
-  4150, 29697, 7063, 31779, 9225, 8557, 5358, 22159, 24491, 13067,\r
-  8894, 13409, 17079, 23974, 19449, 20682, 27493, 5916, 32084, 15045,\r
-  28056, 8535, 14432, 22439, 6943, 16767, 15862, 29687, 8500, 30574,\r
-  14297, 22143, 8009, 18789, 9623, 2467, 6917, 30717, 4272, 20210,\r
-  30089, 11872, 19450, 28923, 17911, 696, 16964, 26466, 15669, 23272,\r
-  6202, 307, 30446, 2427, 9609, 2421, 23514, 14041, 2371, 6659,\r
-  31040, 27329, 23940, 4247, 29113, 18931, 20054, 23080, 27446, 23597,\r
-  6098, 2166, 7748, 28249, 12168, 26083, 27279, 25861, 7457, 31620,\r
-  5285, 4883, 17987, 15736, 4349, 26802, 12725, 20856, 56, 3725,\r
-  1476, 9136, 16550, 16706, 17893, 15821, 14604, 277, 5019, 5208,\r
+  28785, 16263, 4864,  11289, 25909, 12251, 9320,  26100, 11689, 13228,\r
+  17332, 16664, 17764, 29761, 24794, 27187, 28845, 1500,  23527, 10925,\r
+  22169, 10571, 4164,  22237, 1652,  19386, 9528,  27772, 27746, 14539,\r
+  18351, 30042, 31046, 13033, 12602, 591,   483,   26073, 8278,  21109,\r
+  6466,  26513, 9713,  31380, 27219, 15182, 27690, 8414,  21718, 2785,\r
+  23129, 8413,  20860, 2633,  14927, 11177, 24906, 14727, 17119, 14430,\r
+  3135,  30894, 11165, 22733, 13110, 8762,  11749, 18034, 14606, 8098,\r
+  5919,  15271, 18183, 11313, 20546, 27926, 12399, 14865, 32407, 14196,\r
+  14719, 11689, 8640,  21869, 17792, 25385, 21240, 12762, 12337, 12898,\r
+  2460,  10810, 22125, 25820, 2283,  21856, 4617,  21026, 23306, 8809,\r
+  11516, 5729,  32074, 25585, 4034,  5937,  8622,  7047,  12034, 19123,\r
+  10664, 6493,  31854, 29916, 15908, 17476, 24298, 20240, 10439, 7640,\r
+  30193, 19955, 21113, 22264, 11317, 31100, 2849,  2170,  23942, 2891,\r
+  32431, 25628, 5109,  18236, 31584, 29117, 8249,  16956, 27965, 11469,\r
+  4434,  2907,  13030, 5634,  20332, 27427, 12173, 3404,  24069, 11560,\r
+  15941, 2060,  2386,  10209, 27261, 30593, 735,   30390, 4551,  29570,\r
+  12663, 6746,  21215, 32115, 14403, 29531, 28136, 28530, 31029, 19192,\r
+  31224, 27601, 5800,  24114, 5079,  24777, 14400, 7974,  27140, 29804,\r
+  5912,  8345,  18937, 27868, 5404,  24533, 4784,  26811, 25523, 24756,\r
+  12390, 31714, 32162, 20474, 1439,  1110,  30765, 8167,  25962, 19319,\r
+  28542, 21261, 742,   18299, 4683,  26976, 31237, 4379,  4276,  9100,\r
+  21904, 24972, 29290, 4235,  13932, 11441, 6166,  6518,  27,    11151,\r
+  27641, 32667, 11909, 27393, 1487,  209,   14585, 12973, 17914, 5640,\r
+  9839,  22582, 11228, 36,    14096, 21172, 27525, 5900,  18168, 8801,\r
+  1678,  3837,  20026, 24724, 27716, 10277, 8740,  3060,  25866, 31853,\r
+  23493, 25829, 19704, 24470, 1965,  28231, 25032, 1415,  756,   26208,\r
+  10227, 25317, 10622, 19478, 11031, 31717, 14716, 17506, 7580,  5470,\r
+  4150,  29697, 7063,  31779, 9225,  8557,  5358,  22159, 24491, 13067,\r
+  8894,  13409, 17079, 23974, 19449, 20682, 27493, 5916,  32084, 15045,\r
+  28056, 8535,  14432, 22439, 6943,  16767, 15862, 29687, 8500,  30574,\r
+  14297, 22143, 8009,  18789, 9623,  2467,  6917,  30717, 4272,  20210,\r
+  30089, 11872, 19450, 28923, 17911, 696,   16964, 26466, 15669, 23272,\r
+  6202,  307,   30446, 2427,  9609,  2421,  23514, 14041, 2371,  6659,\r
+  31040, 27329, 23940, 4247,  29113, 18931, 20054, 23080, 27446, 23597,\r
+  6098,  2166,  7748,  28249, 12168, 26083, 27279, 25861, 7457,  31620,\r
+  5285,  4883,  17987, 15736, 4349,  26802, 12725, 20856, 56,    3725,\r
+  1476,  9136,  16550, 16706, 17893, 15821, 14604, 277,   5019,  5208,\r
   16549, 27110, 30363, 15938, 18534, 18272, 28719, 19136, 10630, 14708,\r
-  24024, 10585, 15678, 32005, 28471, 22588, 8654, 11493, 13101, 19672,\r
-  20672, 3841, 66, 19111, 27248, 16856, 15427, 7242, 23244, 24114,\r
-  18223, 25307, 15193, 24846, 3413, 28543, 5751, 29148, 1206, 23354,\r
-  28645, 22764, 6576, 20744, 13959, 14887, 20190, 15913, 871, 26621,\r
-  5178, 23740, 18939, 25246, 6532, 19599, 23974, 22381, 8168, 11830,\r
-  28800, 13489, 3803, 29786, 28506, 9614, 20550, 24404, 24317, 2613,\r
-  14310, 22266, 7859, 16471, 31218, 5817, 13321, 20447, 29951, 24549,\r
-  978, 20448, 21282, 9804, 7279, 6092, 18004, 27409, 30030, 4328,\r
+  24024, 10585, 15678, 32005, 28471, 22588, 8654,  11493, 13101, 19672,\r
+  20672, 3841,  66,    19111, 27248, 16856, 15427, 7242,  23244, 24114,\r
+  18223, 25307, 15193, 24846, 3413,  28543, 5751,  29148, 1206,  23354,\r
+  28645, 22764, 6576,  20744, 13959, 14887, 20190, 15913, 871,   26621,\r
+  5178,  23740, 18939, 25246, 6532,  19599, 23974, 22381, 8168,  11830,\r
+  28800, 13489, 3803,  29786, 28506, 9614,  20550, 24404, 24317, 2613,\r
+  14310, 22266, 7859,  16471, 31218, 5817,  13321, 20447, 29951, 24549,\r
+  978,   20448, 21282, 9804,  7279,  6092,  18004, 27409, 30030, 4328,\r
   25626, 14776, 18353, 15356, 25701, 31613, 25777, 16207, 18358, 5354,\r
-  11394, 4306, 10375, 424, 2808, 4252, 15335, 25238, 7498, 10134,\r
-  17764, 12824, 25879, 15992, 557, 4786, 11430, 8436, 20344, 27605,\r
-  114, 8496, 4130, 18680, 25062, 3962, 5525, 12011, 5989, 23096,\r
-  4079, 23400, 15757, 27165, 18785, 8940, 32189, 3747, 12500, 24772,\r
-  3540, 3765, 30675, 11627, 23868, 12715, 18341, 20243, 4904, 21628,\r
-  20921, 6274, 16921, 24367, 16200, 10783, 29863, 11923, 17461, 18765,\r
-  30590, 17968, 22840, 16887, 1191, 24189, 24891, 1644, 13321, 9044,\r
-  15876, 366, 21807, 13986, 6165, 20101, 5707, 19299, 24016, 19610,\r
-  7291, 27854, 15839, 16064, 29004, 17868, 8403, 28501, 27005, 31919,\r
-  26123, 2378, 26885, 30497, 26584, 7103, 10326, 6746, 2782, 31699,\r
-  24292, 23447, 23742, 30906, 30433, 13511, 1522, 5648, 11851, 20871,\r
-  4856, 16492, 18729, 2128, 22706, 12345, 14610, 29679, 30733, 28353,\r
-  24046, 16694, 17633, 12683, 17409, 1266, 5144, 32743, 805, 11805,\r
-  13587, 22215, 9046, 26708, 6729, 16080, 10868, 651, 30001, 2225,\r
-  14149, 11775, 18787, 9140, 19898, 10604, 15098, 17042, 14451, 11392,\r
-  7228, 17036, 9092, 10128, 32381, 2231, 21626, 11147, 19008, 18840,\r
-  9113, 3628, 8864, 28400, 6760, 7795, 6126, 4057, 23408, 32085,\r
-  28060, 12050, 14144, 28339, 30553, 13208, 4788, 13961, 20862, 20342,\r
-  631, 22120, 30889, 18653, 16327, 16166, 1191, 22903, 23160, 19156,\r
-  2712, 6137, 19516, 4848, 27213, 8184, 20769, 30428, 2805, 27645,\r
-  10587, 26255, 19193, 5595, 10308, 17803, 10020, 28992, 13473, 31246,\r
-  23815, 13451, 7719, 31885, 3228, 9181, 27710, 31582, 7465, 29299,\r
-  2564, 26293, 26983, 20019, 29589, 30929, 30436, 18820, 18570, 3703,\r
-  15526, 5987, 26559, 25504, 15633, 19892, 30810, 2159, 30475, 8661,\r
-  1032, 8805, 29277, 21369, 1674, 19928, 27484, 14772, 5745, 13217,\r
-  25034, 9810, 2853, 10006, 3831, 4973, 17452, 24632, 1835, 20287,\r
-  30121, 9773, 2632, 6708, 7715, 32240, 18348, 27459, 2440, 12615,\r
-  6485, 20095, 1394, 16885, 31304, 4585, 10920, 7473, 15411, 13449,\r
-  24552, 9048, 16465, 19389, 31204, 22495, 14222, 21200, 7306, 19851,\r
-  11756, 6350, 16776, 8932, 25893, 16535, 2064, 8935, 17042, 1843,\r
+  11394, 4306,  10375, 424,   2808,  4252,  15335, 25238, 7498,  10134,\r
+  17764, 12824, 25879, 15992, 557,   4786,  11430, 8436,  20344, 27605,\r
+  114,   8496,  4130,  18680, 25062, 3962,  5525,  12011, 5989,  23096,\r
+  4079,  23400, 15757, 27165, 18785, 8940,  32189, 3747,  12500, 24772,\r
+  3540,  3765,  30675, 11627, 23868, 12715, 18341, 20243, 4904,  21628,\r
+  20921, 6274,  16921, 24367, 16200, 10783, 29863, 11923, 17461, 18765,\r
+  30590, 17968, 22840, 16887, 1191,  24189, 24891, 1644,  13321, 9044,\r
+  15876, 366,   21807, 13986, 6165,  20101, 5707,  19299, 24016, 19610,\r
+  7291,  27854, 15839, 16064, 29004, 17868, 8403,  28501, 27005, 31919,\r
+  26123, 2378,  26885, 30497, 26584, 7103,  10326, 6746,  2782,  31699,\r
+  24292, 23447, 23742, 30906, 30433, 13511, 1522,  5648,  11851, 20871,\r
+  4856,  16492, 18729, 2128,  22706, 12345, 14610, 29679, 30733, 28353,\r
+  24046, 16694, 17633, 12683, 17409, 1266,  5144,  32743, 805,   11805,\r
+  13587, 22215, 9046,  26708, 6729,  16080, 10868, 651,   30001, 2225,\r
+  14149, 11775, 18787, 9140,  19898, 10604, 15098, 17042, 14451, 11392,\r
+  7228,  17036, 9092,  10128, 32381, 2231,  21626, 11147, 19008, 18840,\r
+  9113,  3628,  8864,  28400, 6760,  7795,  6126,  4057,  23408, 32085,\r
+  28060, 12050, 14144, 28339, 30553, 13208, 4788,  13961, 20862, 20342,\r
+  631,   22120, 30889, 18653, 16327, 16166, 1191,  22903, 23160, 19156,\r
+  2712,  6137,  19516, 4848,  27213, 8184,  20769, 30428, 2805,  27645,\r
+  10587, 26255, 19193, 5595,  10308, 17803, 10020, 28992, 13473, 31246,\r
+  23815, 13451, 7719,  31885, 3228,  9181,  27710, 31582, 7465,  29299,\r
+  2564,  26293, 26983, 20019, 29589, 30929, 30436, 18820, 18570, 3703,\r
+  15526, 5987,  26559, 25504, 15633, 19892, 30810, 2159,  30475, 8661,\r
+  1032,  8805,  29277, 21369, 1674,  19928, 27484, 14772, 5745,  13217,\r
+  25034, 9810,  2853,  10006, 3831,  4973,  17452, 24632, 1835,  20287,\r
+  30121, 9773,  2632,  6708,  7715,  32240, 18348, 27459, 2440,  12615,\r
+  6485,  20095, 1394,  16885, 31304, 4585,  10920, 7473,  15411, 13449,\r
+  24552, 9048,  16465, 19389, 31204, 22495, 14222, 21200, 7306,  19851,\r
+  11756, 6350,  16776, 8932,  25893, 16535, 2064,  8935,  17042, 1843,\r
   12760, 24059, 21579, 17509, 29030, 20262, 12688, 22915, 28042, 24961,\r
-  14951, 644, 7724, 27113, 31367, 15707, 26183, 26872, 13173, 15236,\r
-  3894, 10547, 20973, 4572, 2351, 3461, 21123, 6837, 5389, 9197,\r
-  22922, 15914, 15186, 20595, 565, 5296, 13420, 9312, 10492, 6126,\r
-  9783, 13742, 13633, 21967, 23236, 2750, 9780, 22997, 21593, 28233,\r
-  26356, 16560, 25272, 16281, 11767, 10767, 7588, 4857, 27563, 31926,\r
-  26786, 13930, 3165, 12496, 25597, 28311, 4443, 5255, 28428, 11,\r
-  17749, 16083, 8119, 22690, 4105, 9359, 21304, 27965, 11552, 978,\r
-  15391, 8122, 19026, 6524, 4505, 16676, 20689, 21775, 17393, 1062,\r
-  24037, 32449, 23127, 29638, 11987, 975, 24033, 16976, 1028, 23827,\r
-  30159, 1167, 16227, 17369, 6419, 11587, 16903, 10479, 30993, 23760,\r
-  19730, 8699, 2467, 22836, 27097, 16657, 19040, 16955, 7493, 2693,\r
+  14951, 644,   7724,  27113, 31367, 15707, 26183, 26872, 13173, 15236,\r
+  3894,  10547, 20973, 4572,  2351,  3461,  21123, 6837,  5389,  9197,\r
+  22922, 15914, 15186, 20595, 565,   5296,  13420, 9312,  10492, 6126,\r
+  9783,  13742, 13633, 21967, 23236, 2750,  9780,  22997, 21593, 28233,\r
+  26356, 16560, 25272, 16281, 11767, 10767, 7588,  4857,  27563, 31926,\r
+  26786, 13930, 3165,  12496, 25597, 28311, 4443,  5255,  28428, 11,\r
+  17749, 16083, 8119,  22690, 4105,  9359,  21304, 27965, 11552, 978,\r
+  15391, 8122,  19026, 6524,  4505,  16676, 20689, 21775, 17393, 1062,\r
+  24037, 32449, 23127, 29638, 11987, 975,   24033, 16976, 1028,  23827,\r
+  30159, 1167,  16227, 17369, 6419,  11587, 16903, 10479, 30993, 23760,\r
+  19730, 8699,  2467,  22836, 27097, 16657, 19040, 16955, 7493,  2693,\r
   13598, 22006, 27257, 31998, 30133, 22889, 26804, 24524, 20230, 31108,\r
-  28793, 19324, 20796, 14421, 9198, 8361, 17746, 14971, 22147, 24853,\r
-  29142, 2270, 6099, 7928, 7404, 6813, 26063, 30359, 28565, 15176,\r
-  18969, 17945, 7729, 8528, 26286, 6038, 31299, 18619, 13768, 29042,\r
-  20853, 26140, 259, 233, 15836, 1475, 21438, 21226, 19324, 11057,\r
-  27844, 3881, 5903, 1231, 29484, 26992, 18946, 2015, 29309, 15669,\r
-  6081, 2226, 25110, 1906, 8244, 8987, 15309, 12977, 23433, 1829,\r
-  26071, 26982, 29493, 32257, 29672, 25218, 11317, 15170, 922, 23621,\r
-  18074, 20045, 14355, 14676, 30276, 18442, 6370, 29707, 22766, 26848,\r
-  22571, 23572, 3435, 27361, 17412, 21049, 20526, 15425, 26398, 30326,\r
-  16656, 15885, 7336, 31827, 13902, 23321, 7024, 6513, 16593, 2875,\r
-  15436, 16994, 17843, 5814, 32696, 10685, 20734, 11769, 5824, 13682,\r
-  1463, 10634, 29473, 24156, 20251, 1597, 8875, 11797, 14120, 29097,\r
-  31209, 20238, 1631, 31452, 20996, 25311, 4297, 15182, 24037, 4827,\r
-  21560, 3092, 23194, 3816, 19407, 6998, 7931, 28302, 7364, 30211,\r
-  20109, 10317, 101, 22979, 13222, 4916, 3929, 25390, 1234, 9903,\r
-  21033, 27707, 6518, 27809, 15103, 12027, 20915, 22962, 27821, 135,\r
-  13709, 32747, 29424, 14391, 3917, 20352, 20470, 5908, 1315, 23020,\r
-  799, 17296, 30224, 19267, 27905, 11637, 7683, 3524, 13486, 28188,\r
-  17731, 19374, 4665, 30943, 32524, 17238, 8822, 12240, 15229, 8565,\r
-  10242, 12460, 12466, 21958, 23939, 28170, 24365, 5585, 15665, 26840,\r
-  13690, 513, 24982, 7688, 5906, 8445, 25489, 31879, 19073, 9525,\r
-  22945, 30575, 4804, 12475, 23648, 2173, 30709, 2901, 13390, 14021,\r
-  810, 32464, 5328, 30116, 29082, 19863, 2169, 28663, 8961, 30596,\r
-  29319, 5002, 18246, 16629, 18865, 28884, 3931, 12323, 28704, 17121,\r
-  25958, 29871, 19643, 13199, 28702, 28030, 2471, 12285, 25975, 16583,\r
-  7182, 24897, 28801, 14954, 31008, 7513, 11917, 25732, 7256, 25700,\r
-  1939, 3648, 17153, 15891, 26064, 13552, 248, 2906, 4275, 860,\r
-  4787, 8299, 12026, 23385, 4226, 15076, 13337, 7582, 26389, 10311,\r
-  15579, 9172, 14655, 12460, 8011, 8428, 3833, 6578, 12757, 23477,\r
-  30122, 21947, 3497, 30638, 30118, 13145, 20576, 16409, 244, 8451,\r
-  8418, 10576, 16212, 22797, 31623, 31836, 23424, 2519, 2428, 24772,\r
-  13747, 20036, 1897, 14499, 8040, 2669, 32592, 765, 1124, 151,\r
-  22969, 14419, 9462, 12899, 2572, 21877, 17790, 25157, 23102, 2200,\r
-  30508, 18743, 6575, 13480, 24074, 21679, 13139, 16096, 6205, 206,\r
-  28433, 23191, 10888, 8922, 25192, 18269, 5649, 14318, 21592, 13638,\r
-  31592, 3056, 6272, 17286, 28357, 19652, 9604, 19774, 24977, 23999,\r
-  27313, 30870, 17704, 32607, 10468, 15372, 19166, 7993, 21159, 19980,\r
-  25920, 25650, 14238, 12992, 28316, 19186, 32546, 23593, 6339, 26262,\r
-  13867, 4207, 2573, 6565, 29811, 2677, 19358, 23366, 23768, 2225,\r
-  27880, 23728, 32002, 15931, 113, 8929, 20551, 23075, 21974, 26771,\r
-  27083, 6408, 5393, 23660, 2540, 5350, 7927, 3957, 8925, 18224,\r
-  22276, 10189, 4240, 28959, 14939, 11167, 2010, 24137, 26633, 30801,\r
-  210, 13685, 32394, 14846, 8314, 19374, 29326, 30503, 26017, 11670,\r
-  17149, 1189, 7431, 21245, 11832, 30178, 24771, 12466, 19618, 23881,\r
-  9954, 7321, 13407, 28923, 9041, 14334, 2651, 26564, 253, 21545,\r
-  9358, 8781, 13880, 1331, 8575, 29843, 30815, 22296, 6407, 9111,\r
-  4793, 22796, 19032, 27480, 9379, 29459, 27453, 8446, 2794, 14796,\r
-  31908, 17752, 30841, 13453, 18521, 7048, 564, 18869, 27668, 6141,\r
-  8739, 17726, 5558, 15266, 30163, 11666, 21712, 12117, 15353, 23200,\r
-  9573, 13211, 21849, 814, 6129, 14482, 19686, 13425, 15017, 12839,\r
-  11051, 26587, 10245, 31880, 6377, 11060, 24188, 25821, 5378, 3820,\r
-  17806, 10803, 16789, 20144, 1032, 2744, 3179, 26683, 2948, 12590,\r
-  13970, 5231, 32047, 5786, 32583, 22180, 19407, 11324, 30234, 5696,\r
-  16132, 25028, 14412, 30343, 15309, 23491, 7548, 24757, 30287, 28256,\r
-  6018, 29770, 28882, 12364, 18844, 20902, 27661, 14840, 6856, 29397,\r
-  11427, 25861, 18288, 1708, 14829, 8188, 13900, 533, 31226, 10815,\r
-  5253, 23463, 20180, 19519, 32022, 9594, 6405, 24560, 12152, 31033,\r
-  17242, 15738, 6526, 27256, 15335, 24626, 14462, 29512, 32331, 22472,\r
-  5553, 3849, 4918, 22977, 25052, 30592, 10536, 1832, 29744, 14378,\r
-  10875, 14977, 12399, 3023, 29859, 29183, 6225, 14425, 5301, 10743,\r
-  3110, 23783, 11558, 15251, 32444, 26142, 26837, 5067, 8323, 7359,\r
-  8012, 22161, 17903, 639, 3651, 16972, 3358, 28947, 19558, 26504,\r
-  1723, 12170, 22873, 2284, 26146, 29151, 28408, 14188, 31941, 30415,\r
-  30691, 32448, 1230, 14312, 20282, 13844, 32518, 24547, 11685, 18689,\r
-  10229, 31539, 26520, 3260, 18507, 5854, 24789, 30093, 25726, 16780,\r
-  22834, 16515, 4021, 8925, 30364, 25959, 26085, 7424, 12380, 25838,\r
-  28985, 11394, 32665, 18226, 32440, 31331, 31006, 24163, 9762, 21615,\r
-  13406, 8634, 2330, 32715, 9141, 13487, 3466, 6607, 16881, 28268,\r
-  5956, 31507, 14609, 30081, 1253, 20685, 26189, 17369, 29695, 24666,\r
-  24406, 9965, 4215, 10522, 23774, 4151, 29483, 22657, 11867, 18922,\r
-  21464, 17515, 6920, 25568, 4668, 24496, 21549, 27860, 23159, 23801,\r
-  23713, 19409, 26807, 29650, 2445, 19946, 12308, 31744, 114, 15404,\r
-  26809, 21268, 22126, 3537, 18757, 16448, 13499, 2742, 28529, 19050,\r
-  9848, 29200, 15346, 13439, 29612, 31066, 9633, 5130, 11656, 14226,\r
-  18393, 13829, 20460, 20644, 12320, 17902, 7213, 29991, 12042, 27422,\r
-  4374, 2631, 12379, 20567, 9260, 3586, 24172, 18844, 8246, 2968,\r
-  5328, 3141, 19709, 13372, 26166, 11602, 17489, 28688, 14737, 23040,\r
-  6220, 31568, 17015, 32410, 11995, 25549, 22727, 20370, 30329, 31390,\r
-  29583, 26832, 22590, 3602, 19245, 30538, 2841, 32745, 26292, 8405,\r
-  11354, 3011, 6289, 7738, 16755, 20952, 11886, 15245, 1791, 31210,\r
-  22614, 12986, 12547, 632, 2842, 5217, 116, 4149, 25076, 13028,\r
-  20986, 20920, 17259, 17342, 2548, 19317, 19830, 11030, 444, 8172,\r
-  19684, 9619, 23084, 10272, 17403, 17523, 22369, 28747, 17504, 28631,\r
-  10686, 27856, 8247, 25441, 18484, 31601, 13962, 22785, 16321, 1218,\r
-  24303, 22028, 7223, 20957, 14437, 20111, 20031, 27224, 24448, 4834,\r
-  12957, 3700, 20422, 15232, 7862, 8599, 29784, 1813, 5711, 6397,\r
-  11221, 24281, 3735, 17066, 17275, 29981, 25192, 30883, 11663, 12835,\r
-  23498, 5213, 30463, 25395, 30393, 13942, 16455, 24555, 16680, 13987,\r
-  15761, 6615, 31813, 20458, 544, 19010, 25343, 23825, 6894, 12875,\r
-  14789, 14678, 15508, 8507, 2961, 6496, 2155, 13589, 14374, 28790,\r
-  11505, 2415, 14230, 13807, 25966, 18561, 14086, 7913, 7383, 21116,\r
-  29365, 8254, 14322, 28445, 28987, 19636, 19131, 15745, 1039, 25460,\r
-  15623, 22075, 12620, 8894, 8807, 21412, 27317, 13018, 18767, 13426,\r
-  13814, 15698, 17783, 19596, 10797, 1118, 31106, 14365, 26280, 3744,\r
-  25566, 1255, 26352, 15121, 13035, 1499, 22535, 20796, 25695, 1254,\r
-  21231, 25002, 29673, 18189, 8299, 2717, 23828, 5820, 27146, 29953,\r
-  29807, 18523, 31840, 7583, 23531, 27939, 32407, 16020, 5764, 10288,\r
-  17191, 27905, 32547, 22999, 5601, 16133, 9923, 5433, 11058, 3560,\r
-  24019, 5144, 5286, 10393, 27868, 7402, 24235, 2651, 16484, 3884,\r
-  15256, 27067, 3090, 2553, 24557, 13253, 10515, 24795, 29660, 18295,\r
-  13243, 21217, 15881, 1398, 11376, 14322, 27535, 2048, 8132, 6240,\r
-  6467, 5922, 6625, 25280, 572, 11563, 26922, 13306, 30611, 8032,\r
-  29727, 26012, 1383, 16113, 9857, 22132, 26916, 1580, 14775, 8541,\r
-  15621, 9713, 23665, 13913, 31960, 1894, 32139, 2528, 18434, 5611,\r
-  15924, 20088, 1218, 25937, 20303, 27782, 18618, 2118, 15897, 11364,\r
+  28793, 19324, 20796, 14421, 9198,  8361,  17746, 14971, 22147, 24853,\r
+  29142, 2270,  6099,  7928,  7404,  6813,  26063, 30359, 28565, 15176,\r
+  18969, 17945, 7729,  8528,  26286, 6038,  31299, 18619, 13768, 29042,\r
+  20853, 26140, 259,   233,   15836, 1475,  21438, 21226, 19324, 11057,\r
+  27844, 3881,  5903,  1231,  29484, 26992, 18946, 2015,  29309, 15669,\r
+  6081,  2226,  25110, 1906,  8244,  8987,  15309, 12977, 23433, 1829,\r
+  26071, 26982, 29493, 32257, 29672, 25218, 11317, 15170, 922,   23621,\r
+  18074, 20045, 14355, 14676, 30276, 18442, 6370,  29707, 22766, 26848,\r
+  22571, 23572, 3435,  27361, 17412, 21049, 20526, 15425, 26398, 30326,\r
+  16656, 15885, 7336,  31827, 13902, 23321, 7024,  6513,  16593, 2875,\r
+  15436, 16994, 17843, 5814,  32696, 10685, 20734, 11769, 5824,  13682,\r
+  1463,  10634, 29473, 24156, 20251, 1597,  8875,  11797, 14120, 29097,\r
+  31209, 20238, 1631,  31452, 20996, 25311, 4297,  15182, 24037, 4827,\r
+  21560, 3092,  23194, 3816,  19407, 6998,  7931,  28302, 7364,  30211,\r
+  20109, 10317, 101,   22979, 13222, 4916,  3929,  25390, 1234,  9903,\r
+  21033, 27707, 6518,  27809, 15103, 12027, 20915, 22962, 27821, 135,\r
+  13709, 32747, 29424, 14391, 3917,  20352, 20470, 5908,  1315,  23020,\r
+  799,   17296, 30224, 19267, 27905, 11637, 7683,  3524,  13486, 28188,\r
+  17731, 19374, 4665,  30943, 32524, 17238, 8822,  12240, 15229, 8565,\r
+  10242, 12460, 12466, 21958, 23939, 28170, 24365, 5585,  15665, 26840,\r
+  13690, 513,   24982, 7688,  5906,  8445,  25489, 31879, 19073, 9525,\r
+  22945, 30575, 4804,  12475, 23648, 2173,  30709, 2901,  13390, 14021,\r
+  810,   32464, 5328,  30116, 29082, 19863, 2169,  28663, 8961,  30596,\r
+  29319, 5002,  18246, 16629, 18865, 28884, 3931,  12323, 28704, 17121,\r
+  25958, 29871, 19643, 13199, 28702, 28030, 2471,  12285, 25975, 16583,\r
+  7182,  24897, 28801, 14954, 31008, 7513,  11917, 25732, 7256,  25700,\r
+  1939,  3648,  17153, 15891, 26064, 13552, 248,   2906,  4275,  860,\r
+  4787,  8299,  12026, 23385, 4226,  15076, 13337, 7582,  26389, 10311,\r
+  15579, 9172,  14655, 12460, 8011,  8428,  3833,  6578,  12757, 23477,\r
+  30122, 21947, 3497,  30638, 30118, 13145, 20576, 16409, 244,   8451,\r
+  8418,  10576, 16212, 22797, 31623, 31836, 23424, 2519,  2428,  24772,\r
+  13747, 20036, 1897,  14499, 8040,  2669,  32592, 765,   1124,  151,\r
+  22969, 14419, 9462,  12899, 2572,  21877, 17790, 25157, 23102, 2200,\r
+  30508, 18743, 6575,  13480, 24074, 21679, 13139, 16096, 6205,  206,\r
+  28433, 23191, 10888, 8922,  25192, 18269, 5649,  14318, 21592, 13638,\r
+  31592, 3056,  6272,  17286, 28357, 19652, 9604,  19774, 24977, 23999,\r
+  27313, 30870, 17704, 32607, 10468, 15372, 19166, 7993,  21159, 19980,\r
+  25920, 25650, 14238, 12992, 28316, 19186, 32546, 23593, 6339,  26262,\r
+  13867, 4207,  2573,  6565,  29811, 2677,  19358, 23366, 23768, 2225,\r
+  27880, 23728, 32002, 15931, 113,   8929,  20551, 23075, 21974, 26771,\r
+  27083, 6408,  5393,  23660, 2540,  5350,  7927,  3957,  8925,  18224,\r
+  22276, 10189, 4240,  28959, 14939, 11167, 2010,  24137, 26633, 30801,\r
+  210,   13685, 32394, 14846, 8314,  19374, 29326, 30503, 26017, 11670,\r
+  17149, 1189,  7431,  21245, 11832, 30178, 24771, 12466, 19618, 23881,\r
+  9954,  7321,  13407, 28923, 9041,  14334, 2651,  26564, 253,   21545,\r
+  9358,  8781,  13880, 1331,  8575,  29843, 30815, 22296, 6407,  9111,\r
+  4793,  22796, 19032, 27480, 9379,  29459, 27453, 8446,  2794,  14796,\r
+  31908, 17752, 30841, 13453, 18521, 7048,  564,   18869, 27668, 6141,\r
+  8739,  17726, 5558,  15266, 30163, 11666, 21712, 12117, 15353, 23200,\r
+  9573,  13211, 21849, 814,   6129,  14482, 19686, 13425, 15017, 12839,\r
+  11051, 26587, 10245, 31880, 6377,  11060, 24188, 25821, 5378,  3820,\r
+  17806, 10803, 16789, 20144, 1032,  2744,  3179,  26683, 2948,  12590,\r
+  13970, 5231,  32047, 5786,  32583, 22180, 19407, 11324, 30234, 5696,\r
+  16132, 25028, 14412, 30343, 15309, 23491, 7548,  24757, 30287, 28256,\r
+  6018,  29770, 28882, 12364, 18844, 20902, 27661, 14840, 6856,  29397,\r
+  11427, 25861, 18288, 1708,  14829, 8188,  13900, 533,   31226, 10815,\r
+  5253,  23463, 20180, 19519, 32022, 9594,  6405,  24560, 12152, 31033,\r
+  17242, 15738, 6526,  27256, 15335, 24626, 14462, 29512, 32331, 22472,\r
+  5553,  3849,  4918,  22977, 25052, 30592, 10536, 1832,  29744, 14378,\r
+  10875, 14977, 12399, 3023,  29859, 29183, 6225,  14425, 5301,  10743,\r
+  3110,  23783, 11558, 15251, 32444, 26142, 26837, 5067,  8323,  7359,\r
+  8012,  22161, 17903, 639,   3651,  16972, 3358,  28947, 19558, 26504,\r
+  1723,  12170, 22873, 2284,  26146, 29151, 28408, 14188, 31941, 30415,\r
+  30691, 32448, 1230,  14312, 20282, 13844, 32518, 24547, 11685, 18689,\r
+  10229, 31539, 26520, 3260,  18507, 5854,  24789, 30093, 25726, 16780,\r
+  22834, 16515, 4021,  8925,  30364, 25959, 26085, 7424,  12380, 25838,\r
+  28985, 11394, 32665, 18226, 32440, 31331, 31006, 24163, 9762,  21615,\r
+  13406, 8634,  2330,  32715, 9141,  13487, 3466,  6607,  16881, 28268,\r
+  5956,  31507, 14609, 30081, 1253,  20685, 26189, 17369, 29695, 24666,\r
+  24406, 9965,  4215,  10522, 23774, 4151,  29483, 22657, 11867, 18922,\r
+  21464, 17515, 6920,  25568, 4668,  24496, 21549, 27860, 23159, 23801,\r
+  23713, 19409, 26807, 29650, 2445,  19946, 12308, 31744, 114,   15404,\r
+  26809, 21268, 22126, 3537,  18757, 16448, 13499, 2742,  28529, 19050,\r
+  9848,  29200, 15346, 13439, 29612, 31066, 9633,  5130,  11656, 14226,\r
+  18393, 13829, 20460, 20644, 12320, 17902, 7213,  29991, 12042, 27422,\r
+  4374,  2631,  12379, 20567, 9260,  3586,  24172, 18844, 8246,  2968,\r
+  5328,  3141,  19709, 13372, 26166, 11602, 17489, 28688, 14737, 23040,\r
+  6220,  31568, 17015, 32410, 11995, 25549, 22727, 20370, 30329, 31390,\r
+  29583, 26832, 22590, 3602,  19245, 30538, 2841,  32745, 26292, 8405,\r
+  11354, 3011,  6289,  7738,  16755, 20952, 11886, 15245, 1791,  31210,\r
+  22614, 12986, 12547, 632,   2842,  5217,  116,   4149,  25076, 13028,\r
+  20986, 20920, 17259, 17342, 2548,  19317, 19830, 11030, 444,   8172,\r
+  19684, 9619,  23084, 10272, 17403, 17523, 22369, 28747, 17504, 28631,\r
+  10686, 27856, 8247,  25441, 18484, 31601, 13962, 22785, 16321, 1218,\r
+  24303, 22028, 7223,  20957, 14437, 20111, 20031, 27224, 24448, 4834,\r
+  12957, 3700,  20422, 15232, 7862,  8599,  29784, 1813,  5711,  6397,\r
+  11221, 24281, 3735,  17066, 17275, 29981, 25192, 30883, 11663, 12835,\r
+  23498, 5213,  30463, 25395, 30393, 13942, 16455, 24555, 16680, 13987,\r
+  15761, 6615,  31813, 20458, 544,   19010, 25343, 23825, 6894,  12875,\r
+  14789, 14678, 15508, 8507,  2961,  6496,  2155,  13589, 14374, 28790,\r
+  11505, 2415,  14230, 13807, 25966, 18561, 14086, 7913,  7383,  21116,\r
+  29365, 8254,  14322, 28445, 28987, 19636, 19131, 15745, 1039,  25460,\r
+  15623, 22075, 12620, 8894,  8807,  21412, 27317, 13018, 18767, 13426,\r
+  13814, 15698, 17783, 19596, 10797, 1118,  31106, 14365, 26280, 3744,\r
+  25566, 1255,  26352, 15121, 13035, 1499,  22535, 20796, 25695, 1254,\r
+  21231, 25002, 29673, 18189, 8299,  2717,  23828, 5820,  27146, 29953,\r
+  29807, 18523, 31840, 7583,  23531, 27939, 32407, 16020, 5764,  10288,\r
+  17191, 27905, 32547, 22999, 5601,  16133, 9923,  5433,  11058, 3560,\r
+  24019, 5144,  5286,  10393, 27868, 7402,  24235, 2651,  16484, 3884,\r
+  15256, 27067, 3090,  2553,  24557, 13253, 10515, 24795, 29660, 18295,\r
+  13243, 21217, 15881, 1398,  11376, 14322, 27535, 2048,  8132,  6240,\r
+  6467,  5922,  6625,  25280, 572,   11563, 26922, 13306, 30611, 8032,\r
+  29727, 26012, 1383,  16113, 9857,  22132, 26916, 1580,  14775, 8541,\r
+  15621, 9713,  23665, 13913, 31960, 1894,  32139, 2528,  18434, 5611,\r
+  15924, 20088, 1218,  25937, 20303, 27782, 18618, 2118,  15897, 11364,\r
   10923, 11028, 29709, 18099, 24960, 18060, 28165, 20211, 21646, 32572,\r
-  28321, 11345, 282, 1257, 12268, 5311, 22811, 1593, 22589, 15946,\r
-  32578, 3247, 13916, 15016, 1080, 21724, 2278, 12561, 2343, 30420,\r
-  21747, 27217, 27515, 29408, 4085, 25370, 24042, 30322, 8420, 22686,\r
-  4785, 27998, 31896, 861, 23329, 13126, 24950, 29756, 24667, 31062,\r
-  30286, 18392, 22872, 13362, 20612, 9241, 25132, 9773, 9582, 13322,\r
-  22667, 22972, 11006, 5608, 24972, 8234, 27553, 28537, 31917, 26765,\r
-  4454, 7326, 18455, 760, 27747, 11308, 23076, 9202, 14421, 7928,\r
-  21535, 15399, 25990, 7473, 4683, 30814, 26868, 5619, 7462, 32171,\r
-  22447, 32024, 16366, 13798, 20867, 6994, 26725, 16475, 32471, 9335,\r
-  13266, 23235, 9685, 2075, 19784, 22132, 6859, 12388, 298, 28116,\r
-  4049, 8986, 10735, 3603, 1965, 14590, 23075, 26906, 28659, 24413,\r
-  26542, 25534, 9841, 6116, 15449, 13370, 28105, 10934, 3982, 17628,\r
-  5472, 16060, 27999, 12030, 22647, 19516, 11979, 25144, 14488, 7598,\r
-  18236, 19412, 22324, 21195, 2899, 4738, 4746, 6630, 21736, 14925,\r
-  27082, 4991, 10317, 17614, 27771, 5142, 16083, 8608, 14618, 14397,\r
-  6800, 788, 20228, 32497, 1887, 27429, 14230, 24106, 11559, 1198,\r
-  19090, 1457, 5985, 7386, 4548, 17458, 21972, 20700, 4070, 17042,\r
-  6819, 17377, 28354, 2434, 31114, 28995, 22678, 1365, 11365, 28416,\r
-  188, 31758, 242, 13418, 8074, 10686, 21463, 14624, 25976, 30477,\r
-  15591, 60, 10624, 32278, 20641, 25550, 22219, 20856, 6905, 13450,\r
-  23945, 14761, 14172, 445, 11041, 23694, 10734, 7558, 28042, 841,\r
-  24086, 12610, 9720, 29267, 28220, 30280, 20156, 1994, 6353, 26327,\r
-  6245, 5132, 1680, 31564, 556, 8324, 17924, 18328, 20879, 6340,\r
-  8267, 3314, 11579, 2516, 11033, 5065, 24367, 27594, 15360, 25085,\r
-  543, 10651, 8430, 8526, 7702, 23345, 16887, 18965, 30816, 26046,\r
-  4180, 26162, 6823, 30287, 26284, 69, 21852, 2724, 16019, 4897,\r
-  16729, 31807, 24401, 3453, 1220, 16827, 27108, 15853, 24374, 23135,\r
-  26184, 15121, 16668, 6131, 13813, 7180, 29278, 15058, 4010, 5432,\r
-  3135, 5185, 26729, 19737, 19077, 8959, 28098, 32143, 30681, 24094,\r
-  30037, 13647, 31088, 8720, 1427, 19859, 15851, 29701, 23492, 26641,\r
-  4988, 3957, 4942, 2346, 10571, 29176, 21044, 8805, 16408, 22878,\r
-  7901, 8475, 20001, 26620, 17175, 21876, 6726, 25412, 24667, 17810,\r
-  4715, 16537, 6483, 16651, 24862, 29793, 29849, 18589, 1657, 14171,\r
-  23746, 7709, 30794, 13874, 24987, 4273, 3442, 24403, 7858, 22847,\r
-  14475, 17148, 27416, 6949, 21966, 14742, 13926, 23851, 4147, 17477,\r
-  14078, 3765, 8665, 23485, 19859, 27966, 29609, 8535, 16876, 24065,\r
-  24631, 9828, 15588, 4089, 7656, 15809, 9142, 31244, 5210, 2988,\r
-  14455, 2436, 8448, 18389, 9188, 5310, 3853, 26040, 19550, 26150,\r
-  18068, 5931, 7731, 29539, 30445, 23859, 10527, 5326, 16474, 6940,\r
-  14099, 20777, 8426, 24521, 16436, 4494, 10398, 22856, 24615, 20901,\r
-  14539, 9897, 12428, 8218, 21183, 31761, 11464, 846, 14759, 19722,\r
-  776, 5709, 27569, 28957, 30339, 29185, 13933, 30371, 14079, 13989,\r
-  27257, 6104, 20886, 18811, 29277, 1585, 7866, 6850, 20660, 32752,\r
-  20855, 2019, 18829, 25589, 3064, 11755, 15120, 14295, 7501, 16445,\r
+  28321, 11345, 282,   1257,  12268, 5311,  22811, 1593,  22589, 15946,\r
+  32578, 3247,  13916, 15016, 1080,  21724, 2278,  12561, 2343,  30420,\r
+  21747, 27217, 27515, 29408, 4085,  25370, 24042, 30322, 8420,  22686,\r
+  4785,  27998, 31896, 861,   23329, 13126, 24950, 29756, 24667, 31062,\r
+  30286, 18392, 22872, 13362, 20612, 9241,  25132, 9773,  9582,  13322,\r
+  22667, 22972, 11006, 5608,  24972, 8234,  27553, 28537, 31917, 26765,\r
+  4454,  7326,  18455, 760,   27747, 11308, 23076, 9202,  14421, 7928,\r
+  21535, 15399, 25990, 7473,  4683,  30814, 26868, 5619,  7462,  32171,\r
+  22447, 32024, 16366, 13798, 20867, 6994,  26725, 16475, 32471, 9335,\r
+  13266, 23235, 9685,  2075,  19784, 22132, 6859,  12388, 298,   28116,\r
+  4049,  8986,  10735, 3603,  1965,  14590, 23075, 26906, 28659, 24413,\r
+  26542, 25534, 9841,  6116,  15449, 13370, 28105, 10934, 3982,  17628,\r
+  5472,  16060, 27999, 12030, 22647, 19516, 11979, 25144, 14488, 7598,\r
+  18236, 19412, 22324, 21195, 2899,  4738,  4746,  6630,  21736, 14925,\r
+  27082, 4991,  10317, 17614, 27771, 5142,  16083, 8608,  14618, 14397,\r
+  6800,  788,   20228, 32497, 1887,  27429, 14230, 24106, 11559, 1198,\r
+  19090, 1457,  5985,  7386,  4548,  17458, 21972, 20700, 4070,  17042,\r
+  6819,  17377, 28354, 2434,  31114, 28995, 22678, 1365,  11365, 28416,\r
+  188,   31758, 242,   13418, 8074,  10686, 21463, 14624, 25976, 30477,\r
+  15591, 60,    10624, 32278, 20641, 25550, 22219, 20856, 6905,  13450,\r
+  23945, 14761, 14172, 445,   11041, 23694, 10734, 7558,  28042, 841,\r
+  24086, 12610, 9720,  29267, 28220, 30280, 20156, 1994,  6353,  26327,\r
+  6245,  5132,  1680,  31564, 556,   8324,  17924, 18328, 20879, 6340,\r
+  8267,  3314,  11579, 2516,  11033, 5065,  24367, 27594, 15360, 25085,\r
+  543,   10651, 8430,  8526,  7702,  23345, 16887, 18965, 30816, 26046,\r
+  4180,  26162, 6823,  30287, 26284, 69,    21852, 2724,  16019, 4897,\r
+  16729, 31807, 24401, 3453,  1220,  16827, 27108, 15853, 24374, 23135,\r
+  26184, 15121, 16668, 6131,  13813, 7180,  29278, 15058, 4010,  5432,\r
+  3135,  5185,  26729, 19737, 19077, 8959,  28098, 32143, 30681, 24094,\r
+  30037, 13647, 31088, 8720,  1427,  19859, 15851, 29701, 23492, 26641,\r
+  4988,  3957,  4942,  2346,  10571, 29176, 21044, 8805,  16408, 22878,\r
+  7901,  8475,  20001, 26620, 17175, 21876, 6726,  25412, 24667, 17810,\r
+  4715,  16537, 6483,  16651, 24862, 29793, 29849, 18589, 1657,  14171,\r
+  23746, 7709,  30794, 13874, 24987, 4273,  3442,  24403, 7858,  22847,\r
+  14475, 17148, 27416, 6949,  21966, 14742, 13926, 23851, 4147,  17477,\r
+  14078, 3765,  8665,  23485, 19859, 27966, 29609, 8535,  16876, 24065,\r
+  24631, 9828,  15588, 4089,  7656,  15809, 9142,  31244, 5210,  2988,\r
+  14455, 2436,  8448,  18389, 9188,  5310,  3853,  26040, 19550, 26150,\r
+  18068, 5931,  7731,  29539, 30445, 23859, 10527, 5326,  16474, 6940,\r
+  14099, 20777, 8426,  24521, 16436, 4494,  10398, 22856, 24615, 20901,\r
+  14539, 9897,  12428, 8218,  21183, 31761, 11464, 846,   14759, 19722,\r
+  776,   5709,  27569, 28957, 30339, 29185, 13933, 30371, 14079, 13989,\r
+  27257, 6104,  20886, 18811, 29277, 1585,  7866,  6850,  20660, 32752,\r
+  20855, 2019,  18829, 25589, 3064,  11755, 15120, 14295, 7501,  16445,\r
   26981, 21555, 19563, 14217, 16849, 11076, 21620, 27896, 22818, 23988,\r
-  30265, 30121, 10574, 4530, 17150, 21089, 21079, 16453, 1149, 18302,\r
+  30265, 30121, 10574, 4530,  17150, 21089, 21079, 16453, 1149,  18302,\r
   25201, 27872, 26157, 28973, 26983, 31542, 17347, 26589, 23355, 5967,\r
-  16633, 2292, 1549, 25564, 3727, 14272, 7997, 25288, 144, 10928,\r
-  11220, 19471, 22999, 6340, 18464, 18131, 28881, 23362, 4767, 14509,\r
-  4485, 22443, 15903, 8001, 16593, 17901, 3874, 10261, 17654, 9946,\r
-  18567, 31395, 5975, 32473, 19303, 26796, 9085, 10459, 28222, 30928,\r
-  30559, 21905, 20299, 32604, 18656, 2781, 9785, 14691, 29850, 14214,\r
-  22782, 7696, 23002, 12079, 22532, 23098, 14315, 8842, 1414, 10809,\r
-  28824, 26569, 11326, 1528, 21484, 10069, 18749, 21324, 22844, 16579,\r
-  11546, 4740, 26984, 31748, 14414, 14658, 7773, 23259, 14047, 12169,\r
-  7134, 7828, 7996, 8982, 25989, 22004, 14440, 9460, 22020, 1900,\r
-  27483, 17739, 7089, 19345, 17318, 8569, 24130, 27601, 25429, 6243,\r
-  29140, 22878, 28185, 6413, 15155, 4207, 12199, 16233, 10581, 15272,\r
-  347, 13165, 26663, 11222, 13089, 32360, 12429, 30688, 31637, 19094,\r
-  22947, 22779, 13161, 16626, 3914, 5916, 24583, 31051, 20960, 6579,\r
-  20856, 12442, 9038, 28822, 22405, 14739, 1352, 26939, 21020, 23418,\r
-  11472, 1067, 8437, 4920, 3836, 24243, 13940, 27310, 11002, 25821,\r
-  20946, 23113, 13649, 24479, 9336, 26839, 2153, 13137, 26283, 32153,\r
-  32334, 25188, 8046, 6297, 6065, 10322, 9124, 25917, 5168, 16593,\r
-  4214, 23325, 24535, 12108, 17652, 24850, 31206, 6803, 7935, 9871,\r
-  14548, 4306, 32614, 10037, 3989, 18368, 22863, 3233, 14361, 11544,\r
-  20697, 25225, 26389, 23373, 11519, 20743, 27909, 18042, 8384, 20788,\r
-  26738, 13719, 12156, 4089, 28016, 23539, 12450, 29474, 18028, 9950,\r
-  13960, 29876, 12836, 5030, 23706, 18561, 17143, 8646, 16567, 32761,\r
-  17247, 13657, 11224, 8259, 17340, 32213, 11763, 24205, 13651, 13557,\r
+  16633, 2292,  1549,  25564, 3727,  14272, 7997,  25288, 144,   10928,\r
+  11220, 19471, 22999, 6340,  18464, 18131, 28881, 23362, 4767,  14509,\r
+  4485,  22443, 15903, 8001,  16593, 17901, 3874,  10261, 17654, 9946,\r
+  18567, 31395, 5975,  32473, 19303, 26796, 9085,  10459, 28222, 30928,\r
+  30559, 21905, 20299, 32604, 18656, 2781,  9785,  14691, 29850, 14214,\r
+  22782, 7696,  23002, 12079, 22532, 23098, 14315, 8842,  1414,  10809,\r
+  28824, 26569, 11326, 1528,  21484, 10069, 18749, 21324, 22844, 16579,\r
+  11546, 4740,  26984, 31748, 14414, 14658, 7773,  23259, 14047, 12169,\r
+  7134,  7828,  7996,  8982,  25989, 22004, 14440, 9460,  22020, 1900,\r
+  27483, 17739, 7089,  19345, 17318, 8569,  24130, 27601, 25429, 6243,\r
+  29140, 22878, 28185, 6413,  15155, 4207,  12199, 16233, 10581, 15272,\r
+  347,   13165, 26663, 11222, 13089, 32360, 12429, 30688, 31637, 19094,\r
+  22947, 22779, 13161, 16626, 3914,  5916,  24583, 31051, 20960, 6579,\r
+  20856, 12442, 9038,  28822, 22405, 14739, 1352,  26939, 21020, 23418,\r
+  11472, 1067,  8437,  4920,  3836,  24243, 13940, 27310, 11002, 25821,\r
+  20946, 23113, 13649, 24479, 9336,  26839, 2153,  13137, 26283, 32153,\r
+  32334, 25188, 8046,  6297,  6065,  10322, 9124,  25917, 5168,  16593,\r
+  4214,  23325, 24535, 12108, 17652, 24850, 31206, 6803,  7935,  9871,\r
+  14548, 4306,  32614, 10037, 3989,  18368, 22863, 3233,  14361, 11544,\r
+  20697, 25225, 26389, 23373, 11519, 20743, 27909, 18042, 8384,  20788,\r
+  26738, 13719, 12156, 4089,  28016, 23539, 12450, 29474, 18028, 9950,\r
+  13960, 29876, 12836, 5030,  23706, 18561, 17143, 8646,  16567, 32761,\r
+  17247, 13657, 11224, 8259,  17340, 32213, 11763, 24205, 13651, 13557,\r
   12575, 30368, 13974, 18935, 18424, 20407, 29862, 19720, 15173, 25489,\r
-  17942, 12029, 6872, 7109, 25330, 10563, 21942, 6486, 24063, 25113,\r
-  7544, 6791, 17221, 8444, 6385, 29424, 32715, 10083, 10769, 18898,\r
-  30370, 429, 19209, 4776, 26404, 25688, 18096, 29694, 2174, 26995,\r
-  20518, 4230, 32364, 16982, 15799, 26217, 2884, 12688, 27394, 14555,\r
-  9014, 24865, 1626, 14322, 17618, 26858, 19820, 23224, 15050, 6497,\r
-  32034, 8063, 11002, 24201, 30920, 9844, 5797, 20258, 27758, 23159,\r
-  12290, 15388, 28301, 7210, 10487, 21586, 25837, 9032, 24356, 12405,\r
-  12485, 2617, 2339, 23366, 26149, 14307, 18702, 10761, 4753, 7106,\r
-  18498, 31030, 22254, 28731, 16483, 8561, 22691, 30509, 5537, 14524,\r
+  17942, 12029, 6872,  7109,  25330, 10563, 21942, 6486,  24063, 25113,\r
+  7544,  6791,  17221, 8444,  6385,  29424, 32715, 10083, 10769, 18898,\r
+  30370, 429,   19209, 4776,  26404, 25688, 18096, 29694, 2174,  26995,\r
+  20518, 4230,  32364, 16982, 15799, 26217, 2884,  12688, 27394, 14555,\r
+  9014,  24865, 1626,  14322, 17618, 26858, 19820, 23224, 15050, 6497,\r
+  32034, 8063,  11002, 24201, 30920, 9844,  5797,  20258, 27758, 23159,\r
+  12290, 15388, 28301, 7210,  10487, 21586, 25837, 9032,  24356, 12405,\r
+  12485, 2617,  2339,  23366, 26149, 14307, 18702, 10761, 4753,  7106,\r
+  18498, 31030, 22254, 28731, 16483, 8561,  22691, 30509, 5537,  14524,\r
   19960, 25802, 26169, 29676, 10689, 27813, 13118, 15449, 10817, 9483,\r
-  1689, 19930, 20297, 13463, 14927, 28913, 31648, 32257, 17666, 9538,\r
-  17831, 15927, 12219, 20554, 15165, 20655, 6374, 17485, 7393, 3579,\r
-  26782, 13200, 21526, 30878, 6699, 25545, 10508, 11294, 16073, 13780,\r
-  31612, 16986, 7595, 21927, 724, 8990, 5440, 9864, 22932, 29173,\r
-  8629, 16254, 22520, 3646, 11451, 3077, 471, 22914, 2698, 25861,\r
-  3019, 14341, 18470, 13829, 15250, 32667, 12001, 668, 10164, 18621,\r
-  8481, 24617, 6758, 21980, 13411, 14276, 7087, 1269, 11392, 25717,\r
-  26313, 32614, 15407, 419, 20170, 7168, 11980, 32207, 22148, 10077,\r
-  24408, 17794, 32681, 1652, 8384, 6787, 5427, 26474, 31586, 27470,\r
-  29954, 29868, 25549, 16066, 7367, 15930, 20168, 2074, 32290, 19782,\r
-  18071, 30494, 24071, 5629, 25977, 6298, 17254, 15269, 22901, 23312,\r
-  14603, 23272, 21846, 19370, 26307, 20079, 4853, 8050, 17856, 8627,\r
-  19126, 23749, 29758, 9744, 17493, 14597, 27751, 24092, 25827, 32399,\r
-  8820, 13110, 24075, 3821, 19990, 10594, 25242, 21836, 25364, 1364,\r
-  1087, 15664, 32053, 6346, 7822, 358, 17248, 10527, 29515, 26427,\r
-  1538, 9245, 23526, 14827, 7344, 5908, 13378, 6748, 18190, 7208,\r
-  25274, 30476, 5359, 12783, 8550, 16456, 6589, 12604, 27802, 11424,\r
-  28444, 21813, 15024, 8599, 19146, 2476, 24840, 5279, 11209, 29612,\r
-  19020, 30788, 25281, 26705, 25081, 2471, 31136, 17885, 22811, 4654,\r
-  16003, 25353, 10328, 29050, 30169, 2201, 29487, 921, 30661, 10547,\r
-  12418, 14205, 15557, 19313, 15442, 27053, 7570, 23093, 14027, 22331,\r
-  19015, 20285, 21632, 15606, 15556, 27639, 1015, 30432, 10837, 29846,\r
-  3176, 13283, 14479, 8549, 2498, 4543, 31099, 14939, 27119, 13639,\r
-  29431, 4336, 20313, 13005, 13656, 19504, 31917, 23259, 17748, 15118,\r
-  11743, 16164, 23840, 8442, 622, 953, 18645, 12470, 23785, 20608,\r
-  25112, 10597, 23474, 30435, 28410, 18917, 20226, 8133, 26653, 3678,\r
-  20525, 5562, 27161, 27675, 24103, 32631, 22045, 32665, 9031, 7815,\r
-  26074, 24798, 18508, 26176, 13980, 4620, 30878, 32502, 4026, 15414,\r
-  31702, 2414, 26673, 11890, 2175, 13973, 28556, 21296, 13342, 1906,\r
-  7687, 4042, 9329, 18778, 4083, 16988, 26101, 8803, 12380, 20949,\r
-  2986, 16923, 30442, 1102, 31770, 2681, 15621, 3995, 3992, 17683,\r
-  28220, 6176, 25542, 14482, 6120, 4582, 2138, 12899, 7180, 14319,\r
-  26913, 22704, 2944, 3526, 6468, 22671, 27471, 8025, 25546, 17529,\r
-  26973, 29451, 17758, 14077, 17485, 25094, 13138, 3509, 27297, 19150,\r
-  21477, 20602, 5411, 21020, 3009, 6356, 24708, 9705, 1224, 3508,\r
-  10820, 30409, 4624, 18278, 13521, 7034, 5420, 12225, 22259, 4797,\r
-  18606, 12961, 14951, 22372, 5097, 21143, 28107, 15021, 19452, 30174,\r
-  19898, 14542, 1548, 32657, 2359, 31697, 24272, 2332, 17743, 162,\r
-  23379, 20465, 9210, 4711, 18165, 11132, 12867, 4111, 12979, 8024,\r
-  424, 12334, 31145, 24003, 28868, 14088, 28373, 20047, 26411, 21227,\r
-  6174, 27867, 2198, 4803, 6805, 5314, 9024, 10984, 15354, 3154,\r
-  23951, 31802, 7554, 25728, 26359, 4464, 5079, 217, 12316, 1709,\r
-  16481, 23484, 28214, 3924, 20420, 23239, 28090, 3614, 426, 18319,\r
-  30775, 29546, 24002, 16532, 20861, 21972, 14857, 13940, 4101, 30984,\r
-  30280, 18782, 21645, 14041, 4317, 6858, 9475, 32397, 30911, 26471,\r
-  28324, 24187, 16573, 32085, 29541, 19417, 6150, 25237, 9874, 7375,\r
+  1689,  19930, 20297, 13463, 14927, 28913, 31648, 32257, 17666, 9538,\r
+  17831, 15927, 12219, 20554, 15165, 20655, 6374,  17485, 7393,  3579,\r
+  26782, 13200, 21526, 30878, 6699,  25545, 10508, 11294, 16073, 13780,\r
+  31612, 16986, 7595,  21927, 724,   8990,  5440,  9864,  22932, 29173,\r
+  8629,  16254, 22520, 3646,  11451, 3077,  471,   22914, 2698,  25861,\r
+  3019,  14341, 18470, 13829, 15250, 32667, 12001, 668,   10164, 18621,\r
+  8481,  24617, 6758,  21980, 13411, 14276, 7087,  1269,  11392, 25717,\r
+  26313, 32614, 15407, 419,   20170, 7168,  11980, 32207, 22148, 10077,\r
+  24408, 17794, 32681, 1652,  8384,  6787,  5427,  26474, 31586, 27470,\r
+  29954, 29868, 25549, 16066, 7367,  15930, 20168, 2074,  32290, 19782,\r
+  18071, 30494, 24071, 5629,  25977, 6298,  17254, 15269, 22901, 23312,\r
+  14603, 23272, 21846, 19370, 26307, 20079, 4853,  8050,  17856, 8627,\r
+  19126, 23749, 29758, 9744,  17493, 14597, 27751, 24092, 25827, 32399,\r
+  8820,  13110, 24075, 3821,  19990, 10594, 25242, 21836, 25364, 1364,\r
+  1087,  15664, 32053, 6346,  7822,  358,   17248, 10527, 29515, 26427,\r
+  1538,  9245,  23526, 14827, 7344,  5908,  13378, 6748,  18190, 7208,\r
+  25274, 30476, 5359,  12783, 8550,  16456, 6589,  12604, 27802, 11424,\r
+  28444, 21813, 15024, 8599,  19146, 2476,  24840, 5279,  11209, 29612,\r
+  19020, 30788, 25281, 26705, 25081, 2471,  31136, 17885, 22811, 4654,\r
+  16003, 25353, 10328, 29050, 30169, 2201,  29487, 921,   30661, 10547,\r
+  12418, 14205, 15557, 19313, 15442, 27053, 7570,  23093, 14027, 22331,\r
+  19015, 20285, 21632, 15606, 15556, 27639, 1015,  30432, 10837, 29846,\r
+  3176,  13283, 14479, 8549,  2498,  4543,  31099, 14939, 27119, 13639,\r
+  29431, 4336,  20313, 13005, 13656, 19504, 31917, 23259, 17748, 15118,\r
+  11743, 16164, 23840, 8442,  622,   953,   18645, 12470, 23785, 20608,\r
+  25112, 10597, 23474, 30435, 28410, 18917, 20226, 8133,  26653, 3678,\r
+  20525, 5562,  27161, 27675, 24103, 32631, 22045, 32665, 9031,  7815,\r
+  26074, 24798, 18508, 26176, 13980, 4620,  30878, 32502, 4026,  15414,\r
+  31702, 2414,  26673, 11890, 2175,  13973, 28556, 21296, 13342, 1906,\r
+  7687,  4042,  9329,  18778, 4083,  16988, 26101, 8803,  12380, 20949,\r
+  2986,  16923, 30442, 1102,  31770, 2681,  15621, 3995,  3992,  17683,\r
+  28220, 6176,  25542, 14482, 6120,  4582,  2138,  12899, 7180,  14319,\r
+  26913, 22704, 2944,  3526,  6468,  22671, 27471, 8025,  25546, 17529,\r
+  26973, 29451, 17758, 14077, 17485, 25094, 13138, 3509,  27297, 19150,\r
+  21477, 20602, 5411,  21020, 3009,  6356,  24708, 9705,  1224,  3508,\r
+  10820, 30409, 4624,  18278, 13521, 7034,  5420,  12225, 22259, 4797,\r
+  18606, 12961, 14951, 22372, 5097,  21143, 28107, 15021, 19452, 30174,\r
+  19898, 14542, 1548,  32657, 2359,  31697, 24272, 2332,  17743, 162,\r
+  23379, 20465, 9210,  4711,  18165, 11132, 12867, 4111,  12979, 8024,\r
+  424,   12334, 31145, 24003, 28868, 14088, 28373, 20047, 26411, 21227,\r
+  6174,  27867, 2198,  4803,  6805,  5314,  9024,  10984, 15354, 3154,\r
+  23951, 31802, 7554,  25728, 26359, 4464,  5079,  217,   12316, 1709,\r
+  16481, 23484, 28214, 3924,  20420, 23239, 28090, 3614,  426,   18319,\r
+  30775, 29546, 24002, 16532, 20861, 21972, 14857, 13940, 4101,  30984,\r
+  30280, 18782, 21645, 14041, 4317,  6858,  9475,  32397, 30911, 26471,\r
+  28324, 24187, 16573, 32085, 29541, 19417, 6150,  25237, 9874,  7375,\r
   11246, 16318, 15541, 26831, 22255, 25329, 29369, 17193, 16622, 28430,\r
-  20559, 986, 21696, 2856, 27025, 4773, 12013, 9783, 25573, 26726,\r
-  27060, 8973, 16933, 15010, 27215, 140, 15357, 1378, 4984, 21013,\r
-  9364, 26434, 299, 7235, 9326, 965, 12718, 27098, 19089, 24555,\r
-  16335, 11514, 14566, 27910, 4717, 16537, 28643, 13769, 9529, 7728,\r
-  32103, 24994, 20158, 7091, 4837, 586, 10143, 17863, 18117, 24474,\r
-  30496, 10800, 1287, 13728, 18664, 9864, 29482, 6386, 4102, 3895,\r
+  20559, 986,   21696, 2856,  27025, 4773,  12013, 9783,  25573, 26726,\r
+  27060, 8973,  16933, 15010, 27215, 140,   15357, 1378,  4984,  21013,\r
+  9364,  26434, 299,   7235,  9326,  965,   12718, 27098, 19089, 24555,\r
+  16335, 11514, 14566, 27910, 4717,  16537, 28643, 13769, 9529,  7728,\r
+  32103, 24994, 20158, 7091,  4837,  586,   10143, 17863, 18117, 24474,\r
+  30496, 10800, 1287,  13728, 18664, 9864,  29482, 6386,  4102,  3895,\r
   19276, 30018, 31537, 17055, 29330, 23091, 24148, 31895, 20170, 2667,\r
-  21834, 32283, 8015, 233, 997, 23873, 23853, 24729, 5942, 4463,\r
-  26246, 550, 27656, 4044, 31029, 5136, 32430, 3060, 16560, 254,\r
-  2047, 12528, 31539, 4181, 27550, 26213, 31259, 29961, 23423, 30219,\r
-  400, 16052, 21670, 9569, 19302, 24805, 22834, 6048, 12613, 17594,\r
-  2971, 3053, 16904, 6321, 3896, 19410, 18020, 21179, 20996, 24047,\r
-  30922, 6290, 9121, 20717, 29838, 589, 15773, 12980, 8264, 27442,\r
-  8437, 2014, 6011, 17611, 27863, 22379, 22388, 8252, 4780, 7862,\r
-  13173, 25043, 2902, 16807, 21523, 21217, 29110, 19243, 17885, 1480,\r
-  9842, 4577, 23358, 16470, 24821, 5399, 26021, 24657, 20919, 9716,\r
-  2530, 28243, 14782, 12534, 13268, 21208, 7013, 15264, 27969, 24982,\r
-  26716, 27244, 7173, 12045, 20720, 8967, 27503, 25694, 6284, 7869,\r
-  25832, 1376, 4992, 306, 31701, 23793, 12802, 18260, 4287, 906,\r
-  15474, 8845, 12209, 13335, 9443, 5181, 3554, 25349, 4566, 23911,\r
-  2708, 19356, 1608, 5803, 14140, 26511, 19184, 1140, 10979, 1233,\r
-  31938, 31602, 9420, 28075, 25783, 26955, 16983, 22284, 31952, 21901,\r
-  19493, 2336, 18009, 28392, 24189, 30243, 21867, 30874, 28911, 13176,\r
-  13748, 11306, 311, 2293, 3194, 25433, 25956, 2690, 7134, 7766,\r
-  2361, 28642, 2910, 14897, 6867, 7888, 6558, 27538, 27276, 6990,\r
-  7016, 20907, 544, 21050, 27633, 13675, 14094, 29218, 12894, 18676,\r
-  15425, 18009, 8326, 31568, 30448, 18506, 3834, 13407, 6851, 23309,\r
-  6723, 3348, 20791, 25912, 9578, 22497, 28739, 15608, 26046, 3440,\r
-  1084, 6752, 23505, 29076, 12534, 1024, 24004, 1151, 11820, 27066,\r
-  5828, 5173, 25377, 25041, 8149, 577, 25992, 15427, 5582, 4518,\r
-  24481, 24665, 20645, 20760, 8614, 10364, 8173, 30060, 25189, 12362,\r
-  12445, 14414, 29486, 18665, 19, 3890, 27375, 1947, 89, 20109,\r
-  3230, 8851, 20902, 3396, 27863, 4104, 13608, 23652, 6855, 7047,\r
-  7424, 10005, 20552, 25997, 32143, 20169, 27981, 341, 17392, 22457,\r
-  17025, 9455, 5573, 14738, 28459, 8082, 15927, 10347, 22101, 2611,\r
-  27704, 27131, 28461, 26198, 9739, 2825, 29867, 7973, 5639, 2339,\r
-  14452, 8383, 5272, 17555, 7423, 31186, 4998, 20111, 31478, 15212,\r
-  20090, 26544, 30175, 2830, 25790, 17062, 1019, 6915, 16452, 24361,\r
-  11630, 31983, 28138, 4402, 18081, 683, 19196, 2156, 10725, 8528,\r
-  11258, 27621, 13401, 2706, 24732, 24074, 2573, 28752, 14612, 31954,\r
-  25959, 9832, 28819, 12857, 30150, 5840, 8462, 26864, 4454, 15331,\r
-  9282, 31059, 16004, 5368, 1526, 25243, 22466, 18745, 27520, 9301,\r
-  20428, 27827, 5258, 19475, 22588, 7081, 22806, 2913, 28603, 24622,\r
-  18624, 27130, 7017, 5619, 20291, 26684, 20352, 16477, 575, 9690,\r
-  19252, 1754, 31802, 24785, 27613, 19318, 26852, 24733, 15191, 4009,\r
-  9887, 8620, 15785, 7027, 8510, 21779, 16870, 6827, 18957, 2176,\r
-  14929, 9365, 20754, 2671, 24516, 25010, 915, 24225, 9299, 17372,\r
-  29657, 22218, 14636, 1170, 20019, 9099, 11201, 23952, 32573, 29087,\r
-  24106, 12194, 3937, 26457, 24260, 3003, 22431, 5710, 25375, 21057,\r
-  29578, 13647, 27159, 23724, 5267, 13978, 18752, 25935, 6794, 3664,\r
-  10632, 8565, 5474, 15658, 14103, 16816, 5173, 29544, 2170, 19566,\r
-  25991, 24587, 257, 1741, 11471, 68, 12901, 24497, 28980, 812,\r
-  430, 4371, 2452, 5557, 4948, 27548, 2506, 10977, 17061, 114,\r
-  5425, 5170, 10342, 7506, 14948, 32353, 29885, 20191, 15432, 9811,\r
-  8271, 23865, 27725, 23112, 14501, 30418, 31216, 6998, 19412, 32125,\r
+  21834, 32283, 8015,  233,   997,   23873, 23853, 24729, 5942,  4463,\r
+  26246, 550,   27656, 4044,  31029, 5136,  32430, 3060,  16560, 254,\r
+  2047,  12528, 31539, 4181,  27550, 26213, 31259, 29961, 23423, 30219,\r
+  400,   16052, 21670, 9569,  19302, 24805, 22834, 6048,  12613, 17594,\r
+  2971,  3053,  16904, 6321,  3896,  19410, 18020, 21179, 20996, 24047,\r
+  30922, 6290,  9121,  20717, 29838, 589,   15773, 12980, 8264,  27442,\r
+  8437,  2014,  6011,  17611, 27863, 22379, 22388, 8252,  4780,  7862,\r
+  13173, 25043, 2902,  16807, 21523, 21217, 29110, 19243, 17885, 1480,\r
+  9842,  4577,  23358, 16470, 24821, 5399,  26021, 24657, 20919, 9716,\r
+  2530,  28243, 14782, 12534, 13268, 21208, 7013,  15264, 27969, 24982,\r
+  26716, 27244, 7173,  12045, 20720, 8967,  27503, 25694, 6284,  7869,\r
+  25832, 1376,  4992,  306,   31701, 23793, 12802, 18260, 4287,  906,\r
+  15474, 8845,  12209, 13335, 9443,  5181,  3554,  25349, 4566,  23911,\r
+  2708,  19356, 1608,  5803,  14140, 26511, 19184, 1140,  10979, 1233,\r
+  31938, 31602, 9420,  28075, 25783, 26955, 16983, 22284, 31952, 21901,\r
+  19493, 2336,  18009, 28392, 24189, 30243, 21867, 30874, 28911, 13176,\r
+  13748, 11306, 311,   2293,  3194,  25433, 25956, 2690,  7134,  7766,\r
+  2361,  28642, 2910,  14897, 6867,  7888,  6558,  27538, 27276, 6990,\r
+  7016,  20907, 544,   21050, 27633, 13675, 14094, 29218, 12894, 18676,\r
+  15425, 18009, 8326,  31568, 30448, 18506, 3834,  13407, 6851,  23309,\r
+  6723,  3348,  20791, 25912, 9578,  22497, 28739, 15608, 26046, 3440,\r
+  1084,  6752,  23505, 29076, 12534, 1024,  24004, 1151,  11820, 27066,\r
+  5828,  5173,  25377, 25041, 8149,  577,   25992, 15427, 5582,  4518,\r
+  24481, 24665, 20645, 20760, 8614,  10364, 8173,  30060, 25189, 12362,\r
+  12445, 14414, 29486, 18665, 19,    3890,  27375, 1947,  89,    20109,\r
+  3230,  8851,  20902, 3396,  27863, 4104,  13608, 23652, 6855,  7047,\r
+  7424,  10005, 20552, 25997, 32143, 20169, 27981, 341,   17392, 22457,\r
+  17025, 9455,  5573,  14738, 28459, 8082,  15927, 10347, 22101, 2611,\r
+  27704, 27131, 28461, 26198, 9739,  2825,  29867, 7973,  5639,  2339,\r
+  14452, 8383,  5272,  17555, 7423,  31186, 4998,  20111, 31478, 15212,\r
+  20090, 26544, 30175, 2830,  25790, 17062, 1019,  6915,  16452, 24361,\r
+  11630, 31983, 28138, 4402,  18081, 683,   19196, 2156,  10725, 8528,\r
+  11258, 27621, 13401, 2706,  24732, 24074, 2573,  28752, 14612, 31954,\r
+  25959, 9832,  28819, 12857, 30150, 5840,  8462,  26864, 4454,  15331,\r
+  9282,  31059, 16004, 5368,  1526,  25243, 22466, 18745, 27520, 9301,\r
+  20428, 27827, 5258,  19475, 22588, 7081,  22806, 2913,  28603, 24622,\r
+  18624, 27130, 7017,  5619,  20291, 26684, 20352, 16477, 575,   9690,\r
+  19252, 1754,  31802, 24785, 27613, 19318, 26852, 24733, 15191, 4009,\r
+  9887,  8620,  15785, 7027,  8510,  21779, 16870, 6827,  18957, 2176,\r
+  14929, 9365,  20754, 2671,  24516, 25010, 915,   24225, 9299,  17372,\r
+  29657, 22218, 14636, 1170,  20019, 9099,  11201, 23952, 32573, 29087,\r
+  24106, 12194, 3937,  26457, 24260, 3003,  22431, 5710,  25375, 21057,\r
+  29578, 13647, 27159, 23724, 5267,  13978, 18752, 25935, 6794,  3664,\r
+  10632, 8565,  5474,  15658, 14103, 16816, 5173,  29544, 2170,  19566,\r
+  25991, 24587, 257,   1741,  11471, 68,    12901, 24497, 28980, 812,\r
+  430,   4371,  2452,  5557,  4948,  27548, 2506,  10977, 17061, 114,\r
+  5425,  5170,  10342, 7506,  14948, 32353, 29885, 20191, 15432, 9811,\r
+  8271,  23865, 27725, 23112, 14501, 30418, 31216, 6998,  19412, 32125,\r
   23429, 29462, 14173, 10696, 13363, 20893, 24146, 30860, 23360, 1965,\r
-  2746, 5826, 26766, 12589, 32311, 16280, 27238, 9175, 30182, 16581,\r
-  10357, 13873, 9607, 6425, 6164, 29374, 28126, 25944, 26061, 2933,\r
-  21080, 3912, 14362, 8562, 29170, 29449, 3951, 13548, 1879, 28325,\r
-  26491, 20839, 13384, 4072, 32172, 18986, 7233, 21618, 24817, 6900,\r
-  4698, 12298, 11971, 16619, 24171, 19765, 8550, 8149, 23923, 15367,\r
-  21356, 18314, 315, 826, 23676, 11689, 29494, 18301, 11089, 12171,\r
-  24236, 32014, 16645, 28789, 9751, 22411, 12688, 26642, 1998, 27654,\r
-  3468, 13600, 30176, 14679, 6459, 2153, 9539, 2742, 29898, 15349,\r
-  6190, 26761, 6615, 27262, 10179, 2938, 21042, 6948, 20721, 1485,\r
-  3040, 21858, 18585, 5872, 11878, 12609, 6895, 23892, 21828, 14283,\r
-  23076, 23164, 5055, 10179, 8258, 32084, 9699, 29331, 26711, 9923,\r
-  13001, 1414, 725, 23683, 1046, 13111, 10553, 7729, 22212, 20810,\r
-  29931, 4256, 10533, 24153, 15717, 29555, 10788, 17457, 8600, 5355,\r
-  11727, 2623, 16523, 14333, 19218, 3141, 25926, 8360, 1733, 2385,\r
-  10734, 14981, 12266, 7920, 22065, 3488, 20783, 1183, 31973, 30086,\r
-  23483, 7042, 7403, 20127, 28454, 9817, 18778, 3518, 25289, 15791,\r
-  7385, 30199, 29753, 21588, 31821, 24753, 16142, 24590, 27829, 19451,\r
-  25065, 31372, 81, 8996, 29877, 3739, 7946, 30085, 13356, 26013,\r
-  11790, 4002, 1693, 10550, 23227, 10866, 15853, 11592, 3262, 9466,\r
-  15069, 5666, 17276, 31777, 21898, 12020, 25265, 29887, 12090, 1158,\r
-  12886, 11255, 20821, 6186, 5577, 455, 15794, 16112, 15912, 4573,\r
-  21524, 280, 23549, 11948, 12533, 3533, 5153, 4800, 27010, 5904,\r
-  15322, 15438, 18662, 10738, 8263, 10000, 29387, 22278, 23806, 22607,\r
-  3870, 16150, 1523, 28994, 25363, 22549, 10396, 15254, 31594, 32341,\r
-  26706, 25678, 19440, 9722, 14843, 22733, 26696, 16559, 742, 31281,\r
-  14827, 11159, 7926, 6883, 22382, 14726, 4611, 31340, 24836, 11634,\r
-  26749, 13195, 1603, 14628, 2898, 20612, 6443, 21555, 2834, 31162,\r
-  21092, 32563, 9810, 29312, 10951, 18218, 3918, 22573, 28192, 7491,\r
-  13522, 22382, 27442, 22215, 4698, 19425, 25852, 26952, 19320, 32223,\r
-  10555, 14112, 5750, 29337, 28720, 26, 14908, 614, 27043, 19054,\r
-  9077, 10587, 6952, 22515, 21742, 17949, 29601, 31632, 14142, 15091,\r
-  14340, 25331, 2988, 9503, 11615, 10374, 1613, 7791, 9241, 16799,\r
-  21357, 15631, 18554, 7416, 3120, 17825, 23661, 1374, 24185, 17295,\r
-  16005, 7341, 27659, 31648, 25151, 763, 9455, 27850, 7559, 32276,\r
-  8469, 21320, 28541, 13607, 15678, 25068, 9336, 21694, 32536, 9653,\r
-  31563, 12019, 1195, 18340, 12232, 11233, 757, 8396, 3715, 7770,\r
-  6097, 21673, 30169, 20696, 29470, 26034, 26672, 24245, 6940, 30769,\r
-  4991, 11678, 20505, 14163, 29202, 6981, 21326, 4219, 26759, 13142,\r
-  5380, 14556, 1309, 429, 3579, 12615, 17454, 21702, 18443, 15425,\r
-  32249, 1140, 23052, 31321, 24997, 4310, 23284, 8377, 8579, 11655,\r
-  4159, 32250, 13460, 3350, 23444, 16701, 20811, 182, 11173, 14199,\r
-  1427, 16438, 29783, 29452, 4116, 28211, 29219, 4512, 24242, 11404,\r
-  15547, 5161, 22103, 21782, 27889, 32073, 18419, 10897, 22997, 10716,\r
-  14017, 5595, 12574, 6093, 21451, 17252, 28364, 3885, 21168, 13538,\r
-  30731, 24966, 31653, 6982, 23897, 13164, 7866, 3310, 2027, 1110,\r
-  19551, 27676, 22093, 26796, 30502, 4519, 27722, 10785, 25290, 4080,\r
-  14859, 16963, 1137, 8728, 32387, 25424, 14382, 7024, 18698, 844,\r
-  28618, 27441, 15943, 7504, 16068, 2158, 9300, 7461, 26518, 23110,\r
-  31261, 10514, 20026, 28766, 7689, 15857, 29677, 8079, 18397, 20872,\r
-  24627, 22235, 23005, 28439, 6939, 16550, 19764, 558, 7364, 1058,\r
+  2746,  5826,  26766, 12589, 32311, 16280, 27238, 9175,  30182, 16581,\r
+  10357, 13873, 9607,  6425,  6164,  29374, 28126, 25944, 26061, 2933,\r
+  21080, 3912,  14362, 8562,  29170, 29449, 3951,  13548, 1879,  28325,\r
+  26491, 20839, 13384, 4072,  32172, 18986, 7233,  21618, 24817, 6900,\r
+  4698,  12298, 11971, 16619, 24171, 19765, 8550,  8149,  23923, 15367,\r
+  21356, 18314, 315,   826,   23676, 11689, 29494, 18301, 11089, 12171,\r
+  24236, 32014, 16645, 28789, 9751,  22411, 12688, 26642, 1998,  27654,\r
+  3468,  13600, 30176, 14679, 6459,  2153,  9539,  2742,  29898, 15349,\r
+  6190,  26761, 6615,  27262, 10179, 2938,  21042, 6948,  20721, 1485,\r
+  3040,  21858, 18585, 5872,  11878, 12609, 6895,  23892, 21828, 14283,\r
+  23076, 23164, 5055,  10179, 8258,  32084, 9699,  29331, 26711, 9923,\r
+  13001, 1414,  725,   23683, 1046,  13111, 10553, 7729,  22212, 20810,\r
+  29931, 4256,  10533, 24153, 15717, 29555, 10788, 17457, 8600,  5355,\r
+  11727, 2623,  16523, 14333, 19218, 3141,  25926, 8360,  1733,  2385,\r
+  10734, 14981, 12266, 7920,  22065, 3488,  20783, 1183,  31973, 30086,\r
+  23483, 7042,  7403,  20127, 28454, 9817,  18778, 3518,  25289, 15791,\r
+  7385,  30199, 29753, 21588, 31821, 24753, 16142, 24590, 27829, 19451,\r
+  25065, 31372, 81,    8996,  29877, 3739,  7946,  30085, 13356, 26013,\r
+  11790, 4002,  1693,  10550, 23227, 10866, 15853, 11592, 3262,  9466,\r
+  15069, 5666,  17276, 31777, 21898, 12020, 25265, 29887, 12090, 1158,\r
+  12886, 11255, 20821, 6186,  5577,  455,   15794, 16112, 15912, 4573,\r
+  21524, 280,   23549, 11948, 12533, 3533,  5153,  4800,  27010, 5904,\r
+  15322, 15438, 18662, 10738, 8263,  10000, 29387, 22278, 23806, 22607,\r
+  3870,  16150, 1523,  28994, 25363, 22549, 10396, 15254, 31594, 32341,\r
+  26706, 25678, 19440, 9722,  14843, 22733, 26696, 16559, 742,   31281,\r
+  14827, 11159, 7926,  6883,  22382, 14726, 4611,  31340, 24836, 11634,\r
+  26749, 13195, 1603,  14628, 2898,  20612, 6443,  21555, 2834,  31162,\r
+  21092, 32563, 9810,  29312, 10951, 18218, 3918,  22573, 28192, 7491,\r
+  13522, 22382, 27442, 22215, 4698,  19425, 25852, 26952, 19320, 32223,\r
+  10555, 14112, 5750,  29337, 28720, 26,    14908, 614,   27043, 19054,\r
+  9077,  10587, 6952,  22515, 21742, 17949, 29601, 31632, 14142, 15091,\r
+  14340, 25331, 2988,  9503,  11615, 10374, 1613,  7791,  9241,  16799,\r
+  21357, 15631, 18554, 7416,  3120,  17825, 23661, 1374,  24185, 17295,\r
+  16005, 7341,  27659, 31648, 25151, 763,   9455,  27850, 7559,  32276,\r
+  8469,  21320, 28541, 13607, 15678, 25068, 9336,  21694, 32536, 9653,\r
+  31563, 12019, 1195,  18340, 12232, 11233, 757,   8396,  3715,  7770,\r
+  6097,  21673, 30169, 20696, 29470, 26034, 26672, 24245, 6940,  30769,\r
+  4991,  11678, 20505, 14163, 29202, 6981,  21326, 4219,  26759, 13142,\r
+  5380,  14556, 1309,  429,   3579,  12615, 17454, 21702, 18443, 15425,\r
+  32249, 1140,  23052, 31321, 24997, 4310,  23284, 8377,  8579,  11655,\r
+  4159,  32250, 13460, 3350,  23444, 16701, 20811, 182,   11173, 14199,\r
+  1427,  16438, 29783, 29452, 4116,  28211, 29219, 4512,  24242, 11404,\r
+  15547, 5161,  22103, 21782, 27889, 32073, 18419, 10897, 22997, 10716,\r
+  14017, 5595,  12574, 6093,  21451, 17252, 28364, 3885,  21168, 13538,\r
+  30731, 24966, 31653, 6982,  23897, 13164, 7866,  3310,  2027,  1110,\r
+  19551, 27676, 22093, 26796, 30502, 4519,  27722, 10785, 25290, 4080,\r
+  14859, 16963, 1137,  8728,  32387, 25424, 14382, 7024,  18698, 844,\r
+  28618, 27441, 15943, 7504,  16068, 2158,  9300,  7461,  26518, 23110,\r
+  31261, 10514, 20026, 28766, 7689,  15857, 29677, 8079,  18397, 20872,\r
+  24627, 22235, 23005, 28439, 6939,  16550, 19764, 558,   7364,  1058,\r
   15765, 17345, 22048, 15116, 22563, 32126, 14072, 28566, 12686, 5982,\r
-  21808, 13988, 18303, 9083, 6477, 14906, 12599, 23585, 5172, 18485,\r
+  21808, 13988, 18303, 9083,  6477,  14906, 12599, 23585, 5172,  18485,\r
   17267, 18471, 25140, 14650, 11154, 31104, 16199, 17389, 17913, 6669,\r
-  12437, 4195, 13239, 15029, 26426, 8153, 29541, 6328, 16457, 23718,\r
-  336, 19776, 1553, 26222, 17115, 6970, 22175, 28313, 16670, 20323,\r
-  21380, 14595, 30419, 26278, 32472, 5365, 13683, 28325, 27006, 25173,\r
-  26012, 21654, 5802, 30489, 9910, 5712, 14497, 30977, 4566, 2469,\r
-  10944, 32646, 9186, 11763, 19648, 4622, 4855, 15350, 9016, 22113,\r
-  4871, 26592, 24931, 864, 19911, 2476, 16420, 27637, 4552, 8111,\r
-  17991, 13894, 31971, 24432, 26122, 4910, 9691, 18617, 5084, 2541,\r
-  2366, 28398, 14948, 11294, 15756, 27806, 12229, 17898, 12955, 13656,\r
-  4129, 24188, 58, 14784, 8540, 7348, 2069, 4577, 9250, 25632,\r
-  28377, 8645, 13867, 15912, 12440, 27715, 10685, 25480, 21614, 2073,\r
-  30323, 31236, 869, 27451, 10046, 23126, 1686, 106, 27049, 29292,\r
-  28817, 15111, 8801, 6096, 30207, 7466, 10996, 24168, 14726, 25583,\r
-  7385, 18271, 3821, 19984, 19889, 23651, 31105, 12473, 24780, 2833,\r
-  27063, 20119, 4591, 21677, 32274, 9523, 7508, 9751, 19271, 9342,\r
-  26867, 27642, 28576, 1196, 21248, 14151, 30110, 11846, 18869, 1506,\r
-  18914, 26747, 4177, 923, 18509, 16824, 21857, 22367, 9319, 26232,\r
-  32318, 20655, 12541, 23132, 19415, 2386, 19215, 18302, 15536, 20295,\r
-  27625, 22531, 20523, 27390, 9871, 19951, 3847, 5576, 5214, 19773,\r
-  32038, 13451, 29937, 3120, 22675, 10938, 1346, 24036, 18883, 22916,\r
-  21009, 19240, 26907, 8012, 2442, 11664, 15795, 27482, 4130, 197,\r
-  6490, 14800, 23746, 24096, 30170, 3039, 24615, 22135, 14205, 12346,\r
-  31625, 7735, 30927, 28619, 19066, 16307, 17318, 29350, 17426, 18364,\r
-  23392, 28987, 30537, 8306, 31852, 1487, 26276, 3673, 13580, 12845,\r
-  18196, 944, 15192, 28056, 9755, 15870, 25735, 20229, 15152, 25069,\r
-  8554, 10119, 26725, 2395, 9273, 8459, 11847, 30639, 5010, 13637,\r
-  5893, 26729, 28351, 4330, 23765, 11262, 1848, 14112, 20372, 1762,\r
-  13160, 31027, 15788, 1766, 7860, 5769, 25659, 17092, 23226, 6360,\r
-  10866, 14328, 5590, 16534, 11323, 15058, 6891, 5553, 22558, 11466,\r
-  32352, 28801, 9317, 27923, 7272, 3835, 8062, 14195, 19591, 2599,\r
-  24482, 25937, 28242, 16340, 5556, 17680, 13174, 1162, 18284, 31643,\r
-  19195, 12736, 29876, 9281, 20938, 25679, 11346, 8900, 11373, 32551,\r
-  21448, 23468, 11799, 17984, 9848, 18145, 12516, 9684, 12300, 4217,\r
-  865, 31180, 17941, 15311, 20303, 27000, 17650, 31957, 23972, 11138,\r
-  5108, 15275, 23507, 17957, 13504, 30320, 1613, 8090, 25076, 30040,\r
-  23624, 29395, 269, 1278, 16575, 31852, 27528, 11004, 11450, 29663,\r
-  21319, 2234, 22223, 9463, 17975, 24707, 29673, 15751, 5424, 28894,\r
-  30024, 9051, 8732, 6683, 26569, 26223, 22876, 556, 22632, 9055,\r
-  23143, 10934, 25091, 27167, 5044, 11624, 18529, 31980, 21979, 4748,\r
-  17522, 31618, 8695, 30171, 26072, 20112, 14158, 28054, 11687, 26473,\r
-  9268, 26578, 18025, 10236, 24108, 29204, 32102, 1798, 9553, 7965,\r
-  24866, 17542, 14068, 32519, 10534, 17010, 4999, 23953, 19203, 21928,\r
-  23481, 15032, 24725, 8999, 2275, 12679, 17285, 23935, 1187, 16687,\r
-  529, 30342, 25542, 11354, 4368, 6477, 18540, 25277, 24368, 82,\r
+  12437, 4195,  13239, 15029, 26426, 8153,  29541, 6328,  16457, 23718,\r
+  336,   19776, 1553,  26222, 17115, 6970,  22175, 28313, 16670, 20323,\r
+  21380, 14595, 30419, 26278, 32472, 5365,  13683, 28325, 27006, 25173,\r
+  26012, 21654, 5802,  30489, 9910,  5712,  14497, 30977, 4566,  2469,\r
+  10944, 32646, 9186,  11763, 19648, 4622,  4855,  15350, 9016,  22113,\r
+  4871,  26592, 24931, 864,   19911, 2476,  16420, 27637, 4552,  8111,\r
+  17991, 13894, 31971, 24432, 26122, 4910,  9691,  18617, 5084,  2541,\r
+  2366,  28398, 14948, 11294, 15756, 27806, 12229, 17898, 12955, 13656,\r
+  4129,  24188, 58,    14784, 8540,  7348,  2069,  4577,  9250,  25632,\r
+  28377, 8645,  13867, 15912, 12440, 27715, 10685, 25480, 21614, 2073,\r
+  30323, 31236, 869,   27451, 10046, 23126, 1686,  106,   27049, 29292,\r
+  28817, 15111, 8801,  6096,  30207, 7466,  10996, 24168, 14726, 25583,\r
+  7385,  18271, 3821,  19984, 19889, 23651, 31105, 12473, 24780, 2833,\r
+  27063, 20119, 4591,  21677, 32274, 9523,  7508,  9751,  19271, 9342,\r
+  26867, 27642, 28576, 1196,  21248, 14151, 30110, 11846, 18869, 1506,\r
+  18914, 26747, 4177,  923,   18509, 16824, 21857, 22367, 9319,  26232,\r
+  32318, 20655, 12541, 23132, 19415, 2386,  19215, 18302, 15536, 20295,\r
+  27625, 22531, 20523, 27390, 9871,  19951, 3847,  5576,  5214,  19773,\r
+  32038, 13451, 29937, 3120,  22675, 10938, 1346,  24036, 18883, 22916,\r
+  21009, 19240, 26907, 8012,  2442,  11664, 15795, 27482, 4130,  197,\r
+  6490,  14800, 23746, 24096, 30170, 3039,  24615, 22135, 14205, 12346,\r
+  31625, 7735,  30927, 28619, 19066, 16307, 17318, 29350, 17426, 18364,\r
+  23392, 28987, 30537, 8306,  31852, 1487,  26276, 3673,  13580, 12845,\r
+  18196, 944,   15192, 28056, 9755,  15870, 25735, 20229, 15152, 25069,\r
+  8554,  10119, 26725, 2395,  9273,  8459,  11847, 30639, 5010,  13637,\r
+  5893,  26729, 28351, 4330,  23765, 11262, 1848,  14112, 20372, 1762,\r
+  13160, 31027, 15788, 1766,  7860,  5769,  25659, 17092, 23226, 6360,\r
+  10866, 14328, 5590,  16534, 11323, 15058, 6891,  5553,  22558, 11466,\r
+  32352, 28801, 9317,  27923, 7272,  3835,  8062,  14195, 19591, 2599,\r
+  24482, 25937, 28242, 16340, 5556,  17680, 13174, 1162,  18284, 31643,\r
+  19195, 12736, 29876, 9281,  20938, 25679, 11346, 8900,  11373, 32551,\r
+  21448, 23468, 11799, 17984, 9848,  18145, 12516, 9684,  12300, 4217,\r
+  865,   31180, 17941, 15311, 20303, 27000, 17650, 31957, 23972, 11138,\r
+  5108,  15275, 23507, 17957, 13504, 30320, 1613,  8090,  25076, 30040,\r
+  23624, 29395, 269,   1278,  16575, 31852, 27528, 11004, 11450, 29663,\r
+  21319, 2234,  22223, 9463,  17975, 24707, 29673, 15751, 5424,  28894,\r
+  30024, 9051,  8732,  6683,  26569, 26223, 22876, 556,   22632, 9055,\r
+  23143, 10934, 25091, 27167, 5044,  11624, 18529, 31980, 21979, 4748,\r
+  17522, 31618, 8695,  30171, 26072, 20112, 14158, 28054, 11687, 26473,\r
+  9268,  26578, 18025, 10236, 24108, 29204, 32102, 1798,  9553,  7965,\r
+  24866, 17542, 14068, 32519, 10534, 17010, 4999,  23953, 19203, 21928,\r
+  23481, 15032, 24725, 8999,  2275,  12679, 17285, 23935, 1187,  16687,\r
+  529,   30342, 25542, 11354, 4368,  6477,  18540, 25277, 24368, 82,\r
   12134, 10476, 11651, 31735, 11491, 29299, 20794, 15667, 23628, 8738,\r
-  17072, 14472, 1900, 9384, 7594, 13621, 18644, 6500, 30429, 23724,\r
-  11646, 32119, 10928, 24134, 6576, 3358, 2372, 31542, 29987, 20287,\r
-  945, 3772, 25189, 32577, 16019, 26267, 1404, 18721, 11718, 32716,\r
-  7628, 3010, 7533, 31604, 30523, 5509, 19513, 24596, 30354, 3866,\r
-  31464, 31487, 17702, 2198, 5387, 30226, 24505, 23749, 22285, 30111,\r
-  3227, 24257, 5489, 21162, 32020, 1475, 2395, 17752, 7687, 2874,\r
-  18002, 5028, 23503, 12058, 15684, 6228, 23917, 5751, 28874, 13867,\r
-  31461, 30802, 16046, 2913, 29413, 3251, 25259, 31056, 9128, 29176,\r
-  5747, 21616, 19226, 31852, 29431, 20613, 4669, 9243, 30434, 32023,\r
-  26571, 1253, 22118, 26147, 28189, 9426, 30780, 11536, 75, 29861,\r
-  17382, 11748, 4757, 16052, 9528, 1208, 29185, 30710, 26902, 1898,\r
-  10054, 10078, 22399, 1937, 233, 22375, 11979, 28854, 2214, 17905,\r
-  25648, 5825, 26641, 17995, 19851, 18609, 125, 2449, 6237, 31632,\r
-  14877, 16696, 12820, 8614, 20073, 20455, 1421, 494, 4547, 31880,\r
-  12758, 9158, 91, 23456, 7736, 8938, 4688, 25307, 3957, 32675,\r
-  6936, 23276, 8782, 16188, 14369, 9107, 20296, 28854, 4792, 32255,\r
-  23472, 27069, 31019, 20823, 23517, 20442, 4906, 7572, 10933, 16873,\r
-  13683, 4241, 31347, 13774, 6319, 29029, 25255, 24164, 30614, 22000,\r
-  3965, 11702, 22618, 22196, 30275, 18290, 1347, 13542, 13094, 30618,\r
-  30870, 9925, 29756, 381, 16316, 15915, 5576, 23270, 6560, 7522,\r
-  21433, 10131, 21593, 28216, 13427, 2280, 11785, 20310, 4306, 5605,\r
-  15621, 11213, 23916, 3926, 9014, 12530, 6423, 9289, 4287, 22124,\r
-  1196, 23237, 23007, 11403, 2058, 28857, 9241, 25820, 26717, 18739,\r
-  28307, 18682, 13216, 14802, 31165, 5030, 1376, 19582, 21042, 24602,\r
-  2243, 18774, 739, 9115, 23498, 7402, 12914, 25934, 14291, 28331,\r
-  12252, 10316, 866, 31648, 12891, 15352, 12576, 2394, 20619, 26257,\r
-  4132, 1321, 29387, 7683, 29042, 9104, 17638, 17155, 18113, 5111,\r
-  27379, 4698, 7810, 7328, 32121, 16513, 8477, 13020, 4311, 29551,\r
-  29566, 25471, 19427, 3759, 8912, 8081, 20946, 1461, 32136, 16710,\r
-  856, 10354, 32166, 23856, 23311, 7718, 10295, 13236, 26909, 630,\r
-  1567, 22203, 12818, 22718, 6677, 22441, 29967, 18856, 30703, 4499,\r
-  7469, 24318, 24864, 25517, 25116, 12732, 2687, 28673, 23563, 15978,\r
-  28490, 12903, 3784, 21416, 21866, 945, 12329, 20235, 26360, 23846,\r
-  11690, 7207, 1281, 28722, 13655, 10733, 14214, 26203, 17901, 19000,\r
-  24263, 23927, 2620, 12194, 2498, 29724, 975, 32156, 5622, 31321,\r
-  18639, 7870, 31852, 6819, 22821, 21851, 28664, 3858, 20191, 14937,\r
-  12477, 14030, 28117, 7743, 14575, 8132, 22156, 144, 9949, 22685,\r
-  24666, 4440, 2094, 7920, 24267, 28932, 27242, 15798, 22084, 8822,\r
-  21693, 12287, 25574, 25433, 3832, 23524, 23733, 24242, 23001, 31165,\r
-  26618, 28088, 31884, 31636, 6374, 23270, 19313, 2265, 19319, 23374,\r
-  3104, 25174, 18592, 12848, 23211, 16998, 30116, 13003, 29731, 3426,\r
-  4803, 5235, 2653, 26205, 19736, 19684, 1269, 31761, 10178, 25814,\r
-  21396, 8728, 66, 31442, 13679, 2656, 12836, 26691, 6672, 13017,\r
-  7650, 15568, 32601, 23408, 5893, 1001, 28870, 6209, 32141, 2208,\r
-  3058, 21512, 1683, 3003, 11869, 22233, 30765, 8199, 12396, 9490,\r
-  23698, 8431, 20913, 19085, 28798, 30540, 14957, 26138, 20696, 8319,\r
-  13907, 2348, 11155, 11198, 3215, 16338, 30674, 8619, 6407, 21737,\r
-  31055, 2603, 2785, 9873, 4861, 1141, 27717, 7901, 11500, 9577,\r
-  22372, 9423, 12653, 4132, 31929, 6531, 25976, 31953, 24206, 13738,\r
-  8266, 8641, 26051, 23354, 9810, 12991, 13259, 12132, 11086, 27293,\r
-  22007, 4295, 16306, 21267, 15863, 15843, 11593, 16074, 9118, 16336,\r
-  1822, 10675, 13285, 27951, 28829, 29597, 12595, 6498, 24566, 10503,\r
-  26843, 17400, 24514, 20018, 8678, 23659, 5097, 24699, 26900, 28174,\r
-  1475, 488, 24093, 18497, 31613, 769, 26172, 30439, 24255, 16097,\r
-  26606, 7962, 30347, 32140, 29688, 5149, 30825, 20611, 32679, 14481,\r
-  13505, 7574, 5211, 32748, 25224, 19450, 6215, 9256, 19998, 18331,\r
-  5234, 25528, 28535, 20147, 7169, 23488, 11130, 15772, 14521, 21125,\r
-  17574, 19683, 192, 1571, 16123, 30109, 14755, 21374, 15128, 28670,\r
-  11421, 18810, 3233, 39, 4119, 31855, 4067, 1344, 10859, 11735,\r
-  699, 32455, 4589, 7242, 25779, 31783, 11820, 4013, 8815, 10893,\r
-  24181, 30118, 4168, 29943, 27033, 8786, 30774, 27278, 6896, 2363,\r
-  16115, 24373, 12446, 644, 25693, 31330, 32533, 28775, 25373, 10284,\r
-  28124, 22754, 13190, 8358, 12686, 18348, 30143, 31084, 26405, 3182,\r
-  1829, 30075, 29816, 10544, 1771, 1862, 20995, 1297, 3587, 14598,\r
-  8679, 14140, 7746, 28497, 14385, 32279, 3263, 14830, 30815, 14014,\r
-  27516, 9960, 11297, 26799, 13896, 19425, 14172, 14791, 18147, 31145,\r
-  19828, 24173, 21604, 19983, 3019, 23053, 472, 6135, 7557, 9160,\r
-  16428, 16813, 19599, 873, 1869, 13689, 9183, 15003, 10893, 28788,\r
-  1789, 20058, 19529, 14233, 25282, 1192, 13512, 8991, 23391, 27265,\r
-  4199, 29703, 7074, 30224, 22771, 26609, 10613, 6435, 28247, 32563,\r
-  25512, 22493, 8823, 26924, 3312, 14250, 15451, 2774, 2095, 6776,\r
+  17072, 14472, 1900,  9384,  7594,  13621, 18644, 6500,  30429, 23724,\r
+  11646, 32119, 10928, 24134, 6576,  3358,  2372,  31542, 29987, 20287,\r
+  945,   3772,  25189, 32577, 16019, 26267, 1404,  18721, 11718, 32716,\r
+  7628,  3010,  7533,  31604, 30523, 5509,  19513, 24596, 30354, 3866,\r
+  31464, 31487, 17702, 2198,  5387,  30226, 24505, 23749, 22285, 30111,\r
+  3227,  24257, 5489,  21162, 32020, 1475,  2395,  17752, 7687,  2874,\r
+  18002, 5028,  23503, 12058, 15684, 6228,  23917, 5751,  28874, 13867,\r
+  31461, 30802, 16046, 2913,  29413, 3251,  25259, 31056, 9128,  29176,\r
+  5747,  21616, 19226, 31852, 29431, 20613, 4669,  9243,  30434, 32023,\r
+  26571, 1253,  22118, 26147, 28189, 9426,  30780, 11536, 75,    29861,\r
+  17382, 11748, 4757,  16052, 9528,  1208,  29185, 30710, 26902, 1898,\r
+  10054, 10078, 22399, 1937,  233,   22375, 11979, 28854, 2214,  17905,\r
+  25648, 5825,  26641, 17995, 19851, 18609, 125,   2449,  6237,  31632,\r
+  14877, 16696, 12820, 8614,  20073, 20455, 1421,  494,   4547,  31880,\r
+  12758, 9158,  91,    23456, 7736,  8938,  4688,  25307, 3957,  32675,\r
+  6936,  23276, 8782,  16188, 14369, 9107,  20296, 28854, 4792,  32255,\r
+  23472, 27069, 31019, 20823, 23517, 20442, 4906,  7572,  10933, 16873,\r
+  13683, 4241,  31347, 13774, 6319,  29029, 25255, 24164, 30614, 22000,\r
+  3965,  11702, 22618, 22196, 30275, 18290, 1347,  13542, 13094, 30618,\r
+  30870, 9925,  29756, 381,   16316, 15915, 5576,  23270, 6560,  7522,\r
+  21433, 10131, 21593, 28216, 13427, 2280,  11785, 20310, 4306,  5605,\r
+  15621, 11213, 23916, 3926,  9014,  12530, 6423,  9289,  4287,  22124,\r
+  1196,  23237, 23007, 11403, 2058,  28857, 9241,  25820, 26717, 18739,\r
+  28307, 18682, 13216, 14802, 31165, 5030,  1376,  19582, 21042, 24602,\r
+  2243,  18774, 739,   9115,  23498, 7402,  12914, 25934, 14291, 28331,\r
+  12252, 10316, 866,   31648, 12891, 15352, 12576, 2394,  20619, 26257,\r
+  4132,  1321,  29387, 7683,  29042, 9104,  17638, 17155, 18113, 5111,\r
+  27379, 4698,  7810,  7328,  32121, 16513, 8477,  13020, 4311,  29551,\r
+  29566, 25471, 19427, 3759,  8912,  8081,  20946, 1461,  32136, 16710,\r
+  856,   10354, 32166, 23856, 23311, 7718,  10295, 13236, 26909, 630,\r
+  1567,  22203, 12818, 22718, 6677,  22441, 29967, 18856, 30703, 4499,\r
+  7469,  24318, 24864, 25517, 25116, 12732, 2687,  28673, 23563, 15978,\r
+  28490, 12903, 3784,  21416, 21866, 945,   12329, 20235, 26360, 23846,\r
+  11690, 7207,  1281,  28722, 13655, 10733, 14214, 26203, 17901, 19000,\r
+  24263, 23927, 2620,  12194, 2498,  29724, 975,   32156, 5622,  31321,\r
+  18639, 7870,  31852, 6819,  22821, 21851, 28664, 3858,  20191, 14937,\r
+  12477, 14030, 28117, 7743,  14575, 8132,  22156, 144,   9949,  22685,\r
+  24666, 4440,  2094,  7920,  24267, 28932, 27242, 15798, 22084, 8822,\r
+  21693, 12287, 25574, 25433, 3832,  23524, 23733, 24242, 23001, 31165,\r
+  26618, 28088, 31884, 31636, 6374,  23270, 19313, 2265,  19319, 23374,\r
+  3104,  25174, 18592, 12848, 23211, 16998, 30116, 13003, 29731, 3426,\r
+  4803,  5235,  2653,  26205, 19736, 19684, 1269,  31761, 10178, 25814,\r
+  21396, 8728,  66,    31442, 13679, 2656,  12836, 26691, 6672,  13017,\r
+  7650,  15568, 32601, 23408, 5893,  1001,  28870, 6209,  32141, 2208,\r
+  3058,  21512, 1683,  3003,  11869, 22233, 30765, 8199,  12396, 9490,\r
+  23698, 8431,  20913, 19085, 28798, 30540, 14957, 26138, 20696, 8319,\r
+  13907, 2348,  11155, 11198, 3215,  16338, 30674, 8619,  6407,  21737,\r
+  31055, 2603,  2785,  9873,  4861,  1141,  27717, 7901,  11500, 9577,\r
+  22372, 9423,  12653, 4132,  31929, 6531,  25976, 31953, 24206, 13738,\r
+  8266,  8641,  26051, 23354, 9810,  12991, 13259, 12132, 11086, 27293,\r
+  22007, 4295,  16306, 21267, 15863, 15843, 11593, 16074, 9118,  16336,\r
+  1822,  10675, 13285, 27951, 28829, 29597, 12595, 6498,  24566, 10503,\r
+  26843, 17400, 24514, 20018, 8678,  23659, 5097,  24699, 26900, 28174,\r
+  1475,  488,   24093, 18497, 31613, 769,   26172, 30439, 24255, 16097,\r
+  26606, 7962,  30347, 32140, 29688, 5149,  30825, 20611, 32679, 14481,\r
+  13505, 7574,  5211,  32748, 25224, 19450, 6215,  9256,  19998, 18331,\r
+  5234,  25528, 28535, 20147, 7169,  23488, 11130, 15772, 14521, 21125,\r
+  17574, 19683, 192,   1571,  16123, 30109, 14755, 21374, 15128, 28670,\r
+  11421, 18810, 3233,  39,    4119,  31855, 4067,  1344,  10859, 11735,\r
+  699,   32455, 4589,  7242,  25779, 31783, 11820, 4013,  8815,  10893,\r
+  24181, 30118, 4168,  29943, 27033, 8786,  30774, 27278, 6896,  2363,\r
+  16115, 24373, 12446, 644,   25693, 31330, 32533, 28775, 25373, 10284,\r
+  28124, 22754, 13190, 8358,  12686, 18348, 30143, 31084, 26405, 3182,\r
+  1829,  30075, 29816, 10544, 1771,  1862,  20995, 1297,  3587,  14598,\r
+  8679,  14140, 7746,  28497, 14385, 32279, 3263,  14830, 30815, 14014,\r
+  27516, 9960,  11297, 26799, 13896, 19425, 14172, 14791, 18147, 31145,\r
+  19828, 24173, 21604, 19983, 3019,  23053, 472,   6135,  7557,  9160,\r
+  16428, 16813, 19599, 873,   1869,  13689, 9183,  15003, 10893, 28788,\r
+  1789,  20058, 19529, 14233, 25282, 1192,  13512, 8991,  23391, 27265,\r
+  4199,  29703, 7074,  30224, 22771, 26609, 10613, 6435,  28247, 32563,\r
+  25512, 22493, 8823,  26924, 3312,  14250, 15451, 2774,  2095,  6776,\r
   13968, 21403, 10741, 23077, 15563, 21610, 17223, 14387, 11472, 19721,\r
-  18848, 30147, 7826, 9133, 16438, 10177, 14236, 31432, 18046, 7004,\r
-  19887, 22818, 28658, 24249, 7341, 6187, 18706, 16872, 5045, 3216,\r
-  11689, 25623, 32144, 7436, 21585, 8453, 2124, 15233, 13113, 29370,\r
-  28710, 29767, 8742, 7030, 20910, 1987, 23992, 11239, 26405, 16956,\r
-  20463, 14750, 13610, 1515, 16877, 22980, 27286, 15185, 23294, 13321,\r
-  30628, 7118, 4309, 16862, 8277, 2670, 27929, 3556, 3602, 28422,\r
-  19488, 1956, 9363, 18304, 30970, 16256, 7681, 25459, 19121, 7913,\r
-  12887, 32247, 9935, 28883, 19982, 10679, 3361, 20070, 7161, 17223,\r
-  4283, 17399, 26222, 23992, 25148, 16950, 5030, 23914, 20307, 12201,\r
-  16742, 13602, 23426, 11865, 17375, 31068, 22050, 27083, 3028, 15843,\r
-  4520, 305, 14330, 29086, 8230, 25058, 21924, 11437, 14613, 9736,\r
-  5279, 9397, 11345, 19352, 29275, 15223, 1637, 22408, 8268, 23464,\r
-  18953, 14652, 10640, 6140, 25321, 577, 7122, 16517, 13736, 17981,\r
-  14190, 25147, 28965, 14118, 27350, 25820, 1277, 20915, 7476, 15094,\r
-  24913, 11792, 3153, 22593, 25545, 18646, 16821, 25139, 5592, 22586,\r
-  25360, 20175, 8258, 389, 25048, 26046, 6108, 708, 20020, 22432,\r
-  1939, 9408, 20761, 24484, 23472, 2352, 4530, 9046, 4699, 10542,\r
-  2566, 17593, 21853, 6120, 3797, 23190, 24874, 23960, 3778, 17171,\r
-  23838, 32438, 19640, 1159, 2311, 875, 6534, 12429, 25572, 4938,\r
-  20684, 32088, 12268, 31035, 7451, 2374, 30674, 9143, 18264, 31927,\r
-  31048, 30011, 5473, 32287, 6338, 30966, 31731, 11354, 17020, 20421,\r
-  10188, 4928, 23742, 26978, 8716, 20090, 12127, 24025, 5089, 20116,\r
-  25736, 31547, 28003, 29778, 1722, 23445, 29629, 30280, 8210, 5923,\r
-  31374, 17573, 24268, 26306, 19599, 24400, 25351, 19108, 1909, 21046,\r
-  6599, 2375, 28441, 19426, 18752, 6824, 31702, 590, 12882, 21428,\r
-  10290, 23032, 27472, 26111, 16833, 825, 22533, 1976, 16711, 466,\r
-  25337, 22493, 28189, 21192, 23536, 21163, 20694, 9331, 8116, 27225,\r
-  14625, 21713, 27924, 6149, 23281, 10784, 2861, 30959, 18140, 31147,\r
-  9448, 19429, 16833, 12516, 32196, 25342, 16302, 29875, 25558, 23947,\r
-  1537, 19214, 782, 15947, 14541, 714, 32187, 12766, 22399, 19888,\r
-  28241, 6524, 27841, 16596, 13930, 11751, 30110, 12066, 16140, 20126,\r
-  17383, 4666, 3626, 20820, 24534, 30078, 21869, 26016, 11506, 5992,\r
-  24116, 24822, 22066, 13602, 30425, 1750, 17765, 13392, 17718, 8515,\r
-  10705, 7984, 8807, 32119, 21019, 9958, 25554, 8405, 23911, 8209,\r
-  13669, 18975, 1983, 11682, 26911, 4841, 5561, 3566, 24530, 17742,\r
-  9044, 15874, 28455, 14817, 23076, 26422, 26850, 20966, 21167, 19205,\r
-  10087, 25027, 9494, 8475, 17277, 8113, 27896, 7088, 22355, 27319,\r
-  17555, 1557, 29377, 32217, 31532, 12684, 9423, 25485, 2737, 9309,\r
-  15995, 15726, 4254, 16166, 12983, 13364, 19997, 19571, 14258, 9188,\r
-  29553, 11918, 3416, 22596, 14996, 8089, 3356, 28050, 5407, 14297,\r
-  26357, 10613, 29035, 11861, 12198, 24628, 23286, 1952, 9283, 14886,\r
-  31240, 9971, 18161, 28010, 13974, 30078, 14573, 16343, 614, 5120,\r
-  30160, 25910, 3700, 19094, 21521, 3503, 28565, 10960, 28363, 14466,\r
-  30298, 6154, 23744, 7928, 15927, 10746, 22687, 19352, 14308, 7557,\r
-  16002, 12701, 13060, 18391, 699, 22696, 11013, 16306, 1488, 28851,\r
-  23367, 12550, 27076, 25158, 24192, 3779, 19608, 12013, 23903, 5867,\r
-  3090, 13801, 4207, 23787, 30397, 12582, 6463, 20011, 3633, 32365,\r
-  30400, 25828, 16020, 2267, 6382, 32050, 12129, 26258, 22450, 106,\r
-  4456, 32430, 20743, 23213, 3607, 19323, 29277, 28349, 15351, 3301,\r
-  12602, 31760, 15481, 32559, 14119, 11043, 26355, 27112, 1226, 13329,\r
-  9446, 6939, 20560, 21348, 25474, 8903, 8974, 299, 15980, 25230,\r
-  31335, 7757, 18366, 17841, 28656, 3100, 4432, 13628, 11474, 25133,\r
-  23350, 7294, 11376, 13928, 2953, 4540, 4682, 11099, 21355, 30503,\r
-  5921, 14547, 9541, 10250, 20829, 25262, 24659, 1608, 23723, 20971,\r
-  21859, 31750, 9450, 1027, 2265, 17829, 22600, 1148, 22007, 6131,\r
-  17576, 25787, 22363, 30370, 9288, 26138, 14537, 20217, 7584, 2618,\r
-  22059, 10953, 31373, 32155, 19414, 4003, 23214, 4201, 23567, 24136,\r
-  25870, 12697, 19918, 18017, 15620, 8245, 10434, 8816, 15960, 18164,\r
-  29332, 20487, 17575, 30222, 20848, 22584, 521, 28494, 14274, 31820,\r
-  10480, 30825, 32061, 31415, 27988, 26510, 2338, 8268, 8461, 24126,\r
-  29119, 31150, 28544, 9822, 13622, 14599, 31869, 25995, 28543, 9212,\r
-  27240, 6829, 12720, 7648, 2967, 6607, 24188, 8743, 17148, 31278,\r
-  12282, 17182, 22532, 10895, 19112, 218, 16830, 8150, 432, 3182,\r
+  18848, 30147, 7826,  9133,  16438, 10177, 14236, 31432, 18046, 7004,\r
+  19887, 22818, 28658, 24249, 7341,  6187,  18706, 16872, 5045,  3216,\r
+  11689, 25623, 32144, 7436,  21585, 8453,  2124,  15233, 13113, 29370,\r
+  28710, 29767, 8742,  7030,  20910, 1987,  23992, 11239, 26405, 16956,\r
+  20463, 14750, 13610, 1515,  16877, 22980, 27286, 15185, 23294, 13321,\r
+  30628, 7118,  4309,  16862, 8277,  2670,  27929, 3556,  3602,  28422,\r
+  19488, 1956,  9363,  18304, 30970, 16256, 7681,  25459, 19121, 7913,\r
+  12887, 32247, 9935,  28883, 19982, 10679, 3361,  20070, 7161,  17223,\r
+  4283,  17399, 26222, 23992, 25148, 16950, 5030,  23914, 20307, 12201,\r
+  16742, 13602, 23426, 11865, 17375, 31068, 22050, 27083, 3028,  15843,\r
+  4520,  305,   14330, 29086, 8230,  25058, 21924, 11437, 14613, 9736,\r
+  5279,  9397,  11345, 19352, 29275, 15223, 1637,  22408, 8268,  23464,\r
+  18953, 14652, 10640, 6140,  25321, 577,   7122,  16517, 13736, 17981,\r
+  14190, 25147, 28965, 14118, 27350, 25820, 1277,  20915, 7476,  15094,\r
+  24913, 11792, 3153,  22593, 25545, 18646, 16821, 25139, 5592,  22586,\r
+  25360, 20175, 8258,  389,   25048, 26046, 6108,  708,   20020, 22432,\r
+  1939,  9408,  20761, 24484, 23472, 2352,  4530,  9046,  4699,  10542,\r
+  2566,  17593, 21853, 6120,  3797,  23190, 24874, 23960, 3778,  17171,\r
+  23838, 32438, 19640, 1159,  2311,  875,   6534,  12429, 25572, 4938,\r
+  20684, 32088, 12268, 31035, 7451,  2374,  30674, 9143,  18264, 31927,\r
+  31048, 30011, 5473,  32287, 6338,  30966, 31731, 11354, 17020, 20421,\r
+  10188, 4928,  23742, 26978, 8716,  20090, 12127, 24025, 5089,  20116,\r
+  25736, 31547, 28003, 29778, 1722,  23445, 29629, 30280, 8210,  5923,\r
+  31374, 17573, 24268, 26306, 19599, 24400, 25351, 19108, 1909,  21046,\r
+  6599,  2375,  28441, 19426, 18752, 6824,  31702, 590,   12882, 21428,\r
+  10290, 23032, 27472, 26111, 16833, 825,   22533, 1976,  16711, 466,\r
+  25337, 22493, 28189, 21192, 23536, 21163, 20694, 9331,  8116,  27225,\r
+  14625, 21713, 27924, 6149,  23281, 10784, 2861,  30959, 18140, 31147,\r
+  9448,  19429, 16833, 12516, 32196, 25342, 16302, 29875, 25558, 23947,\r
+  1537,  19214, 782,   15947, 14541, 714,   32187, 12766, 22399, 19888,\r
+  28241, 6524,  27841, 16596, 13930, 11751, 30110, 12066, 16140, 20126,\r
+  17383, 4666,  3626,  20820, 24534, 30078, 21869, 26016, 11506, 5992,\r
+  24116, 24822, 22066, 13602, 30425, 1750,  17765, 13392, 17718, 8515,\r
+  10705, 7984,  8807,  32119, 21019, 9958,  25554, 8405,  23911, 8209,\r
+  13669, 18975, 1983,  11682, 26911, 4841,  5561,  3566,  24530, 17742,\r
+  9044,  15874, 28455, 14817, 23076, 26422, 26850, 20966, 21167, 19205,\r
+  10087, 25027, 9494,  8475,  17277, 8113,  27896, 7088,  22355, 27319,\r
+  17555, 1557,  29377, 32217, 31532, 12684, 9423,  25485, 2737,  9309,\r
+  15995, 15726, 4254,  16166, 12983, 13364, 19997, 19571, 14258, 9188,\r
+  29553, 11918, 3416,  22596, 14996, 8089,  3356,  28050, 5407,  14297,\r
+  26357, 10613, 29035, 11861, 12198, 24628, 23286, 1952,  9283,  14886,\r
+  31240, 9971,  18161, 28010, 13974, 30078, 14573, 16343, 614,   5120,\r
+  30160, 25910, 3700,  19094, 21521, 3503,  28565, 10960, 28363, 14466,\r
+  30298, 6154,  23744, 7928,  15927, 10746, 22687, 19352, 14308, 7557,\r
+  16002, 12701, 13060, 18391, 699,   22696, 11013, 16306, 1488,  28851,\r
+  23367, 12550, 27076, 25158, 24192, 3779,  19608, 12013, 23903, 5867,\r
+  3090,  13801, 4207,  23787, 30397, 12582, 6463,  20011, 3633,  32365,\r
+  30400, 25828, 16020, 2267,  6382,  32050, 12129, 26258, 22450, 106,\r
+  4456,  32430, 20743, 23213, 3607,  19323, 29277, 28349, 15351, 3301,\r
+  12602, 31760, 15481, 32559, 14119, 11043, 26355, 27112, 1226,  13329,\r
+  9446,  6939,  20560, 21348, 25474, 8903,  8974,  299,   15980, 25230,\r
+  31335, 7757,  18366, 17841, 28656, 3100,  4432,  13628, 11474, 25133,\r
+  23350, 7294,  11376, 13928, 2953,  4540,  4682,  11099, 21355, 30503,\r
+  5921,  14547, 9541,  10250, 20829, 25262, 24659, 1608,  23723, 20971,\r
+  21859, 31750, 9450,  1027,  2265,  17829, 22600, 1148,  22007, 6131,\r
+  17576, 25787, 22363, 30370, 9288,  26138, 14537, 20217, 7584,  2618,\r
+  22059, 10953, 31373, 32155, 19414, 4003,  23214, 4201,  23567, 24136,\r
+  25870, 12697, 19918, 18017, 15620, 8245,  10434, 8816,  15960, 18164,\r
+  29332, 20487, 17575, 30222, 20848, 22584, 521,   28494, 14274, 31820,\r
+  10480, 30825, 32061, 31415, 27988, 26510, 2338,  8268,  8461,  24126,\r
+  29119, 31150, 28544, 9822,  13622, 14599, 31869, 25995, 28543, 9212,\r
+  27240, 6829,  12720, 7648,  2967,  6607,  24188, 8743,  17148, 31278,\r
+  12282, 17182, 22532, 10895, 19112, 218,   16830, 8150,  432,   3182,\r
   11584, 20949, 12394, 19298, 17223, 31330, 19745, 12128, 28957, 19116,\r
-  6426, 13871, 14528, 2767, 4562, 9702, 19520, 22437, 1928, 22873,\r
-  30825, 29407, 31995, 12504, 8866, 22869, 13429, 31513, 24085, 5019,\r
-  3592, 27250, 23568, 29909, 6936, 27211, 15275, 15308, 2842, 26836,\r
-  31916, 19009, 21914, 26867, 6567, 26241, 17795, 28801, 3434, 15161,\r
-  18843, 9909, 18328, 2444, 11853, 14048, 21651, 16739, 9387, 19291,\r
-  15519, 29700, 15027, 13502, 24133, 21735, 10449, 4435, 18422, 15556,\r
-  6310, 2251, 21745, 25329, 18696, 28719, 4455, 16619, 13130, 27161,\r
-  10716, 21555, 5565, 22307, 27088, 12891, 1910, 10912, 3487, 9056,\r
-  31058, 30602, 27558, 13882, 18488, 18876, 14503, 946, 17566, 8033,\r
-  27502, 4980, 21327, 5805, 949, 5989, 2923, 9163, 14406, 28982,\r
-  30127, 25366, 20575, 13882, 20726, 23435, 11354, 9588, 0, 17790,\r
-  16781, 17397, 1139, 10637, 3440, 4965, 11039, 27603, 17405, 5855,\r
-  19846, 5982, 15709, 6658, 19612, 32226, 26304, 28228, 10443, 32686,\r
-  14989, 4746, 23354, 4064, 955, 30966, 21583, 18645, 28798, 24320,\r
-  17267, 9444, 14375, 27593, 3093, 12108, 22597, 2219, 3057, 16746,\r
-  11537, 10261, 5778, 8240, 26889, 28310, 18965, 3538, 12250, 29239,\r
-  8497, 9154, 22659, 1038, 26228, 2271, 6840, 14352, 27855, 22506,\r
-  11140, 7975, 12629, 19001, 3379, 26501, 19008, 31407, 5743, 22327,\r
-  18229, 21739, 29865, 21757, 26313, 1216, 11707, 29529, 17731, 31205,\r
+  6426,  13871, 14528, 2767,  4562,  9702,  19520, 22437, 1928,  22873,\r
+  30825, 29407, 31995, 12504, 8866,  22869, 13429, 31513, 24085, 5019,\r
+  3592,  27250, 23568, 29909, 6936,  27211, 15275, 15308, 2842,  26836,\r
+  31916, 19009, 21914, 26867, 6567,  26241, 17795, 28801, 3434,  15161,\r
+  18843, 9909,  18328, 2444,  11853, 14048, 21651, 16739, 9387,  19291,\r
+  15519, 29700, 15027, 13502, 24133, 21735, 10449, 4435,  18422, 15556,\r
+  6310,  2251,  21745, 25329, 18696, 28719, 4455,  16619, 13130, 27161,\r
+  10716, 21555, 5565,  22307, 27088, 12891, 1910,  10912, 3487,  9056,\r
+  31058, 30602, 27558, 13882, 18488, 18876, 14503, 946,   17566, 8033,\r
+  27502, 4980,  21327, 5805,  949,   5989,  2923,  9163,  14406, 28982,\r
+  30127, 25366, 20575, 13882, 20726, 23435, 11354, 9588,  0,     17790,\r
+  16781, 17397, 1139,  10637, 3440,  4965,  11039, 27603, 17405, 5855,\r
+  19846, 5982,  15709, 6658,  19612, 32226, 26304, 28228, 10443, 32686,\r
+  14989, 4746,  23354, 4064,  955,   30966, 21583, 18645, 28798, 24320,\r
+  17267, 9444,  14375, 27593, 3093,  12108, 22597, 2219,  3057,  16746,\r
+  11537, 10261, 5778,  8240,  26889, 28310, 18965, 3538,  12250, 29239,\r
+  8497,  9154,  22659, 1038,  26228, 2271,  6840,  14352, 27855, 22506,\r
+  11140, 7975,  12629, 19001, 3379,  26501, 19008, 31407, 5743,  22327,\r
+  18229, 21739, 29865, 21757, 26313, 1216,  11707, 29529, 17731, 31205,\r
   25803, 12774, 26787, 21486, 26226, 26859, 19940, 19067, 16413, 4912,\r
-  23423, 26032, 26292, 27152, 23856, 6885, 12410, 2000, 27900, 8606,\r
-  9781, 1071, 28019, 5309, 28558, 16190, 31027, 13302, 24250, 20082,\r
+  23423, 26032, 26292, 27152, 23856, 6885,  12410, 2000,  27900, 8606,\r
+  9781,  1071,  28019, 5309,  28558, 16190, 31027, 13302, 24250, 20082,\r
   27565, 22916, 24410, 16376, 26412, 30746, 19616, 10312, 31763, 13597,\r
-  29364, 11773, 21861, 29456, 16214, 2020, 3723, 24656, 26052, 8531,\r
-  5714, 24065, 31198, 22716, 17204, 21320, 18056, 3201, 31960, 16570,\r
-  25424, 27146, 7900, 10261, 19793, 13078, 30929, 7214, 1878, 27982,\r
-  3975, 3371, 1347, 12320, 907, 9458, 26289, 1226, 16623, 18402,\r
-  17625, 3253, 23625, 3520, 6067, 25093, 16638, 18164, 30303, 26222,\r
-  5313, 25077, 14019, 29769, 29782, 17666, 12406, 9703, 28060, 28691,\r
-  9948, 10021, 23242, 31503, 7827, 17728, 761, 17471, 8718, 12523,\r
-  9187, 25347, 14720, 9887, 18666, 12995, 6652, 28979, 4956, 2601,\r
+  29364, 11773, 21861, 29456, 16214, 2020,  3723,  24656, 26052, 8531,\r
+  5714,  24065, 31198, 22716, 17204, 21320, 18056, 3201,  31960, 16570,\r
+  25424, 27146, 7900,  10261, 19793, 13078, 30929, 7214,  1878,  27982,\r
+  3975,  3371,  1347,  12320, 907,   9458,  26289, 1226,  16623, 18402,\r
+  17625, 3253,  23625, 3520,  6067,  25093, 16638, 18164, 30303, 26222,\r
+  5313,  25077, 14019, 29769, 29782, 17666, 12406, 9703,  28060, 28691,\r
+  9948,  10021, 23242, 31503, 7827,  17728, 761,   17471, 8718,  12523,\r
+  9187,  25347, 14720, 9887,  18666, 12995, 6652,  28979, 4956,  2601,\r
   20442, 31404, 22517, 29325, 26716, 24406, 13733, 29617, 24210, 14100,\r
-  2452, 18351, 20346, 2292, 25700, 2863, 14700, 7430, 25782, 15837,\r
-  19125, 8303, 6895, 10011, 899, 20409, 23100, 29426, 12033, 7021,\r
-  6867, 6991, 30658, 31460, 20860, 29036, 7011, 24922, 24656, 23436,\r
-  364, 2372, 1217, 6891, 14712, 2531, 26331, 11765, 9366, 27418,\r
-  11722, 8886, 19950, 11133, 15771, 28050, 13992, 27818, 583, 6198,\r
-  6409, 14812, 27629, 23758, 26335, 7357, 95, 376, 1824, 29820,\r
-  9696, 2041, 5838, 17184, 2860, 1456, 12573, 25884, 20665, 14280,\r
-  728, 26403, 22333, 10161, 11521, 28221, 22384, 29648, 15032, 26139,\r
-  10003, 4213, 11869, 27047, 20273, 5390, 27129, 6624, 22437, 27035,\r
-  30426, 22245, 27612, 26722, 28798, 3919, 15580, 18404, 5811, 6596,\r
-  17541, 24847, 19195, 19658, 19991, 9653, 32053, 18648, 26613, 23357,\r
-  19322, 10419, 8873, 28057, 22854, 3064, 16679, 28280, 8664, 12276,\r
-  15958, 5308, 18907, 2748, 19404, 20526, 13381, 7290, 11737, 17776,\r
-  24192, 27398, 6344, 17972, 18376, 23478, 29537, 6572, 26580, 24438,\r
-  8883, 10561, 30904, 9499, 17168, 25992, 6154, 17908, 29272, 30578,\r
-  835, 8354, 3963, 4547, 29545, 22058, 4921, 30405, 23531, 7497,\r
-  26156, 1597, 4301, 24584, 22537, 26526, 6148, 22415, 7203, 9341,\r
-  10788, 6718, 28464, 18245, 9784, 20474, 19024, 21036, 31985, 197,\r
-  18251, 8805, 22276, 12690, 6682, 5015, 31437, 17239, 17322, 30607,\r
+  2452,  18351, 20346, 2292,  25700, 2863,  14700, 7430,  25782, 15837,\r
+  19125, 8303,  6895,  10011, 899,   20409, 23100, 29426, 12033, 7021,\r
+  6867,  6991,  30658, 31460, 20860, 29036, 7011,  24922, 24656, 23436,\r
+  364,   2372,  1217,  6891,  14712, 2531,  26331, 11765, 9366,  27418,\r
+  11722, 8886,  19950, 11133, 15771, 28050, 13992, 27818, 583,   6198,\r
+  6409,  14812, 27629, 23758, 26335, 7357,  95,    376,   1824,  29820,\r
+  9696,  2041,  5838,  17184, 2860,  1456,  12573, 25884, 20665, 14280,\r
+  728,   26403, 22333, 10161, 11521, 28221, 22384, 29648, 15032, 26139,\r
+  10003, 4213,  11869, 27047, 20273, 5390,  27129, 6624,  22437, 27035,\r
+  30426, 22245, 27612, 26722, 28798, 3919,  15580, 18404, 5811,  6596,\r
+  17541, 24847, 19195, 19658, 19991, 9653,  32053, 18648, 26613, 23357,\r
+  19322, 10419, 8873,  28057, 22854, 3064,  16679, 28280, 8664,  12276,\r
+  15958, 5308,  18907, 2748,  19404, 20526, 13381, 7290,  11737, 17776,\r
+  24192, 27398, 6344,  17972, 18376, 23478, 29537, 6572,  26580, 24438,\r
+  8883,  10561, 30904, 9499,  17168, 25992, 6154,  17908, 29272, 30578,\r
+  835,   8354,  3963,  4547,  29545, 22058, 4921,  30405, 23531, 7497,\r
+  26156, 1597,  4301,  24584, 22537, 26526, 6148,  22415, 7203,  9341,\r
+  10788, 6718,  28464, 18245, 9784,  20474, 19024, 21036, 31985, 197,\r
+  18251, 8805,  22276, 12690, 6682,  5015,  31437, 17239, 17322, 30607,\r
   13624, 18531, 25052, 13874, 18913, 17394, 16592, 10677, 11898, 2047,\r
-  4451, 2832, 5486, 9561, 26870, 687, 3011, 8697, 28274, 12651,\r
-  11845, 27027, 22664, 17850, 14817, 11371, 8510, 28962, 31567, 8298,\r
-  4775, 20980, 25076, 22641, 4337, 9526, 14854, 9709, 17830, 21729,\r
-  20977, 14508, 4139, 13901, 3833, 28911, 24461, 3305, 13601, 6080,\r
-  22908, 9519, 26188, 29061, 29336, 7127, 7331, 24278, 23532, 9547,\r
-  9270, 32652, 27064, 26972, 22502, 3098, 22388, 18227, 9602, 22817,\r
-  3345, 5514, 7472, 14654, 18818, 13084, 4111, 12583, 22139, 31577,\r
-  538, 12790, 10617, 29535, 29520, 19908, 5634, 17190, 17426, 6778,\r
-  29998, 20218, 14540, 14052, 26214, 1327, 24791, 9735, 3436, 13328,\r
-  25758, 29877, 29083, 31768, 32512, 23902, 25201, 12901, 9718, 24105,\r
-  1354, 18281, 9846, 30019, 28782, 1507, 14231, 30583, 30542, 15885,\r
-  18677, 13568, 3083, 12567, 4183, 24731, 23096, 20693, 6799, 27872,\r
-  32481, 10165, 25506, 21457, 460, 31987, 14889, 31924, 29694, 2320,\r
+  4451,  2832,  5486,  9561,  26870, 687,   3011,  8697,  28274, 12651,\r
+  11845, 27027, 22664, 17850, 14817, 11371, 8510,  28962, 31567, 8298,\r
+  4775,  20980, 25076, 22641, 4337,  9526,  14854, 9709,  17830, 21729,\r
+  20977, 14508, 4139,  13901, 3833,  28911, 24461, 3305,  13601, 6080,\r
+  22908, 9519,  26188, 29061, 29336, 7127,  7331,  24278, 23532, 9547,\r
+  9270,  32652, 27064, 26972, 22502, 3098,  22388, 18227, 9602,  22817,\r
+  3345,  5514,  7472,  14654, 18818, 13084, 4111,  12583, 22139, 31577,\r
+  538,   12790, 10617, 29535, 29520, 19908, 5634,  17190, 17426, 6778,\r
+  29998, 20218, 14540, 14052, 26214, 1327,  24791, 9735,  3436,  13328,\r
+  25758, 29877, 29083, 31768, 32512, 23902, 25201, 12901, 9718,  24105,\r
+  1354,  18281, 9846,  30019, 28782, 1507,  14231, 30583, 30542, 15885,\r
+  18677, 13568, 3083,  12567, 4183,  24731, 23096, 20693, 6799,  27872,\r
+  32481, 10165, 25506, 21457, 460,   31987, 14889, 31924, 29694, 2320,\r
   29175, 13342, 22401, 20096, 10748, 27217, 13413, 27299, 10601, 11207,\r
-  32517, 29430, 6165, 2063, 13196, 12939, 5664, 23256, 19127, 23478,\r
-  30422, 11084, 27612, 522, 8918, 5535, 43, 28803, 25971, 29415,\r
-  2868, 12293, 10586, 13102, 27817, 20997, 26741, 7621, 28517, 21382,\r
+  32517, 29430, 6165,  2063,  13196, 12939, 5664,  23256, 19127, 23478,\r
+  30422, 11084, 27612, 522,   8918,  5535,  43,    28803, 25971, 29415,\r
+  2868,  12293, 10586, 13102, 27817, 20997, 26741, 7621,  28517, 21382,\r
   21264, 27612, 18862, 11336, 29243, 29008, 29367, 24124, 18799, 18372,\r
-  29033, 6458, 15220, 12275, 2147, 18166, 13953, 7492, 25408, 4913,\r
-  27558, 8096, 10520, 17452, 5479, 8064, 6217, 30562, 4522, 8266,\r
-  3959, 5750, 21203, 31965, 10193, 6251, 27693, 21098, 17558, 25363,\r
-  15756, 3463, 15320, 24778, 560, 19838, 31873, 7780, 18157, 4587,\r
-  21907, 1379, 2953, 26246, 17076, 1645, 4966, 317, 25065, 18430,\r
-  10592, 1670, 30370, 11611, 23289, 26611, 7671, 18887, 28340, 4358,\r
-  6193, 5112, 6590, 22088, 19340, 28108, 14547, 23189, 25659, 21561,\r
-  4192, 24250, 13741, 19330, 22501, 12098, 16655, 23473, 5278, 9356,\r
-  1298, 12609, 1890, 26913, 31470, 13851, 12747, 31301, 25767, 14020,\r
-  13975, 5836, 20622, 26580, 6478, 4143, 30220, 24490, 8485, 12767,\r
-  20379, 22622, 25379, 13017, 5653, 19959, 14210, 25979, 305, 19678,\r
-  7768, 6550, 29002, 1171, 22391, 25796, 26211, 29343, 12689, 17660,\r
-  26729, 14794, 21664, 20835, 17591, 31117, 2948, 28005, 17632, 14794,\r
-  20718, 12805, 17064, 16059, 9086, 369, 15699, 22825, 25896, 30938,\r
-  21539, 1758, 18908, 13442, 18972, 30556, 6502, 6679, 30474, 18639,\r
-  18579, 7487, 18885, 4417, 11669, 12916, 16308, 2061, 21416, 25618,\r
-  30096, 25494, 12790, 15790, 13674, 16184, 18872, 426, 9712, 7551,\r
-  28575, 23814, 32492, 23191, 17522, 3449, 26381, 8964, 8440, 11713,\r
-  24298, 17043, 31000, 7223, 23876, 24465, 31295, 12198, 139, 30266,\r
-  26882, 11869, 31140, 10356, 517, 15235, 5098, 13758, 25115, 11947,\r
-  32371, 12131, 14766, 2472, 14996, 15603, 20322, 163, 21415, 1267,\r
-  5621, 18539, 17419, 3540, 22890, 7947, 11117, 11042, 18278, 17058,\r
-  14918, 19198, 22234, 19055, 30373, 14286, 21218, 5676, 15919, 8755,\r
-  3309, 18333, 10596, 1852, 31263, 31336, 13348, 18137, 16371, 11815,\r
-  20337, 32402, 29733, 5820, 16502, 31864, 5071, 18148, 28872, 24156,\r
-  30162, 26896, 5101, 12608, 15479, 31344, 17947, 9483, 2646, 15440,\r
-  2113, 10369, 32375, 20391, 15692, 369, 15288, 12013, 3235, 13616,\r
-  32622, 31278, 19955, 21831, 2895, 18781, 25138, 1129, 26256, 30954,\r
-  7646, 18344, 14922, 9366, 10374, 30696, 19746, 17543, 30092, 26515,\r
-  25129, 8343, 14889, 4238, 32513, 3570, 1201, 24172, 23874, 10976,\r
-  22809, 26850, 2843, 3295, 30390, 12923, 32573, 5365, 11079, 16269,\r
-  9204, 24132, 22326, 6508, 7575, 31455, 1819, 4573, 20515, 29404,\r
-  18050, 23246, 26659, 14763, 4078, 17988, 27347, 3494, 32286, 17044,\r
-  4484, 30184, 8846, 26326, 29762, 21091, 9537, 9111, 18357, 12845,\r
-  4542, 27598, 12869, 25627, 30041, 27153, 31873, 30097, 12979, 5641,\r
-  8386, 5016, 11908, 15908, 32267, 561, 14744, 22921, 12852, 7658,\r
-  23576, 13905, 24392, 7086, 26123, 22516, 24619, 31457, 26908, 6657,\r
-  12416, 23981, 32670, 27411, 3017, 15254, 1229, 13312, 2000, 8789,\r
-  8791, 16211, 11847, 30947, 22299, 13565, 22955, 30932, 23344, 32327,\r
-  22894, 20966, 1321, 9739, 8532, 11226, 5271, 2340, 2078, 31362,\r
-  1488, 27427, 22886, 22556, 21231, 17219, 16074, 23006, 17948, 21920,\r
-  17484, 4818, 16654, 27811, 31737, 14564, 7629, 18113, 1225, 8250,\r
-  3261, 3173, 30919, 195, 5080, 25130, 1649, 14867, 4923, 27470,\r
-  14690, 2414, 29412, 20580, 13870, 26146, 23994, 7752, 28046, 30746,\r
-  11725, 4440, 2749, 23729, 28128, 8417, 8481, 11716, 5157, 24280,\r
-  23854, 32523, 23111, 32715, 15496, 17833, 22189, 7958, 4455, 24065,\r
-  15102, 4954, 21824, 9164, 23520, 26411, 3746, 20584, 26118, 18953,\r
-  20062, 4979, 25705, 3474, 2026, 6553, 31701, 757, 18695, 30122,\r
-  32680, 19626, 5282, 8176, 17367, 30817, 25848, 32703, 20529, 30008,\r
-  6398, 13133, 22760, 14896, 20736, 2500, 8269, 12514, 32392, 25494,\r
-  9691, 14446, 11137, 27921, 18039, 21685, 15516, 26419, 12790, 24008,\r
-  13043, 29375, 23008, 17311, 12525, 4496, 15731, 14863, 18017, 21038,\r
+  29033, 6458,  15220, 12275, 2147,  18166, 13953, 7492,  25408, 4913,\r
+  27558, 8096,  10520, 17452, 5479,  8064,  6217,  30562, 4522,  8266,\r
+  3959,  5750,  21203, 31965, 10193, 6251,  27693, 21098, 17558, 25363,\r
+  15756, 3463,  15320, 24778, 560,   19838, 31873, 7780,  18157, 4587,\r
+  21907, 1379,  2953,  26246, 17076, 1645,  4966,  317,   25065, 18430,\r
+  10592, 1670,  30370, 11611, 23289, 26611, 7671,  18887, 28340, 4358,\r
+  6193,  5112,  6590,  22088, 19340, 28108, 14547, 23189, 25659, 21561,\r
+  4192,  24250, 13741, 19330, 22501, 12098, 16655, 23473, 5278,  9356,\r
+  1298,  12609, 1890,  26913, 31470, 13851, 12747, 31301, 25767, 14020,\r
+  13975, 5836,  20622, 26580, 6478,  4143,  30220, 24490, 8485,  12767,\r
+  20379, 22622, 25379, 13017, 5653,  19959, 14210, 25979, 305,   19678,\r
+  7768,  6550,  29002, 1171,  22391, 25796, 26211, 29343, 12689, 17660,\r
+  26729, 14794, 21664, 20835, 17591, 31117, 2948,  28005, 17632, 14794,\r
+  20718, 12805, 17064, 16059, 9086,  369,   15699, 22825, 25896, 30938,\r
+  21539, 1758,  18908, 13442, 18972, 30556, 6502,  6679,  30474, 18639,\r
+  18579, 7487,  18885, 4417,  11669, 12916, 16308, 2061,  21416, 25618,\r
+  30096, 25494, 12790, 15790, 13674, 16184, 18872, 426,   9712,  7551,\r
+  28575, 23814, 32492, 23191, 17522, 3449,  26381, 8964,  8440,  11713,\r
+  24298, 17043, 31000, 7223,  23876, 24465, 31295, 12198, 139,   30266,\r
+  26882, 11869, 31140, 10356, 517,   15235, 5098,  13758, 25115, 11947,\r
+  32371, 12131, 14766, 2472,  14996, 15603, 20322, 163,   21415, 1267,\r
+  5621,  18539, 17419, 3540,  22890, 7947,  11117, 11042, 18278, 17058,\r
+  14918, 19198, 22234, 19055, 30373, 14286, 21218, 5676,  15919, 8755,\r
+  3309,  18333, 10596, 1852,  31263, 31336, 13348, 18137, 16371, 11815,\r
+  20337, 32402, 29733, 5820,  16502, 31864, 5071,  18148, 28872, 24156,\r
+  30162, 26896, 5101,  12608, 15479, 31344, 17947, 9483,  2646,  15440,\r
+  2113,  10369, 32375, 20391, 15692, 369,   15288, 12013, 3235,  13616,\r
+  32622, 31278, 19955, 21831, 2895,  18781, 25138, 1129,  26256, 30954,\r
+  7646,  18344, 14922, 9366,  10374, 30696, 19746, 17543, 30092, 26515,\r
+  25129, 8343,  14889, 4238,  32513, 3570,  1201,  24172, 23874, 10976,\r
+  22809, 26850, 2843,  3295,  30390, 12923, 32573, 5365,  11079, 16269,\r
+  9204,  24132, 22326, 6508,  7575,  31455, 1819,  4573,  20515, 29404,\r
+  18050, 23246, 26659, 14763, 4078,  17988, 27347, 3494,  32286, 17044,\r
+  4484,  30184, 8846,  26326, 29762, 21091, 9537,  9111,  18357, 12845,\r
+  4542,  27598, 12869, 25627, 30041, 27153, 31873, 30097, 12979, 5641,\r
+  8386,  5016,  11908, 15908, 32267, 561,   14744, 22921, 12852, 7658,\r
+  23576, 13905, 24392, 7086,  26123, 22516, 24619, 31457, 26908, 6657,\r
+  12416, 23981, 32670, 27411, 3017,  15254, 1229,  13312, 2000,  8789,\r
+  8791,  16211, 11847, 30947, 22299, 13565, 22955, 30932, 23344, 32327,\r
+  22894, 20966, 1321,  9739,  8532,  11226, 5271,  2340,  2078,  31362,\r
+  1488,  27427, 22886, 22556, 21231, 17219, 16074, 23006, 17948, 21920,\r
+  17484, 4818,  16654, 27811, 31737, 14564, 7629,  18113, 1225,  8250,\r
+  3261,  3173,  30919, 195,   5080,  25130, 1649,  14867, 4923,  27470,\r
+  14690, 2414,  29412, 20580, 13870, 26146, 23994, 7752,  28046, 30746,\r
+  11725, 4440,  2749,  23729, 28128, 8417,  8481,  11716, 5157,  24280,\r
+  23854, 32523, 23111, 32715, 15496, 17833, 22189, 7958,  4455,  24065,\r
+  15102, 4954,  21824, 9164,  23520, 26411, 3746,  20584, 26118, 18953,\r
+  20062, 4979,  25705, 3474,  2026,  6553,  31701, 757,   18695, 30122,\r
+  32680, 19626, 5282,  8176,  17367, 30817, 25848, 32703, 20529, 30008,\r
+  6398,  13133, 22760, 14896, 20736, 2500,  8269,  12514, 32392, 25494,\r
+  9691,  14446, 11137, 27921, 18039, 21685, 15516, 26419, 12790, 24008,\r
+  13043, 29375, 23008, 17311, 12525, 4496,  15731, 14863, 18017, 21038,\r
   14059, 24822, 18430, 22943, 11777, 15545, 13802, 16256, 21426, 4848,\r
-  30121, 28756, 19265, 32607, 25409, 2587, 25727, 21801, 32155, 26407,\r
-  19274, 8256, 12845, 19243, 20564, 23328, 3030, 26261, 12070, 11453,\r
-  18697, 9245, 30052, 17081, 7470, 29854, 28498, 7131, 8517, 3365,\r
-  15767, 22205, 14285, 19272, 30785, 22724, 26596, 13242, 778, 24917,\r
-  29615, 16156, 30425, 23878, 11772, 26901, 17548, 3731, 21286, 13732,\r
-  29941, 23635, 26937, 8373, 10786, 24298, 27479, 11251, 17890, 31871,\r
-  17499, 32478, 22916, 10673, 23739, 19741, 17122, 8837, 16307, 30485,\r
-  6815, 12195, 7072, 6330, 22444, 19395, 8618, 31397, 19473, 15714,\r
-  2213, 6504, 24298, 30905, 14137, 14110, 10159, 24047, 22849, 11078,\r
-  20153, 10126, 25714, 25809, 22274, 7476, 20541, 21113, 13613, 24203,\r
-  1270, 9557, 22470, 23162, 17973, 8618, 1226, 18077, 7293, 29189,\r
-  12394, 10995, 539, 12422, 12556, 21975, 22353, 6783, 29843, 19506,\r
-  25012, 8766, 6880, 2542, 23251, 21286, 6552, 9902, 21017, 15365,\r
-  19752, 12988, 26101, 21409, 6919, 24642, 6199, 2964, 2363, 19646,\r
-  16830, 1370, 28447, 32432, 26960, 7593, 9059, 27541, 457, 16896,\r
-  19284, 6681, 21368, 17539, 12126, 13449, 5318, 8710, 14543, 8071,\r
-  30232, 28264, 31965, 26881, 9463, 23330, 30955, 9060, 2671, 3103,\r
-  25608, 268, 18612, 11983, 14777, 17408, 15372, 1911, 25080, 21980,\r
-  744, 26827, 6780, 7182, 20820, 18878, 1339, 23621, 5010, 28057,\r
-  46, 17703, 9218, 21066, 10836, 28483, 6214, 22783, 14841, 27206,\r
-  27042, 23796, 2104, 10865, 31913, 11401, 30143, 27210, 19478, 6296,\r
-  3282, 21650, 15096, 3589, 1171, 2680, 21010, 28055, 2432, 23052,\r
-  27777, 5638, 28477, 14582, 6047, 21589, 12180, 22376, 10792, 11873,\r
-  23226, 24401, 22171, 15291, 23763, 13268, 15587, 179, 15545, 17656,\r
-  16183, 32693, 14329, 19361, 7743, 29913, 24607, 447, 8312, 28597,\r
-  7476, 10949, 18649, 16246, 14724, 93, 24759, 25903, 23205, 22361,\r
-  22758, 112, 2996, 4333, 17953, 27163, 15586, 11292, 31915, 29043,\r
-  23599, 2929, 3895, 28534, 27510, 17135, 13574, 9325, 14250, 586,\r
-  23375, 5057, 5471, 28504, 26083, 21008, 18060, 1218, 25361, 31104,\r
-  28047, 18687, 14023, 14419, 12657, 29059, 251, 11708, 30572, 17971,\r
-  17225, 2289, 21930, 22813, 2526, 7810, 9040, 26214, 7060, 26601,\r
-  18875, 28803, 30046, 8546, 15113, 27820, 5351, 31229, 12764, 5006,\r
-  22134, 2545, 7770, 10817, 27157, 819, 25721, 22393, 9202, 20551,\r
-  20345, 22784, 11269, 5463, 24242, 11620, 20723, 18306, 20367, 1517,\r
-  563, 20086, 2267, 5329, 13679, 25665, 19259, 2987, 15149, 10084,\r
-  19196, 24106, 18094, 4905, 5903, 7430, 11542, 21047, 29010, 32057,\r
-  8142, 8036, 31762, 24427, 26151, 10442, 24781, 27566, 23104, 10525,\r
-  21564, 5483, 11561, 11068, 7056, 7068, 13896, 11269, 30461, 22844,\r
-  20988, 3694, 5493, 31228, 4993, 5585, 30134, 26424, 19988, 23176,\r
-  22662, 297, 14679, 27834, 10301, 30812, 13558, 6516, 31109, 23395,\r
-  28555, 1532, 2398, 11466, 29887, 5474, 23653, 5453, 26290, 19543,\r
-  25429, 1607, 26270, 10050, 18638, 24686, 28855, 5777, 19541, 29374,\r
-  12117, 5453, 20125, 26035, 2388, 3570, 29444, 26299, 28603, 381,\r
-  31329, 10219, 11933, 9414, 15101, 2033, 17725, 26640, 23007, 30282,\r
-  2421, 7391, 10573, 26549, 6745, 11786, 20623, 28391, 26135, 7696,\r
-  8438, 19840, 18210, 16303, 15389, 4414, 31887, 23731, 28527, 4464,\r
-  447, 16141, 26857, 24750, 2366, 20516, 10529, 1736, 7915, 17008,\r
-  22152, 5884, 13657, 31044, 21996, 30316, 8822, 8939, 19521, 26319,\r
-  20330, 14583, 28064, 10598, 8130, 23254, 15760, 20017, 21454, 13990,\r
-  9349, 868, 27207, 29770, 32422, 30997, 17717, 22206, 2003, 11575,\r
-  5648, 1959, 18663, 13259, 21798, 16687, 27194, 20309, 18492, 18959,\r
-  3947, 28045, 23672, 30701, 8284, 23640, 22399, 11241, 9085, 19190,\r
-  9178, 32115, 3406, 27517, 15518, 1887, 10527, 18566, 31820, 2875,\r
-  32538, 8998, 21238, 24288, 23428, 27936, 10147, 22599, 23360, 13144,\r
-  26869, 11166, 8597, 3211, 4361, 28571, 6961, 24638, 8351, 15377,\r
-  29293, 6644, 21883, 5825, 6354, 7332, 8203, 8818, 2524, 2666,\r
-  7241, 17476, 11007, 13437, 4579, 13121, 27880, 18273, 16281, 9781,\r
-  4613, 1886, 30183, 5055, 15943, 12592, 17637, 14505, 13351, 21248,\r
-  16747, 22645, 25319, 12691, 9592, 27704, 10778, 3522, 20437, 13228,\r
-  30310, 24106, 26357, 23680, 7049, 20772, 8992, 13298, 3994, 11000,\r
-  977, 5792, 27537, 21581, 29788, 4763, 21770, 11492, 9171, 28606,\r
-  13638, 30342, 5163, 4670, 24947, 27707, 9371, 27521, 6189, 22973,\r
-  6981, 27956, 30788, 18220, 29208, 12952, 21696, 3331, 27381, 21532,\r
-  2594, 25675, 12048, 6449, 14573, 18191, 32154, 31834, 2405, 13583,\r
-  11677, 13698, 23703, 12472, 1831, 16019, 3737, 2132, 14250, 1604,\r
+  30121, 28756, 19265, 32607, 25409, 2587,  25727, 21801, 32155, 26407,\r
+  19274, 8256,  12845, 19243, 20564, 23328, 3030,  26261, 12070, 11453,\r
+  18697, 9245,  30052, 17081, 7470,  29854, 28498, 7131,  8517,  3365,\r
+  15767, 22205, 14285, 19272, 30785, 22724, 26596, 13242, 778,   24917,\r
+  29615, 16156, 30425, 23878, 11772, 26901, 17548, 3731,  21286, 13732,\r
+  29941, 23635, 26937, 8373,  10786, 24298, 27479, 11251, 17890, 31871,\r
+  17499, 32478, 22916, 10673, 23739, 19741, 17122, 8837,  16307, 30485,\r
+  6815,  12195, 7072,  6330,  22444, 19395, 8618,  31397, 19473, 15714,\r
+  2213,  6504,  24298, 30905, 14137, 14110, 10159, 24047, 22849, 11078,\r
+  20153, 10126, 25714, 25809, 22274, 7476,  20541, 21113, 13613, 24203,\r
+  1270,  9557,  22470, 23162, 17973, 8618,  1226,  18077, 7293,  29189,\r
+  12394, 10995, 539,   12422, 12556, 21975, 22353, 6783,  29843, 19506,\r
+  25012, 8766,  6880,  2542,  23251, 21286, 6552,  9902,  21017, 15365,\r
+  19752, 12988, 26101, 21409, 6919,  24642, 6199,  2964,  2363,  19646,\r
+  16830, 1370,  28447, 32432, 26960, 7593,  9059,  27541, 457,   16896,\r
+  19284, 6681,  21368, 17539, 12126, 13449, 5318,  8710,  14543, 8071,\r
+  30232, 28264, 31965, 26881, 9463,  23330, 30955, 9060,  2671,  3103,\r
+  25608, 268,   18612, 11983, 14777, 17408, 15372, 1911,  25080, 21980,\r
+  744,   26827, 6780,  7182,  20820, 18878, 1339,  23621, 5010,  28057,\r
+  46,    17703, 9218,  21066, 10836, 28483, 6214,  22783, 14841, 27206,\r
+  27042, 23796, 2104,  10865, 31913, 11401, 30143, 27210, 19478, 6296,\r
+  3282,  21650, 15096, 3589,  1171,  2680,  21010, 28055, 2432,  23052,\r
+  27777, 5638,  28477, 14582, 6047,  21589, 12180, 22376, 10792, 11873,\r
+  23226, 24401, 22171, 15291, 23763, 13268, 15587, 179,   15545, 17656,\r
+  16183, 32693, 14329, 19361, 7743,  29913, 24607, 447,   8312,  28597,\r
+  7476,  10949, 18649, 16246, 14724, 93,    24759, 25903, 23205, 22361,\r
+  22758, 112,   2996,  4333,  17953, 27163, 15586, 11292, 31915, 29043,\r
+  23599, 2929,  3895,  28534, 27510, 17135, 13574, 9325,  14250, 586,\r
+  23375, 5057,  5471,  28504, 26083, 21008, 18060, 1218,  25361, 31104,\r
+  28047, 18687, 14023, 14419, 12657, 29059, 251,   11708, 30572, 17971,\r
+  17225, 2289,  21930, 22813, 2526,  7810,  9040,  26214, 7060,  26601,\r
+  18875, 28803, 30046, 8546,  15113, 27820, 5351,  31229, 12764, 5006,\r
+  22134, 2545,  7770,  10817, 27157, 819,   25721, 22393, 9202,  20551,\r
+  20345, 22784, 11269, 5463,  24242, 11620, 20723, 18306, 20367, 1517,\r
+  563,   20086, 2267,  5329,  13679, 25665, 19259, 2987,  15149, 10084,\r
+  19196, 24106, 18094, 4905,  5903,  7430,  11542, 21047, 29010, 32057,\r
+  8142,  8036,  31762, 24427, 26151, 10442, 24781, 27566, 23104, 10525,\r
+  21564, 5483,  11561, 11068, 7056,  7068,  13896, 11269, 30461, 22844,\r
+  20988, 3694,  5493,  31228, 4993,  5585,  30134, 26424, 19988, 23176,\r
+  22662, 297,   14679, 27834, 10301, 30812, 13558, 6516,  31109, 23395,\r
+  28555, 1532,  2398,  11466, 29887, 5474,  23653, 5453,  26290, 19543,\r
+  25429, 1607,  26270, 10050, 18638, 24686, 28855, 5777,  19541, 29374,\r
+  12117, 5453,  20125, 26035, 2388,  3570,  29444, 26299, 28603, 381,\r
+  31329, 10219, 11933, 9414,  15101, 2033,  17725, 26640, 23007, 30282,\r
+  2421,  7391,  10573, 26549, 6745,  11786, 20623, 28391, 26135, 7696,\r
+  8438,  19840, 18210, 16303, 15389, 4414,  31887, 23731, 28527, 4464,\r
+  447,   16141, 26857, 24750, 2366,  20516, 10529, 1736,  7915,  17008,\r
+  22152, 5884,  13657, 31044, 21996, 30316, 8822,  8939,  19521, 26319,\r
+  20330, 14583, 28064, 10598, 8130,  23254, 15760, 20017, 21454, 13990,\r
+  9349,  868,   27207, 29770, 32422, 30997, 17717, 22206, 2003,  11575,\r
+  5648,  1959,  18663, 13259, 21798, 16687, 27194, 20309, 18492, 18959,\r
+  3947,  28045, 23672, 30701, 8284,  23640, 22399, 11241, 9085,  19190,\r
+  9178,  32115, 3406,  27517, 15518, 1887,  10527, 18566, 31820, 2875,\r
+  32538, 8998,  21238, 24288, 23428, 27936, 10147, 22599, 23360, 13144,\r
+  26869, 11166, 8597,  3211,  4361,  28571, 6961,  24638, 8351,  15377,\r
+  29293, 6644,  21883, 5825,  6354,  7332,  8203,  8818,  2524,  2666,\r
+  7241,  17476, 11007, 13437, 4579,  13121, 27880, 18273, 16281, 9781,\r
+  4613,  1886,  30183, 5055,  15943, 12592, 17637, 14505, 13351, 21248,\r
+  16747, 22645, 25319, 12691, 9592,  27704, 10778, 3522,  20437, 13228,\r
+  30310, 24106, 26357, 23680, 7049,  20772, 8992,  13298, 3994,  11000,\r
+  977,   5792,  27537, 21581, 29788, 4763,  21770, 11492, 9171,  28606,\r
+  13638, 30342, 5163,  4670,  24947, 27707, 9371,  27521, 6189,  22973,\r
+  6981,  27956, 30788, 18220, 29208, 12952, 21696, 3331,  27381, 21532,\r
+  2594,  25675, 12048, 6449,  14573, 18191, 32154, 31834, 2405,  13583,\r
+  11677, 13698, 23703, 12472, 1831,  16019, 3737,  2132,  14250, 1604,\r
   11795, 16255, 26019, 17715, 19710, 11482, 10106, 10547, 20140, 8195,\r
-  25001, 19175, 22281, 9156, 20513, 8592, 16160, 12426, 16105, 26915,\r
-  13025, 25369, 13833, 11935, 23585, 2943, 7334, 30365, 16098, 10310,\r
-  5998, 12840, 10965, 8686, 9783, 30160, 26141, 23195, 17634, 9978,\r
-  30038, 26122, 4998, 4986, 9430, 32201, 18891, 10084, 14130, 1448,\r
-  31123, 13598, 23812, 13419, 25824, 954, 23020, 13505, 27378, 6019,\r
-  31445, 21114, 20655, 26838, 16762, 2036, 26696, 32052, 26920, 32726,\r
-  23578, 5780, 10437, 24321, 8402, 27902, 22033, 27332, 21205, 9813,\r
-  20012, 24399, 735, 117, 18265, 2667, 13801, 24958, 28673, 32360,\r
-  7249, 17006, 32507, 29014, 17461, 10230, 6410, 7288, 19231, 7558,\r
-  12199, 12277, 21224, 26283, 15617, 11985, 15830, 23194, 323, 18204,\r
-  30216, 7693, 9493, 31337, 17428, 12109, 25957, 10882, 30958, 30864,\r
-  11367, 24154, 28428, 23686, 15322, 21315, 9927, 28975, 19598, 11873,\r
-  517, 23791, 18211, 25183, 25365, 2532, 31251, 7520, 13018, 9079,\r
-  28915, 21305, 4652, 4657, 20725, 14301, 14971, 27089, 24242, 15896,\r
-  20917, 32155, 4390, 28289, 13674, 3826, 22012, 10922, 303, 18985,\r
-  27404, 12441, 21568, 1431, 28963, 29308, 6761, 30441, 7170, 5784,\r
-  23590, 21180, 9129, 13187, 23049, 2668, 23253, 7315, 30556, 7206,\r
-  3783, 21142, 14344, 10565, 5191, 27843, 21941, 18139, 9705, 3569,\r
-  12339, 15501, 30607, 14855, 7448, 9637, 9007, 8116, 23211, 10338,\r
-  21206, 10848, 10753, 14226, 19437, 28770, 21606, 4707, 16316, 20851,\r
-  8191, 30327, 1324, 22882, 30637, 14390, 8145, 15114, 18995, 13672,\r
-  14375, 30594, 25756, 22019, 26908, 1427, 19415, 3905, 1743, 3439,\r
-  22949, 7414, 17048, 3231, 8373, 25889, 20552, 30270, 23564, 14785,\r
-  28850, 9061, 28075, 27882, 1386, 10214, 12396, 27415, 4556, 24381,\r
-  8494, 20418, 19776, 17859, 9009, 10290, 10941, 29221, 25539, 22677,\r
-  31116, 17173, 8477, 22350, 847, 5439, 22664, 12944, 19265, 5503,\r
-  8132, 5164, 21183, 849, 11689, 14247, 1800, 30601, 22031, 1680,\r
-  15425, 836, 31980, 20240, 22972, 15134, 17596, 18627, 7033, 677,\r
-  31782, 23494, 3309, 11278, 3804, 24082, 8451, 16423, 32195, 15112,\r
-  2913, 653, 8788, 14668, 16108, 1567, 16706, 21207, 13710, 26034,\r
-  12380, 21320, 25911, 29959, 5046, 12411, 1569, 32250, 30211, 20829,\r
-  3673, 24059, 16454, 14079, 1659, 6082, 21674, 15337, 7100, 11583,\r
-  20653, 23984, 4910, 21968, 14980, 17611, 576, 25783, 7611, 32418,\r
-  28804, 29643, 23325, 7656, 18102, 9837, 12243, 13611, 12025, 6334,\r
+  25001, 19175, 22281, 9156,  20513, 8592,  16160, 12426, 16105, 26915,\r
+  13025, 25369, 13833, 11935, 23585, 2943,  7334,  30365, 16098, 10310,\r
+  5998,  12840, 10965, 8686,  9783,  30160, 26141, 23195, 17634, 9978,\r
+  30038, 26122, 4998,  4986,  9430,  32201, 18891, 10084, 14130, 1448,\r
+  31123, 13598, 23812, 13419, 25824, 954,   23020, 13505, 27378, 6019,\r
+  31445, 21114, 20655, 26838, 16762, 2036,  26696, 32052, 26920, 32726,\r
+  23578, 5780,  10437, 24321, 8402,  27902, 22033, 27332, 21205, 9813,\r
+  20012, 24399, 735,   117,   18265, 2667,  13801, 24958, 28673, 32360,\r
+  7249,  17006, 32507, 29014, 17461, 10230, 6410,  7288,  19231, 7558,\r
+  12199, 12277, 21224, 26283, 15617, 11985, 15830, 23194, 323,   18204,\r
+  30216, 7693,  9493,  31337, 17428, 12109, 25957, 10882, 30958, 30864,\r
+  11367, 24154, 28428, 23686, 15322, 21315, 9927,  28975, 19598, 11873,\r
+  517,   23791, 18211, 25183, 25365, 2532,  31251, 7520,  13018, 9079,\r
+  28915, 21305, 4652,  4657,  20725, 14301, 14971, 27089, 24242, 15896,\r
+  20917, 32155, 4390,  28289, 13674, 3826,  22012, 10922, 303,   18985,\r
+  27404, 12441, 21568, 1431,  28963, 29308, 6761,  30441, 7170,  5784,\r
+  23590, 21180, 9129,  13187, 23049, 2668,  23253, 7315,  30556, 7206,\r
+  3783,  21142, 14344, 10565, 5191,  27843, 21941, 18139, 9705,  3569,\r
+  12339, 15501, 30607, 14855, 7448,  9637,  9007,  8116,  23211, 10338,\r
+  21206, 10848, 10753, 14226, 19437, 28770, 21606, 4707,  16316, 20851,\r
+  8191,  30327, 1324,  22882, 30637, 14390, 8145,  15114, 18995, 13672,\r
+  14375, 30594, 25756, 22019, 26908, 1427,  19415, 3905,  1743,  3439,\r
+  22949, 7414,  17048, 3231,  8373,  25889, 20552, 30270, 23564, 14785,\r
+  28850, 9061,  28075, 27882, 1386,  10214, 12396, 27415, 4556,  24381,\r
+  8494,  20418, 19776, 17859, 9009,  10290, 10941, 29221, 25539, 22677,\r
+  31116, 17173, 8477,  22350, 847,   5439,  22664, 12944, 19265, 5503,\r
+  8132,  5164,  21183, 849,   11689, 14247, 1800,  30601, 22031, 1680,\r
+  15425, 836,   31980, 20240, 22972, 15134, 17596, 18627, 7033,  677,\r
+  31782, 23494, 3309,  11278, 3804,  24082, 8451,  16423, 32195, 15112,\r
+  2913,  653,   8788,  14668, 16108, 1567,  16706, 21207, 13710, 26034,\r
+  12380, 21320, 25911, 29959, 5046,  12411, 1569,  32250, 30211, 20829,\r
+  3673,  24059, 16454, 14079, 1659,  6082,  21674, 15337, 7100,  11583,\r
+  20653, 23984, 4910,  21968, 14980, 17611, 576,   25783, 7611,  32418,\r
+  28804, 29643, 23325, 7656,  18102, 9837,  12243, 13611, 12025, 6334,\r
   14288, 24489, 19043, 20240, 28524, 19558, 24508, 14746, 30798, 32635,\r
-  26499, 8303, 9616, 15793, 6450, 2993, 4894, 22094, 24004, 31745,\r
-  19551, 16175, 19315, 1851, 17944, 14103, 3782, 11616, 12173, 25159,\r
-  25803, 31188, 24297, 5455, 2721, 17610, 23775, 16931, 17978, 10492,\r
-  21394, 15217, 27743, 415, 25778, 16946, 2037, 1174, 10984, 4480,\r
-  1662, 19686, 27253, 23719, 3555, 26986, 13590, 29566, 24432, 17352,\r
-  1322, 248, 27680, 29603, 5142, 6134, 32283, 21010, 28649, 607,\r
-  7037, 24913, 5180, 1651, 1625, 23735, 2653, 5724, 32254, 1256,\r
-  21676, 7686, 9592, 31820, 10564, 25393, 13146, 18368, 16350, 11205,\r
-  20155, 18315, 14067, 7781, 15743, 15507, 21537, 4422, 18392, 11729,\r
-  9168, 15170, 29963, 16898, 15381, 31528, 1400, 24991, 9943, 10583,\r
-  19925, 13584, 14128, 10123, 22458, 21277, 19989, 8950, 27490, 13221,\r
-  21050, 15507, 26288, 14994, 24368, 2999, 1392, 28428, 28624, 12009,\r
-  32480, 13037, 2013, 24307, 7278, 3701, 8421, 14393, 11716, 25664,\r
-  24168, 11850, 32258, 8564, 19773, 23989, 11850, 15935, 12848, 12318,\r
-  6530, 8833, 11248, 1680, 9557, 17093, 11305, 24085, 9339, 2422,\r
-  3053, 8836, 11835, 24656, 16216, 9115, 3886, 28180, 27764, 24653,\r
-  14149, 23680, 26970, 7261, 18701, 14974, 26010, 29740, 11826, 20124,\r
+  26499, 8303,  9616,  15793, 6450,  2993,  4894,  22094, 24004, 31745,\r
+  19551, 16175, 19315, 1851,  17944, 14103, 3782,  11616, 12173, 25159,\r
+  25803, 31188, 24297, 5455,  2721,  17610, 23775, 16931, 17978, 10492,\r
+  21394, 15217, 27743, 415,   25778, 16946, 2037,  1174,  10984, 4480,\r
+  1662,  19686, 27253, 23719, 3555,  26986, 13590, 29566, 24432, 17352,\r
+  1322,  248,   27680, 29603, 5142,  6134,  32283, 21010, 28649, 607,\r
+  7037,  24913, 5180,  1651,  1625,  23735, 2653,  5724,  32254, 1256,\r
+  21676, 7686,  9592,  31820, 10564, 25393, 13146, 18368, 16350, 11205,\r
+  20155, 18315, 14067, 7781,  15743, 15507, 21537, 4422,  18392, 11729,\r
+  9168,  15170, 29963, 16898, 15381, 31528, 1400,  24991, 9943,  10583,\r
+  19925, 13584, 14128, 10123, 22458, 21277, 19989, 8950,  27490, 13221,\r
+  21050, 15507, 26288, 14994, 24368, 2999,  1392,  28428, 28624, 12009,\r
+  32480, 13037, 2013,  24307, 7278,  3701,  8421,  14393, 11716, 25664,\r
+  24168, 11850, 32258, 8564,  19773, 23989, 11850, 15935, 12848, 12318,\r
+  6530,  8833,  11248, 1680,  9557,  17093, 11305, 24085, 9339,  2422,\r
+  3053,  8836,  11835, 24656, 16216, 9115,  3886,  28180, 27764, 24653,\r
+  14149, 23680, 26970, 7261,  18701, 14974, 26010, 29740, 11826, 20124,\r
   17117, 25296, 21827, 28092, 24777, 28261, 31924, 10764, 24613, 28328,\r
-  12073, 28217, 8510, 8642, 21746, 22752, 393, 865, 32465, 27718,\r
-  7305, 6669, 19972, 26184, 5107, 11962, 7551, 21653, 8977, 8857,\r
-  20602, 14618, 356, 22324, 27179, 21182, 22669, 23738, 21205, 24144,\r
-  20846, 23191, 28161, 25533, 31884, 26184, 26123, 25479, 6583, 15470,\r
-  20705, 30834, 750, 4129, 4616, 16769, 15997, 25734, 7648, 10272,\r
-  31848, 9380, 552, 22179, 780, 28019, 22468, 29423, 20228, 15926,\r
-  446, 29047, 27210, 779, 23948, 5227, 16030, 11713, 18577, 27435,\r
-  26412, 20713, 7910, 26114, 17769, 28976, 5977, 21009, 23870, 236,\r
-  8374, 20873, 15464, 14836, 9286, 9246, 28959, 18869, 20886, 21432,\r
-  21493, 898, 22393, 6507, 10498, 3372, 11856, 3753, 23614, 14803,\r
-  22409, 32438, 23854, 1787, 13926, 27741, 24003, 28642, 26112, 8162,\r
-  30847, 2834, 12427, 20791, 473, 9778, 3035, 17010, 2275, 21537,\r
-  16167, 24191, 19242, 8518, 5646, 12306, 8157, 25121, 17623, 17632,\r
-  7730, 20518, 25085, 20751, 774, 26828, 6379, 9963, 6596, 17121,\r
-  31236, 22234, 11399, 20000, 3046, 2962, 16259, 12549, 496, 30345,\r
-  7073, 14560, 15362, 24749, 27753, 4137, 29571, 13142, 29989, 12051,\r
-  14761, 3449, 8515, 14947, 10996, 14622, 29692, 17539, 31740, 5396,\r
-  6963, 9426, 17261, 18147, 10656, 22847, 9552, 18690, 15405, 9750,\r
-  17292, 10570, 3744, 26649, 6060, 2987, 17275, 19667, 6626, 17694,\r
-  25376, 25897, 22860, 8922, 22073, 17970, 26999, 12747, 24407, 11337,\r
-  18722, 6720, 22489, 21600, 9796, 25572, 13328, 32663, 9040, 13807,\r
-  4769, 21773, 439, 26525, 23338, 5621, 21934, 29920, 12328, 22509,\r
-  10035, 11089, 14360, 14732, 9290, 9069, 476, 17722, 18573, 23038,\r
-  2145, 30277, 7651, 32215, 6527, 5169, 31376, 17860, 9248, 22607,\r
-  24686, 25281, 12709, 4497, 24953, 25194, 3717, 15004, 11665, 5555,\r
-  26167, 13855, 11644, 20441, 22099, 9571, 20267, 4505, 15604, 3364,\r
-  26430, 29855, 18016, 15520, 19402, 27457, 32235, 10989, 3161, 10349,\r
+  12073, 28217, 8510,  8642,  21746, 22752, 393,   865,   32465, 27718,\r
+  7305,  6669,  19972, 26184, 5107,  11962, 7551,  21653, 8977,  8857,\r
+  20602, 14618, 356,   22324, 27179, 21182, 22669, 23738, 21205, 24144,\r
+  20846, 23191, 28161, 25533, 31884, 26184, 26123, 25479, 6583,  15470,\r
+  20705, 30834, 750,   4129,  4616,  16769, 15997, 25734, 7648,  10272,\r
+  31848, 9380,  552,   22179, 780,   28019, 22468, 29423, 20228, 15926,\r
+  446,   29047, 27210, 779,   23948, 5227,  16030, 11713, 18577, 27435,\r
+  26412, 20713, 7910,  26114, 17769, 28976, 5977,  21009, 23870, 236,\r
+  8374,  20873, 15464, 14836, 9286,  9246,  28959, 18869, 20886, 21432,\r
+  21493, 898,   22393, 6507,  10498, 3372,  11856, 3753,  23614, 14803,\r
+  22409, 32438, 23854, 1787,  13926, 27741, 24003, 28642, 26112, 8162,\r
+  30847, 2834,  12427, 20791, 473,   9778,  3035,  17010, 2275,  21537,\r
+  16167, 24191, 19242, 8518,  5646,  12306, 8157,  25121, 17623, 17632,\r
+  7730,  20518, 25085, 20751, 774,   26828, 6379,  9963,  6596,  17121,\r
+  31236, 22234, 11399, 20000, 3046,  2962,  16259, 12549, 496,   30345,\r
+  7073,  14560, 15362, 24749, 27753, 4137,  29571, 13142, 29989, 12051,\r
+  14761, 3449,  8515,  14947, 10996, 14622, 29692, 17539, 31740, 5396,\r
+  6963,  9426,  17261, 18147, 10656, 22847, 9552,  18690, 15405, 9750,\r
+  17292, 10570, 3744,  26649, 6060,  2987,  17275, 19667, 6626,  17694,\r
+  25376, 25897, 22860, 8922,  22073, 17970, 26999, 12747, 24407, 11337,\r
+  18722, 6720,  22489, 21600, 9796,  25572, 13328, 32663, 9040,  13807,\r
+  4769,  21773, 439,   26525, 23338, 5621,  21934, 29920, 12328, 22509,\r
+  10035, 11089, 14360, 14732, 9290,  9069,  476,   17722, 18573, 23038,\r
+  2145,  30277, 7651,  32215, 6527,  5169,  31376, 17860, 9248,  22607,\r
+  24686, 25281, 12709, 4497,  24953, 25194, 3717,  15004, 11665, 5555,\r
+  26167, 13855, 11644, 20441, 22099, 9571,  20267, 4505,  15604, 3364,\r
+  26430, 29855, 18016, 15520, 19402, 27457, 32235, 10989, 3161,  10349,\r
   26136, 16015, 27442, 17376, 23554, 13130, 31707, 28313, 18938, 4661,\r
-  2781, 19342, 28018, 28688, 12999, 16541, 13338, 26071, 17013, 21445,\r
-  29768, 30615, 22674, 26774, 1181, 23937, 22620, 29158, 30438, 25405,\r
-  7079, 27590, 31296, 20865, 1573, 12725, 10368, 5601, 24036, 1299,\r
-  17105, 7401, 3352, 22488, 8607, 4713, 12571, 12165, 23476, 31760,\r
-  6834, 13403, 26785, 25148, 9106, 16587, 16992, 31505, 32035, 1327,\r
-  18999, 3017, 23683, 5047, 29919, 29770, 10190, 26790, 486, 6398,\r
-  2205, 17086, 16978, 7903, 1996, 24568, 12935, 11729, 5761, 29305,\r
-  27499, 11573, 10345, 25026, 11975, 11963, 17221, 11303, 4849, 31607,\r
-  10150, 31874, 4520, 30520, 30452, 18472, 32319, 19989, 31413, 2332,\r
-  9982, 8264, 28940, 26755, 9669, 8256, 640, 27992, 9202, 22257,\r
-  17663, 865, 5509, 623, 28707, 28258, 12162, 17083, 9908, 32144,\r
-  7575, 2268, 31085, 4936, 15103, 31794, 1795, 21761, 21158, 18952,\r
-  23907, 6016, 10894, 4968, 59, 23371, 24177, 27955, 14525, 27999,\r
-  19880, 9841, 4768, 37, 8267, 18661, 10855, 20643, 10138, 2020,\r
-  12517, 11247, 7579, 4456, 18433, 26858, 2053, 30049, 7351, 10794,\r
-  16989, 5963, 25183, 31800, 29535, 24069, 4914, 9212, 29087, 5601,\r
-  6666, 12661, 23408, 14584, 18793, 10926, 26117, 4544, 17341, 25325,\r
-  10198, 27616, 14562, 21037, 25157, 18242, 7401, 206, 3714, 16746,\r
-  15384, 23436, 12716, 10503, 20529, 942, 15417, 28616, 31480, 28543,\r
+  2781,  19342, 28018, 28688, 12999, 16541, 13338, 26071, 17013, 21445,\r
+  29768, 30615, 22674, 26774, 1181,  23937, 22620, 29158, 30438, 25405,\r
+  7079,  27590, 31296, 20865, 1573,  12725, 10368, 5601,  24036, 1299,\r
+  17105, 7401,  3352,  22488, 8607,  4713,  12571, 12165, 23476, 31760,\r
+  6834,  13403, 26785, 25148, 9106,  16587, 16992, 31505, 32035, 1327,\r
+  18999, 3017,  23683, 5047,  29919, 29770, 10190, 26790, 486,   6398,\r
+  2205,  17086, 16978, 7903,  1996,  24568, 12935, 11729, 5761,  29305,\r
+  27499, 11573, 10345, 25026, 11975, 11963, 17221, 11303, 4849,  31607,\r
+  10150, 31874, 4520,  30520, 30452, 18472, 32319, 19989, 31413, 2332,\r
+  9982,  8264,  28940, 26755, 9669,  8256,  640,   27992, 9202,  22257,\r
+  17663, 865,   5509,  623,   28707, 28258, 12162, 17083, 9908,  32144,\r
+  7575,  2268,  31085, 4936,  15103, 31794, 1795,  21761, 21158, 18952,\r
+  23907, 6016,  10894, 4968,  59,    23371, 24177, 27955, 14525, 27999,\r
+  19880, 9841,  4768,  37,    8267,  18661, 10855, 20643, 10138, 2020,\r
+  12517, 11247, 7579,  4456,  18433, 26858, 2053,  30049, 7351,  10794,\r
+  16989, 5963,  25183, 31800, 29535, 24069, 4914,  9212,  29087, 5601,\r
+  6666,  12661, 23408, 14584, 18793, 10926, 26117, 4544,  17341, 25325,\r
+  10198, 27616, 14562, 21037, 25157, 18242, 7401,  206,   3714,  16746,\r
+  15384, 23436, 12716, 10503, 20529, 942,   15417, 28616, 31480, 28543,\r
   30871, 28273, 18927, 28418, 19731, 12078, 10084, 26850, 21755, 12839,\r
-  23725, 25512, 5375, 24660, 2483, 12080, 20189, 8339, 13741, 16990,\r
-  14398, 17144, 23854, 8461, 6362, 13924, 8546, 24136, 5091, 15449,\r
-  31892, 3773, 8353, 3852, 8180, 16238, 30298, 11708, 24216, 17578,\r
-  28532, 17219, 18880, 30012, 10205, 23275, 25182, 9698, 23211, 22402,\r
-  982, 30977, 17152, 24753, 27650, 22166, 1073, 14985, 1145, 8304,\r
-  23847, 15199, 20753, 30365, 11013, 21466, 10146, 8226, 32522, 23882,\r
-  5389, 27631, 19386, 8763, 4989, 7697, 27960, 21835, 30189, 15658,\r
-  4343, 27192, 11499, 21534, 16529, 1341, 18587, 31760, 5111, 29855,\r
-  23550, 17037, 20171, 26755, 9588, 16390, 27914, 23810, 8320, 29316,\r
-  25326, 27263, 25804, 12439, 5139, 28728, 30317, 18575, 17880, 19740,\r
-  27495, 8175, 4360, 6877, 2676, 26399, 5818, 8005, 18177, 13665,\r
-  31861, 26573, 15994, 8454, 29592, 17260, 6855, 10210, 20473, 3757,\r
-  32279, 31741, 29133, 1540, 23516, 2187, 1736, 4706, 25366, 17183,\r
-  26245, 17415, 24021, 7451, 3623, 28568, 10745, 10603, 32577, 8561,\r
-  12093, 19059, 1523, 23356, 30324, 31813, 10838, 20418, 17938, 3864,\r
-  20762, 4354, 26605, 26102, 20334, 25728, 31813, 3508, 30240, 12768,\r
+  23725, 25512, 5375,  24660, 2483,  12080, 20189, 8339,  13741, 16990,\r
+  14398, 17144, 23854, 8461,  6362,  13924, 8546,  24136, 5091,  15449,\r
+  31892, 3773,  8353,  3852,  8180,  16238, 30298, 11708, 24216, 17578,\r
+  28532, 17219, 18880, 30012, 10205, 23275, 25182, 9698,  23211, 22402,\r
+  982,   30977, 17152, 24753, 27650, 22166, 1073,  14985, 1145,  8304,\r
+  23847, 15199, 20753, 30365, 11013, 21466, 10146, 8226,  32522, 23882,\r
+  5389,  27631, 19386, 8763,  4989,  7697,  27960, 21835, 30189, 15658,\r
+  4343,  27192, 11499, 21534, 16529, 1341,  18587, 31760, 5111,  29855,\r
+  23550, 17037, 20171, 26755, 9588,  16390, 27914, 23810, 8320,  29316,\r
+  25326, 27263, 25804, 12439, 5139,  28728, 30317, 18575, 17880, 19740,\r
+  27495, 8175,  4360,  6877,  2676,  26399, 5818,  8005,  18177, 13665,\r
+  31861, 26573, 15994, 8454,  29592, 17260, 6855,  10210, 20473, 3757,\r
+  32279, 31741, 29133, 1540,  23516, 2187,  1736,  4706,  25366, 17183,\r
+  26245, 17415, 24021, 7451,  3623,  28568, 10745, 10603, 32577, 8561,\r
+  12093, 19059, 1523,  23356, 30324, 31813, 10838, 20418, 17938, 3864,\r
+  20762, 4354,  26605, 26102, 20334, 25728, 31813, 3508,  30240, 12768,\r
   32258, 16423, 22534, 16307, 23614, 10133, 20380, 12945, 19715, 30314,\r
-  2030, 616, 15702, 10028, 3257, 23059, 628, 30897, 9677, 5423,\r
-  12379, 31376, 437, 20522, 14732, 15829, 29594, 16028, 15376, 32249,\r
-  18533, 15323, 8121, 22033, 30500, 18890, 27050, 22085, 12463, 29169,\r
-  26905, 3460, 4747, 15571, 8532, 23414, 270, 13179, 5378, 7858,\r
-  27844, 8025, 22188, 4914, 1810, 31820, 636, 29955, 10777, 20736,\r
-  1348, 15169, 30685, 24954, 21697, 32579, 29863, 28657, 32034, 25619,\r
-  8360, 32736, 10180, 4641, 21726, 20313, 32576, 6968, 26428, 31388,\r
-  5287, 23216, 23045, 32232, 10764, 9702, 6777, 2449, 1603, 24809,\r
-  4787, 23635, 13801, 19318, 4818, 6118, 23972, 6695, 21847, 17362,\r
-  428, 12263, 8910, 29317, 26251, 2985, 22705, 15523, 28449, 15962,\r
-  22409, 1693, 7146, 32019, 7254, 17541, 3972, 9108, 2353, 12321,\r
-  15467, 15086, 8496, 9534, 8200, 22655, 15242, 6214, 12010, 26915,\r
-  29179, 23317, 22099, 15529, 20074, 9225, 14070, 25988, 31690, 2904,\r
-  31999, 16579, 32318, 29351, 31060, 14916, 13952, 2776, 24602, 8484,\r
-  13443, 27683, 20604, 8313, 7511, 29800, 2471, 12356, 10318, 24515,\r
-  28953, 4769, 30557, 20322, 19996, 12609, 20164, 12947, 24205, 28442,\r
-  28657, 17953, 10466, 16989, 7074, 7649, 12140, 10921, 32587, 27784,\r
-  26840, 22398, 4535, 32191, 8700, 4852, 8945, 5754, 11473, 17581,\r
-  9061, 12165, 187, 8456, 26179, 15967, 12305, 22679, 25380, 76,\r
-  22233, 23508, 15088, 31654, 26323, 1807, 1023, 11124, 29882, 19115,\r
-  8574, 2366, 27334, 9098, 10773, 26911, 17525, 30662, 8646, 23579,\r
-  14219, 11170, 2841, 3251, 28247, 704, 4982, 18871, 14137, 8596,\r
-  24274, 13148, 19809, 17176, 13966, 16014, 7897, 30401, 8091, 647,\r
-  13254, 31410, 7139, 1185, 6891, 1585, 6884, 30312, 32622, 6231,\r
-  23966, 6644, 19423, 7947, 20912, 16502, 32374, 2609, 10174, 5904,\r
-  4764, 7966, 10517, 13802, 9133, 8271, 4242, 9602, 11517, 7515,\r
-  27328, 20035, 2841, 32551, 16704, 1626, 8783, 9305, 5486, 12741,\r
-  20080, 8719, 28225, 10412, 32724, 31952, 32115, 22517, 10655, 28099,\r
-  8162, 20499, 25923, 2078, 15671, 13854, 28486, 21218, 19141, 19241,\r
-  24902, 10950, 30132, 32208, 19770, 112, 14430, 14864, 7674, 18155,\r
-  24313, 27484, 24834, 9814, 16247, 25836, 23922, 18137, 10410, 9305,\r
-  7258, 18398, 19628, 8807, 17973, 14205, 10878, 9761, 31155, 7735,\r
-  15087, 20012, 32700, 29416, 25791, 17493, 177, 2807, 31749, 20332,\r
-  7925, 23248, 20686, 14165, 6828, 6804, 4359, 12124, 25282, 8974,\r
-  413, 15049, 14127, 5866, 21218, 16308, 16506, 11297, 5171, 15387,\r
-  16508, 10680, 2776, 20786, 16487, 28074, 28715, 6394, 24583, 3875,\r
-  23292, 31253, 10823, 28910, 22581, 28121, 4854, 22577, 30394, 27811,\r
-  459, 23384, 19091, 29806, 3751, 15695, 11085, 23972, 21275, 2292,\r
-  12701, 29235, 29994, 204, 14407, 31460, 20304, 14068, 25662, 14057,\r
-  22979, 24923, 30733, 29108, 14584, 15919, 30325, 11024, 5481, 7317,\r
-  22616, 1386, 8342, 23965, 22998, 28271, 27465, 373, 8885, 13789,\r
-  28959, 5341, 19974, 1682, 32068, 4826, 5381, 30186, 19582, 3759,\r
-  8514, 7495, 4205, 14857, 18942, 29169, 14353, 7034, 16600, 20257,\r
-  8588, 2344, 29097, 26200, 6441, 15303, 6572, 2549, 18846, 3524,\r
-  23010, 1543, 398, 15043, 18612, 31584, 29266, 13132, 18139, 28907,\r
-  19449, 22721, 7037, 3903, 23181, 13716, 7064, 14963, 2200, 1462,\r
-  24740, 32308, 27367, 9043, 21108, 22, 14734, 11196, 2142, 27688,\r
-  23085, 28837, 17819, 4043, 24433, 2448, 5360, 5828, 8669, 6537,\r
-  18318, 7823, 21962, 7444, 23352, 5110, 17068, 21604, 2979, 3811,\r
-  32664, 7629, 4898, 8307, 22787, 21628, 24195, 18251, 17357, 1894,\r
-  14387, 32303, 382, 7294, 11945, 6353, 22991, 13355, 14850, 25318,\r
-  3436, 24825, 25833, 13695, 26104, 1935, 31930, 30359, 1873, 31457,\r
-  3303, 14056, 26134, 10406, 10650, 25092, 1895, 27149, 19868, 13472,\r
+  2030,  616,   15702, 10028, 3257,  23059, 628,   30897, 9677,  5423,\r
+  12379, 31376, 437,   20522, 14732, 15829, 29594, 16028, 15376, 32249,\r
+  18533, 15323, 8121,  22033, 30500, 18890, 27050, 22085, 12463, 29169,\r
+  26905, 3460,  4747,  15571, 8532,  23414, 270,   13179, 5378,  7858,\r
+  27844, 8025,  22188, 4914,  1810,  31820, 636,   29955, 10777, 20736,\r
+  1348,  15169, 30685, 24954, 21697, 32579, 29863, 28657, 32034, 25619,\r
+  8360,  32736, 10180, 4641,  21726, 20313, 32576, 6968,  26428, 31388,\r
+  5287,  23216, 23045, 32232, 10764, 9702,  6777,  2449,  1603,  24809,\r
+  4787,  23635, 13801, 19318, 4818,  6118,  23972, 6695,  21847, 17362,\r
+  428,   12263, 8910,  29317, 26251, 2985,  22705, 15523, 28449, 15962,\r
+  22409, 1693,  7146,  32019, 7254,  17541, 3972,  9108,  2353,  12321,\r
+  15467, 15086, 8496,  9534,  8200,  22655, 15242, 6214,  12010, 26915,\r
+  29179, 23317, 22099, 15529, 20074, 9225,  14070, 25988, 31690, 2904,\r
+  31999, 16579, 32318, 29351, 31060, 14916, 13952, 2776,  24602, 8484,\r
+  13443, 27683, 20604, 8313,  7511,  29800, 2471,  12356, 10318, 24515,\r
+  28953, 4769,  30557, 20322, 19996, 12609, 20164, 12947, 24205, 28442,\r
+  28657, 17953, 10466, 16989, 7074,  7649,  12140, 10921, 32587, 27784,\r
+  26840, 22398, 4535,  32191, 8700,  4852,  8945,  5754,  11473, 17581,\r
+  9061,  12165, 187,   8456,  26179, 15967, 12305, 22679, 25380, 76,\r
+  22233, 23508, 15088, 31654, 26323, 1807,  1023,  11124, 29882, 19115,\r
+  8574,  2366,  27334, 9098,  10773, 26911, 17525, 30662, 8646,  23579,\r
+  14219, 11170, 2841,  3251,  28247, 704,   4982,  18871, 14137, 8596,\r
+  24274, 13148, 19809, 17176, 13966, 16014, 7897,  30401, 8091,  647,\r
+  13254, 31410, 7139,  1185,  6891,  1585,  6884,  30312, 32622, 6231,\r
+  23966, 6644,  19423, 7947,  20912, 16502, 32374, 2609,  10174, 5904,\r
+  4764,  7966,  10517, 13802, 9133,  8271,  4242,  9602,  11517, 7515,\r
+  27328, 20035, 2841,  32551, 16704, 1626,  8783,  9305,  5486,  12741,\r
+  20080, 8719,  28225, 10412, 32724, 31952, 32115, 22517, 10655, 28099,\r
+  8162,  20499, 25923, 2078,  15671, 13854, 28486, 21218, 19141, 19241,\r
+  24902, 10950, 30132, 32208, 19770, 112,   14430, 14864, 7674,  18155,\r
+  24313, 27484, 24834, 9814,  16247, 25836, 23922, 18137, 10410, 9305,\r
+  7258,  18398, 19628, 8807,  17973, 14205, 10878, 9761,  31155, 7735,\r
+  15087, 20012, 32700, 29416, 25791, 17493, 177,   2807,  31749, 20332,\r
+  7925,  23248, 20686, 14165, 6828,  6804,  4359,  12124, 25282, 8974,\r
+  413,   15049, 14127, 5866,  21218, 16308, 16506, 11297, 5171,  15387,\r
+  16508, 10680, 2776,  20786, 16487, 28074, 28715, 6394,  24583, 3875,\r
+  23292, 31253, 10823, 28910, 22581, 28121, 4854,  22577, 30394, 27811,\r
+  459,   23384, 19091, 29806, 3751,  15695, 11085, 23972, 21275, 2292,\r
+  12701, 29235, 29994, 204,   14407, 31460, 20304, 14068, 25662, 14057,\r
+  22979, 24923, 30733, 29108, 14584, 15919, 30325, 11024, 5481,  7317,\r
+  22616, 1386,  8342,  23965, 22998, 28271, 27465, 373,   8885,  13789,\r
+  28959, 5341,  19974, 1682,  32068, 4826,  5381,  30186, 19582, 3759,\r
+  8514,  7495,  4205,  14857, 18942, 29169, 14353, 7034,  16600, 20257,\r
+  8588,  2344,  29097, 26200, 6441,  15303, 6572,  2549,  18846, 3524,\r
+  23010, 1543,  398,   15043, 18612, 31584, 29266, 13132, 18139, 28907,\r
+  19449, 22721, 7037,  3903,  23181, 13716, 7064,  14963, 2200,  1462,\r
+  24740, 32308, 27367, 9043,  21108, 22,    14734, 11196, 2142,  27688,\r
+  23085, 28837, 17819, 4043,  24433, 2448,  5360,  5828,  8669,  6537,\r
+  18318, 7823,  21962, 7444,  23352, 5110,  17068, 21604, 2979,  3811,\r
+  32664, 7629,  4898,  8307,  22787, 21628, 24195, 18251, 17357, 1894,\r
+  14387, 32303, 382,   7294,  11945, 6353,  22991, 13355, 14850, 25318,\r
+  3436,  24825, 25833, 13695, 26104, 1935,  31930, 30359, 1873,  31457,\r
+  3303,  14056, 26134, 10406, 10650, 25092, 1895,  27149, 19868, 13472,\r
   28140, 19627, 20341, 27955, 22553, 26552, 12757, 27328, 13232, 4476,\r
-  21298, 11759, 27271, 2308, 16563, 28771, 27787, 26649, 12365, 17992,\r
-  6917, 29043, 26156, 32299, 31004, 3881, 2388, 13071, 17819, 5484,\r
-  11144, 17597, 25077, 7541, 2154, 10843, 10887, 3260, 16357, 21312,\r
-  9244, 7275, 4040, 2567, 8886, 29970, 20659, 3554, 19852, 12956,\r
-  14903, 22065, 9295, 25730, 12857, 13396, 27057, 24126, 11159, 18365,\r
-  5928, 27651, 22543, 30793, 15855, 16299, 12636, 27344, 31055, 10737,\r
-  7585, 9211, 22044, 29664, 13067, 19797, 21378, 27787, 24242, 20645,\r
+  21298, 11759, 27271, 2308,  16563, 28771, 27787, 26649, 12365, 17992,\r
+  6917,  29043, 26156, 32299, 31004, 3881,  2388,  13071, 17819, 5484,\r
+  11144, 17597, 25077, 7541,  2154,  10843, 10887, 3260,  16357, 21312,\r
+  9244,  7275,  4040,  2567,  8886,  29970, 20659, 3554,  19852, 12956,\r
+  14903, 22065, 9295,  25730, 12857, 13396, 27057, 24126, 11159, 18365,\r
+  5928,  27651, 22543, 30793, 15855, 16299, 12636, 27344, 31055, 10737,\r
+  7585,  9211,  22044, 29664, 13067, 19797, 21378, 27787, 24242, 20645,\r
   24834, 32511, 29377, 15740, 32183, 25718, 24535, 11530, 23774, 18125,\r
-  7597, 6197, 13205, 26424, 1784, 21485, 5091, 7477, 11409, 10169,\r
-  30969, 16830, 25555, 12950, 26807, 23235, 5188, 4610, 20082, 6871,\r
-  2168, 32596, 29429, 2346, 17971, 22350, 13765, 26039, 12750, 16373,\r
-  27562, 7614, 220, 24736, 1642, 25717, 16397, 24656, 27096, 17403,\r
-  28754, 7743, 4621, 14989, 32577, 22716, 28406, 14332, 7868, 13877,\r
-  6415, 3934, 16333, 25750, 17261, 12548, 13525, 17106, 3842, 16557,\r
-  16102, 18622, 8989, 23545, 2669, 8486, 12080, 9505, 24340, 10779,\r
-  14806, 26084, 1766, 20362, 24852, 24261, 12468, 29715, 28639, 5747,\r
-  20920, 23575, 27871, 15753, 19065, 20243, 1651, 31351, 21230, 25389,\r
-  32757, 12736, 29158, 9997, 1087, 7783, 936, 7662, 366, 20131,\r
-  5078, 16885, 29158, 22746, 3735, 193, 13974, 23757, 3316, 26179,\r
-  26237, 9489, 16515, 27088, 14188, 31934, 16963, 4468, 25614, 3435,\r
-  18632, 24458, 13095, 22873, 2456, 16009, 1049, 9710, 18900, 24353,\r
-  1196, 27237, 25115, 15495, 29710, 5829, 14763, 15117, 5913, 18191,\r
-  31945, 5365, 16853, 14012, 4708, 2439, 6718, 2150, 5365, 609,\r
-  30791, 13766, 21161, 8975, 1822, 15326, 6338, 30427, 2994, 22391,\r
-  20026, 12518, 29811, 26062, 8618, 12920, 5720, 15755, 20075, 19349,\r
-  15143, 5106, 15611, 27089, 25841, 16989, 674, 10597, 27355, 32746,\r
-  1109, 31873, 21285, 25457, 16602, 23780, 3684, 16825, 1581, 15275,\r
-  30738, 15339, 5667, 9062, 16457, 4678, 32333, 16497, 8908, 3861,\r
-  10015, 17282, 3911, 7646, 24145, 21118, 9944, 25309, 24710, 31633,\r
-  13005, 26288, 9772, 24189, 30896, 10836, 30627, 50, 3969, 14160,\r
-  3233, 31904, 6722, 48, 15061, 2761, 3001, 9525, 30666, 1818,\r
-  22385, 29003, 12815, 30715, 13314, 9019, 17813, 16549, 21138, 22306,\r
-  3928, 30259, 12188, 9250, 25665, 2812, 24816, 16983, 28491, 17441,\r
-  1275, 19725, 15078, 11618, 14153, 30000, 27033, 32566, 11848, 14339,\r
-  25066, 11034, 26191, 28181, 29058, 553, 32222, 18034, 11149, 10733,\r
-  10024, 534, 1632, 21365, 21198, 935, 31838, 26791, 30702, 1891,\r
-  13340, 9176, 7516, 5975, 29635, 17818, 2095, 4049, 25526, 23765,\r
+  7597,  6197,  13205, 26424, 1784,  21485, 5091,  7477,  11409, 10169,\r
+  30969, 16830, 25555, 12950, 26807, 23235, 5188,  4610,  20082, 6871,\r
+  2168,  32596, 29429, 2346,  17971, 22350, 13765, 26039, 12750, 16373,\r
+  27562, 7614,  220,   24736, 1642,  25717, 16397, 24656, 27096, 17403,\r
+  28754, 7743,  4621,  14989, 32577, 22716, 28406, 14332, 7868,  13877,\r
+  6415,  3934,  16333, 25750, 17261, 12548, 13525, 17106, 3842,  16557,\r
+  16102, 18622, 8989,  23545, 2669,  8486,  12080, 9505,  24340, 10779,\r
+  14806, 26084, 1766,  20362, 24852, 24261, 12468, 29715, 28639, 5747,\r
+  20920, 23575, 27871, 15753, 19065, 20243, 1651,  31351, 21230, 25389,\r
+  32757, 12736, 29158, 9997,  1087,  7783,  936,   7662,  366,   20131,\r
+  5078,  16885, 29158, 22746, 3735,  193,   13974, 23757, 3316,  26179,\r
+  26237, 9489,  16515, 27088, 14188, 31934, 16963, 4468,  25614, 3435,\r
+  18632, 24458, 13095, 22873, 2456,  16009, 1049,  9710,  18900, 24353,\r
+  1196,  27237, 25115, 15495, 29710, 5829,  14763, 15117, 5913,  18191,\r
+  31945, 5365,  16853, 14012, 4708,  2439,  6718,  2150,  5365,  609,\r
+  30791, 13766, 21161, 8975,  1822,  15326, 6338,  30427, 2994,  22391,\r
+  20026, 12518, 29811, 26062, 8618,  12920, 5720,  15755, 20075, 19349,\r
+  15143, 5106,  15611, 27089, 25841, 16989, 674,   10597, 27355, 32746,\r
+  1109,  31873, 21285, 25457, 16602, 23780, 3684,  16825, 1581,  15275,\r
+  30738, 15339, 5667,  9062,  16457, 4678,  32333, 16497, 8908,  3861,\r
+  10015, 17282, 3911,  7646,  24145, 21118, 9944,  25309, 24710, 31633,\r
+  13005, 26288, 9772,  24189, 30896, 10836, 30627, 50,    3969,  14160,\r
+  3233,  31904, 6722,  48,    15061, 2761,  3001,  9525,  30666, 1818,\r
+  22385, 29003, 12815, 30715, 13314, 9019,  17813, 16549, 21138, 22306,\r
+  3928,  30259, 12188, 9250,  25665, 2812,  24816, 16983, 28491, 17441,\r
+  1275,  19725, 15078, 11618, 14153, 30000, 27033, 32566, 11848, 14339,\r
+  25066, 11034, 26191, 28181, 29058, 553,   32222, 18034, 11149, 10733,\r
+  10024, 534,   1632,  21365, 21198, 935,   31838, 26791, 30702, 1891,\r
+  13340, 9176,  7516,  5975,  29635, 17818, 2095,  4049,  25526, 23765,\r
   13184, 18457, 25717, 21786, 30062, 13148, 31682, 16179, 30053, 3561,\r
-  7426, 2047, 22433, 27296, 20709, 4477, 16877, 13478, 73, 25126,\r
-  7601, 31070, 26204, 24192, 15147, 3733, 28161, 16624, 14845, 26877,\r
-  32374, 17359, 23272, 14045, 31539, 12737, 7895, 4870, 31509, 20546,\r
-  22303, 25609, 31419, 22658, 2821, 15271, 3633, 29299, 22145, 19081,\r
-  21963, 26144, 9793, 15410, 14932, 30528, 29937, 3889, 13416, 7947,\r
-  28090, 15771, 8991, 6220, 6152, 18872, 30188, 29112, 28817, 765,\r
-  11716, 6782, 5011, 5946, 31106, 7455, 23644, 17429, 29066, 31872,\r
-  7696, 15543, 13996, 26430, 22951, 6085, 30796, 13633, 5429, 22930,\r
-  9664, 25492, 14446, 28307, 20218, 627, 4713, 10771, 30823, 18854,\r
-  27812, 7463, 26134, 18190, 20297, 23013, 8733, 23422, 23215, 30417,\r
+  7426,  2047,  22433, 27296, 20709, 4477,  16877, 13478, 73,    25126,\r
+  7601,  31070, 26204, 24192, 15147, 3733,  28161, 16624, 14845, 26877,\r
+  32374, 17359, 23272, 14045, 31539, 12737, 7895,  4870,  31509, 20546,\r
+  22303, 25609, 31419, 22658, 2821,  15271, 3633,  29299, 22145, 19081,\r
+  21963, 26144, 9793,  15410, 14932, 30528, 29937, 3889,  13416, 7947,\r
+  28090, 15771, 8991,  6220,  6152,  18872, 30188, 29112, 28817, 765,\r
+  11716, 6782,  5011,  5946,  31106, 7455,  23644, 17429, 29066, 31872,\r
+  7696,  15543, 13996, 26430, 22951, 6085,  30796, 13633, 5429,  22930,\r
+  9664,  25492, 14446, 28307, 20218, 627,   4713,  10771, 30823, 18854,\r
+  27812, 7463,  26134, 18190, 20297, 23013, 8733,  23422, 23215, 30417,\r
   16953, 31180, 23076, 26264, 12468, 23591, 29674, 30721, 31884, 9130,\r
-  6783, 4640, 29905, 5682, 8993, 205, 4943, 28269, 9618, 25940,\r
-  31341, 29236, 2329, 8046, 2645, 17179, 25289, 17008, 20821, 7494,\r
-  2309, 27331, 23429, 30846, 68, 1940, 9643, 16259, 9490, 27852,\r
-  14171, 4516, 14168, 16707, 10339, 17038, 10972, 7472, 5478, 3170,\r
-  24843, 27877, 18374, 10250, 12279, 27577, 5319, 16332, 23196, 19269,\r
+  6783,  4640,  29905, 5682,  8993,  205,   4943,  28269, 9618,  25940,\r
+  31341, 29236, 2329,  8046,  2645,  17179, 25289, 17008, 20821, 7494,\r
+  2309,  27331, 23429, 30846, 68,    1940,  9643,  16259, 9490,  27852,\r
+  14171, 4516,  14168, 16707, 10339, 17038, 10972, 7472,  5478,  3170,\r
+  24843, 27877, 18374, 10250, 12279, 27577, 5319,  16332, 23196, 19269,\r
   14322, 28703, 24167, 23251, 11448, 19134, 14841, 17171, 19288, 4092,\r
-  4392, 10768, 11523, 4695, 21062, 21347, 6973, 30799, 16550, 4262,\r
-  3718, 20601, 2141, 5676, 58, 11215, 16198, 2031, 5046, 12874,\r
-  30537, 21194, 23228, 26035, 17884, 9705, 14617, 1718, 25801, 8317,\r
-  11140, 20536, 20530, 1972, 30154, 31978, 1491, 6376, 31784, 19230,\r
-  18824, 19479, 19448, 29402, 4879, 6803, 6033, 16939, 2318, 7674,\r
-  10600, 21436, 11608, 7017, 4731, 5031, 7788, 20205, 6127, 1675,\r
-  4671, 2874, 9207, 1759, 28219, 416, 15865, 27782, 8327, 17978,\r
-  19948, 21155, 7817, 25705, 12037, 28590, 11433, 6016, 21906, 13256,\r
-  21336, 31681, 3110, 8523, 9553, 19337, 3062, 5030, 15135, 31943,\r
-  29827, 26728, 2016, 21170, 26233, 16026, 27464, 14268, 17879, 16466,\r
-  9449, 29633, 26449, 10885, 3249, 4741, 11507, 1821, 13492, 3677,\r
-  22022, 19787, 22571, 4908, 1591, 23583, 15293, 28049, 18422, 854,\r
-  25342, 31327, 3613, 3699, 16182, 10830, 30930, 1553, 15203, 28144,\r
-  25006, 7031, 18817, 7654, 29471, 29293, 21768, 13139, 20234, 15694,\r
-  16055, 25745, 2229, 24415, 17808, 31267, 30181, 2399, 292, 28651,\r
-  6979, 1119, 20752, 13981, 14340, 7892, 26056, 10612, 13513, 28651,\r
-  18067, 3108, 31172, 25884, 30935, 9487, 28701, 19970, 11415, 18363,\r
-  12948, 23146, 4666, 25476, 12647, 16042, 15758, 27278, 19830, 29236,\r
-  14860, 9470, 11941, 15466, 13406, 17514, 22914, 948, 23838, 19341,\r
-  18472, 4816, 26849, 7744, 2659, 18538, 20852, 19878, 12564, 25837,\r
-  15461, 29862, 2263, 27288, 10949, 14494, 26596, 17364, 22061, 16981,\r
-  4915, 9157, 24319, 17202, 32484, 21791, 12270, 23212, 28125, 27451,\r
-  15041, 28674, 13493, 2410, 29267, 21548, 9169, 13449, 9695, 16401,\r
-  23756, 25301, 8570, 762, 5916, 15873, 14305, 30023, 6131, 19334,\r
-  6517, 865, 24932, 28475, 7300, 25839, 23751, 31781, 23242, 21581,\r
-  1118, 18320, 18488, 23097, 20537, 29278, 9972, 464, 27222, 23712,\r
-  31904, 2234, 28173, 30563, 27871, 24481, 13995, 26828, 7445, 3815,\r
-  350, 13928, 1391, 21400, 26193, 27069, 21284, 2205, 27927, 25381,\r
-  16378, 12339, 16461, 20188, 779, 12700, 17531, 28759, 16073, 7956,\r
-  5692, 14295, 4160, 6151, 13215, 22079, 9115, 7041, 21708, 17186,\r
-  29162, 24294, 14315, 26913, 3106, 31971, 25665, 27764, 5989, 4260,\r
-  10396, 16326, 24196, 4424, 22770, 31558, 7363, 402, 3909, 10747,\r
-  26076, 18401, 29641, 343, 20294, 16994, 20553, 14096, 16054, 27524,\r
-  29383, 26923, 487, 8876, 9059, 19546, 5015, 27947, 12670, 5255,\r
-  12754, 17261, 23582, 19377, 10610, 15986, 6548, 2807, 31463, 14722,\r
-  605, 18930, 15412, 15389, 25415, 14408, 23610, 16434, 15060, 21886,\r
-  11065, 10385, 9699, 15118, 19604, 31649, 32653, 19642, 30164, 13910,\r
-  14414, 17183, 7920, 19294, 10341, 17549, 1996, 8859, 24957, 22,\r
-  14079, 11478, 17292, 32485, 21977, 24498, 22780, 8146, 3493, 11742,\r
-  15881, 28979, 18987, 20367, 5994, 23796, 1401, 28462, 23603, 23274,\r
-  227, 3661, 30458, 7524, 3913, 14048, 568, 27651, 21656, 19626,\r
-  9203, 8396, 7827, 4853, 19610, 31612, 15060, 14982, 23857, 16155,\r
-  28173, 3024, 30893, 19924, 28820, 360, 1186, 14084, 5151, 26297,\r
-  7451, 27537, 30412, 20217, 32713, 3197, 26468, 30812, 12897, 1979,\r
-  24288, 28551, 26687, 30529, 13100, 1863, 27471, 30302, 26412, 30851,\r
-  3117, 24910, 15357, 15983, 23947, 13068, 26493, 771, 16084, 30055,\r
-  5133, 12204, 31246, 30552, 3477, 30273, 30981, 15763, 16329, 26168,\r
-  21926, 24924, 27051, 25114, 18857, 20892, 10833, 2356, 16755, 10804,\r
-  19177, 27024, 5690, 5521, 27130, 3619, 13162, 27776, 27629, 15688,\r
-  11079, 2116, 21707, 31597, 32468, 31463, 28488, 9740, 7412, 8653,\r
-  25857, 15070, 23760, 18063, 11266, 8011, 30584, 16902, 28043, 31780,\r
-  17613, 21925, 18964, 404, 16286, 12044, 7822, 10068, 5393, 18907,\r
-  12012, 15647, 17221, 9156, 23010, 24422, 2869, 30437, 14828, 9284,\r
-  14816, 28244, 22419, 5300, 3239, 2299, 20716, 17922, 13558, 7846,\r
-  6753, 10111, 16166, 15194, 15539, 22649, 24738, 17641, 13376, 6762,\r
-  29001, 7875, 21890, 13168, 5140, 16399, 23257, 21757, 21241, 28666,\r
-  32650, 23248, 12815, 7247, 19463, 30244, 32242, 32329, 30577, 6439,\r
-  22889, 421, 603, 13997, 20038, 8698, 28369, 10790, 25998, 12877,\r
-  14744, 23501, 2778, 17120, 30904, 29987, 16125, 6476, 17208, 14748,\r
-  24039, 28367, 17961, 22424, 31690, 26855, 10982, 17812, 7547, 32,\r
-  12953, 32674, 20506, 18730, 11009, 14614, 25589, 21550, 8307, 22147,\r
-  20138, 5730, 28959, 17382, 30860, 4572, 9621, 31520, 31048, 12196,\r
-  12936, 20138, 1993, 12, 2001, 19588, 8536, 21828, 4278, 19822,\r
-  11272, 27689, 2413, 1115, 6225, 5982, 19932, 8739, 17915, 8350,\r
-  1443, 24952, 12349, 21584, 20828, 3867, 9511, 27484, 23841, 25167,\r
-  3133, 18238, 31823, 14735, 101, 13401, 12938, 3964, 16643, 9869,\r
-  19970, 15385, 15970, 9227, 30452, 22074, 17750, 21096, 22643, 18746,\r
-  3615, 23025, 18024, 29421, 12945, 4927, 1240, 24021, 20338, 13067,\r
-  5221, 27545, 21796, 26691, 10264, 946, 19331, 8284, 10333, 6760,\r
-  3345, 26091, 26447, 9213, 15697, 3439, 27190, 18472, 32368, 9329,\r
-  27726, 27077, 10794, 22224, 32459, 22218, 4588, 15958, 27161, 13437,\r
-  2614, 20622, 13416, 31716, 17732, 24282, 29032, 6781, 16621, 23744,\r
-  16209, 2864, 19403, 24709, 5415, 31618, 26012, 4605, 17980, 20747,\r
-  32488, 31649, 24310, 9002, 23525, 29154, 16082, 31991, 7831, 1213,\r
-  5033, 31609, 15419, 12176, 6707, 7194, 25062, 15148, 18377, 20311,\r
-  3178, 1579, 16751, 9148, 22393, 10116, 17425, 7440, 18445, 8028,\r
-  25101, 3021, 5638, 2591, 14834, 30931, 14613, 2512, 2695, 31068,\r
-  15578, 22941, 18448, 32563, 8265, 16311, 5836, 31009, 17490, 20832,\r
-  20162, 22440, 11713, 15686, 27838, 18932, 7779, 4111, 5270, 18191,\r
-  18794, 10037, 2225, 14164, 10002, 17940, 15050, 21030, 11141, 321,\r
-  23026, 994, 25852, 29726, 468, 28689, 17704, 29867, 28477, 25571,\r
-  6608, 14751, 24028, 19673, 30907, 9912, 29510, 1985, 8912, 13135,\r
-  23356, 7143, 8828, 7983, 31025, 13962, 10580, 27047, 21255, 31373,\r
-  28924, 16094, 6426, 30831, 9031, 20327, 28543, 25213, 3487, 17941,\r
-  23694, 20806, 9128, 20497, 157, 11344, 5408, 27433, 31503, 2825,\r
-  31498, 28267, 8334, 8704, 24587, 243, 26260, 4181, 10260, 29441,\r
-  10288, 8559, 6977, 11599, 10247, 22252, 6145, 10913, 29593, 20190,\r
-  12408, 12189, 3013, 23092, 14113, 13533, 30351, 22390, 32440, 14147,\r
-  7714, 9654, 20823, 25228, 8465, 17347, 25311, 18984, 30690, 28575,\r
-  17049, 9289, 5069, 23091, 4125, 15163, 23233, 17218, 30579, 2291,\r
-  9384, 4508, 14457, 12522, 7660, 15252, 15748, 19500, 13114, 5043,\r
-  1354, 15275, 27270, 19886, 25600, 29914, 19791, 20374, 24511, 31863,\r
-  18468, 9039, 11308, 936, 9063, 7235, 2392, 23370, 31057, 1367,\r
-  2533, 12678, 19766, 27423, 1131, 19877, 10250, 22093, 13337, 15909,\r
-  24101, 2672, 19616, 11532, 25155, 7387, 1356, 20092, 18895, 30690,\r
-  24436, 7560, 26209, 7757, 11285, 23366, 6277, 17158, 5306, 1061,\r
-  16318, 2325, 11167, 12161, 27594, 32718, 18197, 3445, 13096, 12105,\r
-  11304, 30449, 21208, 18707, 19584, 17420, 31586, 20771, 7045, 23707,\r
-  28441, 21264, 16071, 14082, 21921, 30593, 7580, 14666, 26799, 3556,\r
-  5131, 12404, 24080, 24163, 19688, 21005, 13037, 22547, 1857, 31747,\r
-  15437, 28527, 19193, 9911, 8411, 16646, 20659, 15699, 8170, 19568,\r
-  8433, 20574, 18870, 23430, 11901, 22158, 3308, 27091, 28681, 28637,\r
-  15725, 8261, 15634, 24286, 30799, 14632, 29194, 11346, 2341, 24661,\r
-  8117, 10487, 13441, 25511, 18900, 16800, 2999, 18351, 30977, 22922,\r
-  11747, 5289, 9178, 7918, 6701, 28590, 13153, 3539, 30539, 21547,\r
-  9891, 5414, 29768, 401, 6552, 4620, 9860, 29006, 13131, 5495,\r
-  2301, 26877, 16186, 10232, 204, 31961, 30208, 32724, 2803, 5752,\r
-  14641, 23897, 30549, 21430, 18054, 370, 21766, 20975, 9786, 29306,\r
-  29637, 14705, 22707, 846, 7879, 7472, 1893, 20646, 29879, 700,\r
-  15604, 10405, 250, 9841, 26776, 4270, 31287, 20461, 12486, 23930,\r
-  18967, 19144, 22797, 4455, 16969, 22399, 16190, 29971, 8906, 10416,\r
-  13263, 7722, 21859, 16525, 12673, 22652, 627, 17035, 14401, 9555,\r
-  25326, 3418, 20300, 17667, 29606, 12570, 29335, 32450, 28105, 5580,\r
-  28526, 6842, 10411, 26118, 29787, 16989, 18630, 4587, 22601, 15097,\r
-  24576, 32347, 23785, 11916, 25388, 13415, 28757, 30425, 6354, 9480,\r
-  12788, 7867, 25907, 21776, 16029, 3514, 6024, 1376, 2047, 4572,\r
-  7307, 11100, 15168, 15293, 14904, 19868, 31460, 16610, 14549, 6372,\r
-  28657, 22603, 7472, 16727, 30288, 17735, 22568, 999, 26743, 1165,\r
-  3950, 23568, 20037, 20359, 25485, 16838, 29485, 27121, 22312, 940,\r
-  10135, 28067, 15235, 4486, 12675, 2219, 17990, 19185, 12400, 24991,\r
-  13437, 9810, 30844, 5682, 7906, 17420, 10444, 2052, 25439, 16886,\r
-  302, 27583, 18383, 25356, 15101, 20063, 14853, 24420, 26950, 1233,\r
-  20751, 28772, 9256, 14784, 29627, 27955, 897, 3500, 18523, 2925,\r
-  11463, 32060, 20934, 6171, 30771, 469, 23967, 15586, 28965, 8299,\r
-  10202, 9594, 13764, 23191, 22395, 6498, 31204, 13802, 14497, 24018,\r
-  12590, 19842, 22468, 29682, 9338, 8666, 25147, 1865, 30336, 6886,\r
-  28673, 8312, 23472, 28768, 6840, 28712, 2398, 27741, 1518, 17985,\r
-  8226, 15395, 15520, 2396, 5503, 17214, 2044, 17020, 24770, 9425,\r
-  9067, 4344, 28461, 30507, 29135, 6844, 9045, 21914, 6153, 19634,\r
-  25545, 17540, 8383, 32634, 31988, 7091, 3420, 21601, 23109, 27377,\r
-  30808, 24209, 23181, 3285, 11449, 27781, 17320, 23516, 22234, 1472,\r
-  6495, 15803, 12907, 28863, 23437, 30964, 22969, 21804, 28545, 2216,\r
-  6703, 20052, 14500, 25260, 29213, 475, 9307, 25567, 7097, 3758,\r
-  11567, 22202, 18788, 26682, 6444, 18472, 30510, 29148, 30598, 7832,\r
-  30107, 28312, 8579, 10065, 4520, 6413, 17044, 3590, 32265, 30632,\r
-  11205, 29355, 25013, 16665, 30296, 4487, 12196, 25859, 14765, 12681,\r
-  11223, 3320, 22630, 19679, 16794, 10660, 10440, 10181, 3846, 24648,\r
-  31843, 18843, 18889, 27755, 19189, 3131, 24874, 18892, 1164, 13705,\r
-  327, 15002, 20203, 20300, 23457, 32231, 12847, 12604, 22747, 19035,\r
-  30898, 29019, 6079, 24869, 17968, 11913, 23938, 19767, 10792, 26963,\r
-  23369, 8883, 12677, 24333, 27883, 21152, 15230, 6944, 13561, 26338,\r
-  5563, 12964, 14844, 14953, 9145, 24114, 26877, 424, 5487, 26099,\r
-  8523, 14153, 28978, 5117, 11640, 16671, 29910, 8416, 19877, 24924,\r
-  4630, 20091, 14079, 18436, 2613, 9493, 11402, 22689, 27878, 1705,\r
-  5406, 30777, 32362, 3200, 12975, 30589, 18680, 25349, 24273, 27971,\r
-  23905, 6102, 28794, 5430, 1780, 3607, 12042, 1740, 30367, 3339,\r
-  30346, 22649, 10584, 7397, 28977, 803, 3515, 9691, 2605, 6613,\r
-  11509, 1405, 32160, 10679, 23264, 3653, 10728, 22078, 12655, 9583,\r
-  1571, 1440, 23373, 29450, 25074, 12683, 29121, 22608, 21118, 12310,\r
-  29141, 8243, 28857, 2296, 3255, 7736, 19687, 10999, 22367, 12168,\r
-  15196, 5540, 7538, 21061, 24199, 19270, 23399, 18202, 4655, 7956,\r
-  9192, 28950, 7165, 13223, 29819, 26554, 17723, 15790, 15713, 28496,\r
-  16859, 24292, 8382, 19327, 2235, 11583, 11515, 8221, 295, 14954,\r
-  5737, 21572, 10656, 12150, 13351, 11176, 7131, 20685, 17477, 2599,\r
-  4621, 32359, 15145, 5538, 20838, 1088, 8754, 10764, 7643, 20233,\r
-  18844, 21440, 6953, 22813, 20900, 17432, 16151, 25528, 20204, 29755,\r
-  14587, 20579, 3616, 27190, 29311, 11955, 15066, 21583, 3493, 21043,\r
-  28099, 28309, 1033, 1183, 26108, 26300, 19303, 10323, 29116, 12840,\r
-  9052, 24322, 19002, 2632, 28785, 2219, 26317, 805, 18517, 11977,\r
-  2897, 28731, 4970, 12235, 5582, 2951, 26499, 16067, 20308, 4833,\r
-  32749, 2914, 17449, 20364, 30380, 9764, 26407, 15372, 8966, 29896,\r
-  1119, 15415, 16710, 19203, 18178, 7055, 18362, 31605, 22146, 17871,\r
-  3326, 29916, 20212, 28100, 9084, 16264, 6329, 5726, 3636, 28431,\r
+  4392,  10768, 11523, 4695,  21062, 21347, 6973,  30799, 16550, 4262,\r
+  3718,  20601, 2141,  5676,  58,    11215, 16198, 2031,  5046,  12874,\r
+  30537, 21194, 23228, 26035, 17884, 9705,  14617, 1718,  25801, 8317,\r
+  11140, 20536, 20530, 1972,  30154, 31978, 1491,  6376,  31784, 19230,\r
+  18824, 19479, 19448, 29402, 4879,  6803,  6033,  16939, 2318,  7674,\r
+  10600, 21436, 11608, 7017,  4731,  5031,  7788,  20205, 6127,  1675,\r
+  4671,  2874,  9207,  1759,  28219, 416,   15865, 27782, 8327,  17978,\r
+  19948, 21155, 7817,  25705, 12037, 28590, 11433, 6016,  21906, 13256,\r
+  21336, 31681, 3110,  8523,  9553,  19337, 3062,  5030,  15135, 31943,\r
+  29827, 26728, 2016,  21170, 26233, 16026, 27464, 14268, 17879, 16466,\r
+  9449,  29633, 26449, 10885, 3249,  4741,  11507, 1821,  13492, 3677,\r
+  22022, 19787, 22571, 4908,  1591,  23583, 15293, 28049, 18422, 854,\r
+  25342, 31327, 3613,  3699,  16182, 10830, 30930, 1553,  15203, 28144,\r
+  25006, 7031,  18817, 7654,  29471, 29293, 21768, 13139, 20234, 15694,\r
+  16055, 25745, 2229,  24415, 17808, 31267, 30181, 2399,  292,   28651,\r
+  6979,  1119,  20752, 13981, 14340, 7892,  26056, 10612, 13513, 28651,\r
+  18067, 3108,  31172, 25884, 30935, 9487,  28701, 19970, 11415, 18363,\r
+  12948, 23146, 4666,  25476, 12647, 16042, 15758, 27278, 19830, 29236,\r
+  14860, 9470,  11941, 15466, 13406, 17514, 22914, 948,   23838, 19341,\r
+  18472, 4816,  26849, 7744,  2659,  18538, 20852, 19878, 12564, 25837,\r
+  15461, 29862, 2263,  27288, 10949, 14494, 26596, 17364, 22061, 16981,\r
+  4915,  9157,  24319, 17202, 32484, 21791, 12270, 23212, 28125, 27451,\r
+  15041, 28674, 13493, 2410,  29267, 21548, 9169,  13449, 9695,  16401,\r
+  23756, 25301, 8570,  762,   5916,  15873, 14305, 30023, 6131,  19334,\r
+  6517,  865,   24932, 28475, 7300,  25839, 23751, 31781, 23242, 21581,\r
+  1118,  18320, 18488, 23097, 20537, 29278, 9972,  464,   27222, 23712,\r
+  31904, 2234,  28173, 30563, 27871, 24481, 13995, 26828, 7445,  3815,\r
+  350,   13928, 1391,  21400, 26193, 27069, 21284, 2205,  27927, 25381,\r
+  16378, 12339, 16461, 20188, 779,   12700, 17531, 28759, 16073, 7956,\r
+  5692,  14295, 4160,  6151,  13215, 22079, 9115,  7041,  21708, 17186,\r
+  29162, 24294, 14315, 26913, 3106,  31971, 25665, 27764, 5989,  4260,\r
+  10396, 16326, 24196, 4424,  22770, 31558, 7363,  402,   3909,  10747,\r
+  26076, 18401, 29641, 343,   20294, 16994, 20553, 14096, 16054, 27524,\r
+  29383, 26923, 487,   8876,  9059,  19546, 5015,  27947, 12670, 5255,\r
+  12754, 17261, 23582, 19377, 10610, 15986, 6548,  2807,  31463, 14722,\r
+  605,   18930, 15412, 15389, 25415, 14408, 23610, 16434, 15060, 21886,\r
+  11065, 10385, 9699,  15118, 19604, 31649, 32653, 19642, 30164, 13910,\r
+  14414, 17183, 7920,  19294, 10341, 17549, 1996,  8859,  24957, 22,\r
+  14079, 11478, 17292, 32485, 21977, 24498, 22780, 8146,  3493,  11742,\r
+  15881, 28979, 18987, 20367, 5994,  23796, 1401,  28462, 23603, 23274,\r
+  227,   3661,  30458, 7524,  3913,  14048, 568,   27651, 21656, 19626,\r
+  9203,  8396,  7827,  4853,  19610, 31612, 15060, 14982, 23857, 16155,\r
+  28173, 3024,  30893, 19924, 28820, 360,   1186,  14084, 5151,  26297,\r
+  7451,  27537, 30412, 20217, 32713, 3197,  26468, 30812, 12897, 1979,\r
+  24288, 28551, 26687, 30529, 13100, 1863,  27471, 30302, 26412, 30851,\r
+  3117,  24910, 15357, 15983, 23947, 13068, 26493, 771,   16084, 30055,\r
+  5133,  12204, 31246, 30552, 3477,  30273, 30981, 15763, 16329, 26168,\r
+  21926, 24924, 27051, 25114, 18857, 20892, 10833, 2356,  16755, 10804,\r
+  19177, 27024, 5690,  5521,  27130, 3619,  13162, 27776, 27629, 15688,\r
+  11079, 2116,  21707, 31597, 32468, 31463, 28488, 9740,  7412,  8653,\r
+  25857, 15070, 23760, 18063, 11266, 8011,  30584, 16902, 28043, 31780,\r
+  17613, 21925, 18964, 404,   16286, 12044, 7822,  10068, 5393,  18907,\r
+  12012, 15647, 17221, 9156,  23010, 24422, 2869,  30437, 14828, 9284,\r
+  14816, 28244, 22419, 5300,  3239,  2299,  20716, 17922, 13558, 7846,\r
+  6753,  10111, 16166, 15194, 15539, 22649, 24738, 17641, 13376, 6762,\r
+  29001, 7875,  21890, 13168, 5140,  16399, 23257, 21757, 21241, 28666,\r
+  32650, 23248, 12815, 7247,  19463, 30244, 32242, 32329, 30577, 6439,\r
+  22889, 421,   603,   13997, 20038, 8698,  28369, 10790, 25998, 12877,\r
+  14744, 23501, 2778,  17120, 30904, 29987, 16125, 6476,  17208, 14748,\r
+  24039, 28367, 17961, 22424, 31690, 26855, 10982, 17812, 7547,  32,\r
+  12953, 32674, 20506, 18730, 11009, 14614, 25589, 21550, 8307,  22147,\r
+  20138, 5730,  28959, 17382, 30860, 4572,  9621,  31520, 31048, 12196,\r
+  12936, 20138, 1993,  12,    2001,  19588, 8536,  21828, 4278,  19822,\r
+  11272, 27689, 2413,  1115,  6225,  5982,  19932, 8739,  17915, 8350,\r
+  1443,  24952, 12349, 21584, 20828, 3867,  9511,  27484, 23841, 25167,\r
+  3133,  18238, 31823, 14735, 101,   13401, 12938, 3964,  16643, 9869,\r
+  19970, 15385, 15970, 9227,  30452, 22074, 17750, 21096, 22643, 18746,\r
+  3615,  23025, 18024, 29421, 12945, 4927,  1240,  24021, 20338, 13067,\r
+  5221,  27545, 21796, 26691, 10264, 946,   19331, 8284,  10333, 6760,\r
+  3345,  26091, 26447, 9213,  15697, 3439,  27190, 18472, 32368, 9329,\r
+  27726, 27077, 10794, 22224, 32459, 22218, 4588,  15958, 27161, 13437,\r
+  2614,  20622, 13416, 31716, 17732, 24282, 29032, 6781,  16621, 23744,\r
+  16209, 2864,  19403, 24709, 5415,  31618, 26012, 4605,  17980, 20747,\r
+  32488, 31649, 24310, 9002,  23525, 29154, 16082, 31991, 7831,  1213,\r
+  5033,  31609, 15419, 12176, 6707,  7194,  25062, 15148, 18377, 20311,\r
+  3178,  1579,  16751, 9148,  22393, 10116, 17425, 7440,  18445, 8028,\r
+  25101, 3021,  5638,  2591,  14834, 30931, 14613, 2512,  2695,  31068,\r
+  15578, 22941, 18448, 32563, 8265,  16311, 5836,  31009, 17490, 20832,\r
+  20162, 22440, 11713, 15686, 27838, 18932, 7779,  4111,  5270,  18191,\r
+  18794, 10037, 2225,  14164, 10002, 17940, 15050, 21030, 11141, 321,\r
+  23026, 994,   25852, 29726, 468,   28689, 17704, 29867, 28477, 25571,\r
+  6608,  14751, 24028, 19673, 30907, 9912,  29510, 1985,  8912,  13135,\r
+  23356, 7143,  8828,  7983,  31025, 13962, 10580, 27047, 21255, 31373,\r
+  28924, 16094, 6426,  30831, 9031,  20327, 28543, 25213, 3487,  17941,\r
+  23694, 20806, 9128,  20497, 157,   11344, 5408,  27433, 31503, 2825,\r
+  31498, 28267, 8334,  8704,  24587, 243,   26260, 4181,  10260, 29441,\r
+  10288, 8559,  6977,  11599, 10247, 22252, 6145,  10913, 29593, 20190,\r
+  12408, 12189, 3013,  23092, 14113, 13533, 30351, 22390, 32440, 14147,\r
+  7714,  9654,  20823, 25228, 8465,  17347, 25311, 18984, 30690, 28575,\r
+  17049, 9289,  5069,  23091, 4125,  15163, 23233, 17218, 30579, 2291,\r
+  9384,  4508,  14457, 12522, 7660,  15252, 15748, 19500, 13114, 5043,\r
+  1354,  15275, 27270, 19886, 25600, 29914, 19791, 20374, 24511, 31863,\r
+  18468, 9039,  11308, 936,   9063,  7235,  2392,  23370, 31057, 1367,\r
+  2533,  12678, 19766, 27423, 1131,  19877, 10250, 22093, 13337, 15909,\r
+  24101, 2672,  19616, 11532, 25155, 7387,  1356,  20092, 18895, 30690,\r
+  24436, 7560,  26209, 7757,  11285, 23366, 6277,  17158, 5306,  1061,\r
+  16318, 2325,  11167, 12161, 27594, 32718, 18197, 3445,  13096, 12105,\r
+  11304, 30449, 21208, 18707, 19584, 17420, 31586, 20771, 7045,  23707,\r
+  28441, 21264, 16071, 14082, 21921, 30593, 7580,  14666, 26799, 3556,\r
+  5131,  12404, 24080, 24163, 19688, 21005, 13037, 22547, 1857,  31747,\r
+  15437, 28527, 19193, 9911,  8411,  16646, 20659, 15699, 8170,  19568,\r
+  8433,  20574, 18870, 23430, 11901, 22158, 3308,  27091, 28681, 28637,\r
+  15725, 8261,  15634, 24286, 30799, 14632, 29194, 11346, 2341,  24661,\r
+  8117,  10487, 13441, 25511, 18900, 16800, 2999,  18351, 30977, 22922,\r
+  11747, 5289,  9178,  7918,  6701,  28590, 13153, 3539,  30539, 21547,\r
+  9891,  5414,  29768, 401,   6552,  4620,  9860,  29006, 13131, 5495,\r
+  2301,  26877, 16186, 10232, 204,   31961, 30208, 32724, 2803,  5752,\r
+  14641, 23897, 30549, 21430, 18054, 370,   21766, 20975, 9786,  29306,\r
+  29637, 14705, 22707, 846,   7879,  7472,  1893,  20646, 29879, 700,\r
+  15604, 10405, 250,   9841,  26776, 4270,  31287, 20461, 12486, 23930,\r
+  18967, 19144, 22797, 4455,  16969, 22399, 16190, 29971, 8906,  10416,\r
+  13263, 7722,  21859, 16525, 12673, 22652, 627,   17035, 14401, 9555,\r
+  25326, 3418,  20300, 17667, 29606, 12570, 29335, 32450, 28105, 5580,\r
+  28526, 6842,  10411, 26118, 29787, 16989, 18630, 4587,  22601, 15097,\r
+  24576, 32347, 23785, 11916, 25388, 13415, 28757, 30425, 6354,  9480,\r
+  12788, 7867,  25907, 21776, 16029, 3514,  6024,  1376,  2047,  4572,\r
+  7307,  11100, 15168, 15293, 14904, 19868, 31460, 16610, 14549, 6372,\r
+  28657, 22603, 7472,  16727, 30288, 17735, 22568, 999,   26743, 1165,\r
+  3950,  23568, 20037, 20359, 25485, 16838, 29485, 27121, 22312, 940,\r
+  10135, 28067, 15235, 4486,  12675, 2219,  17990, 19185, 12400, 24991,\r
+  13437, 9810,  30844, 5682,  7906,  17420, 10444, 2052,  25439, 16886,\r
+  302,   27583, 18383, 25356, 15101, 20063, 14853, 24420, 26950, 1233,\r
+  20751, 28772, 9256,  14784, 29627, 27955, 897,   3500,  18523, 2925,\r
+  11463, 32060, 20934, 6171,  30771, 469,   23967, 15586, 28965, 8299,\r
+  10202, 9594,  13764, 23191, 22395, 6498,  31204, 13802, 14497, 24018,\r
+  12590, 19842, 22468, 29682, 9338,  8666,  25147, 1865,  30336, 6886,\r
+  28673, 8312,  23472, 28768, 6840,  28712, 2398,  27741, 1518,  17985,\r
+  8226,  15395, 15520, 2396,  5503,  17214, 2044,  17020, 24770, 9425,\r
+  9067,  4344,  28461, 30507, 29135, 6844,  9045,  21914, 6153,  19634,\r
+  25545, 17540, 8383,  32634, 31988, 7091,  3420,  21601, 23109, 27377,\r
+  30808, 24209, 23181, 3285,  11449, 27781, 17320, 23516, 22234, 1472,\r
+  6495,  15803, 12907, 28863, 23437, 30964, 22969, 21804, 28545, 2216,\r
+  6703,  20052, 14500, 25260, 29213, 475,   9307,  25567, 7097,  3758,\r
+  11567, 22202, 18788, 26682, 6444,  18472, 30510, 29148, 30598, 7832,\r
+  30107, 28312, 8579,  10065, 4520,  6413,  17044, 3590,  32265, 30632,\r
+  11205, 29355, 25013, 16665, 30296, 4487,  12196, 25859, 14765, 12681,\r
+  11223, 3320,  22630, 19679, 16794, 10660, 10440, 10181, 3846,  24648,\r
+  31843, 18843, 18889, 27755, 19189, 3131,  24874, 18892, 1164,  13705,\r
+  327,   15002, 20203, 20300, 23457, 32231, 12847, 12604, 22747, 19035,\r
+  30898, 29019, 6079,  24869, 17968, 11913, 23938, 19767, 10792, 26963,\r
+  23369, 8883,  12677, 24333, 27883, 21152, 15230, 6944,  13561, 26338,\r
+  5563,  12964, 14844, 14953, 9145,  24114, 26877, 424,   5487,  26099,\r
+  8523,  14153, 28978, 5117,  11640, 16671, 29910, 8416,  19877, 24924,\r
+  4630,  20091, 14079, 18436, 2613,  9493,  11402, 22689, 27878, 1705,\r
+  5406,  30777, 32362, 3200,  12975, 30589, 18680, 25349, 24273, 27971,\r
+  23905, 6102,  28794, 5430,  1780,  3607,  12042, 1740,  30367, 3339,\r
+  30346, 22649, 10584, 7397,  28977, 803,   3515,  9691,  2605,  6613,\r
+  11509, 1405,  32160, 10679, 23264, 3653,  10728, 22078, 12655, 9583,\r
+  1571,  1440,  23373, 29450, 25074, 12683, 29121, 22608, 21118, 12310,\r
+  29141, 8243,  28857, 2296,  3255,  7736,  19687, 10999, 22367, 12168,\r
+  15196, 5540,  7538,  21061, 24199, 19270, 23399, 18202, 4655,  7956,\r
+  9192,  28950, 7165,  13223, 29819, 26554, 17723, 15790, 15713, 28496,\r
+  16859, 24292, 8382,  19327, 2235,  11583, 11515, 8221,  295,   14954,\r
+  5737,  21572, 10656, 12150, 13351, 11176, 7131,  20685, 17477, 2599,\r
+  4621,  32359, 15145, 5538,  20838, 1088,  8754,  10764, 7643,  20233,\r
+  18844, 21440, 6953,  22813, 20900, 17432, 16151, 25528, 20204, 29755,\r
+  14587, 20579, 3616,  27190, 29311, 11955, 15066, 21583, 3493,  21043,\r
+  28099, 28309, 1033,  1183,  26108, 26300, 19303, 10323, 29116, 12840,\r
+  9052,  24322, 19002, 2632,  28785, 2219,  26317, 805,   18517, 11977,\r
+  2897,  28731, 4970,  12235, 5582,  2951,  26499, 16067, 20308, 4833,\r
+  32749, 2914,  17449, 20364, 30380, 9764,  26407, 15372, 8966,  29896,\r
+  1119,  15415, 16710, 19203, 18178, 7055,  18362, 31605, 22146, 17871,\r
+  3326,  29916, 20212, 28100, 9084,  16264, 6329,  5726,  3636,  28431,\r
   25437, 12807, 12985, 23617, 18367, 19507, 11388, 15198, 21874, 28985,\r
-  25933, 25223, 3940, 18529, 5919, 21619, 7101, 5182, 6924, 25443,\r
-  11018, 3390, 10649, 88, 23195, 19071, 28730, 2691, 5673, 11492,\r
-  8217, 13053, 15549, 105, 23059, 18616, 3276, 18355, 7171, 182,\r
-  7079, 26092, 4932, 3704, 23571, 6861, 30833, 8378, 30771, 1276,\r
-  22639, 5725, 687, 7833, 28334, 32677, 17167, 26643, 29867, 16292,\r
-  8552, 13633, 2746, 25078, 30011, 20654, 7682, 30895, 15258, 26932,\r
-  28617, 5778, 30860, 32204, 8690, 14724, 18355, 15268, 27843, 14656,\r
-  24620, 626, 25068, 3659, 4023, 777, 24773, 1323, 28952, 11305,\r
-  8152, 12756, 25021, 22940, 28575, 14179, 31392, 31102, 6799, 14350,\r
-  4207, 7133, 1621, 347, 32491, 8322, 31327, 18577, 17294, 30477,\r
-  12190, 2924, 11120, 9544, 3466, 26901, 6251, 1973, 14439, 1873,\r
-  8573, 105, 21703, 22521, 4719, 2077, 9297, 21162, 3764, 21891,\r
-  24512, 30397, 23444, 3798, 29231, 10618, 5514, 14773, 31123, 17544,\r
-  21738, 23857, 12425, 26792, 1478, 2597, 9554, 26788, 30483, 15814,\r
-  25115, 24705, 25864, 21114, 27266, 19708, 711, 29422, 12887, 14133,\r
-  18239, 17250, 29087, 18597, 337, 13640, 31199, 23381, 30513, 14606,\r
-  28823, 23122, 5392, 16952, 4876, 1628, 28408, 20913, 26442, 29406,\r
-  6647, 31331, 32362, 20259, 8319, 5125, 11281, 20422, 5645, 4148,\r
-  22329, 19562, 3593, 9670, 18484, 26028, 31213, 18011, 6125, 18262,\r
-  12970, 4660, 9330, 23253, 12616, 15945, 11951, 32238, 15052, 8341,\r
-  1404, 4524, 862, 22197, 25051, 30109, 3243, 15025, 22650, 17214,\r
-  17289, 6682, 1152, 23987, 8409, 25429, 20358, 10683, 20914, 15670,\r
-  31458, 484, 10940, 15569, 20012, 15099, 27353, 11660, 3835, 19655,\r
-  4363, 8057, 9712, 29431, 18834, 12259, 5366, 23128, 13908, 16423,\r
-  8903, 11851, 5762, 3781, 24499, 6775, 4473, 26295, 26525, 5307,\r
-  10470, 22786, 1350, 870, 5678, 13450, 6862, 5035, 5901, 12330,\r
-  29559, 21583, 28029, 31492, 25261, 26789, 5849, 10006, 21571, 26556,\r
-  32322, 8719, 12800, 15319, 11842, 12384, 16986, 5661, 17839, 7829,\r
-  25729, 19090, 13266, 7398, 19871, 10310, 32713, 30985, 11102, 8653,\r
-  7978, 10827, 20396, 23022, 8169, 25567, 18875, 26783, 10620, 8566,\r
-  4171, 27698, 6460, 25104, 8491, 15049, 15887, 1297, 14845, 18447,\r
-  30532, 32151, 3643, 4906, 15038, 20491, 7799, 12523, 18005, 3574,\r
-  5351, 17992, 121, 17430, 19232, 1805, 19480, 3762, 23842, 3278,\r
-  21442, 18474, 28053, 6688, 4108, 1490, 32594, 7689, 3378, 22272,\r
-  2085, 2996, 13312, 31332, 8401, 23145, 6642, 32152, 30293, 16829,\r
-  7322, 31480, 24686, 1542, 19522, 27060, 16733, 26898, 27091, 13348,\r
-  4842, 4889, 31733, 2139, 17577, 2031, 16248, 5886, 20348, 31870,\r
-  30451, 13399, 8793, 8308, 23978, 4005, 19534, 12345, 16821, 29878,\r
-  1986, 25380, 2399, 19384, 2813, 2542, 10189, 19277, 16875, 29031,\r
-  17632, 4317, 21788, 23911, 7259, 4912, 8720, 12296, 22601, 9020,\r
-  2226, 4370, 27289, 28475, 12834, 10679, 10764, 15361, 13495, 18561,\r
-  13905, 18573, 14661, 392, 26478, 4062, 1435, 7912, 19553, 23816,\r
-  4176, 30066, 32007, 25990, 448, 29090, 17214, 24018, 18001, 28881,\r
-  24390, 15411, 5627, 15020, 27502, 7638, 5383, 12005, 8940, 545,\r
-  29206, 31529, 4108, 20548, 9574, 27985, 25997, 23313, 13649, 13788,\r
-  1863, 22285, 9238, 11933, 1554, 30407, 27356, 31153, 4836, 8552,\r
-  9716, 3252, 11577, 30604, 22111, 31796, 4280, 6736, 23696, 7014,\r
-  9747, 26796, 4210, 17432, 31535, 9988, 6829, 23271, 1669, 17657,\r
-  29478, 25522, 14792, 13701, 10436, 14927, 10183, 3399, 22138, 17276,\r
-  16790, 23323, 27010, 10776, 28392, 28398, 7398, 31891, 1472, 721,\r
-  20037, 16035, 25929, 31307, 4052, 17208, 14337, 11252, 7075, 25267,\r
-  8477, 26943, 3106, 24914, 22826, 14488, 32227, 6639, 32240, 30127,\r
-  32417, 16619, 6555, 19475, 28034, 21349, 9501, 16386, 12441, 1711,\r
-  2510, 14720, 25519, 19458, 26197, 17830, 25667, 15472, 6860, 573,\r
-  24271, 283, 24607, 26507, 16717, 2981, 28341, 25709, 14074, 13031,\r
-  30803, 166, 4442, 2022, 31037, 31095, 17020, 30466, 9374, 3184,\r
-  19583, 2417, 28713, 25733, 19029, 23276, 769, 23908, 30151, 6056,\r
-  3030, 4358, 20153, 5768, 16977, 25476, 18352, 25489, 6067, 301,\r
-  7057, 20126, 23225, 725, 12460, 21077, 21186, 11375, 11512, 26457,\r
-  5683, 31199, 8096, 6081, 8219, 28169, 25535, 26314, 26899, 22574,\r
-  8296, 24776, 1897, 888, 2538, 26467, 6781, 1235, 18514, 3583,\r
-  1386, 6911, 10033, 6780, 15593, 21731, 29343, 32288, 11379, 29221,\r
-  9599, 23249, 30374, 12791, 19717, 26760, 5354, 1076, 17782, 20226,\r
-  6740, 20651, 13359, 18361, 7627, 18619, 25321, 7186, 3945, 30496,\r
-  24635, 21464, 32035, 524, 2400, 10217, 2733, 21369, 24891, 3375,\r
-  8344, 7102, 22680, 27602, 5822, 25185, 27573, 22188, 24031, 6445,\r
-  14593, 22270, 27788, 25988, 29987, 8289, 29508, 5110, 24638, 16639,\r
-  7134, 27154, 8308, 8706, 22566, 19067, 9641, 27725, 971, 24383,\r
-  31369, 9578, 23929, 15973, 9932, 6340, 6978, 15557, 1720, 24855,\r
-  7746, 25373, 15336, 9764, 2435, 14688, 6989, 25257, 16414, 23633,\r
-  15474, 18064, 3747, 4433, 3588, 2407, 955, 19573, 5009, 16656,\r
-  15372, 23772, 12432, 4282, 9565, 13120, 9378, 17424, 31995, 30410,\r
-  7447, 10927, 3419, 23595, 32692, 18398, 28416, 29416, 21171, 10873,\r
-  20639, 23797, 26124, 303, 2690, 9350, 8691, 16110, 298, 9250,\r
-  7842, 25498, 6968, 13561, 26968, 15621, 20110, 6007, 6818, 13340,\r
-  2225, 18969, 8665, 31326, 30321, 17024, 27116, 11155, 28365, 15556,\r
-  15199, 14266, 1297, 5386, 32660, 10563, 1601, 24409, 18762, 7038,\r
+  25933, 25223, 3940,  18529, 5919,  21619, 7101,  5182,  6924,  25443,\r
+  11018, 3390,  10649, 88,    23195, 19071, 28730, 2691,  5673,  11492,\r
+  8217,  13053, 15549, 105,   23059, 18616, 3276,  18355, 7171,  182,\r
+  7079,  26092, 4932,  3704,  23571, 6861,  30833, 8378,  30771, 1276,\r
+  22639, 5725,  687,   7833,  28334, 32677, 17167, 26643, 29867, 16292,\r
+  8552,  13633, 2746,  25078, 30011, 20654, 7682,  30895, 15258, 26932,\r
+  28617, 5778,  30860, 32204, 8690,  14724, 18355, 15268, 27843, 14656,\r
+  24620, 626,   25068, 3659,  4023,  777,   24773, 1323,  28952, 11305,\r
+  8152,  12756, 25021, 22940, 28575, 14179, 31392, 31102, 6799,  14350,\r
+  4207,  7133,  1621,  347,   32491, 8322,  31327, 18577, 17294, 30477,\r
+  12190, 2924,  11120, 9544,  3466,  26901, 6251,  1973,  14439, 1873,\r
+  8573,  105,   21703, 22521, 4719,  2077,  9297,  21162, 3764,  21891,\r
+  24512, 30397, 23444, 3798,  29231, 10618, 5514,  14773, 31123, 17544,\r
+  21738, 23857, 12425, 26792, 1478,  2597,  9554,  26788, 30483, 15814,\r
+  25115, 24705, 25864, 21114, 27266, 19708, 711,   29422, 12887, 14133,\r
+  18239, 17250, 29087, 18597, 337,   13640, 31199, 23381, 30513, 14606,\r
+  28823, 23122, 5392,  16952, 4876,  1628,  28408, 20913, 26442, 29406,\r
+  6647,  31331, 32362, 20259, 8319,  5125,  11281, 20422, 5645,  4148,\r
+  22329, 19562, 3593,  9670,  18484, 26028, 31213, 18011, 6125,  18262,\r
+  12970, 4660,  9330,  23253, 12616, 15945, 11951, 32238, 15052, 8341,\r
+  1404,  4524,  862,   22197, 25051, 30109, 3243,  15025, 22650, 17214,\r
+  17289, 6682,  1152,  23987, 8409,  25429, 20358, 10683, 20914, 15670,\r
+  31458, 484,   10940, 15569, 20012, 15099, 27353, 11660, 3835,  19655,\r
+  4363,  8057,  9712,  29431, 18834, 12259, 5366,  23128, 13908, 16423,\r
+  8903,  11851, 5762,  3781,  24499, 6775,  4473,  26295, 26525, 5307,\r
+  10470, 22786, 1350,  870,   5678,  13450, 6862,  5035,  5901,  12330,\r
+  29559, 21583, 28029, 31492, 25261, 26789, 5849,  10006, 21571, 26556,\r
+  32322, 8719,  12800, 15319, 11842, 12384, 16986, 5661,  17839, 7829,\r
+  25729, 19090, 13266, 7398,  19871, 10310, 32713, 30985, 11102, 8653,\r
+  7978,  10827, 20396, 23022, 8169,  25567, 18875, 26783, 10620, 8566,\r
+  4171,  27698, 6460,  25104, 8491,  15049, 15887, 1297,  14845, 18447,\r
+  30532, 32151, 3643,  4906,  15038, 20491, 7799,  12523, 18005, 3574,\r
+  5351,  17992, 121,   17430, 19232, 1805,  19480, 3762,  23842, 3278,\r
+  21442, 18474, 28053, 6688,  4108,  1490,  32594, 7689,  3378,  22272,\r
+  2085,  2996,  13312, 31332, 8401,  23145, 6642,  32152, 30293, 16829,\r
+  7322,  31480, 24686, 1542,  19522, 27060, 16733, 26898, 27091, 13348,\r
+  4842,  4889,  31733, 2139,  17577, 2031,  16248, 5886,  20348, 31870,\r
+  30451, 13399, 8793,  8308,  23978, 4005,  19534, 12345, 16821, 29878,\r
+  1986,  25380, 2399,  19384, 2813,  2542,  10189, 19277, 16875, 29031,\r
+  17632, 4317,  21788, 23911, 7259,  4912,  8720,  12296, 22601, 9020,\r
+  2226,  4370,  27289, 28475, 12834, 10679, 10764, 15361, 13495, 18561,\r
+  13905, 18573, 14661, 392,   26478, 4062,  1435,  7912,  19553, 23816,\r
+  4176,  30066, 32007, 25990, 448,   29090, 17214, 24018, 18001, 28881,\r
+  24390, 15411, 5627,  15020, 27502, 7638,  5383,  12005, 8940,  545,\r
+  29206, 31529, 4108,  20548, 9574,  27985, 25997, 23313, 13649, 13788,\r
+  1863,  22285, 9238,  11933, 1554,  30407, 27356, 31153, 4836,  8552,\r
+  9716,  3252,  11577, 30604, 22111, 31796, 4280,  6736,  23696, 7014,\r
+  9747,  26796, 4210,  17432, 31535, 9988,  6829,  23271, 1669,  17657,\r
+  29478, 25522, 14792, 13701, 10436, 14927, 10183, 3399,  22138, 17276,\r
+  16790, 23323, 27010, 10776, 28392, 28398, 7398,  31891, 1472,  721,\r
+  20037, 16035, 25929, 31307, 4052,  17208, 14337, 11252, 7075,  25267,\r
+  8477,  26943, 3106,  24914, 22826, 14488, 32227, 6639,  32240, 30127,\r
+  32417, 16619, 6555,  19475, 28034, 21349, 9501,  16386, 12441, 1711,\r
+  2510,  14720, 25519, 19458, 26197, 17830, 25667, 15472, 6860,  573,\r
+  24271, 283,   24607, 26507, 16717, 2981,  28341, 25709, 14074, 13031,\r
+  30803, 166,   4442,  2022,  31037, 31095, 17020, 30466, 9374,  3184,\r
+  19583, 2417,  28713, 25733, 19029, 23276, 769,   23908, 30151, 6056,\r
+  3030,  4358,  20153, 5768,  16977, 25476, 18352, 25489, 6067,  301,\r
+  7057,  20126, 23225, 725,   12460, 21077, 21186, 11375, 11512, 26457,\r
+  5683,  31199, 8096,  6081,  8219,  28169, 25535, 26314, 26899, 22574,\r
+  8296,  24776, 1897,  888,   2538,  26467, 6781,  1235,  18514, 3583,\r
+  1386,  6911,  10033, 6780,  15593, 21731, 29343, 32288, 11379, 29221,\r
+  9599,  23249, 30374, 12791, 19717, 26760, 5354,  1076,  17782, 20226,\r
+  6740,  20651, 13359, 18361, 7627,  18619, 25321, 7186,  3945,  30496,\r
+  24635, 21464, 32035, 524,   2400,  10217, 2733,  21369, 24891, 3375,\r
+  8344,  7102,  22680, 27602, 5822,  25185, 27573, 22188, 24031, 6445,\r
+  14593, 22270, 27788, 25988, 29987, 8289,  29508, 5110,  24638, 16639,\r
+  7134,  27154, 8308,  8706,  22566, 19067, 9641,  27725, 971,   24383,\r
+  31369, 9578,  23929, 15973, 9932,  6340,  6978,  15557, 1720,  24855,\r
+  7746,  25373, 15336, 9764,  2435,  14688, 6989,  25257, 16414, 23633,\r
+  15474, 18064, 3747,  4433,  3588,  2407,  955,   19573, 5009,  16656,\r
+  15372, 23772, 12432, 4282,  9565,  13120, 9378,  17424, 31995, 30410,\r
+  7447,  10927, 3419,  23595, 32692, 18398, 28416, 29416, 21171, 10873,\r
+  20639, 23797, 26124, 303,   2690,  9350,  8691,  16110, 298,   9250,\r
+  7842,  25498, 6968,  13561, 26968, 15621, 20110, 6007,  6818,  13340,\r
+  2225,  18969, 8665,  31326, 30321, 17024, 27116, 11155, 28365, 15556,\r
+  15199, 14266, 1297,  5386,  32660, 10563, 1601,  24409, 18762, 7038,\r
   26042, 12713, 18019, 30036, 23831, 21565, 32490, 15413, 17234, 19507,\r
-  1364, 4945, 24363, 29786, 31750, 15115, 14542, 6211, 5144, 9386,\r
+  1364,  4945,  24363, 29786, 31750, 15115, 14542, 6211,  5144,  9386,\r
   11952, 17819, 26969, 28242, 20922, 18359, 24467, 23348, 19625, 369,\r
-  25872, 7169, 23221, 6451, 15964, 31652, 4464, 11089, 16205, 17456,\r
-  498, 30364, 5441, 28695, 30003, 14132, 1703, 31646, 18360, 9117,\r
-  19393, 27277, 10354, 16405, 25767, 22059, 16099, 31781, 4240, 5993,\r
-  31874, 20087, 19021, 24926, 7521, 17127, 28182, 24563, 7181, 11996,\r
-  27785, 12000, 7349, 32729, 12016, 15575, 5007, 22607, 4291, 28414,\r
-  10872, 28342, 4718, 6307, 10715, 25307, 10579, 6956, 26835, 32124,\r
-  20755, 16972, 2196, 3602, 16905, 12413, 32519, 23278, 28952, 28586,\r
-  13492, 22407, 15527, 31275, 14821, 5395, 27369, 20471, 22280, 8532,\r
-  23906, 27669, 31830, 18357, 7591, 11860, 21682, 26773, 10085, 3388,\r
-  32724, 23267, 5028, 9284, 14246, 3051, 2381, 29254, 25838, 20847,\r
-  5866, 23599, 26414, 8698, 22958, 18427, 5064, 10097, 5557, 25569,\r
-  12390, 24555, 9100, 28106, 27801, 16578, 22260, 3848, 7873, 4075,\r
-  17123, 8261, 18476, 26498, 32460, 27065, 9346, 6057, 20768, 13217,\r
-  18528, 23187, 25365, 15084, 4931, 3804, 24998, 24119, 30888, 27676,\r
-  12251, 5883, 25713, 26043, 3658, 4869, 16011, 12295, 23518, 551,\r
-  20942, 7043, 21463, 27694, 6692, 14978, 27922, 8979, 15854, 1269,\r
-  16011, 9590, 13987, 28290, 3360, 1351, 27834, 8918, 26264, 9927,\r
-  19147, 23611, 28131, 27567, 3057, 2157, 15523, 7854, 18802, 12201,\r
-  32236, 13081, 2978, 21000, 9800, 11487, 25092, 12043, 27903, 17595,\r
-  18099, 11127, 27285, 7341, 20736, 18787, 147, 6314, 31581, 26255,\r
-  28299, 12179, 122, 13559, 14422, 18532, 5037, 8616, 16800, 30638,\r
-  30871, 7635, 17063, 12615, 15877, 32288, 31295, 16959, 8212, 25668,\r
-  16666, 10007, 21913, 26326, 25158, 4654, 19647, 27486, 23799, 13948,\r
-  6898, 26288, 29575, 10882, 9212, 30584, 11195, 30593, 15470, 3861,\r
-  9288, 10475, 19266, 7339, 25493, 28695, 11966, 28275, 963, 12344,\r
-  26780, 15702, 24555, 1680, 21863, 5819, 9894, 8929, 29480, 6301,\r
-  30163, 1061, 31554, 13280, 25492, 28030, 21403, 26853, 6298, 10096,\r
-  6908, 12892, 24483, 24910, 21691, 4697, 20032, 18162, 30615, 30122,\r
-  27356, 7857, 25571, 24937, 29690, 911, 1255, 7885, 11454, 4014,\r
-  8579, 22853, 21167, 2829, 8213, 25288, 8379, 29295, 16797, 4710,\r
-  892, 27288, 6175, 28964, 25273, 29631, 15433, 10502, 9264, 28993,\r
-  1622, 27245, 19346, 22931, 20018, 15267, 23504, 8826, 30431, 26293,\r
-  23957, 15742, 18711, 31105, 12051, 14492, 24883, 3087, 259, 22331,\r
-  13387, 16677, 9447, 14177, 28831, 13589, 4243, 22311, 15669, 20186,\r
-  15083, 3690, 7364, 10083, 13806, 20676, 30673, 31535, 10740, 19386,\r
-  4632, 23066, 5683, 13623, 28461, 2423, 31368, 24122, 27235, 19550,\r
-  20085, 24011, 1517, 1607, 26982, 26675, 13635, 27608, 16440, 9836,\r
-  9928, 13820, 7163, 8663, 20649, 2869, 11767, 6189, 17672, 4915,\r
-  9454, 19384, 4442, 26789, 10145, 9155, 11533, 23887, 22677, 12623,\r
-  15214, 17501, 18199, 27655, 9419, 14071, 29054, 15222, 19156, 1813,\r
-  15536, 8312, 23623, 21653, 1256, 4846, 3021, 30859, 11190, 26550,\r
-  11807, 15064, 18247, 21211, 876, 1534, 22246, 23048, 12287, 3378,\r
-  8387, 19267, 10269, 6323, 7411, 3031, 4908, 27739, 4537, 21394,\r
-  27163, 31859, 17668, 10289, 21757, 25804, 26424, 11545, 3063, 22027,\r
-  6961, 6984, 16221, 27973, 16262, 30090, 19224, 10700, 23818, 19696,\r
+  25872, 7169,  23221, 6451,  15964, 31652, 4464,  11089, 16205, 17456,\r
+  498,   30364, 5441,  28695, 30003, 14132, 1703,  31646, 18360, 9117,\r
+  19393, 27277, 10354, 16405, 25767, 22059, 16099, 31781, 4240,  5993,\r
+  31874, 20087, 19021, 24926, 7521,  17127, 28182, 24563, 7181,  11996,\r
+  27785, 12000, 7349,  32729, 12016, 15575, 5007,  22607, 4291,  28414,\r
+  10872, 28342, 4718,  6307,  10715, 25307, 10579, 6956,  26835, 32124,\r
+  20755, 16972, 2196,  3602,  16905, 12413, 32519, 23278, 28952, 28586,\r
+  13492, 22407, 15527, 31275, 14821, 5395,  27369, 20471, 22280, 8532,\r
+  23906, 27669, 31830, 18357, 7591,  11860, 21682, 26773, 10085, 3388,\r
+  32724, 23267, 5028,  9284,  14246, 3051,  2381,  29254, 25838, 20847,\r
+  5866,  23599, 26414, 8698,  22958, 18427, 5064,  10097, 5557,  25569,\r
+  12390, 24555, 9100,  28106, 27801, 16578, 22260, 3848,  7873,  4075,\r
+  17123, 8261,  18476, 26498, 32460, 27065, 9346,  6057,  20768, 13217,\r
+  18528, 23187, 25365, 15084, 4931,  3804,  24998, 24119, 30888, 27676,\r
+  12251, 5883,  25713, 26043, 3658,  4869,  16011, 12295, 23518, 551,\r
+  20942, 7043,  21463, 27694, 6692,  14978, 27922, 8979,  15854, 1269,\r
+  16011, 9590,  13987, 28290, 3360,  1351,  27834, 8918,  26264, 9927,\r
+  19147, 23611, 28131, 27567, 3057,  2157,  15523, 7854,  18802, 12201,\r
+  32236, 13081, 2978,  21000, 9800,  11487, 25092, 12043, 27903, 17595,\r
+  18099, 11127, 27285, 7341,  20736, 18787, 147,   6314,  31581, 26255,\r
+  28299, 12179, 122,   13559, 14422, 18532, 5037,  8616,  16800, 30638,\r
+  30871, 7635,  17063, 12615, 15877, 32288, 31295, 16959, 8212,  25668,\r
+  16666, 10007, 21913, 26326, 25158, 4654,  19647, 27486, 23799, 13948,\r
+  6898,  26288, 29575, 10882, 9212,  30584, 11195, 30593, 15470, 3861,\r
+  9288,  10475, 19266, 7339,  25493, 28695, 11966, 28275, 963,   12344,\r
+  26780, 15702, 24555, 1680,  21863, 5819,  9894,  8929,  29480, 6301,\r
+  30163, 1061,  31554, 13280, 25492, 28030, 21403, 26853, 6298,  10096,\r
+  6908,  12892, 24483, 24910, 21691, 4697,  20032, 18162, 30615, 30122,\r
+  27356, 7857,  25571, 24937, 29690, 911,   1255,  7885,  11454, 4014,\r
+  8579,  22853, 21167, 2829,  8213,  25288, 8379,  29295, 16797, 4710,\r
+  892,   27288, 6175,  28964, 25273, 29631, 15433, 10502, 9264,  28993,\r
+  1622,  27245, 19346, 22931, 20018, 15267, 23504, 8826,  30431, 26293,\r
+  23957, 15742, 18711, 31105, 12051, 14492, 24883, 3087,  259,   22331,\r
+  13387, 16677, 9447,  14177, 28831, 13589, 4243,  22311, 15669, 20186,\r
+  15083, 3690,  7364,  10083, 13806, 20676, 30673, 31535, 10740, 19386,\r
+  4632,  23066, 5683,  13623, 28461, 2423,  31368, 24122, 27235, 19550,\r
+  20085, 24011, 1517,  1607,  26982, 26675, 13635, 27608, 16440, 9836,\r
+  9928,  13820, 7163,  8663,  20649, 2869,  11767, 6189,  17672, 4915,\r
+  9454,  19384, 4442,  26789, 10145, 9155,  11533, 23887, 22677, 12623,\r
+  15214, 17501, 18199, 27655, 9419,  14071, 29054, 15222, 19156, 1813,\r
+  15536, 8312,  23623, 21653, 1256,  4846,  3021,  30859, 11190, 26550,\r
+  11807, 15064, 18247, 21211, 876,   1534,  22246, 23048, 12287, 3378,\r
+  8387,  19267, 10269, 6323,  7411,  3031,  4908,  27739, 4537,  21394,\r
+  27163, 31859, 17668, 10289, 21757, 25804, 26424, 11545, 3063,  22027,\r
+  6961,  6984,  16221, 27973, 16262, 30090, 19224, 10700, 23818, 19696,\r
   14667, 30024, 24217, 10622, 22582, 29193, 30225, 27428, 26458, 923,\r
-  21150, 14064, 8157, 17819, 3131, 17537, 7217, 25802, 26741, 8127,\r
-  25329, 3680, 23666, 13001, 6411, 27043, 28723, 11311, 7972, 20407,\r
-  26390, 5474, 7736, 13752, 20895, 11624, 18305, 32006, 27767, 23508,\r
-  19355, 7648, 28853, 20470, 19685, 24629, 14685, 8271, 20778, 5814,\r
-  25126, 32327, 30337, 4144, 17281, 21027, 28529, 13081, 28630, 21297,\r
-  2649, 30569, 5649, 28741, 18447, 12971, 27997, 7273, 17864, 27219,\r
-  3631, 21457, 32312, 8274, 23687, 27917, 9722, 19944, 26483, 2690,\r
-  10033, 185, 25044, 16411, 112, 20004, 6244, 16700, 2775, 4304,\r
-  2296, 11000, 27519, 9351, 32515, 16003, 13337, 5192, 22876, 8170,\r
+  21150, 14064, 8157,  17819, 3131,  17537, 7217,  25802, 26741, 8127,\r
+  25329, 3680,  23666, 13001, 6411,  27043, 28723, 11311, 7972,  20407,\r
+  26390, 5474,  7736,  13752, 20895, 11624, 18305, 32006, 27767, 23508,\r
+  19355, 7648,  28853, 20470, 19685, 24629, 14685, 8271,  20778, 5814,\r
+  25126, 32327, 30337, 4144,  17281, 21027, 28529, 13081, 28630, 21297,\r
+  2649,  30569, 5649,  28741, 18447, 12971, 27997, 7273,  17864, 27219,\r
+  3631,  21457, 32312, 8274,  23687, 27917, 9722,  19944, 26483, 2690,\r
+  10033, 185,   25044, 16411, 112,   20004, 6244,  16700, 2775,  4304,\r
+  2296,  11000, 27519, 9351,  32515, 16003, 13337, 5192,  22876, 8170,\r
   30417, 28311, 23873, 27905, 20857, 13336, 15003, 16541, 13283, 5212,\r
-  9603, 30212, 25998, 27899, 10502, 16546, 3717, 16099, 5925, 27646,\r
-  18309, 3567, 14880, 22508, 30046, 24252, 10997, 1283, 29595, 18104,\r
+  9603,  30212, 25998, 27899, 10502, 16546, 3717,  16099, 5925,  27646,\r
+  18309, 3567,  14880, 22508, 30046, 24252, 10997, 1283,  29595, 18104,\r
   28963, 17745, 21093, 17019, 20403, 25934, 11173, 18011, 25465, 24847,\r
-  21353, 15674, 30360, 31164, 26505, 27043, 11588, 16196, 650, 23830,\r
-  28620, 25167, 5570, 31135, 13783, 25205, 11965, 12717, 5869, 27821,\r
-  11232, 31266, 17466, 32264, 9292, 8871, 20367, 7839, 1798, 2114,\r
-  25514, 18633, 13652, 22058, 20919, 20626, 7274, 18650, 6167, 24425,\r
-  4677, 10084, 18015, 22553, 31192, 26376, 25252, 14075, 29286, 11525,\r
-  13302, 17001, 5679, 8879, 5674, 8053, 3150, 20418, 15069, 7899,\r
-  29154, 28406, 31669, 22069, 24172, 28883, 8682, 22894, 1912, 8391,\r
-  18181, 10361, 18304, 8310, 13032, 9539, 3085, 11601, 23311, 9702,\r
+  21353, 15674, 30360, 31164, 26505, 27043, 11588, 16196, 650,   23830,\r
+  28620, 25167, 5570,  31135, 13783, 25205, 11965, 12717, 5869,  27821,\r
+  11232, 31266, 17466, 32264, 9292,  8871,  20367, 7839,  1798,  2114,\r
+  25514, 18633, 13652, 22058, 20919, 20626, 7274,  18650, 6167,  24425,\r
+  4677,  10084, 18015, 22553, 31192, 26376, 25252, 14075, 29286, 11525,\r
+  13302, 17001, 5679,  8879,  5674,  8053,  3150,  20418, 15069, 7899,\r
+  29154, 28406, 31669, 22069, 24172, 28883, 8682,  22894, 1912,  8391,\r
+  18181, 10361, 18304, 8310,  13032, 9539,  3085,  11601, 23311, 9702,\r
   28447, 25706, 26389, 30495, 32719, 30854, 24186, 25346, 32307, 3700,\r
-  25507, 4076, 3714, 13214, 8226, 19386, 10104, 8926, 17976, 5944,\r
-  16380, 19347, 19352, 1500, 1, 20211, 16750, 17845, 30890, 26531,\r
-  28064, 25502, 10161, 28549, 2388, 8119, 18953, 30673, 18610, 26134,\r
-  16834, 10087, 4075, 16313, 4910, 21347, 31098, 20415, 15682, 1522,\r
-  4522, 12504, 28990, 26469, 27480, 18171, 28049, 15748, 29178, 22871,\r
-  32758, 29989, 7392, 2187, 29412, 27133, 26554, 29977, 27173, 24757,\r
-  13403, 10776, 29380, 26432, 31164, 8234, 18989, 3949, 25668, 27822,\r
-  8336, 14264, 19270, 28983, 23174, 22118, 8140, 7996, 5623, 31441,\r
-  14483, 9233, 30267, 30976, 8022, 4373, 31615, 29562, 17231, 21550,\r
-  26987, 14172, 13564, 5234, 258, 7850, 20255, 18215, 4553, 27875,\r
-  28936, 4334, 9771, 23000, 11798, 18235, 20252, 16061, 5756, 9736,\r
-  21245, 6529, 32065, 3531, 17343, 23131, 24459, 23973, 16460, 12198,\r
-  20764, 15836, 25890, 17390, 4637, 28299, 12353, 8779, 12826, 28312,\r
-  23624, 13549, 25679, 3815, 30427, 4601, 26914, 17869, 13895, 2708,\r
-  12528, 22216, 21097, 12348, 7180, 8813, 25804, 17503, 31749, 12961,\r
-  5137, 17958, 14888, 22284, 3732, 4754, 18246, 26059, 6220, 19147,\r
-  14520, 29797, 12275, 29877, 13983, 7425, 3943, 2499, 8048, 9174,\r
-  2897, 26640, 1201, 4322, 5636, 22956, 25853, 4575, 27048, 9779,\r
-  18254, 14451, 7575, 25253, 7036, 26791, 11015, 29553, 1024, 2970,\r
-  9450, 29907, 27902, 23159, 10002, 32096, 5251, 21924, 16537, 28384,\r
-  26635, 15420, 23936, 18779, 23366, 6080, 29590, 13431, 7195, 12297,\r
-  30363, 13057, 18414, 31617, 22438, 13513, 1566, 24467, 5060, 31411,\r
-  11218, 21856, 5602, 267, 19702, 18100, 28653, 25625, 24192, 14136,\r
-  12087, 29429, 19960, 3561, 20509, 25757, 12855, 4808, 5351, 25413,\r
-  31087, 29907, 17391, 25070, 14443, 27701, 4358, 28730, 32536, 19642,\r
-  13843, 127, 22085, 7301, 32509, 21530, 19111, 773, 19659, 518,\r
-  10528, 9253, 21514, 19373, 20544, 15299, 6767, 13309, 15117, 3428,\r
-  30654, 3263, 10495, 31782, 7658, 28196, 1871, 24310, 27774, 19617,\r
-  32626, 25858, 4923, 8445, 20192, 7793, 18435, 22185, 19481, 32082,\r
-  5110, 29775, 15594, 25299, 31706, 12973, 25068, 3252, 1984, 30116,\r
-  23375, 30459, 28132, 23436, 19157, 1512, 25814, 22219, 22305, 3115,\r
-  24791, 1446, 29746, 341, 16518, 15447, 5419, 31885, 11452, 30047,\r
-  11093, 18308, 12212, 7197, 5734, 7595, 18287, 26016, 27140, 27555,\r
-  30550, 11194, 11397, 8948, 7458, 32341, 29433, 30211, 3321, 24330,\r
-  32362, 4158, 14553, 23280, 15970, 7834, 26426, 30386, 23726, 15423,\r
-  15599, 8421, 13922, 6017, 7758, 7832, 26141, 25363, 11152, 9772,\r
-  17294, 26487, 23675, 7270, 31799, 18617, 32574, 10178, 10609, 21597,\r
-  7836, 3594, 1969, 27542, 4940, 4136, 13065, 23993, 17568, 14393,\r
-  3314, 18160, 23654, 19938, 12104, 18227, 29196, 25831, 4246, 9588,\r
-  28935, 14841, 15764, 13082, 15988, 20944, 19438, 945, 25088, 3706,\r
-  27207, 19680, 13830, 12019, 12670, 667, 25336, 27893, 6960, 921,\r
+  25507, 4076,  3714,  13214, 8226,  19386, 10104, 8926,  17976, 5944,\r
+  16380, 19347, 19352, 1500,  1,     20211, 16750, 17845, 30890, 26531,\r
+  28064, 25502, 10161, 28549, 2388,  8119,  18953, 30673, 18610, 26134,\r
+  16834, 10087, 4075,  16313, 4910,  21347, 31098, 20415, 15682, 1522,\r
+  4522,  12504, 28990, 26469, 27480, 18171, 28049, 15748, 29178, 22871,\r
+  32758, 29989, 7392,  2187,  29412, 27133, 26554, 29977, 27173, 24757,\r
+  13403, 10776, 29380, 26432, 31164, 8234,  18989, 3949,  25668, 27822,\r
+  8336,  14264, 19270, 28983, 23174, 22118, 8140,  7996,  5623,  31441,\r
+  14483, 9233,  30267, 30976, 8022,  4373,  31615, 29562, 17231, 21550,\r
+  26987, 14172, 13564, 5234,  258,   7850,  20255, 18215, 4553,  27875,\r
+  28936, 4334,  9771,  23000, 11798, 18235, 20252, 16061, 5756,  9736,\r
+  21245, 6529,  32065, 3531,  17343, 23131, 24459, 23973, 16460, 12198,\r
+  20764, 15836, 25890, 17390, 4637,  28299, 12353, 8779,  12826, 28312,\r
+  23624, 13549, 25679, 3815,  30427, 4601,  26914, 17869, 13895, 2708,\r
+  12528, 22216, 21097, 12348, 7180,  8813,  25804, 17503, 31749, 12961,\r
+  5137,  17958, 14888, 22284, 3732,  4754,  18246, 26059, 6220,  19147,\r
+  14520, 29797, 12275, 29877, 13983, 7425,  3943,  2499,  8048,  9174,\r
+  2897,  26640, 1201,  4322,  5636,  22956, 25853, 4575,  27048, 9779,\r
+  18254, 14451, 7575,  25253, 7036,  26791, 11015, 29553, 1024,  2970,\r
+  9450,  29907, 27902, 23159, 10002, 32096, 5251,  21924, 16537, 28384,\r
+  26635, 15420, 23936, 18779, 23366, 6080,  29590, 13431, 7195,  12297,\r
+  30363, 13057, 18414, 31617, 22438, 13513, 1566,  24467, 5060,  31411,\r
+  11218, 21856, 5602,  267,   19702, 18100, 28653, 25625, 24192, 14136,\r
+  12087, 29429, 19960, 3561,  20509, 25757, 12855, 4808,  5351,  25413,\r
+  31087, 29907, 17391, 25070, 14443, 27701, 4358,  28730, 32536, 19642,\r
+  13843, 127,   22085, 7301,  32509, 21530, 19111, 773,   19659, 518,\r
+  10528, 9253,  21514, 19373, 20544, 15299, 6767,  13309, 15117, 3428,\r
+  30654, 3263,  10495, 31782, 7658,  28196, 1871,  24310, 27774, 19617,\r
+  32626, 25858, 4923,  8445,  20192, 7793,  18435, 22185, 19481, 32082,\r
+  5110,  29775, 15594, 25299, 31706, 12973, 25068, 3252,  1984,  30116,\r
+  23375, 30459, 28132, 23436, 19157, 1512,  25814, 22219, 22305, 3115,\r
+  24791, 1446,  29746, 341,   16518, 15447, 5419,  31885, 11452, 30047,\r
+  11093, 18308, 12212, 7197,  5734,  7595,  18287, 26016, 27140, 27555,\r
+  30550, 11194, 11397, 8948,  7458,  32341, 29433, 30211, 3321,  24330,\r
+  32362, 4158,  14553, 23280, 15970, 7834,  26426, 30386, 23726, 15423,\r
+  15599, 8421,  13922, 6017,  7758,  7832,  26141, 25363, 11152, 9772,\r
+  17294, 26487, 23675, 7270,  31799, 18617, 32574, 10178, 10609, 21597,\r
+  7836,  3594,  1969,  27542, 4940,  4136,  13065, 23993, 17568, 14393,\r
+  3314,  18160, 23654, 19938, 12104, 18227, 29196, 25831, 4246,  9588,\r
+  28935, 14841, 15764, 13082, 15988, 20944, 19438, 945,   25088, 3706,\r
+  27207, 19680, 13830, 12019, 12670, 667,   25336, 27893, 6960,  921,\r
   10752, 11537, 16766, 27145, 17127, 29951, 19472, 21633, 20789, 7219,\r
-  11865, 15159, 13466, 27312, 6941, 9587, 14476, 6689, 20785, 21316,\r
-  26418, 27942, 9603, 12147, 897, 20716, 28250, 7605, 28325, 15616,\r
-  13278, 31012, 31906, 17765, 18906, 22256, 31803, 4836, 14017, 24914,\r
-  30227, 13731, 3055, 24258, 26386, 1529, 4914, 14698, 31242, 1921,\r
-  30089, 6874, 1178, 621, 16171, 28669, 19283, 18205, 25803, 26956,\r
-  20762, 20465, 11803, 19265, 13773, 13659, 10639, 8975, 26666, 10296,\r
-  3427, 13200, 12012, 26208, 10719, 11903, 19766, 23931, 20698, 3559,\r
-  17973, 28695, 22141, 8667, 1026, 4344, 3913, 9832, 26053, 10415,\r
-  28507, 30152, 31008, 31087, 12015, 10968, 25291, 29979, 6180, 18381,\r
+  11865, 15159, 13466, 27312, 6941,  9587,  14476, 6689,  20785, 21316,\r
+  26418, 27942, 9603,  12147, 897,   20716, 28250, 7605,  28325, 15616,\r
+  13278, 31012, 31906, 17765, 18906, 22256, 31803, 4836,  14017, 24914,\r
+  30227, 13731, 3055,  24258, 26386, 1529,  4914,  14698, 31242, 1921,\r
+  30089, 6874,  1178,  621,   16171, 28669, 19283, 18205, 25803, 26956,\r
+  20762, 20465, 11803, 19265, 13773, 13659, 10639, 8975,  26666, 10296,\r
+  3427,  13200, 12012, 26208, 10719, 11903, 19766, 23931, 20698, 3559,\r
+  17973, 28695, 22141, 8667,  1026,  4344,  3913,  9832,  26053, 10415,\r
+  28507, 30152, 31008, 31087, 12015, 10968, 25291, 29979, 6180,  18381,\r
   14971, 14755, 25087, 13602, 24073, 10129, 15537, 11476, 32720, 18143,\r
-  29469, 26066, 29783, 28172, 17813, 5039, 816, 24431, 25060, 3739,\r
-  16159, 20682, 7314, 14225, 10623, 4386, 20323, 27858, 9442, 16590,\r
-  289, 8849, 31480, 20431, 15003, 29680, 31154, 13919, 11502, 16427,\r
-  27558, 7116, 3331, 10259, 28598, 24455, 18521, 32703, 29676, 14456,\r
-  30469, 2174, 22441, 24213, 12023, 1807, 30975, 29363, 7294, 2581,\r
-  12635, 6300, 1039, 29893, 1383, 30561, 4418, 8674, 3118, 5106,\r
-  5917, 13035, 20866, 14827, 9621, 24467, 14234, 26289, 6226, 22897,\r
-  7168, 27326, 691, 6137, 17323, 13625, 7442, 8363, 21095, 32202,\r
-  5961, 8074, 20862, 16556, 29812, 25552, 2449, 16644, 21497, 5344,\r
-  13255, 1393, 19398, 13180, 17962, 740, 14298, 15160, 24397, 27058,\r
-  8967, 30766, 5426, 18663, 11510, 25844, 11116, 31710, 4459, 9419,\r
-  29825, 5646, 13514, 28185, 25234, 16679, 23003, 31002, 2878, 16734,\r
-  25802, 18130, 8899, 5124, 20338, 21574, 12902, 23646, 13018, 3563,\r
-  3606, 4785, 2560, 5983, 19788, 10652, 4566, 15191, 19253, 7594,\r
-  27275, 6105, 29203, 9000, 24075, 23211, 21985, 26164, 28617, 8715,\r
-  25141, 4375, 6588, 21920, 8043, 3285, 23207, 2993, 21248, 12290,\r
-  31134, 20117, 32572, 20438, 8902, 22122, 1556, 26500, 16732, 2826,\r
-  29518, 18888, 15097, 25147, 12774, 4287, 28692, 28198, 12465, 16380,\r
-  9672, 12299, 14912, 19672, 15575, 818, 1031, 265, 23024, 13349,\r
-  14526, 27511, 25389, 6172, 520, 21323, 30432, 14521, 21843, 24904,\r
-  16271, 26613, 2047, 29534, 18749, 20571, 28354, 20092, 15339, 21876,\r
-  3147, 8871, 8031, 22658, 4901, 5449, 3108, 13680, 16095, 17867,\r
-  28114, 3082, 18538, 101, 14992, 10602, 31170, 4917, 17366, 9650,\r
-  9424, 31119, 1144, 2561, 400, 20885, 4064, 4767, 14191, 20487,\r
-  1690, 24955, 5623, 9820, 13335, 13528, 16557, 3857, 14762, 30275,\r
+  29469, 26066, 29783, 28172, 17813, 5039,  816,   24431, 25060, 3739,\r
+  16159, 20682, 7314,  14225, 10623, 4386,  20323, 27858, 9442,  16590,\r
+  289,   8849,  31480, 20431, 15003, 29680, 31154, 13919, 11502, 16427,\r
+  27558, 7116,  3331,  10259, 28598, 24455, 18521, 32703, 29676, 14456,\r
+  30469, 2174,  22441, 24213, 12023, 1807,  30975, 29363, 7294,  2581,\r
+  12635, 6300,  1039,  29893, 1383,  30561, 4418,  8674,  3118,  5106,\r
+  5917,  13035, 20866, 14827, 9621,  24467, 14234, 26289, 6226,  22897,\r
+  7168,  27326, 691,   6137,  17323, 13625, 7442,  8363,  21095, 32202,\r
+  5961,  8074,  20862, 16556, 29812, 25552, 2449,  16644, 21497, 5344,\r
+  13255, 1393,  19398, 13180, 17962, 740,   14298, 15160, 24397, 27058,\r
+  8967,  30766, 5426,  18663, 11510, 25844, 11116, 31710, 4459,  9419,\r
+  29825, 5646,  13514, 28185, 25234, 16679, 23003, 31002, 2878,  16734,\r
+  25802, 18130, 8899,  5124,  20338, 21574, 12902, 23646, 13018, 3563,\r
+  3606,  4785,  2560,  5983,  19788, 10652, 4566,  15191, 19253, 7594,\r
+  27275, 6105,  29203, 9000,  24075, 23211, 21985, 26164, 28617, 8715,\r
+  25141, 4375,  6588,  21920, 8043,  3285,  23207, 2993,  21248, 12290,\r
+  31134, 20117, 32572, 20438, 8902,  22122, 1556,  26500, 16732, 2826,\r
+  29518, 18888, 15097, 25147, 12774, 4287,  28692, 28198, 12465, 16380,\r
+  9672,  12299, 14912, 19672, 15575, 818,   1031,  265,   23024, 13349,\r
+  14526, 27511, 25389, 6172,  520,   21323, 30432, 14521, 21843, 24904,\r
+  16271, 26613, 2047,  29534, 18749, 20571, 28354, 20092, 15339, 21876,\r
+  3147,  8871,  8031,  22658, 4901,  5449,  3108,  13680, 16095, 17867,\r
+  28114, 3082,  18538, 101,   14992, 10602, 31170, 4917,  17366, 9650,\r
+  9424,  31119, 1144,  2561,  400,   20885, 4064,  4767,  14191, 20487,\r
+  1690,  24955, 5623,  9820,  13335, 13528, 16557, 3857,  14762, 30275,\r
   21050, 29761, 27351, 13768, 15050, 25718, 16077, 25957, 23986, 18879,\r
-  31537, 26815, 12885, 5890, 31773, 19732, 27720, 24468, 15721, 15729,\r
-  28340, 3335, 2345, 1829, 3836, 10051, 28534, 17013, 27296, 25304,\r
-  27506, 29585, 21602, 27027, 22918, 14279, 7335, 4432, 8942, 21239,\r
-  14623, 29966, 17016, 12615, 4008, 9289, 1672, 12567, 26736, 23684,\r
-  13408, 18744, 19290, 293, 28830, 24408, 19620, 17797, 4358, 25281,\r
-  3270, 15688, 15234, 32580, 28573, 18154, 30311, 31855, 20168, 1179,\r
-  3578, 7431, 11091, 22349, 29491, 4786, 8850, 4107, 30657, 23027,\r
-  10832, 19340, 2893, 4699, 22570, 11272, 24067, 9982, 14389, 25930,\r
-  3151, 23333, 30439, 20231, 14308, 3906, 25140, 29038, 12803, 21033,\r
-  1527, 16384, 6906, 4732, 26516, 30370, 6891, 1127, 9435, 19696,\r
-  6094, 3982, 31280, 29653, 3257, 22852, 29673, 4440, 26207, 16126,\r
-  20216, 11961, 2264, 21767, 19658, 19645, 25248, 15733, 32367, 4678,\r
-  12513, 27483, 19194, 18726, 22773, 9792, 13611, 7477, 31526, 25040,\r
-  9291, 20898, 8889, 15826, 13400, 24710, 14124, 16986, 20834, 14527,\r
-  4795, 11328, 8757, 3579, 25129, 24016, 1592, 28435, 12732, 18371,\r
-  10901, 5787, 19338, 24175, 31386, 10679, 19187, 28474, 28512, 22831,\r
-  2415, 27220, 682, 6342, 18570, 29862, 18703, 24776, 15660, 22021,\r
-  30556, 11747, 24606, 6060, 22324, 13111, 10186, 26345, 28409, 29360,\r
-  3906, 4118, 24816, 12180, 3716, 9675, 17823, 28504, 26621, 10322,\r
-  1402, 31928, 28491, 16731, 30143, 8455, 11591, 26609, 15519, 1987,\r
-  1347, 173, 16542, 108, 16272, 20010, 10044, 4758, 7492, 17848,\r
-  9941, 6206, 22841, 7253, 12230, 21082, 14937, 8153, 12497, 11187,\r
-  6937, 12400, 31427, 7671, 2628, 28237, 1875, 27914, 26874, 28573,\r
-  10062, 11422, 10744, 4794, 23537, 17411, 5658, 16546, 24470, 25664,\r
-  14877, 13223, 8596, 9314, 25002, 5736, 14688, 14356, 17296, 3839,\r
-  5368, 29808, 17234, 2684, 26241, 5909, 27617, 23699, 5422, 890,\r
-  1962, 1937, 13669, 27266, 31187, 16532, 19485, 4176, 15554, 1020,\r
-  24971, 9308, 10720, 19997, 9981, 24518, 28316, 19510, 13318, 24043,\r
-  21170, 6567, 7899, 25399, 13229, 23902, 29693, 1594, 22954, 23443,\r
-  20760, 28413, 2400, 20405, 10027, 8342, 30557, 8868, 26602, 250,\r
-  146, 20768, 8801, 4883, 19474, 5762, 21209, 5906, 14871, 12201,\r
-  27135, 1287, 17478, 19000, 20291, 5550, 13108, 29695, 25215, 19852,\r
-  19752, 7862, 16601, 15931, 25123, 3057, 20714, 29187, 22813, 13648,\r
-  23072, 13738, 8850, 1270, 11104, 13452, 13373, 29245, 5360, 6894,\r
-  29220, 22184, 14741, 12943, 10452, 3866, 31480, 11648, 31982, 15685,\r
-  1358, 4918, 29666, 15716, 15928, 990, 31227, 9261, 6888, 17904,\r
-  2460, 22785, 8582, 20999, 22473, 8295, 6610, 20720, 10728, 10936,\r
-  12554, 16384, 14537, 31516, 5390, 12203, 17637, 15028, 19138, 20563,\r
+  31537, 26815, 12885, 5890,  31773, 19732, 27720, 24468, 15721, 15729,\r
+  28340, 3335,  2345,  1829,  3836,  10051, 28534, 17013, 27296, 25304,\r
+  27506, 29585, 21602, 27027, 22918, 14279, 7335,  4432,  8942,  21239,\r
+  14623, 29966, 17016, 12615, 4008,  9289,  1672,  12567, 26736, 23684,\r
+  13408, 18744, 19290, 293,   28830, 24408, 19620, 17797, 4358,  25281,\r
+  3270,  15688, 15234, 32580, 28573, 18154, 30311, 31855, 20168, 1179,\r
+  3578,  7431,  11091, 22349, 29491, 4786,  8850,  4107,  30657, 23027,\r
+  10832, 19340, 2893,  4699,  22570, 11272, 24067, 9982,  14389, 25930,\r
+  3151,  23333, 30439, 20231, 14308, 3906,  25140, 29038, 12803, 21033,\r
+  1527,  16384, 6906,  4732,  26516, 30370, 6891,  1127,  9435,  19696,\r
+  6094,  3982,  31280, 29653, 3257,  22852, 29673, 4440,  26207, 16126,\r
+  20216, 11961, 2264,  21767, 19658, 19645, 25248, 15733, 32367, 4678,\r
+  12513, 27483, 19194, 18726, 22773, 9792,  13611, 7477,  31526, 25040,\r
+  9291,  20898, 8889,  15826, 13400, 24710, 14124, 16986, 20834, 14527,\r
+  4795,  11328, 8757,  3579,  25129, 24016, 1592,  28435, 12732, 18371,\r
+  10901, 5787,  19338, 24175, 31386, 10679, 19187, 28474, 28512, 22831,\r
+  2415,  27220, 682,   6342,  18570, 29862, 18703, 24776, 15660, 22021,\r
+  30556, 11747, 24606, 6060,  22324, 13111, 10186, 26345, 28409, 29360,\r
+  3906,  4118,  24816, 12180, 3716,  9675,  17823, 28504, 26621, 10322,\r
+  1402,  31928, 28491, 16731, 30143, 8455,  11591, 26609, 15519, 1987,\r
+  1347,  173,   16542, 108,   16272, 20010, 10044, 4758,  7492,  17848,\r
+  9941,  6206,  22841, 7253,  12230, 21082, 14937, 8153,  12497, 11187,\r
+  6937,  12400, 31427, 7671,  2628,  28237, 1875,  27914, 26874, 28573,\r
+  10062, 11422, 10744, 4794,  23537, 17411, 5658,  16546, 24470, 25664,\r
+  14877, 13223, 8596,  9314,  25002, 5736,  14688, 14356, 17296, 3839,\r
+  5368,  29808, 17234, 2684,  26241, 5909,  27617, 23699, 5422,  890,\r
+  1962,  1937,  13669, 27266, 31187, 16532, 19485, 4176,  15554, 1020,\r
+  24971, 9308,  10720, 19997, 9981,  24518, 28316, 19510, 13318, 24043,\r
+  21170, 6567,  7899,  25399, 13229, 23902, 29693, 1594,  22954, 23443,\r
+  20760, 28413, 2400,  20405, 10027, 8342,  30557, 8868,  26602, 250,\r
+  146,   20768, 8801,  4883,  19474, 5762,  21209, 5906,  14871, 12201,\r
+  27135, 1287,  17478, 19000, 20291, 5550,  13108, 29695, 25215, 19852,\r
+  19752, 7862,  16601, 15931, 25123, 3057,  20714, 29187, 22813, 13648,\r
+  23072, 13738, 8850,  1270,  11104, 13452, 13373, 29245, 5360,  6894,\r
+  29220, 22184, 14741, 12943, 10452, 3866,  31480, 11648, 31982, 15685,\r
+  1358,  4918,  29666, 15716, 15928, 990,   31227, 9261,  6888,  17904,\r
+  2460,  22785, 8582,  20999, 22473, 8295,  6610,  20720, 10728, 10936,\r
+  12554, 16384, 14537, 31516, 5390,  12203, 17637, 15028, 19138, 20563,\r
   16355, 19481, 17332, 16734, 12129, 13062, 30463, 22155, 11504, 9297,\r
-  367, 18310, 10080, 21024, 4325, 32186, 18751, 18521, 7933, 29798,\r
-  10396, 27994, 16111, 24307, 9232, 31467, 691, 2437, 4352, 880,\r
-  15209, 10192, 7964, 22372, 6391, 1581, 5419, 24322, 27892, 20716,\r
-  19211, 15429, 5317, 26092, 1267, 18707, 20229, 25706, 5116, 17845,\r
-  43, 28439, 24544, 19339, 10854, 21613, 15873, 22526, 7372, 4418,\r
-  14765, 949, 7604, 24990, 12704, 14860, 5216, 21450, 28362, 1218,\r
-  30176, 4521, 6227, 16369, 31026, 21579, 10461, 19012, 22190, 13760,\r
-  18697, 1380, 5794, 21802, 13116, 15027, 13113, 278, 1187, 14397,\r
-  4513, 23565, 8052, 14828, 5740, 12133, 631, 29435, 22839, 24669,\r
-  14790, 19372, 15242, 15210, 19665, 10046, 26368, 2507, 19876, 17945,\r
-  30376, 9571, 28013, 6221, 20394, 32456, 14904, 5178, 27950, 18840,\r
-  27134, 26000, 9081, 17164, 22238, 2171, 7769, 18127, 4266, 9495,\r
-  7876, 9744, 10149, 16170, 15292, 29910, 5259, 3602, 10869, 16787,\r
-  25042, 4348, 20922, 27389, 31280, 13143, 11405, 2073, 16477, 5513,\r
-  16398, 5784, 21530, 19936, 10398, 25447, 10354, 13771, 579, 24962,\r
-  20288, 5962, 12366, 25353, 7665, 20131, 18492, 26773, 3979, 13399,\r
-  9179, 31436, 2030, 25428, 24238, 16947, 23643, 12140, 17041, 20804,\r
-  17714, 24582, 26528, 21697, 7424, 787, 2902, 7751, 4280, 27716,\r
-  25330, 15654, 9537, 13434, 27935, 6512, 13873, 19839, 1747, 17744,\r
-  20953, 32243, 18296, 30877, 5761, 22921, 26698, 27311, 29940, 2419,\r
-  15104, 32370, 31808, 31002, 29614, 29880, 4791, 15123, 18922, 6356,\r
-  16441, 14926, 13614, 7012, 28086, 2961, 18557, 3950, 15854, 29477,\r
-  29001, 15791, 25467, 29392, 7573, 16943, 6162, 29699, 3415, 10265,\r
-  6406, 25171, 21280, 30666, 19725, 18989, 18430, 27432, 30535, 20422,\r
-  30370, 15413, 7036, 4690, 16830, 16868, 30630, 20342, 18865, 20267,\r
-  13999, 23295, 21862, 2137, 16507, 16084, 17017, 8874, 19241, 5929,\r
-  16540, 16920, 4502, 32502, 23610, 26997, 21283, 8360, 7258, 12471,\r
-  185, 16150, 14277, 13715, 15114, 19126, 9579, 31309, 1561, 22289,\r
-  3075, 9934, 22012, 1140, 21746, 24567, 22752, 12777, 26222, 10549,\r
-  8783, 2917, 18659, 1109, 7086, 18499, 15253, 17306, 24074, 11761,\r
-  31880, 16909, 22804, 10986, 18333, 30229, 27497, 7652, 20733, 4679,\r
-  20503, 7498, 16058, 10367, 1373, 21228, 26036, 816, 4275, 16374,\r
+  367,   18310, 10080, 21024, 4325,  32186, 18751, 18521, 7933,  29798,\r
+  10396, 27994, 16111, 24307, 9232,  31467, 691,   2437,  4352,  880,\r
+  15209, 10192, 7964,  22372, 6391,  1581,  5419,  24322, 27892, 20716,\r
+  19211, 15429, 5317,  26092, 1267,  18707, 20229, 25706, 5116,  17845,\r
+  43,    28439, 24544, 19339, 10854, 21613, 15873, 22526, 7372,  4418,\r
+  14765, 949,   7604,  24990, 12704, 14860, 5216,  21450, 28362, 1218,\r
+  30176, 4521,  6227,  16369, 31026, 21579, 10461, 19012, 22190, 13760,\r
+  18697, 1380,  5794,  21802, 13116, 15027, 13113, 278,   1187,  14397,\r
+  4513,  23565, 8052,  14828, 5740,  12133, 631,   29435, 22839, 24669,\r
+  14790, 19372, 15242, 15210, 19665, 10046, 26368, 2507,  19876, 17945,\r
+  30376, 9571,  28013, 6221,  20394, 32456, 14904, 5178,  27950, 18840,\r
+  27134, 26000, 9081,  17164, 22238, 2171,  7769,  18127, 4266,  9495,\r
+  7876,  9744,  10149, 16170, 15292, 29910, 5259,  3602,  10869, 16787,\r
+  25042, 4348,  20922, 27389, 31280, 13143, 11405, 2073,  16477, 5513,\r
+  16398, 5784,  21530, 19936, 10398, 25447, 10354, 13771, 579,   24962,\r
+  20288, 5962,  12366, 25353, 7665,  20131, 18492, 26773, 3979,  13399,\r
+  9179,  31436, 2030,  25428, 24238, 16947, 23643, 12140, 17041, 20804,\r
+  17714, 24582, 26528, 21697, 7424,  787,   2902,  7751,  4280,  27716,\r
+  25330, 15654, 9537,  13434, 27935, 6512,  13873, 19839, 1747,  17744,\r
+  20953, 32243, 18296, 30877, 5761,  22921, 26698, 27311, 29940, 2419,\r
+  15104, 32370, 31808, 31002, 29614, 29880, 4791,  15123, 18922, 6356,\r
+  16441, 14926, 13614, 7012,  28086, 2961,  18557, 3950,  15854, 29477,\r
+  29001, 15791, 25467, 29392, 7573,  16943, 6162,  29699, 3415,  10265,\r
+  6406,  25171, 21280, 30666, 19725, 18989, 18430, 27432, 30535, 20422,\r
+  30370, 15413, 7036,  4690,  16830, 16868, 30630, 20342, 18865, 20267,\r
+  13999, 23295, 21862, 2137,  16507, 16084, 17017, 8874,  19241, 5929,\r
+  16540, 16920, 4502,  32502, 23610, 26997, 21283, 8360,  7258,  12471,\r
+  185,   16150, 14277, 13715, 15114, 19126, 9579,  31309, 1561,  22289,\r
+  3075,  9934,  22012, 1140,  21746, 24567, 22752, 12777, 26222, 10549,\r
+  8783,  2917,  18659, 1109,  7086,  18499, 15253, 17306, 24074, 11761,\r
+  31880, 16909, 22804, 10986, 18333, 30229, 27497, 7652,  20733, 4679,\r
+  20503, 7498,  16058, 10367, 1373,  21228, 26036, 816,   4275,  16374,\r
   19898, 10488, 17418, 32030, 16626, 15992, 26709, 19234, 27259, 14946,\r
-  29000, 1906, 18512, 8147, 7776, 22825, 29808, 13028, 11555, 10818,\r
-  2364, 23420, 169, 16649, 9504, 10856, 25179, 3535, 20853, 13485,\r
-  16379, 226, 20646, 14620, 2789, 31933, 6034, 17448, 7316, 14459,\r
-  30258, 17909, 17511, 9874, 13180, 20145, 25253, 13245, 8327, 25895,\r
-  13504, 29242, 26351, 11153, 14038, 1334, 5755, 18094, 15997, 24710,\r
-  13821, 15125, 12992, 12439, 23418, 13513, 1381, 32424, 3979, 27917,\r
-  20850, 25910, 3, 8826, 17135, 26808, 17874, 22350, 11244, 18573,\r
-  16938, 18951, 27334, 23603, 22240, 23601, 1447, 20665, 32276, 23420,\r
-  8012, 23159, 1300, 24849, 10507, 12028, 28286, 15142, 30228, 23368,\r
-  16293, 5328, 5111, 19004, 15670, 20505, 3174, 3918, 23324, 18003,\r
-  29756, 18817, 25504, 25260, 27583, 12949, 6613, 19202, 29730, 11898,\r
-  23347, 2808, 15951, 28427, 1154, 30025, 22243, 32761, 7674, 12124,\r
-  21369, 20229, 4776, 6937, 25899, 1139, 30483, 4860, 29782, 16315,\r
-  8992, 11367, 10654, 3201, 9011, 29757, 2098, 9159, 17559, 22956,\r
-  32081, 19810, 16672, 15178, 2318, 30122, 19982, 19044, 25680, 19318,\r
-  4661, 14482, 18460, 31304, 18267, 25487, 14871, 21700, 2786, 29512,\r
-  582, 871, 8615, 7731, 11801, 2933, 13097, 2018, 17576, 16947,\r
-  16366, 28120, 4156, 87, 22306, 5787, 8465, 10685, 20354, 14091,\r
-  27994, 23899, 1912, 16881, 12934, 24951, 28807, 21979, 31682, 8215,\r
+  29000, 1906,  18512, 8147,  7776,  22825, 29808, 13028, 11555, 10818,\r
+  2364,  23420, 169,   16649, 9504,  10856, 25179, 3535,  20853, 13485,\r
+  16379, 226,   20646, 14620, 2789,  31933, 6034,  17448, 7316,  14459,\r
+  30258, 17909, 17511, 9874,  13180, 20145, 25253, 13245, 8327,  25895,\r
+  13504, 29242, 26351, 11153, 14038, 1334,  5755,  18094, 15997, 24710,\r
+  13821, 15125, 12992, 12439, 23418, 13513, 1381,  32424, 3979,  27917,\r
+  20850, 25910, 3,     8826,  17135, 26808, 17874, 22350, 11244, 18573,\r
+  16938, 18951, 27334, 23603, 22240, 23601, 1447,  20665, 32276, 23420,\r
+  8012,  23159, 1300,  24849, 10507, 12028, 28286, 15142, 30228, 23368,\r
+  16293, 5328,  5111,  19004, 15670, 20505, 3174,  3918,  23324, 18003,\r
+  29756, 18817, 25504, 25260, 27583, 12949, 6613,  19202, 29730, 11898,\r
+  23347, 2808,  15951, 28427, 1154,  30025, 22243, 32761, 7674,  12124,\r
+  21369, 20229, 4776,  6937,  25899, 1139,  30483, 4860,  29782, 16315,\r
+  8992,  11367, 10654, 3201,  9011,  29757, 2098,  9159,  17559, 22956,\r
+  32081, 19810, 16672, 15178, 2318,  30122, 19982, 19044, 25680, 19318,\r
+  4661,  14482, 18460, 31304, 18267, 25487, 14871, 21700, 2786,  29512,\r
+  582,   871,   8615,  7731,  11801, 2933,  13097, 2018,  17576, 16947,\r
+  16366, 28120, 4156,  87,    22306, 5787,  8465,  10685, 20354, 14091,\r
+  27994, 23899, 1912,  16881, 12934, 24951, 28807, 21979, 31682, 8215,\r
   27114, 15656, 29119, 18362, 11896, 13407, 22453, 25669, 22987, 27333,\r
-  22952, 1088, 18593, 28974, 4074, 15938, 22658, 2835, 23521, 10922,\r
-  19108, 5605, 522, 9616, 19979, 31393, 9534, 27900, 29940, 23973,\r
-  1844, 28501, 6516, 194, 12872, 24092, 30045, 2962, 28794, 22746,\r
-  29025, 11787, 13242, 17494, 28538, 20821, 21347, 8716, 5257, 19161,\r
-  17157, 31707, 21821, 17819, 9831, 14334, 18998, 21961, 26316, 26941,\r
-  3946, 27284, 11638, 28516, 13000, 4670, 26473, 31733, 30236, 17524,\r
-  13937, 20250, 26675, 9951, 29542, 16605, 6463, 32758, 9647, 27291,\r
-  28284, 19478, 5125, 1206, 22804, 10452, 21113, 19595, 29761, 2706,\r
-  29113, 1700, 20145, 28752, 13199, 28974, 25390, 2501, 26794, 15021,\r
-  1150, 942, 23457, 20718, 16520, 28263, 27957, 7229, 32441, 29368,\r
-  17879, 31449, 23974, 18673, 16490, 4261, 5107, 9785, 29257, 16160,\r
-  22643, 5155, 29836, 22935, 5520, 26242, 21127, 27034, 27630, 17279,\r
-  16788, 6060, 18507, 29160, 1555, 3134, 4266, 25035, 10670, 23775,\r
-  11440, 9028, 26338, 22957, 27982, 16275, 28090, 20239, 6048, 10353,\r
-  26078, 4006, 5909, 12709, 20941, 23168, 6865, 18642, 14183, 29071,\r
-  8783, 24467, 12718, 29786, 15691, 15305, 20429, 21235, 735, 8756,\r
-  25946, 27945, 1004, 3905, 12248, 12798, 15547, 29219, 30080, 21340,\r
-  18916, 7717, 321, 25091, 25711, 26175, 8197, 26054, 26938, 5863,\r
-  822, 17911, 28570, 16937, 11392, 5664, 13125, 4602, 18137, 6899,\r
-  21872, 5322, 4287, 7044, 14644, 14424, 15297, 21174, 32566, 26314,\r
-  25921, 5363, 25735, 31229, 3192, 32289, 2249, 31002, 10683, 15313,\r
-  24468, 21610, 19196, 18361, 20760, 4971, 22931, 9828, 19971, 10531,\r
-  27967, 32296, 23205, 25268, 20583, 6745, 21841, 9265, 6566, 11964,\r
+  22952, 1088,  18593, 28974, 4074,  15938, 22658, 2835,  23521, 10922,\r
+  19108, 5605,  522,   9616,  19979, 31393, 9534,  27900, 29940, 23973,\r
+  1844,  28501, 6516,  194,   12872, 24092, 30045, 2962,  28794, 22746,\r
+  29025, 11787, 13242, 17494, 28538, 20821, 21347, 8716,  5257,  19161,\r
+  17157, 31707, 21821, 17819, 9831,  14334, 18998, 21961, 26316, 26941,\r
+  3946,  27284, 11638, 28516, 13000, 4670,  26473, 31733, 30236, 17524,\r
+  13937, 20250, 26675, 9951,  29542, 16605, 6463,  32758, 9647,  27291,\r
+  28284, 19478, 5125,  1206,  22804, 10452, 21113, 19595, 29761, 2706,\r
+  29113, 1700,  20145, 28752, 13199, 28974, 25390, 2501,  26794, 15021,\r
+  1150,  942,   23457, 20718, 16520, 28263, 27957, 7229,  32441, 29368,\r
+  17879, 31449, 23974, 18673, 16490, 4261,  5107,  9785,  29257, 16160,\r
+  22643, 5155,  29836, 22935, 5520,  26242, 21127, 27034, 27630, 17279,\r
+  16788, 6060,  18507, 29160, 1555,  3134,  4266,  25035, 10670, 23775,\r
+  11440, 9028,  26338, 22957, 27982, 16275, 28090, 20239, 6048,  10353,\r
+  26078, 4006,  5909,  12709, 20941, 23168, 6865,  18642, 14183, 29071,\r
+  8783,  24467, 12718, 29786, 15691, 15305, 20429, 21235, 735,   8756,\r
+  25946, 27945, 1004,  3905,  12248, 12798, 15547, 29219, 30080, 21340,\r
+  18916, 7717,  321,   25091, 25711, 26175, 8197,  26054, 26938, 5863,\r
+  822,   17911, 28570, 16937, 11392, 5664,  13125, 4602,  18137, 6899,\r
+  21872, 5322,  4287,  7044,  14644, 14424, 15297, 21174, 32566, 26314,\r
+  25921, 5363,  25735, 31229, 3192,  32289, 2249,  31002, 10683, 15313,\r
+  24468, 21610, 19196, 18361, 20760, 4971,  22931, 9828,  19971, 10531,\r
+  27967, 32296, 23205, 25268, 20583, 6745,  21841, 9265,  6566,  11964,\r
   31751, 26544, 32391, 28478, 30033, 12960, 17293, 20454, 24683, 30045,\r
-  28023, 265, 12454, 2306, 6081, 31677, 22542, 16255, 5230, 12943,\r
-  1355, 14827, 14597, 14969, 30917, 31003, 31962, 14, 13580, 23667,\r
-  19598, 23800, 3702, 764, 14041, 8612, 24074, 17079, 22151, 26428,\r
-  23452, 10801, 7617, 15830, 25402, 16472, 26254, 2795, 10695, 30349,\r
-  27802, 11274, 9446, 250, 5173, 12749, 10778, 2342, 8862, 18189,\r
-  2347, 28358, 19330, 6226, 9675, 2775, 14272, 20365, 21625, 10473,\r
-  26991, 30730, 32422, 10942, 8482, 24224, 21014, 2579, 10346, 16939,\r
-  32650, 11454, 9629, 26684, 19612, 16121, 23766, 27150, 31978, 2046,\r
-  573, 19900, 22134, 27860, 393, 16306, 17741, 5480, 24259, 97,\r
-  25191, 26591, 5196, 23096, 25039, 20011, 4641, 13263, 11267, 31196,\r
-  16990, 4709, 9886, 6713, 14081, 8332, 28724, 14480, 25841, 3363,\r
-  4990, 11978, 4159, 22149, 30135, 27714, 19883, 22016, 1093, 31960,\r
-  15722, 8073, 26012, 1601, 25382, 2477, 12640, 12193, 16199, 29131,\r
-  29641, 10075, 3441, 4225, 76, 15143, 19533, 29284, 22392, 13926,\r
-  29325, 26868, 9246, 31411, 29994, 1999, 5044, 1723, 752, 548,\r
-  3579, 24398, 6461, 31851, 4064, 3766, 22022, 9811, 11680, 11847,\r
-  11034, 12540, 48, 11831, 22187, 30055, 476, 20400, 17674, 24363,\r
-  7726, 1316, 16306, 28521, 30993, 11489, 3464, 27649, 12598, 23013,\r
-  26721, 3846, 8631, 7923, 27589, 19056, 26363, 4070, 24819, 29713,\r
-  10969, 27974, 3108, 28107, 31744, 11801, 24340, 7679, 13462, 23547,\r
+  28023, 265,   12454, 2306,  6081,  31677, 22542, 16255, 5230,  12943,\r
+  1355,  14827, 14597, 14969, 30917, 31003, 31962, 14,    13580, 23667,\r
+  19598, 23800, 3702,  764,   14041, 8612,  24074, 17079, 22151, 26428,\r
+  23452, 10801, 7617,  15830, 25402, 16472, 26254, 2795,  10695, 30349,\r
+  27802, 11274, 9446,  250,   5173,  12749, 10778, 2342,  8862,  18189,\r
+  2347,  28358, 19330, 6226,  9675,  2775,  14272, 20365, 21625, 10473,\r
+  26991, 30730, 32422, 10942, 8482,  24224, 21014, 2579,  10346, 16939,\r
+  32650, 11454, 9629,  26684, 19612, 16121, 23766, 27150, 31978, 2046,\r
+  573,   19900, 22134, 27860, 393,   16306, 17741, 5480,  24259, 97,\r
+  25191, 26591, 5196,  23096, 25039, 20011, 4641,  13263, 11267, 31196,\r
+  16990, 4709,  9886,  6713,  14081, 8332,  28724, 14480, 25841, 3363,\r
+  4990,  11978, 4159,  22149, 30135, 27714, 19883, 22016, 1093,  31960,\r
+  15722, 8073,  26012, 1601,  25382, 2477,  12640, 12193, 16199, 29131,\r
+  29641, 10075, 3441,  4225,  76,    15143, 19533, 29284, 22392, 13926,\r
+  29325, 26868, 9246,  31411, 29994, 1999,  5044,  1723,  752,   548,\r
+  3579,  24398, 6461,  31851, 4064,  3766,  22022, 9811,  11680, 11847,\r
+  11034, 12540, 48,    11831, 22187, 30055, 476,   20400, 17674, 24363,\r
+  7726,  1316,  16306, 28521, 30993, 11489, 3464,  27649, 12598, 23013,\r
+  26721, 3846,  8631,  7923,  27589, 19056, 26363, 4070,  24819, 29713,\r
+  10969, 27974, 3108,  28107, 31744, 11801, 24340, 7679,  13462, 23547,\r
   13503, 19528, 13343, 30065, 31336, 13930, 28833, 19067, 27104, 29061,\r
-  8965, 1896, 14597, 27535, 4801, 25070, 25225, 8448, 17588, 7290,\r
-  27637, 23247, 4433, 21445, 19693, 2206, 26112, 19112, 23477, 2866,\r
-  13761, 10289, 25332, 805, 23827, 23542, 17592, 30687, 32020, 7337,\r
-  20155, 27330, 4585, 13549, 9189, 10917, 18528, 4712, 24337, 31620,\r
-  22228, 19226, 21268, 26229, 23890, 3309, 3067, 17886, 4345, 11149,\r
-  30101, 25062, 13991, 16505, 19250, 12585, 12498, 4443, 13481, 4528,\r
-  9395, 12437, 13472, 3616, 31402, 3100, 19463, 817, 15838, 24201,\r
-  30438, 14690, 7972, 13933, 26201, 18156, 7970, 2021, 7128, 19956,\r
-  9140, 31855, 18876, 27396, 31886, 29948, 7423, 26556, 6947, 29255,\r
-  21572, 1477, 454, 22372, 18455, 30215, 11791, 15004, 18549, 20508,\r
-  641, 14456, 29583, 7684, 29545, 32028, 27083, 20506, 31497, 30678,\r
-  780, 11590, 6390, 27895, 26931, 4981, 24767, 23010, 15334, 7238,\r
-  23503, 24418, 8592, 31238, 17045, 9793, 27048, 8415, 20706, 29206,\r
-  9271, 4172, 14738, 22110, 21140, 20688, 32110, 16846, 5490, 31208,\r
+  8965,  1896,  14597, 27535, 4801,  25070, 25225, 8448,  17588, 7290,\r
+  27637, 23247, 4433,  21445, 19693, 2206,  26112, 19112, 23477, 2866,\r
+  13761, 10289, 25332, 805,   23827, 23542, 17592, 30687, 32020, 7337,\r
+  20155, 27330, 4585,  13549, 9189,  10917, 18528, 4712,  24337, 31620,\r
+  22228, 19226, 21268, 26229, 23890, 3309,  3067,  17886, 4345,  11149,\r
+  30101, 25062, 13991, 16505, 19250, 12585, 12498, 4443,  13481, 4528,\r
+  9395,  12437, 13472, 3616,  31402, 3100,  19463, 817,   15838, 24201,\r
+  30438, 14690, 7972,  13933, 26201, 18156, 7970,  2021,  7128,  19956,\r
+  9140,  31855, 18876, 27396, 31886, 29948, 7423,  26556, 6947,  29255,\r
+  21572, 1477,  454,   22372, 18455, 30215, 11791, 15004, 18549, 20508,\r
+  641,   14456, 29583, 7684,  29545, 32028, 27083, 20506, 31497, 30678,\r
+  780,   11590, 6390,  27895, 26931, 4981,  24767, 23010, 15334, 7238,\r
+  23503, 24418, 8592,  31238, 17045, 9793,  27048, 8415,  20706, 29206,\r
+  9271,  4172,  14738, 22110, 21140, 20688, 32110, 16846, 5490,  31208,\r
   10577, 21480, 31773, 21566, 16266, 12493, 22785, 27679, 20610, 18258,\r
-  16236, 10287, 1695, 15701, 3733, 14428, 10599, 30290, 11740, 28944,\r
-  23529, 26673, 24147, 26283, 6744, 12898, 17790, 23856, 15098, 11052,\r
-  5463, 24638, 30272, 22338, 30101, 5955, 14903, 32664, 4654, 10732,\r
-  19743, 22900, 29467, 18656, 856, 29896, 347, 11949, 3206, 25791,\r
-  23866, 11522, 7149, 22166, 27091, 6688, 28701, 2733, 12756, 12939,\r
-  32212, 25566, 2433, 17157, 16928, 269, 4604, 11964, 32708, 5376,\r
-  451, 9667, 27613, 28785, 22138, 8127, 3525, 29282, 21483, 28387,\r
-  22072, 21169, 29771, 32542, 12725, 31468, 11710, 5522, 6695, 24934,\r
-  12574, 9289, 27589, 6795, 1528, 1571, 311, 5232, 10200, 14099,\r
-  23290, 12463, 2247, 23691, 22021, 12401, 7441, 12853, 13741, 9932,\r
-  21580, 12004, 1222, 25936, 9109, 30154, 4619, 5852, 1309, 26603,\r
-  3008, 31926, 4325, 27089, 32405, 475, 4805, 12674, 15310, 6292,\r
-  16819, 12463, 27297, 5706, 31810, 28462, 18655, 411, 11881, 27051,\r
-  24279, 1710, 17542, 18586, 10872, 1475, 20386, 879, 1461, 28686,\r
-  16119, 17426, 19502, 26309, 21167, 7821, 1036, 20600, 11247, 28936,\r
-  3628, 22689, 7700, 32760, 8577, 3452, 9533, 8851, 5555, 4120,\r
-  9737, 4999, 16652, 2734, 23202, 14827, 28053, 24883, 4346, 32374,\r
-  10620, 20521, 7764, 239, 30393, 28090, 11271, 16868, 7665, 16647,\r
-  16766, 5279, 10395, 25534, 12164, 27990, 18017, 25066, 16574, 24482,\r
-  8649, 19472, 21369, 24882, 26644, 12151, 16551, 9409, 2151, 26823,\r
-  13347, 8517, 28200, 1238, 23101, 6506, 15019, 9150, 1650, 14142,\r
-  16910, 4659, 14203, 4142, 20321, 3347, 7306, 9521, 29706, 25407,\r
-  32720, 13123, 26216, 27050, 14914, 26645, 13239, 30127, 5277, 20227,\r
-  18740, 20904, 14759, 2630, 6273, 24508, 7608, 11371, 23370, 24312,\r
-  32634, 17923, 14889, 1697, 26093, 31645, 23239, 27593, 16302, 14321,\r
-  6469, 25889, 1912, 20062, 28890, 24846, 4587, 8599, 22461, 25087,\r
-  26764, 8857, 4677, 5373, 22030, 15328, 16718, 13956, 2000, 31962,\r
-  12256, 14737, 26790, 6556, 9227, 25852, 6364, 4820, 14101, 23304,\r
-  10104, 6654, 30936, 16185, 28864, 1499, 25189, 28261, 17916, 27423,\r
-  23533, 32014, 17021, 11626, 23010, 28655, 29150, 7290, 21849, 25301,\r
-  11146, 29087, 9139, 4528, 18302, 16751, 29052, 30698, 4177, 13754,\r
-  25747, 31223, 5745, 9153, 10635, 19758, 18607, 21154, 28754, 4567,\r
-  30206, 1559, 7184, 21381, 7287, 8544, 10834, 25510, 10657, 30334,\r
-  5480, 16984, 4080, 5538, 13835, 2430, 21899, 12517, 26692, 3603,\r
-  82, 26681, 30601, 11199, 800, 4512, 5672, 28328, 4173, 20892,\r
-  25577, 3979, 30072, 6118, 18414, 30219, 25731, 21602, 8671, 13641,\r
-  19934, 30803, 5700, 14004, 12297, 6092, 31282, 1827, 84, 16231,\r
-  8746, 31265, 4330, 21048, 6206, 6023, 6157, 1028, 32117, 1873,\r
-  15523, 17327, 6769, 28586, 19442, 10740, 25423, 31049, 31912, 16473,\r
-  29391, 28160, 25374, 13409, 16565, 9618, 31453, 19203, 5999, 13510,\r
-  26978, 10331, 3319, 4793, 24094, 16288, 763, 10360, 13249, 32598,\r
-  29244, 32462, 14008, 3524, 1332, 32347, 13556, 10665, 17915, 30182,\r
-  15086, 811, 25451, 23285, 8680, 8464, 20867, 30874, 21365, 9776,\r
-  18697, 143, 26171, 2858, 27251, 12933, 30712, 8279, 2056, 3514,\r
-  26819, 27644, 23363, 16586, 23445, 14532, 10616, 19399, 8199, 26733,\r
-  7097, 2187, 26973, 24257, 19963, 3405, 30404, 6344, 22901, 7539,\r
-  4312, 17468, 24137, 7335, 105, 27453, 20582, 14381, 25215, 2118,\r
-  2989, 14964, 32155, 5728, 29523, 15595, 31808, 29077, 8326, 11285,\r
-  12466, 7080, 25683, 20960, 17918, 14595, 8391, 23091, 570, 23025,\r
-  15700, 1478, 32270, 25613, 14967, 32566, 30068, 12283, 10392, 1625,\r
-  5563, 12117, 1586, 26063, 27858, 12008, 18739, 26329, 24003, 2337,\r
-  6054, 14190, 15998, 23746, 29583, 30348, 728, 7129, 24086, 23245,\r
-  6355, 1779, 13800, 10042, 23072, 26765, 21723, 25187, 14050, 9419,\r
-  12497, 944, 32181, 29037, 990, 2802, 25839, 18942, 16301, 13885,\r
-  14630, 29774, 20511, 18938, 21746, 10531, 28982, 7992, 17907, 13612,\r
-  7218, 27715, 17174, 9782, 20473, 31608, 22549, 22690, 14524, 17495,\r
-  27197, 30999, 31448, 6874, 31348, 20084, 9466, 26885, 18554, 24585,\r
-  3463, 9919, 15215, 19462, 7995, 992, 13206, 25139, 22800, 30859,\r
-  10584, 22242, 1377, 12222, 15756, 8739, 27727, 39, 7925, 24374,\r
-  1380, 26426, 26892, 16454, 27766, 14976, 24576, 27220, 7630, 818,\r
-  11772, 19825, 15754, 14342, 1448, 19760, 28224, 18761, 19954, 19803,\r
-  31460, 13102, 15118, 30437, 22508, 2662, 30907, 18720, 16305, 14064,\r
+  16236, 10287, 1695,  15701, 3733,  14428, 10599, 30290, 11740, 28944,\r
+  23529, 26673, 24147, 26283, 6744,  12898, 17790, 23856, 15098, 11052,\r
+  5463,  24638, 30272, 22338, 30101, 5955,  14903, 32664, 4654,  10732,\r
+  19743, 22900, 29467, 18656, 856,   29896, 347,   11949, 3206,  25791,\r
+  23866, 11522, 7149,  22166, 27091, 6688,  28701, 2733,  12756, 12939,\r
+  32212, 25566, 2433,  17157, 16928, 269,   4604,  11964, 32708, 5376,\r
+  451,   9667,  27613, 28785, 22138, 8127,  3525,  29282, 21483, 28387,\r
+  22072, 21169, 29771, 32542, 12725, 31468, 11710, 5522,  6695,  24934,\r
+  12574, 9289,  27589, 6795,  1528,  1571,  311,   5232,  10200, 14099,\r
+  23290, 12463, 2247,  23691, 22021, 12401, 7441,  12853, 13741, 9932,\r
+  21580, 12004, 1222,  25936, 9109,  30154, 4619,  5852,  1309,  26603,\r
+  3008,  31926, 4325,  27089, 32405, 475,   4805,  12674, 15310, 6292,\r
+  16819, 12463, 27297, 5706,  31810, 28462, 18655, 411,   11881, 27051,\r
+  24279, 1710,  17542, 18586, 10872, 1475,  20386, 879,   1461,  28686,\r
+  16119, 17426, 19502, 26309, 21167, 7821,  1036,  20600, 11247, 28936,\r
+  3628,  22689, 7700,  32760, 8577,  3452,  9533,  8851,  5555,  4120,\r
+  9737,  4999,  16652, 2734,  23202, 14827, 28053, 24883, 4346,  32374,\r
+  10620, 20521, 7764,  239,   30393, 28090, 11271, 16868, 7665,  16647,\r
+  16766, 5279,  10395, 25534, 12164, 27990, 18017, 25066, 16574, 24482,\r
+  8649,  19472, 21369, 24882, 26644, 12151, 16551, 9409,  2151,  26823,\r
+  13347, 8517,  28200, 1238,  23101, 6506,  15019, 9150,  1650,  14142,\r
+  16910, 4659,  14203, 4142,  20321, 3347,  7306,  9521,  29706, 25407,\r
+  32720, 13123, 26216, 27050, 14914, 26645, 13239, 30127, 5277,  20227,\r
+  18740, 20904, 14759, 2630,  6273,  24508, 7608,  11371, 23370, 24312,\r
+  32634, 17923, 14889, 1697,  26093, 31645, 23239, 27593, 16302, 14321,\r
+  6469,  25889, 1912,  20062, 28890, 24846, 4587,  8599,  22461, 25087,\r
+  26764, 8857,  4677,  5373,  22030, 15328, 16718, 13956, 2000,  31962,\r
+  12256, 14737, 26790, 6556,  9227,  25852, 6364,  4820,  14101, 23304,\r
+  10104, 6654,  30936, 16185, 28864, 1499,  25189, 28261, 17916, 27423,\r
+  23533, 32014, 17021, 11626, 23010, 28655, 29150, 7290,  21849, 25301,\r
+  11146, 29087, 9139,  4528,  18302, 16751, 29052, 30698, 4177,  13754,\r
+  25747, 31223, 5745,  9153,  10635, 19758, 18607, 21154, 28754, 4567,\r
+  30206, 1559,  7184,  21381, 7287,  8544,  10834, 25510, 10657, 30334,\r
+  5480,  16984, 4080,  5538,  13835, 2430,  21899, 12517, 26692, 3603,\r
+  82,    26681, 30601, 11199, 800,   4512,  5672,  28328, 4173,  20892,\r
+  25577, 3979,  30072, 6118,  18414, 30219, 25731, 21602, 8671,  13641,\r
+  19934, 30803, 5700,  14004, 12297, 6092,  31282, 1827,  84,    16231,\r
+  8746,  31265, 4330,  21048, 6206,  6023,  6157,  1028,  32117, 1873,\r
+  15523, 17327, 6769,  28586, 19442, 10740, 25423, 31049, 31912, 16473,\r
+  29391, 28160, 25374, 13409, 16565, 9618,  31453, 19203, 5999,  13510,\r
+  26978, 10331, 3319,  4793,  24094, 16288, 763,   10360, 13249, 32598,\r
+  29244, 32462, 14008, 3524,  1332,  32347, 13556, 10665, 17915, 30182,\r
+  15086, 811,   25451, 23285, 8680,  8464,  20867, 30874, 21365, 9776,\r
+  18697, 143,   26171, 2858,  27251, 12933, 30712, 8279,  2056,  3514,\r
+  26819, 27644, 23363, 16586, 23445, 14532, 10616, 19399, 8199,  26733,\r
+  7097,  2187,  26973, 24257, 19963, 3405,  30404, 6344,  22901, 7539,\r
+  4312,  17468, 24137, 7335,  105,   27453, 20582, 14381, 25215, 2118,\r
+  2989,  14964, 32155, 5728,  29523, 15595, 31808, 29077, 8326,  11285,\r
+  12466, 7080,  25683, 20960, 17918, 14595, 8391,  23091, 570,   23025,\r
+  15700, 1478,  32270, 25613, 14967, 32566, 30068, 12283, 10392, 1625,\r
+  5563,  12117, 1586,  26063, 27858, 12008, 18739, 26329, 24003, 2337,\r
+  6054,  14190, 15998, 23746, 29583, 30348, 728,   7129,  24086, 23245,\r
+  6355,  1779,  13800, 10042, 23072, 26765, 21723, 25187, 14050, 9419,\r
+  12497, 944,   32181, 29037, 990,   2802,  25839, 18942, 16301, 13885,\r
+  14630, 29774, 20511, 18938, 21746, 10531, 28982, 7992,  17907, 13612,\r
+  7218,  27715, 17174, 9782,  20473, 31608, 22549, 22690, 14524, 17495,\r
+  27197, 30999, 31448, 6874,  31348, 20084, 9466,  26885, 18554, 24585,\r
+  3463,  9919,  15215, 19462, 7995,  992,   13206, 25139, 22800, 30859,\r
+  10584, 22242, 1377,  12222, 15756, 8739,  27727, 39,    7925,  24374,\r
+  1380,  26426, 26892, 16454, 27766, 14976, 24576, 27220, 7630,  818,\r
+  11772, 19825, 15754, 14342, 1448,  19760, 28224, 18761, 19954, 19803,\r
+  31460, 13102, 15118, 30437, 22508, 2662,  30907, 18720, 16305, 14064,\r
   18889, 19248, 28185, 20787, 16600, 29120, 16243, 21834, 30306, 3315,\r
-  13986, 8351, 24572, 21149, 11902, 28091, 11480, 22708, 14967, 16988,\r
-  19343, 5121, 31356, 968, 32029, 12059, 26139, 9570, 6445, 19862,\r
-  21225, 9595, 26520, 3960, 14884, 19562, 13096, 26860, 407, 25055,\r
-  31137, 8763, 19390, 19572, 23810, 5111, 4907, 20357, 14856, 29562,\r
-  5416, 23362, 2036, 17295, 20382, 8962, 25998, 15726, 5685, 28123,\r
-  30570, 17902, 701, 21871, 31594, 17142, 17613, 26376, 13700, 25908,\r
-  5289, 23272, 6597, 14866, 19817, 21978, 22422, 6630, 29272, 26893,\r
-  10815, 18025, 9115, 17442, 4777, 19819, 17939, 19844, 24168, 965,\r
-  25220, 5368, 8184, 11406, 32758, 21621, 31815, 8338, 32091, 29493,\r
-  29044, 2559, 11891, 16140, 31447, 2146, 16365, 20473, 13889, 20690,\r
-  9935, 18939, 28293, 7787, 7959, 28965, 12087, 1791, 32162, 17397,\r
-  17843, 2055, 22862, 4066, 21345, 24544, 20316, 13364, 21816, 1844,\r
-  26392, 1816, 17537, 24246, 22715, 4340, 13534, 25874, 15248, 4600,\r
-  5002, 2339, 24406, 1526, 27618, 27751, 21734, 6771, 21797, 10673,\r
-  27157, 19198, 28024, 29726, 7388, 6080, 1581, 8778, 18870, 2645,\r
-  25924, 31172, 6474, 31962, 16434, 20159, 29002, 22343, 21474, 19466,\r
-  27803, 14079, 15866, 30530, 7862, 13478, 31583, 17734, 9806, 15411,\r
-  12283, 21227, 21299, 11078, 7102, 5617, 25462, 10683, 24802, 6710,\r
-  7118, 28799, 32628, 7978, 16186, 29346, 10768, 10627, 10728, 7342,\r
-  22508, 23858, 4950, 7736, 14359, 13205, 15287, 29108, 27139, 25070,\r
-  2200, 5774, 8002, 1044, 21699, 12662, 2701, 24424, 30563, 1787,\r
-  16394, 21003, 18026, 1115, 27343, 16974, 6192, 19097, 31650, 8810,\r
-  2140, 28625, 13570, 23666, 1032, 27337, 14444, 14981, 24864, 23752,\r
-  30935, 8008, 1291, 11691, 13953, 8851, 24206, 11829, 26605, 26219,\r
-  14061, 13479, 13356, 14385, 7763, 26512, 25181, 21016, 30579, 10983,\r
-  25200, 20701, 26224, 25431, 21295, 12722, 9978, 986, 10622, 27771,\r
-  3515, 6537, 23777, 32316, 14577, 18867, 15680, 30674, 13404, 30252,\r
-  21991, 25826, 5210, 31719, 465, 7952, 19537, 16327, 5414, 24945,\r
-  17485, 32179, 16386, 12354, 29162, 3561, 3704, 26842, 30837, 5268,\r
-  10711, 3549, 5198, 20384, 16171, 9139, 21904, 30413, 12039, 12600,\r
-  28148, 25090, 27266, 14517, 5619, 27109, 8576, 15632, 19755, 13992,\r
-  9779, 10047, 31236, 28965, 10721, 8194, 11411, 2606, 14055, 12754,\r
-  2239, 3102, 3070, 18196, 7074, 10932, 15549, 22675, 8242, 1314,\r
+  13986, 8351,  24572, 21149, 11902, 28091, 11480, 22708, 14967, 16988,\r
+  19343, 5121,  31356, 968,   32029, 12059, 26139, 9570,  6445,  19862,\r
+  21225, 9595,  26520, 3960,  14884, 19562, 13096, 26860, 407,   25055,\r
+  31137, 8763,  19390, 19572, 23810, 5111,  4907,  20357, 14856, 29562,\r
+  5416,  23362, 2036,  17295, 20382, 8962,  25998, 15726, 5685,  28123,\r
+  30570, 17902, 701,   21871, 31594, 17142, 17613, 26376, 13700, 25908,\r
+  5289,  23272, 6597,  14866, 19817, 21978, 22422, 6630,  29272, 26893,\r
+  10815, 18025, 9115,  17442, 4777,  19819, 17939, 19844, 24168, 965,\r
+  25220, 5368,  8184,  11406, 32758, 21621, 31815, 8338,  32091, 29493,\r
+  29044, 2559,  11891, 16140, 31447, 2146,  16365, 20473, 13889, 20690,\r
+  9935,  18939, 28293, 7787,  7959,  28965, 12087, 1791,  32162, 17397,\r
+  17843, 2055,  22862, 4066,  21345, 24544, 20316, 13364, 21816, 1844,\r
+  26392, 1816,  17537, 24246, 22715, 4340,  13534, 25874, 15248, 4600,\r
+  5002,  2339,  24406, 1526,  27618, 27751, 21734, 6771,  21797, 10673,\r
+  27157, 19198, 28024, 29726, 7388,  6080,  1581,  8778,  18870, 2645,\r
+  25924, 31172, 6474,  31962, 16434, 20159, 29002, 22343, 21474, 19466,\r
+  27803, 14079, 15866, 30530, 7862,  13478, 31583, 17734, 9806,  15411,\r
+  12283, 21227, 21299, 11078, 7102,  5617,  25462, 10683, 24802, 6710,\r
+  7118,  28799, 32628, 7978,  16186, 29346, 10768, 10627, 10728, 7342,\r
+  22508, 23858, 4950,  7736,  14359, 13205, 15287, 29108, 27139, 25070,\r
+  2200,  5774,  8002,  1044,  21699, 12662, 2701,  24424, 30563, 1787,\r
+  16394, 21003, 18026, 1115,  27343, 16974, 6192,  19097, 31650, 8810,\r
+  2140,  28625, 13570, 23666, 1032,  27337, 14444, 14981, 24864, 23752,\r
+  30935, 8008,  1291,  11691, 13953, 8851,  24206, 11829, 26605, 26219,\r
+  14061, 13479, 13356, 14385, 7763,  26512, 25181, 21016, 30579, 10983,\r
+  25200, 20701, 26224, 25431, 21295, 12722, 9978,  986,   10622, 27771,\r
+  3515,  6537,  23777, 32316, 14577, 18867, 15680, 30674, 13404, 30252,\r
+  21991, 25826, 5210,  31719, 465,   7952,  19537, 16327, 5414,  24945,\r
+  17485, 32179, 16386, 12354, 29162, 3561,  3704,  26842, 30837, 5268,\r
+  10711, 3549,  5198,  20384, 16171, 9139,  21904, 30413, 12039, 12600,\r
+  28148, 25090, 27266, 14517, 5619,  27109, 8576,  15632, 19755, 13992,\r
+  9779,  10047, 31236, 28965, 10721, 8194,  11411, 2606,  14055, 12754,\r
+  2239,  3102,  3070,  18196, 7074,  10932, 15549, 22675, 8242,  1314,\r
   15199, 24621, 30496, 20064, 12231, 25549, 22016, 20422, 16321, 11417,\r
   29099, 31194, 11403, 32364, 10209, 30567, 27028, 25478, 27699, 30415,\r
-  4227, 24706, 31776, 7585, 22139, 9353, 7807, 23150, 26269, 2502,\r
-  29213, 2265, 17871, 31257, 4006, 7150, 9148, 3088, 713, 17077,\r
+  4227,  24706, 31776, 7585,  22139, 9353,  7807,  23150, 26269, 2502,\r
+  29213, 2265,  17871, 31257, 4006,  7150,  9148,  3088,  713,   17077,\r
   15644, 27667, 24215, 15110, 13110, 26078, 28972, 18078, 31907, 8757,\r
-  23186, 30323, 21332, 27858, 2786, 16453, 17367, 5795, 27564, 4726,\r
+  23186, 30323, 21332, 27858, 2786,  16453, 17367, 5795,  27564, 4726,\r
   16853, 18482, 14489, 23067, 26080, 22629, 19279, 12115, 14443, 31591,\r
-  24213, 7128, 11802, 24038, 3256, 12243, 14653, 127, 3373, 22773,\r
-  5271, 26486, 30071, 12227, 11107, 29355, 332, 12081, 17049, 29129,\r
-  9715, 2675, 18285, 18625, 29936, 5392, 26392, 14455, 4579, 28984,\r
-  21468, 8122, 16302, 30807, 23362, 18554, 18646, 4586, 12711, 5429,\r
-  18220, 27794, 5878, 8883, 3756, 19814, 14519, 12787, 16293, 27022,\r
-  30025, 28261, 17434, 32270, 25707, 25690, 15464, 6623, 18690, 15288,\r
-  7978, 20036, 20502, 2802, 4186, 14683, 16669, 22071, 13241, 7922,\r
-  892, 3818, 32368, 925, 7499, 10067, 19447, 32261, 3928, 3732,\r
-  14902, 12931, 12911, 10462, 4330, 11502, 31193, 6116, 14411, 3249,\r
-  16163, 26512, 748, 14112, 31521, 29429, 20194, 1036, 4145, 5510,\r
-  16936, 6292, 2500, 31877, 9794, 25663, 29979, 11454, 10017, 29768,\r
-  14159, 4212, 31047, 4409, 1172, 8604, 11051, 23227, 23742, 1097,\r
-  9695, 21933, 12549, 9576, 8432, 8307, 5893, 12717, 3470, 16785,\r
-  11529, 30925, 15596, 17528, 5000, 4334, 17898, 6303, 8176, 20059,\r
-  28146, 26326, 11427, 25469, 6431, 20696, 10815, 15623, 1445, 20255,\r
-  22051, 28272, 22125, 8444, 14895, 17062, 12543, 742, 22986, 17665,\r
-  29349, 7955, 12330, 22133, 16589, 27717, 25552, 8973, 30896, 28391,\r
-  21329, 2964, 16945, 4184, 24412, 22421, 18952, 135, 5625, 17287,\r
-  26399, 21952, 8975, 16193, 12092, 24261, 10793, 28852, 16097, 23329,\r
-  28025, 20184, 14449, 3513, 26142, 26855, 16019, 23972, 12706, 11722,\r
-  28123, 31036, 30919, 18384, 6568, 12149, 13187, 24742, 20552, 29550,\r
-  28233, 24964, 27235, 15942, 29834, 932, 10646, 17201, 1148, 17656,\r
-  10846, 10699, 28698, 5404, 11576, 17068, 20332, 20106, 31494, 27196,\r
-  10248, 20493, 26805, 3528, 11737, 19064, 15901, 1750, 287, 5783,\r
-  1064, 16566, 3511, 10086, 32311, 23642, 28573, 27777, 21185, 18024,\r
-  175, 14556, 10045, 29580, 29619, 436, 13123, 14099, 8348, 2501,\r
-  3822, 26550, 26121, 19646, 16516, 18099, 17423, 16114, 19801, 23843,\r
-  5176, 13648, 20976, 17287, 715, 2453, 25956, 1956, 11598, 20160,\r
-  19462, 9361, 2634, 10694, 15688, 16654, 32334, 8840, 16602, 10263,\r
-  16950, 258, 26386, 12217, 32429, 2757, 24721, 549, 16625, 13479,\r
-  14628, 32003, 11479, 7353, 14824, 6920, 4110, 24697, 14002, 7115,\r
-  15015, 9033, 19117, 24020, 16597, 22816, 18501, 7926, 2546, 10624,\r
-  24644, 5856, 20675, 32424, 17467, 8174, 30973, 5386, 18468, 25157,\r
-  24072, 7935, 18245, 13598, 32514, 20666, 20568, 10850, 11271, 26746,\r
-  23784, 30840, 6320, 1796, 6142, 13914, 30681, 27729, 30717, 7663,\r
-  1192, 27780, 12235, 18581, 7371, 12575, 15153, 6652, 20480, 6773,\r
-  2693, 19771, 2267, 21859, 4486, 22557, 12996, 31035, 15751, 6332,\r
-  319, 16897, 5840, 338, 15472, 15066, 4417, 13899, 14046, 27841,\r
+  24213, 7128,  11802, 24038, 3256,  12243, 14653, 127,   3373,  22773,\r
+  5271,  26486, 30071, 12227, 11107, 29355, 332,   12081, 17049, 29129,\r
+  9715,  2675,  18285, 18625, 29936, 5392,  26392, 14455, 4579,  28984,\r
+  21468, 8122,  16302, 30807, 23362, 18554, 18646, 4586,  12711, 5429,\r
+  18220, 27794, 5878,  8883,  3756,  19814, 14519, 12787, 16293, 27022,\r
+  30025, 28261, 17434, 32270, 25707, 25690, 15464, 6623,  18690, 15288,\r
+  7978,  20036, 20502, 2802,  4186,  14683, 16669, 22071, 13241, 7922,\r
+  892,   3818,  32368, 925,   7499,  10067, 19447, 32261, 3928,  3732,\r
+  14902, 12931, 12911, 10462, 4330,  11502, 31193, 6116,  14411, 3249,\r
+  16163, 26512, 748,   14112, 31521, 29429, 20194, 1036,  4145,  5510,\r
+  16936, 6292,  2500,  31877, 9794,  25663, 29979, 11454, 10017, 29768,\r
+  14159, 4212,  31047, 4409,  1172,  8604,  11051, 23227, 23742, 1097,\r
+  9695,  21933, 12549, 9576,  8432,  8307,  5893,  12717, 3470,  16785,\r
+  11529, 30925, 15596, 17528, 5000,  4334,  17898, 6303,  8176,  20059,\r
+  28146, 26326, 11427, 25469, 6431,  20696, 10815, 15623, 1445,  20255,\r
+  22051, 28272, 22125, 8444,  14895, 17062, 12543, 742,   22986, 17665,\r
+  29349, 7955,  12330, 22133, 16589, 27717, 25552, 8973,  30896, 28391,\r
+  21329, 2964,  16945, 4184,  24412, 22421, 18952, 135,   5625,  17287,\r
+  26399, 21952, 8975,  16193, 12092, 24261, 10793, 28852, 16097, 23329,\r
+  28025, 20184, 14449, 3513,  26142, 26855, 16019, 23972, 12706, 11722,\r
+  28123, 31036, 30919, 18384, 6568,  12149, 13187, 24742, 20552, 29550,\r
+  28233, 24964, 27235, 15942, 29834, 932,   10646, 17201, 1148,  17656,\r
+  10846, 10699, 28698, 5404,  11576, 17068, 20332, 20106, 31494, 27196,\r
+  10248, 20493, 26805, 3528,  11737, 19064, 15901, 1750,  287,   5783,\r
+  1064,  16566, 3511,  10086, 32311, 23642, 28573, 27777, 21185, 18024,\r
+  175,   14556, 10045, 29580, 29619, 436,   13123, 14099, 8348,  2501,\r
+  3822,  26550, 26121, 19646, 16516, 18099, 17423, 16114, 19801, 23843,\r
+  5176,  13648, 20976, 17287, 715,   2453,  25956, 1956,  11598, 20160,\r
+  19462, 9361,  2634,  10694, 15688, 16654, 32334, 8840,  16602, 10263,\r
+  16950, 258,   26386, 12217, 32429, 2757,  24721, 549,   16625, 13479,\r
+  14628, 32003, 11479, 7353,  14824, 6920,  4110,  24697, 14002, 7115,\r
+  15015, 9033,  19117, 24020, 16597, 22816, 18501, 7926,  2546,  10624,\r
+  24644, 5856,  20675, 32424, 17467, 8174,  30973, 5386,  18468, 25157,\r
+  24072, 7935,  18245, 13598, 32514, 20666, 20568, 10850, 11271, 26746,\r
+  23784, 30840, 6320,  1796,  6142,  13914, 30681, 27729, 30717, 7663,\r
+  1192,  27780, 12235, 18581, 7371,  12575, 15153, 6652,  20480, 6773,\r
+  2693,  19771, 2267,  21859, 4486,  22557, 12996, 31035, 15751, 6332,\r
+  319,   16897, 5840,  338,   15472, 15066, 4417,  13899, 14046, 27841,\r
   20536, 21151, 20599, 25980, 25013, 18014, 10964, 10958, 13500, 909,\r
-  29375, 28143, 20219, 27952, 25330, 4921, 1453, 15528, 25634, 25124,\r
-  15806, 20799, 28220, 29044, 30512, 7682, 3823, 9137, 10173, 10703,\r
+  29375, 28143, 20219, 27952, 25330, 4921,  1453,  15528, 25634, 25124,\r
+  15806, 20799, 28220, 29044, 30512, 7682,  3823,  9137,  10173, 10703,\r
   14698, 18392, 10430, 21934, 17255, 12880, 15435, 23908, 13160, 25119,\r
-  28068, 17990, 17472, 1630, 20687, 12364, 16854, 30698, 25987, 15718,\r
-  8998, 31581, 8517, 787, 1416, 24381, 25809, 14895, 27957, 19059,\r
-  24763, 8460, 28423, 20222, 11606, 17349, 10112, 5352, 6613, 7887,\r
-  8974, 12665, 30384, 20433, 7053, 32428, 24394, 18614, 12046, 1759,\r
-  18128, 14592, 29655, 22734, 19556, 8543, 3499, 22466, 6779, 17794,\r
+  28068, 17990, 17472, 1630,  20687, 12364, 16854, 30698, 25987, 15718,\r
+  8998,  31581, 8517,  787,   1416,  24381, 25809, 14895, 27957, 19059,\r
+  24763, 8460,  28423, 20222, 11606, 17349, 10112, 5352,  6613,  7887,\r
+  8974,  12665, 30384, 20433, 7053,  32428, 24394, 18614, 12046, 1759,\r
+  18128, 14592, 29655, 22734, 19556, 8543,  3499,  22466, 6779,  17794,\r
   10315, 23558, 21891, 28717, 31548, 14235, 24010, 15756, 15051, 29484,\r
-  26779, 24519, 6735, 22340, 13482, 4566, 17326, 5567, 23985, 11415,\r
-  26658, 10111, 4956, 4637, 20029, 12896, 14179, 25419, 299, 2925,\r
-  9973, 13218, 1336, 10580, 13149, 12120, 13713, 6935, 3552, 26538,\r
-  12111, 22277, 10980, 14707, 28081, 30185, 24664, 508, 31657, 11905,\r
-  17231, 5654, 24219, 9521, 2286, 12134, 7777, 25593, 28297, 17409,\r
-  3730, 3749, 27913, 31801, 15620, 10051, 15249, 15030, 10639, 30426,\r
-  25953, 27336, 11028, 28249, 30458, 2299, 9662, 5070, 1666, 6636,\r
-  30344, 20440, 7019, 860, 14336, 12127, 14672, 31619, 17482, 28034,\r
-  4639, 678, 6247, 22993, 9085, 6892, 31928, 28349, 17254, 12910,\r
-  5821, 11340, 24596, 29581, 18467, 2834, 30499, 28552, 32510, 7004,\r
-  2034, 22350, 23379, 9390, 1356, 13968, 19929, 22896, 2632, 25883,\r
-  5120, 29412, 22125, 8805, 13619, 18779, 21786, 3941, 25946, 15529,\r
-  13349, 31400, 28836, 214, 19907, 12962, 5251, 8982, 27048, 21058,\r
-  27128, 23291, 6511, 15305, 17680, 31722, 13371, 13787, 11695, 6860,\r
-  13727, 24278, 21900, 15365, 955, 27236, 12157, 7594, 24744, 23884,\r
-  3061, 29166, 2839, 15246, 24266, 7646, 21044, 23726, 4668, 20559,\r
-  8401, 23120, 2868, 1300, 17344, 19717, 17097, 18548, 28544, 19301,\r
-  6408, 20187, 18717, 24414, 17653, 13519, 30289, 26059, 1485, 31526,\r
-  30959, 3144, 31118, 4982, 22913, 24901, 15545, 4302, 25904, 10842,\r
-  14167, 20643, 741, 29914, 15162, 12301, 25518, 5291, 22405, 8500,\r
-  4707, 1365, 1391, 13572, 9865, 24920, 4675, 27945, 7798, 25539,\r
-  27307, 27191, 9398, 10242, 11055, 18984, 17582, 7160, 6649, 19212,\r
-  21119, 22606, 28123, 1532, 2606, 21258, 1683, 22096, 10753, 8291,\r
-  31309, 16658, 3116, 13779, 7273, 28850, 940, 25455, 24959, 6394,\r
-  116, 30580, 17568, 22341, 16071, 16418, 4575, 25324, 1509, 24525,\r
-  14864, 8706, 14825, 10033, 5072, 30273, 17650, 27142, 11718, 22083,\r
-  7041, 468, 5672, 1782, 24610, 29449, 15232, 2378, 27215, 26697,\r
-  19120, 4140, 13457, 30725, 11827, 4792, 30184, 26703, 4775, 20138,\r
-  27245, 25836, 5256, 20246, 3894, 23467, 31551, 19290, 21882, 29430,\r
-  9563, 29264, 4341, 20135, 2590, 30152, 9614, 5917, 29755, 27189,\r
-  14392, 30350, 23006, 20134, 26390, 158, 30189, 20728, 19682, 14385,\r
-  1677, 8778, 21391, 10110, 21737, 28594, 6701, 15974, 27183, 21294,\r
-  29198, 27395, 5594, 20702, 14119, 8323, 10551, 13424, 1976, 16439,\r
-  3106, 25307, 7984, 6375, 3857, 29776, 22603, 28777, 7765, 10861,\r
-  6781, 19313, 15004, 5813, 13971, 26539, 23225, 1341, 30360, 7175,\r
-  6824, 32679, 25845, 4949, 23500, 31828, 3805, 5393, 14972, 3542,\r
-  17896, 20608, 31934, 9892, 9470, 24060, 24146, 17682, 23671, 27275,\r
-  24051, 7040, 2432, 16823, 28633, 2257, 7361, 10650, 14722, 29983,\r
-  5181, 17721, 15026, 26284, 3193, 28947, 1977, 25372, 27872, 19961,\r
-  30964, 28898, 13158, 28191, 29590, 19705, 9068, 22644, 12200, 10452,\r
-  23523, 22063, 8015, 1175, 6325, 16042, 23374, 31111, 9056, 13684,\r
-  14539, 2239, 14052, 3746, 27734, 16934, 23264, 19813, 24103, 22429,\r
-  31224, 28898, 5031, 28797, 14201, 829, 21043, 20800, 18496, 7927,\r
-  24348, 11134, 21208, 24187, 242, 10780, 6882, 27123, 9730, 3520,\r
-  31674, 5984, 21533, 28039, 30295, 20714, 17819, 28667, 22131, 13684,\r
-  22432, 4159, 13036, 10100, 11678, 17293, 19819, 15874, 11803, 4835,\r
-  5443, 19503, 15541, 31992, 20892, 29335, 21859, 13429, 14032, 28474,\r
-  27901, 3682, 27413, 8071, 15103, 13534, 15965, 26810, 20618, 29204,\r
-  6522, 31336, 8363, 10090, 26758, 8024, 24032, 17659, 1154, 4245,\r
-  20696, 21832, 24637, 32449, 3195, 28970, 31863, 17836, 9002, 12300,\r
+  26779, 24519, 6735,  22340, 13482, 4566,  17326, 5567,  23985, 11415,\r
+  26658, 10111, 4956,  4637,  20029, 12896, 14179, 25419, 299,   2925,\r
+  9973,  13218, 1336,  10580, 13149, 12120, 13713, 6935,  3552,  26538,\r
+  12111, 22277, 10980, 14707, 28081, 30185, 24664, 508,   31657, 11905,\r
+  17231, 5654,  24219, 9521,  2286,  12134, 7777,  25593, 28297, 17409,\r
+  3730,  3749,  27913, 31801, 15620, 10051, 15249, 15030, 10639, 30426,\r
+  25953, 27336, 11028, 28249, 30458, 2299,  9662,  5070,  1666,  6636,\r
+  30344, 20440, 7019,  860,   14336, 12127, 14672, 31619, 17482, 28034,\r
+  4639,  678,   6247,  22993, 9085,  6892,  31928, 28349, 17254, 12910,\r
+  5821,  11340, 24596, 29581, 18467, 2834,  30499, 28552, 32510, 7004,\r
+  2034,  22350, 23379, 9390,  1356,  13968, 19929, 22896, 2632,  25883,\r
+  5120,  29412, 22125, 8805,  13619, 18779, 21786, 3941,  25946, 15529,\r
+  13349, 31400, 28836, 214,   19907, 12962, 5251,  8982,  27048, 21058,\r
+  27128, 23291, 6511,  15305, 17680, 31722, 13371, 13787, 11695, 6860,\r
+  13727, 24278, 21900, 15365, 955,   27236, 12157, 7594,  24744, 23884,\r
+  3061,  29166, 2839,  15246, 24266, 7646,  21044, 23726, 4668,  20559,\r
+  8401,  23120, 2868,  1300,  17344, 19717, 17097, 18548, 28544, 19301,\r
+  6408,  20187, 18717, 24414, 17653, 13519, 30289, 26059, 1485,  31526,\r
+  30959, 3144,  31118, 4982,  22913, 24901, 15545, 4302,  25904, 10842,\r
+  14167, 20643, 741,   29914, 15162, 12301, 25518, 5291,  22405, 8500,\r
+  4707,  1365,  1391,  13572, 9865,  24920, 4675,  27945, 7798,  25539,\r
+  27307, 27191, 9398,  10242, 11055, 18984, 17582, 7160,  6649,  19212,\r
+  21119, 22606, 28123, 1532,  2606,  21258, 1683,  22096, 10753, 8291,\r
+  31309, 16658, 3116,  13779, 7273,  28850, 940,   25455, 24959, 6394,\r
+  116,   30580, 17568, 22341, 16071, 16418, 4575,  25324, 1509,  24525,\r
+  14864, 8706,  14825, 10033, 5072,  30273, 17650, 27142, 11718, 22083,\r
+  7041,  468,   5672,  1782,  24610, 29449, 15232, 2378,  27215, 26697,\r
+  19120, 4140,  13457, 30725, 11827, 4792,  30184, 26703, 4775,  20138,\r
+  27245, 25836, 5256,  20246, 3894,  23467, 31551, 19290, 21882, 29430,\r
+  9563,  29264, 4341,  20135, 2590,  30152, 9614,  5917,  29755, 27189,\r
+  14392, 30350, 23006, 20134, 26390, 158,   30189, 20728, 19682, 14385,\r
+  1677,  8778,  21391, 10110, 21737, 28594, 6701,  15974, 27183, 21294,\r
+  29198, 27395, 5594,  20702, 14119, 8323,  10551, 13424, 1976,  16439,\r
+  3106,  25307, 7984,  6375,  3857,  29776, 22603, 28777, 7765,  10861,\r
+  6781,  19313, 15004, 5813,  13971, 26539, 23225, 1341,  30360, 7175,\r
+  6824,  32679, 25845, 4949,  23500, 31828, 3805,  5393,  14972, 3542,\r
+  17896, 20608, 31934, 9892,  9470,  24060, 24146, 17682, 23671, 27275,\r
+  24051, 7040,  2432,  16823, 28633, 2257,  7361,  10650, 14722, 29983,\r
+  5181,  17721, 15026, 26284, 3193,  28947, 1977,  25372, 27872, 19961,\r
+  30964, 28898, 13158, 28191, 29590, 19705, 9068,  22644, 12200, 10452,\r
+  23523, 22063, 8015,  1175,  6325,  16042, 23374, 31111, 9056,  13684,\r
+  14539, 2239,  14052, 3746,  27734, 16934, 23264, 19813, 24103, 22429,\r
+  31224, 28898, 5031,  28797, 14201, 829,   21043, 20800, 18496, 7927,\r
+  24348, 11134, 21208, 24187, 242,   10780, 6882,  27123, 9730,  3520,\r
+  31674, 5984,  21533, 28039, 30295, 20714, 17819, 28667, 22131, 13684,\r
+  22432, 4159,  13036, 10100, 11678, 17293, 19819, 15874, 11803, 4835,\r
+  5443,  19503, 15541, 31992, 20892, 29335, 21859, 13429, 14032, 28474,\r
+  27901, 3682,  27413, 8071,  15103, 13534, 15965, 26810, 20618, 29204,\r
+  6522,  31336, 8363,  10090, 26758, 8024,  24032, 17659, 1154,  4245,\r
+  20696, 21832, 24637, 32449, 3195,  28970, 31863, 17836, 9002,  12300,\r
   26439, 32294, 16712, 26710, 19130, 25105, 20729, 21548, 20157, 14010,\r
-  2857, 28249, 21053, 12649, 6609, 7046, 16268, 2614, 12149, 29616,\r
-  7, 12575, 14322, 16345, 21238, 22872, 1654, 32765, 2995, 20194,\r
-  9424, 3399, 31503, 19039, 10218, 11397, 2033, 14117, 11667, 9434,\r
-  15168, 8081, 26498, 11954, 17155, 13213, 22424, 20219, 12487, 7605,\r
-  8550, 29331, 30529, 6599, 5359, 24060, 27445, 666, 22191, 17751,\r
-  19351, 18784, 18652, 8336, 5359, 2958, 6635, 4054, 9218, 15083,\r
-  7254, 25678, 27566, 3047, 19357, 8456, 16918, 7727, 8843, 2098,\r
-  2303, 4990, 9914, 2187, 13690, 2230, 19801, 7963, 31428, 9519,\r
-  7469, 290, 7274, 13391, 12758, 8782, 11184, 32091, 1108, 27440,\r
-  13364, 19852, 7369, 13297, 7119, 26726, 4480, 22337, 14780, 21061,\r
-  30511, 29073, 26876, 10553, 9849, 8322, 6648, 19, 31415, 22173,\r
-  10089, 28608, 28152, 5956, 29301, 21206, 13894, 12008, 2586, 24429,\r
-  18476, 15229, 25040, 4912, 25205, 6443, 23402, 9652, 1845, 1863,\r
-  10302, 29960, 1550, 6529, 17797, 8333, 31660, 18783, 6149, 17927,\r
-  27282, 15338, 27373, 5365, 20761, 4007, 22016, 11294, 24757, 18120,\r
-  20213, 30061, 14971, 8612, 27166, 29694, 21728, 32101, 3657, 14457,\r
-  28356, 2816, 8164, 28575, 13231, 29291, 26468, 16162, 30042, 13834,\r
-  14055, 25786, 7793, 27242, 4887, 19317, 17047, 5681, 25426, 2895,\r
-  28587, 20053, 27913, 1794, 9289, 25229, 7782, 7199, 3988, 11781,\r
-  27698, 6494, 32307, 24662, 18165, 28466, 6298, 21173, 27487, 20129,\r
-  22155, 15722, 4582, 10835, 19420, 24965, 16817, 19945, 12922, 31436,\r
-  19125, 32656, 21934, 3575, 11038, 24533, 17055, 26400, 25584, 31675,\r
-  25113, 23669, 238, 17674, 24460, 10544, 22459, 25835, 344, 29897,\r
-  16959, 7346, 22087, 23145, 22604, 10491, 23643, 1187, 27777, 23288,\r
-  1227, 12639, 20591, 23561, 14664, 12822, 9211, 20365, 18052, 15429,\r
-  13315, 18169, 20469, 7707, 11333, 15399, 12503, 11125, 8316, 1520,\r
-  28272, 30477, 12491, 31484, 8087, 11246, 19807, 14041, 28023, 6956,\r
-  23889, 13643, 4497, 20945, 19657, 14307, 29952, 19226, 18025, 10707,\r
-  21761, 4836, 7145, 30209, 4274, 27745, 8702, 858, 1050, 20751,\r
-  897, 19305, 5226, 23531, 20429, 16168, 20866, 29922, 18537, 28182,\r
-  20663, 20616, 12775, 9097, 9428, 6156, 11275, 28230, 5982, 19820,\r
-  21808, 17999, 1821, 16357, 15592, 17660, 4055, 9390, 27107, 9037,\r
-  24415, 10213, 30482, 29311, 23503, 2506, 3083, 17117, 32529, 7211,\r
-  13488, 11481, 2980, 13343, 23563, 28763, 32412, 25591, 28285, 7769,\r
-  25323, 4466, 26392, 168, 27104, 15408, 19529, 13330, 27885, 2153,\r
-  24506, 10408, 15533, 25055, 1398, 31833, 24869, 19217, 9807, 25540,\r
-  12107, 11442, 4477, 5451, 22468, 14681, 8583, 27241, 21234, 14714,\r
-  10343, 11077, 20014, 21397, 26345, 14471, 32338, 9389, 4948, 1898,\r
-  31611, 15612, 13132, 9234, 2573, 21733, 19703, 11809, 29943, 20010,\r
-  13151, 901, 23864, 21855, 29207, 3475, 8866, 14239, 7202, 25690,\r
-  18909, 16509, 528, 15409, 944, 13373, 4970, 20883, 14716, 14917,\r
+  2857,  28249, 21053, 12649, 6609,  7046,  16268, 2614,  12149, 29616,\r
+  7,     12575, 14322, 16345, 21238, 22872, 1654,  32765, 2995,  20194,\r
+  9424,  3399,  31503, 19039, 10218, 11397, 2033,  14117, 11667, 9434,\r
+  15168, 8081,  26498, 11954, 17155, 13213, 22424, 20219, 12487, 7605,\r
+  8550,  29331, 30529, 6599,  5359,  24060, 27445, 666,   22191, 17751,\r
+  19351, 18784, 18652, 8336,  5359,  2958,  6635,  4054,  9218,  15083,\r
+  7254,  25678, 27566, 3047,  19357, 8456,  16918, 7727,  8843,  2098,\r
+  2303,  4990,  9914,  2187,  13690, 2230,  19801, 7963,  31428, 9519,\r
+  7469,  290,   7274,  13391, 12758, 8782,  11184, 32091, 1108,  27440,\r
+  13364, 19852, 7369,  13297, 7119,  26726, 4480,  22337, 14780, 21061,\r
+  30511, 29073, 26876, 10553, 9849,  8322,  6648,  19,    31415, 22173,\r
+  10089, 28608, 28152, 5956,  29301, 21206, 13894, 12008, 2586,  24429,\r
+  18476, 15229, 25040, 4912,  25205, 6443,  23402, 9652,  1845,  1863,\r
+  10302, 29960, 1550,  6529,  17797, 8333,  31660, 18783, 6149,  17927,\r
+  27282, 15338, 27373, 5365,  20761, 4007,  22016, 11294, 24757, 18120,\r
+  20213, 30061, 14971, 8612,  27166, 29694, 21728, 32101, 3657,  14457,\r
+  28356, 2816,  8164,  28575, 13231, 29291, 26468, 16162, 30042, 13834,\r
+  14055, 25786, 7793,  27242, 4887,  19317, 17047, 5681,  25426, 2895,\r
+  28587, 20053, 27913, 1794,  9289,  25229, 7782,  7199,  3988,  11781,\r
+  27698, 6494,  32307, 24662, 18165, 28466, 6298,  21173, 27487, 20129,\r
+  22155, 15722, 4582,  10835, 19420, 24965, 16817, 19945, 12922, 31436,\r
+  19125, 32656, 21934, 3575,  11038, 24533, 17055, 26400, 25584, 31675,\r
+  25113, 23669, 238,   17674, 24460, 10544, 22459, 25835, 344,   29897,\r
+  16959, 7346,  22087, 23145, 22604, 10491, 23643, 1187,  27777, 23288,\r
+  1227,  12639, 20591, 23561, 14664, 12822, 9211,  20365, 18052, 15429,\r
+  13315, 18169, 20469, 7707,  11333, 15399, 12503, 11125, 8316,  1520,\r
+  28272, 30477, 12491, 31484, 8087,  11246, 19807, 14041, 28023, 6956,\r
+  23889, 13643, 4497,  20945, 19657, 14307, 29952, 19226, 18025, 10707,\r
+  21761, 4836,  7145,  30209, 4274,  27745, 8702,  858,   1050,  20751,\r
+  897,   19305, 5226,  23531, 20429, 16168, 20866, 29922, 18537, 28182,\r
+  20663, 20616, 12775, 9097,  9428,  6156,  11275, 28230, 5982,  19820,\r
+  21808, 17999, 1821,  16357, 15592, 17660, 4055,  9390,  27107, 9037,\r
+  24415, 10213, 30482, 29311, 23503, 2506,  3083,  17117, 32529, 7211,\r
+  13488, 11481, 2980,  13343, 23563, 28763, 32412, 25591, 28285, 7769,\r
+  25323, 4466,  26392, 168,   27104, 15408, 19529, 13330, 27885, 2153,\r
+  24506, 10408, 15533, 25055, 1398,  31833, 24869, 19217, 9807,  25540,\r
+  12107, 11442, 4477,  5451,  22468, 14681, 8583,  27241, 21234, 14714,\r
+  10343, 11077, 20014, 21397, 26345, 14471, 32338, 9389,  4948,  1898,\r
+  31611, 15612, 13132, 9234,  2573,  21733, 19703, 11809, 29943, 20010,\r
+  13151, 901,   23864, 21855, 29207, 3475,  8866,  14239, 7202,  25690,\r
+  18909, 16509, 528,   15409, 944,   13373, 4970,  20883, 14716, 14917,\r
   28496, 18221, 17161, 19406, 26721, 10804, 10629, 31455, 32731, 4348,\r
-  7114, 9596, 7171, 1991, 30688, 26907, 32200, 16347, 3523, 27223,\r
+  7114,  9596,  7171,  1991,  30688, 26907, 32200, 16347, 3523,  27223,\r
   14755, 13527, 32614, 17640, 14273, 15430, 25079, 14291, 32612, 13173,\r
-  1125, 25054, 20871, 16258, 32544, 8775, 22209, 21430, 28960, 29109,\r
-  25707, 29204, 3624, 18287, 7429, 23090, 25164, 24268, 28630, 6728,\r
-  28337, 28907, 15315, 13959, 916, 13987, 6594, 23212, 31629, 18109,\r
-  4511, 18900, 15381, 9313, 16191, 146, 8007, 4559, 10803, 15679,\r
-  10979, 31568, 21743, 25233, 14488, 3691, 18220, 26735, 29571, 20827,\r
-  6026, 20228, 20211, 20161, 14458, 18451, 23151, 10647, 3163, 2698,\r
-  5882, 11621, 1251, 1113, 12693, 11959, 20929, 24196, 18182, 20430,\r
-  25216, 1911, 5336, 32150, 16303, 14235, 15267, 14552, 32575, 9254,\r
-  30349, 32689, 22572, 21559, 27665, 27459, 6496, 19490, 31743, 21930,\r
-  2004, 776, 11972, 7217, 26616, 22188, 10732, 20934, 13909, 29057,\r
-  19941, 30124, 21360, 22280, 24838, 624, 9970, 2648, 27599, 26910,\r
-  32263, 766, 10867, 19636, 10500, 25608, 14227, 4567, 7244, 10589,\r
-  21581, 5829, 6260, 16208, 29045, 10123, 7589, 14452, 24098, 632,\r
-  11842, 5553, 16237, 209, 9419, 21655, 13685, 14278, 8450, 14323,\r
-  20903, 9637, 20556, 32416, 16956, 16206, 5465, 31904, 22274, 29159,\r
+  1125,  25054, 20871, 16258, 32544, 8775,  22209, 21430, 28960, 29109,\r
+  25707, 29204, 3624,  18287, 7429,  23090, 25164, 24268, 28630, 6728,\r
+  28337, 28907, 15315, 13959, 916,   13987, 6594,  23212, 31629, 18109,\r
+  4511,  18900, 15381, 9313,  16191, 146,   8007,  4559,  10803, 15679,\r
+  10979, 31568, 21743, 25233, 14488, 3691,  18220, 26735, 29571, 20827,\r
+  6026,  20228, 20211, 20161, 14458, 18451, 23151, 10647, 3163,  2698,\r
+  5882,  11621, 1251,  1113,  12693, 11959, 20929, 24196, 18182, 20430,\r
+  25216, 1911,  5336,  32150, 16303, 14235, 15267, 14552, 32575, 9254,\r
+  30349, 32689, 22572, 21559, 27665, 27459, 6496,  19490, 31743, 21930,\r
+  2004,  776,   11972, 7217,  26616, 22188, 10732, 20934, 13909, 29057,\r
+  19941, 30124, 21360, 22280, 24838, 624,   9970,  2648,  27599, 26910,\r
+  32263, 766,   10867, 19636, 10500, 25608, 14227, 4567,  7244,  10589,\r
+  21581, 5829,  6260,  16208, 29045, 10123, 7589,  14452, 24098, 632,\r
+  11842, 5553,  16237, 209,   9419,  21655, 13685, 14278, 8450,  14323,\r
+  20903, 9637,  20556, 32416, 16956, 16206, 5465,  31904, 22274, 29159,\r
   21255, 19051, 17248, 27857, 24196, 32391, 16788, 18394, 23731, 9561,\r
-  31552, 22964, 3794, 27451, 23333, 21158, 21081, 11471, 11310, 28545,\r
-  22565, 24978, 10672, 22742, 22229, 5300, 25840, 614, 15477, 24615,\r
-  9190, 7898, 9050, 7670, 7488, 31668, 3660, 17368, 13738, 22918,\r
-  12267, 7429, 8781, 5217, 16715, 22088, 5269, 12433, 11234, 4181,\r
-  21304, 8071, 2724, 27742, 25716, 20759, 18028, 18145, 11672, 25828,\r
-  20894, 5316, 11205, 4120, 18186, 5795, 10742, 2904, 28692, 22121,\r
-  6206, 7415, 30226, 8989, 26705, 4969, 17142, 32511, 4934, 17403,\r
-  21805, 13268, 11419, 25026, 2759, 382, 9850, 16593, 10199, 6863,\r
-  11066, 22959, 7197, 25759, 12329, 8457, 19426, 11036, 9609, 1955,\r
-  24612, 16738, 26584, 13972, 25075, 16204, 22101, 23475, 9499, 20873,\r
-  12991, 6733, 17923, 20466, 11872, 29721, 16085, 3610, 18506, 15981,\r
-  22495, 6695, 24801, 30641, 30522, 24033, 9881, 4373, 5033, 22025,\r
-  16385, 127, 20163, 21484, 22273, 11975, 31317, 32056, 26975, 5671,\r
-  3330, 32269, 648, 9453, 18988, 8535, 17038, 14451, 8472, 17244,\r
-  22125, 17489, 1868, 21137, 17810, 31185, 21052, 21170, 14494, 932,\r
-  21542, 5649, 7527, 10707, 16443, 8495, 19519, 29176, 6655, 27785,\r
-  4730, 4013, 13298, 30900, 17962, 14661, 368, 26796, 18221, 13498,\r
-  16342, 5738, 4458, 12519, 15078, 21940, 17495, 16119, 12397, 22841,\r
-  17343, 30, 5922, 28125, 21954, 23431, 19666, 82, 25117, 20621,\r
-  28602, 8424, 13995, 14637, 26421, 31142, 29996, 4283, 24471, 27289,\r
-  3654, 4821, 15704, 16492, 28105, 18070, 19317, 14649, 15415, 18955,\r
-  10515, 19359, 22916, 29163, 14949, 25621, 29978, 4482, 8401, 3197,\r
-  26400, 32495, 32334, 12797, 12028, 10127, 2065, 32010, 15126, 18617,\r
-  11368, 28613, 24031, 8364, 20454, 16011, 5139, 11205, 26048, 5831,\r
-  59, 16886, 26487, 18443, 16245, 10355, 28599, 864, 31607, 27566,\r
-  31872, 9434, 24018, 5510, 7299, 15215, 18548, 5051, 3023, 17160,\r
-  30577, 25254, 940, 17625, 28675, 20519, 16839, 20974, 24783, 27358,\r
-  2704, 3079, 22377, 29086, 10977, 12454, 28443, 22302, 15584, 23142,\r
-  23778, 11762, 13350, 27790, 31930, 4282, 29985, 23782, 17435, 23194,\r
+  31552, 22964, 3794,  27451, 23333, 21158, 21081, 11471, 11310, 28545,\r
+  22565, 24978, 10672, 22742, 22229, 5300,  25840, 614,   15477, 24615,\r
+  9190,  7898,  9050,  7670,  7488,  31668, 3660,  17368, 13738, 22918,\r
+  12267, 7429,  8781,  5217,  16715, 22088, 5269,  12433, 11234, 4181,\r
+  21304, 8071,  2724,  27742, 25716, 20759, 18028, 18145, 11672, 25828,\r
+  20894, 5316,  11205, 4120,  18186, 5795,  10742, 2904,  28692, 22121,\r
+  6206,  7415,  30226, 8989,  26705, 4969,  17142, 32511, 4934,  17403,\r
+  21805, 13268, 11419, 25026, 2759,  382,   9850,  16593, 10199, 6863,\r
+  11066, 22959, 7197,  25759, 12329, 8457,  19426, 11036, 9609,  1955,\r
+  24612, 16738, 26584, 13972, 25075, 16204, 22101, 23475, 9499,  20873,\r
+  12991, 6733,  17923, 20466, 11872, 29721, 16085, 3610,  18506, 15981,\r
+  22495, 6695,  24801, 30641, 30522, 24033, 9881,  4373,  5033,  22025,\r
+  16385, 127,   20163, 21484, 22273, 11975, 31317, 32056, 26975, 5671,\r
+  3330,  32269, 648,   9453,  18988, 8535,  17038, 14451, 8472,  17244,\r
+  22125, 17489, 1868,  21137, 17810, 31185, 21052, 21170, 14494, 932,\r
+  21542, 5649,  7527,  10707, 16443, 8495,  19519, 29176, 6655,  27785,\r
+  4730,  4013,  13298, 30900, 17962, 14661, 368,   26796, 18221, 13498,\r
+  16342, 5738,  4458,  12519, 15078, 21940, 17495, 16119, 12397, 22841,\r
+  17343, 30,    5922,  28125, 21954, 23431, 19666, 82,    25117, 20621,\r
+  28602, 8424,  13995, 14637, 26421, 31142, 29996, 4283,  24471, 27289,\r
+  3654,  4821,  15704, 16492, 28105, 18070, 19317, 14649, 15415, 18955,\r
+  10515, 19359, 22916, 29163, 14949, 25621, 29978, 4482,  8401,  3197,\r
+  26400, 32495, 32334, 12797, 12028, 10127, 2065,  32010, 15126, 18617,\r
+  11368, 28613, 24031, 8364,  20454, 16011, 5139,  11205, 26048, 5831,\r
+  59,    16886, 26487, 18443, 16245, 10355, 28599, 864,   31607, 27566,\r
+  31872, 9434,  24018, 5510,  7299,  15215, 18548, 5051,  3023,  17160,\r
+  30577, 25254, 940,   17625, 28675, 20519, 16839, 20974, 24783, 27358,\r
+  2704,  3079,  22377, 29086, 10977, 12454, 28443, 22302, 15584, 23142,\r
+  23778, 11762, 13350, 27790, 31930, 4282,  29985, 23782, 17435, 23194,\r
   31670, 20426, 15812, 17386, 21803, 14972, 29367, 14126, 28997, 32703,\r
-  25733, 29256, 3757, 15009, 31947, 18412, 18072, 11160, 5629, 5461,\r
-  31655, 31696, 354, 16438, 12300, 19140, 11872, 20724, 1775, 14860,\r
-  22266, 32018, 29968, 27509, 21911, 13805, 25773, 9559, 2053, 4009,\r
-  20646, 4387, 25533, 5227, 6879, 18492, 8041, 22472, 8678, 8968,\r
-  5539, 24190, 22998, 32326, 17664, 11874, 27771, 27298, 4429, 6810,\r
-  9398, 31366, 10776, 8204, 10531, 8756, 14963, 26134, 18938, 24082,\r
-  17908, 14208, 26163, 4932, 22272, 1967, 11246, 24192, 25161, 22555,\r
-  14353, 17694, 918, 4611, 22835, 31855, 30659, 10335, 31161, 15184,\r
-  30728, 5654, 30014, 18943, 23166, 3185, 23865, 17453, 7134, 26063,\r
-  28889, 16724, 13964, 12443, 19508, 22346, 27349, 26236, 4769, 11031,\r
-  23669, 9163, 6242, 1028, 10589, 29514, 20359, 5364, 23987, 531,\r
+  25733, 29256, 3757,  15009, 31947, 18412, 18072, 11160, 5629,  5461,\r
+  31655, 31696, 354,   16438, 12300, 19140, 11872, 20724, 1775,  14860,\r
+  22266, 32018, 29968, 27509, 21911, 13805, 25773, 9559,  2053,  4009,\r
+  20646, 4387,  25533, 5227,  6879,  18492, 8041,  22472, 8678,  8968,\r
+  5539,  24190, 22998, 32326, 17664, 11874, 27771, 27298, 4429,  6810,\r
+  9398,  31366, 10776, 8204,  10531, 8756,  14963, 26134, 18938, 24082,\r
+  17908, 14208, 26163, 4932,  22272, 1967,  11246, 24192, 25161, 22555,\r
+  14353, 17694, 918,   4611,  22835, 31855, 30659, 10335, 31161, 15184,\r
+  30728, 5654,  30014, 18943, 23166, 3185,  23865, 17453, 7134,  26063,\r
+  28889, 16724, 13964, 12443, 19508, 22346, 27349, 26236, 4769,  11031,\r
+  23669, 9163,  6242,  1028,  10589, 29514, 20359, 5364,  23987, 531,\r
   31758, 28663, 26905, 20430, 29519, 22557, 31026, 12071, 27288, 25992,\r
-  23906, 10880, 6420, 12229, 22486, 8418, 12529, 29277, 32709, 12090,\r
-  29633, 24486, 6389, 14786, 26145, 5599, 1152, 10685, 26265, 27260,\r
-  11992, 13159, 11204, 32703, 7945, 14380, 28081, 22664, 2878, 6424,\r
-  16008, 24174, 5767, 3471, 22129, 3598, 7129, 21054, 22193, 15779,\r
-  10839, 17489, 18454, 12760, 5839, 15590, 22678, 29914, 18056, 16578,\r
-  7219, 9136, 5947, 22595, 21794, 9679, 2143, 9110, 1835, 745,\r
-  2473, 32554, 23123, 19207, 4820, 19557, 4281, 17623, 26782, 12949,\r
-  5054, 22087, 13075, 27689, 23656, 23378, 18701, 29729, 15113, 24346,\r
+  23906, 10880, 6420,  12229, 22486, 8418,  12529, 29277, 32709, 12090,\r
+  29633, 24486, 6389,  14786, 26145, 5599,  1152,  10685, 26265, 27260,\r
+  11992, 13159, 11204, 32703, 7945,  14380, 28081, 22664, 2878,  6424,\r
+  16008, 24174, 5767,  3471,  22129, 3598,  7129,  21054, 22193, 15779,\r
+  10839, 17489, 18454, 12760, 5839,  15590, 22678, 29914, 18056, 16578,\r
+  7219,  9136,  5947,  22595, 21794, 9679,  2143,  9110,  1835,  745,\r
+  2473,  32554, 23123, 19207, 4820,  19557, 4281,  17623, 26782, 12949,\r
+  5054,  22087, 13075, 27689, 23656, 23378, 18701, 29729, 15113, 24346,\r
   21756, 10179, 16923, 27448, 14051, 12432, 22639, 24912, 18339, 19062,\r
-  13959, 4840, 24956, 14919, 21312, 2938, 20945, 2154, 947, 16583,\r
-  6187, 21457, 21086, 7535, 5761, 20778, 20863, 6591, 5815, 19034,\r
-  27841, 22218, 18788, 12839, 32282, 28603, 8664, 8244, 10740, 30057,\r
-  13150, 18739, 18059, 18476, 29630, 18262, 21142, 17392, 1798, 18182,\r
-  16169, 29319, 30858, 27608, 4314, 14404, 1322, 445, 7203, 11973,\r
-  23251, 20089, 24839, 8720, 29001, 5974, 18936, 25570, 24611, 12057,\r
-  20985, 26947, 22039, 8245, 22016, 26206, 5495, 18239, 5534, 23696,\r
-  6652, 29090, 9953, 20159, 19395, 21652, 24954, 4077, 25493, 28744,\r
-  1307, 24588, 25707, 13157, 7971, 19220, 20017, 29368, 29565, 32340,\r
-  28107, 2341, 27845, 2053, 28246, 13284, 22445, 13605, 4016, 32490,\r
-  28064, 387, 9786, 21924, 29349, 19990, 18396, 3051, 27269, 20882,\r
-  19018, 29493, 10544, 30525, 30342, 20488, 16989, 8191, 5543, 17333,\r
-  7281, 31161, 15064, 32322, 10914, 24792, 28323, 19624, 4700, 42,\r
-  8048, 22335, 16355, 8944, 31560, 9334, 11835, 27956, 5855, 13255,\r
-  26181, 28253, 1490, 17642, 31018, 16896, 18477, 8009, 31228, 13049,\r
-  12592, 28085, 15003, 5307, 11091, 599, 20438, 18148, 32135, 5865,\r
-  8403, 5909, 30143, 23846, 1457, 29952, 7343, 29566, 14699, 11458,\r
-  22227, 4623, 8960, 7028, 5812, 977, 14801, 4604, 1127, 16400,\r
-  2378, 23081, 15958, 14368, 6084, 4608, 5955, 11596, 13482, 20816,\r
-  30089, 8975, 29147, 19853, 14245, 16775, 19536, 28634, 16886, 15398,\r
-  18431, 4456, 6593, 4267, 767, 20991, 12664, 12880, 1004, 15578,\r
-  19004, 30021, 18317, 12216, 3744, 20062, 20916, 14384, 19120, 15113,\r
+  13959, 4840,  24956, 14919, 21312, 2938,  20945, 2154,  947,   16583,\r
+  6187,  21457, 21086, 7535,  5761,  20778, 20863, 6591,  5815,  19034,\r
+  27841, 22218, 18788, 12839, 32282, 28603, 8664,  8244,  10740, 30057,\r
+  13150, 18739, 18059, 18476, 29630, 18262, 21142, 17392, 1798,  18182,\r
+  16169, 29319, 30858, 27608, 4314,  14404, 1322,  445,   7203,  11973,\r
+  23251, 20089, 24839, 8720,  29001, 5974,  18936, 25570, 24611, 12057,\r
+  20985, 26947, 22039, 8245,  22016, 26206, 5495,  18239, 5534,  23696,\r
+  6652,  29090, 9953,  20159, 19395, 21652, 24954, 4077,  25493, 28744,\r
+  1307,  24588, 25707, 13157, 7971,  19220, 20017, 29368, 29565, 32340,\r
+  28107, 2341,  27845, 2053,  28246, 13284, 22445, 13605, 4016,  32490,\r
+  28064, 387,   9786,  21924, 29349, 19990, 18396, 3051,  27269, 20882,\r
+  19018, 29493, 10544, 30525, 30342, 20488, 16989, 8191,  5543,  17333,\r
+  7281,  31161, 15064, 32322, 10914, 24792, 28323, 19624, 4700,  42,\r
+  8048,  22335, 16355, 8944,  31560, 9334,  11835, 27956, 5855,  13255,\r
+  26181, 28253, 1490,  17642, 31018, 16896, 18477, 8009,  31228, 13049,\r
+  12592, 28085, 15003, 5307,  11091, 599,   20438, 18148, 32135, 5865,\r
+  8403,  5909,  30143, 23846, 1457,  29952, 7343,  29566, 14699, 11458,\r
+  22227, 4623,  8960,  7028,  5812,  977,   14801, 4604,  1127,  16400,\r
+  2378,  23081, 15958, 14368, 6084,  4608,  5955,  11596, 13482, 20816,\r
+  30089, 8975,  29147, 19853, 14245, 16775, 19536, 28634, 16886, 15398,\r
+  18431, 4456,  6593,  4267,  767,   20991, 12664, 12880, 1004,  15578,\r
+  19004, 30021, 18317, 12216, 3744,  20062, 20916, 14384, 19120, 15113,\r
   17766, 23365, 25906, 25986, 18492, 31546, 32299, 22858, 13577, 20392,\r
-  22181, 23509, 25021, 9165, 26032, 15746, 31882, 20263, 16039, 14033,\r
-  17477, 7233, 11444, 9681, 8206, 4558, 10134, 16343, 23091, 20980,\r
-  1442, 2933, 594, 1002, 3848, 13994, 15038, 31685, 22104, 7511,\r
-  29988, 5263, 31301, 5106, 25199, 28826, 13480, 19070, 6632, 5139,\r
-  23240, 23483, 15266, 3546, 13016, 23706, 4629, 8849, 17089, 32755,\r
-  30473, 11764, 31778, 8826, 32694, 11880, 27029, 21232, 13353, 11990,\r
-  16693, 10902, 21993, 697, 93, 2535, 31195, 2166, 29874, 3462,\r
+  22181, 23509, 25021, 9165,  26032, 15746, 31882, 20263, 16039, 14033,\r
+  17477, 7233,  11444, 9681,  8206,  4558,  10134, 16343, 23091, 20980,\r
+  1442,  2933,  594,   1002,  3848,  13994, 15038, 31685, 22104, 7511,\r
+  29988, 5263,  31301, 5106,  25199, 28826, 13480, 19070, 6632,  5139,\r
+  23240, 23483, 15266, 3546,  13016, 23706, 4629,  8849,  17089, 32755,\r
+  30473, 11764, 31778, 8826,  32694, 11880, 27029, 21232, 13353, 11990,\r
+  16693, 10902, 21993, 697,   93,    2535,  31195, 2166,  29874, 3462,\r
   31075, 26093, 22115, 20342, 32460, 29517, 22447, 18569, 12522, 18476,\r
-  19880, 26139, 16893, 7895, 22071, 10239, 26073, 486, 8033, 23226,\r
-  29508, 30740, 13256, 16879, 13472, 8782, 28789, 18203, 11210, 10,\r
-  2004, 131, 19777, 19930, 13824, 9322, 30347, 12865, 2625, 15494,\r
-  9172, 11461, 27092, 11701, 10457, 31557, 12266, 26605, 28932, 27021,\r
-  3826, 21105, 2776, 16168, 5915, 18507, 656, 16245, 1557, 14582,\r
-  20483, 28670, 17432, 16731, 23499, 6404, 12840, 20735, 24486, 13407,\r
-  11671, 12154, 9756, 16005, 27851, 30251, 28003, 7656, 6466, 21034,\r
-  29055, 5253, 19154, 8830, 25005, 28601, 18486, 18064, 17666, 27223,\r
-  12486, 12512, 4688, 29945, 29574, 4599, 32585, 22675, 14178, 12189,\r
-  19175, 26446, 6328, 15435, 1803, 12179, 24599, 17123, 9572, 25957,\r
-  5703, 31391, 19346, 30197, 6537, 5959, 12939, 31088, 6175, 27048,\r
-  5438, 30492, 5135, 25665, 29303, 12195, 21541, 22591, 9731, 25007,\r
-  26167, 32428, 7444, 15542, 5804, 8675, 10727, 30232, 319, 31559,\r
-  15011, 13415, 7937, 6452, 30597, 17669, 30109, 24886, 3130, 20469,\r
-  19424, 633, 8332, 32235, 1913, 27777, 17473, 17573, 6141, 7707,\r
-  21056, 19838, 4910, 24724, 3830, 10817, 26236, 17192, 1528, 19515,\r
-  16844, 27325, 27370, 29076, 8057, 2514, 415, 31967, 3480, 5298,\r
-  20865, 27375, 7297, 1517, 10292, 23276, 5771, 18184, 12150, 23719,\r
-  25878, 4468, 6730, 31019, 18127, 23485, 11605, 10645, 15151, 9988,\r
-  9864, 12325, 18245, 16559, 18431, 1940, 30646, 19551, 2601, 23720,\r
-  17410, 10786, 14634, 17927, 14088, 3307, 381, 11849, 205, 21823,\r
-  12254, 9296, 21881, 1072, 10343, 1500, 15778, 23183, 22777, 14426,\r
-  15309, 30814, 10973, 25597, 27442, 4228, 14251, 25872, 31680, 1220,\r
-  17771, 26507, 12129, 32240, 19963, 24804, 15487, 21594, 5553, 23591,\r
-  14791, 23692, 5440, 19529, 30509, 27705, 15072, 22714, 26672, 11123,\r
-  18089, 22585, 863, 1565, 17984, 28140, 15132, 20900, 29622, 31920,\r
-  29600, 31466, 31661, 25774, 6719, 20611, 28349, 16175, 16877, 15652,\r
-  25110, 3249, 26882, 1624, 870, 2361, 19514, 25461, 9213, 6892,\r
-  27392, 207, 32559, 3801, 8428, 17195, 16377, 6170, 30858, 24439,\r
-  2536, 17691, 7005, 6840, 2359, 24377, 803, 17987, 20023, 26767,\r
-  20571, 19504, 30708, 11276, 27141, 24588, 29206, 5065, 19113, 10190,\r
-  18949, 14746, 7834, 28940, 24401, 26084, 6012, 18031, 29520, 28846,\r
-  6404, 31077, 23561, 14586, 8959, 29717, 24144, 9813, 7318, 26520,\r
+  19880, 26139, 16893, 7895,  22071, 10239, 26073, 486,   8033,  23226,\r
+  29508, 30740, 13256, 16879, 13472, 8782,  28789, 18203, 11210, 10,\r
+  2004,  131,   19777, 19930, 13824, 9322,  30347, 12865, 2625,  15494,\r
+  9172,  11461, 27092, 11701, 10457, 31557, 12266, 26605, 28932, 27021,\r
+  3826,  21105, 2776,  16168, 5915,  18507, 656,   16245, 1557,  14582,\r
+  20483, 28670, 17432, 16731, 23499, 6404,  12840, 20735, 24486, 13407,\r
+  11671, 12154, 9756,  16005, 27851, 30251, 28003, 7656,  6466,  21034,\r
+  29055, 5253,  19154, 8830,  25005, 28601, 18486, 18064, 17666, 27223,\r
+  12486, 12512, 4688,  29945, 29574, 4599,  32585, 22675, 14178, 12189,\r
+  19175, 26446, 6328,  15435, 1803,  12179, 24599, 17123, 9572,  25957,\r
+  5703,  31391, 19346, 30197, 6537,  5959,  12939, 31088, 6175,  27048,\r
+  5438,  30492, 5135,  25665, 29303, 12195, 21541, 22591, 9731,  25007,\r
+  26167, 32428, 7444,  15542, 5804,  8675,  10727, 30232, 319,   31559,\r
+  15011, 13415, 7937,  6452,  30597, 17669, 30109, 24886, 3130,  20469,\r
+  19424, 633,   8332,  32235, 1913,  27777, 17473, 17573, 6141,  7707,\r
+  21056, 19838, 4910,  24724, 3830,  10817, 26236, 17192, 1528,  19515,\r
+  16844, 27325, 27370, 29076, 8057,  2514,  415,   31967, 3480,  5298,\r
+  20865, 27375, 7297,  1517,  10292, 23276, 5771,  18184, 12150, 23719,\r
+  25878, 4468,  6730,  31019, 18127, 23485, 11605, 10645, 15151, 9988,\r
+  9864,  12325, 18245, 16559, 18431, 1940,  30646, 19551, 2601,  23720,\r
+  17410, 10786, 14634, 17927, 14088, 3307,  381,   11849, 205,   21823,\r
+  12254, 9296,  21881, 1072,  10343, 1500,  15778, 23183, 22777, 14426,\r
+  15309, 30814, 10973, 25597, 27442, 4228,  14251, 25872, 31680, 1220,\r
+  17771, 26507, 12129, 32240, 19963, 24804, 15487, 21594, 5553,  23591,\r
+  14791, 23692, 5440,  19529, 30509, 27705, 15072, 22714, 26672, 11123,\r
+  18089, 22585, 863,   1565,  17984, 28140, 15132, 20900, 29622, 31920,\r
+  29600, 31466, 31661, 25774, 6719,  20611, 28349, 16175, 16877, 15652,\r
+  25110, 3249,  26882, 1624,  870,   2361,  19514, 25461, 9213,  6892,\r
+  27392, 207,   32559, 3801,  8428,  17195, 16377, 6170,  30858, 24439,\r
+  2536,  17691, 7005,  6840,  2359,  24377, 803,   17987, 20023, 26767,\r
+  20571, 19504, 30708, 11276, 27141, 24588, 29206, 5065,  19113, 10190,\r
+  18949, 14746, 7834,  28940, 24401, 26084, 6012,  18031, 29520, 28846,\r
+  6404,  31077, 23561, 14586, 8959,  29717, 24144, 9813,  7318,  26520,\r
   29491, 26797, 25808, 10854, 31893, 27235, 19544, 23310, 11545, 10401,\r
-  23681, 6955, 10050, 26094, 3975, 30355, 6104, 27391, 24088, 19153,\r
-  20365, 18896, 17938, 17110, 8160, 22260, 11919, 15083, 32578, 19754,\r
-  19743, 8426, 14455, 20272, 28756, 9390, 10560, 15324, 21380, 19656,\r
-  21559, 2152, 24522, 17267, 18938, 5390, 32334, 28619, 11659, 12244,\r
-  24518, 12089, 22519, 14762, 23869, 17202, 24374, 8626, 22035, 18209,\r
-  1107, 10975, 12102, 17057, 19661, 12225, 22511, 11248, 19260, 22687,\r
-  30480, 28320, 23351, 30663, 9868, 19088, 21622, 34, 24439, 7963,\r
-  31028, 18955, 31632, 30351, 9175, 6753, 28684, 26081, 30675, 8155,\r
-  9622, 5279, 6604, 23196, 4499, 293, 13051, 8712, 29866, 21780,\r
-  17362, 15573, 25220, 24064, 2531, 16229, 30416, 32361, 31998, 9299,\r
-  23435, 10989, 10137, 21324, 1150, 18363, 24181, 2592, 17416, 31307,\r
-  7039, 23576, 7453, 17229, 32757, 15243, 30351, 29919, 16841, 16812,\r
-  5004, 22786, 2122, 10406, 30057, 7247, 31745, 11243, 2717, 20710,\r
-  3545, 17096, 20241, 7592, 14724, 26942, 16791, 28070, 18201, 27405,\r
-  21175, 13272, 20482, 25873, 12466, 5907, 2837, 28881, 5313, 6709,\r
-  9217, 11862, 30110, 5283, 8684, 8249, 17221, 3829, 8538, 3584,\r
-  4092, 22511, 25937, 24747, 19089, 26035, 955, 11657, 28131, 22326,\r
-  12555, 25424, 18851, 10737, 28451, 19821, 18524, 30681, 9077, 24985,\r
-  22193, 20880, 22633, 2989, 20455, 2269, 11775, 27575, 5027, 32602,\r
-  15798, 14925, 10484, 19820, 30124, 18209, 4755, 21880, 12038, 17878,\r
-  14442, 5972, 914, 23826, 2644, 22524, 9899, 11221, 16420, 29063,\r
-  17758, 14601, 23272, 24409, 12747, 346, 19311, 23193, 24013, 5959,\r
-  25096, 6886, 26845, 2425, 27533, 3909, 17715, 852, 8096, 9054,\r
-  14383, 23501, 17461, 25833, 14840, 1659, 10833, 7523, 30819, 6896,\r
-  26640, 13317, 278, 26185, 29677, 27638, 22253, 15108, 1342, 21184,\r
-  30364, 29458, 24062, 29441, 3734, 22573, 25039, 8035, 28206, 26220,\r
-  7743, 27085, 28668, 7445, 10315, 6875, 25475, 20914, 29474, 15756,\r
-  14864, 14695, 1067, 4923, 31461, 7298, 10312, 977, 17047, 26708,\r
-  3677, 24120, 20917, 4928, 27404, 32019, 28330, 1809, 2499, 9132,\r
-  7909, 1424, 28409, 10029, 31543, 15191, 28596, 14356, 9084, 29920,\r
-  25167, 24545, 5501, 10721, 19578, 1809, 27413, 21212, 12930, 5968,\r
-  17299, 15601, 27603, 3563, 23648, 20472, 8379, 4740, 7394, 31436,\r
-  21872, 26121, 6559, 14825, 9813, 15847, 21158, 27706, 6521, 24442,\r
-  12587, 27180, 10592, 4040, 2161, 4871, 27911, 11120, 7661, 17534,\r
-  290, 31453, 31912, 28805, 5800, 5823, 6117, 17762, 19089, 28860,\r
-  260, 7175, 10975, 21602, 13478, 8351, 3291, 29793, 17170, 26983,\r
-  6305, 22519, 22487, 28607, 11742, 15531, 25779, 8065, 1497, 16446,\r
-  29620, 28817, 14000, 26335, 25757, 16053, 31716, 20894, 6539, 21415,\r
-  26648, 14627, 22232, 22377, 25622, 160, 23104, 6873, 7955, 29956,\r
+  23681, 6955,  10050, 26094, 3975,  30355, 6104,  27391, 24088, 19153,\r
+  20365, 18896, 17938, 17110, 8160,  22260, 11919, 15083, 32578, 19754,\r
+  19743, 8426,  14455, 20272, 28756, 9390,  10560, 15324, 21380, 19656,\r
+  21559, 2152,  24522, 17267, 18938, 5390,  32334, 28619, 11659, 12244,\r
+  24518, 12089, 22519, 14762, 23869, 17202, 24374, 8626,  22035, 18209,\r
+  1107,  10975, 12102, 17057, 19661, 12225, 22511, 11248, 19260, 22687,\r
+  30480, 28320, 23351, 30663, 9868,  19088, 21622, 34,    24439, 7963,\r
+  31028, 18955, 31632, 30351, 9175,  6753,  28684, 26081, 30675, 8155,\r
+  9622,  5279,  6604,  23196, 4499,  293,   13051, 8712,  29866, 21780,\r
+  17362, 15573, 25220, 24064, 2531,  16229, 30416, 32361, 31998, 9299,\r
+  23435, 10989, 10137, 21324, 1150,  18363, 24181, 2592,  17416, 31307,\r
+  7039,  23576, 7453,  17229, 32757, 15243, 30351, 29919, 16841, 16812,\r
+  5004,  22786, 2122,  10406, 30057, 7247,  31745, 11243, 2717,  20710,\r
+  3545,  17096, 20241, 7592,  14724, 26942, 16791, 28070, 18201, 27405,\r
+  21175, 13272, 20482, 25873, 12466, 5907,  2837,  28881, 5313,  6709,\r
+  9217,  11862, 30110, 5283,  8684,  8249,  17221, 3829,  8538,  3584,\r
+  4092,  22511, 25937, 24747, 19089, 26035, 955,   11657, 28131, 22326,\r
+  12555, 25424, 18851, 10737, 28451, 19821, 18524, 30681, 9077,  24985,\r
+  22193, 20880, 22633, 2989,  20455, 2269,  11775, 27575, 5027,  32602,\r
+  15798, 14925, 10484, 19820, 30124, 18209, 4755,  21880, 12038, 17878,\r
+  14442, 5972,  914,   23826, 2644,  22524, 9899,  11221, 16420, 29063,\r
+  17758, 14601, 23272, 24409, 12747, 346,   19311, 23193, 24013, 5959,\r
+  25096, 6886,  26845, 2425,  27533, 3909,  17715, 852,   8096,  9054,\r
+  14383, 23501, 17461, 25833, 14840, 1659,  10833, 7523,  30819, 6896,\r
+  26640, 13317, 278,   26185, 29677, 27638, 22253, 15108, 1342,  21184,\r
+  30364, 29458, 24062, 29441, 3734,  22573, 25039, 8035,  28206, 26220,\r
+  7743,  27085, 28668, 7445,  10315, 6875,  25475, 20914, 29474, 15756,\r
+  14864, 14695, 1067,  4923,  31461, 7298,  10312, 977,   17047, 26708,\r
+  3677,  24120, 20917, 4928,  27404, 32019, 28330, 1809,  2499,  9132,\r
+  7909,  1424,  28409, 10029, 31543, 15191, 28596, 14356, 9084,  29920,\r
+  25167, 24545, 5501,  10721, 19578, 1809,  27413, 21212, 12930, 5968,\r
+  17299, 15601, 27603, 3563,  23648, 20472, 8379,  4740,  7394,  31436,\r
+  21872, 26121, 6559,  14825, 9813,  15847, 21158, 27706, 6521,  24442,\r
+  12587, 27180, 10592, 4040,  2161,  4871,  27911, 11120, 7661,  17534,\r
+  290,   31453, 31912, 28805, 5800,  5823,  6117,  17762, 19089, 28860,\r
+  260,   7175,  10975, 21602, 13478, 8351,  3291,  29793, 17170, 26983,\r
+  6305,  22519, 22487, 28607, 11742, 15531, 25779, 8065,  1497,  16446,\r
+  29620, 28817, 14000, 26335, 25757, 16053, 31716, 20894, 6539,  21415,\r
+  26648, 14627, 22232, 22377, 25622, 160,   23104, 6873,  7955,  29956,\r
 };\r
index d8511fefe827f8856a05a51332cbabf92c15d127..748c403281dfd1f5891f44fbbe70f74236f73416 100644 (file)
@@ -8,9 +8,9 @@
 \r
 #include "MtrrLibUnitTest.h"\r
 \r
-MTRR_MEMORY_CACHE_TYPE mMemoryCacheTypes[] = {\r
+MTRR_MEMORY_CACHE_TYPE  mMemoryCacheTypes[] = {\r
   CacheUncacheable, CacheWriteCombining, CacheWriteThrough, CacheWriteProtected, CacheWriteBack\r
-  };\r
+};\r
 \r
 UINT64                           mFixedMtrrsValue[MTRR_NUMBER_OF_FIXED_MTRR];\r
 MSR_IA32_MTRR_PHYSBASE_REGISTER  mVariableMtrrsPhysBase[MTRR_NUMBER_OF_VARIABLE_MTRR];\r
@@ -20,10 +20,10 @@ MSR_IA32_MTRRCAP_REGISTER        mMtrrCapMsr;
 CPUID_VERSION_INFO_EDX           mCpuidVersionInfoEdx;\r
 CPUID_VIR_PHY_ADDRESS_SIZE_EAX   mCpuidVirPhyAddressSizeEax;\r
 \r
-BOOLEAN                          mRandomInput;\r
-UINTN                            mNumberIndex = 0;\r
-extern UINTN                     mNumbers[];\r
-extern UINTN                     mNumberCount;\r
+BOOLEAN       mRandomInput;\r
+UINTN         mNumberIndex = 0;\r
+extern UINTN  mNumbers[];\r
+extern UINTN  mNumberCount;\r
 \r
 /**\r
   Return a random number between 0 and RAND_MAX.\r
@@ -65,8 +65,8 @@ CHAR8  mContentTemplate[] = {
 **/\r
 VOID\r
 GenerateRandomNumbers (\r
-  CHAR8         *FilePath,\r
-  UINTN         Count\r
+  CHAR8  *FilePath,\r
+  UINTN  Count\r
   )\r
 {\r
   FILE   *File;\r
@@ -78,8 +78,10 @@ GenerateRandomNumbers (
     if (Index % 10 == 0) {\r
       fprintf (File, "\n ");\r
     }\r
+\r
     fprintf (File, " %d,", rand ());\r
   }\r
+\r
   fprintf (File, "\n};\n");\r
   fclose (File);\r
 }\r
@@ -112,38 +114,41 @@ GenerateRandomNumbers (
 UINT32\r
 EFIAPI\r
 UnitTestMtrrLibAsmCpuid (\r
-  IN      UINT32                    Index,\r
-  OUT     UINT32                    *Eax   OPTIONAL,\r
-  OUT     UINT32                    *Ebx   OPTIONAL,\r
-  OUT     UINT32                    *Ecx   OPTIONAL,\r
-  OUT     UINT32                    *Edx   OPTIONAL\r
+  IN      UINT32  Index,\r
+  OUT     UINT32  *Eax   OPTIONAL,\r
+  OUT     UINT32  *Ebx   OPTIONAL,\r
+  OUT     UINT32  *Ecx   OPTIONAL,\r
+  OUT     UINT32  *Edx   OPTIONAL\r
   )\r
 {\r
   switch (Index) {\r
-  case CPUID_VERSION_INFO:\r
-    if (Edx != NULL) {\r
-      *Edx = mCpuidVersionInfoEdx.Uint32;\r
-    }\r
-    return Index;\r
-    break;\r
-  case CPUID_EXTENDED_FUNCTION:\r
-    if (Eax != NULL) {\r
-      *Eax = CPUID_VIR_PHY_ADDRESS_SIZE;\r
-    }\r
-    return Index;\r
-    break;\r
-  case CPUID_VIR_PHY_ADDRESS_SIZE:\r
-    if (Eax != NULL) {\r
-      *Eax = mCpuidVirPhyAddressSizeEax.Uint32;\r
-    }\r
-    return Index;\r
-    break;\r
+    case CPUID_VERSION_INFO:\r
+      if (Edx != NULL) {\r
+        *Edx = mCpuidVersionInfoEdx.Uint32;\r
+      }\r
+\r
+      return Index;\r
+      break;\r
+    case CPUID_EXTENDED_FUNCTION:\r
+      if (Eax != NULL) {\r
+        *Eax = CPUID_VIR_PHY_ADDRESS_SIZE;\r
+      }\r
+\r
+      return Index;\r
+      break;\r
+    case CPUID_VIR_PHY_ADDRESS_SIZE:\r
+      if (Eax != NULL) {\r
+        *Eax = mCpuidVirPhyAddressSizeEax.Uint32;\r
+      }\r
+\r
+      return Index;\r
+      break;\r
   }\r
 \r
   //\r
   // Should never fall through to here\r
   //\r
-  ASSERT(FALSE);\r
+  ASSERT (FALSE);\r
   return Index;\r
 }\r
 \r
@@ -163,11 +168,11 @@ UnitTestMtrrLibAsmCpuid (
 **/\r
 UINT64\r
 EFIAPI\r
-UnitTestMtrrLibAsmReadMsr64(\r
+UnitTestMtrrLibAsmReadMsr64 (\r
   IN UINT32  MsrIndex\r
   )\r
 {\r
-  UINT32 Index;\r
+  UINT32  Index;\r
 \r
   for (Index = 0; Index < ARRAY_SIZE (mFixedMtrrsValue); Index++) {\r
     if (MsrIndex == mFixedMtrrsIndex[Index]) {\r
@@ -176,7 +181,8 @@ UnitTestMtrrLibAsmReadMsr64(
   }\r
 \r
   if ((MsrIndex >= MSR_IA32_MTRR_PHYSBASE0) &&\r
-      (MsrIndex <= MSR_IA32_MTRR_PHYSMASK0 + (MTRR_NUMBER_OF_VARIABLE_MTRR << 1))) {\r
+      (MsrIndex <= MSR_IA32_MTRR_PHYSMASK0 + (MTRR_NUMBER_OF_VARIABLE_MTRR << 1)))\r
+  {\r
     if (MsrIndex % 2 == 0) {\r
       Index = (MsrIndex - MSR_IA32_MTRR_PHYSBASE0) >> 1;\r
       return mVariableMtrrsPhysBase[Index].Uint64;\r
@@ -197,7 +203,7 @@ UnitTestMtrrLibAsmReadMsr64(
   //\r
   // Should never fall through to here\r
   //\r
-  ASSERT(FALSE);\r
+  ASSERT (FALSE);\r
   return 0;\r
 }\r
 \r
@@ -220,12 +226,12 @@ UnitTestMtrrLibAsmReadMsr64(
 **/\r
 UINT64\r
 EFIAPI\r
-UnitTestMtrrLibAsmWriteMsr64(\r
-  IN      UINT32                    MsrIndex,\r
-  IN      UINT64                    Value\r
+UnitTestMtrrLibAsmWriteMsr64 (\r
+  IN      UINT32  MsrIndex,\r
+  IN      UINT64  Value\r
   )\r
 {\r
-  UINT32 Index;\r
+  UINT32  Index;\r
 \r
   for (Index = 0; Index < ARRAY_SIZE (mFixedMtrrsValue); Index++) {\r
     if (MsrIndex == mFixedMtrrsIndex[Index]) {\r
@@ -235,13 +241,14 @@ UnitTestMtrrLibAsmWriteMsr64(
   }\r
 \r
   if ((MsrIndex >= MSR_IA32_MTRR_PHYSBASE0) &&\r
-      (MsrIndex <= MSR_IA32_MTRR_PHYSMASK0 + (MTRR_NUMBER_OF_VARIABLE_MTRR << 1))) {\r
+      (MsrIndex <= MSR_IA32_MTRR_PHYSMASK0 + (MTRR_NUMBER_OF_VARIABLE_MTRR << 1)))\r
+  {\r
     if (MsrIndex % 2 == 0) {\r
-      Index = (MsrIndex - MSR_IA32_MTRR_PHYSBASE0) >> 1;\r
+      Index                                = (MsrIndex - MSR_IA32_MTRR_PHYSBASE0) >> 1;\r
       mVariableMtrrsPhysBase[Index].Uint64 = Value;\r
       return Value;\r
     } else {\r
-      Index = (MsrIndex - MSR_IA32_MTRR_PHYSMASK0) >> 1;\r
+      Index                                = (MsrIndex - MSR_IA32_MTRR_PHYSMASK0) >> 1;\r
       mVariableMtrrsPhysMask[Index].Uint64 = Value;\r
       return Value;\r
     }\r
@@ -260,7 +267,7 @@ UnitTestMtrrLibAsmWriteMsr64(
   //\r
   // Should never fall through to here\r
   //\r
-  ASSERT(FALSE);\r
+  ASSERT (FALSE);\r
   return 0;\r
 }\r
 \r
@@ -275,7 +282,7 @@ InitializeMtrrRegs (
   IN MTRR_LIB_SYSTEM_PARAMETER  *SystemParameter\r
   )\r
 {\r
-  UINT32                    Index;\r
+  UINT32  Index;\r
 \r
   SetMem (mFixedMtrrsValue, sizeof (mFixedMtrrsValue), SystemParameter->DefaultCacheType);\r
 \r
@@ -325,10 +332,10 @@ InitializeMtrrRegs (
 UNIT_TEST_STATUS\r
 EFIAPI\r
 InitializeSystem (\r
-  IN UNIT_TEST_CONTEXT        Context\r
+  IN UNIT_TEST_CONTEXT  Context\r
   )\r
 {\r
-  return InitializeMtrrRegs ((MTRR_LIB_SYSTEM_PARAMETER *) Context);\r
+  return InitializeMtrrRegs ((MTRR_LIB_SYSTEM_PARAMETER *)Context);\r
 }\r
 \r
 /**\r
@@ -344,34 +351,34 @@ InitializeSystem (
 **/\r
 VOID\r
 CollectTestResult (\r
-  IN     MTRR_MEMORY_CACHE_TYPE DefaultType,\r
-  IN     UINT32                 PhysicalAddressBits,\r
-  IN     UINT32                 VariableMtrrCount,\r
-  IN     MTRR_SETTINGS          *Mtrrs,\r
-  OUT    MTRR_MEMORY_RANGE      *Ranges,\r
-  IN OUT UINTN                  *RangeCount,\r
-  OUT    UINT32                 *MtrrCount\r
+  IN     MTRR_MEMORY_CACHE_TYPE  DefaultType,\r
+  IN     UINT32                  PhysicalAddressBits,\r
+  IN     UINT32                  VariableMtrrCount,\r
+  IN     MTRR_SETTINGS           *Mtrrs,\r
+  OUT    MTRR_MEMORY_RANGE       *Ranges,\r
+  IN OUT UINTN                   *RangeCount,\r
+  OUT    UINT32                  *MtrrCount\r
   )\r
 {\r
-  UINTN             Index;\r
-  UINT64            MtrrValidBitsMask;\r
-  UINT64            MtrrValidAddressMask;\r
-  MTRR_MEMORY_RANGE RawMemoryRanges[ARRAY_SIZE (Mtrrs->Variables.Mtrr)];\r
+  UINTN              Index;\r
+  UINT64             MtrrValidBitsMask;\r
+  UINT64             MtrrValidAddressMask;\r
+  MTRR_MEMORY_RANGE  RawMemoryRanges[ARRAY_SIZE (Mtrrs->Variables.Mtrr)];\r
 \r
   ASSERT (Mtrrs != NULL);\r
   ASSERT (VariableMtrrCount <= ARRAY_SIZE (Mtrrs->Variables.Mtrr));\r
 \r
-  MtrrValidBitsMask = (1ull << PhysicalAddressBits) - 1;\r
+  MtrrValidBitsMask    = (1ull << PhysicalAddressBits) - 1;\r
   MtrrValidAddressMask = MtrrValidBitsMask & ~0xFFFull;\r
 \r
   *MtrrCount = 0;\r
   for (Index = 0; Index < VariableMtrrCount; Index++) {\r
-    if (((MSR_IA32_MTRR_PHYSMASK_REGISTER *) &Mtrrs->Variables.Mtrr[Index].Mask)->Bits.V == 1) {\r
+    if (((MSR_IA32_MTRR_PHYSMASK_REGISTER *)&Mtrrs->Variables.Mtrr[Index].Mask)->Bits.V == 1) {\r
       RawMemoryRanges[*MtrrCount].BaseAddress = Mtrrs->Variables.Mtrr[Index].Base & MtrrValidAddressMask;\r
       RawMemoryRanges[*MtrrCount].Type        =\r
-        ((MSR_IA32_MTRR_PHYSBASE_REGISTER *) &Mtrrs->Variables.Mtrr[Index].Base)->Bits.Type;\r
-      RawMemoryRanges[*MtrrCount].Length      =\r
-          ((~(Mtrrs->Variables.Mtrr[Index].Mask & MtrrValidAddressMask)) & MtrrValidBitsMask) + 1;\r
+        ((MSR_IA32_MTRR_PHYSBASE_REGISTER *)&Mtrrs->Variables.Mtrr[Index].Base)->Bits.Type;\r
+      RawMemoryRanges[*MtrrCount].Length =\r
+        ((~(Mtrrs->Variables.Mtrr[Index].Mask & MtrrValidAddressMask)) & MtrrValidBitsMask) + 1;\r
       (*MtrrCount)++;\r
     }\r
   }\r
@@ -392,7 +399,7 @@ Random32 (
   UINT32  Limit\r
   )\r
 {\r
-  return (UINT32) (((double) Rand () / RAND_MAX) * (Limit - Start)) + Start;\r
+  return (UINT32)(((double)Rand () / RAND_MAX) * (Limit - Start)) + Start;\r
 }\r
 \r
 /**\r
@@ -408,7 +415,7 @@ Random64 (
   UINT64  Limit\r
   )\r
 {\r
-  return (UINT64) (((double) Rand () / RAND_MAX) * (Limit - Start)) + Start;\r
+  return (UINT64)(((double)Rand () / RAND_MAX) * (Limit - Start)) + Start;\r
 }\r
 \r
 /**\r
@@ -421,30 +428,30 @@ Random64 (
 **/\r
 VOID\r
 GenerateRandomMtrrPair (\r
-  IN  UINT32                 PhysicalAddressBits,\r
-  IN  MTRR_MEMORY_CACHE_TYPE CacheType,\r
-  OUT MTRR_VARIABLE_SETTING  *MtrrPair        OPTIONAL,\r
-  OUT MTRR_MEMORY_RANGE      *MtrrMemoryRange OPTIONAL\r
+  IN  UINT32                  PhysicalAddressBits,\r
+  IN  MTRR_MEMORY_CACHE_TYPE  CacheType,\r
+  OUT MTRR_VARIABLE_SETTING   *MtrrPair        OPTIONAL,\r
+  OUT MTRR_MEMORY_RANGE       *MtrrMemoryRange OPTIONAL\r
   )\r
 {\r
-  MSR_IA32_MTRR_PHYSBASE_REGISTER PhysBase;\r
-  MSR_IA32_MTRR_PHYSMASK_REGISTER PhysMask;\r
-  UINT32                          SizeShift;\r
-  UINT32                          BaseShift;\r
-  UINT64                          RandomBoundary;\r
-  UINT64                          MaxPhysicalAddress;\r
-  UINT64                          RangeSize;\r
-  UINT64                          RangeBase;\r
-  UINT64                          PhysBasePhyMaskValidBitsMask;\r
+  MSR_IA32_MTRR_PHYSBASE_REGISTER  PhysBase;\r
+  MSR_IA32_MTRR_PHYSMASK_REGISTER  PhysMask;\r
+  UINT32                           SizeShift;\r
+  UINT32                           BaseShift;\r
+  UINT64                           RandomBoundary;\r
+  UINT64                           MaxPhysicalAddress;\r
+  UINT64                           RangeSize;\r
+  UINT64                           RangeBase;\r
+  UINT64                           PhysBasePhyMaskValidBitsMask;\r
 \r
   MaxPhysicalAddress = 1ull << PhysicalAddressBits;\r
   do {\r
     SizeShift = Random32 (12, PhysicalAddressBits - 1);\r
     RangeSize = 1ull << SizeShift;\r
 \r
-    BaseShift = Random32 (SizeShift, PhysicalAddressBits - 1);\r
+    BaseShift      = Random32 (SizeShift, PhysicalAddressBits - 1);\r
     RandomBoundary = Random64 (0, 1ull << (PhysicalAddressBits - BaseShift));\r
-    RangeBase = RandomBoundary << BaseShift;\r
+    RangeBase      = RandomBoundary << BaseShift;\r
   } while (RangeBase < SIZE_1MB || RangeBase > MaxPhysicalAddress - 1);\r
 \r
   PhysBasePhyMaskValidBitsMask = (MaxPhysicalAddress - 1) & 0xfffffffffffff000ULL;\r
@@ -468,7 +475,6 @@ GenerateRandomMtrrPair (
   }\r
 }\r
 \r
-\r
 /**\r
   Check whether the Range overlaps with any one in Ranges.\r
 \r
@@ -480,9 +486,9 @@ GenerateRandomMtrrPair (
 **/\r
 BOOLEAN\r
 RangesOverlap (\r
-  IN MTRR_MEMORY_RANGE *Range,\r
-  IN MTRR_MEMORY_RANGE *Ranges,\r
-  IN UINTN             Count\r
+  IN MTRR_MEMORY_RANGE  *Range,\r
+  IN MTRR_MEMORY_RANGE  *Ranges,\r
+  IN UINTN              Count\r
   )\r
 {\r
   while (Count-- != 0) {\r
@@ -491,11 +497,13 @@ RangesOverlap (
     // 1. range#2.base is in the middle of range#1\r
     // 2. range#1.base is in the middle of range#2\r
     //\r
-    if ((Range->BaseAddress <= Ranges[Count].BaseAddress && Ranges[Count].BaseAddress < Range->BaseAddress + Range->Length)\r
-     || (Ranges[Count].BaseAddress <= Range->BaseAddress && Range->BaseAddress < Ranges[Count].BaseAddress + Ranges[Count].Length)) {\r
+    if (  ((Range->BaseAddress <= Ranges[Count].BaseAddress) && (Ranges[Count].BaseAddress < Range->BaseAddress + Range->Length))\r
+       || ((Ranges[Count].BaseAddress <= Range->BaseAddress) && (Range->BaseAddress < Ranges[Count].BaseAddress + Ranges[Count].Length)))\r
+    {\r
       return TRUE;\r
     }\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -512,16 +520,16 @@ RangesOverlap (
 **/\r
 VOID\r
 GenerateValidAndConfigurableMtrrPairs (\r
-  IN     UINT32                    PhysicalAddressBits,\r
-  IN OUT MTRR_MEMORY_RANGE         *RawMemoryRanges,\r
-  IN     UINT32                    UcCount,\r
-  IN     UINT32                    WtCount,\r
-  IN     UINT32                    WbCount,\r
-  IN     UINT32                    WpCount,\r
-  IN     UINT32                    WcCount\r
+  IN     UINT32             PhysicalAddressBits,\r
+  IN OUT MTRR_MEMORY_RANGE  *RawMemoryRanges,\r
+  IN     UINT32             UcCount,\r
+  IN     UINT32             WtCount,\r
+  IN     UINT32             WbCount,\r
+  IN     UINT32             WpCount,\r
+  IN     UINT32             WcCount\r
   )\r
 {\r
-  UINT32                          Index;\r
+  UINT32  Index;\r
 \r
   //\r
   // 1. Generate UC, WT, WB in order.\r
@@ -567,7 +575,7 @@ GenerateRandomCacheType (
   VOID\r
   )\r
 {\r
-    return mMemoryCacheTypes[Random32 (0, ARRAY_SIZE (mMemoryCacheTypes) - 1)];\r
+  return mMemoryCacheTypes[Random32 (0, ARRAY_SIZE (mMemoryCacheTypes) - 1)];\r
 }\r
 \r
 /**\r
@@ -586,19 +594,20 @@ GenerateRandomCacheType (
 **/\r
 INT32\r
 CompareFuncUint64 (\r
-  CONST VOID Left,\r
-  CONST VOID Right\r
+  CONST VOID  *Left,\r
+  CONST VOID  *Right\r
   )\r
 {\r
-    INT64 Delta;\r
-    Delta = (*(UINT64*)Left - *(UINT64*)Right);\r
-    if (Delta > 0) {\r
-      return 1;\r
-    } else if (Delta == 0) {\r
-      return 0;\r
-    } else {\r
-      return -1;\r
-    }\r
+  INT64  Delta;\r
+\r
+  Delta = (*(UINT64 *)Left - *(UINT64 *)Right);\r
+  if (Delta > 0) {\r
+    return 1;\r
+  } else if (Delta == 0) {\r
+    return 0;\r
+  } else {\r
+    return -1;\r
+  }\r
 }\r
 \r
 /**\r
@@ -611,13 +620,14 @@ CompareFuncUint64 (
 **/\r
 VOID\r
 DetermineMemoryCacheType (\r
-  IN     MTRR_MEMORY_CACHE_TYPE DefaultType,\r
-  IN OUT MTRR_MEMORY_RANGE      *Range,\r
-  IN     MTRR_MEMORY_RANGE      *Ranges,\r
-  IN     UINT32                 RangeCount\r
+  IN     MTRR_MEMORY_CACHE_TYPE  DefaultType,\r
+  IN OUT MTRR_MEMORY_RANGE       *Range,\r
+  IN     MTRR_MEMORY_RANGE       *Ranges,\r
+  IN     UINT32                  RangeCount\r
   )\r
 {\r
-  UINT32 Index;\r
+  UINT32  Index;\r
+\r
   Range->Type = CacheInvalid;\r
   for (Index = 0; Index < RangeCount; Index++) {\r
     if (RangesOverlap (Range, &Ranges[Index], 1)) {\r
@@ -643,16 +653,18 @@ DetermineMemoryCacheType (
 **/\r
 UINT32\r
 GetNextDifferentElementInSortedArray (\r
-  IN UINT32 Index,\r
-  IN UINT64 *Array,\r
-  IN UINT32 Count\r
+  IN UINT32  Index,\r
+  IN UINT64  *Array,\r
+  IN UINT32  Count\r
   )\r
 {\r
-  UINT64 CurrentElement;\r
+  UINT64  CurrentElement;\r
+\r
   CurrentElement = Array[Index];\r
   while (CurrentElement == Array[Index] && Index < Count) {\r
     Index++;\r
   }\r
+\r
   return Index;\r
 }\r
 \r
@@ -664,12 +676,12 @@ GetNextDifferentElementInSortedArray (
 **/\r
 VOID\r
 RemoveDuplicatesInSortedArray (\r
-  IN OUT UINT64 *Array,\r
-  IN OUT UINT32 *Count\r
+  IN OUT UINT64  *Array,\r
+  IN OUT UINT32  *Count\r
   )\r
 {\r
-  UINT32 Index;\r
-  UINT32 NewCount;\r
+  UINT32  Index;\r
+  UINT32  NewCount;\r
 \r
   Index    = 0;\r
   NewCount = 0;\r
@@ -678,6 +690,7 @@ RemoveDuplicatesInSortedArray (
     NewCount++;\r
     Index = GetNextDifferentElementInSortedArray (Index, Array, *Count);\r
   }\r
+\r
   *Count = NewCount;\r
 }\r
 \r
@@ -690,11 +703,11 @@ RemoveDuplicatesInSortedArray (
 **/\r
 BOOLEAN\r
 AddressInRange (\r
-  IN UINT64            Address,\r
-  IN MTRR_MEMORY_RANGE Range\r
+  IN UINT64             Address,\r
+  IN MTRR_MEMORY_RANGE  Range\r
   )\r
 {\r
-    return (Address >= Range.BaseAddress) && (Address <= Range.BaseAddress + Range.Length - 1);\r
+  return (Address >= Range.BaseAddress) && (Address <= Range.BaseAddress + Range.Length - 1);\r
 }\r
 \r
 /**\r
@@ -706,13 +719,14 @@ AddressInRange (
 **/\r
 UINT64\r
 GetOverlapBitFlag (\r
-  IN MTRR_MEMORY_RANGE *RawMemoryRanges,\r
-  IN UINT32            RawMemoryRangeCount,\r
-  IN UINT64            Address\r
+  IN MTRR_MEMORY_RANGE  *RawMemoryRanges,\r
+  IN UINT32             RawMemoryRangeCount,\r
+  IN UINT64             Address\r
   )\r
 {\r
-  UINT64 OverlapBitFlag;\r
-  UINT32 Index;\r
+  UINT64  OverlapBitFlag;\r
+  UINT32  Index;\r
+\r
   OverlapBitFlag = 0;\r
   for (Index = 0; Index < RawMemoryRangeCount; Index++) {\r
     if (AddressInRange (Address, RawMemoryRanges[Index])) {\r
@@ -736,14 +750,23 @@ GetOverlapBitFlag (
 **/\r
 UINT32\r
 CheckOverlapBitFlagsRelation (\r
-  IN UINT64 Flag1,\r
-  IN UINT64 Flag2\r
+  IN UINT64  Flag1,\r
+  IN UINT64  Flag2\r
   )\r
 {\r
-    if (Flag1 == Flag2) return 0;\r
-    if ((Flag1 | Flag2) == Flag2) return 1;\r
-    if ((Flag1 | Flag2) == Flag1) return 2;\r
-    return 3;\r
+  if (Flag1 == Flag2) {\r
+    return 0;\r
+  }\r
+\r
+  if ((Flag1 | Flag2) == Flag2) {\r
+    return 1;\r
+  }\r
+\r
+  if ((Flag1 | Flag2) == Flag1) {\r
+    return 2;\r
+  }\r
+\r
+  return 3;\r
 }\r
 \r
 /**\r
@@ -758,20 +781,21 @@ CheckOverlapBitFlagsRelation (
 **/\r
 BOOLEAN\r
 IsEndpointInRanges (\r
-  IN UINT64            Endpoint,\r
-  IN MTRR_MEMORY_RANGE *Ranges,\r
-  IN UINTN             RangeCount\r
+  IN UINT64             Endpoint,\r
+  IN MTRR_MEMORY_RANGE  *Ranges,\r
+  IN UINTN              RangeCount\r
   )\r
 {\r
-    UINT32 Index;\r
-    for (Index = 0; Index < RangeCount; Index++) {\r
-      if (AddressInRange (Endpoint, Ranges[Index])) {\r
-        return TRUE;\r
-      }\r
+  UINT32  Index;\r
+\r
+  for (Index = 0; Index < RangeCount; Index++) {\r
+    if (AddressInRange (Endpoint, Ranges[Index])) {\r
+      return TRUE;\r
     }\r
-    return FALSE;\r
-}\r
+  }\r
 \r
+  return FALSE;\r
+}\r
 \r
 /**\r
   Compact adjacent ranges of the same type.\r
@@ -783,26 +807,26 @@ IsEndpointInRanges (
 **/\r
 VOID\r
 CompactAndExtendEffectiveMtrrMemoryRanges (\r
-  IN     MTRR_MEMORY_CACHE_TYPE DefaultType,\r
-  IN     UINT32                 PhysicalAddressBits,\r
-  IN OUT MTRR_MEMORY_RANGE      **EffectiveMtrrMemoryRanges,\r
-  IN OUT UINTN                  *EffectiveMtrrMemoryRangesCount\r
+  IN     MTRR_MEMORY_CACHE_TYPE  DefaultType,\r
+  IN     UINT32                  PhysicalAddressBits,\r
+  IN OUT MTRR_MEMORY_RANGE       **EffectiveMtrrMemoryRanges,\r
+  IN OUT UINTN                   *EffectiveMtrrMemoryRangesCount\r
   )\r
 {\r
-  UINT64                        MaxAddress;\r
-  UINTN                         NewRangesCountAtMost;\r
-  MTRR_MEMORY_RANGE             *NewRanges;\r
-  UINTN                         NewRangesCountActual;\r
-  MTRR_MEMORY_RANGE             *CurrentRangeInNewRanges;\r
-  MTRR_MEMORY_CACHE_TYPE        CurrentRangeTypeInOldRanges;\r
+  UINT64                  MaxAddress;\r
+  UINTN                   NewRangesCountAtMost;\r
+  MTRR_MEMORY_RANGE       *NewRanges;\r
+  UINTN                   NewRangesCountActual;\r
+  MTRR_MEMORY_RANGE       *CurrentRangeInNewRanges;\r
+  MTRR_MEMORY_CACHE_TYPE  CurrentRangeTypeInOldRanges;\r
 \r
-  MTRR_MEMORY_RANGE             *OldRanges;\r
-  MTRR_MEMORY_RANGE             OldLastRange;\r
-  UINTN                         OldRangesIndex;\r
+  MTRR_MEMORY_RANGE  *OldRanges;\r
+  MTRR_MEMORY_RANGE  OldLastRange;\r
+  UINTN              OldRangesIndex;\r
 \r
   NewRangesCountActual = 0;\r
   NewRangesCountAtMost = *EffectiveMtrrMemoryRangesCount + 2;   // At most with 2 more range entries.\r
-  NewRanges            = (MTRR_MEMORY_RANGE *) calloc (NewRangesCountAtMost, sizeof (MTRR_MEMORY_RANGE));\r
+  NewRanges            = (MTRR_MEMORY_RANGE *)calloc (NewRangesCountAtMost, sizeof (MTRR_MEMORY_RANGE));\r
   OldRanges            = *EffectiveMtrrMemoryRanges;\r
   if (OldRanges[0].BaseAddress > 0) {\r
     NewRanges[NewRangesCountActual].BaseAddress = 0;\r
@@ -814,44 +838,45 @@ CompactAndExtendEffectiveMtrrMemoryRanges (
   OldRangesIndex = 0;\r
   while (OldRangesIndex < *EffectiveMtrrMemoryRangesCount) {\r
     CurrentRangeTypeInOldRanges = OldRanges[OldRangesIndex].Type;\r
-    CurrentRangeInNewRanges = NULL;\r
-    if (NewRangesCountActual > 0)   // We need to check CurrentNewRange first before generate a new NewRange.\r
-    {\r
+    CurrentRangeInNewRanges     = NULL;\r
+    if (NewRangesCountActual > 0) {\r
+      // We need to check CurrentNewRange first before generate a new NewRange.\r
       CurrentRangeInNewRanges = &NewRanges[NewRangesCountActual - 1];\r
     }\r
-    if (CurrentRangeInNewRanges != NULL && CurrentRangeInNewRanges->Type == CurrentRangeTypeInOldRanges) {\r
+\r
+    if ((CurrentRangeInNewRanges != NULL) && (CurrentRangeInNewRanges->Type == CurrentRangeTypeInOldRanges)) {\r
       CurrentRangeInNewRanges->Length += OldRanges[OldRangesIndex].Length;\r
     } else {\r
       NewRanges[NewRangesCountActual].BaseAddress = OldRanges[OldRangesIndex].BaseAddress;\r
       NewRanges[NewRangesCountActual].Length     += OldRanges[OldRangesIndex].Length;\r
       NewRanges[NewRangesCountActual].Type        = CurrentRangeTypeInOldRanges;\r
-      while (OldRangesIndex + 1 < *EffectiveMtrrMemoryRangesCount && OldRanges[OldRangesIndex + 1].Type == CurrentRangeTypeInOldRanges)\r
-      {\r
+      while (OldRangesIndex + 1 < *EffectiveMtrrMemoryRangesCount && OldRanges[OldRangesIndex + 1].Type == CurrentRangeTypeInOldRanges) {\r
         OldRangesIndex++;\r
         NewRanges[NewRangesCountActual].Length += OldRanges[OldRangesIndex].Length;\r
       }\r
+\r
       NewRangesCountActual++;\r
     }\r
 \r
     OldRangesIndex++;\r
   }\r
 \r
-  MaxAddress = (1ull << PhysicalAddressBits) - 1;\r
-  OldLastRange = OldRanges[(*EffectiveMtrrMemoryRangesCount) - 1];\r
+  MaxAddress              = (1ull << PhysicalAddressBits) - 1;\r
+  OldLastRange            = OldRanges[(*EffectiveMtrrMemoryRangesCount) - 1];\r
   CurrentRangeInNewRanges = &NewRanges[NewRangesCountActual - 1];\r
   if (OldLastRange.BaseAddress + OldLastRange.Length - 1 < MaxAddress) {\r
     if (CurrentRangeInNewRanges->Type == DefaultType) {\r
       CurrentRangeInNewRanges->Length = MaxAddress - CurrentRangeInNewRanges->BaseAddress + 1;\r
     } else {\r
       NewRanges[NewRangesCountActual].BaseAddress = OldLastRange.BaseAddress + OldLastRange.Length;\r
-      NewRanges[NewRangesCountActual].Length = MaxAddress - NewRanges[NewRangesCountActual].BaseAddress + 1;\r
-      NewRanges[NewRangesCountActual].Type = DefaultType;\r
+      NewRanges[NewRangesCountActual].Length      = MaxAddress - NewRanges[NewRangesCountActual].BaseAddress + 1;\r
+      NewRanges[NewRangesCountActual].Type        = DefaultType;\r
       NewRangesCountActual++;\r
     }\r
   }\r
 \r
   free (*EffectiveMtrrMemoryRanges);\r
-  *EffectiveMtrrMemoryRanges = NewRanges;\r
+  *EffectiveMtrrMemoryRanges      = NewRanges;\r
   *EffectiveMtrrMemoryRangesCount = NewRangesCountActual;\r
 }\r
 \r
@@ -865,20 +890,20 @@ CompactAndExtendEffectiveMtrrMemoryRanges (
 **/\r
 VOID\r
 CollectEndpoints (\r
-  IN OUT UINT64        *Endpoints,\r
-  IN OUT UINT32        *EndPointCount,\r
-  IN MTRR_MEMORY_RANGE *RawMemoryRanges,\r
-  IN UINT32            RawMemoryRangeCount\r
+  IN OUT UINT64         *Endpoints,\r
+  IN OUT UINT32         *EndPointCount,\r
+  IN MTRR_MEMORY_RANGE  *RawMemoryRanges,\r
+  IN UINT32             RawMemoryRangeCount\r
   )\r
 {\r
-  UINT32 Index;\r
-  UINT32 RawRangeIndex;\r
+  UINT32  Index;\r
+  UINT32  RawRangeIndex;\r
 \r
   ASSERT ((RawMemoryRangeCount << 1) == *EndPointCount);\r
 \r
   for (Index = 0; Index < *EndPointCount; Index += 2) {\r
-    RawRangeIndex = Index >> 1;\r
-    Endpoints[Index] = RawMemoryRanges[RawRangeIndex].BaseAddress;\r
+    RawRangeIndex        = Index >> 1;\r
+    Endpoints[Index]     = RawMemoryRanges[RawRangeIndex].BaseAddress;\r
     Endpoints[Index + 1] = RawMemoryRanges[RawRangeIndex].BaseAddress + RawMemoryRanges[RawRangeIndex].Length - 1;\r
   }\r
 \r
@@ -898,41 +923,41 @@ CollectEndpoints (
 **/\r
 VOID\r
 GetEffectiveMemoryRanges (\r
-  IN MTRR_MEMORY_CACHE_TYPE DefaultType,\r
-  IN UINT32                 PhysicalAddressBits,\r
-  IN MTRR_MEMORY_RANGE      *RawMemoryRanges,\r
-  IN UINT32                 RawMemoryRangeCount,\r
-  OUT MTRR_MEMORY_RANGE     *MemoryRanges,\r
-  OUT UINTN                 *MemoryRangeCount\r
+  IN MTRR_MEMORY_CACHE_TYPE  DefaultType,\r
+  IN UINT32                  PhysicalAddressBits,\r
+  IN MTRR_MEMORY_RANGE       *RawMemoryRanges,\r
+  IN UINT32                  RawMemoryRangeCount,\r
+  OUT MTRR_MEMORY_RANGE      *MemoryRanges,\r
+  OUT UINTN                  *MemoryRangeCount\r
   )\r
 {\r
-  UINTN                 Index;\r
-  UINT32                AllEndPointsCount;\r
-  UINT64                *AllEndPointsInclusive;\r
-  UINT32                AllRangePiecesCountMax;\r
-  MTRR_MEMORY_RANGE     *AllRangePieces;\r
-  UINTN                 AllRangePiecesCountActual;\r
-  UINT64                OverlapBitFlag1;\r
-  UINT64                OverlapBitFlag2;\r
-  INT32                 OverlapFlagRelation;\r
+  UINTN              Index;\r
+  UINT32             AllEndPointsCount;\r
+  UINT64             *AllEndPointsInclusive;\r
+  UINT32             AllRangePiecesCountMax;\r
+  MTRR_MEMORY_RANGE  *AllRangePieces;\r
+  UINTN              AllRangePiecesCountActual;\r
+  UINT64             OverlapBitFlag1;\r
+  UINT64             OverlapBitFlag2;\r
+  INT32              OverlapFlagRelation;\r
 \r
   if (RawMemoryRangeCount == 0) {\r
     MemoryRanges[0].BaseAddress = 0;\r
     MemoryRanges[0].Length      = (1ull << PhysicalAddressBits);\r
     MemoryRanges[0].Type        = DefaultType;\r
-    *MemoryRangeCount = 1;\r
+    *MemoryRangeCount           = 1;\r
     return;\r
   }\r
 \r
-  AllEndPointsCount         = RawMemoryRangeCount << 1;\r
-  AllEndPointsInclusive     = calloc (AllEndPointsCount, sizeof (UINT64));\r
-  AllRangePiecesCountMax    = RawMemoryRangeCount * 3 + 1;\r
-  AllRangePieces            = calloc (AllRangePiecesCountMax, sizeof (MTRR_MEMORY_RANGE));\r
+  AllEndPointsCount      = RawMemoryRangeCount << 1;\r
+  AllEndPointsInclusive  = calloc (AllEndPointsCount, sizeof (UINT64));\r
+  AllRangePiecesCountMax = RawMemoryRangeCount * 3 + 1;\r
+  AllRangePieces         = calloc (AllRangePiecesCountMax, sizeof (MTRR_MEMORY_RANGE));\r
   CollectEndpoints (AllEndPointsInclusive, &AllEndPointsCount, RawMemoryRanges, RawMemoryRangeCount);\r
 \r
   for (Index = 0, AllRangePiecesCountActual = 0; Index < AllEndPointsCount - 1; Index++) {\r
-    OverlapBitFlag1 = GetOverlapBitFlag (RawMemoryRanges, RawMemoryRangeCount, AllEndPointsInclusive[Index]);\r
-    OverlapBitFlag2 = GetOverlapBitFlag (RawMemoryRanges, RawMemoryRangeCount, AllEndPointsInclusive[Index + 1]);\r
+    OverlapBitFlag1     = GetOverlapBitFlag (RawMemoryRanges, RawMemoryRangeCount, AllEndPointsInclusive[Index]);\r
+    OverlapBitFlag2     = GetOverlapBitFlag (RawMemoryRanges, RawMemoryRangeCount, AllEndPointsInclusive[Index + 1]);\r
     OverlapFlagRelation = CheckOverlapBitFlagsRelation (OverlapBitFlag1, OverlapBitFlag2);\r
     switch (OverlapFlagRelation) {\r
       case 0:   // [1, 2]\r
@@ -955,18 +980,23 @@ GetEffectiveMemoryRanges (
           AllRangePieces[AllRangePiecesCountActual].Length      = 1;\r
           AllRangePiecesCountActual++;\r
         }\r
+\r
         break;\r
       case 3:   // (1, 2)\r
         AllRangePieces[AllRangePiecesCountActual].BaseAddress = AllEndPointsInclusive[Index] + 1;\r
         AllRangePieces[AllRangePiecesCountActual].Length      = (AllEndPointsInclusive[Index + 1] - 1) - (AllEndPointsInclusive[Index] + 1) + 1;\r
-        if (AllRangePieces[AllRangePiecesCountActual].Length == 0)   // Only in case 3 can exists Length=0, we should skip such "segment".\r
+        if (AllRangePieces[AllRangePiecesCountActual].Length == 0) {\r
+          // Only in case 3 can exists Length=0, we should skip such "segment".\r
           break;\r
+        }\r
+\r
         AllRangePiecesCountActual++;\r
         if (!IsEndpointInRanges (AllEndPointsInclusive[Index], AllRangePieces, AllRangePiecesCountActual)) {\r
           AllRangePieces[AllRangePiecesCountActual].BaseAddress = AllEndPointsInclusive[Index];\r
           AllRangePieces[AllRangePiecesCountActual].Length      = 1;\r
           AllRangePiecesCountActual++;\r
         }\r
+\r
         break;\r
       default:\r
         ASSERT (FALSE);\r
index cebaa81399bb2c351ada4adac48ff0b5e165c8b2..9f71c2611cfbe5613e5b5582868b0c1b18c53cc0 100644 (file)
@@ -30,7 +30,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 EFI_PEI_PPI_DESCRIPTOR *\r
 EFIAPI\r
 SecPlatformMain (\r
-  IN OUT   EFI_SEC_PEI_HAND_OFF        *SecCoreData\r
+  IN OUT   EFI_SEC_PEI_HAND_OFF  *SecCoreData\r
   )\r
 {\r
   return NULL;\r
@@ -50,9 +50,9 @@ SecPlatformMain (
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformation (\r
-  IN CONST EFI_PEI_SERVICES                     **PeiServices,\r
-  IN OUT   UINT64                               *StructureSize,\r
-     OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
+  IN CONST EFI_PEI_SERVICES                  **PeiServices,\r
+  IN OUT   UINT64                            *StructureSize,\r
+  OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
   )\r
 {\r
   return EFI_SUCCESS;\r
index 2f77ab3aeb559b1f6a3565dcf06470e7e19b395a..a8e4f920fc9e7e90159729a07d9365bd1961d76d 100644 (file)
@@ -8,7 +8,7 @@
 \r
 #include "RegisterCpuFeatures.h"\r
 \r
-CHAR16 *mDependTypeStr[]   = {L"None", L"Thread", L"Core", L"Package", L"Invalid" };\r
+CHAR16  *mDependTypeStr[] = { L"None", L"Thread", L"Core", L"Package", L"Invalid" };\r
 \r
 /**\r
   Worker function to save PcdCpuFeaturesCapability.\r
@@ -19,11 +19,11 @@ CHAR16 *mDependTypeStr[]   = {L"None", L"Thread", L"Core", L"Package", L"Invalid
 **/\r
 VOID\r
 SetCapabilityPcd (\r
-  IN UINT8               *SupportedFeatureMask,\r
-  IN UINTN               BitMaskSize\r
+  IN UINT8  *SupportedFeatureMask,\r
+  IN UINTN  BitMaskSize\r
   )\r
 {\r
-  EFI_STATUS             Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = PcdSetPtrS (PcdCpuFeaturesCapability, &BitMaskSize, SupportedFeatureMask);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -37,11 +37,11 @@ SetCapabilityPcd (
 **/\r
 VOID\r
 SetSettingPcd (\r
-  IN UINT8               *SupportedFeatureMask,\r
-  IN UINTN               BitMaskSize\r
+  IN UINT8  *SupportedFeatureMask,\r
+  IN UINTN  BitMaskSize\r
   )\r
 {\r
-  EFI_STATUS             Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = PcdSetPtrS (PcdCpuFeaturesSetting, &BitMaskSize, SupportedFeatureMask);\r
   ASSERT_EFI_ERROR (Status);\r
@@ -54,14 +54,14 @@ SetSettingPcd (
 **/\r
 VOID\r
 FillProcessorInfo (\r
-  IN OUT REGISTER_CPU_FEATURE_INFORMATION        *CpuInfo\r
+  IN OUT REGISTER_CPU_FEATURE_INFORMATION  *CpuInfo\r
   )\r
 {\r
-  CPUID_VERSION_INFO_EAX Eax;\r
-  CPUID_VERSION_INFO_ECX Ecx;\r
-  CPUID_VERSION_INFO_EDX Edx;\r
-  UINT32                 DisplayedFamily;\r
-  UINT32                 DisplayedModel;\r
+  CPUID_VERSION_INFO_EAX  Eax;\r
+  CPUID_VERSION_INFO_ECX  Ecx;\r
+  CPUID_VERSION_INFO_EDX  Edx;\r
+  UINT32                  DisplayedFamily;\r
+  UINT32                  DisplayedModel;\r
 \r
   AsmCpuid (CPUID_VERSION_INFO, &Eax.Uint32, NULL, &Ecx.Uint32, &Edx.Uint32);\r
 \r
@@ -71,14 +71,14 @@ FillProcessorInfo (
   }\r
 \r
   DisplayedModel = Eax.Bits.Model;\r
-  if (Eax.Bits.FamilyId == 0x06 || Eax.Bits.FamilyId == 0x0f) {\r
+  if ((Eax.Bits.FamilyId == 0x06) || (Eax.Bits.FamilyId == 0x0f)) {\r
     DisplayedModel |= (Eax.Bits.ExtendedModelId << 4);\r
   }\r
 \r
-  CpuInfo->DisplayFamily = DisplayedFamily;\r
-  CpuInfo->DisplayModel  = DisplayedModel;\r
-  CpuInfo->SteppingId    = Eax.Bits.SteppingId;\r
-  CpuInfo->ProcessorType = Eax.Bits.ProcessorType;\r
+  CpuInfo->DisplayFamily              = DisplayedFamily;\r
+  CpuInfo->DisplayModel               = DisplayedModel;\r
+  CpuInfo->SteppingId                 = Eax.Bits.SteppingId;\r
+  CpuInfo->ProcessorType              = Eax.Bits.ProcessorType;\r
   CpuInfo->CpuIdVersionInfoEcx.Uint32 = Ecx.Uint32;\r
   CpuInfo->CpuIdVersionInfoEdx.Uint32 = Edx.Uint32;\r
 }\r
@@ -92,29 +92,29 @@ CpuInitDataInitialize (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  UINTN                                ProcessorNumber;\r
-  EFI_PROCESSOR_INFORMATION            ProcessorInfoBuffer;\r
-  CPU_FEATURES_ENTRY                   *CpuFeature;\r
-  CPU_FEATURES_INIT_ORDER              *InitOrder;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
-  LIST_ENTRY                           *Entry;\r
-  UINT32                               Core;\r
-  UINT32                               Package;\r
-  UINT32                               Thread;\r
-  EFI_CPU_PHYSICAL_LOCATION            *Location;\r
-  UINT32                               PackageIndex;\r
-  UINT32                               CoreIndex;\r
-  UINTN                                Pages;\r
-  UINT32                               FirstPackage;\r
-  UINT32                               *FirstCore;\r
-  UINT32                               *FirstThread;\r
-  ACPI_CPU_DATA                        *AcpiCpuData;\r
-  CPU_STATUS_INFORMATION               *CpuStatus;\r
-  UINT32                               *ThreadCountPerPackage;\r
-  UINT8                                *ThreadCountPerCore;\r
-  UINTN                                NumberOfCpus;\r
-  UINTN                                NumberOfEnabledProcessors;\r
+  EFI_STATUS                 Status;\r
+  UINTN                      ProcessorNumber;\r
+  EFI_PROCESSOR_INFORMATION  ProcessorInfoBuffer;\r
+  CPU_FEATURES_ENTRY         *CpuFeature;\r
+  CPU_FEATURES_INIT_ORDER    *InitOrder;\r
+  CPU_FEATURES_DATA          *CpuFeaturesData;\r
+  LIST_ENTRY                 *Entry;\r
+  UINT32                     Core;\r
+  UINT32                     Package;\r
+  UINT32                     Thread;\r
+  EFI_CPU_PHYSICAL_LOCATION  *Location;\r
+  UINT32                     PackageIndex;\r
+  UINT32                     CoreIndex;\r
+  UINTN                      Pages;\r
+  UINT32                     FirstPackage;\r
+  UINT32                     *FirstCore;\r
+  UINT32                     *FirstThread;\r
+  ACPI_CPU_DATA              *AcpiCpuData;\r
+  CPU_STATUS_INFORMATION     *CpuStatus;\r
+  UINT32                     *ThreadCountPerPackage;\r
+  UINT8                      *ThreadCountPerCore;\r
+  UINTN                      NumberOfCpus;\r
+  UINTN                      NumberOfEnabledProcessors;\r
 \r
   Core    = 0;\r
   Package = 0;\r
@@ -143,23 +143,24 @@ CpuInitDataInitialize (
     if (CpuFeature->GetConfigDataFunc != NULL) {\r
       CpuFeature->ConfigData = CpuFeature->GetConfigDataFunc (NumberOfCpus);\r
     }\r
+\r
     Entry = Entry->ForwardLink;\r
   }\r
 \r
-  CpuFeaturesData->NumberOfCpus = (UINT32) NumberOfCpus;\r
+  CpuFeaturesData->NumberOfCpus = (UINT32)NumberOfCpus;\r
 \r
   AcpiCpuData = GetAcpiCpuData ();\r
   ASSERT (AcpiCpuData != NULL);\r
-  CpuFeaturesData->AcpiCpuData= AcpiCpuData;\r
+  CpuFeaturesData->AcpiCpuData = AcpiCpuData;\r
 \r
   CpuStatus = &AcpiCpuData->CpuFeatureInitData.CpuStatus;\r
-  Location = AllocatePages (EFI_SIZE_TO_PAGES (sizeof (EFI_CPU_PHYSICAL_LOCATION) * NumberOfCpus));\r
+  Location  = AllocatePages (EFI_SIZE_TO_PAGES (sizeof (EFI_CPU_PHYSICAL_LOCATION) * NumberOfCpus));\r
   ASSERT (Location != NULL);\r
   ZeroMem (Location, sizeof (EFI_CPU_PHYSICAL_LOCATION) * NumberOfCpus);\r
   AcpiCpuData->CpuFeatureInitData.ApLocation = (EFI_PHYSICAL_ADDRESS)(UINTN)Location;\r
 \r
   for (ProcessorNumber = 0; ProcessorNumber < NumberOfCpus; ProcessorNumber++) {\r
-    InitOrder = &CpuFeaturesData->InitOrder[ProcessorNumber];\r
+    InitOrder                        = &CpuFeaturesData->InitOrder[ProcessorNumber];\r
     InitOrder->FeaturesSupportedMask = AllocateZeroPool (CpuFeaturesData->BitMaskSize);\r
     ASSERT (InitOrder->FeaturesSupportedMask != NULL);\r
     InitializeListHead (&InitOrder->OrderList);\r
@@ -182,12 +183,14 @@ CpuInitDataInitialize (
     if (Package < ProcessorInfoBuffer.Location.Package) {\r
       Package = ProcessorInfoBuffer.Location.Package;\r
     }\r
+\r
     //\r
     // Collect CPU max core count info.\r
     //\r
     if (Core < ProcessorInfoBuffer.Location.Core) {\r
       Core = ProcessorInfoBuffer.Location.Core;\r
     }\r
+\r
     //\r
     // Collect CPU max thread count info.\r
     //\r
@@ -195,13 +198,17 @@ CpuInitDataInitialize (
       Thread = ProcessorInfoBuffer.Location.Thread;\r
     }\r
   }\r
-  CpuStatus->PackageCount    = Package + 1;\r
-  CpuStatus->MaxCoreCount    = Core + 1;\r
-  CpuStatus->MaxThreadCount  = Thread + 1;\r
-  DEBUG ((DEBUG_INFO, "Processor Info: Package: %d, MaxCore : %d, MaxThread: %d\n",\r
-         CpuStatus->PackageCount,\r
-         CpuStatus->MaxCoreCount,\r
-         CpuStatus->MaxThreadCount));\r
+\r
+  CpuStatus->PackageCount   = Package + 1;\r
+  CpuStatus->MaxCoreCount   = Core + 1;\r
+  CpuStatus->MaxThreadCount = Thread + 1;\r
+  DEBUG ((\r
+    DEBUG_INFO,\r
+    "Processor Info: Package: %d, MaxCore : %d, MaxThread: %d\n",\r
+    CpuStatus->PackageCount,\r
+    CpuStatus->MaxCoreCount,\r
+    CpuStatus->MaxThreadCount\r
+    ));\r
 \r
   //\r
   // Collect valid core count in each package because not all cores are valid.\r
@@ -228,7 +235,10 @@ CpuInitDataInitialize (
       for (CoreIndex = 0; CoreIndex < CpuStatus->MaxCoreCount; CoreIndex++) {\r
         if (ThreadCountPerCore[PackageIndex * CpuStatus->MaxCoreCount + CoreIndex] != 0) {\r
           DEBUG ((\r
-            DEBUG_INFO, "  P%02d C%04d, Thread Count = %d\n", PackageIndex, CoreIndex,\r
+            DEBUG_INFO,\r
+            "  P%02d C%04d, Thread Count = %d\n",\r
+            PackageIndex,\r
+            CoreIndex,\r
             ThreadCountPerCore[PackageIndex * CpuStatus->MaxCoreCount + CoreIndex]\r
             ));\r
         }\r
@@ -248,13 +258,13 @@ CpuInitDataInitialize (
   Pages     = EFI_SIZE_TO_PAGES (CpuStatus->PackageCount * sizeof (UINT32) + CpuStatus->PackageCount * CpuStatus->MaxCoreCount * sizeof (UINT32));\r
   FirstCore = AllocatePages (Pages);\r
   ASSERT (FirstCore != NULL);\r
-  FirstThread  = FirstCore + CpuStatus->PackageCount;\r
+  FirstThread = FirstCore + CpuStatus->PackageCount;\r
 \r
   //\r
   // Set FirstPackage, FirstCore[], FirstThread[] to maximum package ID, core ID, thread ID.\r
   //\r
   FirstPackage = MAX_UINT32;\r
-  SetMem32 (FirstCore,   CpuStatus->PackageCount * sizeof (UINT32), MAX_UINT32);\r
+  SetMem32 (FirstCore, CpuStatus->PackageCount * sizeof (UINT32), MAX_UINT32);\r
   SetMem32 (FirstThread, CpuStatus->PackageCount * CpuStatus->MaxCoreCount * sizeof (UINT32), MAX_UINT32);\r
 \r
   for (ProcessorNumber = 0; ProcessorNumber < NumberOfCpus; ProcessorNumber++) {\r
@@ -263,7 +273,7 @@ CpuInitDataInitialize (
     //\r
     // Save the minimum package ID in the platform.\r
     //\r
-    FirstPackage                 = MIN (Location->Package, FirstPackage);\r
+    FirstPackage = MIN (Location->Package, FirstPackage);\r
 \r
     //\r
     // Save the minimum core ID per package.\r
@@ -274,9 +284,9 @@ CpuInitDataInitialize (
     // Save the minimum thread ID per core.\r
     //\r
     FirstThread[Location->Package * CpuStatus->MaxCoreCount + Location->Core] = MIN (\r
-      Location->Thread,\r
-      FirstThread[Location->Package * CpuStatus->MaxCoreCount + Location->Core]\r
-    );\r
+                                                                                  Location->Thread,\r
+                                                                                  FirstThread[Location->Package * CpuStatus->MaxCoreCount + Location->Core]\r
+                                                                                  );\r
   }\r
 \r
   //\r
@@ -293,13 +303,14 @@ CpuInitDataInitialize (
     // Set First.Die/Tile/Module for each thread assuming:\r
     //  single Die under each package, single Tile under each Die, single Module under each Tile\r
     //\r
-    CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Die = 1;\r
-    CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Tile = 1;\r
+    CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Die    = 1;\r
+    CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Tile   = 1;\r
     CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Module = 1;\r
 \r
     if (Location->Core == FirstCore[Location->Package]) {\r
       CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Core = 1;\r
     }\r
+\r
     if (Location->Thread == FirstThread[Location->Package * CpuStatus->MaxCoreCount + Location->Core]) {\r
       CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo.First.Thread = 1;\r
     }\r
@@ -318,14 +329,14 @@ CpuInitDataInitialize (
 **/\r
 VOID\r
 SupportedMaskOr (\r
-  IN UINT8               *SupportedFeatureMask,\r
-  IN UINT8               *OrFeatureBitMask,\r
-  IN UINT32              BitMaskSize\r
+  IN UINT8   *SupportedFeatureMask,\r
+  IN UINT8   *OrFeatureBitMask,\r
+  IN UINT32  BitMaskSize\r
   )\r
 {\r
-  UINTN                  Index;\r
-  UINT8                  *Data1;\r
-  UINT8                  *Data2;\r
+  UINTN  Index;\r
+  UINT8  *Data1;\r
+  UINT8  *Data2;\r
 \r
   Data1 = SupportedFeatureMask;\r
   Data2 = OrFeatureBitMask;\r
@@ -344,14 +355,14 @@ SupportedMaskOr (
 **/\r
 VOID\r
 SupportedMaskAnd (\r
-  IN       UINT8               *SupportedFeatureMask,\r
-  IN CONST UINT8               *AndFeatureBitMask,\r
-  IN       UINT32              BitMaskSize\r
+  IN       UINT8   *SupportedFeatureMask,\r
+  IN CONST UINT8   *AndFeatureBitMask,\r
+  IN       UINT32  BitMaskSize\r
   )\r
 {\r
-  UINTN                  Index;\r
-  UINT8                  *Data1;\r
-  CONST UINT8            *Data2;\r
+  UINTN        Index;\r
+  UINT8        *Data1;\r
+  CONST UINT8  *Data2;\r
 \r
   Data1 = SupportedFeatureMask;\r
   Data2 = AndFeatureBitMask;\r
@@ -369,14 +380,14 @@ SupportedMaskAnd (
 **/\r
 VOID\r
 SupportedMaskCleanBit (\r
-  IN UINT8               *SupportedFeatureMask,\r
-  IN UINT8               *AndFeatureBitMask,\r
-  IN UINT32              BitMaskSize\r
+  IN UINT8   *SupportedFeatureMask,\r
+  IN UINT8   *AndFeatureBitMask,\r
+  IN UINT32  BitMaskSize\r
   )\r
 {\r
-  UINTN                  Index;\r
-  UINT8                  *Data1;\r
-  UINT8                  *Data2;\r
+  UINTN  Index;\r
+  UINT8  *Data1;\r
+  UINT8  *Data2;\r
 \r
   Data1 = SupportedFeatureMask;\r
   Data2 = AndFeatureBitMask;\r
@@ -400,14 +411,14 @@ SupportedMaskCleanBit (
 **/\r
 BOOLEAN\r
 IsBitMaskMatch (\r
-  IN UINT8               *SupportedFeatureMask,\r
-  IN UINT8               *ComparedFeatureBitMask,\r
-  IN UINT32              BitMaskSize\r
+  IN UINT8   *SupportedFeatureMask,\r
+  IN UINT8   *ComparedFeatureBitMask,\r
+  IN UINT32  BitMaskSize\r
   )\r
 {\r
-  UINTN                  Index;\r
-  UINT8                  *Data1;\r
-  UINT8                  *Data2;\r
+  UINTN  Index;\r
+  UINT8  *Data1;\r
+  UINT8  *Data2;\r
 \r
   Data1 = SupportedFeatureMask;\r
   Data2 = ComparedFeatureBitMask;\r
@@ -416,6 +427,7 @@ IsBitMaskMatch (
       return TRUE;\r
     }\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -427,18 +439,18 @@ IsBitMaskMatch (
 VOID\r
 EFIAPI\r
 CollectProcessorData (\r
-  IN OUT VOID                          *Buffer\r
+  IN OUT VOID  *Buffer\r
   )\r
 {\r
-  UINTN                                ProcessorNumber;\r
-  CPU_FEATURES_ENTRY                   *CpuFeature;\r
-  REGISTER_CPU_FEATURE_INFORMATION     *CpuInfo;\r
-  LIST_ENTRY                           *Entry;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
+  UINTN                             ProcessorNumber;\r
+  CPU_FEATURES_ENTRY                *CpuFeature;\r
+  REGISTER_CPU_FEATURE_INFORMATION  *CpuInfo;\r
+  LIST_ENTRY                        *Entry;\r
+  CPU_FEATURES_DATA                 *CpuFeaturesData;\r
 \r
   CpuFeaturesData = (CPU_FEATURES_DATA *)Buffer;\r
   ProcessorNumber = GetProcessorIndex (CpuFeaturesData);\r
-  CpuInfo = &CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo;\r
+  CpuInfo         = &CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo;\r
   //\r
   // collect processor information\r
   //\r
@@ -462,6 +474,7 @@ CollectProcessorData (
         CpuFeaturesData->BitMaskSize\r
         );\r
     }\r
+\r
     Entry = Entry->ForwardLink;\r
   }\r
 }\r
@@ -475,15 +488,15 @@ CollectProcessorData (
 **/\r
 VOID\r
 DumpRegisterTableOnProcessor (\r
-  IN UINTN                             ProcessorNumber\r
+  IN UINTN  ProcessorNumber\r
   )\r
 {\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
-  UINTN                                FeatureIndex;\r
-  CPU_REGISTER_TABLE                   *RegisterTable;\r
-  CPU_REGISTER_TABLE_ENTRY             *RegisterTableEntry;\r
-  CPU_REGISTER_TABLE_ENTRY             *RegisterTableEntryHead;\r
-  UINT32                               DebugPrintErrorLevel;\r
+  CPU_FEATURES_DATA         *CpuFeaturesData;\r
+  UINTN                     FeatureIndex;\r
+  CPU_REGISTER_TABLE        *RegisterTable;\r
+  CPU_REGISTER_TABLE_ENTRY  *RegisterTableEntry;\r
+  CPU_REGISTER_TABLE_ENTRY  *RegisterTableEntryHead;\r
+  UINT32                    DebugPrintErrorLevel;\r
 \r
   DebugPrintErrorLevel = (ProcessorNumber == 0) ? DEBUG_INFO : DEBUG_VERBOSE;\r
   CpuFeaturesData      = GetCpuFeaturesData ();\r
@@ -493,71 +506,71 @@ DumpRegisterTableOnProcessor (
   RegisterTable = &CpuFeaturesData->RegisterTable[ProcessorNumber];\r
   DEBUG ((DebugPrintErrorLevel, "RegisterTable->TableLength = %d\n", RegisterTable->TableLength));\r
 \r
-  RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *) (UINTN) RegisterTable->RegisterTableEntry;\r
+  RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *)(UINTN)RegisterTable->RegisterTableEntry;\r
 \r
   for (FeatureIndex = 0; FeatureIndex < RegisterTable->TableLength; FeatureIndex++) {\r
     RegisterTableEntry = &RegisterTableEntryHead[FeatureIndex];\r
     switch (RegisterTableEntry->RegisterType) {\r
-    case Msr:\r
-      DEBUG ((\r
-        DebugPrintErrorLevel,\r
-        "Processor: %04d: Index %04d, MSR  : %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",\r
-        (UINT32) ProcessorNumber,\r
-        (UINT32) FeatureIndex,\r
-        RegisterTableEntry->Index,\r
-        RegisterTableEntry->ValidBitStart,\r
-        RegisterTableEntry->ValidBitLength,\r
-        RegisterTableEntry->Value\r
-        ));\r
-      break;\r
-    case ControlRegister:\r
-      DEBUG ((\r
-        DebugPrintErrorLevel,\r
-        "Processor: %04d: Index %04d, CR   : %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",\r
-        (UINT32) ProcessorNumber,\r
-        (UINT32) FeatureIndex,\r
-        RegisterTableEntry->Index,\r
-        RegisterTableEntry->ValidBitStart,\r
-        RegisterTableEntry->ValidBitLength,\r
-        RegisterTableEntry->Value\r
-        ));\r
-      break;\r
-    case MemoryMapped:\r
-      DEBUG ((\r
-        DebugPrintErrorLevel,\r
-        "Processor: %04d: Index %04d, MMIO : %016lx, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",\r
-        (UINT32) ProcessorNumber,\r
-        (UINT32) FeatureIndex,\r
-        RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32),\r
-        RegisterTableEntry->ValidBitStart,\r
-        RegisterTableEntry->ValidBitLength,\r
-        RegisterTableEntry->Value\r
-        ));\r
-      break;\r
-    case CacheControl:\r
-      DEBUG ((\r
-        DebugPrintErrorLevel,\r
-        "Processor: %04d: Index %04d, CACHE: %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",\r
-        (UINT32) ProcessorNumber,\r
-        (UINT32) FeatureIndex,\r
-        RegisterTableEntry->Index,\r
-        RegisterTableEntry->ValidBitStart,\r
-        RegisterTableEntry->ValidBitLength,\r
-        RegisterTableEntry->Value\r
-        ));\r
-      break;\r
-    case Semaphore:\r
-      DEBUG ((\r
-        DebugPrintErrorLevel,\r
-        "Processor: %04d: Index %04d, SEMAP: %s\r\n",\r
-        (UINT32) ProcessorNumber,\r
-        (UINT32) FeatureIndex,\r
-        mDependTypeStr[MIN ((UINT32)RegisterTableEntry->Value, InvalidDepType)]\r
-        ));\r
-      break;\r
+      case Msr:\r
+        DEBUG ((\r
+          DebugPrintErrorLevel,\r
+          "Processor: %04d: Index %04d, MSR  : %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",\r
+          (UINT32)ProcessorNumber,\r
+          (UINT32)FeatureIndex,\r
+          RegisterTableEntry->Index,\r
+          RegisterTableEntry->ValidBitStart,\r
+          RegisterTableEntry->ValidBitLength,\r
+          RegisterTableEntry->Value\r
+          ));\r
+        break;\r
+      case ControlRegister:\r
+        DEBUG ((\r
+          DebugPrintErrorLevel,\r
+          "Processor: %04d: Index %04d, CR   : %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",\r
+          (UINT32)ProcessorNumber,\r
+          (UINT32)FeatureIndex,\r
+          RegisterTableEntry->Index,\r
+          RegisterTableEntry->ValidBitStart,\r
+          RegisterTableEntry->ValidBitLength,\r
+          RegisterTableEntry->Value\r
+          ));\r
+        break;\r
+      case MemoryMapped:\r
+        DEBUG ((\r
+          DebugPrintErrorLevel,\r
+          "Processor: %04d: Index %04d, MMIO : %016lx, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",\r
+          (UINT32)ProcessorNumber,\r
+          (UINT32)FeatureIndex,\r
+          RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32),\r
+          RegisterTableEntry->ValidBitStart,\r
+          RegisterTableEntry->ValidBitLength,\r
+          RegisterTableEntry->Value\r
+          ));\r
+        break;\r
+      case CacheControl:\r
+        DEBUG ((\r
+          DebugPrintErrorLevel,\r
+          "Processor: %04d: Index %04d, CACHE: %08x, Bit Start: %02d, Bit Length: %02d, Value: %016lx\r\n",\r
+          (UINT32)ProcessorNumber,\r
+          (UINT32)FeatureIndex,\r
+          RegisterTableEntry->Index,\r
+          RegisterTableEntry->ValidBitStart,\r
+          RegisterTableEntry->ValidBitLength,\r
+          RegisterTableEntry->Value\r
+          ));\r
+        break;\r
+      case Semaphore:\r
+        DEBUG ((\r
+          DebugPrintErrorLevel,\r
+          "Processor: %04d: Index %04d, SEMAP: %s\r\n",\r
+          (UINT32)ProcessorNumber,\r
+          (UINT32)FeatureIndex,\r
+          mDependTypeStr[MIN ((UINT32)RegisterTableEntry->Value, InvalidDepType)]\r
+          ));\r
+        break;\r
 \r
-    default:\r
-      break;\r
+      default:\r
+        break;\r
     }\r
   }\r
 }\r
@@ -581,11 +594,11 @@ BiggestDep (
   IN CPU_FEATURE_DEPENDENCE_TYPE  NoneNeibAfterDep\r
   )\r
 {\r
-  CPU_FEATURE_DEPENDENCE_TYPE Bigger;\r
+  CPU_FEATURE_DEPENDENCE_TYPE  Bigger;\r
 \r
   Bigger = MAX (BeforeDep, AfterDep);\r
   Bigger = MAX (Bigger, NoneNeibBeforeDep);\r
-  return MAX(Bigger, NoneNeibAfterDep);\r
+  return MAX (Bigger, NoneNeibAfterDep);\r
 }\r
 \r
 /**\r
@@ -596,26 +609,26 @@ BiggestDep (
 **/\r
 VOID\r
 AnalysisProcessorFeatures (\r
-  IN UINTN                             NumberOfCpus\r
+  IN UINTN  NumberOfCpus\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  UINTN                                ProcessorNumber;\r
-  CPU_FEATURES_ENTRY                   *CpuFeature;\r
-  CPU_FEATURES_ENTRY                   *CpuFeatureInOrder;\r
-  CPU_FEATURES_INIT_ORDER              *CpuInitOrder;\r
-  REGISTER_CPU_FEATURE_INFORMATION     *CpuInfo;\r
-  LIST_ENTRY                           *Entry;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
-  LIST_ENTRY                           *NextEntry;\r
-  CPU_FEATURES_ENTRY                   *NextCpuFeatureInOrder;\r
-  BOOLEAN                              Success;\r
-  CPU_FEATURE_DEPENDENCE_TYPE          BeforeDep;\r
-  CPU_FEATURE_DEPENDENCE_TYPE          AfterDep;\r
-  CPU_FEATURE_DEPENDENCE_TYPE          NoneNeibBeforeDep;\r
-  CPU_FEATURE_DEPENDENCE_TYPE          NoneNeibAfterDep;\r
-\r
-  CpuFeaturesData = GetCpuFeaturesData ();\r
+  EFI_STATUS                        Status;\r
+  UINTN                             ProcessorNumber;\r
+  CPU_FEATURES_ENTRY                *CpuFeature;\r
+  CPU_FEATURES_ENTRY                *CpuFeatureInOrder;\r
+  CPU_FEATURES_INIT_ORDER           *CpuInitOrder;\r
+  REGISTER_CPU_FEATURE_INFORMATION  *CpuInfo;\r
+  LIST_ENTRY                        *Entry;\r
+  CPU_FEATURES_DATA                 *CpuFeaturesData;\r
+  LIST_ENTRY                        *NextEntry;\r
+  CPU_FEATURES_ENTRY                *NextCpuFeatureInOrder;\r
+  BOOLEAN                           Success;\r
+  CPU_FEATURE_DEPENDENCE_TYPE       BeforeDep;\r
+  CPU_FEATURE_DEPENDENCE_TYPE       AfterDep;\r
+  CPU_FEATURE_DEPENDENCE_TYPE       NoneNeibBeforeDep;\r
+  CPU_FEATURE_DEPENDENCE_TYPE       NoneNeibAfterDep;\r
+\r
+  CpuFeaturesData                = GetCpuFeaturesData ();\r
   CpuFeaturesData->CapabilityPcd = AllocatePool (CpuFeaturesData->BitMaskSize);\r
   ASSERT (CpuFeaturesData->CapabilityPcd != NULL);\r
   SetMem (CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize, 0xFF);\r
@@ -626,6 +639,7 @@ AnalysisProcessorFeatures (
     //\r
     SupportedMaskAnd (CpuFeaturesData->CapabilityPcd, CpuInitOrder->FeaturesSupportedMask, CpuFeaturesData->BitMaskSize);\r
   }\r
+\r
   //\r
   // Calculate the last setting\r
   //\r
@@ -637,28 +651,30 @@ AnalysisProcessorFeatures (
   // Dump the last CPU feature list\r
   //\r
   DEBUG_CODE_BEGIN ();\r
-    DEBUG ((DEBUG_INFO, "Last CPU features list...\n"));\r
-    Entry = GetFirstNode (&CpuFeaturesData->FeatureList);\r
-    while (!IsNull (&CpuFeaturesData->FeatureList, Entry)) {\r
-      CpuFeature = CPU_FEATURE_ENTRY_FROM_LINK (Entry);\r
-      if (IsBitMaskMatch (CpuFeature->FeatureMask, CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize)) {\r
-        if (IsBitMaskMatch (CpuFeature->FeatureMask, CpuFeaturesData->SettingPcd, CpuFeaturesData->BitMaskSize)) {\r
-          DEBUG ((DEBUG_INFO, "[Enable   ] "));\r
-        } else {\r
-          DEBUG ((DEBUG_INFO, "[Disable  ] "));\r
-        }\r
+  DEBUG ((DEBUG_INFO, "Last CPU features list...\n"));\r
+  Entry = GetFirstNode (&CpuFeaturesData->FeatureList);\r
+  while (!IsNull (&CpuFeaturesData->FeatureList, Entry)) {\r
+    CpuFeature = CPU_FEATURE_ENTRY_FROM_LINK (Entry);\r
+    if (IsBitMaskMatch (CpuFeature->FeatureMask, CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize)) {\r
+      if (IsBitMaskMatch (CpuFeature->FeatureMask, CpuFeaturesData->SettingPcd, CpuFeaturesData->BitMaskSize)) {\r
+        DEBUG ((DEBUG_INFO, "[Enable   ] "));\r
       } else {\r
-        DEBUG ((DEBUG_INFO, "[Unsupport] "));\r
+        DEBUG ((DEBUG_INFO, "[Disable  ] "));\r
       }\r
-      DumpCpuFeature (CpuFeature, CpuFeaturesData->BitMaskSize);\r
-      Entry = Entry->ForwardLink;\r
+    } else {\r
+      DEBUG ((DEBUG_INFO, "[Unsupport] "));\r
     }\r
-    DEBUG ((DEBUG_INFO, "PcdCpuFeaturesCapability:\n"));\r
-    DumpCpuFeatureMask (CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize);\r
-    DEBUG ((DEBUG_INFO, "Origin PcdCpuFeaturesSetting:\n"));\r
-    DumpCpuFeatureMask (PcdGetPtr (PcdCpuFeaturesSetting), CpuFeaturesData->BitMaskSize);\r
-    DEBUG ((DEBUG_INFO, "Final PcdCpuFeaturesSetting:\n"));\r
-    DumpCpuFeatureMask (CpuFeaturesData->SettingPcd, CpuFeaturesData->BitMaskSize);\r
+\r
+    DumpCpuFeature (CpuFeature, CpuFeaturesData->BitMaskSize);\r
+    Entry = Entry->ForwardLink;\r
+  }\r
+\r
+  DEBUG ((DEBUG_INFO, "PcdCpuFeaturesCapability:\n"));\r
+  DumpCpuFeatureMask (CpuFeaturesData->CapabilityPcd, CpuFeaturesData->BitMaskSize);\r
+  DEBUG ((DEBUG_INFO, "Origin PcdCpuFeaturesSetting:\n"));\r
+  DumpCpuFeatureMask (PcdGetPtr (PcdCpuFeaturesSetting), CpuFeaturesData->BitMaskSize);\r
+  DEBUG ((DEBUG_INFO, "Final PcdCpuFeaturesSetting:\n"));\r
+  DumpCpuFeatureMask (CpuFeaturesData->SettingPcd, CpuFeaturesData->BitMaskSize);\r
   DEBUG_CODE_END ();\r
 \r
   //\r
@@ -669,7 +685,7 @@ AnalysisProcessorFeatures (
 \r
   for (ProcessorNumber = 0; ProcessorNumber < NumberOfCpus; ProcessorNumber++) {\r
     CpuInitOrder = &CpuFeaturesData->InitOrder[ProcessorNumber];\r
-    Entry = GetFirstNode (&CpuFeaturesData->FeatureList);\r
+    Entry        = GetFirstNode (&CpuFeaturesData->FeatureList);\r
     while (!IsNull (&CpuFeaturesData->FeatureList, Entry)) {\r
       //\r
       // Insert each feature into processor's order list\r
@@ -680,13 +696,15 @@ AnalysisProcessorFeatures (
         ASSERT (CpuFeatureInOrder != NULL);\r
         InsertTailList (&CpuInitOrder->OrderList, &CpuFeatureInOrder->Link);\r
       }\r
+\r
       Entry = Entry->ForwardLink;\r
     }\r
+\r
     //\r
     // Go through ordered feature list to initialize CPU features\r
     //\r
     CpuInfo = &CpuFeaturesData->InitOrder[ProcessorNumber].CpuInfo;\r
-    Entry = GetFirstNode (&CpuInitOrder->OrderList);\r
+    Entry   = GetFirstNode (&CpuInitOrder->OrderList);\r
     while (!IsNull (&CpuInitOrder->OrderList, Entry)) {\r
       CpuFeatureInOrder = CPU_FEATURE_ENTRY_FROM_LINK (Entry);\r
 \r
@@ -736,23 +754,24 @@ AnalysisProcessorFeatures (
           // Check whether next feature has After type dependence with not neighborhood CPU\r
           // Features in former CPU features.\r
           //\r
-          NoneNeibAfterDep = DetectNoneNeighborhoodFeatureScope(NextCpuFeatureInOrder, FALSE, &CpuInitOrder->OrderList);\r
+          NoneNeibAfterDep = DetectNoneNeighborhoodFeatureScope (NextCpuFeatureInOrder, FALSE, &CpuInitOrder->OrderList);\r
         } else {\r
           BeforeDep        = NoneDepType;\r
           AfterDep         = NoneDepType;\r
           NoneNeibAfterDep = NoneDepType;\r
         }\r
+\r
         //\r
         // Check whether current feature has Before type dependence with none neighborhood\r
         // CPU features in after Cpu features.\r
         //\r
-        NoneNeibBeforeDep = DetectNoneNeighborhoodFeatureScope(CpuFeatureInOrder, TRUE, &CpuInitOrder->OrderList);\r
+        NoneNeibBeforeDep = DetectNoneNeighborhoodFeatureScope (CpuFeatureInOrder, TRUE, &CpuInitOrder->OrderList);\r
 \r
         //\r
         // Get the biggest dependence and add semaphore for it.\r
         // PackageDepType > CoreDepType > ThreadDepType > NoneDepType.\r
         //\r
-        BeforeDep = BiggestDep(BeforeDep, AfterDep, NoneNeibBeforeDep, NoneNeibAfterDep);\r
+        BeforeDep = BiggestDep (BeforeDep, AfterDep, NoneNeibBeforeDep, NoneNeibAfterDep);\r
         if (BeforeDep > ThreadDepType) {\r
           CPU_REGISTER_TABLE_WRITE32 (ProcessorNumber, Semaphore, 0, BeforeDep);\r
         }\r
@@ -783,7 +802,7 @@ AnalysisProcessorFeatures (
 **/\r
 VOID\r
 LibReleaseSemaphore (\r
-  IN OUT  volatile UINT32           *Sem\r
+  IN OUT  volatile UINT32  *Sem\r
   )\r
 {\r
   InterlockedIncrement (Sem);\r
@@ -801,7 +820,7 @@ LibReleaseSemaphore (
 **/\r
 VOID\r
 LibWaitForSemaphore (\r
-  IN OUT  volatile UINT32           *Sem\r
+  IN OUT  volatile UINT32  *Sem\r
   )\r
 {\r
   UINT32  Value;\r
@@ -827,42 +846,46 @@ LibWaitForSemaphore (
 **/\r
 UINTN\r
 ReadWriteCr (\r
-  IN     UINT32       CrIndex,\r
-  IN     BOOLEAN      Read,\r
-  IN OUT UINTN        *CrValue\r
+  IN     UINT32   CrIndex,\r
+  IN     BOOLEAN  Read,\r
+  IN OUT UINTN    *CrValue\r
   )\r
 {\r
   switch (CrIndex) {\r
-  case 0:\r
-    if (Read) {\r
-      *CrValue = AsmReadCr0 ();\r
-    } else {\r
-      AsmWriteCr0 (*CrValue);\r
-    }\r
-    break;\r
-  case 2:\r
-    if (Read) {\r
-      *CrValue = AsmReadCr2 ();\r
-    } else {\r
-      AsmWriteCr2 (*CrValue);\r
-    }\r
-    break;\r
-  case 3:\r
-    if (Read) {\r
-      *CrValue = AsmReadCr3 ();\r
-    } else {\r
-      AsmWriteCr3 (*CrValue);\r
-    }\r
-    break;\r
-  case 4:\r
-    if (Read) {\r
-      *CrValue = AsmReadCr4 ();\r
-    } else {\r
-      AsmWriteCr4 (*CrValue);\r
-    }\r
-    break;\r
-  default:\r
-    return EFI_UNSUPPORTED;;\r
+    case 0:\r
+      if (Read) {\r
+        *CrValue = AsmReadCr0 ();\r
+      } else {\r
+        AsmWriteCr0 (*CrValue);\r
+      }\r
+\r
+      break;\r
+    case 2:\r
+      if (Read) {\r
+        *CrValue = AsmReadCr2 ();\r
+      } else {\r
+        AsmWriteCr2 (*CrValue);\r
+      }\r
+\r
+      break;\r
+    case 3:\r
+      if (Read) {\r
+        *CrValue = AsmReadCr3 ();\r
+      } else {\r
+        AsmWriteCr3 (*CrValue);\r
+      }\r
+\r
+      break;\r
+    case 4:\r
+      if (Read) {\r
+        *CrValue = AsmReadCr4 ();\r
+      } else {\r
+        AsmWriteCr4 (*CrValue);\r
+      }\r
+\r
+      break;\r
+    default:\r
+      return EFI_UNSUPPORTED;\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -880,10 +903,10 @@ ReadWriteCr (
 **/\r
 VOID\r
 ProgramProcessorRegister (\r
-  IN CPU_REGISTER_TABLE           *RegisterTable,\r
-  IN EFI_CPU_PHYSICAL_LOCATION    *ApLocation,\r
-  IN CPU_STATUS_INFORMATION       *CpuStatus,\r
-  IN PROGRAM_CPU_REGISTER_FLAGS   *CpuFlags\r
+  IN CPU_REGISTER_TABLE          *RegisterTable,\r
+  IN EFI_CPU_PHYSICAL_LOCATION   *ApLocation,\r
+  IN CPU_STATUS_INFORMATION      *CpuStatus,\r
+  IN PROGRAM_CPU_REGISTER_FLAGS  *CpuFlags\r
   )\r
 {\r
   CPU_REGISTER_TABLE_ENTRY  *RegisterTableEntry;\r
@@ -903,54 +926,25 @@ ProgramProcessorRegister (
   //\r
   // Traverse Register Table of this logical processor\r
   //\r
-  RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *) (UINTN) RegisterTable->RegisterTableEntry;\r
+  RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *)(UINTN)RegisterTable->RegisterTableEntry;\r
 \r
   for (Index = 0; Index < RegisterTable->TableLength; Index++) {\r
-\r
     RegisterTableEntry = &RegisterTableEntryHead[Index];\r
 \r
     //\r
     // Check the type of specified register\r
     //\r
     switch (RegisterTableEntry->RegisterType) {\r
-    //\r
-    // The specified register is Control Register\r
-    //\r
-    case ControlRegister:\r
-      Status = ReadWriteCr (RegisterTableEntry->Index, TRUE, &Value);\r
-      if (EFI_ERROR (Status)) {\r
-        break;\r
-      }\r
-      if (RegisterTableEntry->TestThenWrite) {\r
-        CurrentValue = BitFieldRead64 (\r
-                         Value,\r
-                         RegisterTableEntry->ValidBitStart,\r
-                         RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1\r
-                         );\r
-        if (CurrentValue == RegisterTableEntry->Value) {\r
+      //\r
+      // The specified register is Control Register\r
+      //\r
+      case ControlRegister:\r
+        Status = ReadWriteCr (RegisterTableEntry->Index, TRUE, &Value);\r
+        if (EFI_ERROR (Status)) {\r
           break;\r
         }\r
-      }\r
-      Value = (UINTN) BitFieldWrite64 (\r
-                        Value,\r
-                        RegisterTableEntry->ValidBitStart,\r
-                        RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
-                        RegisterTableEntry->Value\r
-                        );\r
-      ReadWriteCr (RegisterTableEntry->Index, FALSE, &Value);\r
-      break;\r
 \r
-    //\r
-    // The specified register is Model Specific Register\r
-    //\r
-    case Msr:\r
-      if (RegisterTableEntry->TestThenWrite) {\r
-        Value = (UINTN)AsmReadMsr64 (RegisterTableEntry->Index);\r
-        if (RegisterTableEntry->ValidBitLength >= 64) {\r
-          if (Value == RegisterTableEntry->Value) {\r
-            break;\r
-          }\r
-        } else {\r
+        if (RegisterTableEntry->TestThenWrite) {\r
           CurrentValue = BitFieldRead64 (\r
                            Value,\r
                            RegisterTableEntry->ValidBitStart,\r
@@ -960,153 +954,190 @@ ProgramProcessorRegister (
             break;\r
           }\r
         }\r
-      }\r
 \r
-      if (RegisterTableEntry->ValidBitLength >= 64) {\r
-        //\r
-        // If length is not less than 64 bits, then directly write without reading\r
-        //\r
-        AsmWriteMsr64 (\r
-          RegisterTableEntry->Index,\r
-          RegisterTableEntry->Value\r
-          );\r
-      } else {\r
-        //\r
-        // Set the bit section according to bit start and length\r
-        //\r
-        AsmMsrBitFieldWrite64 (\r
-          RegisterTableEntry->Index,\r
-          RegisterTableEntry->ValidBitStart,\r
-          RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
-          RegisterTableEntry->Value\r
-          );\r
-      }\r
-      break;\r
-    //\r
-    // MemoryMapped operations\r
-    //\r
-    case MemoryMapped:\r
-      AcquireSpinLock (&CpuFlags->MemoryMappedLock);\r
-      MmioBitFieldWrite32 (\r
-        (UINTN)(RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32)),\r
-        RegisterTableEntry->ValidBitStart,\r
-        RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
-        (UINT32)RegisterTableEntry->Value\r
-        );\r
-      ReleaseSpinLock (&CpuFlags->MemoryMappedLock);\r
-      break;\r
-    //\r
-    // Enable or disable cache\r
-    //\r
-    case CacheControl:\r
-      //\r
-      // If value of the entry is 0, then disable cache.  Otherwise, enable cache.\r
-      //\r
-      if (RegisterTableEntry->Value == 0) {\r
-        AsmDisableCache ();\r
-      } else {\r
-        AsmEnableCache ();\r
-      }\r
-      break;\r
+        Value = (UINTN)BitFieldWrite64 (\r
+                         Value,\r
+                         RegisterTableEntry->ValidBitStart,\r
+                         RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
+                         RegisterTableEntry->Value\r
+                         );\r
+        ReadWriteCr (RegisterTableEntry->Index, FALSE, &Value);\r
+        break;\r
 \r
-    case Semaphore:\r
-      // Semaphore works logic like below:\r
       //\r
-      //  V(x) = LibReleaseSemaphore (Semaphore[FirstThread + x]);\r
-      //  P(x) = LibWaitForSemaphore (Semaphore[FirstThread + x]);\r
+      // The specified register is Model Specific Register\r
       //\r
-      //  All threads (T0...Tn) waits in P() line and continues running\r
-      //  together.\r
+      case Msr:\r
+        if (RegisterTableEntry->TestThenWrite) {\r
+          Value = (UINTN)AsmReadMsr64 (RegisterTableEntry->Index);\r
+          if (RegisterTableEntry->ValidBitLength >= 64) {\r
+            if (Value == RegisterTableEntry->Value) {\r
+              break;\r
+            }\r
+          } else {\r
+            CurrentValue = BitFieldRead64 (\r
+                             Value,\r
+                             RegisterTableEntry->ValidBitStart,\r
+                             RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1\r
+                             );\r
+            if (CurrentValue == RegisterTableEntry->Value) {\r
+              break;\r
+            }\r
+          }\r
+        }\r
+\r
+        if (RegisterTableEntry->ValidBitLength >= 64) {\r
+          //\r
+          // If length is not less than 64 bits, then directly write without reading\r
+          //\r
+          AsmWriteMsr64 (\r
+            RegisterTableEntry->Index,\r
+            RegisterTableEntry->Value\r
+            );\r
+        } else {\r
+          //\r
+          // Set the bit section according to bit start and length\r
+          //\r
+          AsmMsrBitFieldWrite64 (\r
+            RegisterTableEntry->Index,\r
+            RegisterTableEntry->ValidBitStart,\r
+            RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
+            RegisterTableEntry->Value\r
+            );\r
+        }\r
+\r
+        break;\r
       //\r
+      // MemoryMapped operations\r
       //\r
-      //  T0             T1            ...           Tn\r
+      case MemoryMapped:\r
+        AcquireSpinLock (&CpuFlags->MemoryMappedLock);\r
+        MmioBitFieldWrite32 (\r
+          (UINTN)(RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32)),\r
+          RegisterTableEntry->ValidBitStart,\r
+          RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
+          (UINT32)RegisterTableEntry->Value\r
+          );\r
+        ReleaseSpinLock (&CpuFlags->MemoryMappedLock);\r
+        break;\r
       //\r
-      //  V(0...n)       V(0...n)      ...           V(0...n)\r
-      //  n * P(0)       n * P(1)      ...           n * P(n)\r
+      // Enable or disable cache\r
       //\r
-      switch (RegisterTableEntry->Value) {\r
-      case CoreDepType:\r
-        SemaphorePtr = CpuFlags->CoreSemaphoreCount;\r
-        ThreadCountPerCore = (UINT8 *)(UINTN)CpuStatus->ThreadCountPerCore;\r
-\r
-        CurrentCore = ApLocation->Package * CpuStatus->MaxCoreCount + ApLocation->Core;\r
+      case CacheControl:\r
         //\r
-        // Get Offset info for the first thread in the core which current thread belongs to.\r
+        // If value of the entry is 0, then disable cache.  Otherwise, enable cache.\r
         //\r
-        FirstThread   = CurrentCore * CpuStatus->MaxThreadCount;\r
-        CurrentThread = FirstThread + ApLocation->Thread;\r
-\r
-        //\r
-        // Different cores may have different valid threads in them. If driver maintail clearly\r
-        // thread index in different cores, the logic will be much complicated.\r
-        // Here driver just simply records the max thread number in all cores and use it as expect\r
-        // thread number for all cores.\r
-        // In below two steps logic, first current thread will Release semaphore for each thread\r
-        // in current core. Maybe some threads are not valid in this core, but driver don't\r
-        // care. Second, driver will let current thread wait semaphore for all valid threads in\r
-        // current core. Because only the valid threads will do release semaphore for this\r
-        // thread, driver here only need to wait the valid thread count.\r
-        //\r
-\r
-        //\r
-        // First Notify ALL THREADs in current Core that this thread is ready.\r
-        //\r
-        for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount; ProcessorIndex ++) {\r
-          LibReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);\r
-        }\r
-        //\r
-        // Second, check whether all VALID THREADs (not all threads) in current core are ready.\r
-        //\r
-        for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerCore[CurrentCore]; ProcessorIndex ++) {\r
-          LibWaitForSemaphore (&SemaphorePtr[CurrentThread]);\r
+        if (RegisterTableEntry->Value == 0) {\r
+          AsmDisableCache ();\r
+        } else {\r
+          AsmEnableCache ();\r
         }\r
+\r
         break;\r
 \r
-      case PackageDepType:\r
-        SemaphorePtr = CpuFlags->PackageSemaphoreCount;\r
-        ThreadCountPerPackage = (UINT32 *)(UINTN)CpuStatus->ThreadCountPerPackage;\r
+      case Semaphore:\r
+        // Semaphore works logic like below:\r
         //\r
-        // Get Offset info for the first thread in the package which current thread belongs to.\r
+        //  V(x) = LibReleaseSemaphore (Semaphore[FirstThread + x]);\r
+        //  P(x) = LibWaitForSemaphore (Semaphore[FirstThread + x]);\r
         //\r
-        FirstThread = ApLocation->Package * CpuStatus->MaxCoreCount * CpuStatus->MaxThreadCount;\r
+        //  All threads (T0...Tn) waits in P() line and continues running\r
+        //  together.\r
         //\r
-        // Get the possible threads count for current package.\r
         //\r
-        CurrentThread = FirstThread + CpuStatus->MaxThreadCount * ApLocation->Core + ApLocation->Thread;\r
-\r
+        //  T0             T1            ...           Tn\r
         //\r
-        // Different packages may have different valid threads in them. If driver maintail clearly\r
-        // thread index in different packages, the logic will be much complicated.\r
-        // Here driver just simply records the max thread number in all packages and use it as expect\r
-        // thread number for all packages.\r
-        // In below two steps logic, first current thread will Release semaphore for each thread\r
-        // in current package. Maybe some threads are not valid in this package, but driver don't\r
-        // care. Second, driver will let current thread wait semaphore for all valid threads in\r
-        // current package. Because only the valid threads will do release semaphore for this\r
-        // thread, driver here only need to wait the valid thread count.\r
+        //  V(0...n)       V(0...n)      ...           V(0...n)\r
+        //  n * P(0)       n * P(1)      ...           n * P(n)\r
         //\r
+        switch (RegisterTableEntry->Value) {\r
+          case CoreDepType:\r
+            SemaphorePtr       = CpuFlags->CoreSemaphoreCount;\r
+            ThreadCountPerCore = (UINT8 *)(UINTN)CpuStatus->ThreadCountPerCore;\r
+\r
+            CurrentCore = ApLocation->Package * CpuStatus->MaxCoreCount + ApLocation->Core;\r
+            //\r
+            // Get Offset info for the first thread in the core which current thread belongs to.\r
+            //\r
+            FirstThread   = CurrentCore * CpuStatus->MaxThreadCount;\r
+            CurrentThread = FirstThread + ApLocation->Thread;\r
+\r
+            //\r
+            // Different cores may have different valid threads in them. If driver maintail clearly\r
+            // thread index in different cores, the logic will be much complicated.\r
+            // Here driver just simply records the max thread number in all cores and use it as expect\r
+            // thread number for all cores.\r
+            // In below two steps logic, first current thread will Release semaphore for each thread\r
+            // in current core. Maybe some threads are not valid in this core, but driver don't\r
+            // care. Second, driver will let current thread wait semaphore for all valid threads in\r
+            // current core. Because only the valid threads will do release semaphore for this\r
+            // thread, driver here only need to wait the valid thread count.\r
+            //\r
+\r
+            //\r
+            // First Notify ALL THREADs in current Core that this thread is ready.\r
+            //\r
+            for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount; ProcessorIndex++) {\r
+              LibReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);\r
+            }\r
+\r
+            //\r
+            // Second, check whether all VALID THREADs (not all threads) in current core are ready.\r
+            //\r
+            for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerCore[CurrentCore]; ProcessorIndex++) {\r
+              LibWaitForSemaphore (&SemaphorePtr[CurrentThread]);\r
+            }\r
 \r
-        //\r
-        // First Notify ALL THREADS in current package that this thread is ready.\r
-        //\r
-        for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount * CpuStatus->MaxCoreCount; ProcessorIndex ++) {\r
-          LibReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);\r
-        }\r
-        //\r
-        // Second, check whether VALID THREADS (not all threads) in current package are ready.\r
-        //\r
-        for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerPackage[ApLocation->Package]; ProcessorIndex ++) {\r
-          LibWaitForSemaphore (&SemaphorePtr[CurrentThread]);\r
+            break;\r
+\r
+          case PackageDepType:\r
+            SemaphorePtr          = CpuFlags->PackageSemaphoreCount;\r
+            ThreadCountPerPackage = (UINT32 *)(UINTN)CpuStatus->ThreadCountPerPackage;\r
+            //\r
+            // Get Offset info for the first thread in the package which current thread belongs to.\r
+            //\r
+            FirstThread = ApLocation->Package * CpuStatus->MaxCoreCount * CpuStatus->MaxThreadCount;\r
+            //\r
+            // Get the possible threads count for current package.\r
+            //\r
+            CurrentThread = FirstThread + CpuStatus->MaxThreadCount * ApLocation->Core + ApLocation->Thread;\r
+\r
+            //\r
+            // Different packages may have different valid threads in them. If driver maintail clearly\r
+            // thread index in different packages, the logic will be much complicated.\r
+            // Here driver just simply records the max thread number in all packages and use it as expect\r
+            // thread number for all packages.\r
+            // In below two steps logic, first current thread will Release semaphore for each thread\r
+            // in current package. Maybe some threads are not valid in this package, but driver don't\r
+            // care. Second, driver will let current thread wait semaphore for all valid threads in\r
+            // current package. Because only the valid threads will do release semaphore for this\r
+            // thread, driver here only need to wait the valid thread count.\r
+            //\r
+\r
+            //\r
+            // First Notify ALL THREADS in current package that this thread is ready.\r
+            //\r
+            for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount * CpuStatus->MaxCoreCount; ProcessorIndex++) {\r
+              LibReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);\r
+            }\r
+\r
+            //\r
+            // Second, check whether VALID THREADS (not all threads) in current package are ready.\r
+            //\r
+            for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerPackage[ApLocation->Package]; ProcessorIndex++) {\r
+              LibWaitForSemaphore (&SemaphorePtr[CurrentThread]);\r
+            }\r
+\r
+            break;\r
+\r
+          default:\r
+            break;\r
         }\r
+\r
         break;\r
 \r
       default:\r
         break;\r
-      }\r
-      break;\r
-\r
-    default:\r
-      break;\r
     }\r
   }\r
 }\r
@@ -1120,32 +1151,33 @@ ProgramProcessorRegister (
 VOID\r
 EFIAPI\r
 SetProcessorRegister (\r
-  IN OUT VOID            *Buffer\r
+  IN OUT VOID  *Buffer\r
   )\r
 {\r
-  CPU_FEATURES_DATA         *CpuFeaturesData;\r
-  CPU_REGISTER_TABLE        *RegisterTable;\r
-  CPU_REGISTER_TABLE        *RegisterTables;\r
-  UINT32                    InitApicId;\r
-  UINTN                     ProcIndex;\r
-  UINTN                     Index;\r
-  ACPI_CPU_DATA             *AcpiCpuData;\r
+  CPU_FEATURES_DATA   *CpuFeaturesData;\r
+  CPU_REGISTER_TABLE  *RegisterTable;\r
+  CPU_REGISTER_TABLE  *RegisterTables;\r
+  UINT32              InitApicId;\r
+  UINTN               ProcIndex;\r
+  UINTN               Index;\r
+  ACPI_CPU_DATA       *AcpiCpuData;\r
 \r
-  CpuFeaturesData = (CPU_FEATURES_DATA *) Buffer;\r
-  AcpiCpuData = CpuFeaturesData->AcpiCpuData;\r
+  CpuFeaturesData = (CPU_FEATURES_DATA *)Buffer;\r
+  AcpiCpuData     = CpuFeaturesData->AcpiCpuData;\r
 \r
   RegisterTables = (CPU_REGISTER_TABLE *)(UINTN)AcpiCpuData->CpuFeatureInitData.RegisterTable;\r
 \r
-  InitApicId = GetInitialApicId ();\r
+  InitApicId    = GetInitialApicId ();\r
   RegisterTable = NULL;\r
-  ProcIndex = (UINTN)-1;\r
+  ProcIndex     = (UINTN)-1;\r
   for (Index = 0; Index < AcpiCpuData->NumberOfCpus; Index++) {\r
     if (RegisterTables[Index].InitialApicId == InitApicId) {\r
       RegisterTable =  &RegisterTables[Index];\r
-      ProcIndex = Index;\r
+      ProcIndex     = Index;\r
       break;\r
     }\r
   }\r
+\r
   ASSERT (RegisterTable != NULL);\r
 \r
   ProgramProcessorRegister (\r
@@ -1170,9 +1202,9 @@ CpuFeaturesDetect (
   VOID\r
   )\r
 {\r
-  CPU_FEATURES_DATA      *CpuFeaturesData;\r
+  CPU_FEATURES_DATA  *CpuFeaturesData;\r
 \r
-  CpuFeaturesData = GetCpuFeaturesData();\r
+  CpuFeaturesData = GetCpuFeaturesData ();\r
 \r
   CpuInitDataInitialize ();\r
 \r
index e2e06e88e0a787a38edc6ba21078b2f1d57d50c4..e635cade5d5b0b04c211310835f3efcc14570721 100644 (file)
@@ -13,7 +13,7 @@
 \r
 #include "RegisterCpuFeatures.h"\r
 \r
-CPU_FEATURES_DATA          mCpuFeaturesData = {0};\r
+CPU_FEATURES_DATA  mCpuFeaturesData = { 0 };\r
 \r
 /**\r
   Worker function to get CPU_FEATURES_DATA pointer.\r
@@ -38,17 +38,17 @@ GetMpService (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                Status;\r
-  MP_SERVICES               MpService;\r
+  EFI_STATUS   Status;\r
+  MP_SERVICES  MpService;\r
 \r
   //\r
   // Get MP Services Protocol\r
   //\r
   Status = gBS->LocateProtocol (\r
-                &gEfiMpServiceProtocolGuid,\r
-                NULL,\r
-                (VOID **)&MpService.Protocol\r
-                );\r
+                  &gEfiMpServiceProtocolGuid,\r
+                  NULL,\r
+                  (VOID **)&MpService.Protocol\r
+                  );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   return MpService;\r
@@ -63,15 +63,15 @@ GetMpService (
 **/\r
 UINTN\r
 GetProcessorIndex (\r
-  IN CPU_FEATURES_DATA        *CpuFeaturesData\r
+  IN CPU_FEATURES_DATA  *CpuFeaturesData\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  UINTN                                ProcessorIndex;\r
-  EFI_MP_SERVICES_PROTOCOL             *MpServices;\r
+  EFI_STATUS                Status;\r
+  UINTN                     ProcessorIndex;\r
+  EFI_MP_SERVICES_PROTOCOL  *MpServices;\r
 \r
   MpServices = CpuFeaturesData->MpService.Protocol;\r
-  Status = MpServices->WhoAmI(MpServices, &ProcessorIndex);\r
+  Status     = MpServices->WhoAmI (MpServices, &ProcessorIndex);\r
   ASSERT_EFI_ERROR (Status);\r
   return ProcessorIndex;\r
 }\r
@@ -88,22 +88,22 @@ GetProcessorIndex (
 **/\r
 EFI_STATUS\r
 GetProcessorInformation (\r
-  IN  UINTN                            ProcessorNumber,\r
-  OUT EFI_PROCESSOR_INFORMATION        *ProcessorInfoBuffer\r
+  IN  UINTN                      ProcessorNumber,\r
+  OUT EFI_PROCESSOR_INFORMATION  *ProcessorInfoBuffer\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  EFI_MP_SERVICES_PROTOCOL             *MpServices;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
+  EFI_STATUS                Status;\r
+  EFI_MP_SERVICES_PROTOCOL  *MpServices;\r
+  CPU_FEATURES_DATA         *CpuFeaturesData;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
-  MpServices = CpuFeaturesData->MpService.Protocol;\r
+  MpServices      = CpuFeaturesData->MpService.Protocol;\r
 \r
   Status = MpServices->GetProcessorInfo (\r
-               MpServices,\r
-               ProcessorNumber,\r
-               ProcessorInfoBuffer\r
-               );\r
+                         MpServices,\r
+                         ProcessorNumber,\r
+                         ProcessorInfoBuffer\r
+                         );\r
   return Status;\r
 }\r
 \r
@@ -117,29 +117,29 @@ GetProcessorInformation (
 **/\r
 VOID\r
 StartupAllAPsWorker (\r
-  IN  EFI_AP_PROCEDURE                 Procedure,\r
-  IN  EFI_EVENT                        MpEvent\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  EFI_EVENT         MpEvent\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  EFI_MP_SERVICES_PROTOCOL             *MpServices;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
+  EFI_STATUS                Status;\r
+  EFI_MP_SERVICES_PROTOCOL  *MpServices;\r
+  CPU_FEATURES_DATA         *CpuFeaturesData;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
-  MpServices = CpuFeaturesData->MpService.Protocol;\r
+  MpServices      = CpuFeaturesData->MpService.Protocol;\r
 \r
   //\r
   // Wakeup all APs\r
   //\r
   Status = MpServices->StartupAllAPs (\r
-                 MpServices,\r
-                 Procedure,\r
-                 FALSE,\r
-                 MpEvent,\r
-                 0,\r
-                 CpuFeaturesData,\r
-                 NULL\r
-                 );\r
+                         MpServices,\r
+                         Procedure,\r
+                         FALSE,\r
+                         MpEvent,\r
+                         0,\r
+                         CpuFeaturesData,\r
+                         NULL\r
+                         );\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
@@ -150,24 +150,24 @@ StartupAllAPsWorker (
 **/\r
 VOID\r
 SwitchNewBsp (\r
-  IN  UINTN                            ProcessorNumber\r
+  IN  UINTN  ProcessorNumber\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  EFI_MP_SERVICES_PROTOCOL             *MpServices;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
+  EFI_STATUS                Status;\r
+  EFI_MP_SERVICES_PROTOCOL  *MpServices;\r
+  CPU_FEATURES_DATA         *CpuFeaturesData;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
-  MpServices = CpuFeaturesData->MpService.Protocol;\r
+  MpServices      = CpuFeaturesData->MpService.Protocol;\r
 \r
   //\r
   // Wakeup all APs\r
   //\r
   Status = MpServices->SwitchBSP (\r
-                 MpServices,\r
-                 ProcessorNumber,\r
-                 TRUE\r
-                 );\r
+                         MpServices,\r
+                         ProcessorNumber,\r
+                         TRUE\r
+                         );\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
@@ -183,16 +183,16 @@ SwitchNewBsp (
 **/\r
 VOID\r
 GetNumberOfProcessor (\r
-  OUT UINTN                            *NumberOfCpus,\r
-  OUT UINTN                            *NumberOfEnabledProcessors\r
+  OUT UINTN  *NumberOfCpus,\r
+  OUT UINTN  *NumberOfEnabledProcessors\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  EFI_MP_SERVICES_PROTOCOL             *MpServices;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
+  EFI_STATUS                Status;\r
+  EFI_MP_SERVICES_PROTOCOL  *MpServices;\r
+  CPU_FEATURES_DATA         *CpuFeaturesData;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
-  MpServices = CpuFeaturesData->MpService.Protocol;\r
+  MpServices      = CpuFeaturesData->MpService.Protocol;\r
 \r
   //\r
   // Get the number of CPUs\r
@@ -219,14 +219,14 @@ CpuFeaturesInitialize (
   VOID\r
   )\r
 {\r
-  CPU_FEATURES_DATA          *CpuFeaturesData;\r
-  UINTN                      OldBspNumber;\r
-  EFI_EVENT                  MpEvent;\r
-  EFI_STATUS                 Status;\r
+  CPU_FEATURES_DATA  *CpuFeaturesData;\r
+  UINTN              OldBspNumber;\r
+  EFI_EVENT          MpEvent;\r
+  EFI_STATUS         Status;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
 \r
-  OldBspNumber = GetProcessorIndex (CpuFeaturesData);\r
+  OldBspNumber               = GetProcessorIndex (CpuFeaturesData);\r
   CpuFeaturesData->BspNumber = OldBspNumber;\r
 \r
   //\r
@@ -263,6 +263,7 @@ CpuFeaturesInitialize (
     do {\r
       Status = gBS->CheckEvent (MpEvent);\r
     } while (Status == EFI_NOT_READY);\r
+\r
     ASSERT_EFI_ERROR (Status);\r
   }\r
 \r
@@ -273,4 +274,3 @@ CpuFeaturesInitialize (
     SwitchNewBsp (CpuFeaturesData->BspNumber);\r
   }\r
 }\r
-\r
index 4e558e9fee5a2476f599f1d6cd2ed92c8a5a5d55..d4c528b3e9c26d4985c0fa6a1c6d024fee1fe7ce 100644 (file)
@@ -20,7 +20,7 @@
     0xa694c467, 0x697a, 0x446b, { 0xb9, 0x29, 0x5b, 0x14, 0xa0, 0xcf, 0x39, 0xf } \\r
   }\r
 \r
-EFI_GUID mRegisterCpuFeaturesHobGuid = REGISTER_CPU_FEATURES_GUID;\r
+EFI_GUID  mRegisterCpuFeaturesHobGuid = REGISTER_CPU_FEATURES_GUID;\r
 \r
 /**\r
   Worker function to get CPU_FEATURES_DATA pointer.\r
@@ -32,16 +32,16 @@ GetCpuFeaturesData (
   VOID\r
   )\r
 {\r
-  CPU_FEATURES_DATA       *CpuInitData;\r
-  EFI_HOB_GUID_TYPE       *GuidHob;\r
-  VOID                    *DataInHob;\r
-  UINT64                  Data64;\r
+  CPU_FEATURES_DATA  *CpuInitData;\r
+  EFI_HOB_GUID_TYPE  *GuidHob;\r
+  VOID               *DataInHob;\r
+  UINT64             Data64;\r
 \r
   CpuInitData = NULL;\r
-  GuidHob = GetFirstGuidHob (&mRegisterCpuFeaturesHobGuid);\r
+  GuidHob     = GetFirstGuidHob (&mRegisterCpuFeaturesHobGuid);\r
   if (GuidHob != NULL) {\r
-    DataInHob = GET_GUID_HOB_DATA (GuidHob);\r
-    CpuInitData = (CPU_FEATURES_DATA *) (*(UINTN *) DataInHob);\r
+    DataInHob   = GET_GUID_HOB_DATA (GuidHob);\r
+    CpuInitData = (CPU_FEATURES_DATA *)(*(UINTN *)DataInHob);\r
     ASSERT (CpuInitData != NULL);\r
   } else {\r
     CpuInitData = AllocateZeroPool (sizeof (CPU_FEATURES_DATA));\r
@@ -49,10 +49,10 @@ GetCpuFeaturesData (
     //\r
     // Build location of CPU MP DATA buffer in HOB\r
     //\r
-    Data64 = (UINT64) (UINTN) CpuInitData;\r
+    Data64 = (UINT64)(UINTN)CpuInitData;\r
     BuildGuidDataHob (\r
       &mRegisterCpuFeaturesHobGuid,\r
-      (VOID *) &Data64,\r
+      (VOID *)&Data64,\r
       sizeof (UINT64)\r
       );\r
   }\r
@@ -70,8 +70,8 @@ GetMpService (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  MP_SERVICES                MpService;\r
+  EFI_STATUS   Status;\r
+  MP_SERVICES  MpService;\r
 \r
   //\r
   // Get MP Services2 Ppi\r
@@ -95,12 +95,12 @@ GetMpService (
 **/\r
 UINTN\r
 GetProcessorIndex (\r
-  IN CPU_FEATURES_DATA        *CpuFeaturesData\r
+  IN CPU_FEATURES_DATA  *CpuFeaturesData\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;\r
-  UINTN                      ProcessorIndex;\r
+  EFI_STATUS                  Status;\r
+  EDKII_PEI_MP_SERVICES2_PPI  *CpuMp2Ppi;\r
+  UINTN                       ProcessorIndex;\r
 \r
   CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;\r
 \r
@@ -126,22 +126,22 @@ GetProcessorIndex (
 **/\r
 EFI_STATUS\r
 GetProcessorInformation (\r
-  IN  UINTN                            ProcessorNumber,\r
-  OUT EFI_PROCESSOR_INFORMATION        *ProcessorInfoBuffer\r
+  IN  UINTN                      ProcessorNumber,\r
+  OUT EFI_PROCESSOR_INFORMATION  *ProcessorInfoBuffer\r
   )\r
 {\r
-  EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;\r
-  EFI_STATUS                 Status;\r
-  CPU_FEATURES_DATA          *CpuFeaturesData;\r
+  EDKII_PEI_MP_SERVICES2_PPI  *CpuMp2Ppi;\r
+  EFI_STATUS                  Status;\r
+  CPU_FEATURES_DATA           *CpuFeaturesData;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
-  CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;\r
+  CpuMp2Ppi       = CpuFeaturesData->MpService.Ppi;\r
 \r
   Status = CpuMp2Ppi->GetProcessorInfo (\r
-               CpuMp2Ppi,\r
-               ProcessorNumber,\r
-               ProcessorInfoBuffer\r
-               );\r
+                        CpuMp2Ppi,\r
+                        ProcessorNumber,\r
+                        ProcessorInfoBuffer\r
+                        );\r
   return Status;\r
 }\r
 \r
@@ -155,27 +155,27 @@ GetProcessorInformation (
 **/\r
 VOID\r
 StartupAllAPsWorker (\r
-  IN  EFI_AP_PROCEDURE                 Procedure,\r
-  IN  EFI_EVENT                        MpEvent\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  EFI_EVENT         MpEvent\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  EDKII_PEI_MP_SERVICES2_PPI           *CpuMp2Ppi;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
+  EFI_STATUS                  Status;\r
+  EDKII_PEI_MP_SERVICES2_PPI  *CpuMp2Ppi;\r
+  CPU_FEATURES_DATA           *CpuFeaturesData;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
-  CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;\r
+  CpuMp2Ppi       = CpuFeaturesData->MpService.Ppi;\r
 \r
   //\r
   // Wakeup all APs for data collection.\r
   //\r
   Status = CpuMp2Ppi->StartupAllAPs (\r
-                 CpuMp2Ppi,\r
-                 Procedure,\r
-                 FALSE,\r
-                 0,\r
-                 CpuFeaturesData\r
-                 );\r
+                        CpuMp2Ppi,\r
+                        Procedure,\r
+                        FALSE,\r
+                        0,\r
+                        CpuFeaturesData\r
+                        );\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
@@ -188,12 +188,12 @@ StartupAllAPsWorker (
 **/\r
 VOID\r
 StartupAllCPUsWorker (\r
-  IN  EFI_AP_PROCEDURE                 Procedure\r
+  IN  EFI_AP_PROCEDURE  Procedure\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  EDKII_PEI_MP_SERVICES2_PPI           *CpuMp2Ppi;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
+  EFI_STATUS                  Status;\r
+  EDKII_PEI_MP_SERVICES2_PPI  *CpuMp2Ppi;\r
+  CPU_FEATURES_DATA           *CpuFeaturesData;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
 \r
@@ -201,12 +201,12 @@ StartupAllCPUsWorker (
   // Get MP Services2 Ppi\r
   //\r
   CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;\r
-  Status = CpuMp2Ppi->StartupAllCPUs (\r
-                 CpuMp2Ppi,\r
-                 Procedure,\r
-                 0,\r
-                 CpuFeaturesData\r
-                 );\r
+  Status    = CpuMp2Ppi->StartupAllCPUs (\r
+                           CpuMp2Ppi,\r
+                           Procedure,\r
+                           0,\r
+                           CpuFeaturesData\r
+                           );\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
@@ -217,24 +217,24 @@ StartupAllCPUsWorker (
 **/\r
 VOID\r
 SwitchNewBsp (\r
-  IN  UINTN                            ProcessorNumber\r
+  IN  UINTN  ProcessorNumber\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  EDKII_PEI_MP_SERVICES2_PPI           *CpuMp2Ppi;\r
-  CPU_FEATURES_DATA                    *CpuFeaturesData;\r
+  EFI_STATUS                  Status;\r
+  EDKII_PEI_MP_SERVICES2_PPI  *CpuMp2Ppi;\r
+  CPU_FEATURES_DATA           *CpuFeaturesData;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
-  CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;\r
+  CpuMp2Ppi       = CpuFeaturesData->MpService.Ppi;\r
 \r
   //\r
   // Wakeup all APs for data collection.\r
   //\r
   Status = CpuMp2Ppi->SwitchBSP (\r
-                 CpuMp2Ppi,\r
-                 ProcessorNumber,\r
-                 TRUE\r
-                 );\r
+                        CpuMp2Ppi,\r
+                        ProcessorNumber,\r
+                        TRUE\r
+                        );\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
@@ -250,25 +250,25 @@ SwitchNewBsp (
 **/\r
 VOID\r
 GetNumberOfProcessor (\r
-  OUT UINTN                            *NumberOfCpus,\r
-  OUT UINTN                            *NumberOfEnabledProcessors\r
+  OUT UINTN  *NumberOfCpus,\r
+  OUT UINTN  *NumberOfEnabledProcessors\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  EDKII_PEI_MP_SERVICES2_PPI *CpuMp2Ppi;\r
-  CPU_FEATURES_DATA          *CpuFeaturesData;\r
+  EFI_STATUS                  Status;\r
+  EDKII_PEI_MP_SERVICES2_PPI  *CpuMp2Ppi;\r
+  CPU_FEATURES_DATA           *CpuFeaturesData;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
-  CpuMp2Ppi = CpuFeaturesData->MpService.Ppi;\r
+  CpuMp2Ppi       = CpuFeaturesData->MpService.Ppi;\r
 \r
   //\r
   // Get the number of CPUs\r
   //\r
   Status = CpuMp2Ppi->GetNumberOfProcessors (\r
-                         CpuMp2Ppi,\r
-                         NumberOfCpus,\r
-                         NumberOfEnabledProcessors\r
-                         );\r
+                        CpuMp2Ppi,\r
+                        NumberOfCpus,\r
+                        NumberOfEnabledProcessors\r
+                        );\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
 \r
@@ -286,12 +286,12 @@ CpuFeaturesInitialize (
   VOID\r
   )\r
 {\r
-  CPU_FEATURES_DATA          *CpuFeaturesData;\r
-  UINTN                      OldBspNumber;\r
+  CPU_FEATURES_DATA  *CpuFeaturesData;\r
+  UINTN              OldBspNumber;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
 \r
-  OldBspNumber = GetProcessorIndex (CpuFeaturesData);\r
+  OldBspNumber               = GetProcessorIndex (CpuFeaturesData);\r
   CpuFeaturesData->BspNumber = OldBspNumber;\r
 \r
   //\r
@@ -306,4 +306,3 @@ CpuFeaturesInitialize (
     SwitchNewBsp (CpuFeaturesData->BspNumber);\r
   }\r
 }\r
-\r
index e8a4aa644d25ace3a44b9581b2e8ac56297d5055..4a84954cac9d6a2be778051ad0cd4cb4628f9040 100644 (file)
 \r
 #define CPU_FEATURE_ENTRY_SIGNATURE  SIGNATURE_32 ('C', 'F', 'E', 'S')\r
 \r
-#define CPU_FEATURE_NAME_SIZE        128\r
+#define CPU_FEATURE_NAME_SIZE  128\r
 \r
 typedef struct {\r
-  REGISTER_CPU_FEATURE_INFORMATION     CpuInfo;\r
-  UINT8                                *FeaturesSupportedMask;\r
-  LIST_ENTRY                           OrderList;\r
+  REGISTER_CPU_FEATURE_INFORMATION    CpuInfo;\r
+  UINT8                               *FeaturesSupportedMask;\r
+  LIST_ENTRY                          OrderList;\r
 } CPU_FEATURES_INIT_ORDER;\r
 \r
 typedef struct {\r
-  UINT32                       Signature;\r
-  LIST_ENTRY                   Link;\r
-  UINT8                        *FeatureMask;\r
-  CHAR8                        *FeatureName;\r
-  CPU_FEATURE_GET_CONFIG_DATA  GetConfigDataFunc;\r
-  CPU_FEATURE_SUPPORT          SupportFunc;\r
-  CPU_FEATURE_INITIALIZE       InitializeFunc;\r
-  UINT8                        *ThreadBeforeFeatureBitMask;\r
-  UINT8                        *ThreadAfterFeatureBitMask;\r
-  UINT8                        *CoreBeforeFeatureBitMask;\r
-  UINT8                        *CoreAfterFeatureBitMask;\r
-  UINT8                        *PackageBeforeFeatureBitMask;\r
-  UINT8                        *PackageAfterFeatureBitMask;\r
-  VOID                         *ConfigData;\r
-  BOOLEAN                      BeforeAll;\r
-  BOOLEAN                      AfterAll;\r
+  UINT32                         Signature;\r
+  LIST_ENTRY                     Link;\r
+  UINT8                          *FeatureMask;\r
+  CHAR8                          *FeatureName;\r
+  CPU_FEATURE_GET_CONFIG_DATA    GetConfigDataFunc;\r
+  CPU_FEATURE_SUPPORT            SupportFunc;\r
+  CPU_FEATURE_INITIALIZE         InitializeFunc;\r
+  UINT8                          *ThreadBeforeFeatureBitMask;\r
+  UINT8                          *ThreadAfterFeatureBitMask;\r
+  UINT8                          *CoreBeforeFeatureBitMask;\r
+  UINT8                          *CoreAfterFeatureBitMask;\r
+  UINT8                          *PackageBeforeFeatureBitMask;\r
+  UINT8                          *PackageAfterFeatureBitMask;\r
+  VOID                           *ConfigData;\r
+  BOOLEAN                        BeforeAll;\r
+  BOOLEAN                        AfterAll;\r
 } CPU_FEATURES_ENTRY;\r
 \r
 //\r
 // Flags used when program the register.\r
 //\r
 typedef struct {\r
-  volatile UINTN           MemoryMappedLock;        // Spinlock used to program mmio\r
-  volatile UINT32          *CoreSemaphoreCount;     // Semaphore containers used to program Core semaphore.\r
-  volatile UINT32          *PackageSemaphoreCount;  // Semaphore containers used to program Package semaphore.\r
+  volatile UINTN     MemoryMappedLock;              // Spinlock used to program mmio\r
+  volatile UINT32    *CoreSemaphoreCount;           // Semaphore containers used to program Core semaphore.\r
+  volatile UINT32    *PackageSemaphoreCount;        // Semaphore containers used to program Package semaphore.\r
 } PROGRAM_CPU_REGISTER_FLAGS;\r
 \r
 typedef union {\r
-  EFI_MP_SERVICES_PROTOCOL   *Protocol;\r
-  EDKII_PEI_MP_SERVICES2_PPI *Ppi;\r
+  EFI_MP_SERVICES_PROTOCOL      *Protocol;\r
+  EDKII_PEI_MP_SERVICES2_PPI    *Ppi;\r
 } MP_SERVICES;\r
 \r
 typedef struct {\r
-  UINTN                    FeaturesCount;\r
-  UINT32                   BitMaskSize;\r
-  LIST_ENTRY               FeatureList;\r
+  UINTN                         FeaturesCount;\r
+  UINT32                        BitMaskSize;\r
+  LIST_ENTRY                    FeatureList;\r
 \r
-  CPU_FEATURES_INIT_ORDER  *InitOrder;\r
-  UINT8                    *CapabilityPcd;\r
-  UINT8                    *SettingPcd;\r
+  CPU_FEATURES_INIT_ORDER       *InitOrder;\r
+  UINT8                         *CapabilityPcd;\r
+  UINT8                         *SettingPcd;\r
 \r
-  UINT32                   NumberOfCpus;\r
-  ACPI_CPU_DATA            *AcpiCpuData;\r
+  UINT32                        NumberOfCpus;\r
+  ACPI_CPU_DATA                 *AcpiCpuData;\r
 \r
-  CPU_REGISTER_TABLE       *RegisterTable;\r
-  CPU_REGISTER_TABLE       *PreSmmRegisterTable;\r
-  UINTN                    BspNumber;\r
+  CPU_REGISTER_TABLE            *RegisterTable;\r
+  CPU_REGISTER_TABLE            *PreSmmRegisterTable;\r
+  UINTN                         BspNumber;\r
 \r
-  PROGRAM_CPU_REGISTER_FLAGS  CpuFlags;\r
+  PROGRAM_CPU_REGISTER_FLAGS    CpuFlags;\r
 \r
-  MP_SERVICES              MpService;\r
+  MP_SERVICES                   MpService;\r
 } CPU_FEATURES_DATA;\r
 \r
 #define CPU_FEATURE_ENTRY_FROM_LINK(a) \\r
@@ -116,7 +116,7 @@ GetCpuFeaturesData (
 **/\r
 UINTN\r
 GetProcessorIndex (\r
-  IN CPU_FEATURES_DATA        *CpuFeaturesData\r
+  IN CPU_FEATURES_DATA  *CpuFeaturesData\r
   );\r
 \r
 /**\r
@@ -131,8 +131,8 @@ GetProcessorIndex (
 **/\r
 EFI_STATUS\r
 GetProcessorInformation (\r
-  IN  UINTN                            ProcessorNumber,\r
-  OUT EFI_PROCESSOR_INFORMATION        *ProcessorInfoBuffer\r
+  IN  UINTN                      ProcessorNumber,\r
+  OUT EFI_PROCESSOR_INFORMATION  *ProcessorInfoBuffer\r
   );\r
 \r
 /**\r
@@ -145,8 +145,8 @@ GetProcessorInformation (
 **/\r
 VOID\r
 StartupAllAPsWorker (\r
-  IN  EFI_AP_PROCEDURE                 Procedure,\r
-  IN  EFI_EVENT                        MpEvent\r
+  IN  EFI_AP_PROCEDURE  Procedure,\r
+  IN  EFI_EVENT         MpEvent\r
   );\r
 \r
 /**\r
@@ -161,8 +161,8 @@ StartupAllAPsWorker (
 **/\r
 VOID\r
 GetNumberOfProcessor (\r
-  OUT UINTN                            *NumberOfCpus,\r
-  OUT UINTN                            *NumberOfEnabledProcessors\r
+  OUT UINTN  *NumberOfCpus,\r
+  OUT UINTN  *NumberOfEnabledProcessors\r
   );\r
 \r
 /**\r
@@ -172,7 +172,7 @@ GetNumberOfProcessor (
 **/\r
 VOID\r
 SwitchNewBsp (\r
-  IN  UINTN                            ProcessorNumber\r
+  IN  UINTN  ProcessorNumber\r
   );\r
 \r
 /**\r
@@ -184,8 +184,8 @@ SwitchNewBsp (
 **/\r
 VOID\r
 DumpCpuFeatureMask (\r
-  IN UINT8               *FeatureMask,\r
-  IN UINT32              BitMaskSize\r
+  IN UINT8   *FeatureMask,\r
+  IN UINT32  BitMaskSize\r
   );\r
 \r
 /**\r
@@ -212,9 +212,9 @@ DumpCpuFeature (
 **/\r
 CPU_FEATURE_DEPENDENCE_TYPE\r
 DetectFeatureScope (\r
-  IN CPU_FEATURES_ENTRY         *CpuFeature,\r
-  IN BOOLEAN                    Before,\r
-  IN UINT8                      *NextCpuFeatureMask\r
+  IN CPU_FEATURES_ENTRY  *CpuFeature,\r
+  IN BOOLEAN             Before,\r
+  IN UINT8               *NextCpuFeatureMask\r
   );\r
 \r
 /**\r
@@ -228,9 +228,9 @@ DetectFeatureScope (
 **/\r
 CPU_FEATURE_DEPENDENCE_TYPE\r
 DetectNoneNeighborhoodFeatureScope (\r
-  IN CPU_FEATURES_ENTRY         *CpuFeature,\r
-  IN BOOLEAN                    Before,\r
-  IN LIST_ENTRY                 *FeatureList\r
+  IN CPU_FEATURES_ENTRY  *CpuFeature,\r
+  IN BOOLEAN             Before,\r
+  IN LIST_ENTRY          *FeatureList\r
   );\r
 \r
 /**\r
@@ -242,7 +242,7 @@ DetectNoneNeighborhoodFeatureScope (
 VOID\r
 EFIAPI\r
 SetProcessorRegister (\r
-  IN OUT VOID            *Buffer\r
+  IN OUT VOID  *Buffer\r
   );\r
 \r
 /**\r
index ffe34ffb4836c7bb01bf01b56f9604e2c43ca97f..0285aaf5c91a2cd1dbc65bc5dc5860f0c767ee36 100644 (file)
 **/\r
 VOID\r
 DumpCpuFeatureMask (\r
-  IN UINT8               *FeatureMask,\r
-  IN UINT32              BitMaskSize\r
+  IN UINT8   *FeatureMask,\r
+  IN UINT32  BitMaskSize\r
   )\r
 {\r
-  UINTN                  Index;\r
-  UINT8                  *Data8;\r
+  UINTN  Index;\r
+  UINT8  *Data8;\r
 \r
-  Data8       = (UINT8 *) FeatureMask;\r
+  Data8 = (UINT8 *)FeatureMask;\r
   for (Index = 0; Index < BitMaskSize; Index++) {\r
     DEBUG ((DEBUG_INFO, " %02x ", *Data8++));\r
   }\r
+\r
   DEBUG ((DEBUG_INFO, "\n"));\r
 }\r
 \r
@@ -44,7 +45,6 @@ DumpCpuFeature (
   IN UINT32              BitMaskSize\r
   )\r
 {\r
-\r
   if (CpuFeature->FeatureName != NULL) {\r
     DEBUG ((DEBUG_INFO, "FeatureName: %a\n", CpuFeature->FeatureName));\r
   } else {\r
@@ -64,8 +64,8 @@ DumpCpuFeature (
 **/\r
 BOOLEAN\r
 IsBitMaskMatchCheck (\r
-  IN UINT8        *FeatureMask,\r
-  IN UINT8        *DependentBitMask\r
+  IN UINT8  *FeatureMask,\r
+  IN UINT8  *DependentBitMask\r
   )\r
 {\r
   UINTN              Index;\r
@@ -82,6 +82,7 @@ IsBitMaskMatchCheck (
       return TRUE;\r
     }\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -98,14 +99,14 @@ IsBitMaskMatchCheck (
 **/\r
 BOOLEAN\r
 FindSpecifyFeature (\r
-  IN LIST_ENTRY              *FeatureList,\r
-  IN LIST_ENTRY              *CurrentEntry,\r
-  IN BOOLEAN                 SearchFormer,\r
-  IN UINT8                   *FeatureMask\r
+  IN LIST_ENTRY  *FeatureList,\r
+  IN LIST_ENTRY  *CurrentEntry,\r
+  IN BOOLEAN     SearchFormer,\r
+  IN UINT8       *FeatureMask\r
   )\r
 {\r
-  CPU_FEATURES_ENTRY         *CpuFeature;\r
-  LIST_ENTRY                 *NextEntry;\r
+  CPU_FEATURES_ENTRY  *CpuFeature;\r
+  LIST_ENTRY          *NextEntry;\r
 \r
   //\r
   // Check whether exist the not neighborhood entry first.\r
@@ -165,9 +166,9 @@ FindSpecifyFeature (
 **/\r
 CPU_FEATURE_DEPENDENCE_TYPE\r
 DetectFeatureScope (\r
-  IN CPU_FEATURES_ENTRY         *CpuFeature,\r
-  IN BOOLEAN                    Before,\r
-  IN UINT8                      *NextCpuFeatureMask\r
+  IN CPU_FEATURES_ENTRY  *CpuFeature,\r
+  IN BOOLEAN             Before,\r
+  IN UINT8               *NextCpuFeatureMask\r
   )\r
 {\r
   //\r
@@ -185,17 +186,20 @@ DetectFeatureScope (
 \r
   if (Before) {\r
     if ((CpuFeature->PackageBeforeFeatureBitMask != NULL) &&\r
-        IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->PackageBeforeFeatureBitMask)) {\r
+        IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->PackageBeforeFeatureBitMask))\r
+    {\r
       return PackageDepType;\r
     }\r
 \r
     if ((CpuFeature->CoreBeforeFeatureBitMask != NULL) &&\r
-        IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->CoreBeforeFeatureBitMask)) {\r
+        IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->CoreBeforeFeatureBitMask))\r
+    {\r
       return CoreDepType;\r
     }\r
 \r
     if ((CpuFeature->ThreadBeforeFeatureBitMask != NULL) &&\r
-        IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->ThreadBeforeFeatureBitMask)) {\r
+        IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->ThreadBeforeFeatureBitMask))\r
+    {\r
       return ThreadDepType;\r
     }\r
 \r
@@ -203,17 +207,20 @@ DetectFeatureScope (
   }\r
 \r
   if ((CpuFeature->PackageAfterFeatureBitMask != NULL) &&\r
-      IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->PackageAfterFeatureBitMask)) {\r
+      IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->PackageAfterFeatureBitMask))\r
+  {\r
     return PackageDepType;\r
   }\r
 \r
   if ((CpuFeature->CoreAfterFeatureBitMask != NULL) &&\r
-      IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->CoreAfterFeatureBitMask)) {\r
+      IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->CoreAfterFeatureBitMask))\r
+  {\r
     return CoreDepType;\r
   }\r
 \r
   if ((CpuFeature->ThreadAfterFeatureBitMask != NULL) &&\r
-      IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->ThreadAfterFeatureBitMask)) {\r
+      IsBitMaskMatchCheck (NextCpuFeatureMask, CpuFeature->ThreadAfterFeatureBitMask))\r
+  {\r
     return ThreadDepType;\r
   }\r
 \r
@@ -231,24 +238,27 @@ DetectFeatureScope (
 **/\r
 CPU_FEATURE_DEPENDENCE_TYPE\r
 DetectNoneNeighborhoodFeatureScope (\r
-  IN CPU_FEATURES_ENTRY         *CpuFeature,\r
-  IN BOOLEAN                    Before,\r
-  IN LIST_ENTRY                 *FeatureList\r
+  IN CPU_FEATURES_ENTRY  *CpuFeature,\r
+  IN BOOLEAN             Before,\r
+  IN LIST_ENTRY          *FeatureList\r
   )\r
 {\r
   if (Before) {\r
     if ((CpuFeature->PackageBeforeFeatureBitMask != NULL) &&\r
-        FindSpecifyFeature(FeatureList, &CpuFeature->Link, FALSE, CpuFeature->PackageBeforeFeatureBitMask)) {\r
+        FindSpecifyFeature (FeatureList, &CpuFeature->Link, FALSE, CpuFeature->PackageBeforeFeatureBitMask))\r
+    {\r
       return PackageDepType;\r
     }\r
 \r
     if ((CpuFeature->CoreBeforeFeatureBitMask != NULL) &&\r
-        FindSpecifyFeature(FeatureList, &CpuFeature->Link, FALSE, CpuFeature->CoreBeforeFeatureBitMask)) {\r
+        FindSpecifyFeature (FeatureList, &CpuFeature->Link, FALSE, CpuFeature->CoreBeforeFeatureBitMask))\r
+    {\r
       return CoreDepType;\r
     }\r
 \r
     if ((CpuFeature->ThreadBeforeFeatureBitMask != NULL) &&\r
-        FindSpecifyFeature(FeatureList, &CpuFeature->Link, FALSE, CpuFeature->ThreadBeforeFeatureBitMask)) {\r
+        FindSpecifyFeature (FeatureList, &CpuFeature->Link, FALSE, CpuFeature->ThreadBeforeFeatureBitMask))\r
+    {\r
       return ThreadDepType;\r
     }\r
 \r
@@ -256,17 +266,20 @@ DetectNoneNeighborhoodFeatureScope (
   }\r
 \r
   if ((CpuFeature->PackageAfterFeatureBitMask != NULL) &&\r
-      FindSpecifyFeature(FeatureList, &CpuFeature->Link, TRUE, CpuFeature->PackageAfterFeatureBitMask)) {\r
+      FindSpecifyFeature (FeatureList, &CpuFeature->Link, TRUE, CpuFeature->PackageAfterFeatureBitMask))\r
+  {\r
     return PackageDepType;\r
   }\r
 \r
   if ((CpuFeature->CoreAfterFeatureBitMask != NULL) &&\r
-      FindSpecifyFeature(FeatureList, &CpuFeature->Link, TRUE, CpuFeature->CoreAfterFeatureBitMask)) {\r
+      FindSpecifyFeature (FeatureList, &CpuFeature->Link, TRUE, CpuFeature->CoreAfterFeatureBitMask))\r
+  {\r
     return CoreDepType;\r
   }\r
 \r
   if ((CpuFeature->ThreadAfterFeatureBitMask != NULL) &&\r
-      FindSpecifyFeature(FeatureList, &CpuFeature->Link, TRUE, CpuFeature->ThreadAfterFeatureBitMask)) {\r
+      FindSpecifyFeature (FeatureList, &CpuFeature->Link, TRUE, CpuFeature->ThreadAfterFeatureBitMask))\r
+  {\r
     return ThreadDepType;\r
   }\r
 \r
@@ -294,17 +307,17 @@ DetectNoneNeighborhoodFeatureScope (
 **/\r
 BOOLEAN\r
 AdjustFeaturesDependence (\r
-  IN OUT CPU_FEATURES_ENTRY         *PreviousFeature,\r
-  IN OUT CPU_FEATURES_ENTRY         *CurrentFeature,\r
-  IN     CPU_FEATURES_ENTRY         *FindFeature,\r
-  IN     BOOLEAN                    Before\r
+  IN OUT CPU_FEATURES_ENTRY  *PreviousFeature,\r
+  IN OUT CPU_FEATURES_ENTRY  *CurrentFeature,\r
+  IN     CPU_FEATURES_ENTRY  *FindFeature,\r
+  IN     BOOLEAN             Before\r
   )\r
 {\r
-  CPU_FEATURE_DEPENDENCE_TYPE            PreDependType;\r
-  CPU_FEATURE_DEPENDENCE_TYPE            CurrentDependType;\r
+  CPU_FEATURE_DEPENDENCE_TYPE  PreDependType;\r
+  CPU_FEATURE_DEPENDENCE_TYPE  CurrentDependType;\r
 \r
-  PreDependType     = DetectFeatureScope(PreviousFeature, Before, FindFeature->FeatureMask);\r
-  CurrentDependType = DetectFeatureScope(CurrentFeature, Before, FindFeature->FeatureMask);\r
+  PreDependType     = DetectFeatureScope (PreviousFeature, Before, FindFeature->FeatureMask);\r
+  CurrentDependType = DetectFeatureScope (CurrentFeature, Before, FindFeature->FeatureMask);\r
 \r
   //\r
   // If previous feature has no dependence with the find featue.\r
@@ -336,16 +349,16 @@ AdjustFeaturesDependence (
 **/\r
 VOID\r
 AdjustEntry (\r
-  IN      LIST_ENTRY                *FeatureList,\r
-  IN OUT  LIST_ENTRY                *FindEntry,\r
-  IN OUT  LIST_ENTRY                *CurrentEntry,\r
-  IN      BOOLEAN                   Before\r
+  IN      LIST_ENTRY  *FeatureList,\r
+  IN OUT  LIST_ENTRY  *FindEntry,\r
+  IN OUT  LIST_ENTRY  *CurrentEntry,\r
+  IN      BOOLEAN     Before\r
   )\r
 {\r
-  LIST_ENTRY                *PreviousEntry;\r
-  CPU_FEATURES_ENTRY        *PreviousFeature;\r
-  CPU_FEATURES_ENTRY        *CurrentFeature;\r
-  CPU_FEATURES_ENTRY        *FindFeature;\r
+  LIST_ENTRY          *PreviousEntry;\r
+  CPU_FEATURES_ENTRY  *PreviousFeature;\r
+  CPU_FEATURES_ENTRY  *CurrentFeature;\r
+  CPU_FEATURES_ENTRY  *FindFeature;\r
 \r
   //\r
   // For CPU feature which has core or package type dependence, later code need to insert\r
@@ -363,11 +376,10 @@ AdjustEntry (
   if (Before) {\r
     PreviousEntry = GetPreviousNode (FeatureList, FindEntry);\r
   } else {\r
-\r
     PreviousEntry = GetNextNode (FeatureList, FindEntry);\r
   }\r
 \r
-  CurrentFeature  = CPU_FEATURE_ENTRY_FROM_LINK (CurrentEntry);\r
+  CurrentFeature = CPU_FEATURE_ENTRY_FROM_LINK (CurrentEntry);\r
   RemoveEntryList (CurrentEntry);\r
 \r
   if (IsNull (FeatureList, PreviousEntry)) {\r
@@ -407,7 +419,6 @@ AdjustEntry (
   }\r
 }\r
 \r
-\r
 /**\r
   Checks and adjusts current CPU features per dependency relationship.\r
 \r
@@ -419,14 +430,14 @@ AdjustEntry (
 **/\r
 BOOLEAN\r
 InsertToBeforeEntry (\r
-  IN LIST_ENTRY              *FeatureList,\r
-  IN LIST_ENTRY              *CurrentEntry,\r
-  IN UINT8                   *FeatureMask\r
+  IN LIST_ENTRY  *FeatureList,\r
+  IN LIST_ENTRY  *CurrentEntry,\r
+  IN UINT8       *FeatureMask\r
   )\r
 {\r
-  LIST_ENTRY                 *CheckEntry;\r
-  CPU_FEATURES_ENTRY         *CheckFeature;\r
-  BOOLEAN                    Swapped;\r
+  LIST_ENTRY          *CheckEntry;\r
+  CPU_FEATURES_ENTRY  *CheckFeature;\r
+  BOOLEAN             Swapped;\r
 \r
   Swapped = FALSE;\r
 \r
@@ -441,6 +452,7 @@ InsertToBeforeEntry (
       Swapped = TRUE;\r
       break;\r
     }\r
+\r
     CheckEntry = CheckEntry->ForwardLink;\r
   }\r
 \r
@@ -458,14 +470,14 @@ InsertToBeforeEntry (
 **/\r
 BOOLEAN\r
 InsertToAfterEntry (\r
-  IN LIST_ENTRY              *FeatureList,\r
-  IN LIST_ENTRY              *CurrentEntry,\r
-  IN UINT8                   *FeatureMask\r
+  IN LIST_ENTRY  *FeatureList,\r
+  IN LIST_ENTRY  *CurrentEntry,\r
+  IN UINT8       *FeatureMask\r
   )\r
 {\r
-  LIST_ENTRY                 *CheckEntry;\r
-  CPU_FEATURES_ENTRY         *CheckFeature;\r
-  BOOLEAN                    Swapped;\r
+  LIST_ENTRY          *CheckEntry;\r
+  CPU_FEATURES_ENTRY  *CheckFeature;\r
+  BOOLEAN             Swapped;\r
 \r
   Swapped = FALSE;\r
 \r
@@ -480,6 +492,7 @@ InsertToAfterEntry (
       Swapped = TRUE;\r
       break;\r
     }\r
+\r
     CheckEntry = CheckEntry->ForwardLink;\r
   }\r
 \r
@@ -493,22 +506,22 @@ InsertToAfterEntry (
 **/\r
 VOID\r
 CheckCpuFeaturesDependency (\r
-  IN LIST_ENTRY              *FeatureList\r
+  IN LIST_ENTRY  *FeatureList\r
   )\r
 {\r
-  LIST_ENTRY                 *CurrentEntry;\r
-  CPU_FEATURES_ENTRY         *CpuFeature;\r
-  LIST_ENTRY                 *CheckEntry;\r
-  CPU_FEATURES_ENTRY         *CheckFeature;\r
-  BOOLEAN                    Swapped;\r
-  LIST_ENTRY                 *TempEntry;\r
-  LIST_ENTRY                 *NextEntry;\r
+  LIST_ENTRY          *CurrentEntry;\r
+  CPU_FEATURES_ENTRY  *CpuFeature;\r
+  LIST_ENTRY          *CheckEntry;\r
+  CPU_FEATURES_ENTRY  *CheckFeature;\r
+  BOOLEAN             Swapped;\r
+  LIST_ENTRY          *TempEntry;\r
+  LIST_ENTRY          *NextEntry;\r
 \r
   CurrentEntry = GetFirstNode (FeatureList);\r
   while (!IsNull (FeatureList, CurrentEntry)) {\r
-    Swapped = FALSE;\r
+    Swapped    = FALSE;\r
     CpuFeature = CPU_FEATURE_ENTRY_FROM_LINK (CurrentEntry);\r
-    NextEntry = CurrentEntry->ForwardLink;\r
+    NextEntry  = CurrentEntry->ForwardLink;\r
     if (CpuFeature->BeforeAll) {\r
       //\r
       // Check all features dispatched before this entry\r
@@ -526,8 +539,10 @@ CheckCpuFeaturesDependency (
           Swapped = TRUE;\r
           break;\r
         }\r
+\r
         CheckEntry = CheckEntry->ForwardLink;\r
       }\r
+\r
       if (Swapped) {\r
         CurrentEntry = NextEntry;\r
         continue;\r
@@ -550,11 +565,13 @@ CheckCpuFeaturesDependency (
           RemoveEntryList (CurrentEntry);\r
           InsertHeadList (CheckEntry, CurrentEntry);\r
           CurrentEntry = TempEntry;\r
-          Swapped = TRUE;\r
+          Swapped      = TRUE;\r
           break;\r
         }\r
+\r
         CheckEntry = CheckEntry->ForwardLink;\r
       }\r
+\r
       if (Swapped) {\r
         CurrentEntry = NextEntry;\r
         continue;\r
@@ -622,18 +639,18 @@ CheckCpuFeaturesDependency (
 **/\r
 RETURN_STATUS\r
 RegisterCpuFeatureWorker (\r
-  IN CPU_FEATURES_DATA       *CpuFeaturesData,\r
-  IN CPU_FEATURES_ENTRY      *CpuFeature\r
+  IN CPU_FEATURES_DATA   *CpuFeaturesData,\r
+  IN CPU_FEATURES_ENTRY  *CpuFeature\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  CPU_FEATURES_ENTRY         *CpuFeatureEntry;\r
-  LIST_ENTRY                 *Entry;\r
-  BOOLEAN                    FeatureExist;\r
+  EFI_STATUS          Status;\r
+  CPU_FEATURES_ENTRY  *CpuFeatureEntry;\r
+  LIST_ENTRY          *Entry;\r
+  BOOLEAN             FeatureExist;\r
 \r
-  FeatureExist = FALSE;\r
+  FeatureExist    = FALSE;\r
   CpuFeatureEntry = NULL;\r
-  Entry = GetFirstNode (&CpuFeaturesData->FeatureList);\r
+  Entry           = GetFirstNode (&CpuFeaturesData->FeatureList);\r
   while (!IsNull (&CpuFeaturesData->FeatureList, Entry)) {\r
     CpuFeatureEntry = CPU_FEATURE_ENTRY_FROM_LINK (Entry);\r
     if (CompareMem (CpuFeature->FeatureMask, CpuFeatureEntry->FeatureMask, CpuFeaturesData->BitMaskSize) == 0) {\r
@@ -643,6 +660,7 @@ RegisterCpuFeatureWorker (
       FeatureExist = TRUE;\r
       break;\r
     }\r
+\r
     Entry = Entry->ForwardLink;\r
   }\r
 \r
@@ -661,55 +679,71 @@ RegisterCpuFeatureWorker (
     if (CpuFeature->GetConfigDataFunc != NULL) {\r
       CpuFeatureEntry->GetConfigDataFunc = CpuFeature->GetConfigDataFunc;\r
     }\r
+\r
     if (CpuFeature->SupportFunc != NULL) {\r
       CpuFeatureEntry->SupportFunc = CpuFeature->SupportFunc;\r
     }\r
+\r
     if (CpuFeature->InitializeFunc != NULL) {\r
       CpuFeatureEntry->InitializeFunc = CpuFeature->InitializeFunc;\r
     }\r
+\r
     if (CpuFeature->FeatureName != NULL) {\r
       if (CpuFeatureEntry->FeatureName == NULL) {\r
         CpuFeatureEntry->FeatureName = AllocatePool (CPU_FEATURE_NAME_SIZE);\r
         ASSERT (CpuFeatureEntry->FeatureName != NULL);\r
       }\r
+\r
       Status = AsciiStrCpyS (CpuFeatureEntry->FeatureName, CPU_FEATURE_NAME_SIZE, CpuFeature->FeatureName);\r
       ASSERT_EFI_ERROR (Status);\r
       FreePool (CpuFeature->FeatureName);\r
     }\r
+\r
     if (CpuFeature->ThreadBeforeFeatureBitMask != NULL) {\r
       if (CpuFeatureEntry->ThreadBeforeFeatureBitMask != NULL) {\r
         FreePool (CpuFeatureEntry->ThreadBeforeFeatureBitMask);\r
       }\r
+\r
       CpuFeatureEntry->ThreadBeforeFeatureBitMask = CpuFeature->ThreadBeforeFeatureBitMask;\r
     }\r
+\r
     if (CpuFeature->ThreadAfterFeatureBitMask != NULL) {\r
       if (CpuFeatureEntry->ThreadAfterFeatureBitMask != NULL) {\r
         FreePool (CpuFeatureEntry->ThreadAfterFeatureBitMask);\r
       }\r
+\r
       CpuFeatureEntry->ThreadAfterFeatureBitMask = CpuFeature->ThreadAfterFeatureBitMask;\r
     }\r
+\r
     if (CpuFeature->CoreBeforeFeatureBitMask != NULL) {\r
       if (CpuFeatureEntry->CoreBeforeFeatureBitMask != NULL) {\r
         FreePool (CpuFeatureEntry->CoreBeforeFeatureBitMask);\r
       }\r
+\r
       CpuFeatureEntry->CoreBeforeFeatureBitMask = CpuFeature->CoreBeforeFeatureBitMask;\r
     }\r
+\r
     if (CpuFeature->CoreAfterFeatureBitMask != NULL) {\r
       if (CpuFeatureEntry->CoreAfterFeatureBitMask != NULL) {\r
         FreePool (CpuFeatureEntry->CoreAfterFeatureBitMask);\r
       }\r
+\r
       CpuFeatureEntry->CoreAfterFeatureBitMask = CpuFeature->CoreAfterFeatureBitMask;\r
     }\r
+\r
     if (CpuFeature->PackageBeforeFeatureBitMask != NULL) {\r
       if (CpuFeatureEntry->PackageBeforeFeatureBitMask != NULL) {\r
         FreePool (CpuFeatureEntry->PackageBeforeFeatureBitMask);\r
       }\r
+\r
       CpuFeatureEntry->PackageBeforeFeatureBitMask = CpuFeature->PackageBeforeFeatureBitMask;\r
     }\r
+\r
     if (CpuFeature->PackageAfterFeatureBitMask != NULL) {\r
       if (CpuFeatureEntry->PackageAfterFeatureBitMask != NULL) {\r
         FreePool (CpuFeatureEntry->PackageAfterFeatureBitMask);\r
       }\r
+\r
       CpuFeatureEntry->PackageAfterFeatureBitMask = CpuFeature->PackageAfterFeatureBitMask;\r
     }\r
 \r
@@ -719,6 +753,7 @@ RegisterCpuFeatureWorker (
     FreePool (CpuFeature->FeatureMask);\r
     FreePool (CpuFeature);\r
   }\r
+\r
   //\r
   // Verify CPU features dependency can change CPU feature order\r
   //\r
@@ -735,12 +770,12 @@ RegisterCpuFeatureWorker (
 **/\r
 VOID\r
 SetCpuFeaturesBitMask (\r
-  IN UINT8               **FeaturesBitMask,\r
-  IN UINT32              Feature,\r
-  IN UINTN               BitMaskSize\r
+  IN UINT8   **FeaturesBitMask,\r
+  IN UINT32  Feature,\r
+  IN UINTN   BitMaskSize\r
   )\r
 {\r
-  UINT8                  *CpuFeaturesBitMask;\r
+  UINT8  *CpuFeaturesBitMask;\r
 \r
   ASSERT (FeaturesBitMask != NULL);\r
   CpuFeaturesBitMask = *FeaturesBitMask;\r
@@ -751,7 +786,7 @@ SetCpuFeaturesBitMask (
   }\r
 \r
   CpuFeaturesBitMask  += (Feature / 8);\r
-  *CpuFeaturesBitMask |= (UINT8) (1 << (Feature % 8));\r
+  *CpuFeaturesBitMask |= (UINT8)(1 << (Feature % 8));\r
 }\r
 \r
 /**\r
@@ -803,27 +838,27 @@ SetCpuFeaturesBitMask (
 RETURN_STATUS\r
 EFIAPI\r
 RegisterCpuFeature (\r
-  IN CHAR8                             *FeatureName        OPTIONAL,\r
-  IN CPU_FEATURE_GET_CONFIG_DATA       GetConfigDataFunc   OPTIONAL,\r
-  IN CPU_FEATURE_SUPPORT               SupportFunc         OPTIONAL,\r
-  IN CPU_FEATURE_INITIALIZE            InitializeFunc      OPTIONAL,\r
+  IN CHAR8                        *FeatureName        OPTIONAL,\r
+  IN CPU_FEATURE_GET_CONFIG_DATA  GetConfigDataFunc   OPTIONAL,\r
+  IN CPU_FEATURE_SUPPORT          SupportFunc         OPTIONAL,\r
+  IN CPU_FEATURE_INITIALIZE       InitializeFunc      OPTIONAL,\r
   ...\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  VA_LIST                    Marker;\r
-  UINT32                     Feature;\r
-  CPU_FEATURES_ENTRY         *CpuFeature;\r
-  UINT8                      *FeatureMask;\r
-  UINT8                      *ThreadBeforeFeatureBitMask;\r
-  UINT8                      *ThreadAfterFeatureBitMask;\r
-  UINT8                      *CoreBeforeFeatureBitMask;\r
-  UINT8                      *CoreAfterFeatureBitMask;\r
-  UINT8                      *PackageBeforeFeatureBitMask;\r
-  UINT8                      *PackageAfterFeatureBitMask;\r
-  BOOLEAN                    BeforeAll;\r
-  BOOLEAN                    AfterAll;\r
-  CPU_FEATURES_DATA          *CpuFeaturesData;\r
+  EFI_STATUS          Status;\r
+  VA_LIST             Marker;\r
+  UINT32              Feature;\r
+  CPU_FEATURES_ENTRY  *CpuFeature;\r
+  UINT8               *FeatureMask;\r
+  UINT8               *ThreadBeforeFeatureBitMask;\r
+  UINT8               *ThreadAfterFeatureBitMask;\r
+  UINT8               *CoreBeforeFeatureBitMask;\r
+  UINT8               *CoreAfterFeatureBitMask;\r
+  UINT8               *PackageBeforeFeatureBitMask;\r
+  UINT8               *PackageAfterFeatureBitMask;\r
+  BOOLEAN             BeforeAll;\r
+  BOOLEAN             AfterAll;\r
+  CPU_FEATURES_DATA   *CpuFeaturesData;\r
 \r
   FeatureMask                 = NULL;\r
   ThreadBeforeFeatureBitMask  = NULL;\r
@@ -832,8 +867,8 @@ RegisterCpuFeature (
   CoreAfterFeatureBitMask     = NULL;\r
   PackageBeforeFeatureBitMask = NULL;\r
   PackageAfterFeatureBitMask  = NULL;\r
-  BeforeAll            = FALSE;\r
-  AfterAll             = FALSE;\r
+  BeforeAll                   = FALSE;\r
+  AfterAll                    = FALSE;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
   if (CpuFeaturesData->FeaturesCount == 0) {\r
@@ -844,7 +879,7 @@ RegisterCpuFeature (
     //\r
     ASSERT (PcdGetSize (PcdCpuFeaturesSetting) == PcdGetSize (PcdCpuFeaturesCapability));\r
     ASSERT (PcdGetSize (PcdCpuFeaturesSetting) == PcdGetSize (PcdCpuFeaturesSupport));\r
-    CpuFeaturesData->BitMaskSize = (UINT32) PcdGetSize (PcdCpuFeaturesSetting);\r
+    CpuFeaturesData->BitMaskSize = (UINT32)PcdGetSize (PcdCpuFeaturesSetting);\r
   }\r
 \r
   VA_START (Marker, InitializeFunc);\r
@@ -853,19 +888,27 @@ RegisterCpuFeature (
     //\r
     // It's invalid to require a feature is before AND after all other features.\r
     //\r
-    ASSERT ((Feature & (CPU_FEATURE_BEFORE_ALL | CPU_FEATURE_AFTER_ALL))\r
-                    != (CPU_FEATURE_BEFORE_ALL | CPU_FEATURE_AFTER_ALL));\r
+    ASSERT (\r
+      (Feature & (CPU_FEATURE_BEFORE_ALL | CPU_FEATURE_AFTER_ALL))\r
+      != (CPU_FEATURE_BEFORE_ALL | CPU_FEATURE_AFTER_ALL)\r
+      );\r
 \r
     //\r
     // It's invalid to require feature A is before AND after before feature B,\r
     // either in thread level, core level or package level.\r
     //\r
-    ASSERT ((Feature & (CPU_FEATURE_THREAD_BEFORE | CPU_FEATURE_THREAD_AFTER))\r
-                    != (CPU_FEATURE_THREAD_BEFORE | CPU_FEATURE_THREAD_AFTER));\r
-    ASSERT ((Feature & (CPU_FEATURE_CORE_BEFORE | CPU_FEATURE_CORE_AFTER))\r
-                    != (CPU_FEATURE_CORE_BEFORE | CPU_FEATURE_CORE_AFTER));\r
-    ASSERT ((Feature & (CPU_FEATURE_PACKAGE_BEFORE | CPU_FEATURE_PACKAGE_AFTER))\r
-                    != (CPU_FEATURE_PACKAGE_BEFORE | CPU_FEATURE_PACKAGE_AFTER));\r
+    ASSERT (\r
+      (Feature & (CPU_FEATURE_THREAD_BEFORE | CPU_FEATURE_THREAD_AFTER))\r
+      != (CPU_FEATURE_THREAD_BEFORE | CPU_FEATURE_THREAD_AFTER)\r
+      );\r
+    ASSERT (\r
+      (Feature & (CPU_FEATURE_CORE_BEFORE | CPU_FEATURE_CORE_AFTER))\r
+      != (CPU_FEATURE_CORE_BEFORE | CPU_FEATURE_CORE_AFTER)\r
+      );\r
+    ASSERT (\r
+      (Feature & (CPU_FEATURE_PACKAGE_BEFORE | CPU_FEATURE_PACKAGE_AFTER))\r
+      != (CPU_FEATURE_PACKAGE_BEFORE | CPU_FEATURE_PACKAGE_AFTER)\r
+      );\r
     if (Feature < CPU_FEATURE_THREAD_BEFORE) {\r
       BeforeAll = ((Feature & CPU_FEATURE_BEFORE_ALL) != 0) ? TRUE : FALSE;\r
       AfterAll  = ((Feature & CPU_FEATURE_AFTER_ALL) != 0) ? TRUE : FALSE;\r
@@ -885,8 +928,10 @@ RegisterCpuFeature (
     } else if ((Feature & CPU_FEATURE_PACKAGE_AFTER) != 0) {\r
       SetCpuFeaturesBitMask (&PackageAfterFeatureBitMask, Feature & ~CPU_FEATURE_PACKAGE_AFTER, CpuFeaturesData->BitMaskSize);\r
     }\r
+\r
     Feature = VA_ARG (Marker, UINT32);\r
   }\r
+\r
   VA_END (Marker);\r
 \r
   CpuFeature = AllocateZeroPool (sizeof (CPU_FEATURES_ENTRY));\r
@@ -905,7 +950,7 @@ RegisterCpuFeature (
   CpuFeature->SupportFunc                 = SupportFunc;\r
   CpuFeature->InitializeFunc              = InitializeFunc;\r
   if (FeatureName != NULL) {\r
-    CpuFeature->FeatureName          = AllocatePool (CPU_FEATURE_NAME_SIZE);\r
+    CpuFeature->FeatureName = AllocatePool (CPU_FEATURE_NAME_SIZE);\r
     ASSERT (CpuFeature->FeatureName != NULL);\r
     Status = AsciiStrCpyS (CpuFeature->FeatureName, CPU_FEATURE_NAME_SIZE, FeatureName);\r
     ASSERT_EFI_ERROR (Status);\r
@@ -927,18 +972,18 @@ GetAcpiCpuData (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                           Status;\r
-  UINTN                                NumberOfCpus;\r
-  UINTN                                NumberOfEnabledProcessors;\r
-  ACPI_CPU_DATA                        *AcpiCpuData;\r
-  UINTN                                TableSize;\r
-  CPU_REGISTER_TABLE                   *RegisterTable;\r
-  UINTN                                Index;\r
-  EFI_PROCESSOR_INFORMATION            ProcessorInfoBuffer;\r
-\r
-  AcpiCpuData = (ACPI_CPU_DATA *) (UINTN) PcdGet64 (PcdCpuS3DataAddress);\r
+  EFI_STATUS                 Status;\r
+  UINTN                      NumberOfCpus;\r
+  UINTN                      NumberOfEnabledProcessors;\r
+  ACPI_CPU_DATA              *AcpiCpuData;\r
+  UINTN                      TableSize;\r
+  CPU_REGISTER_TABLE         *RegisterTable;\r
+  UINTN                      Index;\r
+  EFI_PROCESSOR_INFORMATION  ProcessorInfoBuffer;\r
+\r
+  AcpiCpuData = (ACPI_CPU_DATA *)(UINTN)PcdGet64 (PcdCpuS3DataAddress);\r
   if (AcpiCpuData == NULL) {\r
-    AcpiCpuData  = AllocatePages (EFI_SIZE_TO_PAGES (sizeof (ACPI_CPU_DATA)));\r
+    AcpiCpuData = AllocatePages (EFI_SIZE_TO_PAGES (sizeof (ACPI_CPU_DATA)));\r
     ASSERT (AcpiCpuData != NULL);\r
     ZeroMem (AcpiCpuData, sizeof (ACPI_CPU_DATA));\r
 \r
@@ -952,14 +997,15 @@ GetAcpiCpuData (
     AcpiCpuData->NumberOfCpus = (UINT32)NumberOfCpus;\r
   }\r
 \r
-  if (AcpiCpuData->CpuFeatureInitData.RegisterTable == 0 ||\r
-      AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable == 0) {\r
+  if ((AcpiCpuData->CpuFeatureInitData.RegisterTable == 0) ||\r
+      (AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable == 0))\r
+  {\r
     //\r
     // Allocate buffer for empty RegisterTable and PreSmmInitRegisterTable for all CPUs\r
     //\r
-    NumberOfCpus = AcpiCpuData->NumberOfCpus;\r
-    TableSize = 2 * NumberOfCpus * sizeof (CPU_REGISTER_TABLE);\r
-    RegisterTable  = AllocatePages (EFI_SIZE_TO_PAGES (TableSize));\r
+    NumberOfCpus  = AcpiCpuData->NumberOfCpus;\r
+    TableSize     = 2 * NumberOfCpus * sizeof (CPU_REGISTER_TABLE);\r
+    RegisterTable = AllocatePages (EFI_SIZE_TO_PAGES (TableSize));\r
     ASSERT (RegisterTable != NULL);\r
 \r
     for (Index = 0; Index < NumberOfCpus; Index++) {\r
@@ -976,9 +1022,11 @@ GetAcpiCpuData (
       RegisterTable[NumberOfCpus + Index].AllocatedSize      = 0;\r
       RegisterTable[NumberOfCpus + Index].RegisterTableEntry = 0;\r
     }\r
+\r
     if (AcpiCpuData->CpuFeatureInitData.RegisterTable == 0) {\r
       AcpiCpuData->CpuFeatureInitData.RegisterTable = (EFI_PHYSICAL_ADDRESS)(UINTN)RegisterTable;\r
     }\r
+\r
     if (AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable == 0) {\r
       AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable = (EFI_PHYSICAL_ADDRESS)(UINTN)(RegisterTable + NumberOfCpus);\r
     }\r
@@ -995,14 +1043,14 @@ GetAcpiCpuData (
 STATIC\r
 VOID\r
 EnlargeRegisterTable (\r
-  IN OUT CPU_REGISTER_TABLE            *RegisterTable\r
+  IN OUT CPU_REGISTER_TABLE  *RegisterTable\r
   )\r
 {\r
   EFI_PHYSICAL_ADDRESS  Address;\r
   UINTN                 UsedPages;\r
 \r
   UsedPages = RegisterTable->AllocatedSize / EFI_PAGE_SIZE;\r
-  Address  = (UINTN)AllocatePages (UsedPages + 1);\r
+  Address   = (UINTN)AllocatePages (UsedPages + 1);\r
   ASSERT (Address != 0);\r
 \r
   //\r
@@ -1011,8 +1059,8 @@ EnlargeRegisterTable (
   //\r
   if (RegisterTable->AllocatedSize > 0) {\r
     CopyMem (\r
-      (VOID *) (UINTN) Address,\r
-      (VOID *) (UINTN) RegisterTable->RegisterTableEntry,\r
+      (VOID *)(UINTN)Address,\r
+      (VOID *)(UINTN)RegisterTable->RegisterTableEntry,\r
       RegisterTable->AllocatedSize\r
       );\r
 \r
@@ -1045,27 +1093,27 @@ EnlargeRegisterTable (
 **/\r
 VOID\r
 CpuRegisterTableWriteWorker (\r
-  IN BOOLEAN                 PreSmmFlag,\r
-  IN UINTN                   ProcessorNumber,\r
-  IN REGISTER_TYPE           RegisterType,\r
-  IN UINT64                  Index,\r
-  IN UINT8                   ValidBitStart,\r
-  IN UINT8                   ValidBitLength,\r
-  IN UINT64                  Value,\r
-  IN BOOLEAN                 TestThenWrite\r
+  IN BOOLEAN        PreSmmFlag,\r
+  IN UINTN          ProcessorNumber,\r
+  IN REGISTER_TYPE  RegisterType,\r
+  IN UINT64         Index,\r
+  IN UINT8          ValidBitStart,\r
+  IN UINT8          ValidBitLength,\r
+  IN UINT64         Value,\r
+  IN BOOLEAN        TestThenWrite\r
   )\r
 {\r
-  CPU_FEATURES_DATA        *CpuFeaturesData;\r
-  ACPI_CPU_DATA            *AcpiCpuData;\r
-  CPU_REGISTER_TABLE       *RegisterTable;\r
-  CPU_REGISTER_TABLE_ENTRY *RegisterTableEntry;\r
+  CPU_FEATURES_DATA         *CpuFeaturesData;\r
+  ACPI_CPU_DATA             *AcpiCpuData;\r
+  CPU_REGISTER_TABLE        *RegisterTable;\r
+  CPU_REGISTER_TABLE_ENTRY  *RegisterTableEntry;\r
 \r
   CpuFeaturesData = GetCpuFeaturesData ();\r
   if (CpuFeaturesData->RegisterTable == NULL) {\r
     AcpiCpuData = GetAcpiCpuData ();\r
     ASSERT ((AcpiCpuData != NULL) && (AcpiCpuData->CpuFeatureInitData.RegisterTable != 0));\r
-    CpuFeaturesData->RegisterTable = (CPU_REGISTER_TABLE *) (UINTN) AcpiCpuData->CpuFeatureInitData.RegisterTable;\r
-    CpuFeaturesData->PreSmmRegisterTable = (CPU_REGISTER_TABLE *) (UINTN) AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable;\r
+    CpuFeaturesData->RegisterTable       = (CPU_REGISTER_TABLE *)(UINTN)AcpiCpuData->CpuFeatureInitData.RegisterTable;\r
+    CpuFeaturesData->PreSmmRegisterTable = (CPU_REGISTER_TABLE *)(UINTN)AcpiCpuData->CpuFeatureInitData.PreSmmInitRegisterTable;\r
   }\r
 \r
   if (PreSmmFlag) {\r
@@ -1081,10 +1129,10 @@ CpuRegisterTableWriteWorker (
   //\r
   // Append entry in the register table.\r
   //\r
-  RegisterTableEntry = (CPU_REGISTER_TABLE_ENTRY *) (UINTN) RegisterTable->RegisterTableEntry;\r
+  RegisterTableEntry                                            = (CPU_REGISTER_TABLE_ENTRY *)(UINTN)RegisterTable->RegisterTableEntry;\r
   RegisterTableEntry[RegisterTable->TableLength].RegisterType   = RegisterType;\r
-  RegisterTableEntry[RegisterTable->TableLength].Index          = (UINT32) Index;\r
-  RegisterTableEntry[RegisterTable->TableLength].HighIndex      = (UINT32) RShiftU64 (Index, 32);\r
+  RegisterTableEntry[RegisterTable->TableLength].Index          = (UINT32)Index;\r
+  RegisterTableEntry[RegisterTable->TableLength].HighIndex      = (UINT32)RShiftU64 (Index, 32);\r
   RegisterTableEntry[RegisterTable->TableLength].ValidBitStart  = ValidBitStart;\r
   RegisterTableEntry[RegisterTable->TableLength].ValidBitLength = ValidBitLength;\r
   RegisterTableEntry[RegisterTable->TableLength].Value          = Value;\r
@@ -1110,18 +1158,18 @@ CpuRegisterTableWriteWorker (
 VOID\r
 EFIAPI\r
 CpuRegisterTableWrite (\r
-  IN UINTN               ProcessorNumber,\r
-  IN REGISTER_TYPE       RegisterType,\r
-  IN UINT64              Index,\r
-  IN UINT64              ValueMask,\r
-  IN UINT64              Value\r
+  IN UINTN          ProcessorNumber,\r
+  IN REGISTER_TYPE  RegisterType,\r
+  IN UINT64         Index,\r
+  IN UINT64         ValueMask,\r
+  IN UINT64         Value\r
   )\r
 {\r
-  UINT8                   Start;\r
-  UINT8                   End;\r
-  UINT8                   Length;\r
+  UINT8  Start;\r
+  UINT8  End;\r
+  UINT8  Length;\r
 \r
-  Start  = (UINT8)LowBitSet64  (ValueMask);\r
+  Start  = (UINT8)LowBitSet64 (ValueMask);\r
   End    = (UINT8)HighBitSet64 (ValueMask);\r
   Length = End - Start + 1;\r
   CpuRegisterTableWriteWorker (FALSE, ProcessorNumber, RegisterType, Index, Start, Length, Value, FALSE);\r
@@ -1144,18 +1192,18 @@ CpuRegisterTableWrite (
 VOID\r
 EFIAPI\r
 CpuRegisterTableTestThenWrite (\r
-  IN UINTN               ProcessorNumber,\r
-  IN REGISTER_TYPE       RegisterType,\r
-  IN UINT64              Index,\r
-  IN UINT64              ValueMask,\r
-  IN UINT64              Value\r
+  IN UINTN          ProcessorNumber,\r
+  IN REGISTER_TYPE  RegisterType,\r
+  IN UINT64         Index,\r
+  IN UINT64         ValueMask,\r
+  IN UINT64         Value\r
   )\r
 {\r
-  UINT8                   Start;\r
-  UINT8                   End;\r
-  UINT8                   Length;\r
+  UINT8  Start;\r
+  UINT8  End;\r
+  UINT8  Length;\r
 \r
-  Start  = (UINT8)LowBitSet64  (ValueMask);\r
+  Start  = (UINT8)LowBitSet64 (ValueMask);\r
   End    = (UINT8)HighBitSet64 (ValueMask);\r
   Length = End - Start + 1;\r
   CpuRegisterTableWriteWorker (FALSE, ProcessorNumber, RegisterType, Index, Start, Length, Value, TRUE);\r
@@ -1178,18 +1226,18 @@ CpuRegisterTableTestThenWrite (
 VOID\r
 EFIAPI\r
 PreSmmCpuRegisterTableWrite (\r
-  IN UINTN               ProcessorNumber,\r
-  IN REGISTER_TYPE       RegisterType,\r
-  IN UINT64              Index,\r
-  IN UINT64              ValueMask,\r
-  IN UINT64              Value\r
+  IN UINTN          ProcessorNumber,\r
+  IN REGISTER_TYPE  RegisterType,\r
+  IN UINT64         Index,\r
+  IN UINT64         ValueMask,\r
+  IN UINT64         Value\r
   )\r
 {\r
   UINT8  Start;\r
   UINT8  End;\r
   UINT8  Length;\r
 \r
-  Start  = (UINT8)LowBitSet64  (ValueMask);\r
+  Start  = (UINT8)LowBitSet64 (ValueMask);\r
   End    = (UINT8)HighBitSet64 (ValueMask);\r
   Length = End - Start + 1;\r
   CpuRegisterTableWriteWorker (TRUE, ProcessorNumber, RegisterType, Index, Start, Length, Value, FALSE);\r
@@ -1208,14 +1256,15 @@ PreSmmCpuRegisterTableWrite (
 **/\r
 BOOLEAN\r
 IsCpuFeatureSetInCpuPcd (\r
-  IN UINT8               *CpuBitMask,\r
-  IN UINTN               CpuBitMaskSize,\r
-  IN UINT32              Feature\r
+  IN UINT8   *CpuBitMask,\r
+  IN UINTN   CpuBitMaskSize,\r
+  IN UINT32  Feature\r
   )\r
 {\r
   if ((Feature >> 3) >= CpuBitMaskSize) {\r
     return FALSE;\r
   }\r
+\r
   return ((*(CpuBitMask + (Feature >> 3)) & (1 << (Feature & 0x07))) != 0);\r
 }\r
 \r
@@ -1236,7 +1285,7 @@ IsCpuFeatureSetInCpuPcd (
 BOOLEAN\r
 EFIAPI\r
 IsCpuFeatureSupported (\r
-  IN UINT32              Feature\r
+  IN UINT32  Feature\r
   )\r
 {\r
   return IsCpuFeatureSetInCpuPcd (\r
@@ -1260,7 +1309,7 @@ IsCpuFeatureSupported (
 BOOLEAN\r
 EFIAPI\r
 IsCpuFeatureInSetting (\r
-  IN UINT32              Feature\r
+  IN UINT32  Feature\r
   )\r
 {\r
   return IsCpuFeatureSetInCpuPcd (\r
@@ -1280,11 +1329,11 @@ IsCpuFeatureInSetting (
 VOID\r
 EFIAPI\r
 SwitchBspAfterFeaturesInitialize (\r
-  IN UINTN               ProcessorNumber\r
+  IN UINTN  ProcessorNumber\r
   )\r
 {\r
-  CPU_FEATURES_DATA      *CpuFeaturesData;\r
+  CPU_FEATURES_DATA  *CpuFeaturesData;\r
 \r
-  CpuFeaturesData = GetCpuFeaturesData ();\r
+  CpuFeaturesData            = GetCpuFeaturesData ();\r
   CpuFeaturesData->BspNumber = ProcessorNumber;\r
 }\r
index 8e2a420f80d0380b322976cc6a3c2bc40c5d13e0..e0149df0449ff4f2637135f94d59b644a2c99c83 100644 (file)
@@ -27,10 +27,10 @@ InternalX86GetTimerFrequency (
   VOID\r
   )\r
 {\r
-  UINTN Divisor;\r
+  UINTN  Divisor;\r
 \r
   GetApicTimerState (&Divisor, NULL, NULL);\r
-  return PcdGet32(PcdFSBClock) / (UINT32)Divisor;\r
+  return PcdGet32 (PcdFSBClock) / (UINT32)Divisor;\r
 }\r
 \r
 /**\r
@@ -48,13 +48,13 @@ InternalX86GetTimerFrequency (
 VOID\r
 EFIAPI\r
 InternalX86Delay (\r
-  IN      UINT32                    Delay\r
+  IN      UINT32  Delay\r
   )\r
 {\r
-  INT32                             Ticks;\r
-  UINT32                            Times;\r
-  UINT32                            InitCount;\r
-  UINT32                            StartTick;\r
+  INT32   Ticks;\r
+  UINT32  Times;\r
+  UINT32  InitCount;\r
+  UINT32  StartTick;\r
 \r
   //\r
   // In case Delay is too larger, separate it into several small delay slot.\r
@@ -65,13 +65,13 @@ InternalX86Delay (
   //\r
   InitCount = GetApicTimerInitCount ();\r
   ASSERT (InitCount != 0);\r
-  Times     = Delay / (InitCount / 2);\r
-  Delay     = Delay % (InitCount / 2);\r
+  Times = Delay / (InitCount / 2);\r
+  Delay = Delay % (InitCount / 2);\r
 \r
   //\r
   // Get Start Tick and do delay\r
   //\r
-  StartTick  = GetApicTimerCurrentCount ();\r
+  StartTick = GetApicTimerCurrentCount ();\r
   do {\r
     //\r
     // Wait until time out by Delay value\r
@@ -111,7 +111,7 @@ InternalX86Delay (
 UINTN\r
 EFIAPI\r
 MicroSecondDelay (\r
-  IN      UINTN                     MicroSeconds\r
+  IN      UINTN  MicroSeconds\r
   )\r
 {\r
   InternalX86Delay (\r
@@ -139,7 +139,7 @@ MicroSecondDelay (
 UINTN\r
 EFIAPI\r
 NanoSecondDelay (\r
-  IN      UINTN                     NanoSeconds\r
+  IN      UINTN  NanoSeconds\r
   )\r
 {\r
   InternalX86Delay (\r
@@ -200,8 +200,8 @@ GetPerformanceCounter (
 UINT64\r
 EFIAPI\r
 GetPerformanceCounterProperties (\r
-  OUT      UINT64                    *StartValue   OPTIONAL,\r
-  OUT      UINT64                    *EndValue     OPTIONAL\r
+  OUT      UINT64  *StartValue   OPTIONAL,\r
+  OUT      UINT64  *EndValue     OPTIONAL\r
   )\r
 {\r
   if (StartValue != NULL) {\r
@@ -212,7 +212,7 @@ GetPerformanceCounterProperties (
     *EndValue = 0;\r
   }\r
 \r
-  return (UINT64) InternalX86GetTimerFrequency ();\r
+  return (UINT64)InternalX86GetTimerFrequency ();\r
 }\r
 \r
 /**\r
@@ -229,7 +229,7 @@ GetPerformanceCounterProperties (
 UINT64\r
 EFIAPI\r
 GetTimeInNanoSecond (\r
-  IN      UINT64                     Ticks\r
+  IN      UINT64  Ticks\r
   )\r
 {\r
   UINT64  Frequency;\r
@@ -251,9 +251,9 @@ GetTimeInNanoSecond (
   // Since 2^29 < 1,000,000,000 = 0x3B9ACA00 < 2^30, Remainder should < 2^(64-30) = 2^34,\r
   // i.e. highest bit set in Remainder should <= 33.\r
   //\r
-  Shift = MAX (0, HighBitSet64 (Remainder) - 33);\r
-  Remainder = RShiftU64 (Remainder, (UINTN) Shift);\r
-  Frequency = RShiftU64 (Frequency, (UINTN) Shift);\r
+  Shift        = MAX (0, HighBitSet64 (Remainder) - 33);\r
+  Remainder    = RShiftU64 (Remainder, (UINTN)Shift);\r
+  Frequency    = RShiftU64 (Frequency, (UINTN)Shift);\r
   NanoSeconds += DivU64x64Remainder (MultU64x32 (Remainder, 1000000000u), Frequency, NULL);\r
 \r
   return NanoSeconds;\r
index 24bd6d0a946d000700878bc93615cca2d47c870d..249cd40f9ddbdc08a3e4039ebe147fa40f40ad6b 100644 (file)
@@ -14,9 +14,9 @@
 ///\r
 /// Page Table Entry\r
 ///\r
-#define IA32_PG_P                   BIT0\r
-#define IA32_PG_RW                  BIT1\r
-#define IA32_PG_PS                  BIT7\r
+#define IA32_PG_P   BIT0\r
+#define IA32_PG_RW  BIT1\r
+#define IA32_PG_PS  BIT7\r
 \r
 /**\r
 \r
 **/\r
 VOID\r
 StmGen4GPageTable (\r
-  IN UINTN              PageTableBase\r
+  IN UINTN  PageTableBase\r
   )\r
 {\r
-  UINTN                             Index;\r
-  UINT32                            *Pte;\r
-  UINT32                            Address;\r
+  UINTN   Index;\r
+  UINT32  *Pte;\r
+  UINT32  Address;\r
 \r
-  Pte = (UINT32*)(UINTN)PageTableBase;\r
+  Pte = (UINT32 *)(UINTN)PageTableBase;\r
 \r
   Address = 0;\r
   for (Index = 0; Index < SIZE_4KB / sizeof (*Pte); Index++) {\r
@@ -63,7 +63,7 @@ StmGen4GPageTable (
 UINT32\r
 EFIAPI\r
 SmmStmExceptionHandler (\r
-  IN OUT STM_PROTECTION_EXCEPTION_STACK_FRAME Context\r
+  IN OUT STM_PROTECTION_EXCEPTION_STACK_FRAME  Context\r
   )\r
 {\r
   // TBD - SmmStmExceptionHandler, record information\r
index fa3a866ab6f672d3cdd0de656e6082b62ff2c27e..78de7f8407bd241c97b0be6398da54590a3d0f21 100644 (file)
@@ -34,8 +34,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 //\r
 // MSRs required for configuration of SMM Code Access Check\r
 //\r
-#define SMM_FEATURES_LIB_IA32_MCA_CAP              0x17D\r
-#define   SMM_CODE_ACCESS_CHK_BIT                  BIT58\r
+#define SMM_FEATURES_LIB_IA32_MCA_CAP  0x17D\r
+#define   SMM_CODE_ACCESS_CHK_BIT      BIT58\r
 \r
 //\r
 // Set default value to assume SMRR is not supported\r
@@ -86,7 +86,7 @@ CpuFeaturesLibInitialization (
   AsmCpuid (CPUID_VERSION_INFO, &RegEax, NULL, NULL, &RegEdx);\r
   FamilyId = (RegEax >> 8) & 0xf;\r
   ModelId  = (RegEax >> 4) & 0xf;\r
-  if (FamilyId == 0x06 || FamilyId == 0x0f) {\r
+  if ((FamilyId == 0x06) || (FamilyId == 0x0f)) {\r
     ModelId = ModelId | ((RegEax >> 12) & 0xf0);\r
   }\r
 \r
@@ -110,7 +110,7 @@ CpuFeaturesLibInitialization (
   // SMRR Physical Base and SMM Physical Mask MSRs are not available.\r
   //\r
   if (FamilyId == 0x06) {\r
-    if (ModelId == 0x1C || ModelId == 0x26 || ModelId == 0x27 || ModelId == 0x35 || ModelId == 0x36) {\r
+    if ((ModelId == 0x1C) || (ModelId == 0x26) || (ModelId == 0x27) || (ModelId == 0x35) || (ModelId == 0x36)) {\r
       mSmrrSupported = FALSE;\r
     }\r
   }\r
@@ -123,7 +123,7 @@ CpuFeaturesLibInitialization (
   // Processor Family MSRs\r
   //\r
   if (FamilyId == 0x06) {\r
-    if (ModelId == 0x17 || ModelId == 0x0f) {\r
+    if ((ModelId == 0x17) || (ModelId == 0x0f)) {\r
       mSmrrPhysBaseMsr = SMM_FEATURES_LIB_IA32_CORE_SMRR_PHYSBASE;\r
       mSmrrPhysMaskMsr = SMM_FEATURES_LIB_IA32_CORE_SMRR_PHYSMASK;\r
     }\r
@@ -204,7 +204,7 @@ SmmCpuFeaturesInitializeProcessor (
   //\r
   // Configure SMBASE.\r
   //\r
-  CpuState = (SMRAM_SAVE_STATE_MAP *)(UINTN)(SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET);\r
+  CpuState             = (SMRAM_SAVE_STATE_MAP *)(UINTN)(SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET);\r
   CpuState->x86.SMBASE = (UINT32)CpuHotPlugData->SmBase[CpuIndex];\r
 \r
   //\r
@@ -216,7 +216,7 @@ SmmCpuFeaturesInitializeProcessor (
   // accessing SMRR base/mask MSRs.  If Lock(BIT0) of MSR_FEATURE_CONTROL MSR(0x3A)\r
   // is set, then the MSR is locked and can not be modified.\r
   //\r
-  if (mSmrrSupported && mSmrrPhysBaseMsr == SMM_FEATURES_LIB_IA32_CORE_SMRR_PHYSBASE) {\r
+  if (mSmrrSupported && (mSmrrPhysBaseMsr == SMM_FEATURES_LIB_IA32_CORE_SMRR_PHYSBASE)) {\r
     FeatureControl = AsmReadMsr64 (SMM_FEATURES_LIB_IA32_FEATURE_CONTROL);\r
     if ((FeatureControl & BIT3) == 0) {\r
       if ((FeatureControl & BIT0) == 0) {\r
@@ -242,7 +242,8 @@ SmmCpuFeaturesInitializeProcessor (
     //\r
     if ((CpuHotPlugData->SmrrSize < SIZE_4KB) ||\r
         (CpuHotPlugData->SmrrSize != GetPowerOfTwo32 (CpuHotPlugData->SmrrSize)) ||\r
-        ((CpuHotPlugData->SmrrBase & ~(CpuHotPlugData->SmrrSize - 1)) != CpuHotPlugData->SmrrBase)) {\r
+        ((CpuHotPlugData->SmrrBase & ~(CpuHotPlugData->SmrrSize - 1)) != CpuHotPlugData->SmrrBase))\r
+    {\r
       //\r
       // Print message and halt if CPU is Monarch\r
       //\r
@@ -263,7 +264,7 @@ SmmCpuFeaturesInitializeProcessor (
   AsmCpuid (CPUID_VERSION_INFO, &RegEax, NULL, NULL, &RegEdx);\r
   FamilyId = (RegEax >> 8) & 0xf;\r
   ModelId  = (RegEax >> 4) & 0xf;\r
-  if (FamilyId == 0x06 || FamilyId == 0x0f) {\r
+  if ((FamilyId == 0x06) || (FamilyId == 0x0f)) {\r
     ModelId = ModelId | ((RegEax >> 12) & 0xf0);\r
   }\r
 \r
@@ -276,10 +277,11 @@ SmmCpuFeaturesInitializeProcessor (
   // Intel(R) Core(TM) Processor Family MSRs.\r
   //\r
   if (FamilyId == 0x06) {\r
-    if (ModelId == 0x3C || ModelId == 0x45 || ModelId == 0x46 ||\r
-        ModelId == 0x3D || ModelId == 0x47 || ModelId == 0x4E || ModelId == 0x4F ||\r
-        ModelId == 0x3F || ModelId == 0x56 || ModelId == 0x57 || ModelId == 0x5C ||\r
-        ModelId == 0x8C) {\r
+    if ((ModelId == 0x3C) || (ModelId == 0x45) || (ModelId == 0x46) ||\r
+        (ModelId == 0x3D) || (ModelId == 0x47) || (ModelId == 0x4E) || (ModelId == 0x4F) ||\r
+        (ModelId == 0x3F) || (ModelId == 0x56) || (ModelId == 0x57) || (ModelId == 0x5C) ||\r
+        (ModelId == 0x8C))\r
+    {\r
       //\r
       // Check to see if the CPU supports the SMM Code Access Check feature\r
       // Do not access this MSR unless the CPU supports the SmmRegFeatureControl\r
@@ -382,7 +384,7 @@ SmmCpuFeaturesDisableSmrr (
   )\r
 {\r
   if (mSmrrSupported && mNeedConfigureMtrrs) {\r
-    AsmWriteMsr64 (mSmrrPhysMaskMsr, AsmReadMsr64(mSmrrPhysMaskMsr) & ~EFI_MSR_SMRR_PHYS_MASK_VALID);\r
+    AsmWriteMsr64 (mSmrrPhysMaskMsr, AsmReadMsr64 (mSmrrPhysMaskMsr) & ~EFI_MSR_SMRR_PHYS_MASK_VALID);\r
   }\r
 }\r
 \r
@@ -397,7 +399,7 @@ SmmCpuFeaturesReenableSmrr (
   )\r
 {\r
   if (mSmrrSupported && mNeedConfigureMtrrs) {\r
-    AsmWriteMsr64 (mSmrrPhysMaskMsr, AsmReadMsr64(mSmrrPhysMaskMsr) | EFI_MSR_SMRR_PHYS_MASK_VALID);\r
+    AsmWriteMsr64 (mSmrrPhysMaskMsr, AsmReadMsr64 (mSmrrPhysMaskMsr) | EFI_MSR_SMRR_PHYS_MASK_VALID);\r
   }\r
 }\r
 \r
@@ -458,9 +460,10 @@ SmmCpuFeaturesIsSmmRegisterSupported (
   IN SMM_REG_NAME  RegName\r
   )\r
 {\r
-  if (mSmmFeatureControlSupported && RegName == SmmRegFeatureControl) {\r
+  if (mSmmFeatureControlSupported && (RegName == SmmRegFeatureControl)) {\r
     return TRUE;\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -483,9 +486,10 @@ SmmCpuFeaturesGetSmmRegister (
   IN SMM_REG_NAME  RegName\r
   )\r
 {\r
-  if (mSmmFeatureControlSupported && RegName == SmmRegFeatureControl) {\r
+  if (mSmmFeatureControlSupported && (RegName == SmmRegFeatureControl)) {\r
     return AsmReadMsr64 (SMM_FEATURES_LIB_SMM_FEATURE_CONTROL);\r
   }\r
+\r
   return 0;\r
 }\r
 \r
@@ -508,7 +512,7 @@ SmmCpuFeaturesSetSmmRegister (
   IN UINT64        Value\r
   )\r
 {\r
-  if (mSmmFeatureControlSupported && RegName == SmmRegFeatureControl) {\r
+  if (mSmmFeatureControlSupported && (RegName == SmmRegFeatureControl)) {\r
     AsmWriteMsr64 (SMM_FEATURES_LIB_SMM_FEATURE_CONTROL, Value);\r
   }\r
 }\r
@@ -605,9 +609,8 @@ SmmCpuFeaturesCompleteSmmReadyToLock (
 VOID *\r
 EFIAPI\r
 SmmCpuFeaturesAllocatePageTableMemory (\r
-  IN UINTN           Pages\r
+  IN UINTN  Pages\r
   )\r
 {\r
   return NULL;\r
 }\r
-\r
index c92387625ddc6da2b669bfd8734b4452c5d81679..4e8f897f5e9cf7a00a6a502354a4a554fb9489aa 100644 (file)
 #include "CpuFeaturesLib.h"\r
 #include "SmmStm.h"\r
 \r
-#define TXT_EVTYPE_BASE                  0x400\r
-#define TXT_EVTYPE_STM_HASH              (TXT_EVTYPE_BASE + 14)\r
+#define TXT_EVTYPE_BASE      0x400\r
+#define TXT_EVTYPE_STM_HASH  (TXT_EVTYPE_BASE + 14)\r
 \r
-#define RDWR_ACCS             3\r
-#define FULL_ACCS             7\r
+#define RDWR_ACCS  3\r
+#define FULL_ACCS  7\r
 \r
 EFI_HANDLE  mStmSmmCpuHandle = NULL;\r
 \r
-BOOLEAN mLockLoadMonitor = FALSE;\r
+BOOLEAN  mLockLoadMonitor = FALSE;\r
 \r
 //\r
 // Template of STM_RSC_END structure for copying.\r
 //\r
-GLOBAL_REMOVE_IF_UNREFERENCED STM_RSC_END mRscEndNode = {\r
-  {END_OF_RESOURCES, sizeof (STM_RSC_END)},\r
+GLOBAL_REMOVE_IF_UNREFERENCED STM_RSC_END  mRscEndNode = {\r
+  { END_OF_RESOURCES, sizeof (STM_RSC_END) },\r
 };\r
 \r
 GLOBAL_REMOVE_IF_UNREFERENCED UINT8  *mStmResourcesPtr         = NULL;\r
@@ -52,7 +52,7 @@ GLOBAL_REMOVE_IF_UNREFERENCED UINT32  mStmState = 0;
 // System Configuration Table pointing to STM Configuration Table\r
 //\r
 GLOBAL_REMOVE_IF_UNREFERENCED\r
-EFI_SM_MONITOR_INIT_PROTOCOL mSmMonitorInitProtocol = {\r
+EFI_SM_MONITOR_INIT_PROTOCOL  mSmMonitorInitProtocol = {\r
   LoadMonitor,\r
   AddPiResource,\r
   DeletePiResource,\r
@@ -60,10 +60,7 @@ EFI_SM_MONITOR_INIT_PROTOCOL mSmMonitorInitProtocol = {
   GetMonitorState,\r
 };\r
 \r
-\r
-\r
-\r
-#define   CPUID1_EDX_XD_SUPPORT      0x100000\r
+#define   CPUID1_EDX_XD_SUPPORT  0x100000\r
 \r
 //\r
 // External global variables associated with SMI Handler Template\r
@@ -146,10 +143,10 @@ SmmCpuFeaturesLibStmConstructor (
       //\r
       // Retrieve MSEG location from MSEG SRAM HOB\r
       //\r
-      SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *) GET_GUID_HOB_DATA (GuidHob);\r
+      SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *)GET_GUID_HOB_DATA (GuidHob);\r
       if (SmramDescriptor->PhysicalSize > 0) {\r
-        mMsegBase       = (UINTN)SmramDescriptor->CpuStart;\r
-        mMsegSize       = (UINTN)SmramDescriptor->PhysicalSize;\r
+        mMsegBase = (UINTN)SmramDescriptor->CpuStart;\r
+        mMsegSize = (UINTN)SmramDescriptor->PhysicalSize;\r
       }\r
     } else if (PcdGet32 (PcdCpuMsegSize) > 0) {\r
       //\r
@@ -162,6 +159,7 @@ SmmCpuFeaturesLibStmConstructor (
         DEBUG ((DEBUG_ERROR, "Not enough SMRAM resource to allocate MSEG size %08x\n", PcdGet32 (PcdCpuMsegSize)));\r
       }\r
     }\r
+\r
     if (mMsegBase > 0) {\r
       DEBUG ((DEBUG_INFO, "MsegBase: 0x%08x, MsegSize: 0x%08x\n", mMsegBase, mMsegSize));\r
     }\r
@@ -251,16 +249,16 @@ SmmCpuFeaturesInstallSmiHandler (
   IN UINT32  Cr3\r
   )\r
 {\r
-  EFI_STATUS                     Status;\r
-  TXT_PROCESSOR_SMM_DESCRIPTOR   *Psd;\r
-  VOID                           *Hob;\r
-  UINT32                         RegEax;\r
-  UINT32                         RegEdx;\r
-  EFI_PROCESSOR_INFORMATION      ProcessorInfo;\r
+  EFI_STATUS                    Status;\r
+  TXT_PROCESSOR_SMM_DESCRIPTOR  *Psd;\r
+  VOID                          *Hob;\r
+  UINT32                        RegEax;\r
+  UINT32                        RegEdx;\r
+  EFI_PROCESSOR_INFORMATION     ProcessorInfo;\r
 \r
   CopyMem ((VOID *)((UINTN)SmBase + TXT_SMM_PSD_OFFSET), &gcStmPsd, sizeof (gcStmPsd));\r
-  Psd = (TXT_PROCESSOR_SMM_DESCRIPTOR *)(VOID *)((UINTN)SmBase + TXT_SMM_PSD_OFFSET);\r
-  Psd->SmmGdtPtr = GdtBase;\r
+  Psd             = (TXT_PROCESSOR_SMM_DESCRIPTOR *)(VOID *)((UINTN)SmBase + TXT_SMM_PSD_OFFSET);\r
+  Psd->SmmGdtPtr  = GdtBase;\r
   Psd->SmmGdtSize = (UINT32)GdtSize;\r
 \r
   //\r
@@ -293,49 +291,49 @@ SmmCpuFeaturesInstallSmiHandler (
   //\r
   // Set the value at the top of the CPU stack to the CPU Index\r
   //\r
-  *(UINTN*)(UINTN)gStmSmiStack = CpuIndex;\r
+  *(UINTN *)(UINTN)gStmSmiStack = CpuIndex;\r
 \r
   //\r
   // Copy template to CPU specific SMI handler location\r
   //\r
   CopyMem (\r
-    (VOID*)((UINTN)SmBase + SMM_HANDLER_OFFSET),\r
-    (VOID*)gcStmSmiHandlerTemplate,\r
+    (VOID *)((UINTN)SmBase + SMM_HANDLER_OFFSET),\r
+    (VOID *)gcStmSmiHandlerTemplate,\r
     gcStmSmiHandlerSize\r
     );\r
 \r
   Psd->SmmSmiHandlerRip = SmBase + SMM_HANDLER_OFFSET + gcStmSmiHandlerOffset;\r
-  Psd->SmmSmiHandlerRsp = (UINTN)SmiStack + StackSize - sizeof(UINTN);\r
+  Psd->SmmSmiHandlerRsp = (UINTN)SmiStack + StackSize - sizeof (UINTN);\r
   Psd->SmmCr3           = Cr3;\r
 \r
-  DEBUG((DEBUG_INFO, "CpuSmmStmExceptionStackSize - %x\n", PcdGet32(PcdCpuSmmStmExceptionStackSize)));\r
-  DEBUG((DEBUG_INFO, "Pages - %x\n", EFI_SIZE_TO_PAGES(PcdGet32(PcdCpuSmmStmExceptionStackSize))));\r
-  Psd->StmProtectionExceptionHandler.SpeRsp = (UINT64)(UINTN)AllocatePages (EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmStmExceptionStackSize)));\r
+  DEBUG ((DEBUG_INFO, "CpuSmmStmExceptionStackSize - %x\n", PcdGet32 (PcdCpuSmmStmExceptionStackSize)));\r
+  DEBUG ((DEBUG_INFO, "Pages - %x\n", EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmStmExceptionStackSize))));\r
+  Psd->StmProtectionExceptionHandler.SpeRsp  = (UINT64)(UINTN)AllocatePages (EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmStmExceptionStackSize)));\r
   Psd->StmProtectionExceptionHandler.SpeRsp += EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmStmExceptionStackSize)));\r
 \r
-  Psd->BiosHwResourceRequirementsPtr        = (UINT64)(UINTN)GetStmResource ();\r
+  Psd->BiosHwResourceRequirementsPtr = (UINT64)(UINTN)GetStmResource ();\r
 \r
   //\r
   // Get the APIC ID for the CPU specified by CpuIndex\r
   //\r
   Status = mSmmCpuFeaturesLibMpService->GetProcessorInfo (\r
-             mSmmCpuFeaturesLibMpService,\r
-             CpuIndex,\r
-             &ProcessorInfo\r
-             );\r
+                                          mSmmCpuFeaturesLibMpService,\r
+                                          CpuIndex,\r
+                                          &ProcessorInfo\r
+                                          );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   Psd->LocalApicId = (UINT32)ProcessorInfo.ProcessorId;\r
-  Psd->AcpiRsdp = 0;\r
+  Psd->AcpiRsdp    = 0;\r
 \r
   Hob = GetFirstHob (EFI_HOB_TYPE_CPU);\r
   if (Hob != NULL) {\r
-    Psd->PhysicalAddressBits = ((EFI_HOB_CPU *) Hob)->SizeOfMemorySpace;\r
+    Psd->PhysicalAddressBits = ((EFI_HOB_CPU *)Hob)->SizeOfMemorySpace;\r
   } else {\r
     AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
     if (RegEax >= 0x80000008) {\r
       AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL);\r
-      Psd->PhysicalAddressBits = (UINT8) RegEax;\r
+      Psd->PhysicalAddressBits = (UINT8)RegEax;\r
     } else {\r
       Psd->PhysicalAddressBits = 36;\r
     }\r
@@ -385,6 +383,7 @@ SmmEndOfDxeEventNotify (
       break;\r
     }\r
   }\r
+\r
   if (Rsdp == NULL) {\r
     for (Index = 0; Index < gST->NumberOfTableEntries; Index++) {\r
       if (CompareGuid (&(gST->ConfigurationTable[Index].VendorGuid), &gEfiAcpi10TableGuid)) {\r
@@ -416,8 +415,8 @@ StmSmmConfigurationTableInit (
   VOID\r
   )\r
 {\r
-  EFI_STATUS    Status;\r
-    VOID        *Registration;\r
+  EFI_STATUS  Status;\r
+  VOID        *Registration;\r
 \r
   Status = gSmst->SmmInstallProtocolInterface (\r
                     &mStmSmmCpuHandle,\r
@@ -468,19 +467,19 @@ GetMonitorState (
 **/\r
 BOOLEAN\r
 HandleSingleResource (\r
-  IN  STM_RSC      *Resource,\r
-  IN  STM_RSC      *Record\r
+  IN  STM_RSC  *Resource,\r
+  IN  STM_RSC  *Record\r
   )\r
 {\r
-  UINT64      ResourceLo;\r
-  UINT64      ResourceHi;\r
-  UINT64      RecordLo;\r
-  UINT64      RecordHi;\r
+  UINT64  ResourceLo;\r
+  UINT64  ResourceHi;\r
+  UINT64  RecordLo;\r
+  UINT64  RecordHi;\r
 \r
   ResourceLo = 0;\r
   ResourceHi = 0;\r
-  RecordLo = 0;\r
-  RecordHi = 0;\r
+  RecordLo   = 0;\r
+  RecordHi   = 0;\r
 \r
   //\r
   // Calling code is responsible for making sure that\r
@@ -488,62 +487,69 @@ HandleSingleResource (
   // thus we use just one of them as switch variable.\r
   //\r
   switch (Resource->Header.RscType) {\r
-  case MEM_RANGE:\r
-  case MMIO_RANGE:\r
-    ResourceLo = Resource->Mem.Base;\r
-    ResourceHi = Resource->Mem.Base + Resource->Mem.Length;\r
-    RecordLo = Record->Mem.Base;\r
-    RecordHi = Record->Mem.Base + Record->Mem.Length;\r
-    if (Resource->Mem.RWXAttributes != Record->Mem.RWXAttributes) {\r
-      if ((ResourceLo == RecordLo) && (ResourceHi == RecordHi)) {\r
-        Record->Mem.RWXAttributes = Resource->Mem.RWXAttributes | Record->Mem.RWXAttributes;\r
-        return TRUE;\r
-      } else {\r
+    case MEM_RANGE:\r
+    case MMIO_RANGE:\r
+      ResourceLo = Resource->Mem.Base;\r
+      ResourceHi = Resource->Mem.Base + Resource->Mem.Length;\r
+      RecordLo   = Record->Mem.Base;\r
+      RecordHi   = Record->Mem.Base + Record->Mem.Length;\r
+      if (Resource->Mem.RWXAttributes != Record->Mem.RWXAttributes) {\r
+        if ((ResourceLo == RecordLo) && (ResourceHi == RecordHi)) {\r
+          Record->Mem.RWXAttributes = Resource->Mem.RWXAttributes | Record->Mem.RWXAttributes;\r
+          return TRUE;\r
+        } else {\r
+          return FALSE;\r
+        }\r
+      }\r
+\r
+      break;\r
+    case IO_RANGE:\r
+    case TRAPPED_IO_RANGE:\r
+      ResourceLo = (UINT64)Resource->Io.Base;\r
+      ResourceHi = (UINT64)Resource->Io.Base + (UINT64)Resource->Io.Length;\r
+      RecordLo   = (UINT64)Record->Io.Base;\r
+      RecordHi   = (UINT64)Record->Io.Base + (UINT64)Record->Io.Length;\r
+      break;\r
+    case PCI_CFG_RANGE:\r
+      if ((Resource->PciCfg.OriginatingBusNumber != Record->PciCfg.OriginatingBusNumber) ||\r
+          (Resource->PciCfg.LastNodeIndex != Record->PciCfg.LastNodeIndex))\r
+      {\r
         return FALSE;\r
       }\r
-    }\r
-    break;\r
-  case IO_RANGE:\r
-  case TRAPPED_IO_RANGE:\r
-    ResourceLo = (UINT64) Resource->Io.Base;\r
-    ResourceHi = (UINT64) Resource->Io.Base + (UINT64) Resource->Io.Length;\r
-    RecordLo = (UINT64) Record->Io.Base;\r
-    RecordHi = (UINT64) Record->Io.Base + (UINT64) Record->Io.Length;\r
-    break;\r
-  case PCI_CFG_RANGE:\r
-    if ((Resource->PciCfg.OriginatingBusNumber != Record->PciCfg.OriginatingBusNumber) ||\r
-        (Resource->PciCfg.LastNodeIndex != Record->PciCfg.LastNodeIndex)) {\r
-      return FALSE;\r
-    }\r
-    if (CompareMem (Resource->PciCfg.PciDevicePath, Record->PciCfg.PciDevicePath, sizeof(STM_PCI_DEVICE_PATH_NODE) * (Resource->PciCfg.LastNodeIndex + 1)) != 0) {\r
-      return FALSE;\r
-    }\r
-    ResourceLo = (UINT64) Resource->PciCfg.Base;\r
-    ResourceHi = (UINT64) Resource->PciCfg.Base + (UINT64) Resource->PciCfg.Length;\r
-    RecordLo = (UINT64) Record->PciCfg.Base;\r
-    RecordHi = (UINT64) Record->PciCfg.Base + (UINT64) Record->PciCfg.Length;\r
-    if (Resource->PciCfg.RWAttributes != Record->PciCfg.RWAttributes) {\r
-      if ((ResourceLo == RecordLo) && (ResourceHi == RecordHi)) {\r
-        Record->PciCfg.RWAttributes = Resource->PciCfg.RWAttributes | Record->PciCfg.RWAttributes;\r
-        return TRUE;\r
-      } else {\r
+\r
+      if (CompareMem (Resource->PciCfg.PciDevicePath, Record->PciCfg.PciDevicePath, sizeof (STM_PCI_DEVICE_PATH_NODE) * (Resource->PciCfg.LastNodeIndex + 1)) != 0) {\r
         return FALSE;\r
       }\r
-    }\r
-    break;\r
-  case MACHINE_SPECIFIC_REG:\r
-    //\r
-    // Special case - merge MSR masks in place.\r
-    //\r
-    if (Resource->Msr.MsrIndex != Record->Msr.MsrIndex) {\r
+\r
+      ResourceLo = (UINT64)Resource->PciCfg.Base;\r
+      ResourceHi = (UINT64)Resource->PciCfg.Base + (UINT64)Resource->PciCfg.Length;\r
+      RecordLo   = (UINT64)Record->PciCfg.Base;\r
+      RecordHi   = (UINT64)Record->PciCfg.Base + (UINT64)Record->PciCfg.Length;\r
+      if (Resource->PciCfg.RWAttributes != Record->PciCfg.RWAttributes) {\r
+        if ((ResourceLo == RecordLo) && (ResourceHi == RecordHi)) {\r
+          Record->PciCfg.RWAttributes = Resource->PciCfg.RWAttributes | Record->PciCfg.RWAttributes;\r
+          return TRUE;\r
+        } else {\r
+          return FALSE;\r
+        }\r
+      }\r
+\r
+      break;\r
+    case MACHINE_SPECIFIC_REG:\r
+      //\r
+      // Special case - merge MSR masks in place.\r
+      //\r
+      if (Resource->Msr.MsrIndex != Record->Msr.MsrIndex) {\r
+        return FALSE;\r
+      }\r
+\r
+      Record->Msr.ReadMask  |= Resource->Msr.ReadMask;\r
+      Record->Msr.WriteMask |= Resource->Msr.WriteMask;\r
+      return TRUE;\r
+    default:\r
       return FALSE;\r
-    }\r
-    Record->Msr.ReadMask |= Resource->Msr.ReadMask;\r
-    Record->Msr.WriteMask |= Resource->Msr.WriteMask;\r
-    return TRUE;\r
-  default:\r
-    return FALSE;\r
   }\r
+\r
   //\r
   // If resources are disjoint\r
   //\r
@@ -557,6 +563,7 @@ HandleSingleResource (
   if ((ResourceLo >= RecordLo) && (ResourceHi <= RecordHi)) {\r
     return TRUE;\r
   }\r
+\r
   //\r
   // Resources are overlapping.\r
   // Resource and record are merged.\r
@@ -565,22 +572,22 @@ HandleSingleResource (
   ResourceHi = (ResourceHi > RecordHi) ? ResourceHi : RecordHi;\r
 \r
   switch (Resource->Header.RscType) {\r
-  case MEM_RANGE:\r
-  case MMIO_RANGE:\r
-    Record->Mem.Base = ResourceLo;\r
-    Record->Mem.Length = ResourceHi - ResourceLo;\r
-    break;\r
-  case IO_RANGE:\r
-  case TRAPPED_IO_RANGE:\r
-    Record->Io.Base = (UINT16) ResourceLo;\r
-    Record->Io.Length = (UINT16) (ResourceHi - ResourceLo);\r
-    break;\r
-  case PCI_CFG_RANGE:\r
-    Record->PciCfg.Base = (UINT16) ResourceLo;\r
-    Record->PciCfg.Length = (UINT16) (ResourceHi - ResourceLo);\r
-    break;\r
-  default:\r
-    return FALSE;\r
+    case MEM_RANGE:\r
+    case MMIO_RANGE:\r
+      Record->Mem.Base   = ResourceLo;\r
+      Record->Mem.Length = ResourceHi - ResourceLo;\r
+      break;\r
+    case IO_RANGE:\r
+    case TRAPPED_IO_RANGE:\r
+      Record->Io.Base   = (UINT16)ResourceLo;\r
+      Record->Io.Length = (UINT16)(ResourceHi - ResourceLo);\r
+      break;\r
+    case PCI_CFG_RANGE:\r
+      Record->PciCfg.Base   = (UINT16)ResourceLo;\r
+      Record->PciCfg.Length = (UINT16)(ResourceHi - ResourceLo);\r
+      break;\r
+    default:\r
+      return FALSE;\r
   }\r
 \r
   return TRUE;\r
@@ -595,10 +602,10 @@ HandleSingleResource (
 **/\r
 VOID\r
 AddSingleResource (\r
-  IN  STM_RSC    *Resource\r
+  IN  STM_RSC  *Resource\r
   )\r
 {\r
-  STM_RSC    *Record;\r
+  STM_RSC  *Record;\r
 \r
   Record = (STM_RSC *)mStmResourcesPtr;\r
 \r
@@ -606,6 +613,7 @@ AddSingleResource (
     if (Record->Header.RscType == END_OF_RESOURCES) {\r
       break;\r
     }\r
+\r
     //\r
     // Go to next record if resource and record types don't match.\r
     //\r
@@ -613,12 +621,14 @@ AddSingleResource (
       Record = (STM_RSC *)((UINTN)Record + Record->Header.Length);\r
       continue;\r
     }\r
+\r
     //\r
     // Record is handled inside of procedure - don't adjust.\r
     //\r
     if (HandleSingleResource (Resource, Record)) {\r
-      return ;\r
+      return;\r
     }\r
+\r
     Record = (STM_RSC *)((UINTN)Record + Record->Header.Length);\r
   }\r
 \r
@@ -626,19 +636,19 @@ AddSingleResource (
   // Add resource to the end of area.\r
   //\r
   CopyMem (\r
-    mStmResourcesPtr + mStmResourceSizeUsed - sizeof(mRscEndNode),\r
+    mStmResourcesPtr + mStmResourceSizeUsed - sizeof (mRscEndNode),\r
     Resource,\r
     Resource->Header.Length\r
     );\r
   CopyMem (\r
-    mStmResourcesPtr + mStmResourceSizeUsed - sizeof(mRscEndNode) + Resource->Header.Length,\r
+    mStmResourcesPtr + mStmResourceSizeUsed - sizeof (mRscEndNode) + Resource->Header.Length,\r
     &mRscEndNode,\r
-    sizeof(mRscEndNode)\r
+    sizeof (mRscEndNode)\r
     );\r
-  mStmResourceSizeUsed += Resource->Header.Length;\r
+  mStmResourceSizeUsed     += Resource->Header.Length;\r
   mStmResourceSizeAvailable = mStmResourceTotalSize - mStmResourceSizeUsed;\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -652,13 +662,13 @@ AddSingleResource (
 **/\r
 VOID\r
 AddResource (\r
-  IN  STM_RSC    *ResourceList,\r
-  IN  UINT32      NumEntries OPTIONAL\r
+  IN  STM_RSC  *ResourceList,\r
+  IN  UINT32   NumEntries OPTIONAL\r
   )\r
 {\r
-  UINT32      Count;\r
-  UINTN       Index;\r
-  STM_RSC    *Resource;\r
+  UINT32   Count;\r
+  UINTN    Index;\r
+  STM_RSC  *Resource;\r
 \r
   if (NumEntries == 0) {\r
     Count = 0xFFFFFFFF;\r
@@ -670,12 +680,14 @@ AddResource (
 \r
   for (Index = 0; Index < Count; Index++) {\r
     if (Resource->Header.RscType == END_OF_RESOURCES) {\r
-      return ;\r
+      return;\r
     }\r
+\r
     AddSingleResource (Resource);\r
     Resource = (STM_RSC *)((UINTN)Resource + Resource->Header.Length);\r
   }\r
-  return ;\r
+\r
+  return;\r
 }\r
 \r
 /**\r
@@ -692,14 +704,14 @@ AddResource (
 **/\r
 BOOLEAN\r
 ValidateResource (\r
-  IN  STM_RSC    *ResourceList,\r
-  IN  UINT32      NumEntries OPTIONAL\r
+  IN  STM_RSC  *ResourceList,\r
+  IN  UINT32   NumEntries OPTIONAL\r
   )\r
 {\r
-  UINT32      Count;\r
-  UINTN       Index;\r
-  STM_RSC    *Resource;\r
-  UINTN       SubIndex;\r
+  UINT32   Count;\r
+  UINTN    Index;\r
+  STM_RSC  *Resource;\r
+  UINTN    SubIndex;\r
 \r
   //\r
   // If NumEntries == 0 make it very big. Scan will be terminated by\r
@@ -724,21 +736,23 @@ ValidateResource (
     switch (Resource->Header.RscType) {\r
       case END_OF_RESOURCES:\r
         if (Resource->Header.Length != sizeof (STM_RSC_END)) {\r
-          return  FALSE;\r
+          return FALSE;\r
         }\r
+\r
         //\r
         // If we are passed actual number of resources to add,\r
         // END_OF_RESOURCES structure between them is considered an\r
         // error. If NumEntries == 0 END_OF_RESOURCES is a termination.\r
         //\r
         if (NumEntries != 0) {\r
-          return  FALSE;\r
+          return FALSE;\r
         } else {\r
           //\r
           // If NumEntries == 0 and list reached end - return success.\r
           //\r
           return TRUE;\r
         }\r
+\r
         break;\r
 \r
       case MEM_RANGE:\r
@@ -750,6 +764,7 @@ ValidateResource (
         if (Resource->Mem.RWXAttributes > FULL_ACCS) {\r
           return FALSE;\r
         }\r
+\r
         break;\r
 \r
       case IO_RANGE:\r
@@ -761,35 +776,42 @@ ValidateResource (
         if ((Resource->Io.Base + Resource->Io.Length) > 0xFFFF) {\r
           return FALSE;\r
         }\r
+\r
         break;\r
 \r
       case PCI_CFG_RANGE:\r
         DEBUG ((DEBUG_INFO, "ValidateResource - PCI (0x%02x, 0x%08x, 0x%02x, 0x%02x)\n", Resource->PciCfg.OriginatingBusNumber, Resource->PciCfg.LastNodeIndex, Resource->PciCfg.PciDevicePath[0].PciDevice, Resource->PciCfg.PciDevicePath[0].PciFunction));\r
-        if (Resource->Header.Length != sizeof (STM_RSC_PCI_CFG_DESC) + (sizeof(STM_PCI_DEVICE_PATH_NODE) * Resource->PciCfg.LastNodeIndex)) {\r
+        if (Resource->Header.Length != sizeof (STM_RSC_PCI_CFG_DESC) + (sizeof (STM_PCI_DEVICE_PATH_NODE) * Resource->PciCfg.LastNodeIndex)) {\r
           return FALSE;\r
         }\r
+\r
         for (SubIndex = 0; SubIndex <= Resource->PciCfg.LastNodeIndex; SubIndex++) {\r
           if ((Resource->PciCfg.PciDevicePath[SubIndex].PciDevice > 0x1F) || (Resource->PciCfg.PciDevicePath[SubIndex].PciFunction > 7)) {\r
             return FALSE;\r
           }\r
         }\r
+\r
         if ((Resource->PciCfg.Base + Resource->PciCfg.Length) > 0x1000) {\r
           return FALSE;\r
         }\r
+\r
         break;\r
 \r
       case MACHINE_SPECIFIC_REG:\r
         if (Resource->Header.Length != sizeof (STM_RSC_MSR_DESC)) {\r
           return FALSE;\r
         }\r
+\r
         break;\r
 \r
-      default :\r
+      default:\r
         DEBUG ((DEBUG_ERROR, "ValidateResource - Unknown RscType(%x)\n", Resource->Header.RscType));\r
         return FALSE;\r
     }\r
+\r
     Resource = (STM_RSC *)((UINTN)Resource + Resource->Header.Length);\r
   }\r
+\r
   return TRUE;\r
 }\r
 \r
@@ -808,13 +830,13 @@ ValidateResource (
 **/\r
 UINTN\r
 GetResourceSize (\r
-  IN  STM_RSC    *ResourceList,\r
-  IN  UINT32      NumEntries OPTIONAL\r
+  IN  STM_RSC  *ResourceList,\r
+  IN  UINT32   NumEntries OPTIONAL\r
   )\r
 {\r
-  UINT32      Count;\r
-  UINTN       Index;\r
-  STM_RSC    *Resource;\r
+  UINT32   Count;\r
+  UINTN    Index;\r
+  STM_RSC  *Resource;\r
 \r
   Resource = ResourceList;\r
 \r
@@ -837,6 +859,7 @@ GetResourceSize (
     if (Resource->Header.RscType == END_OF_RESOURCES) {\r
       break;\r
     }\r
+\r
     Resource = (STM_RSC *)((UINTN)Resource + Resource->Header.Length);\r
   }\r
 \r
@@ -859,8 +882,8 @@ GetResourceSize (
 EFI_STATUS\r
 EFIAPI\r
 AddPiResource (\r
-  IN  STM_RSC    *ResourceList,\r
-  IN  UINT32      NumEntries OPTIONAL\r
+  IN  STM_RSC  *ResourceList,\r
+  IN  UINT32   NumEntries OPTIONAL\r
   )\r
 {\r
   EFI_STATUS            Status;\r
@@ -884,7 +907,7 @@ AddPiResource (
     //\r
     // First time allocation\r
     //\r
-    NewResourceSize = EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (ResourceSize + sizeof(mRscEndNode)));\r
+    NewResourceSize = EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (ResourceSize + sizeof (mRscEndNode)));\r
     DEBUG ((DEBUG_INFO, "Allocate - 0x%08x\n", NewResourceSize));\r
     Status = gSmst->SmmAllocatePages (\r
                       AllocateAnyPages,\r
@@ -899,11 +922,11 @@ AddPiResource (
     //\r
     // Copy EndResource for initialization\r
     //\r
-    mStmResourcesPtr = (UINT8 *)(UINTN)NewResource;\r
+    mStmResourcesPtr      = (UINT8 *)(UINTN)NewResource;\r
     mStmResourceTotalSize = NewResourceSize;\r
-    CopyMem (mStmResourcesPtr, &mRscEndNode, sizeof(mRscEndNode));\r
-    mStmResourceSizeUsed      = sizeof(mRscEndNode);\r
-    mStmResourceSizeAvailable = mStmResourceTotalSize - sizeof(mRscEndNode);\r
+    CopyMem (mStmResourcesPtr, &mRscEndNode, sizeof (mRscEndNode));\r
+    mStmResourceSizeUsed      = sizeof (mRscEndNode);\r
+    mStmResourceSizeAvailable = mStmResourceTotalSize - sizeof (mRscEndNode);\r
 \r
     //\r
     // Let SmmCore change resource ptr\r
@@ -925,6 +948,7 @@ AddPiResource (
     if (EFI_ERROR (Status)) {\r
       return Status;\r
     }\r
+\r
     CopyMem ((VOID *)(UINTN)NewResource, mStmResourcesPtr, mStmResourceSizeUsed);\r
     mStmResourceSizeAvailable = NewResourceSize - mStmResourceSizeUsed;\r
 \r
@@ -934,7 +958,7 @@ AddPiResource (
              );\r
 \r
     mStmResourceTotalSize = NewResourceSize;\r
-    mStmResourcesPtr = (UINT8 *)(UINTN)NewResource;\r
+    mStmResourcesPtr      = (UINT8 *)(UINTN)NewResource;\r
 \r
     //\r
     // Let SmmCore change resource ptr\r
@@ -966,8 +990,8 @@ AddPiResource (
 EFI_STATUS\r
 EFIAPI\r
 DeletePiResource (\r
-  IN  STM_RSC    *ResourceList,\r
-  IN  UINT32      NumEntries OPTIONAL\r
+  IN  STM_RSC  *ResourceList,\r
+  IN  UINT32   NumEntries OPTIONAL\r
   )\r
 {\r
   if (ResourceList != NULL) {\r
@@ -975,12 +999,13 @@ DeletePiResource (
     ASSERT (FALSE);\r
     return EFI_UNSUPPORTED;\r
   }\r
+\r
   //\r
   // Delete all\r
   //\r
-  CopyMem (mStmResourcesPtr, &mRscEndNode, sizeof(mRscEndNode));\r
-  mStmResourceSizeUsed      = sizeof(mRscEndNode);\r
-  mStmResourceSizeAvailable = mStmResourceTotalSize - sizeof(mRscEndNode);\r
+  CopyMem (mStmResourcesPtr, &mRscEndNode, sizeof (mRscEndNode));\r
+  mStmResourceSizeUsed      = sizeof (mRscEndNode);\r
+  mStmResourceSizeAvailable = mStmResourceTotalSize - sizeof (mRscEndNode);\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -1000,8 +1025,8 @@ DeletePiResource (
 EFI_STATUS\r
 EFIAPI\r
 GetPiResource (\r
-  OUT    STM_RSC *ResourceList,\r
-  IN OUT UINT32  *ResourceSize\r
+  OUT    STM_RSC  *ResourceList,\r
+  IN OUT UINT32   *ResourceSize\r
   )\r
 {\r
   if (*ResourceSize < mStmResourceSizeUsed) {\r
@@ -1029,7 +1054,7 @@ EnableMsegMsr (
 {\r
   MSR_IA32_SMM_MONITOR_CTL_REGISTER  SmmMonitorCtl;\r
 \r
-  SmmMonitorCtl.Uint64 = AsmReadMsr64 (MSR_IA32_SMM_MONITOR_CTL);\r
+  SmmMonitorCtl.Uint64     = AsmReadMsr64 (MSR_IA32_SMM_MONITOR_CTL);\r
   SmmMonitorCtl.Bits.Valid = 1;\r
   AsmWriteMsr64 (MSR_IA32_SMM_MONITOR_CTL, SmmMonitorCtl.Uint64);\r
 }\r
@@ -1067,18 +1092,18 @@ GetVmcsSize (
 **/\r
 BOOLEAN\r
 StmCheckStmImage (\r
-  IN EFI_PHYSICAL_ADDRESS StmImage,\r
-  IN UINTN                StmImageSize\r
+  IN EFI_PHYSICAL_ADDRESS  StmImage,\r
+  IN UINTN                 StmImageSize\r
   )\r
 {\r
-  UINTN                     MinMsegSize;\r
-  STM_HEADER                *StmHeader;\r
-  IA32_VMX_MISC_REGISTER    VmxMiscMsr;\r
+  UINTN                   MinMsegSize;\r
+  STM_HEADER              *StmHeader;\r
+  IA32_VMX_MISC_REGISTER  VmxMiscMsr;\r
 \r
   //\r
   // Check to see if STM image is compatible with CPU\r
   //\r
-  StmHeader = (STM_HEADER *)(UINTN)StmImage;\r
+  StmHeader         = (STM_HEADER *)(UINTN)StmImage;\r
   VmxMiscMsr.Uint64 = AsmReadMsr64 (MSR_IA32_VMX_MISC);\r
   if (StmHeader->HwStmHdr.MsegHeaderRevision != VmxMiscMsr.Bits.MsegRevisionIdentifier) {\r
     DEBUG ((DEBUG_ERROR, "STM Image not compatible with CPU\n"));\r
@@ -1101,8 +1126,8 @@ StmCheckStmImage (
     //\r
     // We will create page table, just in case that SINIT does not create it.\r
     //\r
-    if (MinMsegSize < StmHeader->HwStmHdr.Cr3Offset + EFI_PAGES_TO_SIZE(6)) {\r
-      MinMsegSize = StmHeader->HwStmHdr.Cr3Offset + EFI_PAGES_TO_SIZE(6);\r
+    if (MinMsegSize < StmHeader->HwStmHdr.Cr3Offset + EFI_PAGES_TO_SIZE (6)) {\r
+      MinMsegSize = StmHeader->HwStmHdr.Cr3Offset + EFI_PAGES_TO_SIZE (6);\r
     }\r
   }\r
 \r
@@ -1133,8 +1158,8 @@ StmCheckStmImage (
 **/\r
 VOID\r
 StmLoadStmImage (\r
-  IN EFI_PHYSICAL_ADDRESS StmImage,\r
-  IN UINTN                StmImageSize\r
+  IN EFI_PHYSICAL_ADDRESS  StmImage,\r
+  IN UINTN                 StmImageSize\r
   )\r
 {\r
   MSR_IA32_SMM_MONITOR_CTL_REGISTER  SmmMonitorCtl;\r
@@ -1145,7 +1170,7 @@ StmLoadStmImage (
   // Get MSEG base address from MSR_IA32_SMM_MONITOR_CTL\r
   //\r
   SmmMonitorCtl.Uint64 = AsmReadMsr64 (MSR_IA32_SMM_MONITOR_CTL);\r
-  MsegBase = SmmMonitorCtl.Bits.MsegBase << 12;\r
+  MsegBase             = SmmMonitorCtl.Bits.MsegBase << 12;\r
 \r
   //\r
   // Zero all of MSEG base address\r
@@ -1181,8 +1206,8 @@ StmLoadStmImage (
 EFI_STATUS\r
 EFIAPI\r
 LoadMonitor (\r
-  IN EFI_PHYSICAL_ADDRESS StmImage,\r
-  IN UINTN                StmImageSize\r
+  IN EFI_PHYSICAL_ADDRESS  StmImage,\r
+  IN UINTN                 StmImageSize\r
   )\r
 {\r
   MSR_IA32_SMM_MONITOR_CTL_REGISTER  SmmMonitorCtl;\r
@@ -1201,7 +1226,7 @@ LoadMonitor (
   }\r
 \r
   // Record STM_HASH to PCR 0, just in case it is NOT TXT launch, we still need provide the evidence.\r
-  TpmMeasureAndLogData(\r
+  TpmMeasureAndLogData (\r
     0,                        // PcrIndex\r
     TXT_EVTYPE_STM_HASH,      // EventType\r
     NULL,                     // EventLog\r
@@ -1226,7 +1251,7 @@ LoadMonitor (
 \r
 **/\r
 VOID *\r
-GetStmResource(\r
+GetStmResource (\r
   VOID\r
   )\r
 {\r
@@ -1241,19 +1266,19 @@ GetStmResource(
 **/\r
 VOID\r
 NotifyStmResourceChange (\r
-  VOID *StmResource\r
+  VOID  *StmResource\r
   )\r
 {\r
   UINTN                         Index;\r
   TXT_PROCESSOR_SMM_DESCRIPTOR  *Psd;\r
 \r
   for (Index = 0; Index < gSmst->NumberOfCpus; Index++) {\r
-    Psd = (TXT_PROCESSOR_SMM_DESCRIPTOR *)((UINTN)gSmst->CpuSaveState[Index] - SMRAM_SAVE_STATE_MAP_OFFSET + TXT_SMM_PSD_OFFSET);\r
+    Psd                                = (TXT_PROCESSOR_SMM_DESCRIPTOR *)((UINTN)gSmst->CpuSaveState[Index] - SMRAM_SAVE_STATE_MAP_OFFSET + TXT_SMM_PSD_OFFSET);\r
     Psd->BiosHwResourceRequirementsPtr = (UINT64)(UINTN)StmResource;\r
   }\r
-  return ;\r
-}\r
 \r
+  return;\r
+}\r
 \r
 /**\r
   This is STM setup BIOS callback.\r
@@ -1278,4 +1303,3 @@ SmmStmTeardown (
 {\r
   mStmState &= ~EFI_SM_MONITOR_STATE_ACTIVATED;\r
 }\r
-\r
index da551cc4a6a64fd6a49a6ad4bcad0d99d27d8338..597c3abf0089ce3d1aed8143e2f7cbbfa5d07c17 100644 (file)
@@ -21,7 +21,7 @@
 **/\r
 VOID\r
 StmGen4GPageTable (\r
-  IN UINTN              PageTableBase\r
+  IN UINTN  PageTableBase\r
   );\r
 \r
 /**\r
@@ -42,10 +42,9 @@ StmGen4GPageTable (
 UINT32\r
 EFIAPI\r
 SmmStmExceptionHandler (\r
-  IN OUT STM_PROTECTION_EXCEPTION_STACK_FRAME Context\r
+  IN OUT STM_PROTECTION_EXCEPTION_STACK_FRAME  Context\r
   );\r
 \r
-\r
 /**\r
 \r
   Get STM state.\r
@@ -73,8 +72,8 @@ GetMonitorState (
 EFI_STATUS\r
 EFIAPI\r
 LoadMonitor (\r
-  IN EFI_PHYSICAL_ADDRESS StmImage,\r
-  IN UINTN                StmImageSize\r
+  IN EFI_PHYSICAL_ADDRESS  StmImage,\r
+  IN UINTN                 StmImageSize\r
   );\r
 \r
 /**\r
@@ -94,7 +93,7 @@ EFI_STATUS
 EFIAPI\r
 AddPiResource (\r
   IN  STM_RSC  *ResourceList,\r
-  IN  UINT32    NumEntries OPTIONAL\r
+  IN  UINT32   NumEntries OPTIONAL\r
   );\r
 \r
 /**\r
@@ -113,8 +112,8 @@ AddPiResource (
 EFI_STATUS\r
 EFIAPI\r
 DeletePiResource (\r
-  IN  STM_RSC    *ResourceList,\r
-  IN  UINT32      NumEntries OPTIONAL\r
+  IN  STM_RSC  *ResourceList,\r
+  IN  UINT32   NumEntries OPTIONAL\r
   );\r
 \r
 /**\r
@@ -133,8 +132,8 @@ DeletePiResource (
 EFI_STATUS\r
 EFIAPI\r
 GetPiResource (\r
-  OUT    STM_RSC *ResourceList,\r
-  IN OUT UINT32  *ResourceSize\r
+  OUT    STM_RSC  *ResourceList,\r
+  IN OUT UINT32   *ResourceSize\r
   );\r
 \r
 /**\r
@@ -153,7 +152,7 @@ StmSmmConfigurationTableInit (
 **/\r
 VOID\r
 NotifyStmResourceChange (\r
-  IN VOID *StmResource\r
+  IN VOID  *StmResource\r
   );\r
 \r
 /**\r
@@ -174,6 +173,6 @@ GetStmResource (
 VOID\r
 EFIAPI\r
 SmmCpuFeaturesLibStmSmiEntryFixupAddress (\r
- );\r
 );\r
 \r
 #endif\r
index c8a3f58e0ca5ef49e3ad03304498a5751050827c..00ab9bd0cd0d91c99e3bad8794c6003f47dc89ae 100644 (file)
@@ -14,9 +14,9 @@
 ///\r
 /// Page Table Entry\r
 ///\r
-#define IA32_PG_P                   BIT0\r
-#define IA32_PG_RW                  BIT1\r
-#define IA32_PG_PS                  BIT7\r
+#define IA32_PG_P   BIT0\r
+#define IA32_PG_RW  BIT1\r
+#define IA32_PG_PS  BIT7\r
 \r
 /**\r
 \r
 **/\r
 VOID\r
 StmGen4GPageTable (\r
-  IN UINTN              PageTableBase\r
+  IN UINTN  PageTableBase\r
   )\r
 {\r
-  UINTN                             Index;\r
-  UINTN                             SubIndex;\r
-  UINT64                            *Pde;\r
-  UINT64                            *Pte;\r
-  UINT64                            *Pml4;\r
+  UINTN   Index;\r
+  UINTN   SubIndex;\r
+  UINT64  *Pde;\r
+  UINT64  *Pte;\r
+  UINT64  *Pml4;\r
 \r
-  Pml4 = (UINT64*)(UINTN)PageTableBase;\r
+  Pml4           = (UINT64 *)(UINTN)PageTableBase;\r
   PageTableBase += SIZE_4KB;\r
-  *Pml4 = PageTableBase | IA32_PG_RW | IA32_PG_P;\r
+  *Pml4          = PageTableBase | IA32_PG_RW | IA32_PG_P;\r
 \r
-  Pde = (UINT64*)(UINTN)PageTableBase;\r
+  Pde            = (UINT64 *)(UINTN)PageTableBase;\r
   PageTableBase += SIZE_4KB;\r
-  Pte = (UINT64 *)(UINTN)PageTableBase;\r
+  Pte            = (UINT64 *)(UINTN)PageTableBase;\r
 \r
   for (Index = 0; Index < 4; Index++) {\r
     *Pde = PageTableBase | IA32_PG_RW | IA32_PG_P;\r
@@ -75,7 +75,7 @@ StmGen4GPageTable (
 UINT32\r
 EFIAPI\r
 SmmStmExceptionHandler (\r
-  IN OUT STM_PROTECTION_EXCEPTION_STACK_FRAME Context\r
+  IN OUT STM_PROTECTION_EXCEPTION_STACK_FRAME  Context\r
   )\r
 {\r
   // TBD - SmmStmExceptionHandler, record information\r
index 6c2010dc0a6758d0660285be5132cbf9dd9c2726..085a03e52a4a7bb13df7478cf7bb206ed478d88c 100644 (file)
@@ -69,7 +69,7 @@ ClearTopLevelSmiStatus (
 EFI_STATUS\r
 EFIAPI\r
 PlatformSmmBspElection (\r
-  OUT BOOLEAN     *IsBsp\r
+  OUT BOOLEAN  *IsBsp\r
   )\r
 {\r
   return EFI_NOT_READY;\r
@@ -92,10 +92,10 @@ PlatformSmmBspElection (
 EFI_STATUS\r
 EFIAPI\r
 GetPlatformPageTableAttribute (\r
-  IN  UINT64                Address,\r
-  IN OUT SMM_PAGE_SIZE_TYPE *PageSize,\r
-  IN OUT UINTN              *NumOfPages,\r
-  IN OUT UINTN              *PageAttribute\r
+  IN  UINT64                 Address,\r
+  IN OUT SMM_PAGE_SIZE_TYPE  *PageSize,\r
+  IN OUT UINTN               *NumOfPages,\r
+  IN OUT UINTN               *PageAttribute\r
   )\r
 {\r
   return EFI_UNSUPPORTED;\r
index 89b065cb3ff31d837763f51b69b9ceaefc761a9c..d661d85974342a2c1f7b84a55dc2dc901dda3db6 100644 (file)
 UINT64\r
 EFIAPI\r
 VmgExit (\r
-  IN OUT GHCB                *Ghcb,\r
-  IN     UINT64              ExitCode,\r
-  IN     UINT64              ExitInfo1,\r
-  IN     UINT64              ExitInfo2\r
+  IN OUT GHCB    *Ghcb,\r
+  IN     UINT64  ExitCode,\r
+  IN     UINT64  ExitInfo1,\r
+  IN     UINT64  ExitInfo2\r
   )\r
 {\r
   GHCB_EVENT_INJECTION  Event;\r
 \r
-  Event.Uint64 = 0;\r
+  Event.Uint64          = 0;\r
   Event.Elements.Vector = GP_EXCEPTION;\r
   Event.Elements.Type   = GHCB_EVENT_INJECTION_TYPE_EXCEPTION;\r
   Event.Elements.Valid  = 1;\r
@@ -65,8 +65,8 @@ VmgExit (
 VOID\r
 EFIAPI\r
 VmgInit (\r
-  IN OUT GHCB                *Ghcb,\r
-  IN OUT BOOLEAN             *InterruptState\r
+  IN OUT GHCB     *Ghcb,\r
+  IN OUT BOOLEAN  *InterruptState\r
   )\r
 {\r
 }\r
@@ -85,8 +85,8 @@ VmgInit (
 VOID\r
 EFIAPI\r
 VmgDone (\r
-  IN OUT GHCB                *Ghcb,\r
-  IN     BOOLEAN             InterruptState\r
+  IN OUT GHCB     *Ghcb,\r
+  IN     BOOLEAN  InterruptState\r
   )\r
 {\r
 }\r
@@ -104,8 +104,8 @@ VmgDone (
 VOID\r
 EFIAPI\r
 VmgSetOffsetValid (\r
-  IN OUT GHCB                *Ghcb,\r
-  IN     GHCB_REGISTER       Offset\r
+  IN OUT GHCB           *Ghcb,\r
+  IN     GHCB_REGISTER  Offset\r
   )\r
 {\r
 }\r
@@ -126,8 +126,8 @@ VmgSetOffsetValid (
 BOOLEAN\r
 EFIAPI\r
 VmgIsOffsetValid (\r
-  IN GHCB                    *Ghcb,\r
-  IN GHCB_REGISTER           Offset\r
+  IN GHCB           *Ghcb,\r
+  IN GHCB_REGISTER  Offset\r
   )\r
 {\r
   return FALSE;\r
index e9e2464be7b89782c4ad7f8741d43507c7785feb..8bd0612c7bab0d917d318909f5f4eb572a67e46f 100644 (file)
@@ -86,14 +86,14 @@ typedef struct {
 } EFI_SMM_SYSTEM_TABLE2_64;\r
 \r
 typedef struct {\r
-  EFI_GUID                          VendorGuid;\r
-  UINT64                            VendorTable;\r
+  EFI_GUID    VendorGuid;\r
+  UINT64      VendorTable;\r
 } EFI_CONFIGURATION_TABLE64;\r
 #endif\r
 \r
 #if defined (MDE_CPU_X64)\r
-typedef EFI_SMM_SYSTEM_TABLE2 EFI_SMM_SYSTEM_TABLE2_64;\r
-typedef EFI_CONFIGURATION_TABLE EFI_CONFIGURATION_TABLE64;\r
+typedef EFI_SMM_SYSTEM_TABLE2    EFI_SMM_SYSTEM_TABLE2_64;\r
+typedef EFI_CONFIGURATION_TABLE  EFI_CONFIGURATION_TABLE64;\r
 #endif\r
 \r
 /**\r
@@ -113,14 +113,14 @@ typedef EFI_CONFIGURATION_TABLE EFI_CONFIGURATION_TABLE64;
 EFI_STATUS\r
 EFIAPI\r
 Communicate (\r
-  IN CONST EFI_PEI_SMM_COMMUNICATION_PPI   *This,\r
-  IN OUT VOID                              *CommBuffer,\r
-  IN OUT UINTN                             *CommSize\r
+  IN CONST EFI_PEI_SMM_COMMUNICATION_PPI  *This,\r
+  IN OUT VOID                             *CommBuffer,\r
+  IN OUT UINTN                            *CommSize\r
   );\r
 \r
-EFI_PEI_SMM_COMMUNICATION_PPI      mSmmCommunicationPpi = { Communicate };\r
+EFI_PEI_SMM_COMMUNICATION_PPI  mSmmCommunicationPpi = { Communicate };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR mPpiList = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPpiList = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiPeiSmmCommunicationPpiGuid,\r
   &mSmmCommunicationPpi\r
@@ -136,8 +136,8 @@ GetCommunicationContext (
   VOID\r
   )\r
 {\r
-  EFI_HOB_GUID_TYPE                *GuidHob;\r
-  EFI_SMM_COMMUNICATION_CONTEXT    *SmmCommunicationContext;\r
+  EFI_HOB_GUID_TYPE              *GuidHob;\r
+  EFI_SMM_COMMUNICATION_CONTEXT  *SmmCommunicationContext;\r
 \r
   GuidHob = GetFirstGuidHob (&gEfiPeiSmmCommunicationPpiGuid);\r
   ASSERT (GuidHob != NULL);\r
@@ -154,20 +154,20 @@ GetCommunicationContext (
 **/\r
 VOID\r
 SetCommunicationContext (\r
-  IN EFI_SMM_COMMUNICATION_CONTEXT    *SmmCommunicationContext\r
+  IN EFI_SMM_COMMUNICATION_CONTEXT  *SmmCommunicationContext\r
   )\r
 {\r
-  EFI_PEI_HOB_POINTERS             Hob;\r
-  UINTN                            BufferSize;\r
+  EFI_PEI_HOB_POINTERS  Hob;\r
+  UINTN                 BufferSize;\r
 \r
   BufferSize = sizeof (*SmmCommunicationContext);\r
-  Hob.Raw = BuildGuidHob (\r
-              &gEfiPeiSmmCommunicationPpiGuid,\r
-              BufferSize\r
-              );\r
+  Hob.Raw    = BuildGuidHob (\r
+                 &gEfiPeiSmmCommunicationPpiGuid,\r
+                 BufferSize\r
+                 );\r
   ASSERT (Hob.Raw);\r
 \r
-  CopyMem ((VOID *)Hob.Raw, SmmCommunicationContext, sizeof(*SmmCommunicationContext));\r
+  CopyMem ((VOID *)Hob.Raw, SmmCommunicationContext, sizeof (*SmmCommunicationContext));\r
 }\r
 \r
 /**\r
@@ -181,18 +181,18 @@ SetCommunicationContext (
 **/\r
 VOID *\r
 InternalSmstGetVendorTableByGuid (\r
-  IN UINT64                                        Signature,\r
-  IN EFI_SMM_SYSTEM_TABLE2                         *Smst,\r
-  IN EFI_GUID                                      *VendorGuid\r
+  IN UINT64                 Signature,\r
+  IN EFI_SMM_SYSTEM_TABLE2  *Smst,\r
+  IN EFI_GUID               *VendorGuid\r
   )\r
 {\r
-  EFI_CONFIGURATION_TABLE                       *SmmConfigurationTable;\r
-  UINTN                                         NumberOfTableEntries;\r
-  UINTN                                         Index;\r
-  EFI_SMM_SYSTEM_TABLE2_64                      *Smst64;\r
-  EFI_CONFIGURATION_TABLE64                     *SmmConfigurationTable64;\r
+  EFI_CONFIGURATION_TABLE    *SmmConfigurationTable;\r
+  UINTN                      NumberOfTableEntries;\r
+  UINTN                      Index;\r
+  EFI_SMM_SYSTEM_TABLE2_64   *Smst64;\r
+  EFI_CONFIGURATION_TABLE64  *SmmConfigurationTable64;\r
 \r
-  if ((sizeof(UINTN) == sizeof(UINT32)) && (Signature == SMM_S3_RESUME_SMM_64)) {\r
+  if ((sizeof (UINTN) == sizeof (UINT32)) && (Signature == SMM_S3_RESUME_SMM_64)) {\r
     //\r
     // 32 PEI + 64 DXE\r
     //\r
@@ -200,23 +200,25 @@ InternalSmstGetVendorTableByGuid (
     DEBUG ((DEBUG_INFO, "InitCommunicationContext - SmmConfigurationTable: %x\n", Smst64->SmmConfigurationTable));\r
     DEBUG ((DEBUG_INFO, "InitCommunicationContext - NumberOfTableEntries: %x\n", Smst64->NumberOfTableEntries));\r
     SmmConfigurationTable64 = (EFI_CONFIGURATION_TABLE64 *)(UINTN)Smst64->SmmConfigurationTable;\r
-    NumberOfTableEntries = (UINTN)Smst64->NumberOfTableEntries;\r
+    NumberOfTableEntries    = (UINTN)Smst64->NumberOfTableEntries;\r
     for (Index = 0; Index < NumberOfTableEntries; Index++) {\r
       if (CompareGuid (&SmmConfigurationTable64[Index].VendorGuid, VendorGuid)) {\r
         return (VOID *)(UINTN)SmmConfigurationTable64[Index].VendorTable;\r
       }\r
     }\r
+\r
     return NULL;\r
   } else {\r
     DEBUG ((DEBUG_INFO, "InitCommunicationContext - SmmConfigurationTable: %x\n", Smst->SmmConfigurationTable));\r
     DEBUG ((DEBUG_INFO, "InitCommunicationContext - NumberOfTableEntries: %x\n", Smst->NumberOfTableEntries));\r
     SmmConfigurationTable = Smst->SmmConfigurationTable;\r
-    NumberOfTableEntries = Smst->NumberOfTableEntries;\r
+    NumberOfTableEntries  = Smst->NumberOfTableEntries;\r
     for (Index = 0; Index < NumberOfTableEntries; Index++) {\r
       if (CompareGuid (&SmmConfigurationTable[Index].VendorGuid, VendorGuid)) {\r
         return (VOID *)SmmConfigurationTable[Index].VendorTable;\r
       }\r
     }\r
+\r
     return NULL;\r
   }\r
 }\r
@@ -229,14 +231,14 @@ InitCommunicationContext (
   VOID\r
   )\r
 {\r
-  EFI_SMRAM_DESCRIPTOR                          *SmramDescriptor;\r
-  SMM_S3_RESUME_STATE                           *SmmS3ResumeState;\r
-  VOID                                          *GuidHob;\r
-  EFI_SMM_COMMUNICATION_CONTEXT                 *SmmCommunicationContext;\r
+  EFI_SMRAM_DESCRIPTOR           *SmramDescriptor;\r
+  SMM_S3_RESUME_STATE            *SmmS3ResumeState;\r
+  VOID                           *GuidHob;\r
+  EFI_SMM_COMMUNICATION_CONTEXT  *SmmCommunicationContext;\r
 \r
   GuidHob = GetFirstGuidHob (&gEfiAcpiVariableGuid);\r
   ASSERT (GuidHob != NULL);\r
-  SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *) GET_GUID_HOB_DATA (GuidHob);\r
+  SmramDescriptor  = (EFI_SMRAM_DESCRIPTOR *)GET_GUID_HOB_DATA (GuidHob);\r
   SmmS3ResumeState = (SMM_S3_RESUME_STATE *)(UINTN)SmramDescriptor->CpuStart;\r
 \r
   DEBUG ((DEBUG_INFO, "InitCommunicationContext - SmmS3ResumeState: %x\n", SmmS3ResumeState));\r
@@ -251,7 +253,7 @@ InitCommunicationContext (
 \r
   SetCommunicationContext (SmmCommunicationContext);\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -271,17 +273,17 @@ InitCommunicationContext (
 EFI_STATUS\r
 EFIAPI\r
 Communicate (\r
-  IN CONST EFI_PEI_SMM_COMMUNICATION_PPI   *This,\r
-  IN OUT VOID                              *CommBuffer,\r
-  IN OUT UINTN                             *CommSize\r
+  IN CONST EFI_PEI_SMM_COMMUNICATION_PPI  *This,\r
+  IN OUT VOID                             *CommBuffer,\r
+  IN OUT UINTN                            *CommSize\r
   )\r
 {\r
-  EFI_STATUS                       Status;\r
-  PEI_SMM_CONTROL_PPI              *SmmControl;\r
-  PEI_SMM_ACCESS_PPI               *SmmAccess;\r
-  UINT8                            SmiCommand;\r
-  UINTN                            Size;\r
-  EFI_SMM_COMMUNICATION_CONTEXT    *SmmCommunicationContext;\r
+  EFI_STATUS                     Status;\r
+  PEI_SMM_CONTROL_PPI            *SmmControl;\r
+  PEI_SMM_ACCESS_PPI             *SmmAccess;\r
+  UINT8                          SmiCommand;\r
+  UINTN                          Size;\r
+  EFI_SMM_COMMUNICATION_CONTEXT  *SmmCommunicationContext;\r
 \r
   DEBUG ((DEBUG_INFO, "PiSmmCommunicationPei Communicate Enter\n"));\r
 \r
@@ -333,15 +335,15 @@ Communicate (
   // Send command\r
   //\r
   SmiCommand = (UINT8)SmmCommunicationContext->SwSmiNumber;\r
-  Size = sizeof(SmiCommand);\r
-  Status = SmmControl->Trigger (\r
-                         (EFI_PEI_SERVICES **)GetPeiServicesTablePointer (),\r
-                         SmmControl,\r
-                         (INT8 *)&SmiCommand,\r
-                         &Size,\r
-                         FALSE,\r
-                         0\r
-                         );\r
+  Size       = sizeof (SmiCommand);\r
+  Status     = SmmControl->Trigger (\r
+                             (EFI_PEI_SERVICES **)GetPeiServicesTablePointer (),\r
+                             SmmControl,\r
+                             (INT8 *)&SmiCommand,\r
+                             &Size,\r
+                             FALSE,\r
+                             0\r
+                             );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   //\r
@@ -366,14 +368,14 @@ Communicate (
 EFI_STATUS\r
 EFIAPI\r
 PiSmmCommunicationPeiEntryPoint (\r
-  IN EFI_PEI_FILE_HANDLE       FileHandle,\r
-  IN CONST EFI_PEI_SERVICES    **PeiServices\r
+  IN EFI_PEI_FILE_HANDLE     FileHandle,\r
+  IN CONST EFI_PEI_SERVICES  **PeiServices\r
   )\r
 {\r
-  EFI_STATUS                      Status;\r
-  PEI_SMM_ACCESS_PPI              *SmmAccess;\r
-  EFI_BOOT_MODE                   BootMode;\r
-  UINTN                           Index;\r
+  EFI_STATUS          Status;\r
+  PEI_SMM_ACCESS_PPI  *SmmAccess;\r
+  EFI_BOOT_MODE       BootMode;\r
+  UINTN               Index;\r
 \r
   BootMode = GetBootModeHob ();\r
   if (BootMode != BOOT_ON_S3_RESUME) {\r
index cf1c57eeffc8ead873dc3caf762aef85028c712e..c51c012ebc565b16cc81a9ca0160dac8dab7a778 100644 (file)
@@ -11,12 +11,12 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 \r
 #pragma pack(push, 1)\r
 \r
-#define SMM_COMMUNICATION_SIGNATURE SIGNATURE_32 ('S','M','M','C')\r
+#define SMM_COMMUNICATION_SIGNATURE  SIGNATURE_32 ('S','M','M','C')\r
 \r
 typedef struct {\r
-  UINT32                   Signature;\r
-  UINT32                   SwSmiNumber;\r
-  EFI_PHYSICAL_ADDRESS     BufferPtrAddress;\r
+  UINT32                  Signature;\r
+  UINT32                  SwSmiNumber;\r
+  EFI_PHYSICAL_ADDRESS    BufferPtrAddress;\r
 } EFI_SMM_COMMUNICATION_CONTEXT;\r
 \r
 #pragma pack(pop)\r
index 4fdea359d822e06fb729add16f1a0c9edf841bcc..2e76ade76997460ed53f3e70fc026c9ef141fc61 100644 (file)
@@ -39,7 +39,7 @@ SetCommunicationContext (
                     gSmst,\r
                     &gEfiPeiSmmCommunicationPpiGuid,\r
                     &mSmmCommunicationContext,\r
-                    sizeof(mSmmCommunicationContext)\r
+                    sizeof (mSmmCommunicationContext)\r
                     );\r
   ASSERT_EFI_ERROR (Status);\r
 }\r
@@ -66,14 +66,14 @@ PiSmmCommunicationHandler (
   IN OUT UINTN   *CommBufferSize  OPTIONAL\r
   )\r
 {\r
-  UINTN                            CommSize;\r
-  EFI_STATUS                       Status;\r
-  EFI_SMM_COMMUNICATE_HEADER       *CommunicateHeader;\r
-  EFI_PHYSICAL_ADDRESS             *BufferPtrAddress;\r
+  UINTN                       CommSize;\r
+  EFI_STATUS                  Status;\r
+  EFI_SMM_COMMUNICATE_HEADER  *CommunicateHeader;\r
+  EFI_PHYSICAL_ADDRESS        *BufferPtrAddress;\r
 \r
   DEBUG ((DEBUG_INFO, "PiSmmCommunicationHandler Enter\n"));\r
 \r
-  BufferPtrAddress = (EFI_PHYSICAL_ADDRESS *)(UINTN)mSmmCommunicationContext.BufferPtrAddress;\r
+  BufferPtrAddress  = (EFI_PHYSICAL_ADDRESS *)(UINTN)mSmmCommunicationContext.BufferPtrAddress;\r
   CommunicateHeader = (EFI_SMM_COMMUNICATE_HEADER *)(UINTN)*BufferPtrAddress;\r
   DEBUG ((DEBUG_INFO, "PiSmmCommunicationHandler CommunicateHeader - %x\n", CommunicateHeader));\r
   if (CommunicateHeader == NULL) {\r
@@ -122,28 +122,28 @@ Done:
   @return Allocated address for output.\r
 \r
 **/\r
-VOID*\r
+VOID *\r
 AllocateAcpiNvsMemoryBelow4G (\r
-  IN   UINTN   Size\r
+  IN   UINTN  Size\r
   )\r
 {\r
   UINTN                 Pages;\r
   EFI_PHYSICAL_ADDRESS  Address;\r
   EFI_STATUS            Status;\r
-  VOID*                 Buffer;\r
+  VOID                  *Buffer;\r
 \r
-  Pages = EFI_SIZE_TO_PAGES (Size);\r
+  Pages   = EFI_SIZE_TO_PAGES (Size);\r
   Address = 0xffffffff;\r
 \r
-  Status  = gBS->AllocatePages (\r
-                   AllocateMaxAddress,\r
-                   EfiACPIMemoryNVS,\r
-                   Pages,\r
-                   &Address\r
-                   );\r
+  Status = gBS->AllocatePages (\r
+                  AllocateMaxAddress,\r
+                  EfiACPIMemoryNVS,\r
+                  Pages,\r
+                  &Address\r
+                  );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  Buffer = (VOID *) (UINTN) Address;\r
+  Buffer = (VOID *)(UINTN)Address;\r
   ZeroMem (Buffer, Size);\r
 \r
   return Buffer;\r
@@ -165,11 +165,11 @@ PiSmmCommunicationSmmEntryPoint (
   IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
-  EFI_STATUS                    Status;\r
-  EFI_SMM_SW_DISPATCH2_PROTOCOL *SmmSwDispatch2;\r
-  EFI_SMM_SW_REGISTER_CONTEXT   SmmSwDispatchContext;\r
-  EFI_HANDLE                    DispatchHandle;\r
-  EFI_PHYSICAL_ADDRESS          *BufferPtrAddress;\r
+  EFI_STATUS                     Status;\r
+  EFI_SMM_SW_DISPATCH2_PROTOCOL  *SmmSwDispatch2;\r
+  EFI_SMM_SW_REGISTER_CONTEXT    SmmSwDispatchContext;\r
+  EFI_HANDLE                     DispatchHandle;\r
+  EFI_PHYSICAL_ADDRESS           *BufferPtrAddress;\r
 \r
   //\r
   // Register software SMI handler\r
@@ -182,24 +182,24 @@ PiSmmCommunicationSmmEntryPoint (
   ASSERT_EFI_ERROR (Status);\r
 \r
   SmmSwDispatchContext.SwSmiInputValue = (UINTN)-1;\r
-  Status = SmmSwDispatch2->Register (\r
-                             SmmSwDispatch2,\r
-                             PiSmmCommunicationHandler,\r
-                             &SmmSwDispatchContext,\r
-                             &DispatchHandle\r
-                             );\r
+  Status                               = SmmSwDispatch2->Register (\r
+                                                           SmmSwDispatch2,\r
+                                                           PiSmmCommunicationHandler,\r
+                                                           &SmmSwDispatchContext,\r
+                                                           &DispatchHandle\r
+                                                           );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   DEBUG ((DEBUG_INFO, "SmmCommunication SwSmi: %x\n", (UINTN)SmmSwDispatchContext.SwSmiInputValue));\r
 \r
-  BufferPtrAddress = AllocateAcpiNvsMemoryBelow4G (sizeof(EFI_PHYSICAL_ADDRESS));\r
+  BufferPtrAddress = AllocateAcpiNvsMemoryBelow4G (sizeof (EFI_PHYSICAL_ADDRESS));\r
   ASSERT (BufferPtrAddress != NULL);\r
   DEBUG ((DEBUG_INFO, "SmmCommunication BufferPtrAddress: 0x%016lx, BufferPtr: 0x%016lx\n", (EFI_PHYSICAL_ADDRESS)(UINTN)BufferPtrAddress, *BufferPtrAddress));\r
 \r
   //\r
   // Save context\r
   //\r
-  mSmmCommunicationContext.SwSmiNumber = (UINT32)SmmSwDispatchContext.SwSmiInputValue;\r
+  mSmmCommunicationContext.SwSmiNumber      = (UINT32)SmmSwDispatchContext.SwSmiInputValue;\r
   mSmmCommunicationContext.BufferPtrAddress = (EFI_PHYSICAL_ADDRESS)(UINTN)BufferPtrAddress;\r
   SetCommunicationContext ();\r
 \r
index 0d723336e4d68cf7e657037176fbc0af109a8f20..9b45c442c98ed90540eb0f13913562650ccf0316 100644 (file)
@@ -10,42 +10,42 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 \r
 #pragma pack(1)\r
 typedef struct {\r
-  UINTN             Lock;\r
-  VOID              *StackStart;\r
-  UINTN             StackSize;\r
-  VOID              *ApFunction;\r
-  IA32_DESCRIPTOR   GdtrProfile;\r
-  IA32_DESCRIPTOR   IdtrProfile;\r
-  UINT32            BufferStart;\r
-  UINT32            Cr3;\r
-  UINTN             InitializeFloatingPointUnitsAddress;\r
+  UINTN              Lock;\r
+  VOID               *StackStart;\r
+  UINTN              StackSize;\r
+  VOID               *ApFunction;\r
+  IA32_DESCRIPTOR    GdtrProfile;\r
+  IA32_DESCRIPTOR    IdtrProfile;\r
+  UINT32             BufferStart;\r
+  UINT32             Cr3;\r
+  UINTN              InitializeFloatingPointUnitsAddress;\r
 } MP_CPU_EXCHANGE_INFO;\r
 #pragma pack()\r
 \r
 typedef struct {\r
-  UINT8 *RendezvousFunnelAddress;\r
-  UINTN PModeEntryOffset;\r
-  UINTN FlatJumpOffset;\r
-  UINTN Size;\r
-  UINTN LModeEntryOffset;\r
-  UINTN LongJumpOffset;\r
+  UINT8    *RendezvousFunnelAddress;\r
+  UINTN    PModeEntryOffset;\r
+  UINTN    FlatJumpOffset;\r
+  UINTN    Size;\r
+  UINTN    LModeEntryOffset;\r
+  UINTN    LongJumpOffset;\r
 } MP_ASSEMBLY_ADDRESS_MAP;\r
 \r
 //\r
 // Flags used when program the register.\r
 //\r
 typedef struct {\r
-  volatile UINTN           MemoryMappedLock;        // Spinlock used to program mmio\r
-  volatile UINT32          *CoreSemaphoreCount;     // Semaphore container used to program\r
+  volatile UINTN     MemoryMappedLock;              // Spinlock used to program mmio\r
+  volatile UINT32    *CoreSemaphoreCount;           // Semaphore container used to program\r
                                                     // core level semaphore.\r
-  volatile UINT32          *PackageSemaphoreCount;  // Semaphore container used to program\r
+  volatile UINT32    *PackageSemaphoreCount;        // Semaphore container used to program\r
                                                     // package level semaphore.\r
 } PROGRAM_CPU_REGISTER_FLAGS;\r
 \r
 //\r
 // Signal that SMM BASE relocation is complete.\r
 //\r
-volatile BOOLEAN         mInitApsAfterSmmBaseReloc;\r
+volatile BOOLEAN  mInitApsAfterSmmBaseReloc;\r
 \r
 /**\r
   Get starting address and size of the rendezvous entry for APs.\r
@@ -56,38 +56,38 @@ volatile BOOLEAN         mInitApsAfterSmmBaseReloc;
 VOID *\r
 EFIAPI\r
 AsmGetAddressMap (\r
-  MP_ASSEMBLY_ADDRESS_MAP                     *AddressMap\r
+  MP_ASSEMBLY_ADDRESS_MAP  *AddressMap\r
   );\r
 \r
-#define LEGACY_REGION_SIZE    (2 * 0x1000)\r
-#define LEGACY_REGION_BASE    (0xA0000 - LEGACY_REGION_SIZE)\r
+#define LEGACY_REGION_SIZE  (2 * 0x1000)\r
+#define LEGACY_REGION_BASE  (0xA0000 - LEGACY_REGION_SIZE)\r
 \r
-PROGRAM_CPU_REGISTER_FLAGS   mCpuFlags;\r
-ACPI_CPU_DATA                mAcpiCpuData;\r
-volatile UINT32              mNumberToFinish;\r
-MP_CPU_EXCHANGE_INFO         *mExchangeInfo;\r
-BOOLEAN                      mRestoreSmmConfigurationInS3 = FALSE;\r
+PROGRAM_CPU_REGISTER_FLAGS  mCpuFlags;\r
+ACPI_CPU_DATA               mAcpiCpuData;\r
+volatile UINT32             mNumberToFinish;\r
+MP_CPU_EXCHANGE_INFO        *mExchangeInfo;\r
+BOOLEAN                     mRestoreSmmConfigurationInS3 = FALSE;\r
 \r
 //\r
 // S3 boot flag\r
 //\r
-BOOLEAN                      mSmmS3Flag = FALSE;\r
+BOOLEAN  mSmmS3Flag = FALSE;\r
 \r
 //\r
 // Pointer to structure used during S3 Resume\r
 //\r
-SMM_S3_RESUME_STATE          *mSmmS3ResumeState = NULL;\r
+SMM_S3_RESUME_STATE  *mSmmS3ResumeState = NULL;\r
 \r
-BOOLEAN                      mAcpiS3Enable = TRUE;\r
+BOOLEAN  mAcpiS3Enable = TRUE;\r
 \r
-UINT8                        *mApHltLoopCode = NULL;\r
-UINT8                        mApHltLoopCodeTemplate[] = {\r
-                               0x8B, 0x44, 0x24, 0x04,  // mov  eax, dword ptr [esp+4]\r
-                               0xF0, 0xFF, 0x08,        // lock dec  dword ptr [eax]\r
-                               0xFA,                    // cli\r
-                               0xF4,                    // hlt\r
-                               0xEB, 0xFC               // jmp $-2\r
-                               };\r
+UINT8  *mApHltLoopCode          = NULL;\r
+UINT8  mApHltLoopCodeTemplate[] = {\r
+  0x8B, 0x44, 0x24, 0x04, // mov  eax, dword ptr [esp+4]\r
+  0xF0, 0xFF, 0x08,       // lock dec  dword ptr [eax]\r
+  0xFA,                   // cli\r
+  0xF4,                   // hlt\r
+  0xEB, 0xFC              // jmp $-2\r
+};\r
 \r
 /**\r
   Sync up the MTRR values for all processors.\r
@@ -97,8 +97,9 @@ UINT8                        mApHltLoopCodeTemplate[] = {
 VOID\r
 EFIAPI\r
 LoadMtrrData (\r
-  EFI_PHYSICAL_ADDRESS       MtrrTable\r
+  EFI_PHYSICAL_ADDRESS  MtrrTable\r
   )\r
+\r
 /*++\r
 \r
 Routine Description:\r
@@ -112,9 +113,9 @@ Returns:
 \r
 --*/\r
 {\r
-  MTRR_SETTINGS   *MtrrSettings;\r
+  MTRR_SETTINGS  *MtrrSettings;\r
 \r
-  MtrrSettings = (MTRR_SETTINGS *) (UINTN) MtrrTable;\r
+  MtrrSettings = (MTRR_SETTINGS *)(UINTN)MtrrTable;\r
   MtrrSetAllMtrrs (MtrrSettings);\r
 }\r
 \r
@@ -126,7 +127,7 @@ Returns:
 **/\r
 VOID\r
 S3ReleaseSemaphore (\r
-  IN OUT  volatile UINT32           *Sem\r
+  IN OUT  volatile UINT32  *Sem\r
   )\r
 {\r
   InterlockedIncrement (Sem);\r
@@ -144,7 +145,7 @@ S3ReleaseSemaphore (
 **/\r
 VOID\r
 S3WaitForSemaphore (\r
-  IN OUT  volatile UINT32           *Sem\r
+  IN OUT  volatile UINT32  *Sem\r
   )\r
 {\r
   UINT32  Value;\r
@@ -170,42 +171,46 @@ S3WaitForSemaphore (
 **/\r
 UINTN\r
 ReadWriteCr (\r
-  IN     UINT32       CrIndex,\r
-  IN     BOOLEAN      Read,\r
-  IN OUT UINTN        *CrValue\r
+  IN     UINT32   CrIndex,\r
+  IN     BOOLEAN  Read,\r
+  IN OUT UINTN    *CrValue\r
   )\r
 {\r
   switch (CrIndex) {\r
-  case 0:\r
-    if (Read) {\r
-      *CrValue = AsmReadCr0 ();\r
-    } else {\r
-      AsmWriteCr0 (*CrValue);\r
-    }\r
-    break;\r
-  case 2:\r
-    if (Read) {\r
-      *CrValue = AsmReadCr2 ();\r
-    } else {\r
-      AsmWriteCr2 (*CrValue);\r
-    }\r
-    break;\r
-  case 3:\r
-    if (Read) {\r
-      *CrValue = AsmReadCr3 ();\r
-    } else {\r
-      AsmWriteCr3 (*CrValue);\r
-    }\r
-    break;\r
-  case 4:\r
-    if (Read) {\r
-      *CrValue = AsmReadCr4 ();\r
-    } else {\r
-      AsmWriteCr4 (*CrValue);\r
-    }\r
-    break;\r
-  default:\r
-    return EFI_UNSUPPORTED;;\r
+    case 0:\r
+      if (Read) {\r
+        *CrValue = AsmReadCr0 ();\r
+      } else {\r
+        AsmWriteCr0 (*CrValue);\r
+      }\r
+\r
+      break;\r
+    case 2:\r
+      if (Read) {\r
+        *CrValue = AsmReadCr2 ();\r
+      } else {\r
+        AsmWriteCr2 (*CrValue);\r
+      }\r
+\r
+      break;\r
+    case 3:\r
+      if (Read) {\r
+        *CrValue = AsmReadCr3 ();\r
+      } else {\r
+        AsmWriteCr3 (*CrValue);\r
+      }\r
+\r
+      break;\r
+    case 4:\r
+      if (Read) {\r
+        *CrValue = AsmReadCr4 ();\r
+      } else {\r
+        AsmWriteCr4 (*CrValue);\r
+      }\r
+\r
+      break;\r
+    default:\r
+      return EFI_UNSUPPORTED;\r
   }\r
 \r
   return EFI_SUCCESS;\r
@@ -223,10 +228,10 @@ ReadWriteCr (
 **/\r
 VOID\r
 ProgramProcessorRegister (\r
-  IN CPU_REGISTER_TABLE           *RegisterTable,\r
-  IN EFI_CPU_PHYSICAL_LOCATION    *ApLocation,\r
-  IN CPU_STATUS_INFORMATION       *CpuStatus,\r
-  IN PROGRAM_CPU_REGISTER_FLAGS   *CpuFlags\r
+  IN CPU_REGISTER_TABLE          *RegisterTable,\r
+  IN EFI_CPU_PHYSICAL_LOCATION   *ApLocation,\r
+  IN CPU_STATUS_INFORMATION      *CpuStatus,\r
+  IN PROGRAM_CPU_REGISTER_FLAGS  *CpuFlags\r
   )\r
 {\r
   CPU_REGISTER_TABLE_ENTRY  *RegisterTableEntry;\r
@@ -246,53 +251,25 @@ ProgramProcessorRegister (
   //\r
   // Traverse Register Table of this logical processor\r
   //\r
-  RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *) (UINTN) RegisterTable->RegisterTableEntry;\r
+  RegisterTableEntryHead = (CPU_REGISTER_TABLE_ENTRY *)(UINTN)RegisterTable->RegisterTableEntry;\r
 \r
   for (Index = 0; Index < RegisterTable->TableLength; Index++) {\r
-\r
     RegisterTableEntry = &RegisterTableEntryHead[Index];\r
 \r
     //\r
     // Check the type of specified register\r
     //\r
     switch (RegisterTableEntry->RegisterType) {\r
-    //\r
-    // The specified register is Control Register\r
-    //\r
-    case ControlRegister:\r
-      Status = ReadWriteCr (RegisterTableEntry->Index, TRUE, &Value);\r
-      if (EFI_ERROR (Status)) {\r
-        break;\r
-      }\r
-      if (RegisterTableEntry->TestThenWrite) {\r
-        CurrentValue = BitFieldRead64 (\r
-                         Value,\r
-                         RegisterTableEntry->ValidBitStart,\r
-                         RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1\r
-                         );\r
-        if (CurrentValue == RegisterTableEntry->Value) {\r
+      //\r
+      // The specified register is Control Register\r
+      //\r
+      case ControlRegister:\r
+        Status = ReadWriteCr (RegisterTableEntry->Index, TRUE, &Value);\r
+        if (EFI_ERROR (Status)) {\r
           break;\r
         }\r
-      }\r
-      Value = (UINTN) BitFieldWrite64 (\r
-                        Value,\r
-                        RegisterTableEntry->ValidBitStart,\r
-                        RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
-                        RegisterTableEntry->Value\r
-                        );\r
-      ReadWriteCr (RegisterTableEntry->Index, FALSE, &Value);\r
-      break;\r
-    //\r
-    // The specified register is Model Specific Register\r
-    //\r
-    case Msr:\r
-      if (RegisterTableEntry->TestThenWrite) {\r
-        Value = (UINTN)AsmReadMsr64 (RegisterTableEntry->Index);\r
-        if (RegisterTableEntry->ValidBitLength >= 64) {\r
-          if (Value == RegisterTableEntry->Value) {\r
-            break;\r
-          }\r
-        } else {\r
+\r
+        if (RegisterTableEntry->TestThenWrite) {\r
           CurrentValue = BitFieldRead64 (\r
                            Value,\r
                            RegisterTableEntry->ValidBitStart,\r
@@ -302,164 +279,200 @@ ProgramProcessorRegister (
             break;\r
           }\r
         }\r
-      }\r
 \r
+        Value = (UINTN)BitFieldWrite64 (\r
+                         Value,\r
+                         RegisterTableEntry->ValidBitStart,\r
+                         RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
+                         RegisterTableEntry->Value\r
+                         );\r
+        ReadWriteCr (RegisterTableEntry->Index, FALSE, &Value);\r
+        break;\r
       //\r
-      // If this function is called to restore register setting after INIT signal,\r
-      // there is no need to restore MSRs in register table.\r
+      // The specified register is Model Specific Register\r
       //\r
-      if (RegisterTableEntry->ValidBitLength >= 64) {\r
-        //\r
-        // If length is not less than 64 bits, then directly write without reading\r
-        //\r
-        AsmWriteMsr64 (\r
-          RegisterTableEntry->Index,\r
-          RegisterTableEntry->Value\r
-          );\r
-      } else {\r
+      case Msr:\r
+        if (RegisterTableEntry->TestThenWrite) {\r
+          Value = (UINTN)AsmReadMsr64 (RegisterTableEntry->Index);\r
+          if (RegisterTableEntry->ValidBitLength >= 64) {\r
+            if (Value == RegisterTableEntry->Value) {\r
+              break;\r
+            }\r
+          } else {\r
+            CurrentValue = BitFieldRead64 (\r
+                             Value,\r
+                             RegisterTableEntry->ValidBitStart,\r
+                             RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1\r
+                             );\r
+            if (CurrentValue == RegisterTableEntry->Value) {\r
+              break;\r
+            }\r
+          }\r
+        }\r
+\r
         //\r
-        // Set the bit section according to bit start and length\r
+        // If this function is called to restore register setting after INIT signal,\r
+        // there is no need to restore MSRs in register table.\r
         //\r
-        AsmMsrBitFieldWrite64 (\r
-          RegisterTableEntry->Index,\r
-          RegisterTableEntry->ValidBitStart,\r
-          RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
-          RegisterTableEntry->Value\r
-          );\r
-      }\r
-      break;\r
-    //\r
-    // MemoryMapped operations\r
-    //\r
-    case MemoryMapped:\r
-      AcquireSpinLock (&CpuFlags->MemoryMappedLock);\r
-      MmioBitFieldWrite32 (\r
-        (UINTN)(RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32)),\r
-        RegisterTableEntry->ValidBitStart,\r
-        RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
-        (UINT32)RegisterTableEntry->Value\r
-        );\r
-      ReleaseSpinLock (&CpuFlags->MemoryMappedLock);\r
-      break;\r
-    //\r
-    // Enable or disable cache\r
-    //\r
-    case CacheControl:\r
-      //\r
-      // If value of the entry is 0, then disable cache.  Otherwise, enable cache.\r
-      //\r
-      if (RegisterTableEntry->Value == 0) {\r
-        AsmDisableCache ();\r
-      } else {\r
-        AsmEnableCache ();\r
-      }\r
-      break;\r
+        if (RegisterTableEntry->ValidBitLength >= 64) {\r
+          //\r
+          // If length is not less than 64 bits, then directly write without reading\r
+          //\r
+          AsmWriteMsr64 (\r
+            RegisterTableEntry->Index,\r
+            RegisterTableEntry->Value\r
+            );\r
+        } else {\r
+          //\r
+          // Set the bit section according to bit start and length\r
+          //\r
+          AsmMsrBitFieldWrite64 (\r
+            RegisterTableEntry->Index,\r
+            RegisterTableEntry->ValidBitStart,\r
+            RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
+            RegisterTableEntry->Value\r
+            );\r
+        }\r
 \r
-    case Semaphore:\r
-      // Semaphore works logic like below:\r
-      //\r
-      //  V(x) = LibReleaseSemaphore (Semaphore[FirstThread + x]);\r
-      //  P(x) = LibWaitForSemaphore (Semaphore[FirstThread + x]);\r
-      //\r
-      //  All threads (T0...Tn) waits in P() line and continues running\r
-      //  together.\r
+        break;\r
       //\r
+      // MemoryMapped operations\r
       //\r
-      //  T0             T1            ...           Tn\r
+      case MemoryMapped:\r
+        AcquireSpinLock (&CpuFlags->MemoryMappedLock);\r
+        MmioBitFieldWrite32 (\r
+          (UINTN)(RegisterTableEntry->Index | LShiftU64 (RegisterTableEntry->HighIndex, 32)),\r
+          RegisterTableEntry->ValidBitStart,\r
+          RegisterTableEntry->ValidBitStart + RegisterTableEntry->ValidBitLength - 1,\r
+          (UINT32)RegisterTableEntry->Value\r
+          );\r
+        ReleaseSpinLock (&CpuFlags->MemoryMappedLock);\r
+        break;\r
       //\r
-      //  V(0...n)       V(0...n)      ...           V(0...n)\r
-      //  n * P(0)       n * P(1)      ...           n * P(n)\r
+      // Enable or disable cache\r
       //\r
-      ASSERT (\r
-        (ApLocation != NULL) &&\r
-        (CpuStatus->ThreadCountPerPackage != 0) &&\r
-        (CpuStatus->ThreadCountPerCore != 0) &&\r
-        (CpuFlags->CoreSemaphoreCount != NULL) &&\r
-        (CpuFlags->PackageSemaphoreCount != NULL)\r
-        );\r
-      switch (RegisterTableEntry->Value) {\r
-      case CoreDepType:\r
-        SemaphorePtr = CpuFlags->CoreSemaphoreCount;\r
-        ThreadCountPerCore = (UINT8 *)(UINTN)CpuStatus->ThreadCountPerCore;\r
-\r
-        CurrentCore = ApLocation->Package * CpuStatus->MaxCoreCount + ApLocation->Core;\r
-        //\r
-        // Get Offset info for the first thread in the core which current thread belongs to.\r
+      case CacheControl:\r
         //\r
-        FirstThread   = CurrentCore * CpuStatus->MaxThreadCount;\r
-        CurrentThread = FirstThread + ApLocation->Thread;\r
-\r
-        //\r
-        // Different cores may have different valid threads in them. If driver maintail clearly\r
-        // thread index in different cores, the logic will be much complicated.\r
-        // Here driver just simply records the max thread number in all cores and use it as expect\r
-        // thread number for all cores.\r
-        // In below two steps logic, first current thread will Release semaphore for each thread\r
-        // in current core. Maybe some threads are not valid in this core, but driver don't\r
-        // care. Second, driver will let current thread wait semaphore for all valid threads in\r
-        // current core. Because only the valid threads will do release semaphore for this\r
-        // thread, driver here only need to wait the valid thread count.\r
-        //\r
-\r
+        // If value of the entry is 0, then disable cache.  Otherwise, enable cache.\r
         //\r
-        // First Notify ALL THREADs in current Core that this thread is ready.\r
-        //\r
-        for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount; ProcessorIndex ++) {\r
-          S3ReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);\r
-        }\r
-        //\r
-        // Second, check whether all VALID THREADs (not all threads) in current core are ready.\r
-        //\r
-        for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerCore[CurrentCore]; ProcessorIndex ++) {\r
-          S3WaitForSemaphore (&SemaphorePtr[CurrentThread]);\r
+        if (RegisterTableEntry->Value == 0) {\r
+          AsmDisableCache ();\r
+        } else {\r
+          AsmEnableCache ();\r
         }\r
+\r
         break;\r
 \r
-      case PackageDepType:\r
-        SemaphorePtr = CpuFlags->PackageSemaphoreCount;\r
-        ThreadCountPerPackage = (UINT32 *)(UINTN)CpuStatus->ThreadCountPerPackage;\r
+      case Semaphore:\r
+        // Semaphore works logic like below:\r
         //\r
-        // Get Offset info for the first thread in the package which current thread belongs to.\r
+        //  V(x) = LibReleaseSemaphore (Semaphore[FirstThread + x]);\r
+        //  P(x) = LibWaitForSemaphore (Semaphore[FirstThread + x]);\r
         //\r
-        FirstThread = ApLocation->Package * CpuStatus->MaxCoreCount * CpuStatus->MaxThreadCount;\r
+        //  All threads (T0...Tn) waits in P() line and continues running\r
+        //  together.\r
         //\r
-        // Get the possible threads count for current package.\r
         //\r
-        CurrentThread = FirstThread + CpuStatus->MaxThreadCount * ApLocation->Core + ApLocation->Thread;\r
-\r
+        //  T0             T1            ...           Tn\r
         //\r
-        // Different packages may have different valid threads in them. If driver maintail clearly\r
-        // thread index in different packages, the logic will be much complicated.\r
-        // Here driver just simply records the max thread number in all packages and use it as expect\r
-        // thread number for all packages.\r
-        // In below two steps logic, first current thread will Release semaphore for each thread\r
-        // in current package. Maybe some threads are not valid in this package, but driver don't\r
-        // care. Second, driver will let current thread wait semaphore for all valid threads in\r
-        // current package. Because only the valid threads will do release semaphore for this\r
-        // thread, driver here only need to wait the valid thread count.\r
+        //  V(0...n)       V(0...n)      ...           V(0...n)\r
+        //  n * P(0)       n * P(1)      ...           n * P(n)\r
         //\r
+        ASSERT (\r
+          (ApLocation != NULL) &&\r
+          (CpuStatus->ThreadCountPerPackage != 0) &&\r
+          (CpuStatus->ThreadCountPerCore != 0) &&\r
+          (CpuFlags->CoreSemaphoreCount != NULL) &&\r
+          (CpuFlags->PackageSemaphoreCount != NULL)\r
+          );\r
+        switch (RegisterTableEntry->Value) {\r
+          case CoreDepType:\r
+            SemaphorePtr       = CpuFlags->CoreSemaphoreCount;\r
+            ThreadCountPerCore = (UINT8 *)(UINTN)CpuStatus->ThreadCountPerCore;\r
+\r
+            CurrentCore = ApLocation->Package * CpuStatus->MaxCoreCount + ApLocation->Core;\r
+            //\r
+            // Get Offset info for the first thread in the core which current thread belongs to.\r
+            //\r
+            FirstThread   = CurrentCore * CpuStatus->MaxThreadCount;\r
+            CurrentThread = FirstThread + ApLocation->Thread;\r
+\r
+            //\r
+            // Different cores may have different valid threads in them. If driver maintail clearly\r
+            // thread index in different cores, the logic will be much complicated.\r
+            // Here driver just simply records the max thread number in all cores and use it as expect\r
+            // thread number for all cores.\r
+            // In below two steps logic, first current thread will Release semaphore for each thread\r
+            // in current core. Maybe some threads are not valid in this core, but driver don't\r
+            // care. Second, driver will let current thread wait semaphore for all valid threads in\r
+            // current core. Because only the valid threads will do release semaphore for this\r
+            // thread, driver here only need to wait the valid thread count.\r
+            //\r
+\r
+            //\r
+            // First Notify ALL THREADs in current Core that this thread is ready.\r
+            //\r
+            for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount; ProcessorIndex++) {\r
+              S3ReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);\r
+            }\r
+\r
+            //\r
+            // Second, check whether all VALID THREADs (not all threads) in current core are ready.\r
+            //\r
+            for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerCore[CurrentCore]; ProcessorIndex++) {\r
+              S3WaitForSemaphore (&SemaphorePtr[CurrentThread]);\r
+            }\r
 \r
-        //\r
-        // First Notify ALL THREADS in current package that this thread is ready.\r
-        //\r
-        for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount * CpuStatus->MaxCoreCount; ProcessorIndex ++) {\r
-          S3ReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);\r
-        }\r
-        //\r
-        // Second, check whether VALID THREADS (not all threads) in current package are ready.\r
-        //\r
-        for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerPackage[ApLocation->Package]; ProcessorIndex ++) {\r
-          S3WaitForSemaphore (&SemaphorePtr[CurrentThread]);\r
+            break;\r
+\r
+          case PackageDepType:\r
+            SemaphorePtr          = CpuFlags->PackageSemaphoreCount;\r
+            ThreadCountPerPackage = (UINT32 *)(UINTN)CpuStatus->ThreadCountPerPackage;\r
+            //\r
+            // Get Offset info for the first thread in the package which current thread belongs to.\r
+            //\r
+            FirstThread = ApLocation->Package * CpuStatus->MaxCoreCount * CpuStatus->MaxThreadCount;\r
+            //\r
+            // Get the possible threads count for current package.\r
+            //\r
+            CurrentThread = FirstThread + CpuStatus->MaxThreadCount * ApLocation->Core + ApLocation->Thread;\r
+\r
+            //\r
+            // Different packages may have different valid threads in them. If driver maintail clearly\r
+            // thread index in different packages, the logic will be much complicated.\r
+            // Here driver just simply records the max thread number in all packages and use it as expect\r
+            // thread number for all packages.\r
+            // In below two steps logic, first current thread will Release semaphore for each thread\r
+            // in current package. Maybe some threads are not valid in this package, but driver don't\r
+            // care. Second, driver will let current thread wait semaphore for all valid threads in\r
+            // current package. Because only the valid threads will do release semaphore for this\r
+            // thread, driver here only need to wait the valid thread count.\r
+            //\r
+\r
+            //\r
+            // First Notify ALL THREADS in current package that this thread is ready.\r
+            //\r
+            for (ProcessorIndex = 0; ProcessorIndex < CpuStatus->MaxThreadCount * CpuStatus->MaxCoreCount; ProcessorIndex++) {\r
+              S3ReleaseSemaphore (&SemaphorePtr[FirstThread + ProcessorIndex]);\r
+            }\r
+\r
+            //\r
+            // Second, check whether VALID THREADS (not all threads) in current package are ready.\r
+            //\r
+            for (ProcessorIndex = 0; ProcessorIndex < ThreadCountPerPackage[ApLocation->Package]; ProcessorIndex++) {\r
+              S3WaitForSemaphore (&SemaphorePtr[CurrentThread]);\r
+            }\r
+\r
+            break;\r
+\r
+          default:\r
+            break;\r
         }\r
+\r
         break;\r
 \r
       default:\r
         break;\r
-      }\r
-      break;\r
-\r
-    default:\r
-      break;\r
     }\r
   }\r
 }\r
@@ -473,15 +486,15 @@ ProgramProcessorRegister (
 **/\r
 VOID\r
 SetRegister (\r
-  IN BOOLEAN                 PreSmmRegisterTable\r
+  IN BOOLEAN  PreSmmRegisterTable\r
   )\r
 {\r
-  CPU_FEATURE_INIT_DATA     *FeatureInitData;\r
-  CPU_REGISTER_TABLE        *RegisterTable;\r
-  CPU_REGISTER_TABLE        *RegisterTables;\r
-  UINT32                    InitApicId;\r
-  UINTN                     ProcIndex;\r
-  UINTN                     Index;\r
+  CPU_FEATURE_INIT_DATA  *FeatureInitData;\r
+  CPU_REGISTER_TABLE     *RegisterTable;\r
+  CPU_REGISTER_TABLE     *RegisterTables;\r
+  UINT32                 InitApicId;\r
+  UINTN                  ProcIndex;\r
+  UINTN                  Index;\r
 \r
   FeatureInitData = &mAcpiCpuData.CpuFeatureInitData;\r
 \r
@@ -490,20 +503,22 @@ SetRegister (
   } else {\r
     RegisterTables = (CPU_REGISTER_TABLE *)(UINTN)FeatureInitData->RegisterTable;\r
   }\r
+\r
   if (RegisterTables == NULL) {\r
     return;\r
   }\r
 \r
-  InitApicId = GetInitialApicId ();\r
+  InitApicId    = GetInitialApicId ();\r
   RegisterTable = NULL;\r
-  ProcIndex = (UINTN)-1;\r
+  ProcIndex     = (UINTN)-1;\r
   for (Index = 0; Index < mAcpiCpuData.NumberOfCpus; Index++) {\r
     if (RegisterTables[Index].InitialApicId == InitApicId) {\r
       RegisterTable = &RegisterTables[Index];\r
-      ProcIndex = Index;\r
+      ProcIndex     = Index;\r
       break;\r
     }\r
   }\r
+\r
   ASSERT (RegisterTable != NULL);\r
 \r
   if (FeatureInitData->ApLocation != 0) {\r
@@ -531,8 +546,8 @@ InitializeAp (
   VOID\r
   )\r
 {\r
-  UINTN                      TopOfStack;\r
-  UINT8                      Stack[128];\r
+  UINTN  TopOfStack;\r
+  UINT8  Stack[128];\r
 \r
   LoadMtrrData (mAcpiCpuData.MtrrTable);\r
 \r
@@ -558,9 +573,9 @@ InitializeAp (
   //\r
   // Place AP into the safe code, count down the number with lock mechanism in the safe code.\r
   //\r
-  TopOfStack  = (UINTN) Stack + sizeof (Stack);\r
-  TopOfStack &= ~(UINTN) (CPU_STACK_ALIGNMENT - 1);\r
-  CopyMem ((VOID *) (UINTN) mApHltLoopCode, mApHltLoopCodeTemplate, sizeof (mApHltLoopCodeTemplate));\r
+  TopOfStack  = (UINTN)Stack + sizeof (Stack);\r
+  TopOfStack &= ~(UINTN)(CPU_STACK_ALIGNMENT - 1);\r
+  CopyMem ((VOID *)(UINTN)mApHltLoopCode, mApHltLoopCodeTemplate, sizeof (mApHltLoopCodeTemplate));\r
   TransferApToSafeState ((UINTN)mApHltLoopCode, TopOfStack, (UINTN)&mNumberToFinish);\r
 }\r
 \r
@@ -576,8 +591,8 @@ PrepareApStartupVector (
   EFI_PHYSICAL_ADDRESS  WorkingBuffer\r
   )\r
 {\r
-  EFI_PHYSICAL_ADDRESS                        StartupVector;\r
-  MP_ASSEMBLY_ADDRESS_MAP                     AddressMap;\r
+  EFI_PHYSICAL_ADDRESS     StartupVector;\r
+  MP_ASSEMBLY_ADDRESS_MAP  AddressMap;\r
 \r
   //\r
   // Get the address map of startup code for AP,\r
@@ -592,25 +607,25 @@ PrepareApStartupVector (
   // Copy AP startup code to startup vector, and then redirect the long jump\r
   // instructions for mode switching.\r
   //\r
-  CopyMem ((VOID *) (UINTN) StartupVector, AddressMap.RendezvousFunnelAddress, AddressMap.Size);\r
-  *(UINT32 *) (UINTN) (StartupVector + AddressMap.FlatJumpOffset + 3) = (UINT32) (StartupVector + AddressMap.PModeEntryOffset);\r
+  CopyMem ((VOID *)(UINTN)StartupVector, AddressMap.RendezvousFunnelAddress, AddressMap.Size);\r
+  *(UINT32 *)(UINTN)(StartupVector + AddressMap.FlatJumpOffset + 3) = (UINT32)(StartupVector + AddressMap.PModeEntryOffset);\r
   if (AddressMap.LongJumpOffset != 0) {\r
-    *(UINT32 *) (UINTN) (StartupVector + AddressMap.LongJumpOffset + 2) = (UINT32) (StartupVector + AddressMap.LModeEntryOffset);\r
+    *(UINT32 *)(UINTN)(StartupVector + AddressMap.LongJumpOffset + 2) = (UINT32)(StartupVector + AddressMap.LModeEntryOffset);\r
   }\r
 \r
   //\r
   // Get the start address of exchange data between BSP and AP.\r
   //\r
-  mExchangeInfo = (MP_CPU_EXCHANGE_INFO *) (UINTN) (StartupVector + AddressMap.Size);\r
-  ZeroMem ((VOID *) mExchangeInfo, sizeof (MP_CPU_EXCHANGE_INFO));\r
+  mExchangeInfo = (MP_CPU_EXCHANGE_INFO *)(UINTN)(StartupVector + AddressMap.Size);\r
+  ZeroMem ((VOID *)mExchangeInfo, sizeof (MP_CPU_EXCHANGE_INFO));\r
 \r
-  CopyMem ((VOID *) (UINTN) &mExchangeInfo->GdtrProfile, (VOID *) (UINTN) mAcpiCpuData.GdtrProfile, sizeof (IA32_DESCRIPTOR));\r
-  CopyMem ((VOID *) (UINTN) &mExchangeInfo->IdtrProfile, (VOID *) (UINTN) mAcpiCpuData.IdtrProfile, sizeof (IA32_DESCRIPTOR));\r
+  CopyMem ((VOID *)(UINTN)&mExchangeInfo->GdtrProfile, (VOID *)(UINTN)mAcpiCpuData.GdtrProfile, sizeof (IA32_DESCRIPTOR));\r
+  CopyMem ((VOID *)(UINTN)&mExchangeInfo->IdtrProfile, (VOID *)(UINTN)mAcpiCpuData.IdtrProfile, sizeof (IA32_DESCRIPTOR));\r
 \r
-  mExchangeInfo->StackStart  = (VOID *) (UINTN) mAcpiCpuData.StackAddress;\r
-  mExchangeInfo->StackSize   = mAcpiCpuData.StackSize;\r
-  mExchangeInfo->BufferStart = (UINT32) StartupVector;\r
-  mExchangeInfo->Cr3         = (UINT32) (AsmReadCr3 ());\r
+  mExchangeInfo->StackStart                          = (VOID *)(UINTN)mAcpiCpuData.StackAddress;\r
+  mExchangeInfo->StackSize                           = mAcpiCpuData.StackSize;\r
+  mExchangeInfo->BufferStart                         = (UINT32)StartupVector;\r
+  mExchangeInfo->Cr3                                 = (UINT32)(AsmReadCr3 ());\r
   mExchangeInfo->InitializeFloatingPointUnitsAddress = (UINTN)InitializeFloatingPointUnits;\r
 }\r
 \r
@@ -639,8 +654,9 @@ InitializeCpuBeforeRebase (
   } else {\r
     ASSERT (mNumberOfCpus == mAcpiCpuData.NumberOfCpus);\r
   }\r
-  mNumberToFinish = (UINT32)(mNumberOfCpus - 1);\r
-  mExchangeInfo->ApFunction  = (VOID *) (UINTN) InitializeAp;\r
+\r
+  mNumberToFinish           = (UINT32)(mNumberOfCpus - 1);\r
+  mExchangeInfo->ApFunction = (VOID *)(UINTN)InitializeAp;\r
 \r
   //\r
   // Execute code for before SmmBaseReloc. Note: This flag is maintained across S3 boots.\r
@@ -674,6 +690,7 @@ InitializeCpuAfterRebase (
   } else {\r
     ASSERT (mNumberOfCpus == mAcpiCpuData.NumberOfCpus);\r
   }\r
+\r
   mNumberToFinish = (UINT32)(mNumberOfCpus - 1);\r
 \r
   //\r
@@ -745,11 +762,11 @@ SmmRestoreCpu (
   VOID\r
   )\r
 {\r
-  SMM_S3_RESUME_STATE           *SmmS3ResumeState;\r
-  IA32_DESCRIPTOR               Ia32Idtr;\r
-  IA32_DESCRIPTOR               X64Idtr;\r
-  IA32_IDT_GATE_DESCRIPTOR      IdtEntryTable[EXCEPTION_VECTOR_NUMBER];\r
-  EFI_STATUS                    Status;\r
+  SMM_S3_RESUME_STATE       *SmmS3ResumeState;\r
+  IA32_DESCRIPTOR           Ia32Idtr;\r
+  IA32_DESCRIPTOR           X64Idtr;\r
+  IA32_IDT_GATE_DESCRIPTOR  IdtEntryTable[EXCEPTION_VECTOR_NUMBER];\r
+  EFI_STATUS                Status;\r
 \r
   DEBUG ((DEBUG_INFO, "SmmRestoreCpu()\n"));\r
 \r
@@ -770,15 +787,15 @@ SmmRestoreCpu (
     //\r
     // Save the IA32 IDT Descriptor\r
     //\r
-    AsmReadIdtr ((IA32_DESCRIPTOR *) &Ia32Idtr);\r
+    AsmReadIdtr ((IA32_DESCRIPTOR *)&Ia32Idtr);\r
 \r
     //\r
     // Setup X64 IDT table\r
     //\r
     ZeroMem (IdtEntryTable, sizeof (IA32_IDT_GATE_DESCRIPTOR) * 32);\r
-    X64Idtr.Base = (UINTN) IdtEntryTable;\r
-    X64Idtr.Limit = (UINT16) (sizeof (IA32_IDT_GATE_DESCRIPTOR) * 32 - 1);\r
-    AsmWriteIdtr ((IA32_DESCRIPTOR *) &X64Idtr);\r
+    X64Idtr.Base  = (UINTN)IdtEntryTable;\r
+    X64Idtr.Limit = (UINT16)(sizeof (IA32_IDT_GATE_DESCRIPTOR) * 32 - 1);\r
+    AsmWriteIdtr ((IA32_DESCRIPTOR *)&X64Idtr);\r
 \r
     //\r
     // Setup the default exception handler\r
@@ -822,11 +839,11 @@ SmmRestoreCpu (
   //\r
   mRestoreSmmConfigurationInS3 = TRUE;\r
 \r
-  DEBUG (( DEBUG_INFO, "SMM S3 Return CS                = %x\n", SmmS3ResumeState->ReturnCs));\r
-  DEBUG (( DEBUG_INFO, "SMM S3 Return Entry Point       = %x\n", SmmS3ResumeState->ReturnEntryPoint));\r
-  DEBUG (( DEBUG_INFO, "SMM S3 Return Context1          = %x\n", SmmS3ResumeState->ReturnContext1));\r
-  DEBUG (( DEBUG_INFO, "SMM S3 Return Context2          = %x\n", SmmS3ResumeState->ReturnContext2));\r
-  DEBUG (( DEBUG_INFO, "SMM S3 Return Stack Pointer     = %x\n", SmmS3ResumeState->ReturnStackPointer));\r
+  DEBUG ((DEBUG_INFO, "SMM S3 Return CS                = %x\n", SmmS3ResumeState->ReturnCs));\r
+  DEBUG ((DEBUG_INFO, "SMM S3 Return Entry Point       = %x\n", SmmS3ResumeState->ReturnEntryPoint));\r
+  DEBUG ((DEBUG_INFO, "SMM S3 Return Context1          = %x\n", SmmS3ResumeState->ReturnContext1));\r
+  DEBUG ((DEBUG_INFO, "SMM S3 Return Context2          = %x\n", SmmS3ResumeState->ReturnContext2));\r
+  DEBUG ((DEBUG_INFO, "SMM S3 Return Stack Pointer     = %x\n", SmmS3ResumeState->ReturnStackPointer));\r
 \r
   //\r
   // If SMM is in 32-bit mode, then use SwitchStack() to resume PEI Phase\r
@@ -854,7 +871,7 @@ SmmRestoreCpu (
     //\r
     // Restore IA32 IDT table\r
     //\r
-    AsmWriteIdtr ((IA32_DESCRIPTOR *) &Ia32Idtr);\r
+    AsmWriteIdtr ((IA32_DESCRIPTOR *)&Ia32Idtr);\r
     AsmDisablePaging64 (\r
       SmmS3ResumeState->ReturnCs,\r
       (UINT32)SmmS3ResumeState->ReturnEntryPoint,\r
@@ -882,11 +899,11 @@ InitSmmS3ResumeState (
   IN UINT32  Cr3\r
   )\r
 {\r
-  VOID                       *GuidHob;\r
-  EFI_SMRAM_DESCRIPTOR       *SmramDescriptor;\r
-  SMM_S3_RESUME_STATE        *SmmS3ResumeState;\r
-  EFI_PHYSICAL_ADDRESS       Address;\r
-  EFI_STATUS                 Status;\r
+  VOID                  *GuidHob;\r
+  EFI_SMRAM_DESCRIPTOR  *SmramDescriptor;\r
+  SMM_S3_RESUME_STATE   *SmmS3ResumeState;\r
+  EFI_PHYSICAL_ADDRESS  Address;\r
+  EFI_STATUS            Status;\r
 \r
   if (!mAcpiS3Enable) {\r
     return;\r
@@ -899,10 +916,10 @@ InitSmmS3ResumeState (
       "ERROR:%a(): HOB(gEfiAcpiVariableGuid=%g) needed by S3 resume doesn't exist!\n",\r
       __FUNCTION__,\r
       &gEfiAcpiVariableGuid\r
-    ));\r
+      ));\r
     CpuDeadLoop ();\r
   } else {\r
-    SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *) GET_GUID_HOB_DATA (GuidHob);\r
+    SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *)GET_GUID_HOB_DATA (GuidHob);\r
 \r
     DEBUG ((DEBUG_INFO, "SMM S3 SMRAM Structure = %x\n", SmramDescriptor));\r
     DEBUG ((DEBUG_INFO, "SMM S3 Structure = %x\n", SmramDescriptor->CpuStart));\r
@@ -910,7 +927,7 @@ InitSmmS3ResumeState (
     SmmS3ResumeState = (SMM_S3_RESUME_STATE *)(UINTN)SmramDescriptor->CpuStart;\r
     ZeroMem (SmmS3ResumeState, sizeof (SMM_S3_RESUME_STATE));\r
 \r
-    mSmmS3ResumeState = SmmS3ResumeState;\r
+    mSmmS3ResumeState      = SmmS3ResumeState;\r
     SmmS3ResumeState->Smst = (EFI_PHYSICAL_ADDRESS)(UINTN)gSmst;\r
 \r
     SmmS3ResumeState->SmmS3ResumeEntryPoint = (EFI_PHYSICAL_ADDRESS)(UINTN)SmmRestoreCpu;\r
@@ -928,6 +945,7 @@ InitSmmS3ResumeState (
     if (sizeof (UINTN) == sizeof (UINT64)) {\r
       SmmS3ResumeState->Signature = SMM_S3_RESUME_SMM_64;\r
     }\r
+\r
     if (sizeof (UINTN) == sizeof (UINT32)) {\r
       SmmS3ResumeState->Signature = SMM_S3_RESUME_SMM_32;\r
     }\r
@@ -950,7 +968,7 @@ InitSmmS3ResumeState (
                    &Address\r
                    );\r
   ASSERT_EFI_ERROR (Status);\r
-  mApHltLoopCode = (UINT8 *) (UINTN) Address;\r
+  mApHltLoopCode = (UINT8 *)(UINTN)Address;\r
 }\r
 \r
 /**\r
@@ -963,22 +981,22 @@ InitSmmS3ResumeState (
 **/\r
 VOID\r
 CopyRegisterTable (\r
-  IN CPU_REGISTER_TABLE         *DestinationRegisterTableList,\r
-  IN CPU_REGISTER_TABLE         *SourceRegisterTableList,\r
-  IN UINT32                     NumberOfCpus\r
+  IN CPU_REGISTER_TABLE  *DestinationRegisterTableList,\r
+  IN CPU_REGISTER_TABLE  *SourceRegisterTableList,\r
+  IN UINT32              NumberOfCpus\r
   )\r
 {\r
-  UINTN                      Index;\r
-  CPU_REGISTER_TABLE_ENTRY   *RegisterTableEntry;\r
+  UINTN                     Index;\r
+  CPU_REGISTER_TABLE_ENTRY  *RegisterTableEntry;\r
 \r
   CopyMem (DestinationRegisterTableList, SourceRegisterTableList, NumberOfCpus * sizeof (CPU_REGISTER_TABLE));\r
   for (Index = 0; Index < NumberOfCpus; Index++) {\r
     if (DestinationRegisterTableList[Index].TableLength != 0) {\r
       DestinationRegisterTableList[Index].AllocatedSize = DestinationRegisterTableList[Index].TableLength * sizeof (CPU_REGISTER_TABLE_ENTRY);\r
-      RegisterTableEntry = AllocateCopyPool (\r
-        DestinationRegisterTableList[Index].AllocatedSize,\r
-        (VOID *)(UINTN)SourceRegisterTableList[Index].RegisterTableEntry\r
-        );\r
+      RegisterTableEntry                                = AllocateCopyPool (\r
+                                                            DestinationRegisterTableList[Index].AllocatedSize,\r
+                                                            (VOID *)(UINTN)SourceRegisterTableList[Index].RegisterTableEntry\r
+                                                            );\r
       ASSERT (RegisterTableEntry != NULL);\r
       DestinationRegisterTableList[Index].RegisterTableEntry = (EFI_PHYSICAL_ADDRESS)(UINTN)RegisterTableEntry;\r
     }\r
@@ -996,11 +1014,11 @@ CopyRegisterTable (
 **/\r
 BOOLEAN\r
 IsRegisterTableEmpty (\r
-  IN CPU_REGISTER_TABLE     *RegisterTable,\r
-  IN UINT32                 NumberOfCpus\r
+  IN CPU_REGISTER_TABLE  *RegisterTable,\r
+  IN UINT32              NumberOfCpus\r
   )\r
 {\r
-  UINTN                     Index;\r
+  UINTN  Index;\r
 \r
   if (RegisterTable != NULL) {\r
     for (Index = 0; Index < NumberOfCpus; Index++) {\r
@@ -1022,11 +1040,11 @@ IsRegisterTableEmpty (
 **/\r
 VOID\r
 CopyCpuFeatureInitDatatoSmram (\r
-  IN OUT CPU_FEATURE_INIT_DATA    *CpuFeatureInitDataDst,\r
-  IN     CPU_FEATURE_INIT_DATA    *CpuFeatureInitDataSrc\r
+  IN OUT CPU_FEATURE_INIT_DATA  *CpuFeatureInitDataDst,\r
+  IN     CPU_FEATURE_INIT_DATA  *CpuFeatureInitDataSrc\r
   )\r
 {\r
-  CPU_STATUS_INFORMATION    *CpuStatus;\r
+  CPU_STATUS_INFORMATION  *CpuStatus;\r
 \r
   if (!IsRegisterTableEmpty ((CPU_REGISTER_TABLE *)(UINTN)CpuFeatureInitDataSrc->PreSmmInitRegisterTable, mAcpiCpuData.NumberOfCpus)) {\r
     CpuFeatureInitDataDst->PreSmmInitRegisterTable = (EFI_PHYSICAL_ADDRESS)(UINTN)AllocatePool (mAcpiCpuData.NumberOfCpus * sizeof (CPU_REGISTER_TABLE));\r
@@ -1055,25 +1073,25 @@ CopyCpuFeatureInitDatatoSmram (
 \r
   if (CpuFeatureInitDataSrc->CpuStatus.ThreadCountPerPackage != 0) {\r
     CpuStatus->ThreadCountPerPackage = (EFI_PHYSICAL_ADDRESS)(UINTN)AllocateCopyPool (\r
-                                            sizeof (UINT32) * CpuStatus->PackageCount,\r
-                                            (UINT32 *)(UINTN)CpuFeatureInitDataSrc->CpuStatus.ThreadCountPerPackage\r
-                                            );\r
+                                                                      sizeof (UINT32) * CpuStatus->PackageCount,\r
+                                                                      (UINT32 *)(UINTN)CpuFeatureInitDataSrc->CpuStatus.ThreadCountPerPackage\r
+                                                                      );\r
     ASSERT (CpuStatus->ThreadCountPerPackage != 0);\r
   }\r
 \r
   if (CpuFeatureInitDataSrc->CpuStatus.ThreadCountPerCore != 0) {\r
     CpuStatus->ThreadCountPerCore = (EFI_PHYSICAL_ADDRESS)(UINTN)AllocateCopyPool (\r
-                                            sizeof (UINT8) * (CpuStatus->PackageCount * CpuStatus->MaxCoreCount),\r
-                                            (UINT32 *)(UINTN)CpuFeatureInitDataSrc->CpuStatus.ThreadCountPerCore\r
-                                            );\r
+                                                                   sizeof (UINT8) * (CpuStatus->PackageCount * CpuStatus->MaxCoreCount),\r
+                                                                   (UINT32 *)(UINTN)CpuFeatureInitDataSrc->CpuStatus.ThreadCountPerCore\r
+                                                                   );\r
     ASSERT (CpuStatus->ThreadCountPerCore != 0);\r
   }\r
 \r
   if (CpuFeatureInitDataSrc->ApLocation != 0) {\r
     CpuFeatureInitDataDst->ApLocation = (EFI_PHYSICAL_ADDRESS)(UINTN)AllocateCopyPool (\r
-                                mAcpiCpuData.NumberOfCpus * sizeof (EFI_CPU_PHYSICAL_LOCATION),\r
-                                (EFI_CPU_PHYSICAL_LOCATION *)(UINTN)CpuFeatureInitDataSrc->ApLocation\r
-                                );\r
+                                                                       mAcpiCpuData.NumberOfCpus * sizeof (EFI_CPU_PHYSICAL_LOCATION),\r
+                                                                       (EFI_CPU_PHYSICAL_LOCATION *)(UINTN)CpuFeatureInitDataSrc->ApLocation\r
+                                                                       );\r
     ASSERT (CpuFeatureInitDataDst->ApLocation != 0);\r
   }\r
 }\r
@@ -1087,13 +1105,13 @@ GetAcpiCpuData (
   VOID\r
   )\r
 {\r
-  ACPI_CPU_DATA              *AcpiCpuData;\r
-  IA32_DESCRIPTOR            *Gdtr;\r
-  IA32_DESCRIPTOR            *Idtr;\r
-  VOID                       *GdtForAp;\r
-  VOID                       *IdtForAp;\r
-  VOID                       *MachineCheckHandlerForAp;\r
-  CPU_STATUS_INFORMATION     *CpuStatus;\r
+  ACPI_CPU_DATA           *AcpiCpuData;\r
+  IA32_DESCRIPTOR         *Gdtr;\r
+  IA32_DESCRIPTOR         *Idtr;\r
+  VOID                    *GdtForAp;\r
+  VOID                    *IdtForAp;\r
+  VOID                    *MachineCheckHandlerForAp;\r
+  CPU_STATUS_INFORMATION  *CpuStatus;\r
 \r
   if (!mAcpiS3Enable) {\r
     return;\r
@@ -1140,15 +1158,15 @@ GetAcpiCpuData (
 \r
   GdtForAp = AllocatePool ((Gdtr->Limit + 1) + (Idtr->Limit + 1) + mAcpiCpuData.ApMachineCheckHandlerSize);\r
   ASSERT (GdtForAp != NULL);\r
-  IdtForAp = (VOID *) ((UINTN)GdtForAp + (Gdtr->Limit + 1));\r
-  MachineCheckHandlerForAp = (VOID *) ((UINTN)IdtForAp + (Idtr->Limit + 1));\r
+  IdtForAp                 = (VOID *)((UINTN)GdtForAp + (Gdtr->Limit + 1));\r
+  MachineCheckHandlerForAp = (VOID *)((UINTN)IdtForAp + (Idtr->Limit + 1));\r
 \r
   CopyMem (GdtForAp, (VOID *)Gdtr->Base, Gdtr->Limit + 1);\r
   CopyMem (IdtForAp, (VOID *)Idtr->Base, Idtr->Limit + 1);\r
   CopyMem (MachineCheckHandlerForAp, (VOID *)(UINTN)mAcpiCpuData.ApMachineCheckHandlerBase, mAcpiCpuData.ApMachineCheckHandlerSize);\r
 \r
-  Gdtr->Base = (UINTN)GdtForAp;\r
-  Idtr->Base = (UINTN)IdtForAp;\r
+  Gdtr->Base                             = (UINTN)GdtForAp;\r
+  Idtr->Base                             = (UINTN)IdtForAp;\r
   mAcpiCpuData.ApMachineCheckHandlerBase = (EFI_PHYSICAL_ADDRESS)(UINTN)MachineCheckHandlerForAp;\r
 \r
   ZeroMem (&mAcpiCpuData.CpuFeatureInitData, sizeof (CPU_FEATURE_INIT_DATA));\r
@@ -1175,7 +1193,7 @@ GetAcpiCpuData (
                                         );\r
     ASSERT (mCpuFlags.PackageSemaphoreCount != NULL);\r
 \r
-    InitializeSpinLock((SPIN_LOCK*) &mCpuFlags.MemoryMappedLock);\r
+    InitializeSpinLock ((SPIN_LOCK *)&mCpuFlags.MemoryMappedLock);\r
   }\r
 }\r
 \r
index c9138a531a318214d052d2e98a5fbfdbcb7b22e0..5d624f8e9ed65b47fe2f1c43b1794e8d0e4d7564 100644 (file)
@@ -38,15 +38,15 @@ EFI_SMM_CPU_SERVICE_PROTOCOL  mSmmCpuService = {
 EFI_STATUS\r
 EFIAPI\r
 SmmGetProcessorInfo (\r
-  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,\r
-  IN       UINTN                        ProcessorNumber,\r
-  OUT      EFI_PROCESSOR_INFORMATION    *ProcessorInfoBuffer\r
+  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
+  IN       UINTN                         ProcessorNumber,\r
+  OUT      EFI_PROCESSOR_INFORMATION     *ProcessorInfoBuffer\r
   )\r
 {\r
   //\r
   // Check parameter\r
   //\r
-  if (ProcessorNumber >= mMaxNumberOfCpus || ProcessorInfoBuffer == NULL) {\r
+  if ((ProcessorNumber >= mMaxNumberOfCpus) || (ProcessorInfoBuffer == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -75,8 +75,8 @@ SmmGetProcessorInfo (
 EFI_STATUS\r
 EFIAPI\r
 SmmSwitchBsp (\r
-  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,\r
-  IN       UINTN                        ProcessorNumber\r
+  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
+  IN       UINTN                         ProcessorNumber\r
   )\r
 {\r
   //\r
@@ -90,8 +90,9 @@ SmmSwitchBsp (
     return EFI_NOT_FOUND;\r
   }\r
 \r
-  if (gSmmCpuPrivate->Operation[ProcessorNumber] != SmmCpuNone ||\r
-      gSmst->CurrentlyExecutingCpu == ProcessorNumber) {\r
+  if ((gSmmCpuPrivate->Operation[ProcessorNumber] != SmmCpuNone) ||\r
+      (gSmst->CurrentlyExecutingCpu == ProcessorNumber))\r
+  {\r
     return EFI_UNSUPPORTED;\r
   }\r
 \r
@@ -132,7 +133,7 @@ SmmAddProcessor (
   //\r
   // Check parameter\r
   //\r
-  if (ProcessorNumber == NULL || ProcessorId == INVALID_APIC_ID) {\r
+  if ((ProcessorNumber == NULL) || (ProcessorId == INVALID_APIC_ID)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -151,10 +152,11 @@ SmmAddProcessor (
   // of the APIC ID to SMBASE.\r
   //\r
   for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
-    if (mCpuHotPlugData.ApicId[Index] == ProcessorId &&\r
-        gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId == INVALID_APIC_ID) {\r
+    if ((mCpuHotPlugData.ApicId[Index] == ProcessorId) &&\r
+        (gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId == INVALID_APIC_ID))\r
+    {\r
       gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId = ProcessorId;\r
-      gSmmCpuPrivate->ProcessorInfo[Index].StatusFlag = 0;\r
+      gSmmCpuPrivate->ProcessorInfo[Index].StatusFlag  = 0;\r
       GetProcessorLocationByApicId (\r
         (UINT32)ProcessorId,\r
         &gSmmCpuPrivate->ProcessorInfo[Index].Location.Package,\r
@@ -162,7 +164,7 @@ SmmAddProcessor (
         &gSmmCpuPrivate->ProcessorInfo[Index].Location.Thread\r
         );\r
 \r
-      *ProcessorNumber = Index;\r
+      *ProcessorNumber                 = Index;\r
       gSmmCpuPrivate->Operation[Index] = SmmCpuAdd;\r
       return EFI_SUCCESS;\r
     }\r
@@ -197,8 +199,9 @@ SmmRemoveProcessor (
   //\r
   // Check parameter\r
   //\r
-  if (ProcessorNumber >= mMaxNumberOfCpus ||\r
-      gSmmCpuPrivate->ProcessorInfo[ProcessorNumber].ProcessorId == INVALID_APIC_ID) {\r
+  if ((ProcessorNumber >= mMaxNumberOfCpus) ||\r
+      (gSmmCpuPrivate->ProcessorInfo[ProcessorNumber].ProcessorId == INVALID_APIC_ID))\r
+  {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -214,7 +217,7 @@ SmmRemoveProcessor (
   }\r
 \r
   gSmmCpuPrivate->ProcessorInfo[ProcessorNumber].ProcessorId = INVALID_APIC_ID;\r
-  mCpuHotPlugData.ApicId[ProcessorNumber] = INVALID_APIC_ID;\r
+  mCpuHotPlugData.ApicId[ProcessorNumber]                    = INVALID_APIC_ID;\r
 \r
   //\r
   // Removal of the processor from the CPU list is pending until all SMI handlers are finished\r
@@ -237,12 +240,12 @@ SmmRemoveProcessor (
 EFI_STATUS\r
 EFIAPI\r
 SmmWhoAmI (\r
-  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,\r
-  OUT      UINTN                        *ProcessorNumber\r
+  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
+  OUT      UINTN                         *ProcessorNumber\r
   )\r
 {\r
-  UINTN  Index;\r
-  UINT64 ApicId;\r
+  UINTN   Index;\r
+  UINT64  ApicId;\r
 \r
   //\r
   // Check parameter\r
@@ -259,6 +262,7 @@ SmmWhoAmI (
       return EFI_SUCCESS;\r
     }\r
   }\r
+\r
   //\r
   // This should not happen\r
   //\r
@@ -276,15 +280,15 @@ SmmCpuUpdate (
   VOID\r
   )\r
 {\r
-  UINTN   Index;\r
+  UINTN  Index;\r
 \r
   //\r
   // Handle pending BSP switch operations\r
   //\r
   for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
     if (gSmmCpuPrivate->Operation[Index] == SmmCpuSwitchBsp) {\r
-      gSmmCpuPrivate->Operation[Index] = SmmCpuNone;\r
-      mSmmMpSyncData->SwitchBsp = TRUE;\r
+      gSmmCpuPrivate->Operation[Index]    = SmmCpuNone;\r
+      mSmmMpSyncData->SwitchBsp           = TRUE;\r
       mSmmMpSyncData->CandidateBsp[Index] = TRUE;\r
     }\r
   }\r
@@ -330,10 +334,10 @@ SmmCpuUpdate (
 EFI_STATUS\r
 EFIAPI\r
 SmmRegisterExceptionHandler (\r
-    IN EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
-    IN EFI_EXCEPTION_TYPE            ExceptionType,\r
-    IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
-    )\r
+  IN EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
+  IN EFI_EXCEPTION_TYPE            ExceptionType,\r
+  IN EFI_CPU_INTERRUPT_HANDLER     InterruptHandler\r
+  )\r
 {\r
   return RegisterCpuInterruptHandler (ExceptionType, InterruptHandler);\r
 }\r
@@ -352,7 +356,7 @@ InitializeSmmCpuServices (
   IN EFI_HANDLE  Handle\r
   )\r
 {\r
-  EFI_STATUS Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = gSmst->SmmInstallProtocolInterface (\r
                     &Handle,\r
@@ -363,4 +367,3 @@ InitializeSmmCpuServices (
   ASSERT_EFI_ERROR (Status);\r
   return Status;\r
 }\r
-\r
index 98b0feb42ca15af9e8ba27794f6fb3a46b3741c1..8847dbb8516c0b64b8c1c754ba945a0dbbecf013 100644 (file)
@@ -38,9 +38,9 @@ typedef enum {
 EFI_STATUS\r
 EFIAPI\r
 SmmGetProcessorInfo (\r
-  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,\r
-  IN       UINTN                        ProcessorNumber,\r
-  OUT      EFI_PROCESSOR_INFORMATION    *ProcessorInfoBuffer\r
+  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
+  IN       UINTN                         ProcessorNumber,\r
+  OUT      EFI_PROCESSOR_INFORMATION     *ProcessorInfoBuffer\r
   );\r
 \r
 /**\r
@@ -57,8 +57,8 @@ SmmGetProcessorInfo (
 EFI_STATUS\r
 EFIAPI\r
 SmmSwitchBsp (\r
-  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,\r
-  IN       UINTN                        ProcessorNumber\r
+  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
+  IN       UINTN                         ProcessorNumber\r
   );\r
 \r
 /**\r
@@ -115,8 +115,8 @@ SmmRemoveProcessor (
 EFI_STATUS\r
 EFIAPI\r
 SmmWhoAmI (\r
-  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL *This,\r
-  OUT      UINTN                        *ProcessorNumber\r
+  IN CONST EFI_SMM_CPU_SERVICE_PROTOCOL  *This,\r
+  OUT      UINTN                         *ProcessorNumber\r
   );\r
 \r
 /**\r
index 9c8e2d15ac46a9d2bf3e153d959273682db53b34..8ec8790c05b690a06ad163e8b568d5a4d1c44c45 100644 (file)
@@ -36,13 +36,13 @@ EnableCet (
 **/\r
 VOID\r
 GetPageTable (\r
-  OUT UINTN   *Base,\r
-  OUT BOOLEAN *FiveLevels OPTIONAL\r
+  OUT UINTN    *Base,\r
+  OUT BOOLEAN  *FiveLevels OPTIONAL\r
   )\r
 {\r
   *Base = ((mInternalCr3 == 0) ?\r
-            (AsmReadCr3 () & PAGING_4K_ADDRESS_MASK_64) :\r
-            mInternalCr3);\r
+           (AsmReadCr3 () & PAGING_4K_ADDRESS_MASK_64) :\r
+           mInternalCr3);\r
   if (FiveLevels != NULL) {\r
     *FiveLevels = FALSE;\r
   }\r
@@ -59,9 +59,9 @@ SmmInitPageTable (
   VOID\r
   )\r
 {\r
-  UINTN                             PageFaultHandlerHookAddress;\r
-  IA32_IDT_GATE_DESCRIPTOR          *IdtEntry;\r
-  EFI_STATUS                        Status;\r
+  UINTN                     PageFaultHandlerHookAddress;\r
+  IA32_IDT_GATE_DESCRIPTOR  *IdtEntry;\r
+  EFI_STATUS                Status;\r
 \r
   //\r
   // Initialize spin lock\r
@@ -72,18 +72,19 @@ SmmInitPageTable (
 \r
   if (FeaturePcdGet (PcdCpuSmmProfileEnable) ||\r
       HEAP_GUARD_NONSTOP_MODE ||\r
-      NULL_DETECTION_NONSTOP_MODE) {\r
+      NULL_DETECTION_NONSTOP_MODE)\r
+  {\r
     //\r
     // Set own Page Fault entry instead of the default one, because SMM Profile\r
     // feature depends on IRET instruction to do Single Step\r
     //\r
     PageFaultHandlerHookAddress = (UINTN)PageFaultIdtHandlerSmmProfile;\r
-    IdtEntry  = (IA32_IDT_GATE_DESCRIPTOR *) gcSmiIdtr.Base;\r
-    IdtEntry += EXCEPT_IA32_PAGE_FAULT;\r
-    IdtEntry->Bits.OffsetLow      = (UINT16)PageFaultHandlerHookAddress;\r
-    IdtEntry->Bits.Reserved_0     = 0;\r
-    IdtEntry->Bits.GateType       = IA32_IDT_GATE_TYPE_INTERRUPT_32;\r
-    IdtEntry->Bits.OffsetHigh     = (UINT16)(PageFaultHandlerHookAddress >> 16);\r
+    IdtEntry                    = (IA32_IDT_GATE_DESCRIPTOR *)gcSmiIdtr.Base;\r
+    IdtEntry                   += EXCEPT_IA32_PAGE_FAULT;\r
+    IdtEntry->Bits.OffsetLow    = (UINT16)PageFaultHandlerHookAddress;\r
+    IdtEntry->Bits.Reserved_0   = 0;\r
+    IdtEntry->Bits.GateType     = IA32_IDT_GATE_TYPE_INTERRUPT_32;\r
+    IdtEntry->Bits.OffsetHigh   = (UINT16)(PageFaultHandlerHookAddress >> 16);\r
   } else {\r
     //\r
     // Register SMM Page Fault Handler\r
@@ -98,6 +99,7 @@ SmmInitPageTable (
   if (FeaturePcdGet (PcdCpuSmmStackGuard)) {\r
     InitializeIDTSmmStackGuard ();\r
   }\r
+\r
   return Gen4GPageTable (TRUE);\r
 }\r
 \r
@@ -124,13 +126,13 @@ SmiDefaultPFHandler (
 VOID\r
 EFIAPI\r
 SmiPFHandler (\r
-  IN EFI_EXCEPTION_TYPE   InterruptType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  InterruptType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
-  UINTN             PFAddress;\r
-  UINTN             GuardPageAddress;\r
-  UINTN             CpuIndex;\r
+  UINTN  PFAddress;\r
+  UINTN  GuardPageAddress;\r
+  UINTN  CpuIndex;\r
 \r
   ASSERT (InterruptType == EXCEPT_IA32_PAGE_FAULT);\r
 \r
@@ -143,25 +145,27 @@ SmiPFHandler (
   // or SMM page protection violation.\r
   //\r
   if ((PFAddress >= mCpuHotPlugData.SmrrBase) &&\r
-      (PFAddress < (mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize))) {\r
+      (PFAddress < (mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize)))\r
+  {\r
     DumpCpuContext (InterruptType, SystemContext);\r
-    CpuIndex = GetCpuIndex ();\r
+    CpuIndex         = GetCpuIndex ();\r
     GuardPageAddress = (mSmmStackArrayBase + EFI_PAGE_SIZE + CpuIndex * mSmmStackSize);\r
     if ((FeaturePcdGet (PcdCpuSmmStackGuard)) &&\r
         (PFAddress >= GuardPageAddress) &&\r
-        (PFAddress < (GuardPageAddress + EFI_PAGE_SIZE))) {\r
+        (PFAddress < (GuardPageAddress + EFI_PAGE_SIZE)))\r
+    {\r
       DEBUG ((DEBUG_ERROR, "SMM stack overflow!\n"));\r
     } else {\r
       if ((SystemContext.SystemContextIa32->ExceptionData & IA32_PF_EC_ID) != 0) {\r
         DEBUG ((DEBUG_ERROR, "SMM exception at execution (0x%x)\n", PFAddress));\r
         DEBUG_CODE (\r
           DumpModuleInfoByIp (*(UINTN *)(UINTN)SystemContext.SystemContextIa32->Esp);\r
-        );\r
+          );\r
       } else {\r
         DEBUG ((DEBUG_ERROR, "SMM exception at access (0x%x)\n", PFAddress));\r
         DEBUG_CODE (\r
           DumpModuleInfoByIp ((UINTN)SystemContext.SystemContextIa32->Eip);\r
-        );\r
+          );\r
       }\r
 \r
       if (HEAP_GUARD_NONSTOP_MODE) {\r
@@ -169,6 +173,7 @@ SmiPFHandler (
         goto Exit;\r
       }\r
     }\r
+\r
     CpuDeadLoop ();\r
     goto Exit;\r
   }\r
@@ -177,13 +182,14 @@ SmiPFHandler (
   // If a page fault occurs in non-SMRAM range.\r
   //\r
   if ((PFAddress < mCpuHotPlugData.SmrrBase) ||\r
-      (PFAddress >= mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize)) {\r
+      (PFAddress >= mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize))\r
+  {\r
     if ((SystemContext.SystemContextIa32->ExceptionData & IA32_PF_EC_ID) != 0) {\r
       DumpCpuContext (InterruptType, SystemContext);\r
       DEBUG ((DEBUG_ERROR, "Code executed on IP(0x%x) out of SMM range after SMM is locked!\n", PFAddress));\r
       DEBUG_CODE (\r
         DumpModuleInfoByIp (*(UINTN *)(UINTN)SystemContext.SystemContextIa32->Esp);\r
-      );\r
+        );\r
       CpuDeadLoop ();\r
       goto Exit;\r
     }\r
@@ -191,13 +197,14 @@ SmiPFHandler (
     //\r
     // If NULL pointer was just accessed\r
     //\r
-    if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT1) != 0 &&\r
-        (PFAddress < EFI_PAGE_SIZE)) {\r
+    if (((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT1) != 0) &&\r
+        (PFAddress < EFI_PAGE_SIZE))\r
+    {\r
       DumpCpuContext (InterruptType, SystemContext);\r
       DEBUG ((DEBUG_ERROR, "!!! NULL pointer access !!!\n"));\r
       DEBUG_CODE (\r
         DumpModuleInfoByIp ((UINTN)SystemContext.SystemContextIa32->Eip);\r
-      );\r
+        );\r
 \r
       if (NULL_DETECTION_NONSTOP_MODE) {\r
         GuardPagePFHandler (SystemContext.SystemContextIa32->ExceptionData);\r
@@ -213,7 +220,7 @@ SmiPFHandler (
       DEBUG ((DEBUG_ERROR, "Access SMM communication forbidden address (0x%x)!\n", PFAddress));\r
       DEBUG_CODE (\r
         DumpModuleInfoByIp ((UINTN)SystemContext.SystemContextIa32->Eip);\r
-      );\r
+        );\r
       CpuDeadLoop ();\r
       goto Exit;\r
     }\r
@@ -241,15 +248,15 @@ SetPageTableAttributes (
   VOID\r
   )\r
 {\r
-  UINTN                 Index2;\r
-  UINTN                 Index3;\r
-  UINT64                *L1PageTable;\r
-  UINT64                *L2PageTable;\r
-  UINT64                *L3PageTable;\r
-  UINTN                 PageTableBase;\r
-  BOOLEAN               IsSplitted;\r
-  BOOLEAN               PageTableSplitted;\r
-  BOOLEAN               CetEnabled;\r
+  UINTN    Index2;\r
+  UINTN    Index3;\r
+  UINT64   *L1PageTable;\r
+  UINT64   *L2PageTable;\r
+  UINT64   *L3PageTable;\r
+  UINTN    PageTableBase;\r
+  BOOLEAN  IsSplitted;\r
+  BOOLEAN  PageTableSplitted;\r
+  BOOLEAN  CetEnabled;\r
 \r
   //\r
   // Don't mark page table to read-only if heap guard is enabled.\r
@@ -259,7 +266,7 @@ SetPageTableAttributes (
   //\r
   if ((PcdGet8 (PcdHeapGuardPropertyMask) & (BIT3 | BIT2)) != 0) {\r
     DEBUG ((DEBUG_INFO, "Don't mark page table to read-only as heap guard is enabled\n"));\r
-    return ;\r
+    return;\r
   }\r
 \r
   //\r
@@ -267,7 +274,7 @@ SetPageTableAttributes (
   //\r
   if (FeaturePcdGet (PcdCpuSmmProfileEnable)) {\r
     DEBUG ((DEBUG_INFO, "Don't mark page table to read-only as SMM profile is enabled\n"));\r
-    return ;\r
+    return;\r
   }\r
 \r
   DEBUG ((DEBUG_INFO, "SetPageTableAttributes\n"));\r
@@ -276,14 +283,15 @@ SetPageTableAttributes (
   // Disable write protection, because we need mark page table to be write protected.\r
   // We need *write* page table memory, to mark itself to be *read only*.\r
   //\r
-  CetEnabled = ((AsmReadCr4() & CR4_CET_ENABLE) != 0) ? TRUE : FALSE;\r
+  CetEnabled = ((AsmReadCr4 () & CR4_CET_ENABLE) != 0) ? TRUE : FALSE;\r
   if (CetEnabled) {\r
     //\r
     // CET must be disabled if WP is disabled.\r
     //\r
-    DisableCet();\r
+    DisableCet ();\r
   }\r
-  AsmWriteCr0 (AsmReadCr0() & ~CR0_WP);\r
+\r
+  AsmWriteCr0 (AsmReadCr0 () & ~CR0_WP);\r
 \r
   do {\r
     DEBUG ((DEBUG_INFO, "Start...\n"));\r
@@ -304,15 +312,17 @@ SetPageTableAttributes (
       SmmSetMemoryAttributesEx ((EFI_PHYSICAL_ADDRESS)(UINTN)L2PageTable, SIZE_4KB, EFI_MEMORY_RO, &IsSplitted);\r
       PageTableSplitted = (PageTableSplitted || IsSplitted);\r
 \r
-      for (Index2 = 0; Index2 < SIZE_4KB/sizeof(UINT64); Index2++) {\r
+      for (Index2 = 0; Index2 < SIZE_4KB/sizeof (UINT64); Index2++) {\r
         if ((L2PageTable[Index2] & IA32_PG_PS) != 0) {\r
           // 2M\r
           continue;\r
         }\r
+\r
         L1PageTable = (UINT64 *)(UINTN)(L2PageTable[Index2] & ~mAddressEncMask & PAGING_4K_ADDRESS_MASK_64);\r
         if (L1PageTable == NULL) {\r
           continue;\r
         }\r
+\r
         SmmSetMemoryAttributesEx ((EFI_PHYSICAL_ADDRESS)(UINTN)L1PageTable, SIZE_4KB, EFI_MEMORY_RO, &IsSplitted);\r
         PageTableSplitted = (PageTableSplitted || IsSplitted);\r
       }\r
@@ -322,15 +332,15 @@ SetPageTableAttributes (
   //\r
   // Enable write protection, after page table updated.\r
   //\r
-  AsmWriteCr0 (AsmReadCr0() | CR0_WP);\r
+  AsmWriteCr0 (AsmReadCr0 () | CR0_WP);\r
   if (CetEnabled) {\r
     //\r
     // re-enable CET.\r
     //\r
-    EnableCet();\r
+    EnableCet ();\r
   }\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -343,7 +353,7 @@ SaveCr2 (
   OUT UINTN  *Cr2\r
   )\r
 {\r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -356,7 +366,7 @@ RestoreCr2 (
   IN UINTN  Cr2\r
   )\r
 {\r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
index 31ee067ad612a60887974df9abdce7ed7c8db50e..a9fcc89dda550955669883be21a8b01ebac16727 100644 (file)
@@ -32,7 +32,7 @@ SemaphoreHook (
 \r
   mRebasedFlag = RebasedFlag;\r
 \r
-  CpuState = (SMRAM_SAVE_STATE_MAP *)(UINTN)(SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET);\r
+  CpuState                      = (SMRAM_SAVE_STATE_MAP *)(UINTN)(SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET);\r
   mSmmRelocationOriginalAddress = (UINTN)HookReturnFromSmm (\r
                                            CpuIndex,\r
                                            CpuState,\r
index ef277349d4ea557d24447096994c0e40f2a146c7..6c48a53f67dac55e06c5dc36abf1cb9756e7b345 100644 (file)
@@ -8,18 +8,18 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 \r
 #include "PiSmmCpuDxeSmm.h"\r
 \r
-extern UINT64 gTaskGateDescriptor;\r
+extern UINT64  gTaskGateDescriptor;\r
 \r
-EFI_PHYSICAL_ADDRESS                mGdtBuffer;\r
-UINTN                               mGdtBufferSize;\r
+EFI_PHYSICAL_ADDRESS  mGdtBuffer;\r
+UINTN                 mGdtBufferSize;\r
 \r
-extern BOOLEAN mCetSupported;\r
-extern UINTN mSmmShadowStackSize;\r
+extern BOOLEAN  mCetSupported;\r
+extern UINTN    mSmmShadowStackSize;\r
 \r
-X86_ASSEMBLY_PATCH_LABEL mPatchCetPl0Ssp;\r
-X86_ASSEMBLY_PATCH_LABEL mPatchCetInterruptSsp;\r
-UINT32 mCetPl0Ssp;\r
-UINT32 mCetInterruptSsp;\r
+X86_ASSEMBLY_PATCH_LABEL  mPatchCetPl0Ssp;\r
+X86_ASSEMBLY_PATCH_LABEL  mPatchCetInterruptSsp;\r
+UINT32                    mCetPl0Ssp;\r
+UINT32                    mCetInterruptSsp;\r
 \r
 /**\r
   Initialize IDT for SMM Stack Guard.\r
@@ -38,8 +38,8 @@ InitializeIDTSmmStackGuard (
   // is a Task Gate Descriptor so that when a Page Fault Exception occurs,\r
   // the processors can use a known good stack in case stack is ran out.\r
   //\r
-  IdtGate = (IA32_IDT_GATE_DESCRIPTOR *)gcSmiIdtr.Base;\r
-  IdtGate += EXCEPT_IA32_PAGE_FAULT;\r
+  IdtGate         = (IA32_IDT_GATE_DESCRIPTOR *)gcSmiIdtr.Base;\r
+  IdtGate        += EXCEPT_IA32_PAGE_FAULT;\r
   IdtGate->Uint64 = gTaskGateDescriptor;\r
 }\r
 \r
@@ -58,13 +58,13 @@ InitGdt (
   OUT UINTN  *GdtStepSize\r
   )\r
 {\r
-  UINTN                     Index;\r
-  IA32_SEGMENT_DESCRIPTOR   *GdtDescriptor;\r
-  UINTN                     TssBase;\r
-  UINTN                     GdtTssTableSize;\r
-  UINT8                     *GdtTssTables;\r
-  UINTN                     GdtTableStepSize;\r
-  UINTN                     InterruptShadowStack;\r
+  UINTN                    Index;\r
+  IA32_SEGMENT_DESCRIPTOR  *GdtDescriptor;\r
+  UINTN                    TssBase;\r
+  UINTN                    GdtTssTableSize;\r
+  UINT8                    *GdtTssTables;\r
+  UINTN                    GdtTableStepSize;\r
+  UINTN                    InterruptShadowStack;\r
 \r
   if (FeaturePcdGet (PcdCpuSmmStackGuard)) {\r
     //\r
@@ -79,46 +79,46 @@ InitGdt (
     gcSmiGdtr.Limit += (UINT16)(2 * sizeof (IA32_SEGMENT_DESCRIPTOR));\r
 \r
     GdtTssTableSize = (gcSmiGdtr.Limit + 1 + TSS_SIZE + EXCEPTION_TSS_SIZE + 7) & ~7; // 8 bytes aligned\r
-    mGdtBufferSize = GdtTssTableSize * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
+    mGdtBufferSize  = GdtTssTableSize * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
     //\r
     // IA32 Stack Guard need use task switch to switch stack that need\r
     // write GDT and TSS, so AllocateCodePages() could not be used here\r
     // as code pages will be set to RO.\r
     //\r
-    GdtTssTables = (UINT8*)AllocatePages (EFI_SIZE_TO_PAGES (mGdtBufferSize));\r
+    GdtTssTables = (UINT8 *)AllocatePages (EFI_SIZE_TO_PAGES (mGdtBufferSize));\r
     ASSERT (GdtTssTables != NULL);\r
-    mGdtBuffer = (UINTN)GdtTssTables;\r
+    mGdtBuffer       = (UINTN)GdtTssTables;\r
     GdtTableStepSize = GdtTssTableSize;\r
 \r
     for (Index = 0; Index < gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; Index++) {\r
-      CopyMem (GdtTssTables + GdtTableStepSize * Index, (VOID*)(UINTN)gcSmiGdtr.Base, gcSmiGdtr.Limit + 1 + TSS_SIZE + EXCEPTION_TSS_SIZE);\r
+      CopyMem (GdtTssTables + GdtTableStepSize * Index, (VOID *)(UINTN)gcSmiGdtr.Base, gcSmiGdtr.Limit + 1 + TSS_SIZE + EXCEPTION_TSS_SIZE);\r
       //\r
       // Fixup TSS descriptors\r
       //\r
-      TssBase = (UINTN)(GdtTssTables + GdtTableStepSize * Index + gcSmiGdtr.Limit + 1);\r
-      GdtDescriptor = (IA32_SEGMENT_DESCRIPTOR *)(TssBase) - 2;\r
-      GdtDescriptor->Bits.BaseLow = (UINT16)TssBase;\r
-      GdtDescriptor->Bits.BaseMid = (UINT8)(TssBase >> 16);\r
+      TssBase                      = (UINTN)(GdtTssTables + GdtTableStepSize * Index + gcSmiGdtr.Limit + 1);\r
+      GdtDescriptor                = (IA32_SEGMENT_DESCRIPTOR *)(TssBase) - 2;\r
+      GdtDescriptor->Bits.BaseLow  = (UINT16)TssBase;\r
+      GdtDescriptor->Bits.BaseMid  = (UINT8)(TssBase >> 16);\r
       GdtDescriptor->Bits.BaseHigh = (UINT8)(TssBase >> 24);\r
 \r
       TssBase += TSS_SIZE;\r
       GdtDescriptor++;\r
-      GdtDescriptor->Bits.BaseLow = (UINT16)TssBase;\r
-      GdtDescriptor->Bits.BaseMid = (UINT8)(TssBase >> 16);\r
+      GdtDescriptor->Bits.BaseLow  = (UINT16)TssBase;\r
+      GdtDescriptor->Bits.BaseMid  = (UINT8)(TssBase >> 16);\r
       GdtDescriptor->Bits.BaseHigh = (UINT8)(TssBase >> 24);\r
       //\r
       // Fixup TSS segments\r
       //\r
       // ESP as known good stack\r
       //\r
-      *(UINTN *)(TssBase + TSS_IA32_ESP_OFFSET) =  mSmmStackArrayBase + EFI_PAGE_SIZE + Index * mSmmStackSize;\r
+      *(UINTN *)(TssBase + TSS_IA32_ESP_OFFSET)  =  mSmmStackArrayBase + EFI_PAGE_SIZE + Index * mSmmStackSize;\r
       *(UINT32 *)(TssBase + TSS_IA32_CR3_OFFSET) = Cr3;\r
 \r
       //\r
       // Setup ShadowStack for stack switch\r
       //\r
       if ((PcdGet32 (PcdControlFlowEnforcementPropertyMask) != 0) && mCetSupported) {\r
-        InterruptShadowStack = (UINTN)(mSmmStackArrayBase + mSmmStackSize + EFI_PAGES_TO_SIZE (1) - sizeof(UINT64) + (mSmmStackSize + mSmmShadowStackSize) * Index);\r
+        InterruptShadowStack                       = (UINTN)(mSmmStackArrayBase + mSmmStackSize + EFI_PAGES_TO_SIZE (1) - sizeof (UINT64) + (mSmmStackSize + mSmmShadowStackSize) * Index);\r
         *(UINT32 *)(TssBase + TSS_IA32_SSP_OFFSET) = (UINT32)InterruptShadowStack;\r
       }\r
     }\r
@@ -127,14 +127,14 @@ InitGdt (
     // Just use original table, AllocatePage and copy them here to make sure GDTs are covered in page memory.\r
     //\r
     GdtTssTableSize = gcSmiGdtr.Limit + 1;\r
-    mGdtBufferSize = GdtTssTableSize * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
-    GdtTssTables = (UINT8*)AllocateCodePages (EFI_SIZE_TO_PAGES (mGdtBufferSize));\r
+    mGdtBufferSize  = GdtTssTableSize * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
+    GdtTssTables    = (UINT8 *)AllocateCodePages (EFI_SIZE_TO_PAGES (mGdtBufferSize));\r
     ASSERT (GdtTssTables != NULL);\r
-    mGdtBuffer = (UINTN)GdtTssTables;\r
+    mGdtBuffer       = (UINTN)GdtTssTables;\r
     GdtTableStepSize = GdtTssTableSize;\r
 \r
     for (Index = 0; Index < gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; Index++) {\r
-      CopyMem (GdtTssTables + GdtTableStepSize * Index, (VOID*)(UINTN)gcSmiGdtr.Base, gcSmiGdtr.Limit + 1);\r
+      CopyMem (GdtTssTables + GdtTableStepSize * Index, (VOID *)(UINTN)gcSmiGdtr.Base, gcSmiGdtr.Limit + 1);\r
     }\r
   }\r
 \r
@@ -181,24 +181,24 @@ InitShadowStack (
   IN VOID   *ShadowStack\r
   )\r
 {\r
-  UINTN       SmmShadowStackSize;\r
+  UINTN  SmmShadowStackSize;\r
 \r
   if ((PcdGet32 (PcdControlFlowEnforcementPropertyMask) != 0) && mCetSupported) {\r
     SmmShadowStackSize = EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmShadowStackSize)));\r
     if (FeaturePcdGet (PcdCpuSmmStackGuard)) {\r
       SmmShadowStackSize += EFI_PAGES_TO_SIZE (2);\r
     }\r
-    mCetPl0Ssp = (UINT32)((UINTN)ShadowStack + SmmShadowStackSize - sizeof(UINT64));\r
+\r
+    mCetPl0Ssp = (UINT32)((UINTN)ShadowStack + SmmShadowStackSize - sizeof (UINT64));\r
     PatchInstructionX86 (mPatchCetPl0Ssp, mCetPl0Ssp, 4);\r
     DEBUG ((DEBUG_INFO, "mCetPl0Ssp - 0x%x\n", mCetPl0Ssp));\r
     DEBUG ((DEBUG_INFO, "ShadowStack - 0x%x\n", ShadowStack));\r
     DEBUG ((DEBUG_INFO, "  SmmShadowStackSize - 0x%x\n", SmmShadowStackSize));\r
 \r
     if (FeaturePcdGet (PcdCpuSmmStackGuard)) {\r
-      mCetInterruptSsp = (UINT32)((UINTN)ShadowStack + EFI_PAGES_TO_SIZE(1) - sizeof(UINT64));\r
+      mCetInterruptSsp = (UINT32)((UINTN)ShadowStack + EFI_PAGES_TO_SIZE (1) - sizeof (UINT64));\r
       PatchInstructionX86 (mPatchCetInterruptSsp, mCetInterruptSsp, 4);\r
       DEBUG ((DEBUG_INFO, "mCetInterruptSsp - 0x%x\n", mCetInterruptSsp));\r
     }\r
   }\r
 }\r
-\r
index e83031fc018432fb2844736d3f55823385d1962c..bba4a6f058e20ed605b2dcb665744f359ec79896 100644 (file)
@@ -20,7 +20,7 @@ InitSmmS3Cr3 (
 {\r
   mSmmS3ResumeState->SmmS3Cr3 = Gen4GPageTable (TRUE);\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -49,11 +49,11 @@ InitPagesForPFHandler (
 **/\r
 VOID\r
 RestorePageTableAbove4G (\r
-  UINT64        *PageTable,\r
-  UINT64        PFAddress,\r
-  UINTN         CpuIndex,\r
-  UINTN         ErrorCode,\r
-  BOOLEAN       *IsValidPFAddress\r
+  UINT64   *PageTable,\r
+  UINT64   PFAddress,\r
+  UINTN    CpuIndex,\r
+  UINTN    ErrorCode,\r
+  BOOLEAN  *IsValidPFAddress\r
   )\r
 {\r
 }\r
@@ -67,7 +67,7 @@ RestorePageTableAbove4G (
 **/\r
 VOID\r
 ClearTrapFlag (\r
-  IN OUT EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN OUT EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   SystemContext.SystemContextIa32->Eflags &= (UINTN) ~BIT8;\r
index 533e8561b2255eb4dd3b4274874cecca05dad48e..6c95f2bb19f17fc06fc7d52b56a5ee204c5f40a3 100644 (file)
@@ -12,42 +12,42 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #pragma pack (1)\r
 \r
 typedef struct _MSR_DS_AREA_STRUCT {\r
-  UINT32  BTSBufferBase;\r
-  UINT32  BTSIndex;\r
-  UINT32  BTSAbsoluteMaximum;\r
-  UINT32  BTSInterruptThreshold;\r
-  UINT32  PEBSBufferBase;\r
-  UINT32  PEBSIndex;\r
-  UINT32  PEBSAbsoluteMaximum;\r
-  UINT32  PEBSInterruptThreshold;\r
-  UINT32  PEBSCounterReset[4];\r
-  UINT32  Reserved;\r
+  UINT32    BTSBufferBase;\r
+  UINT32    BTSIndex;\r
+  UINT32    BTSAbsoluteMaximum;\r
+  UINT32    BTSInterruptThreshold;\r
+  UINT32    PEBSBufferBase;\r
+  UINT32    PEBSIndex;\r
+  UINT32    PEBSAbsoluteMaximum;\r
+  UINT32    PEBSInterruptThreshold;\r
+  UINT32    PEBSCounterReset[4];\r
+  UINT32    Reserved;\r
 } MSR_DS_AREA_STRUCT;\r
 \r
 typedef struct _BRANCH_TRACE_RECORD {\r
-  UINT32  LastBranchFrom;\r
-  UINT32  LastBranchTo;\r
-  UINT32  Rsvd0 : 4;\r
-  UINT32  BranchPredicted : 1;\r
-  UINT32  Rsvd1 : 27;\r
+  UINT32    LastBranchFrom;\r
+  UINT32    LastBranchTo;\r
+  UINT32    Rsvd0           : 4;\r
+  UINT32    BranchPredicted : 1;\r
+  UINT32    Rsvd1           : 27;\r
 } BRANCH_TRACE_RECORD;\r
 \r
 typedef struct _PEBS_RECORD {\r
-  UINT32  Eflags;\r
-  UINT32  LinearIP;\r
-  UINT32  Eax;\r
-  UINT32  Ebx;\r
-  UINT32  Ecx;\r
-  UINT32  Edx;\r
-  UINT32  Esi;\r
-  UINT32  Edi;\r
-  UINT32  Ebp;\r
-  UINT32  Esp;\r
+  UINT32    Eflags;\r
+  UINT32    LinearIP;\r
+  UINT32    Eax;\r
+  UINT32    Ebx;\r
+  UINT32    Ecx;\r
+  UINT32    Edx;\r
+  UINT32    Esi;\r
+  UINT32    Edi;\r
+  UINT32    Ebp;\r
+  UINT32    Esp;\r
 } PEBS_RECORD;\r
 \r
 #pragma pack ()\r
 \r
-#define PHYSICAL_ADDRESS_MASK       ((1ull << 32) - SIZE_4KB)\r
+#define PHYSICAL_ADDRESS_MASK  ((1ull << 32) - SIZE_4KB)\r
 \r
 /**\r
   Update page table to map the memory correctly in order to make the instruction\r
@@ -63,11 +63,11 @@ typedef struct _PEBS_RECORD {
 **/\r
 VOID\r
 RestorePageTableAbove4G (\r
-  UINT64        *PageTable,\r
-  UINT64        PFAddress,\r
-  UINTN         CpuIndex,\r
-  UINTN         ErrorCode,\r
-  BOOLEAN       *IsValidPFAddress\r
+  UINT64   *PageTable,\r
+  UINT64   PFAddress,\r
+  UINTN    CpuIndex,\r
+  UINTN    ErrorCode,\r
+  BOOLEAN  *IsValidPFAddress\r
   );\r
 \r
 /**\r
index 48f9c330b8cf450b43cd14f9fb5e905b8eef3cf8..882dee4fe246697bc1ff6a8ae97cdefb7e8fc443 100644 (file)
@@ -13,18 +13,18 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 //\r
 // Slots for all MTRR( FIXED MTRR + VARIABLE MTRR + MTRR_LIB_IA32_MTRR_DEF_TYPE)\r
 //\r
-MTRR_SETTINGS                               gSmiMtrrs;\r
-UINT64                                      gPhyMask;\r
-SMM_DISPATCHER_MP_SYNC_DATA                 *mSmmMpSyncData = NULL;\r
-UINTN                                       mSmmMpSyncDataSize;\r
-SMM_CPU_SEMAPHORES                          mSmmCpuSemaphores;\r
-UINTN                                       mSemaphoreSize;\r
-SPIN_LOCK                                   *mPFLock = NULL;\r
-SMM_CPU_SYNC_MODE                           mCpuSmmSyncMode;\r
-BOOLEAN                                     mMachineCheckSupported = FALSE;\r
-MM_COMPLETION                               mSmmStartupThisApToken;\r
-\r
-extern UINTN mSmmShadowStackSize;\r
+MTRR_SETTINGS                gSmiMtrrs;\r
+UINT64                       gPhyMask;\r
+SMM_DISPATCHER_MP_SYNC_DATA  *mSmmMpSyncData = NULL;\r
+UINTN                        mSmmMpSyncDataSize;\r
+SMM_CPU_SEMAPHORES           mSmmCpuSemaphores;\r
+UINTN                        mSemaphoreSize;\r
+SPIN_LOCK                    *mPFLock = NULL;\r
+SMM_CPU_SYNC_MODE            mCpuSmmSyncMode;\r
+BOOLEAN                      mMachineCheckSupported = FALSE;\r
+MM_COMPLETION                mSmmStartupThisApToken;\r
+\r
+extern UINTN  mSmmShadowStackSize;\r
 \r
 /**\r
   Performs an atomic compare exchange operation to get semaphore.\r
@@ -38,27 +38,29 @@ extern UINTN mSmmShadowStackSize;
 **/\r
 UINT32\r
 WaitForSemaphore (\r
-  IN OUT  volatile UINT32           *Sem\r
+  IN OUT  volatile UINT32  *Sem\r
   )\r
 {\r
-  UINT32                            Value;\r
+  UINT32  Value;\r
 \r
-  for (;;) {\r
+  for ( ; ;) {\r
     Value = *Sem;\r
-    if (Value != 0 &&\r
-        InterlockedCompareExchange32 (\r
-          (UINT32*)Sem,\r
-          Value,\r
-          Value - 1\r
-          ) == Value) {\r
+    if ((Value != 0) &&\r
+        (InterlockedCompareExchange32 (\r
+           (UINT32 *)Sem,\r
+           Value,\r
+           Value - 1\r
+           ) == Value))\r
+    {\r
       break;\r
     }\r
+\r
     CpuPause ();\r
   }\r
+\r
   return Value - 1;\r
 }\r
 \r
-\r
 /**\r
   Performs an atomic compare exchange operation to release semaphore.\r
   The compare exchange operation must be performed using\r
@@ -71,19 +73,20 @@ WaitForSemaphore (
 **/\r
 UINT32\r
 ReleaseSemaphore (\r
-  IN OUT  volatile UINT32           *Sem\r
+  IN OUT  volatile UINT32  *Sem\r
   )\r
 {\r
-  UINT32                            Value;\r
+  UINT32  Value;\r
 \r
   do {\r
     Value = *Sem;\r
   } while (Value + 1 != 0 &&\r
            InterlockedCompareExchange32 (\r
-             (UINT32*)Sem,\r
+             (UINT32 *)Sem,\r
              Value,\r
              Value + 1\r
              ) != Value);\r
+\r
   return Value + 1;\r
 }\r
 \r
@@ -99,17 +102,19 @@ ReleaseSemaphore (
 **/\r
 UINT32\r
 LockdownSemaphore (\r
-  IN OUT  volatile UINT32           *Sem\r
+  IN OUT  volatile UINT32  *Sem\r
   )\r
 {\r
-  UINT32                            Value;\r
+  UINT32  Value;\r
 \r
   do {\r
     Value = *Sem;\r
   } while (InterlockedCompareExchange32 (\r
-             (UINT32*)Sem,\r
-             Value, (UINT32)-1\r
+             (UINT32 *)Sem,\r
+             Value,\r
+             (UINT32)-1\r
              ) != Value);\r
+\r
   return Value;\r
 }\r
 \r
@@ -121,10 +126,10 @@ LockdownSemaphore (
 **/\r
 VOID\r
 WaitForAllAPs (\r
-  IN      UINTN                     NumberOfAPs\r
+  IN      UINTN  NumberOfAPs\r
   )\r
 {\r
-  UINTN                             BspIndex;\r
+  UINTN  BspIndex;\r
 \r
   BspIndex = mSmmMpSyncData->BspIndex;\r
   while (NumberOfAPs-- > 0) {\r
@@ -142,7 +147,7 @@ ReleaseAllAPs (
   VOID\r
   )\r
 {\r
-  UINTN                             Index;\r
+  UINTN  Index;\r
 \r
   for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
     if (IsPresentAp (Index)) {\r
@@ -165,9 +170,9 @@ AllCpusInSmmWithExceptions (
   SMM_CPU_ARRIVAL_EXCEPTIONS  Exceptions\r
   )\r
 {\r
-  UINTN                             Index;\r
-  SMM_CPU_DATA_BLOCK                *CpuData;\r
-  EFI_PROCESSOR_INFORMATION         *ProcessorInfo;\r
+  UINTN                      Index;\r
+  SMM_CPU_DATA_BLOCK         *CpuData;\r
+  EFI_PROCESSOR_INFORMATION  *ProcessorInfo;\r
 \r
   ASSERT (*mSmmMpSyncData->Counter <= mNumberOfCpus);\r
 \r
@@ -175,24 +180,26 @@ AllCpusInSmmWithExceptions (
     return TRUE;\r
   }\r
 \r
-  CpuData = mSmmMpSyncData->CpuData;\r
+  CpuData       = mSmmMpSyncData->CpuData;\r
   ProcessorInfo = gSmmCpuPrivate->ProcessorInfo;\r
   for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
-    if (!(*(CpuData[Index].Present)) && ProcessorInfo[Index].ProcessorId != INVALID_APIC_ID) {\r
-      if (((Exceptions & ARRIVAL_EXCEPTION_DELAYED) != 0) && SmmCpuFeaturesGetSmmRegister (Index, SmmRegSmmDelayed) != 0) {\r
+    if (!(*(CpuData[Index].Present)) && (ProcessorInfo[Index].ProcessorId != INVALID_APIC_ID)) {\r
+      if (((Exceptions & ARRIVAL_EXCEPTION_DELAYED) != 0) && (SmmCpuFeaturesGetSmmRegister (Index, SmmRegSmmDelayed) != 0)) {\r
         continue;\r
       }\r
-      if (((Exceptions & ARRIVAL_EXCEPTION_BLOCKED) != 0) && SmmCpuFeaturesGetSmmRegister (Index, SmmRegSmmBlocked) != 0) {\r
+\r
+      if (((Exceptions & ARRIVAL_EXCEPTION_BLOCKED) != 0) && (SmmCpuFeaturesGetSmmRegister (Index, SmmRegSmmBlocked) != 0)) {\r
         continue;\r
       }\r
-      if (((Exceptions & ARRIVAL_EXCEPTION_SMI_DISABLED) != 0) && SmmCpuFeaturesGetSmmRegister (Index, SmmRegSmmEnable) != 0) {\r
+\r
+      if (((Exceptions & ARRIVAL_EXCEPTION_SMI_DISABLED) != 0) && (SmmCpuFeaturesGetSmmRegister (Index, SmmRegSmmEnable) != 0)) {\r
         continue;\r
       }\r
+\r
       return FALSE;\r
     }\r
   }\r
 \r
-\r
   return TRUE;\r
 }\r
 \r
@@ -223,7 +230,7 @@ IsLmceOsEnabled (
   }\r
 \r
   McgExtCtrl.Uint64 = AsmReadMsr64 (MSR_IA32_MCG_EXT_CTL);\r
-  return (BOOLEAN) (McgExtCtrl.Bits.LMCE_EN == 1);\r
+  return (BOOLEAN)(McgExtCtrl.Bits.LMCE_EN == 1);\r
 }\r
 \r
 /**\r
@@ -241,10 +248,10 @@ IsLmceSignaled (
   VOID\r
   )\r
 {\r
-  MSR_IA32_MCG_STATUS_REGISTER McgStatus;\r
+  MSR_IA32_MCG_STATUS_REGISTER  McgStatus;\r
 \r
   McgStatus.Uint64 = AsmReadMsr64 (MSR_IA32_MCG_STATUS);\r
-  return (BOOLEAN) (McgStatus.Bits.LMCE_S == 1);\r
+  return (BOOLEAN)(McgStatus.Bits.LMCE_S == 1);\r
 }\r
 \r
 /**\r
@@ -257,10 +264,10 @@ SmmWaitForApArrival (
   VOID\r
   )\r
 {\r
-  UINT64                            Timer;\r
-  UINTN                             Index;\r
-  BOOLEAN                           LmceEn;\r
-  BOOLEAN                           LmceSignal;\r
+  UINT64   Timer;\r
+  UINTN    Index;\r
+  BOOLEAN  LmceEn;\r
+  BOOLEAN  LmceSignal;\r
 \r
   ASSERT (*mSmmMpSyncData->Counter <= mNumberOfCpus);\r
 \r
@@ -268,7 +275,7 @@ SmmWaitForApArrival (
   LmceSignal = FALSE;\r
   if (mMachineCheckSupported) {\r
     LmceEn     = IsLmceOsEnabled ();\r
-    LmceSignal = IsLmceSignaled();\r
+    LmceSignal = IsLmceSignaled ();\r
   }\r
 \r
   //\r
@@ -287,8 +294,9 @@ SmmWaitForApArrival (
   //\r
   for (Timer = StartSyncTimer ();\r
        !IsSyncTimerTimeout (Timer) && !(LmceEn && LmceSignal) &&\r
-       !AllCpusInSmmWithExceptions (ARRIVAL_EXCEPTION_BLOCKED | ARRIVAL_EXCEPTION_SMI_DISABLED );\r
-       ) {\r
+       !AllCpusInSmmWithExceptions (ARRIVAL_EXCEPTION_BLOCKED | ARRIVAL_EXCEPTION_SMI_DISABLED);\r
+       )\r
+  {\r
     CpuPause ();\r
   }\r
 \r
@@ -313,7 +321,7 @@ SmmWaitForApArrival (
     // Send SMI IPIs to bring outside processors in\r
     //\r
     for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
-      if (!(*(mSmmMpSyncData->CpuData[Index].Present)) && gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId != INVALID_APIC_ID) {\r
+      if (!(*(mSmmMpSyncData->CpuData[Index].Present)) && (gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId != INVALID_APIC_ID)) {\r
         SendSmiIpi ((UINT32)gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId);\r
       }\r
     }\r
@@ -323,8 +331,9 @@ SmmWaitForApArrival (
     //\r
     for (Timer = StartSyncTimer ();\r
          !IsSyncTimerTimeout (Timer) &&\r
-         !AllCpusInSmmWithExceptions (ARRIVAL_EXCEPTION_BLOCKED | ARRIVAL_EXCEPTION_SMI_DISABLED );\r
-         ) {\r
+         !AllCpusInSmmWithExceptions (ARRIVAL_EXCEPTION_BLOCKED | ARRIVAL_EXCEPTION_SMI_DISABLED);\r
+         )\r
+    {\r
       CpuPause ();\r
     }\r
   }\r
@@ -332,7 +341,6 @@ SmmWaitForApArrival (
   return;\r
 }\r
 \r
-\r
 /**\r
   Replace OS MTRR's with SMI MTRR's.\r
 \r
@@ -341,7 +349,7 @@ SmmWaitForApArrival (
 **/\r
 VOID\r
 ReplaceOSMtrrs (\r
-  IN      UINTN                     CpuIndex\r
+  IN      UINTN  CpuIndex\r
   )\r
 {\r
   SmmCpuFeaturesDisableSmrr ();\r
@@ -363,25 +371,25 @@ ReplaceOSMtrrs (
 **/\r
 BOOLEAN\r
 WaitForAllAPsNotBusy (\r
-  IN BOOLEAN                        BlockMode\r
+  IN BOOLEAN  BlockMode\r
   )\r
 {\r
-  UINTN                             Index;\r
+  UINTN  Index;\r
 \r
   for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
     //\r
     // Ignore BSP and APs which not call in SMM.\r
     //\r
-    if (!IsPresentAp(Index)) {\r
+    if (!IsPresentAp (Index)) {\r
       continue;\r
     }\r
 \r
     if (BlockMode) {\r
-      AcquireSpinLock(mSmmMpSyncData->CpuData[Index].Busy);\r
-      ReleaseSpinLock(mSmmMpSyncData->CpuData[Index].Busy);\r
+      AcquireSpinLock (mSmmMpSyncData->CpuData[Index].Busy);\r
+      ReleaseSpinLock (mSmmMpSyncData->CpuData[Index].Busy);\r
     } else {\r
       if (AcquireSpinLockOrFail (mSmmMpSyncData->CpuData[Index].Busy)) {\r
-        ReleaseSpinLock(mSmmMpSyncData->CpuData[Index].Busy);\r
+        ReleaseSpinLock (mSmmMpSyncData->CpuData[Index].Busy);\r
       } else {\r
         return FALSE;\r
       }\r
@@ -402,11 +410,11 @@ WaitForAllAPsNotBusy (
 **/\r
 BOOLEAN\r
 IsPresentAp (\r
-  IN UINTN        CpuIndex\r
+  IN UINTN  CpuIndex\r
   )\r
 {\r
   return ((CpuIndex != gSmmCpuPrivate->SmmCoreEntryContext.CurrentlyExecutingCpu) &&\r
-    *(mSmmMpSyncData->CpuData[CpuIndex].Present));\r
+          *(mSmmMpSyncData->CpuData[CpuIndex].Present));\r
 }\r
 \r
 /**\r
@@ -417,10 +425,10 @@ IsPresentAp (
 **/\r
 VOID\r
 ReleaseToken (\r
-  IN UINTN                  CpuIndex\r
+  IN UINTN  CpuIndex\r
   )\r
 {\r
-  PROCEDURE_TOKEN                         *Token;\r
+  PROCEDURE_TOKEN  *Token;\r
 \r
   Token = mSmmMpSyncData->CpuData[CpuIndex].Token;\r
 \r
@@ -455,15 +463,15 @@ ResetTokens (
 **/\r
 VOID\r
 BSPHandler (\r
-  IN      UINTN                     CpuIndex,\r
-  IN      SMM_CPU_SYNC_MODE         SyncMode\r
+  IN      UINTN              CpuIndex,\r
+  IN      SMM_CPU_SYNC_MODE  SyncMode\r
   )\r
 {\r
-  UINTN                             Index;\r
-  MTRR_SETTINGS                     Mtrrs;\r
-  UINTN                             ApCount;\r
-  BOOLEAN                           ClearTopLevelSmiResult;\r
-  UINTN                             PresentCount;\r
+  UINTN          Index;\r
+  MTRR_SETTINGS  Mtrrs;\r
+  UINTN          ApCount;\r
+  BOOLEAN        ClearTopLevelSmiResult;\r
+  UINTN          PresentCount;\r
 \r
   ASSERT (CpuIndex == mSmmMpSyncData->BspIndex);\r
   ApCount = 0;\r
@@ -488,7 +496,7 @@ BSPHandler (
   // we cleared it after SMI handlers are run, we would miss the SMI that\r
   // occurs after SMI handlers are done and before SMI status bit is cleared.\r
   //\r
-  ClearTopLevelSmiResult = ClearTopLevelSmiStatus();\r
+  ClearTopLevelSmiResult = ClearTopLevelSmiStatus ();\r
   ASSERT (ClearTopLevelSmiResult == TRUE);\r
 \r
   //\r
@@ -499,25 +507,24 @@ BSPHandler (
   //\r
   // If Traditional Sync Mode or need to configure MTRRs: gather all available APs.\r
   //\r
-  if (SyncMode == SmmCpuSyncModeTradition || SmmCpuFeaturesNeedConfigureMtrrs()) {\r
-\r
+  if ((SyncMode == SmmCpuSyncModeTradition) || SmmCpuFeaturesNeedConfigureMtrrs ()) {\r
     //\r
     // Wait for APs to arrive\r
     //\r
-    SmmWaitForApArrival();\r
+    SmmWaitForApArrival ();\r
 \r
     //\r
     // Lock the counter down and retrieve the number of APs\r
     //\r
     *mSmmMpSyncData->AllCpusInSync = TRUE;\r
-    ApCount = LockdownSemaphore (mSmmMpSyncData->Counter) - 1;\r
+    ApCount                        = LockdownSemaphore (mSmmMpSyncData->Counter) - 1;\r
 \r
     //\r
     // Wait for all APs to get ready for programming MTRRs\r
     //\r
     WaitForAllAPs (ApCount);\r
 \r
-    if (SmmCpuFeaturesNeedConfigureMtrrs()) {\r
+    if (SmmCpuFeaturesNeedConfigureMtrrs ()) {\r
       //\r
       // Signal all APs it's time for backup MTRRs\r
       //\r
@@ -531,7 +538,7 @@ BSPHandler (
       // We do the backup first and then set MTRR to avoid race condition for threads\r
       // in the same core.\r
       //\r
-      MtrrGetAllMtrrs(&Mtrrs);\r
+      MtrrGetAllMtrrs (&Mtrrs);\r
 \r
       //\r
       // Wait for all APs to complete their MTRR saving\r
@@ -587,13 +594,12 @@ BSPHandler (
   // make those APs to exit SMI synchronously. APs which arrive later will be excluded and\r
   // will run through freely.\r
   //\r
-  if (SyncMode != SmmCpuSyncModeTradition && !SmmCpuFeaturesNeedConfigureMtrrs()) {\r
-\r
+  if ((SyncMode != SmmCpuSyncModeTradition) && !SmmCpuFeaturesNeedConfigureMtrrs ()) {\r
     //\r
     // Lock the counter down and retrieve the number of APs\r
     //\r
     *mSmmMpSyncData->AllCpusInSync = TRUE;\r
-    ApCount = LockdownSemaphore (mSmmMpSyncData->Counter) - 1;\r
+    ApCount                        = LockdownSemaphore (mSmmMpSyncData->Counter) - 1;\r
     //\r
     // Make sure all APs have their Present flag set\r
     //\r
@@ -601,9 +607,10 @@ BSPHandler (
       PresentCount = 0;\r
       for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
         if (*(mSmmMpSyncData->CpuData[Index].Present)) {\r
-          PresentCount ++;\r
+          PresentCount++;\r
         }\r
       }\r
+\r
       if (PresentCount > ApCount) {\r
         break;\r
       }\r
@@ -621,7 +628,7 @@ BSPHandler (
   //\r
   WaitForAllAPs (ApCount);\r
 \r
-  if (SmmCpuFeaturesNeedConfigureMtrrs()) {\r
+  if (SmmCpuFeaturesNeedConfigureMtrrs ()) {\r
     //\r
     // Signal APs to restore MTRRs\r
     //\r
@@ -631,7 +638,7 @@ BSPHandler (
     // Restore OS MTRRs\r
     //\r
     SmmCpuFeaturesReenableSmrr ();\r
-    MtrrSetAllMtrrs(&Mtrrs);\r
+    MtrrSetAllMtrrs (&Mtrrs);\r
 \r
     //\r
     // Wait for all APs to complete MTRR programming\r
@@ -681,7 +688,7 @@ BSPHandler (
   //\r
   // Allow APs to check in from this point on\r
   //\r
-  *mSmmMpSyncData->Counter = 0;\r
+  *mSmmMpSyncData->Counter       = 0;\r
   *mSmmMpSyncData->AllCpusInSync = FALSE;\r
 }\r
 \r
@@ -695,15 +702,15 @@ BSPHandler (
 **/\r
 VOID\r
 APHandler (\r
-  IN      UINTN                     CpuIndex,\r
-  IN      BOOLEAN                   ValidSmi,\r
-  IN      SMM_CPU_SYNC_MODE         SyncMode\r
+  IN      UINTN              CpuIndex,\r
+  IN      BOOLEAN            ValidSmi,\r
+  IN      SMM_CPU_SYNC_MODE  SyncMode\r
   )\r
 {\r
-  UINT64                            Timer;\r
-  UINTN                             BspIndex;\r
-  MTRR_SETTINGS                     Mtrrs;\r
-  EFI_STATUS                        ProcedureStatus;\r
+  UINT64         Timer;\r
+  UINTN          BspIndex;\r
+  MTRR_SETTINGS  Mtrrs;\r
+  EFI_STATUS     ProcedureStatus;\r
 \r
   //\r
   // Timeout BSP\r
@@ -711,7 +718,8 @@ APHandler (
   for (Timer = StartSyncTimer ();\r
        !IsSyncTimerTimeout (Timer) &&\r
        !(*mSmmMpSyncData->InsideSmm);\r
-       ) {\r
+       )\r
+  {\r
     CpuPause ();\r
   }\r
 \r
@@ -737,7 +745,8 @@ APHandler (
       for (Timer = StartSyncTimer ();\r
            !IsSyncTimerTimeout (Timer) &&\r
            !(*mSmmMpSyncData->InsideSmm);\r
-           ) {\r
+           )\r
+      {\r
         CpuPause ();\r
       }\r
 \r
@@ -768,14 +777,14 @@ APHandler (
   //\r
   *(mSmmMpSyncData->CpuData[CpuIndex].Present) = TRUE;\r
 \r
-  if (SyncMode == SmmCpuSyncModeTradition || SmmCpuFeaturesNeedConfigureMtrrs()) {\r
+  if ((SyncMode == SmmCpuSyncModeTradition) || SmmCpuFeaturesNeedConfigureMtrrs ()) {\r
     //\r
     // Notify BSP of arrival at this point\r
     //\r
     ReleaseSemaphore (mSmmMpSyncData->CpuData[BspIndex].Run);\r
   }\r
 \r
-  if (SmmCpuFeaturesNeedConfigureMtrrs()) {\r
+  if (SmmCpuFeaturesNeedConfigureMtrrs ()) {\r
     //\r
     // Wait for the signal from BSP to backup MTRRs\r
     //\r
@@ -784,7 +793,7 @@ APHandler (
     //\r
     // Backup OS MTRRs\r
     //\r
-    MtrrGetAllMtrrs(&Mtrrs);\r
+    MtrrGetAllMtrrs (&Mtrrs);\r
 \r
     //\r
     // Signal BSP the completion of this AP\r
@@ -830,9 +839,9 @@ APHandler (
     //\r
     // Invoke the scheduled procedure\r
     //\r
-    ProcedureStatus = (*mSmmMpSyncData->CpuData[CpuIndex].Procedure) (\r
-                          (VOID*)mSmmMpSyncData->CpuData[CpuIndex].Parameter\r
-                          );\r
+    ProcedureStatus = (*mSmmMpSyncData->CpuData[CpuIndex].Procedure)(\r
+         (VOID *)mSmmMpSyncData->CpuData[CpuIndex].Parameter\r
+  );\r
     if (mSmmMpSyncData->CpuData[CpuIndex].Status != NULL) {\r
       *mSmmMpSyncData->CpuData[CpuIndex].Status = ProcedureStatus;\r
     }\r
@@ -847,7 +856,7 @@ APHandler (
     ReleaseSpinLock (mSmmMpSyncData->CpuData[CpuIndex].Busy);\r
   }\r
 \r
-  if (SmmCpuFeaturesNeedConfigureMtrrs()) {\r
+  if (SmmCpuFeaturesNeedConfigureMtrrs ()) {\r
     //\r
     // Notify BSP the readiness of this AP to program MTRRs\r
     //\r
@@ -862,7 +871,7 @@ APHandler (
     // Restore OS MTRRs\r
     //\r
     SmmCpuFeaturesReenableSmrr ();\r
-    MtrrSetAllMtrrs(&Mtrrs);\r
+    MtrrSetAllMtrrs (&Mtrrs);\r
   }\r
 \r
   //\r
@@ -884,7 +893,6 @@ APHandler (
   // Notify BSP the readiness of this AP to exit SMM\r
   //\r
   ReleaseSemaphore (mSmmMpSyncData->CpuData[BspIndex].Run);\r
-\r
 }\r
 \r
 /**\r
@@ -896,7 +904,7 @@ APHandler (
 **/\r
 UINT32\r
 Gen4GPageTable (\r
-  IN      BOOLEAN                   Is32BitPageTable\r
+  IN      BOOLEAN  Is32BitPageTable\r
   )\r
 {\r
   VOID    *PageTable;\r
@@ -911,9 +919,9 @@ Gen4GPageTable (
   UINTN   PageIndex;\r
   UINTN   PageAddress;\r
 \r
-  Low2MBoundary = 0;\r
+  Low2MBoundary  = 0;\r
   High2MBoundary = 0;\r
-  PagesNeeded = 0;\r
+  PagesNeeded    = 0;\r
   if (FeaturePcdGet (PcdCpuSmmStackGuard)) {\r
     //\r
     // Add one more page for known good stack, then find the lower 2MB aligned address.\r
@@ -924,8 +932,9 @@ Gen4GPageTable (
     // then find the lower 2MB aligned address.\r
     //\r
     High2MBoundary = (mSmmStackArrayEnd - mSmmStackSize - mSmmShadowStackSize + EFI_PAGE_SIZE * 2) & ~(SIZE_2MB-1);\r
-    PagesNeeded = ((High2MBoundary - Low2MBoundary) / SIZE_2MB) + 1;\r
+    PagesNeeded    = ((High2MBoundary - Low2MBoundary) / SIZE_2MB) + 1;\r
   }\r
+\r
   //\r
   // Allocate the page table\r
   //\r
@@ -933,7 +942,7 @@ Gen4GPageTable (
   ASSERT (PageTable != NULL);\r
 \r
   PageTable = (VOID *)((UINTN)PageTable);\r
-  Pte = (UINT64*)PageTable;\r
+  Pte       = (UINT64 *)PageTable;\r
 \r
   //\r
   // Zero out all page table entries first\r
@@ -945,8 +954,9 @@ Gen4GPageTable (
   //\r
   for (Index = 0; Index < 4; Index++) {\r
     Pte[Index] = ((UINTN)PageTable + EFI_PAGE_SIZE * (Index + 1)) | mAddressEncMask |\r
-                   (Is32BitPageTable ? IA32_PAE_PDPTE_ATTRIBUTE_BITS : PAGE_ATTRIBUTE_BITS);\r
+                 (Is32BitPageTable ? IA32_PAE_PDPTE_ATTRIBUTE_BITS : PAGE_ATTRIBUTE_BITS);\r
   }\r
+\r
   Pte += EFI_PAGE_SIZE / sizeof (*Pte);\r
 \r
   //\r
@@ -956,17 +966,17 @@ Gen4GPageTable (
     Pte[Index] = (Index << 21) | mAddressEncMask | IA32_PG_PS | PAGE_ATTRIBUTE_BITS;\r
   }\r
 \r
-  Pdpte = (UINT64*)PageTable;\r
+  Pdpte = (UINT64 *)PageTable;\r
   if (FeaturePcdGet (PcdCpuSmmStackGuard)) {\r
-    Pages = (UINTN)PageTable + EFI_PAGES_TO_SIZE (5);\r
+    Pages     = (UINTN)PageTable + EFI_PAGES_TO_SIZE (5);\r
     GuardPage = mSmmStackArrayBase + EFI_PAGE_SIZE;\r
     for (PageIndex = Low2MBoundary; PageIndex <= High2MBoundary; PageIndex += SIZE_2MB) {\r
-      Pte = (UINT64*)(UINTN)(Pdpte[BitFieldRead32 ((UINT32)PageIndex, 30, 31)] & ~mAddressEncMask & ~(EFI_PAGE_SIZE - 1));\r
+      Pte                                             = (UINT64 *)(UINTN)(Pdpte[BitFieldRead32 ((UINT32)PageIndex, 30, 31)] & ~mAddressEncMask & ~(EFI_PAGE_SIZE - 1));\r
       Pte[BitFieldRead32 ((UINT32)PageIndex, 21, 29)] = (UINT64)Pages | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
       //\r
       // Fill in Page Table Entries\r
       //\r
-      Pte = (UINT64*)Pages;\r
+      Pte         = (UINT64 *)Pages;\r
       PageAddress = PageIndex;\r
       for (Index = 0; Index < EFI_PAGE_SIZE / sizeof (*Pte); Index++) {\r
         if (PageAddress == GuardPage) {\r
@@ -981,17 +991,19 @@ Gen4GPageTable (
         } else {\r
           Pte[Index] = PageAddress | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
         }\r
-        PageAddress+= EFI_PAGE_SIZE;\r
+\r
+        PageAddress += EFI_PAGE_SIZE;\r
       }\r
+\r
       Pages += EFI_PAGE_SIZE;\r
     }\r
   }\r
 \r
   if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT1) != 0) {\r
-    Pte = (UINT64*)(UINTN)(Pdpte[0] & ~mAddressEncMask & ~(EFI_PAGE_SIZE - 1));\r
+    Pte = (UINT64 *)(UINTN)(Pdpte[0] & ~mAddressEncMask & ~(EFI_PAGE_SIZE - 1));\r
     if ((Pte[0] & IA32_PG_PS) == 0) {\r
       // 4K-page entries are already mapped. Just hide the first one anyway.\r
-      Pte = (UINT64*)(UINTN)(Pte[0] & ~mAddressEncMask & ~(EFI_PAGE_SIZE - 1));\r
+      Pte     = (UINT64 *)(UINTN)(Pte[0] & ~mAddressEncMask & ~(EFI_PAGE_SIZE - 1));\r
       Pte[0] &= ~(UINT64)IA32_PG_P; // Hide page 0\r
     } else {\r
       // Create 4K-page entries\r
@@ -1000,12 +1012,12 @@ Gen4GPageTable (
 \r
       Pte[0] = (UINT64)(Pages | mAddressEncMask | PAGE_ATTRIBUTE_BITS);\r
 \r
-      Pte = (UINT64*)Pages;\r
+      Pte         = (UINT64 *)Pages;\r
       PageAddress = 0;\r
-      Pte[0] = PageAddress | mAddressEncMask; // Hide page 0 but present left\r
+      Pte[0]      = PageAddress | mAddressEncMask; // Hide page 0 but present left\r
       for (Index = 1; Index < EFI_PAGE_SIZE / sizeof (*Pte); Index++) {\r
         PageAddress += EFI_PAGE_SIZE;\r
-        Pte[Index] = PageAddress | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
+        Pte[Index]   = PageAddress | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
       }\r
     }\r
   }\r
@@ -1024,11 +1036,11 @@ Gen4GPageTable (
 **/\r
 BOOLEAN\r
 IsTokenInUse (\r
-  IN SPIN_LOCK           *Token\r
+  IN SPIN_LOCK  *Token\r
   )\r
 {\r
-  LIST_ENTRY        *Link;\r
-  PROCEDURE_TOKEN   *ProcToken;\r
+  LIST_ENTRY       *Link;\r
+  PROCEDURE_TOKEN  *ProcToken;\r
 \r
   if (Token == NULL) {\r
     return FALSE;\r
@@ -1061,12 +1073,12 @@ AllocateTokenBuffer (
   VOID\r
   )\r
 {\r
-  UINTN               SpinLockSize;\r
-  UINT32              TokenCountPerChunk;\r
-  UINTN               Index;\r
-  SPIN_LOCK           *SpinLock;\r
-  UINT8               *SpinLockBuffer;\r
-  PROCEDURE_TOKEN     *ProcTokens;\r
+  UINTN            SpinLockSize;\r
+  UINT32           TokenCountPerChunk;\r
+  UINTN            Index;\r
+  SPIN_LOCK        *SpinLock;\r
+  UINT8            *SpinLockBuffer;\r
+  PROCEDURE_TOKEN  *ProcTokens;\r
 \r
   SpinLockSize = GetSpinLockProperties ();\r
 \r
@@ -1076,6 +1088,7 @@ AllocateTokenBuffer (
     DEBUG ((DEBUG_ERROR, "PcdCpuSmmMpTokenCountPerChunk should not be Zero!\n"));\r
     CpuDeadLoop ();\r
   }\r
+\r
   DEBUG ((DEBUG_INFO, "CpuSmm: SpinLock Size = 0x%x, PcdCpuSmmMpTokenCountPerChunk = 0x%x\n", SpinLockSize, TokenCountPerChunk));\r
 \r
   //\r
@@ -1113,7 +1126,7 @@ AllocateTokenBuffer (
 **/\r
 PROCEDURE_TOKEN *\r
 GetFreeToken (\r
-  IN UINT32       RunningApsCount\r
+  IN UINT32  RunningApsCount\r
   )\r
 {\r
   PROCEDURE_TOKEN  *NewToken;\r
@@ -1125,7 +1138,8 @@ GetFreeToken (
   if (gSmmCpuPrivate->FirstFreeToken == &gSmmCpuPrivate->TokenList) {\r
     gSmmCpuPrivate->FirstFreeToken = AllocateTokenBuffer ();\r
   }\r
-  NewToken = PROCEDURE_TOKEN_FROM_LINK (gSmmCpuPrivate->FirstFreeToken);\r
+\r
+  NewToken                       = PROCEDURE_TOKEN_FROM_LINK (gSmmCpuPrivate->FirstFreeToken);\r
   gSmmCpuPrivate->FirstFreeToken = GetNextNode (&gSmmCpuPrivate->TokenList, gSmmCpuPrivate->FirstFreeToken);\r
 \r
   NewToken->RunningApCount = RunningApsCount;\r
@@ -1148,7 +1162,7 @@ GetFreeToken (
 **/\r
 EFI_STATUS\r
 IsApReady (\r
-  IN SPIN_LOCK          *Token\r
+  IN SPIN_LOCK  *Token\r
   )\r
 {\r
   if (AcquireSpinLockOrFail (Token)) {\r
@@ -1196,42 +1210,50 @@ IsApReady (
 **/\r
 EFI_STATUS\r
 InternalSmmStartupThisAp (\r
-  IN      EFI_AP_PROCEDURE2              Procedure,\r
-  IN      UINTN                          CpuIndex,\r
-  IN OUT  VOID                           *ProcArguments OPTIONAL,\r
-  IN      MM_COMPLETION                  *Token,\r
-  IN      UINTN                          TimeoutInMicroseconds,\r
-  IN OUT  EFI_STATUS                     *CpuStatus\r
+  IN      EFI_AP_PROCEDURE2  Procedure,\r
+  IN      UINTN              CpuIndex,\r
+  IN OUT  VOID               *ProcArguments OPTIONAL,\r
+  IN      MM_COMPLETION      *Token,\r
+  IN      UINTN              TimeoutInMicroseconds,\r
+  IN OUT  EFI_STATUS         *CpuStatus\r
   )\r
 {\r
-  PROCEDURE_TOKEN    *ProcToken;\r
+  PROCEDURE_TOKEN  *ProcToken;\r
 \r
   if (CpuIndex >= gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus) {\r
-    DEBUG((DEBUG_ERROR, "CpuIndex(%d) >= gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus(%d)\n", CpuIndex, gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus));\r
+    DEBUG ((DEBUG_ERROR, "CpuIndex(%d) >= gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus(%d)\n", CpuIndex, gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus));\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (CpuIndex == gSmmCpuPrivate->SmmCoreEntryContext.CurrentlyExecutingCpu) {\r
-    DEBUG((DEBUG_ERROR, "CpuIndex(%d) == gSmmCpuPrivate->SmmCoreEntryContext.CurrentlyExecutingCpu\n", CpuIndex));\r
+    DEBUG ((DEBUG_ERROR, "CpuIndex(%d) == gSmmCpuPrivate->SmmCoreEntryContext.CurrentlyExecutingCpu\n", CpuIndex));\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (gSmmCpuPrivate->ProcessorInfo[CpuIndex].ProcessorId == INVALID_APIC_ID) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (!(*(mSmmMpSyncData->CpuData[CpuIndex].Present))) {\r
     if (mSmmMpSyncData->EffectiveSyncMode == SmmCpuSyncModeTradition) {\r
-      DEBUG((DEBUG_ERROR, "!mSmmMpSyncData->CpuData[%d].Present\n", CpuIndex));\r
+      DEBUG ((DEBUG_ERROR, "!mSmmMpSyncData->CpuData[%d].Present\n", CpuIndex));\r
     }\r
+\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (gSmmCpuPrivate->Operation[CpuIndex] == SmmCpuRemove) {\r
     if (!FeaturePcdGet (PcdCpuHotPlugSupport)) {\r
-      DEBUG((DEBUG_ERROR, "gSmmCpuPrivate->Operation[%d] == SmmCpuRemove\n", CpuIndex));\r
+      DEBUG ((DEBUG_ERROR, "gSmmCpuPrivate->Operation[%d] == SmmCpuRemove\n", CpuIndex));\r
     }\r
+\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if ((TimeoutInMicroseconds != 0) && ((mSmmMp.Attributes & EFI_MM_MP_TIMEOUT_SUPPORTED) == 0)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (Procedure == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -1257,12 +1279,13 @@ InternalSmmStartupThisAp (
       // 2. Get a free token from the token buffer.\r
       // 3. Call ReleaseToken() in APHandler().\r
       //\r
-      ProcToken = GetFreeToken (1);\r
+      ProcToken                               = GetFreeToken (1);\r
       mSmmMpSyncData->CpuData[CpuIndex].Token = ProcToken;\r
-      *Token = (MM_COMPLETION)ProcToken->SpinLock;\r
+      *Token                                  = (MM_COMPLETION)ProcToken->SpinLock;\r
     }\r
   }\r
-  mSmmMpSyncData->CpuData[CpuIndex].Status    = CpuStatus;\r
+\r
+  mSmmMpSyncData->CpuData[CpuIndex].Status = CpuStatus;\r
   if (mSmmMpSyncData->CpuData[CpuIndex].Status != NULL) {\r
     *mSmmMpSyncData->CpuData[CpuIndex].Status = EFI_NOT_READY;\r
   }\r
@@ -1309,20 +1332,21 @@ InternalSmmStartupThisAp (
 **/\r
 EFI_STATUS\r
 InternalSmmStartupAllAPs (\r
-  IN       EFI_AP_PROCEDURE2             Procedure,\r
-  IN       UINTN                         TimeoutInMicroseconds,\r
-  IN OUT   VOID                          *ProcedureArguments OPTIONAL,\r
-  IN OUT   MM_COMPLETION                 *Token,\r
-  IN OUT   EFI_STATUS                    *CPUStatus\r
+  IN       EFI_AP_PROCEDURE2  Procedure,\r
+  IN       UINTN              TimeoutInMicroseconds,\r
+  IN OUT   VOID               *ProcedureArguments OPTIONAL,\r
+  IN OUT   MM_COMPLETION      *Token,\r
+  IN OUT   EFI_STATUS         *CPUStatus\r
   )\r
 {\r
-  UINTN               Index;\r
-  UINTN               CpuCount;\r
-  PROCEDURE_TOKEN     *ProcToken;\r
+  UINTN            Index;\r
+  UINTN            CpuCount;\r
+  PROCEDURE_TOKEN  *ProcToken;\r
 \r
   if ((TimeoutInMicroseconds != 0) && ((mSmmMp.Attributes & EFI_MM_MP_TIMEOUT_SUPPORTED) == 0)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (Procedure == NULL) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
@@ -1330,25 +1354,27 @@ InternalSmmStartupAllAPs (
   CpuCount = 0;\r
   for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
     if (IsPresentAp (Index)) {\r
-      CpuCount ++;\r
+      CpuCount++;\r
 \r
       if (gSmmCpuPrivate->Operation[Index] == SmmCpuRemove) {\r
         return EFI_INVALID_PARAMETER;\r
       }\r
 \r
-      if (!AcquireSpinLockOrFail(mSmmMpSyncData->CpuData[Index].Busy)) {\r
+      if (!AcquireSpinLockOrFail (mSmmMpSyncData->CpuData[Index].Busy)) {\r
         return EFI_NOT_READY;\r
       }\r
+\r
       ReleaseSpinLock (mSmmMpSyncData->CpuData[Index].Busy);\r
     }\r
   }\r
+\r
   if (CpuCount == 0) {\r
     return EFI_NOT_STARTED;\r
   }\r
 \r
   if (Token != NULL) {\r
     ProcToken = GetFreeToken ((UINT32)mMaxNumberOfCpus);\r
-    *Token = (MM_COMPLETION)ProcToken->SpinLock;\r
+    *Token    = (MM_COMPLETION)ProcToken->SpinLock;\r
   } else {\r
     ProcToken = NULL;\r
   }\r
@@ -1368,13 +1394,14 @@ InternalSmmStartupAllAPs (
 \r
   for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
     if (IsPresentAp (Index)) {\r
-      mSmmMpSyncData->CpuData[Index].Procedure = (EFI_AP_PROCEDURE2) Procedure;\r
+      mSmmMpSyncData->CpuData[Index].Procedure = (EFI_AP_PROCEDURE2)Procedure;\r
       mSmmMpSyncData->CpuData[Index].Parameter = ProcedureArguments;\r
       if (ProcToken != NULL) {\r
-        mSmmMpSyncData->CpuData[Index].Token   = ProcToken;\r
+        mSmmMpSyncData->CpuData[Index].Token = ProcToken;\r
       }\r
+\r
       if (CPUStatus != NULL) {\r
-        mSmmMpSyncData->CpuData[Index].Status    = &CPUStatus[Index];\r
+        mSmmMpSyncData->CpuData[Index].Status = &CPUStatus[Index];\r
         if (mSmmMpSyncData->CpuData[Index].Status != NULL) {\r
           *mSmmMpSyncData->CpuData[Index].Status = EFI_NOT_READY;\r
         }\r
@@ -1426,10 +1453,10 @@ InternalSmmStartupAllAPs (
 EFI_STATUS\r
 EFIAPI\r
 ProcedureWrapper (\r
-  IN     VOID *Buffer\r
+  IN     VOID  *Buffer\r
   )\r
 {\r
-  PROCEDURE_WRAPPER *Wrapper;\r
+  PROCEDURE_WRAPPER  *Wrapper;\r
 \r
   Wrapper = Buffer;\r
   Wrapper->Procedure (Wrapper->ProcedureArgument);\r
@@ -1454,14 +1481,14 @@ ProcedureWrapper (
 EFI_STATUS\r
 EFIAPI\r
 SmmBlockingStartupThisAp (\r
-  IN      EFI_AP_PROCEDURE          Procedure,\r
-  IN      UINTN                     CpuIndex,\r
-  IN OUT  VOID                      *ProcArguments OPTIONAL\r
+  IN      EFI_AP_PROCEDURE  Procedure,\r
+  IN      UINTN             CpuIndex,\r
+  IN OUT  VOID              *ProcArguments OPTIONAL\r
   )\r
 {\r
   PROCEDURE_WRAPPER  Wrapper;\r
 \r
-  Wrapper.Procedure = Procedure;\r
+  Wrapper.Procedure         = Procedure;\r
   Wrapper.ProcedureArgument = ProcArguments;\r
 \r
   //\r
@@ -1487,25 +1514,25 @@ SmmBlockingStartupThisAp (
 EFI_STATUS\r
 EFIAPI\r
 SmmStartupThisAp (\r
-  IN      EFI_AP_PROCEDURE          Procedure,\r
-  IN      UINTN                     CpuIndex,\r
-  IN OUT  VOID                      *ProcArguments OPTIONAL\r
+  IN      EFI_AP_PROCEDURE  Procedure,\r
+  IN      UINTN             CpuIndex,\r
+  IN OUT  VOID              *ProcArguments OPTIONAL\r
   )\r
 {\r
-  gSmmCpuPrivate->ApWrapperFunc[CpuIndex].Procedure = Procedure;\r
+  gSmmCpuPrivate->ApWrapperFunc[CpuIndex].Procedure         = Procedure;\r
   gSmmCpuPrivate->ApWrapperFunc[CpuIndex].ProcedureArgument = ProcArguments;\r
 \r
   //\r
   // Use wrapper function to convert EFI_AP_PROCEDURE to EFI_AP_PROCEDURE2.\r
   //\r
   return InternalSmmStartupThisAp (\r
-    ProcedureWrapper,\r
-    CpuIndex,\r
-    &gSmmCpuPrivate->ApWrapperFunc[CpuIndex],\r
-    FeaturePcdGet (PcdCpuSmmBlockStartupThisAp) ? NULL : &mSmmStartupThisApToken,\r
-    0,\r
-    NULL\r
-    );\r
+           ProcedureWrapper,\r
+           CpuIndex,\r
+           &gSmmCpuPrivate->ApWrapperFunc[CpuIndex],\r
+           FeaturePcdGet (PcdCpuSmmBlockStartupThisAp) ? NULL : &mSmmStartupThisApToken,\r
+           0,\r
+           NULL\r
+           );\r
 }\r
 \r
 /**\r
@@ -1524,10 +1551,10 @@ CpuSmmDebugEntry (
   IN UINTN  CpuIndex\r
   )\r
 {\r
-  SMRAM_SAVE_STATE_MAP *CpuSaveState;\r
+  SMRAM_SAVE_STATE_MAP  *CpuSaveState;\r
 \r
   if (FeaturePcdGet (PcdCpuSmmDebug)) {\r
-    ASSERT(CpuIndex < mMaxNumberOfCpus);\r
+    ASSERT (CpuIndex < mMaxNumberOfCpus);\r
     CpuSaveState = (SMRAM_SAVE_STATE_MAP *)gSmmCpuPrivate->CpuSaveState[CpuIndex];\r
     if (mSmmSaveStateRegisterLma == EFI_SMM_SAVE_STATE_REGISTER_LMA_32BIT) {\r
       AsmWriteDr6 (CpuSaveState->x86._DR6);\r
@@ -1554,10 +1581,10 @@ CpuSmmDebugExit (
   IN UINTN  CpuIndex\r
   )\r
 {\r
-  SMRAM_SAVE_STATE_MAP *CpuSaveState;\r
+  SMRAM_SAVE_STATE_MAP  *CpuSaveState;\r
 \r
   if (FeaturePcdGet (PcdCpuSmmDebug)) {\r
-    ASSERT(CpuIndex < mMaxNumberOfCpus);\r
+    ASSERT (CpuIndex < mMaxNumberOfCpus);\r
     CpuSaveState = (SMRAM_SAVE_STATE_MAP *)gSmmCpuPrivate->CpuSaveState[CpuIndex];\r
     if (mSmmSaveStateRegisterLma == EFI_SMM_SAVE_STATE_REGISTER_LMA_32BIT) {\r
       CpuSaveState->x86._DR7 = (UINT32)AsmReadDr7 ();\r
@@ -1578,17 +1605,17 @@ CpuSmmDebugExit (
 VOID\r
 EFIAPI\r
 SmiRendezvous (\r
-  IN      UINTN                     CpuIndex\r
+  IN      UINTN  CpuIndex\r
   )\r
 {\r
-  EFI_STATUS                     Status;\r
-  BOOLEAN                        ValidSmi;\r
-  BOOLEAN                        IsBsp;\r
-  BOOLEAN                        BspInProgress;\r
-  UINTN                          Index;\r
-  UINTN                          Cr2;\r
+  EFI_STATUS  Status;\r
+  BOOLEAN     ValidSmi;\r
+  BOOLEAN     IsBsp;\r
+  BOOLEAN     BspInProgress;\r
+  UINTN       Index;\r
+  UINTN       Cr2;\r
 \r
-  ASSERT(CpuIndex < mMaxNumberOfCpus);\r
+  ASSERT (CpuIndex < mMaxNumberOfCpus);\r
 \r
   //\r
   // Save Cr2 because Page Fault exception in SMM may override its value,\r
@@ -1612,7 +1639,7 @@ SmiRendezvous (
   //\r
   // Determine if this is a valid SMI\r
   //\r
-  ValidSmi = PlatformValidSmi();\r
+  ValidSmi = PlatformValidSmi ();\r
 \r
   //\r
   // Determine if BSP has been already in progress. Note this must be checked after\r
@@ -1644,9 +1671,9 @@ SmiRendezvous (
       while (*mSmmMpSyncData->AllCpusInSync) {\r
         CpuPause ();\r
       }\r
+\r
       goto Exit;\r
     } else {\r
-\r
       //\r
       // The BUSY lock is initialized to Released state.\r
       // This needs to be done early enough to be ready for BSP's SmmStartupThisAp() call.\r
@@ -1693,7 +1720,7 @@ SmiRendezvous (
             // Platform hook fails to determine, use default BSP election method\r
             //\r
             InterlockedCompareExchange32 (\r
-              (UINT32*)&mSmmMpSyncData->BspIndex,\r
+              (UINT32 *)&mSmmMpSyncData->BspIndex,\r
               (UINT32)-1,\r
               (UINT32)CpuIndex\r
               );\r
@@ -1705,7 +1732,6 @@ SmiRendezvous (
       // "mSmmMpSyncData->BspIndex == CpuIndex" means this is the BSP\r
       //\r
       if (mSmmMpSyncData->BspIndex == CpuIndex) {\r
-\r
         //\r
         // Clear last request for SwitchBsp.\r
         //\r
@@ -1774,45 +1800,45 @@ InitializeSmmCpuSemaphores (
   VOID\r
   )\r
 {\r
-  UINTN                      ProcessorCount;\r
-  UINTN                      TotalSize;\r
-  UINTN                      GlobalSemaphoresSize;\r
-  UINTN                      CpuSemaphoresSize;\r
-  UINTN                      SemaphoreSize;\r
-  UINTN                      Pages;\r
-  UINTN                      *SemaphoreBlock;\r
-  UINTN                      SemaphoreAddr;\r
-\r
-  SemaphoreSize   = GetSpinLockProperties ();\r
-  ProcessorCount = gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
+  UINTN  ProcessorCount;\r
+  UINTN  TotalSize;\r
+  UINTN  GlobalSemaphoresSize;\r
+  UINTN  CpuSemaphoresSize;\r
+  UINTN  SemaphoreSize;\r
+  UINTN  Pages;\r
+  UINTN  *SemaphoreBlock;\r
+  UINTN  SemaphoreAddr;\r
+\r
+  SemaphoreSize        = GetSpinLockProperties ();\r
+  ProcessorCount       = gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
   GlobalSemaphoresSize = (sizeof (SMM_CPU_SEMAPHORE_GLOBAL) / sizeof (VOID *)) * SemaphoreSize;\r
   CpuSemaphoresSize    = (sizeof (SMM_CPU_SEMAPHORE_CPU) / sizeof (VOID *)) * ProcessorCount * SemaphoreSize;\r
-  TotalSize = GlobalSemaphoresSize + CpuSemaphoresSize;\r
-  DEBUG((DEBUG_INFO, "One Semaphore Size    = 0x%x\n", SemaphoreSize));\r
-  DEBUG((DEBUG_INFO, "Total Semaphores Size = 0x%x\n", TotalSize));\r
-  Pages = EFI_SIZE_TO_PAGES (TotalSize);\r
+  TotalSize            = GlobalSemaphoresSize + CpuSemaphoresSize;\r
+  DEBUG ((DEBUG_INFO, "One Semaphore Size    = 0x%x\n", SemaphoreSize));\r
+  DEBUG ((DEBUG_INFO, "Total Semaphores Size = 0x%x\n", TotalSize));\r
+  Pages          = EFI_SIZE_TO_PAGES (TotalSize);\r
   SemaphoreBlock = AllocatePages (Pages);\r
   ASSERT (SemaphoreBlock != NULL);\r
   ZeroMem (SemaphoreBlock, TotalSize);\r
 \r
-  SemaphoreAddr = (UINTN)SemaphoreBlock;\r
+  SemaphoreAddr                                   = (UINTN)SemaphoreBlock;\r
   mSmmCpuSemaphores.SemaphoreGlobal.Counter       = (UINT32 *)SemaphoreAddr;\r
-  SemaphoreAddr += SemaphoreSize;\r
+  SemaphoreAddr                                  += SemaphoreSize;\r
   mSmmCpuSemaphores.SemaphoreGlobal.InsideSmm     = (BOOLEAN *)SemaphoreAddr;\r
-  SemaphoreAddr += SemaphoreSize;\r
+  SemaphoreAddr                                  += SemaphoreSize;\r
   mSmmCpuSemaphores.SemaphoreGlobal.AllCpusInSync = (BOOLEAN *)SemaphoreAddr;\r
-  SemaphoreAddr += SemaphoreSize;\r
+  SemaphoreAddr                                  += SemaphoreSize;\r
   mSmmCpuSemaphores.SemaphoreGlobal.PFLock        = (SPIN_LOCK *)SemaphoreAddr;\r
-  SemaphoreAddr += SemaphoreSize;\r
+  SemaphoreAddr                                  += SemaphoreSize;\r
   mSmmCpuSemaphores.SemaphoreGlobal.CodeAccessCheckLock\r
-                                                  = (SPIN_LOCK *)SemaphoreAddr;\r
+                 = (SPIN_LOCK *)SemaphoreAddr;\r
   SemaphoreAddr += SemaphoreSize;\r
 \r
-  SemaphoreAddr = (UINTN)SemaphoreBlock + GlobalSemaphoresSize;\r
+  SemaphoreAddr                          = (UINTN)SemaphoreBlock + GlobalSemaphoresSize;\r
   mSmmCpuSemaphores.SemaphoreCpu.Busy    = (SPIN_LOCK *)SemaphoreAddr;\r
-  SemaphoreAddr += ProcessorCount * SemaphoreSize;\r
+  SemaphoreAddr                         += ProcessorCount * SemaphoreSize;\r
   mSmmCpuSemaphores.SemaphoreCpu.Run     = (UINT32 *)SemaphoreAddr;\r
-  SemaphoreAddr += ProcessorCount * SemaphoreSize;\r
+  SemaphoreAddr                         += ProcessorCount * SemaphoreSize;\r
   mSmmCpuSemaphores.SemaphoreCpu.Present = (BOOLEAN *)SemaphoreAddr;\r
 \r
   mPFLock                       = mSmmCpuSemaphores.SemaphoreGlobal.PFLock;\r
@@ -1831,7 +1857,7 @@ InitializeMpSyncData (
   VOID\r
   )\r
 {\r
-  UINTN                      CpuIndex;\r
+  UINTN  CpuIndex;\r
 \r
   if (mSmmMpSyncData != NULL) {\r
     //\r
@@ -1839,7 +1865,7 @@ InitializeMpSyncData (
     // CpuData array of SMM_CPU_DATA_BLOCK and one CandidateBsp array of BOOLEAN.\r
     //\r
     ZeroMem (mSmmMpSyncData, mSmmMpSyncDataSize);\r
-    mSmmMpSyncData->CpuData = (SMM_CPU_DATA_BLOCK *)((UINT8 *)mSmmMpSyncData + sizeof (SMM_DISPATCHER_MP_SYNC_DATA));\r
+    mSmmMpSyncData->CpuData      = (SMM_CPU_DATA_BLOCK *)((UINT8 *)mSmmMpSyncData + sizeof (SMM_DISPATCHER_MP_SYNC_DATA));\r
     mSmmMpSyncData->CandidateBsp = (BOOLEAN *)(mSmmMpSyncData->CpuData + gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus);\r
     if (FeaturePcdGet (PcdCpuSmmEnableBspElection)) {\r
       //\r
@@ -1847,21 +1873,24 @@ InitializeMpSyncData (
       //\r
       mSmmMpSyncData->BspIndex = (UINT32)-1;\r
     }\r
+\r
     mSmmMpSyncData->EffectiveSyncMode = mCpuSmmSyncMode;\r
 \r
     mSmmMpSyncData->Counter       = mSmmCpuSemaphores.SemaphoreGlobal.Counter;\r
     mSmmMpSyncData->InsideSmm     = mSmmCpuSemaphores.SemaphoreGlobal.InsideSmm;\r
     mSmmMpSyncData->AllCpusInSync = mSmmCpuSemaphores.SemaphoreGlobal.AllCpusInSync;\r
-    ASSERT (mSmmMpSyncData->Counter != NULL && mSmmMpSyncData->InsideSmm != NULL &&\r
-            mSmmMpSyncData->AllCpusInSync != NULL);\r
+    ASSERT (\r
+      mSmmMpSyncData->Counter != NULL && mSmmMpSyncData->InsideSmm != NULL &&\r
+      mSmmMpSyncData->AllCpusInSync != NULL\r
+      );\r
     *mSmmMpSyncData->Counter       = 0;\r
     *mSmmMpSyncData->InsideSmm     = FALSE;\r
     *mSmmMpSyncData->AllCpusInSync = FALSE;\r
 \r
-    for (CpuIndex = 0; CpuIndex < gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; CpuIndex ++) {\r
-      mSmmMpSyncData->CpuData[CpuIndex].Busy    =\r
+    for (CpuIndex = 0; CpuIndex < gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; CpuIndex++) {\r
+      mSmmMpSyncData->CpuData[CpuIndex].Busy =\r
         (SPIN_LOCK *)((UINTN)mSmmCpuSemaphores.SemaphoreCpu.Busy + mSemaphoreSize * CpuIndex);\r
-      mSmmMpSyncData->CpuData[CpuIndex].Run     =\r
+      mSmmMpSyncData->CpuData[CpuIndex].Run =\r
         (UINT32 *)((UINTN)mSmmCpuSemaphores.SemaphoreCpu.Run + mSemaphoreSize * CpuIndex);\r
       mSmmMpSyncData->CpuData[CpuIndex].Present =\r
         (BOOLEAN *)((UINTN)mSmmCpuSemaphores.SemaphoreCpu.Present + mSemaphoreSize * CpuIndex);\r
@@ -1882,9 +1911,9 @@ InitializeMpSyncData (
 **/\r
 UINT32\r
 InitializeMpServiceData (\r
-  IN VOID        *Stacks,\r
-  IN UINTN       StackSize,\r
-  IN UINTN       ShadowStackSize\r
+  IN VOID   *Stacks,\r
+  IN UINTN  StackSize,\r
+  IN UINTN  ShadowStackSize\r
   )\r
 {\r
   UINT32                          Cr3;\r
@@ -1911,7 +1940,7 @@ InitializeMpServiceData (
   //\r
   mSmmMpSyncDataSize = sizeof (SMM_DISPATCHER_MP_SYNC_DATA) +\r
                        (sizeof (SMM_CPU_DATA_BLOCK) + sizeof (BOOLEAN)) * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
-  mSmmMpSyncData = (SMM_DISPATCHER_MP_SYNC_DATA*) AllocatePages (EFI_SIZE_TO_PAGES (mSmmMpSyncDataSize));\r
+  mSmmMpSyncData = (SMM_DISPATCHER_MP_SYNC_DATA *)AllocatePages (EFI_SIZE_TO_PAGES (mSmmMpSyncDataSize));\r
   ASSERT (mSmmMpSyncData != NULL);\r
   mCpuSmmSyncMode = (SMM_CPU_SYNC_MODE)PcdGet8 (PcdCpuSmmSyncMode);\r
   InitializeMpSyncData ();\r
@@ -1926,7 +1955,8 @@ InitializeMpServiceData (
   } else {\r
     VirPhyAddressSize.Bits.PhysicalAddressBits = 36;\r
   }\r
-  gPhyMask  = LShiftU64 (1, VirPhyAddressSize.Bits.PhysicalAddressBits) - 1;\r
+\r
+  gPhyMask = LShiftU64 (1, VirPhyAddressSize.Bits.PhysicalAddressBits) - 1;\r
   //\r
   // Clear the low 12 bits\r
   //\r
@@ -1946,7 +1976,7 @@ InitializeMpServiceData (
     InstallSmiHandler (\r
       Index,\r
       (UINT32)mCpuHotPlugData.SmBase[Index],\r
-      (VOID*)((UINTN)Stacks + (StackSize + ShadowStackSize) * Index),\r
+      (VOID *)((UINTN)Stacks + (StackSize + ShadowStackSize) * Index),\r
       StackSize,\r
       (UINTN)(GdtTssTables + GdtTableStepSize * Index),\r
       gcSmiGdtr.Limit + 1,\r
@@ -2009,13 +2039,14 @@ RegisterSmmEntry (
 **/\r
 EFI_STATUS\r
 RegisterStartupProcedure (\r
-  IN     EFI_AP_PROCEDURE    Procedure,\r
-  IN OUT VOID                *ProcedureArguments OPTIONAL\r
+  IN     EFI_AP_PROCEDURE  Procedure,\r
+  IN OUT VOID              *ProcedureArguments OPTIONAL\r
   )\r
 {\r
-  if (Procedure == NULL && ProcedureArguments != NULL) {\r
+  if ((Procedure == NULL) && (ProcedureArguments != NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   if (mSmmMpSyncData == NULL) {\r
     return EFI_NOT_READY;\r
   }\r
index fbf45d652565c489c52aff87aa4e56bfc8ed2ec6..40aabeda724a76cb49061aaec5497977f1efba82 100644 (file)
@@ -21,7 +21,9 @@ SMM_CPU_PRIVATE_DATA  mSmmCpuPrivateData = {
   NULL,                                         // Pointer to Operation array\r
   NULL,                                         // Pointer to CpuSaveStateSize array\r
   NULL,                                         // Pointer to CpuSaveState array\r
-  { {0} },                                      // SmmReservedSmramRegion\r
+  {\r
+    { 0    }\r
+  },                                            // SmmReservedSmramRegion\r
   {\r
     SmmStartupThisAp,                           // SmmCoreEntryContext.SmmStartupThisAp\r
     0,                                          // SmmCoreEntryContext.CurrentlyExecutingCpu\r
@@ -35,10 +37,10 @@ SMM_CPU_PRIVATE_DATA  mSmmCpuPrivateData = {
     RegisterSmmEntry                            // SmmConfiguration.RegisterSmmEntry\r
   },\r
   NULL,                                         // pointer to Ap Wrapper Func array\r
-  {NULL, NULL},                                 // List_Entry for Tokens.\r
+  { NULL, NULL },                               // List_Entry for Tokens.\r
 };\r
 \r
-CPU_HOT_PLUG_DATA mCpuHotPlugData = {\r
+CPU_HOT_PLUG_DATA  mCpuHotPlugData = {\r
   CPU_HOT_PLUG_DATA_REVISION_1,                 // Revision\r
   0,                                            // Array Length of SmBase and APIC ID\r
   NULL,                                         // Pointer to APIC ID array\r
@@ -67,7 +69,7 @@ EFI_HANDLE  mSmmCpuHandle = NULL;
 ///\r
 /// SMM CPU Protocol instance\r
 ///\r
-EFI_SMM_CPU_PROTOCOL  mSmmCpu  = {\r
+EFI_SMM_CPU_PROTOCOL  mSmmCpu = {\r
   SmmReadSaveState,\r
   SmmWriteSaveState\r
 };\r
@@ -75,60 +77,60 @@ EFI_SMM_CPU_PROTOCOL  mSmmCpu  = {
 ///\r
 /// SMM Memory Attribute Protocol instance\r
 ///\r
-EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL  mSmmMemoryAttribute  = {\r
+EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL  mSmmMemoryAttribute = {\r
   EdkiiSmmGetMemoryAttributes,\r
   EdkiiSmmSetMemoryAttributes,\r
   EdkiiSmmClearMemoryAttributes\r
 };\r
 \r
-EFI_CPU_INTERRUPT_HANDLER   mExternalVectorTable[EXCEPTION_VECTOR_NUMBER];\r
+EFI_CPU_INTERRUPT_HANDLER  mExternalVectorTable[EXCEPTION_VECTOR_NUMBER];\r
 \r
 //\r
 // SMM stack information\r
 //\r
-UINTN mSmmStackArrayBase;\r
-UINTN mSmmStackArrayEnd;\r
-UINTN mSmmStackSize;\r
+UINTN  mSmmStackArrayBase;\r
+UINTN  mSmmStackArrayEnd;\r
+UINTN  mSmmStackSize;\r
 \r
-UINTN mSmmShadowStackSize;\r
-BOOLEAN mCetSupported = TRUE;\r
+UINTN    mSmmShadowStackSize;\r
+BOOLEAN  mCetSupported = TRUE;\r
 \r
-UINTN mMaxNumberOfCpus = 1;\r
-UINTN mNumberOfCpus = 1;\r
+UINTN  mMaxNumberOfCpus = 1;\r
+UINTN  mNumberOfCpus    = 1;\r
 \r
 //\r
 // SMM ready to lock flag\r
 //\r
-BOOLEAN mSmmReadyToLock = FALSE;\r
+BOOLEAN  mSmmReadyToLock = FALSE;\r
 \r
 //\r
 // Global used to cache PCD for SMM Code Access Check enable\r
 //\r
-BOOLEAN                  mSmmCodeAccessCheckEnable = FALSE;\r
+BOOLEAN  mSmmCodeAccessCheckEnable = FALSE;\r
 \r
 //\r
 // Global copy of the PcdPteMemoryEncryptionAddressOrMask\r
 //\r
-UINT64                   mAddressEncMask = 0;\r
+UINT64  mAddressEncMask = 0;\r
 \r
 //\r
 // Spin lock used to serialize setting of SMM Code Access Check feature\r
 //\r
-SPIN_LOCK                *mConfigSmmCodeAccessCheckLock = NULL;\r
+SPIN_LOCK  *mConfigSmmCodeAccessCheckLock = NULL;\r
 \r
 //\r
 // Saved SMM ranges information\r
 //\r
-EFI_SMRAM_DESCRIPTOR     *mSmmCpuSmramRanges;\r
-UINTN                    mSmmCpuSmramRangeCount;\r
+EFI_SMRAM_DESCRIPTOR  *mSmmCpuSmramRanges;\r
+UINTN                 mSmmCpuSmramRangeCount;\r
 \r
-UINT8                    mPhysicalAddressBits;\r
+UINT8  mPhysicalAddressBits;\r
 \r
 //\r
 // Control register contents saved for SMM S3 resume state initialization.\r
 //\r
-UINT32                   mSmmCr0;\r
-UINT32                   mSmmCr4;\r
+UINT32  mSmmCr0;\r
+UINT32  mSmmCr4;\r
 \r
 /**\r
   Initialize IDT to setup exception handlers for SMM.\r
@@ -139,19 +141,19 @@ InitializeSmmIdt (
   VOID\r
   )\r
 {\r
-  EFI_STATUS               Status;\r
-  BOOLEAN                  InterruptState;\r
-  IA32_DESCRIPTOR          DxeIdtr;\r
+  EFI_STATUS       Status;\r
+  BOOLEAN          InterruptState;\r
+  IA32_DESCRIPTOR  DxeIdtr;\r
 \r
   //\r
   // There are 32 (not 255) entries in it since only processor\r
   // generated exceptions will be handled.\r
   //\r
-  gcSmiIdtr.Limit = (sizeof(IA32_IDT_GATE_DESCRIPTOR) * 32) - 1;\r
+  gcSmiIdtr.Limit = (sizeof (IA32_IDT_GATE_DESCRIPTOR) * 32) - 1;\r
   //\r
   // Allocate page aligned IDT, because it might be set as read only.\r
   //\r
-  gcSmiIdtr.Base = (UINTN)AllocateCodePages (EFI_SIZE_TO_PAGES(gcSmiIdtr.Limit + 1));\r
+  gcSmiIdtr.Base = (UINTN)AllocateCodePages (EFI_SIZE_TO_PAGES (gcSmiIdtr.Limit + 1));\r
   ASSERT (gcSmiIdtr.Base != 0);\r
   ZeroMem ((VOID *)gcSmiIdtr.Base, gcSmiIdtr.Limit + 1);\r
 \r
@@ -173,7 +175,7 @@ InitializeSmmIdt (
   //\r
   // Restore DXE IDT table and CPU interrupt\r
   //\r
-  AsmWriteIdtr ((IA32_DESCRIPTOR *) &DxeIdtr);\r
+  AsmWriteIdtr ((IA32_DESCRIPTOR *)&DxeIdtr);\r
   SetInterruptState (InterruptState);\r
 }\r
 \r
@@ -185,19 +187,19 @@ InitializeSmmIdt (
 **/\r
 VOID\r
 DumpModuleInfoByIp (\r
-  IN  UINTN              CallerIpAddress\r
+  IN  UINTN  CallerIpAddress\r
   )\r
 {\r
-  UINTN                                Pe32Data;\r
-  VOID                                 *PdbPointer;\r
+  UINTN  Pe32Data;\r
+  VOID   *PdbPointer;\r
 \r
   //\r
   // Find Image Base\r
   //\r
   Pe32Data = PeCoffSearchImageBase (CallerIpAddress);\r
   if (Pe32Data != 0) {\r
-    DEBUG ((DEBUG_ERROR, "It is invoked from the instruction before IP(0x%p)", (VOID *) CallerIpAddress));\r
-    PdbPointer = PeCoffLoaderGetPdbPointer ((VOID *) Pe32Data);\r
+    DEBUG ((DEBUG_ERROR, "It is invoked from the instruction before IP(0x%p)", (VOID *)CallerIpAddress));\r
+    PdbPointer = PeCoffLoaderGetPdbPointer ((VOID *)Pe32Data);\r
     if (PdbPointer != NULL) {\r
       DEBUG ((DEBUG_ERROR, " in module (%a)\n", PdbPointer));\r
     }\r
@@ -221,11 +223,11 @@ DumpModuleInfoByIp (
 EFI_STATUS\r
 EFIAPI\r
 SmmReadSaveState (\r
-  IN CONST EFI_SMM_CPU_PROTOCOL         *This,\r
-  IN UINTN                              Width,\r
-  IN EFI_SMM_SAVE_STATE_REGISTER        Register,\r
-  IN UINTN                              CpuIndex,\r
-  OUT VOID                              *Buffer\r
+  IN CONST EFI_SMM_CPU_PROTOCOL   *This,\r
+  IN UINTN                        Width,\r
+  IN EFI_SMM_SAVE_STATE_REGISTER  Register,\r
+  IN UINTN                        CpuIndex,\r
+  OUT VOID                        *Buffer\r
   )\r
 {\r
   EFI_STATUS  Status;\r
@@ -236,6 +238,7 @@ SmmReadSaveState (
   if ((CpuIndex >= gSmst->NumberOfCpus) || (Buffer == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
+\r
   //\r
   // The SpeculationBarrier() call here is to ensure the above check for the\r
   // CpuIndex has been completed before the execution of subsequent codes.\r
@@ -252,6 +255,7 @@ SmmReadSaveState (
     if (Width != sizeof (UINT64)) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
+\r
     //\r
     // If the processor is in SMM at the time the SMI occurred,\r
     // the pseudo register value for EFI_SMM_SAVE_STATE_REGISTER_PROCESSOR_ID is returned in Buffer.\r
@@ -273,6 +277,7 @@ SmmReadSaveState (
   if (Status == EFI_UNSUPPORTED) {\r
     Status = ReadSaveStateRegister (CpuIndex, Register, Width, Buffer);\r
   }\r
+\r
   return Status;\r
 }\r
 \r
@@ -293,11 +298,11 @@ SmmReadSaveState (
 EFI_STATUS\r
 EFIAPI\r
 SmmWriteSaveState (\r
-  IN CONST EFI_SMM_CPU_PROTOCOL         *This,\r
-  IN UINTN                              Width,\r
-  IN EFI_SMM_SAVE_STATE_REGISTER        Register,\r
-  IN UINTN                              CpuIndex,\r
-  IN CONST VOID                         *Buffer\r
+  IN CONST EFI_SMM_CPU_PROTOCOL   *This,\r
+  IN UINTN                        Width,\r
+  IN EFI_SMM_SAVE_STATE_REGISTER  Register,\r
+  IN UINTN                        CpuIndex,\r
+  IN CONST VOID                   *Buffer\r
   )\r
 {\r
   EFI_STATUS  Status;\r
@@ -324,10 +329,10 @@ SmmWriteSaveState (
   if (Status == EFI_UNSUPPORTED) {\r
     Status = WriteSaveStateRegister (CpuIndex, Register, Width, Buffer);\r
   }\r
+\r
   return Status;\r
 }\r
 \r
-\r
 /**\r
   C function for SMI handler. To change all processor's SMMBase Register.\r
 \r
@@ -338,8 +343,8 @@ SmmInitHandler (
   VOID\r
   )\r
 {\r
-  UINT32                            ApicId;\r
-  UINTN                             Index;\r
+  UINT32  ApicId;\r
+  UINTN   Index;\r
 \r
   //\r
   // Update SMM IDT entries' code segment and load IDT\r
@@ -384,6 +389,7 @@ SmmInitHandler (
       return;\r
     }\r
   }\r
+\r
   ASSERT (FALSE);\r
 }\r
 \r
@@ -427,7 +433,7 @@ SmmRelocateBases (
   gcSmiInitGdtr.Base  = gcSmiGdtr.Base;\r
   gcSmiInitGdtr.Limit = gcSmiGdtr.Limit;\r
 \r
-  U8Ptr = (UINT8*)(UINTN)(SMM_DEFAULT_SMBASE + SMM_HANDLER_OFFSET);\r
+  U8Ptr       = (UINT8 *)(UINTN)(SMM_DEFAULT_SMBASE + SMM_HANDLER_OFFSET);\r
   CpuStatePtr = (SMRAM_SAVE_STATE_MAP *)(UINTN)(SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET);\r
 \r
   //\r
@@ -459,7 +465,8 @@ SmmRelocateBases (
       //\r
       // Wait for this AP to finish its 1st SMI\r
       //\r
-      while (!mRebased[Index]);\r
+      while (!mRebased[Index]) {\r
+      }\r
     } else {\r
       //\r
       // BSP will be Relocated later\r
@@ -477,7 +484,8 @@ SmmRelocateBases (
   //\r
   // Wait for the BSP to finish its 1st SMI\r
   //\r
-  while (!mRebased[BspIndex]);\r
+  while (!mRebased[BspIndex]) {\r
+  }\r
 \r
   //\r
   // Restore contents at address 0x38000\r
@@ -537,24 +545,24 @@ PiCpuSmmEntry (
   IN EFI_SYSTEM_TABLE  *SystemTable\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  EFI_MP_SERVICES_PROTOCOL   *MpServices;\r
-  UINTN                      NumberOfEnabledProcessors;\r
-  UINTN                      Index;\r
-  VOID                       *Buffer;\r
-  UINTN                      BufferPages;\r
-  UINTN                      TileCodeSize;\r
-  UINTN                      TileDataSize;\r
-  UINTN                      TileSize;\r
-  UINT8                      *Stacks;\r
-  VOID                       *Registration;\r
-  UINT32                     RegEax;\r
-  UINT32                     RegEbx;\r
-  UINT32                     RegEcx;\r
-  UINT32                     RegEdx;\r
-  UINTN                      FamilyId;\r
-  UINTN                      ModelId;\r
-  UINT32                     Cr3;\r
+  EFI_STATUS                Status;\r
+  EFI_MP_SERVICES_PROTOCOL  *MpServices;\r
+  UINTN                     NumberOfEnabledProcessors;\r
+  UINTN                     Index;\r
+  VOID                      *Buffer;\r
+  UINTN                     BufferPages;\r
+  UINTN                     TileCodeSize;\r
+  UINTN                     TileDataSize;\r
+  UINTN                     TileSize;\r
+  UINT8                     *Stacks;\r
+  VOID                      *Registration;\r
+  UINT32                    RegEax;\r
+  UINT32                    RegEbx;\r
+  UINT32                    RegEcx;\r
+  UINT32                    RegEdx;\r
+  UINTN                     FamilyId;\r
+  UINTN                     ModelId;\r
+  UINT32                    Cr3;\r
 \r
   //\r
   // Initialize address fixup\r
@@ -598,10 +606,10 @@ PiCpuSmmEntry (
   // A constant BSP index makes no sense because it may be hot removed.\r
   //\r
   DEBUG_CODE_BEGIN ();\r
-    if (FeaturePcdGet (PcdCpuHotPlugSupport)) {\r
+  if (FeaturePcdGet (PcdCpuHotPlugSupport)) {\r
+    ASSERT (FeaturePcdGet (PcdCpuSmmEnableBspElection));\r
+  }\r
 \r
-      ASSERT (FeaturePcdGet (PcdCpuSmmEnableBspElection));\r
-    }\r
   DEBUG_CODE_END ();\r
 \r
   //\r
@@ -625,6 +633,7 @@ PiCpuSmmEntry (
   } else {\r
     mMaxNumberOfCpus = mNumberOfCpus;\r
   }\r
+\r
   gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus = mMaxNumberOfCpus;\r
 \r
   //\r
@@ -702,8 +711,8 @@ PiCpuSmmEntry (
   //\r
   AsmCpuid (CPUID_VERSION_INFO, &RegEax, NULL, NULL, NULL);\r
   FamilyId = (RegEax >> 8) & 0xf;\r
-  ModelId = (RegEax >> 4) & 0xf;\r
-  if (FamilyId == 0x06 || FamilyId == 0x0f) {\r
+  ModelId  = (RegEax >> 4) & 0xf;\r
+  if ((FamilyId == 0x06) || (FamilyId == 0x0f)) {\r
     ModelId = ModelId | ((RegEax >> 12) & 0xf0);\r
   }\r
 \r
@@ -712,6 +721,7 @@ PiCpuSmmEntry (
   if (RegEax >= CPUID_EXTENDED_CPU_SIG) {\r
     AsmCpuid (CPUID_EXTENDED_CPU_SIG, NULL, NULL, NULL, &RegEdx);\r
   }\r
+\r
   //\r
   // Determine the mode of the CPU at the time an SMI occurs\r
   //   Intel(R) 64 and IA-32 Architectures Software Developer's Manual\r
@@ -721,8 +731,9 @@ PiCpuSmmEntry (
   if ((RegEdx & BIT29) != 0) {\r
     mSmmSaveStateRegisterLma = EFI_SMM_SAVE_STATE_REGISTER_LMA_64BIT;\r
   }\r
+\r
   if (FamilyId == 0x06) {\r
-    if (ModelId == 0x17 || ModelId == 0x0f || ModelId == 0x1c) {\r
+    if ((ModelId == 0x17) || (ModelId == 0x0f) || (ModelId == 0x1c)) {\r
       mSmmSaveStateRegisterLma = EFI_SMM_SAVE_STATE_REGISTER_LMA_64BIT;\r
     }\r
   }\r
@@ -739,17 +750,18 @@ PiCpuSmmEntry (
         mCetSupported = FALSE;\r
         PatchInstructionX86 (mPatchCetSupported, mCetSupported, 1);\r
       }\r
+\r
       if (mCetSupported) {\r
         AsmCpuidEx (CPUID_EXTENDED_STATE, CPUID_EXTENDED_STATE_SUB_LEAF, NULL, &RegEbx, &RegEcx, NULL);\r
         DEBUG ((DEBUG_INFO, "CPUID[D/1] EBX - 0x%08x, ECX - 0x%08x\n", RegEbx, RegEcx));\r
         AsmCpuidEx (CPUID_EXTENDED_STATE, 11, &RegEax, NULL, &RegEcx, NULL);\r
         DEBUG ((DEBUG_INFO, "CPUID[D/11] EAX - 0x%08x, ECX - 0x%08x\n", RegEax, RegEcx));\r
-        AsmCpuidEx(CPUID_EXTENDED_STATE, 12, &RegEax, NULL, &RegEcx, NULL);\r
+        AsmCpuidEx (CPUID_EXTENDED_STATE, 12, &RegEax, NULL, &RegEcx, NULL);\r
         DEBUG ((DEBUG_INFO, "CPUID[D/12] EAX - 0x%08x, ECX - 0x%08x\n", RegEax, RegEcx));\r
       }\r
     } else {\r
       mCetSupported = FALSE;\r
-      PatchInstructionX86(mPatchCetSupported, mCetSupported, 1);\r
+      PatchInstructionX86 (mPatchCetSupported, mCetSupported, 1);\r
     }\r
   } else {\r
     mCetSupported = FALSE;\r
@@ -762,11 +774,11 @@ PiCpuSmmEntry (
   // This size is rounded up to nearest power of 2.\r
   //\r
   TileCodeSize = GetSmiHandlerSize ();\r
-  TileCodeSize = ALIGN_VALUE(TileCodeSize, SIZE_4KB);\r
+  TileCodeSize = ALIGN_VALUE (TileCodeSize, SIZE_4KB);\r
   TileDataSize = (SMRAM_SAVE_STATE_MAP_OFFSET - SMM_PSD_OFFSET) + sizeof (SMRAM_SAVE_STATE_MAP);\r
-  TileDataSize = ALIGN_VALUE(TileDataSize, SIZE_4KB);\r
-  TileSize = TileDataSize + TileCodeSize - 1;\r
-  TileSize = 2 * GetPowerOfTwo32 ((UINT32)TileSize);\r
+  TileDataSize = ALIGN_VALUE (TileDataSize, SIZE_4KB);\r
+  TileSize     = TileDataSize + TileCodeSize - 1;\r
+  TileSize     = 2 * GetPowerOfTwo32 ((UINT32)TileSize);\r
   DEBUG ((DEBUG_INFO, "SMRAM TileSize = 0x%08x (0x%08x, 0x%08x)\n", TileSize, TileCodeSize, TileDataSize));\r
 \r
   //\r
@@ -796,8 +808,9 @@ PiCpuSmmEntry (
   } else {\r
     Buffer = AllocateAlignedCodePages (BufferPages, SIZE_4KB);\r
   }\r
+\r
   ASSERT (Buffer != NULL);\r
-  DEBUG ((DEBUG_INFO, "SMRAM SaveState Buffer (0x%08x, 0x%08x)\n", Buffer, EFI_PAGES_TO_SIZE(BufferPages)));\r
+  DEBUG ((DEBUG_INFO, "SMRAM SaveState Buffer (0x%08x, 0x%08x)\n", Buffer, EFI_PAGES_TO_SIZE (BufferPages)));\r
 \r
   //\r
   // Allocate buffer for pointers to array in  SMM_CPU_PRIVATE_DATA.\r
@@ -832,17 +845,19 @@ PiCpuSmmEntry (
   // size for each CPU in the platform\r
   //\r
   for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
-    mCpuHotPlugData.SmBase[Index]          = (UINTN)Buffer + Index * TileSize - SMM_HANDLER_OFFSET;\r
-    gSmmCpuPrivate->CpuSaveStateSize[Index] = sizeof(SMRAM_SAVE_STATE_MAP);\r
+    mCpuHotPlugData.SmBase[Index]           = (UINTN)Buffer + Index * TileSize - SMM_HANDLER_OFFSET;\r
+    gSmmCpuPrivate->CpuSaveStateSize[Index] = sizeof (SMRAM_SAVE_STATE_MAP);\r
     gSmmCpuPrivate->CpuSaveState[Index]     = (VOID *)(mCpuHotPlugData.SmBase[Index] + SMRAM_SAVE_STATE_MAP_OFFSET);\r
-    gSmmCpuPrivate->Operation[Index] = SmmCpuNone;\r
+    gSmmCpuPrivate->Operation[Index]        = SmmCpuNone;\r
 \r
     if (Index < mNumberOfCpus) {\r
       Status = MpServices->GetProcessorInfo (MpServices, Index, &gSmmCpuPrivate->ProcessorInfo[Index]);\r
       ASSERT_EFI_ERROR (Status);\r
       mCpuHotPlugData.ApicId[Index] = gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId;\r
 \r
-      DEBUG ((DEBUG_INFO, "CPU[%03x]  APIC ID=%04x  SMBASE=%08x  SaveState=%08x  Size=%08x\n",\r
+      DEBUG ((\r
+        DEBUG_INFO,\r
+        "CPU[%03x]  APIC ID=%04x  SMBASE=%08x  SaveState=%08x  Size=%08x\n",\r
         Index,\r
         (UINT32)gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId,\r
         mCpuHotPlugData.SmBase[Index],\r
@@ -851,7 +866,7 @@ PiCpuSmmEntry (
         ));\r
     } else {\r
       gSmmCpuPrivate->ProcessorInfo[Index].ProcessorId = INVALID_APIC_ID;\r
-      mCpuHotPlugData.ApicId[Index] = INVALID_APIC_ID;\r
+      mCpuHotPlugData.ApicId[Index]                    = INVALID_APIC_ID;\r
     }\r
   }\r
 \r
@@ -916,10 +931,10 @@ PiCpuSmmEntry (
     }\r
   }\r
 \r
-  Stacks = (UINT8 *) AllocatePages (gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus * (EFI_SIZE_TO_PAGES (mSmmStackSize + mSmmShadowStackSize)));\r
+  Stacks = (UINT8 *)AllocatePages (gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus * (EFI_SIZE_TO_PAGES (mSmmStackSize + mSmmShadowStackSize)));\r
   ASSERT (Stacks != NULL);\r
   mSmmStackArrayBase = (UINTN)Stacks;\r
-  mSmmStackArrayEnd = mSmmStackArrayBase + gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus * (mSmmStackSize + mSmmShadowStackSize) - 1;\r
+  mSmmStackArrayEnd  = mSmmStackArrayBase + gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus * (mSmmStackSize + mSmmShadowStackSize) - 1;\r
 \r
   DEBUG ((DEBUG_INFO, "Stacks                   - 0x%x\n", Stacks));\r
   DEBUG ((DEBUG_INFO, "mSmmStackSize            - 0x%x\n", mSmmStackSize));\r
@@ -933,7 +948,7 @@ PiCpuSmmEntry (
   //\r
   PatchInstructionX86 (\r
     gPatchSmmInitStack,\r
-    (UINTN) (Stacks + mSmmStackSize - sizeof (UINTN)),\r
+    (UINTN)(Stacks + mSmmStackSize - sizeof (UINTN)),\r
     sizeof (UINTN)\r
     );\r
 \r
@@ -977,8 +992,8 @@ PiCpuSmmEntry (
       if (FeaturePcdGet (PcdCpuSmmStackGuard)) {\r
         SetNotPresentPage (\r
           Cr3,\r
-          (EFI_PHYSICAL_ADDRESS)(UINTN)Stacks + mSmmStackSize + EFI_PAGES_TO_SIZE(1) + (mSmmStackSize + mSmmShadowStackSize) * Index,\r
-          EFI_PAGES_TO_SIZE(1)\r
+          (EFI_PHYSICAL_ADDRESS)(UINTN)Stacks + mSmmStackSize + EFI_PAGES_TO_SIZE (1) + (mSmmStackSize + mSmmShadowStackSize) * Index,\r
+          EFI_PAGES_TO_SIZE (1)\r
           );\r
       }\r
     }\r
@@ -997,7 +1012,8 @@ PiCpuSmmEntry (
   //\r
   Status = SystemTable->BootServices->InstallMultipleProtocolInterfaces (\r
                                         &gSmmCpuPrivate->SmmCpuHandle,\r
-                                        &gEfiSmmConfigurationProtocolGuid, &gSmmCpuPrivate->SmmConfiguration,\r
+                                        &gEfiSmmConfigurationProtocolGuid,\r
+                                        &gSmmCpuPrivate->SmmConfiguration,\r
                                         NULL\r
                                         );\r
   ASSERT_EFI_ERROR (Status);\r
@@ -1087,17 +1103,17 @@ PiCpuSmmEntry (
 **/\r
 VOID\r
 FindSmramInfo (\r
-  OUT UINT32   *SmrrBase,\r
-  OUT UINT32   *SmrrSize\r
+  OUT UINT32  *SmrrBase,\r
+  OUT UINT32  *SmrrSize\r
   )\r
 {\r
-  EFI_STATUS                        Status;\r
-  UINTN                             Size;\r
-  EFI_SMM_ACCESS2_PROTOCOL          *SmmAccess;\r
-  EFI_SMRAM_DESCRIPTOR              *CurrentSmramRange;\r
-  UINTN                             Index;\r
-  UINT64                            MaxSize;\r
-  BOOLEAN                           Found;\r
+  EFI_STATUS                Status;\r
+  UINTN                     Size;\r
+  EFI_SMM_ACCESS2_PROTOCOL  *SmmAccess;\r
+  EFI_SMRAM_DESCRIPTOR      *CurrentSmramRange;\r
+  UINTN                     Index;\r
+  UINT64                    MaxSize;\r
+  BOOLEAN                   Found;\r
 \r
   //\r
   // Get SMM Access Protocol\r
@@ -1108,7 +1124,7 @@ FindSmramInfo (
   //\r
   // Get SMRAM information\r
   //\r
-  Size = 0;\r
+  Size   = 0;\r
   Status = SmmAccess->GetCapabilities (SmmAccess, &Size, NULL);\r
   ASSERT (Status == EFI_BUFFER_TOO_SMALL);\r
 \r
@@ -1135,7 +1151,7 @@ FindSmramInfo (
     if (mSmmCpuSmramRanges[Index].CpuStart >= BASE_1MB) {\r
       if ((mSmmCpuSmramRanges[Index].CpuStart + mSmmCpuSmramRanges[Index].PhysicalSize) <= SMRR_MAX_ADDRESS) {\r
         if (mSmmCpuSmramRanges[Index].PhysicalSize >= MaxSize) {\r
-          MaxSize = mSmmCpuSmramRanges[Index].PhysicalSize;\r
+          MaxSize           = mSmmCpuSmramRanges[Index].PhysicalSize;\r
           CurrentSmramRange = &mSmmCpuSmramRanges[Index];\r
         }\r
       }\r
@@ -1150,14 +1166,15 @@ FindSmramInfo (
   do {\r
     Found = FALSE;\r
     for (Index = 0; Index < mSmmCpuSmramRangeCount; Index++) {\r
-      if (mSmmCpuSmramRanges[Index].CpuStart < *SmrrBase &&\r
-          *SmrrBase == (mSmmCpuSmramRanges[Index].CpuStart + mSmmCpuSmramRanges[Index].PhysicalSize)) {\r
+      if ((mSmmCpuSmramRanges[Index].CpuStart < *SmrrBase) &&\r
+          (*SmrrBase == (mSmmCpuSmramRanges[Index].CpuStart + mSmmCpuSmramRanges[Index].PhysicalSize)))\r
+      {\r
         *SmrrBase = (UINT32)mSmmCpuSmramRanges[Index].CpuStart;\r
         *SmrrSize = (UINT32)(*SmrrSize + mSmmCpuSmramRanges[Index].PhysicalSize);\r
-        Found = TRUE;\r
-      } else if ((*SmrrBase + *SmrrSize) == mSmmCpuSmramRanges[Index].CpuStart && mSmmCpuSmramRanges[Index].PhysicalSize > 0) {\r
+        Found     = TRUE;\r
+      } else if (((*SmrrBase + *SmrrSize) == mSmmCpuSmramRanges[Index].CpuStart) && (mSmmCpuSmramRanges[Index].PhysicalSize > 0)) {\r
         *SmrrSize = (UINT32)(*SmrrSize + mSmmCpuSmramRanges[Index].PhysicalSize);\r
-        Found = TRUE;\r
+        Found     = TRUE;\r
       }\r
     }\r
   } while (Found);\r
@@ -1272,6 +1289,7 @@ ConfigSmmCodeAccessCheck (
         //\r
         continue;\r
       }\r
+\r
       //\r
       // Acquire Config SMM Code Access Check spin lock.  The AP will release the\r
       // spin lock when it is done executing ConfigSmmCodeAccessCheckOnCurrentProcessor().\r
@@ -1316,7 +1334,7 @@ ConfigSmmCodeAccessCheck (
 **/\r
 VOID *\r
 AllocatePageTableMemory (\r
-  IN UINTN           Pages\r
+  IN UINTN  Pages\r
   )\r
 {\r
   VOID  *Buffer;\r
@@ -1325,6 +1343,7 @@ AllocatePageTableMemory (
   if (Buffer != NULL) {\r
     return Buffer;\r
   }\r
+\r
   return AllocatePages (Pages);\r
 }\r
 \r
@@ -1337,7 +1356,7 @@ AllocatePageTableMemory (
 **/\r
 VOID *\r
 AllocateCodePages (\r
-  IN UINTN           Pages\r
+  IN UINTN  Pages\r
   )\r
 {\r
   EFI_STATUS            Status;\r
@@ -1351,7 +1370,8 @@ AllocateCodePages (
   if (EFI_ERROR (Status)) {\r
     return NULL;\r
   }\r
-  return (VOID *) (UINTN) Memory;\r
+\r
+  return (VOID *)(UINTN)Memory;\r
 }\r
 \r
 /**\r
@@ -1366,8 +1386,8 @@ AllocateCodePages (
 **/\r
 VOID *\r
 AllocateAlignedCodePages (\r
-  IN UINTN            Pages,\r
-  IN UINTN            Alignment\r
+  IN UINTN  Pages,\r
+  IN UINTN  Alignment\r
   )\r
 {\r
   EFI_STATUS            Status;\r
@@ -1385,23 +1405,25 @@ AllocateAlignedCodePages (
   if (Pages == 0) {\r
     return NULL;\r
   }\r
+\r
   if (Alignment > EFI_PAGE_SIZE) {\r
     //\r
     // Calculate the total number of pages since alignment is larger than page size.\r
     //\r
-    AlignmentMask  = Alignment - 1;\r
-    RealPages      = Pages + EFI_SIZE_TO_PAGES (Alignment);\r
+    AlignmentMask = Alignment - 1;\r
+    RealPages     = Pages + EFI_SIZE_TO_PAGES (Alignment);\r
     //\r
     // Make sure that Pages plus EFI_SIZE_TO_PAGES (Alignment) does not overflow.\r
     //\r
     ASSERT (RealPages > Pages);\r
 \r
-    Status         = gSmst->SmmAllocatePages (AllocateAnyPages, EfiRuntimeServicesCode, RealPages, &Memory);\r
+    Status = gSmst->SmmAllocatePages (AllocateAnyPages, EfiRuntimeServicesCode, RealPages, &Memory);\r
     if (EFI_ERROR (Status)) {\r
       return NULL;\r
     }\r
-    AlignedMemory  = ((UINTN) Memory + AlignmentMask) & ~AlignmentMask;\r
-    UnalignedPages = EFI_SIZE_TO_PAGES (AlignedMemory - (UINTN) Memory);\r
+\r
+    AlignedMemory  = ((UINTN)Memory + AlignmentMask) & ~AlignmentMask;\r
+    UnalignedPages = EFI_SIZE_TO_PAGES (AlignedMemory - (UINTN)Memory);\r
     if (UnalignedPages > 0) {\r
       //\r
       // Free first unaligned page(s).\r
@@ -1409,6 +1431,7 @@ AllocateAlignedCodePages (
       Status = gSmst->SmmFreePages (Memory, UnalignedPages);\r
       ASSERT_EFI_ERROR (Status);\r
     }\r
+\r
     Memory         = AlignedMemory + EFI_PAGES_TO_SIZE (Pages);\r
     UnalignedPages = RealPages - Pages - UnalignedPages;\r
     if (UnalignedPages > 0) {\r
@@ -1426,9 +1449,11 @@ AllocateAlignedCodePages (
     if (EFI_ERROR (Status)) {\r
       return NULL;\r
     }\r
-    AlignedMemory  = (UINTN) Memory;\r
+\r
+    AlignedMemory = (UINTN)Memory;\r
   }\r
-  return (VOID *) AlignedMemory;\r
+\r
+  return (VOID *)AlignedMemory;\r
 }\r
 \r
 /**\r
@@ -1447,6 +1472,7 @@ PerformRemainingTasks (
     if (FeaturePcdGet (PcdCpuSmmProfileEnable)) {\r
       SmmProfileStart ();\r
     }\r
+\r
     //\r
     // Create a mix of 2MB and 4KB page table. Update some memory ranges absent and execute-disable.\r
     //\r
index fc9b748948617aa9c6ee48cc87abec80374619ab..26d07c5b5ea0bcb5f7761d3beb14fb1c82533f1a 100644 (file)
@@ -74,69 +74,69 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 typedef union {\r
   struct {\r
     // enable shadow stacks\r
-    UINT32  SH_STK_ENP:1;\r
+    UINT32    SH_STK_ENP              : 1;\r
     // enable the WRSS{D,Q}W instructions.\r
-    UINT32  WR_SHSTK_EN:1;\r
+    UINT32    WR_SHSTK_EN             : 1;\r
     // enable tracking of indirect call/jmp targets to be ENDBRANCH instruction.\r
-    UINT32  ENDBR_EN:1;\r
+    UINT32    ENDBR_EN                : 1;\r
     // enable legacy compatibility treatment for indirect call/jmp tracking.\r
-    UINT32  LEG_IW_EN:1;\r
+    UINT32    LEG_IW_EN               : 1;\r
     // enable use of no-track prefix on indirect call/jmp.\r
-    UINT32  NO_TRACK_EN:1;\r
+    UINT32    NO_TRACK_EN             : 1;\r
     // disable suppression of CET indirect branch tracking on legacy compatibility.\r
-    UINT32  SUPPRESS_DIS:1;\r
-    UINT32  RSVD:4;\r
+    UINT32    SUPPRESS_DIS            : 1;\r
+    UINT32    RSVD                    : 4;\r
     // indirect branch tracking is suppressed.\r
     // This bit can be written to 1 only if TRACKER is written as IDLE.\r
-    UINT32  SUPPRESS:1;\r
+    UINT32    SUPPRESS                : 1;\r
     // Value of the endbranch state machine\r
     // Values: IDLE (0), WAIT_FOR_ENDBRANCH(1).\r
-    UINT32  TRACKER:1;\r
+    UINT32    TRACKER                 : 1;\r
     // linear address of a bitmap in memory indicating valid\r
     // pages as target of CALL/JMP_indirect that do not land on ENDBRANCH when CET is enabled\r
     // and not suppressed. Valid when ENDBR_EN is 1. Must be machine canonical when written on\r
     // parts that support 64 bit mode. On parts that do not support 64 bit mode, the bits 63:32 are\r
     // reserved and must be 0. This value is extended by 12 bits at the low end to form the base address\r
     // (this automatically aligns the address on a 4-Kbyte boundary).\r
-    UINT32  EB_LEG_BITMAP_BASE_low:12;\r
-    UINT32  EB_LEG_BITMAP_BASE_high:32;\r
+    UINT32    EB_LEG_BITMAP_BASE_low  : 12;\r
+    UINT32    EB_LEG_BITMAP_BASE_high : 32;\r
   } Bits;\r
-  UINT64   Uint64;\r
+  UINT64    Uint64;\r
 } MSR_IA32_CET;\r
 \r
 //\r
 // MSRs required for configuration of SMM Code Access Check\r
 //\r
-#define EFI_MSR_SMM_MCA_CAP                    0x17D\r
-#define  SMM_CODE_ACCESS_CHK_BIT               BIT58\r
+#define EFI_MSR_SMM_MCA_CAP       0x17D\r
+#define  SMM_CODE_ACCESS_CHK_BIT  BIT58\r
 \r
-#define  SMM_FEATURE_CONTROL_LOCK_BIT          BIT0\r
-#define  SMM_CODE_CHK_EN_BIT                   BIT2\r
+#define  SMM_FEATURE_CONTROL_LOCK_BIT  BIT0\r
+#define  SMM_CODE_CHK_EN_BIT           BIT2\r
 \r
 ///\r
 /// Page Table Entry\r
 ///\r
-#define IA32_PG_P                   BIT0\r
-#define IA32_PG_RW                  BIT1\r
-#define IA32_PG_U                   BIT2\r
-#define IA32_PG_WT                  BIT3\r
-#define IA32_PG_CD                  BIT4\r
-#define IA32_PG_A                   BIT5\r
-#define IA32_PG_D                   BIT6\r
-#define IA32_PG_PS                  BIT7\r
-#define IA32_PG_PAT_2M              BIT12\r
-#define IA32_PG_PAT_4K              IA32_PG_PS\r
-#define IA32_PG_PMNT                BIT62\r
-#define IA32_PG_NX                  BIT63\r
-\r
-#define PAGE_ATTRIBUTE_BITS         (IA32_PG_D | IA32_PG_A | IA32_PG_U | IA32_PG_RW | IA32_PG_P)\r
+#define IA32_PG_P       BIT0\r
+#define IA32_PG_RW      BIT1\r
+#define IA32_PG_U       BIT2\r
+#define IA32_PG_WT      BIT3\r
+#define IA32_PG_CD      BIT4\r
+#define IA32_PG_A       BIT5\r
+#define IA32_PG_D       BIT6\r
+#define IA32_PG_PS      BIT7\r
+#define IA32_PG_PAT_2M  BIT12\r
+#define IA32_PG_PAT_4K  IA32_PG_PS\r
+#define IA32_PG_PMNT    BIT62\r
+#define IA32_PG_NX      BIT63\r
+\r
+#define PAGE_ATTRIBUTE_BITS  (IA32_PG_D | IA32_PG_A | IA32_PG_U | IA32_PG_RW | IA32_PG_P)\r
 //\r
 // Bits 1, 2, 5, 6 are reserved in the IA32 PAE PDPTE\r
 // X64 PAE PDPTE does not have such restriction\r
 //\r
-#define IA32_PAE_PDPTE_ATTRIBUTE_BITS    (IA32_PG_P)\r
+#define IA32_PAE_PDPTE_ATTRIBUTE_BITS  (IA32_PG_P)\r
 \r
-#define PAGE_PROGATE_BITS           (IA32_PG_NX | PAGE_ATTRIBUTE_BITS)\r
+#define PAGE_PROGATE_BITS  (IA32_PG_NX | PAGE_ATTRIBUTE_BITS)\r
 \r
 #define PAGING_4K_MASK  0xFFF\r
 #define PAGING_2M_MASK  0x1FFFFF\r
@@ -144,11 +144,11 @@ typedef union {
 \r
 #define PAGING_PAE_INDEX_MASK  0x1FF\r
 \r
-#define PAGING_4K_ADDRESS_MASK_64 0x000FFFFFFFFFF000ull\r
-#define PAGING_2M_ADDRESS_MASK_64 0x000FFFFFFFE00000ull\r
-#define PAGING_1G_ADDRESS_MASK_64 0x000FFFFFC0000000ull\r
+#define PAGING_4K_ADDRESS_MASK_64  0x000FFFFFFFFFF000ull\r
+#define PAGING_2M_ADDRESS_MASK_64  0x000FFFFFFFE00000ull\r
+#define PAGING_1G_ADDRESS_MASK_64  0x000FFFFFC0000000ull\r
 \r
-#define SMRR_MAX_ADDRESS       BASE_4GB\r
+#define SMRR_MAX_ADDRESS  BASE_4GB\r
 \r
 typedef enum {\r
   PageNone,\r
@@ -158,28 +158,28 @@ typedef enum {
 } PAGE_ATTRIBUTE;\r
 \r
 typedef struct {\r
-  PAGE_ATTRIBUTE   Attribute;\r
-  UINT64           Length;\r
-  UINT64           AddressMask;\r
+  PAGE_ATTRIBUTE    Attribute;\r
+  UINT64            Length;\r
+  UINT64            AddressMask;\r
 } PAGE_ATTRIBUTE_TABLE;\r
 \r
 //\r
 // Size of Task-State Segment defined in IA32 Manual\r
 //\r
-#define TSS_SIZE              104\r
-#define EXCEPTION_TSS_SIZE    (TSS_SIZE + 4) // Add 4 bytes SSP\r
-#define TSS_X64_IST1_OFFSET   36\r
-#define TSS_IA32_CR3_OFFSET   28\r
-#define TSS_IA32_ESP_OFFSET   56\r
-#define TSS_IA32_SSP_OFFSET   104\r
+#define TSS_SIZE             104\r
+#define EXCEPTION_TSS_SIZE   (TSS_SIZE + 4)  // Add 4 bytes SSP\r
+#define TSS_X64_IST1_OFFSET  36\r
+#define TSS_IA32_CR3_OFFSET  28\r
+#define TSS_IA32_ESP_OFFSET  56\r
+#define TSS_IA32_SSP_OFFSET  104\r
 \r
-#define CR0_WP                BIT16\r
+#define CR0_WP  BIT16\r
 \r
 //\r
 // Code select value\r
 //\r
-#define PROTECT_MODE_CODE_SEGMENT          0x08\r
-#define LONG_MODE_CODE_SEGMENT             0x38\r
+#define PROTECT_MODE_CODE_SEGMENT  0x08\r
+#define LONG_MODE_CODE_SEGMENT     0x38\r
 \r
 //\r
 // The size 0x20 must be bigger than\r
@@ -189,31 +189,31 @@ typedef struct {
 //\r
 #define BACK_BUF_SIZE  0x20\r
 \r
-#define EXCEPTION_VECTOR_NUMBER     0x20\r
+#define EXCEPTION_VECTOR_NUMBER  0x20\r
 \r
-#define INVALID_APIC_ID 0xFFFFFFFFFFFFFFFFULL\r
+#define INVALID_APIC_ID  0xFFFFFFFFFFFFFFFFULL\r
 \r
-typedef UINT32                              SMM_CPU_ARRIVAL_EXCEPTIONS;\r
-#define ARRIVAL_EXCEPTION_BLOCKED           0x1\r
-#define ARRIVAL_EXCEPTION_DELAYED           0x2\r
-#define ARRIVAL_EXCEPTION_SMI_DISABLED      0x4\r
+typedef UINT32 SMM_CPU_ARRIVAL_EXCEPTIONS;\r
+#define ARRIVAL_EXCEPTION_BLOCKED       0x1\r
+#define ARRIVAL_EXCEPTION_DELAYED       0x2\r
+#define ARRIVAL_EXCEPTION_SMI_DISABLED  0x4\r
 \r
 //\r
 // Wrapper used to convert EFI_AP_PROCEDURE2 and EFI_AP_PROCEDURE.\r
 //\r
 typedef struct {\r
-  EFI_AP_PROCEDURE  Procedure;\r
-  VOID              *ProcedureArgument;\r
+  EFI_AP_PROCEDURE    Procedure;\r
+  VOID                *ProcedureArgument;\r
 } PROCEDURE_WRAPPER;\r
 \r
 #define PROCEDURE_TOKEN_SIGNATURE  SIGNATURE_32 ('P', 'R', 'T', 'S')\r
 \r
 typedef struct {\r
-  UINTN                   Signature;\r
-  LIST_ENTRY              Link;\r
+  UINTN              Signature;\r
+  LIST_ENTRY         Link;\r
 \r
-  SPIN_LOCK               *SpinLock;\r
-  volatile UINT32         RunningApCount;\r
+  SPIN_LOCK          *SpinLock;\r
+  volatile UINT32    RunningApCount;\r
 } PROCEDURE_TOKEN;\r
 \r
 #define PROCEDURE_TOKEN_FROM_LINK(a)  CR (a, PROCEDURE_TOKEN, Link, PROCEDURE_TOKEN_SIGNATURE)\r
@@ -221,10 +221,10 @@ typedef struct {
 #define TOKEN_BUFFER_SIGNATURE  SIGNATURE_32 ('T', 'K', 'B', 'S')\r
 \r
 typedef struct {\r
-  UINTN                   Signature;\r
-  LIST_ENTRY              Link;\r
+  UINTN         Signature;\r
+  LIST_ENTRY    Link;\r
 \r
-  UINT8                   *Buffer;\r
+  UINT8         *Buffer;\r
 } TOKEN_BUFFER;\r
 \r
 #define TOKEN_BUFFER_FROM_LINK(a)  CR (a, TOKEN_BUFFER, Link, TOKEN_BUFFER_SIGNATURE)\r
@@ -237,33 +237,33 @@ typedef struct {
 #define SMM_CPU_PRIVATE_DATA_SIGNATURE  SIGNATURE_32 ('s', 'c', 'p', 'u')\r
 \r
 typedef struct {\r
-  UINTN                           Signature;\r
+  UINTN                             Signature;\r
 \r
-  EFI_HANDLE                      SmmCpuHandle;\r
+  EFI_HANDLE                        SmmCpuHandle;\r
 \r
-  EFI_PROCESSOR_INFORMATION       *ProcessorInfo;\r
-  SMM_CPU_OPERATION               *Operation;\r
-  UINTN                           *CpuSaveStateSize;\r
-  VOID                            **CpuSaveState;\r
+  EFI_PROCESSOR_INFORMATION         *ProcessorInfo;\r
+  SMM_CPU_OPERATION                 *Operation;\r
+  UINTN                             *CpuSaveStateSize;\r
+  VOID                              **CpuSaveState;\r
 \r
-  EFI_SMM_RESERVED_SMRAM_REGION   SmmReservedSmramRegion[1];\r
-  EFI_SMM_ENTRY_CONTEXT           SmmCoreEntryContext;\r
-  EFI_SMM_ENTRY_POINT             SmmCoreEntry;\r
+  EFI_SMM_RESERVED_SMRAM_REGION     SmmReservedSmramRegion[1];\r
+  EFI_SMM_ENTRY_CONTEXT             SmmCoreEntryContext;\r
+  EFI_SMM_ENTRY_POINT               SmmCoreEntry;\r
 \r
-  EFI_SMM_CONFIGURATION_PROTOCOL  SmmConfiguration;\r
+  EFI_SMM_CONFIGURATION_PROTOCOL    SmmConfiguration;\r
 \r
-  PROCEDURE_WRAPPER               *ApWrapperFunc;\r
-  LIST_ENTRY                      TokenList;\r
-  LIST_ENTRY                      *FirstFreeToken;\r
+  PROCEDURE_WRAPPER                 *ApWrapperFunc;\r
+  LIST_ENTRY                        TokenList;\r
+  LIST_ENTRY                        *FirstFreeToken;\r
 } SMM_CPU_PRIVATE_DATA;\r
 \r
 extern SMM_CPU_PRIVATE_DATA  *gSmmCpuPrivate;\r
-extern CPU_HOT_PLUG_DATA      mCpuHotPlugData;\r
-extern UINTN                  mMaxNumberOfCpus;\r
-extern UINTN                  mNumberOfCpus;\r
-extern EFI_SMM_CPU_PROTOCOL   mSmmCpu;\r
-extern EFI_MM_MP_PROTOCOL     mSmmMp;\r
-extern UINTN                  mInternalCr3;\r
+extern CPU_HOT_PLUG_DATA     mCpuHotPlugData;\r
+extern UINTN                 mMaxNumberOfCpus;\r
+extern UINTN                 mNumberOfCpus;\r
+extern EFI_SMM_CPU_PROTOCOL  mSmmCpu;\r
+extern EFI_MM_MP_PROTOCOL    mSmmMp;\r
+extern UINTN                 mInternalCr3;\r
 \r
 ///\r
 /// The mode of the CPU at the time an SMI occurs\r
@@ -291,11 +291,11 @@ extern UINT8  mSmmSaveStateRegisterLma;
 EFI_STATUS\r
 EFIAPI\r
 SmmReadSaveState (\r
-  IN CONST EFI_SMM_CPU_PROTOCOL         *This,\r
-  IN UINTN                              Width,\r
-  IN EFI_SMM_SAVE_STATE_REGISTER        Register,\r
-  IN UINTN                              CpuIndex,\r
-  OUT VOID                              *Buffer\r
+  IN CONST EFI_SMM_CPU_PROTOCOL   *This,\r
+  IN UINTN                        Width,\r
+  IN EFI_SMM_SAVE_STATE_REGISTER  Register,\r
+  IN UINTN                        CpuIndex,\r
+  OUT VOID                        *Buffer\r
   );\r
 \r
 /**\r
@@ -315,11 +315,11 @@ SmmReadSaveState (
 EFI_STATUS\r
 EFIAPI\r
 SmmWriteSaveState (\r
-  IN CONST EFI_SMM_CPU_PROTOCOL         *This,\r
-  IN UINTN                              Width,\r
-  IN EFI_SMM_SAVE_STATE_REGISTER        Register,\r
-  IN UINTN                              CpuIndex,\r
-  IN CONST VOID                         *Buffer\r
+  IN CONST EFI_SMM_CPU_PROTOCOL   *This,\r
+  IN UINTN                        Width,\r
+  IN EFI_SMM_SAVE_STATE_REGISTER  Register,\r
+  IN UINTN                        CpuIndex,\r
+  IN CONST VOID                   *Buffer\r
   );\r
 \r
 /**\r
@@ -376,16 +376,16 @@ WriteSaveStateRegister (
   IN CONST VOID                   *Buffer\r
   );\r
 \r
-extern CONST UINT8                  gcSmmInitTemplate[];\r
-extern CONST UINT16                 gcSmmInitSize;\r
-X86_ASSEMBLY_PATCH_LABEL            gPatchSmmCr0;\r
-extern UINT32                       mSmmCr0;\r
-X86_ASSEMBLY_PATCH_LABEL            gPatchSmmCr3;\r
-extern UINT32                       mSmmCr4;\r
-X86_ASSEMBLY_PATCH_LABEL            gPatchSmmCr4;\r
-X86_ASSEMBLY_PATCH_LABEL            gPatchSmmInitStack;\r
-X86_ASSEMBLY_PATCH_LABEL            mPatchCetSupported;\r
-extern BOOLEAN                      mCetSupported;\r
+extern CONST UINT8        gcSmmInitTemplate[];\r
+extern CONST UINT16       gcSmmInitSize;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatchSmmCr0;\r
+extern UINT32             mSmmCr0;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatchSmmCr3;\r
+extern UINT32             mSmmCr4;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatchSmmCr4;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatchSmmInitStack;\r
+X86_ASSEMBLY_PATCH_LABEL  mPatchCetSupported;\r
+extern BOOLEAN            mCetSupported;\r
 \r
 /**\r
   Semaphore operation for all processor relocate SMMBase.\r
@@ -400,13 +400,13 @@ SmmRelocationSemaphoreComplete (
 /// The type of SMM CPU Information\r
 ///\r
 typedef struct {\r
-  SPIN_LOCK                         *Busy;\r
-  volatile EFI_AP_PROCEDURE2        Procedure;\r
-  volatile VOID                     *Parameter;\r
-  volatile UINT32                   *Run;\r
-  volatile BOOLEAN                  *Present;\r
-  PROCEDURE_TOKEN                   *Token;\r
-  EFI_STATUS                        *Status;\r
+  SPIN_LOCK                     *Busy;\r
+  volatile EFI_AP_PROCEDURE2    Procedure;\r
+  volatile VOID                 *Parameter;\r
+  volatile UINT32               *Run;\r
+  volatile BOOLEAN              *Present;\r
+  PROCEDURE_TOKEN               *Token;\r
+  EFI_STATUS                    *Status;\r
 } SMM_CPU_DATA_BLOCK;\r
 \r
 typedef enum {\r
@@ -432,56 +432,56 @@ typedef struct {
   VOID                          *StartupProcArgs;\r
 } SMM_DISPATCHER_MP_SYNC_DATA;\r
 \r
-#define SMM_PSD_OFFSET              0xfb00\r
+#define SMM_PSD_OFFSET  0xfb00\r
 \r
 ///\r
 /// All global semaphores' pointer\r
 ///\r
 typedef struct {\r
-  volatile UINT32      *Counter;\r
-  volatile BOOLEAN     *InsideSmm;\r
-  volatile BOOLEAN     *AllCpusInSync;\r
-  SPIN_LOCK            *PFLock;\r
-  SPIN_LOCK            *CodeAccessCheckLock;\r
+  volatile UINT32     *Counter;\r
+  volatile BOOLEAN    *InsideSmm;\r
+  volatile BOOLEAN    *AllCpusInSync;\r
+  SPIN_LOCK           *PFLock;\r
+  SPIN_LOCK           *CodeAccessCheckLock;\r
 } SMM_CPU_SEMAPHORE_GLOBAL;\r
 \r
 ///\r
 /// All semaphores for each processor\r
 ///\r
 typedef struct {\r
-  SPIN_LOCK                         *Busy;\r
-  volatile UINT32                   *Run;\r
-  volatile BOOLEAN                  *Present;\r
-  SPIN_LOCK                         *Token;\r
+  SPIN_LOCK           *Busy;\r
+  volatile UINT32     *Run;\r
+  volatile BOOLEAN    *Present;\r
+  SPIN_LOCK           *Token;\r
 } SMM_CPU_SEMAPHORE_CPU;\r
 \r
 ///\r
 /// All semaphores' information\r
 ///\r
 typedef struct {\r
-  SMM_CPU_SEMAPHORE_GLOBAL          SemaphoreGlobal;\r
-  SMM_CPU_SEMAPHORE_CPU             SemaphoreCpu;\r
+  SMM_CPU_SEMAPHORE_GLOBAL    SemaphoreGlobal;\r
+  SMM_CPU_SEMAPHORE_CPU       SemaphoreCpu;\r
 } SMM_CPU_SEMAPHORES;\r
 \r
-extern IA32_DESCRIPTOR                     gcSmiGdtr;\r
-extern EFI_PHYSICAL_ADDRESS                mGdtBuffer;\r
-extern UINTN                               mGdtBufferSize;\r
-extern IA32_DESCRIPTOR                     gcSmiIdtr;\r
-extern VOID                                *gcSmiIdtrPtr;\r
-extern UINT64                              gPhyMask;\r
-extern SMM_DISPATCHER_MP_SYNC_DATA         *mSmmMpSyncData;\r
-extern UINTN                               mSmmStackArrayBase;\r
-extern UINTN                               mSmmStackArrayEnd;\r
-extern UINTN                               mSmmStackSize;\r
-extern EFI_SMM_CPU_SERVICE_PROTOCOL        mSmmCpuService;\r
-extern IA32_DESCRIPTOR                     gcSmiInitGdtr;\r
-extern SMM_CPU_SEMAPHORES                  mSmmCpuSemaphores;\r
-extern UINTN                               mSemaphoreSize;\r
-extern SPIN_LOCK                           *mPFLock;\r
-extern SPIN_LOCK                           *mConfigSmmCodeAccessCheckLock;\r
-extern EFI_SMRAM_DESCRIPTOR                *mSmmCpuSmramRanges;\r
-extern UINTN                               mSmmCpuSmramRangeCount;\r
-extern UINT8                               mPhysicalAddressBits;\r
+extern IA32_DESCRIPTOR               gcSmiGdtr;\r
+extern EFI_PHYSICAL_ADDRESS          mGdtBuffer;\r
+extern UINTN                         mGdtBufferSize;\r
+extern IA32_DESCRIPTOR               gcSmiIdtr;\r
+extern VOID                          *gcSmiIdtrPtr;\r
+extern UINT64                        gPhyMask;\r
+extern SMM_DISPATCHER_MP_SYNC_DATA   *mSmmMpSyncData;\r
+extern UINTN                         mSmmStackArrayBase;\r
+extern UINTN                         mSmmStackArrayEnd;\r
+extern UINTN                         mSmmStackSize;\r
+extern EFI_SMM_CPU_SERVICE_PROTOCOL  mSmmCpuService;\r
+extern IA32_DESCRIPTOR               gcSmiInitGdtr;\r
+extern SMM_CPU_SEMAPHORES            mSmmCpuSemaphores;\r
+extern UINTN                         mSemaphoreSize;\r
+extern SPIN_LOCK                     *mPFLock;\r
+extern SPIN_LOCK                     *mConfigSmmCodeAccessCheckLock;\r
+extern EFI_SMRAM_DESCRIPTOR          *mSmmCpuSmramRanges;\r
+extern UINTN                         mSmmCpuSmramRangeCount;\r
+extern UINT8                         mPhysicalAddressBits;\r
 \r
 //\r
 // Copy of the PcdPteMemoryEncryptionAddressOrMask\r
@@ -497,10 +497,9 @@ extern UINT64  mAddressEncMask;
 **/\r
 UINT32\r
 Gen4GPageTable (\r
-  IN      BOOLEAN                   Is32BitPageTable\r
+  IN      BOOLEAN  Is32BitPageTable\r
   );\r
 \r
-\r
 /**\r
   Initialize global data for MP synchronization.\r
 \r
@@ -511,9 +510,9 @@ Gen4GPageTable (
 **/\r
 UINT32\r
 InitializeMpServiceData (\r
-  IN VOID        *Stacks,\r
-  IN UINTN       StackSize,\r
-  IN UINTN       ShadowStackSize\r
+  IN VOID   *Stacks,\r
+  IN UINTN  StackSize,\r
+  IN UINTN  ShadowStackSize\r
   );\r
 \r
 /**\r
@@ -544,7 +543,7 @@ StartSyncTimer (
 BOOLEAN\r
 EFIAPI\r
 IsSyncTimerTimeout (\r
-  IN      UINT64                    Timer\r
+  IN      UINT64  Timer\r
   );\r
 \r
 /**\r
@@ -567,8 +566,8 @@ InitializeIDTSmmStackGuard (
 VOID\r
 EFIAPI\r
 InitializeIdtIst (\r
-  IN EFI_EXCEPTION_TYPE            ExceptionType,\r
-  IN UINT8                         Ist\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN UINT8               Ist\r
   );\r
 \r
 /**\r
@@ -631,9 +630,9 @@ SmmInitPageTable (
 EFI_STATUS\r
 EFIAPI\r
 SmmStartupThisAp (\r
-  IN      EFI_AP_PROCEDURE          Procedure,\r
-  IN      UINTN                     CpuIndex,\r
-  IN OUT  VOID                      *ProcArguments OPTIONAL\r
+  IN      EFI_AP_PROCEDURE  Procedure,\r
+  IN      UINTN             CpuIndex,\r
+  IN OUT  VOID              *ProcArguments OPTIONAL\r
   );\r
 \r
 /**\r
@@ -653,9 +652,9 @@ SmmStartupThisAp (
 EFI_STATUS\r
 EFIAPI\r
 SmmBlockingStartupThisAp (\r
-  IN      EFI_AP_PROCEDURE          Procedure,\r
-  IN      UINTN                     CpuIndex,\r
-  IN OUT  VOID                      *ProcArguments OPTIONAL\r
+  IN      EFI_AP_PROCEDURE  Procedure,\r
+  IN      UINTN             CpuIndex,\r
+  IN OUT  VOID              *ProcArguments OPTIONAL\r
   );\r
 \r
 /**\r
@@ -683,9 +682,9 @@ SmmBlockingStartupThisAp (
 EFI_STATUS\r
 EFIAPI\r
 SmmSetMemoryAttributes (\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length,\r
-  IN  UINT64                                     Attributes\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length,\r
+  IN  UINT64                Attributes\r
   );\r
 \r
 /**\r
@@ -713,9 +712,9 @@ SmmSetMemoryAttributes (
 EFI_STATUS\r
 EFIAPI\r
 SmmClearMemoryAttributes (\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length,\r
-  IN  UINT64                                     Attributes\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length,\r
+  IN  UINT64                Attributes\r
   );\r
 \r
 /**\r
@@ -738,8 +737,8 @@ InitializeMpSyncData (
 **/\r
 VOID\r
 FindSmramInfo (\r
-  OUT UINT32   *SmrrBase,\r
-  OUT UINT32   *SmrrSize\r
+  OUT UINT32  *SmrrBase,\r
+  OUT UINT32  *SmrrSize\r
   );\r
 \r
 /**\r
@@ -765,8 +764,8 @@ SmmRelocateBases (
 VOID\r
 EFIAPI\r
 SmiPFHandler (\r
-  IN EFI_EXCEPTION_TYPE   InterruptType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  InterruptType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   );\r
 \r
 /**\r
@@ -795,7 +794,7 @@ PerformPreTasks (
 **/\r
 VOID\r
 InitMsrSpinLockByIndex (\r
-  IN UINT32      MsrIndex\r
+  IN UINT32  MsrIndex\r
   );\r
 \r
 /**\r
@@ -908,7 +907,7 @@ InstallSmiHandler (
 **/\r
 VOID\r
 DumpModuleInfoByIp (\r
-  IN  UINTN              CallerIpAddress\r
+  IN  UINTN  CallerIpAddress\r
   );\r
 \r
 /**\r
@@ -964,8 +963,8 @@ SetPageTableAttributes (
 **/\r
 VOID\r
 GetPageTable (\r
-  OUT UINTN   *Base,\r
-  OUT BOOLEAN *FiveLevels OPTIONAL\r
+  OUT UINTN    *Base,\r
+  OUT BOOLEAN  *FiveLevels OPTIONAL\r
   );\r
 \r
 /**\r
@@ -994,10 +993,10 @@ GetPageTable (
 EFI_STATUS\r
 EFIAPI\r
 SmmSetMemoryAttributesEx (\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length,\r
-  IN  UINT64                                     Attributes,\r
-  OUT BOOLEAN                                    *IsSplitted  OPTIONAL\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length,\r
+  IN  UINT64                Attributes,\r
+  OUT BOOLEAN               *IsSplitted  OPTIONAL\r
   );\r
 \r
 /**\r
@@ -1026,10 +1025,10 @@ SmmSetMemoryAttributesEx (
 EFI_STATUS\r
 EFIAPI\r
 SmmClearMemoryAttributesEx (\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length,\r
-  IN  UINT64                                     Attributes,\r
-  OUT BOOLEAN                                    *IsSplitted  OPTIONAL\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length,\r
+  IN  UINT64                Attributes,\r
+  OUT BOOLEAN               *IsSplitted  OPTIONAL\r
   );\r
 \r
 /**\r
@@ -1049,7 +1048,7 @@ SmmClearMemoryAttributesEx (
 **/\r
 VOID *\r
 AllocatePageTableMemory (\r
-  IN UINTN           Pages\r
+  IN UINTN  Pages\r
   );\r
 \r
 /**\r
@@ -1061,7 +1060,7 @@ AllocatePageTableMemory (
 **/\r
 VOID *\r
 AllocateCodePages (\r
-  IN UINTN           Pages\r
+  IN UINTN  Pages\r
   );\r
 \r
 /**\r
@@ -1076,16 +1075,15 @@ AllocateCodePages (
 **/\r
 VOID *\r
 AllocateAlignedCodePages (\r
-  IN UINTN            Pages,\r
-  IN UINTN            Alignment\r
+  IN UINTN  Pages,\r
+  IN UINTN  Alignment\r
   );\r
 \r
-\r
 //\r
 // S3 related global variable and function prototype.\r
 //\r
 \r
-extern BOOLEAN                mSmmS3Flag;\r
+extern BOOLEAN  mSmmS3Flag;\r
 \r
 /**\r
   Initialize SMM S3 resume state structure used during S3 Resume.\r
@@ -1151,9 +1149,9 @@ TransferApToSafeState (
 **/\r
 EFI_STATUS\r
 SetShadowStack (\r
-  IN  UINTN                                      Cr3,\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length\r
+  IN  UINTN                 Cr3,\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length\r
   );\r
 \r
 /**\r
@@ -1167,9 +1165,9 @@ SetShadowStack (
 **/\r
 EFI_STATUS\r
 SetNotPresentPage (\r
-  IN  UINTN                                      Cr3,\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length\r
+  IN  UINTN                 Cr3,\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length\r
   );\r
 \r
 /**\r
@@ -1210,10 +1208,10 @@ InitShadowStack (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiSmmSetMemoryAttributes (\r
-  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL   *This,\r
-  IN  EFI_PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                                Length,\r
-  IN  UINT64                                Attributes\r
+  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL  *This,\r
+  IN  EFI_PHYSICAL_ADDRESS                 BaseAddress,\r
+  IN  UINT64                               Length,\r
+  IN  UINT64                               Attributes\r
   );\r
 \r
 /**\r
@@ -1242,10 +1240,10 @@ EdkiiSmmSetMemoryAttributes (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiSmmClearMemoryAttributes (\r
-  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL   *This,\r
-  IN  EFI_PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                                Length,\r
-  IN  UINT64                                Attributes\r
+  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL  *This,\r
+  IN  EFI_PHYSICAL_ADDRESS                 BaseAddress,\r
+  IN  UINT64                               Length,\r
+  IN  UINT64                               Attributes\r
   );\r
 \r
 /**\r
@@ -1272,10 +1270,10 @@ EdkiiSmmClearMemoryAttributes (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiSmmGetMemoryAttributes (\r
-  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL   *This,\r
-  IN  EFI_PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                                Length,\r
-  IN  UINT64                                *Attributes\r
+  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL  *This,\r
+  IN  EFI_PHYSICAL_ADDRESS                 BaseAddress,\r
+  IN  UINT64                               Length,\r
+  IN  UINT64                               *Attributes\r
   );\r
 \r
 /**\r
@@ -1285,7 +1283,7 @@ EdkiiSmmGetMemoryAttributes (
 VOID\r
 EFIAPI\r
 PiSmmCpuSmmInitFixupAddress (\r
- );\r
 );\r
 \r
 /**\r
   This function fixes up the address of the global variable or function\r
@@ -1294,7 +1292,7 @@ PiSmmCpuSmmInitFixupAddress (
 VOID\r
 EFIAPI\r
 PiSmmCpuSmiEntryFixupAddress (\r
- );\r
 );\r
 \r
 /**\r
   This function reads CR2 register when on-demand paging is enabled\r
@@ -1355,12 +1353,12 @@ RestoreCr2 (
 **/\r
 EFI_STATUS\r
 InternalSmmStartupThisAp (\r
-  IN      EFI_AP_PROCEDURE2              Procedure,\r
-  IN      UINTN                          CpuIndex,\r
-  IN OUT  VOID                           *ProcArguments OPTIONAL,\r
-  IN OUT  MM_COMPLETION                  *Token,\r
-  IN      UINTN                          TimeoutInMicroseconds,\r
-  IN OUT  EFI_STATUS                     *CpuStatus\r
+  IN      EFI_AP_PROCEDURE2  Procedure,\r
+  IN      UINTN              CpuIndex,\r
+  IN OUT  VOID               *ProcArguments OPTIONAL,\r
+  IN OUT  MM_COMPLETION      *Token,\r
+  IN      UINTN              TimeoutInMicroseconds,\r
+  IN OUT  EFI_STATUS         *CpuStatus\r
   );\r
 \r
 /**\r
@@ -1374,7 +1372,7 @@ InternalSmmStartupThisAp (
 **/\r
 BOOLEAN\r
 IsTokenInUse (\r
-  IN SPIN_LOCK           *Token\r
+  IN SPIN_LOCK  *Token\r
   );\r
 \r
 /**\r
@@ -1405,7 +1403,7 @@ IsApReady (
 **/\r
 BOOLEAN\r
 IsPresentAp (\r
-  IN UINTN        CpuIndex\r
+  IN UINTN  CpuIndex\r
   );\r
 \r
 /**\r
@@ -1439,11 +1437,11 @@ IsPresentAp (
 **/\r
 EFI_STATUS\r
 InternalSmmStartupAllAPs (\r
-  IN       EFI_AP_PROCEDURE2             Procedure,\r
-  IN       UINTN                         TimeoutInMicroseconds,\r
-  IN OUT   VOID                          *ProcedureArguments OPTIONAL,\r
-  IN OUT   MM_COMPLETION                 *Token,\r
-  IN OUT   EFI_STATUS                    *CPUStatus\r
+  IN       EFI_AP_PROCEDURE2  Procedure,\r
+  IN       UINTN              TimeoutInMicroseconds,\r
+  IN OUT   VOID               *ProcedureArguments OPTIONAL,\r
+  IN OUT   MM_COMPLETION      *Token,\r
+  IN OUT   EFI_STATUS         *CPUStatus\r
   );\r
 \r
 /**\r
@@ -1466,8 +1464,8 @@ InternalSmmStartupAllAPs (
 **/\r
 EFI_STATUS\r
 RegisterStartupProcedure (\r
-  IN     EFI_AP_PROCEDURE    Procedure,\r
-  IN OUT VOID                *ProcedureArguments OPTIONAL\r
+  IN     EFI_AP_PROCEDURE  Procedure,\r
+  IN OUT VOID              *ProcedureArguments OPTIONAL\r
   );\r
 \r
 /**\r
index 12dde85cf1d96d72ef4e139c6917be9a0ee2224c..1f7cc15727cd1e93ec2a3c547cc77392ef175c10 100644 (file)
@@ -17,19 +17,19 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #define PREVIOUS_MEMORY_DESCRIPTOR(MemoryDescriptor, Size) \\r
   ((EFI_MEMORY_DESCRIPTOR *)((UINT8 *)(MemoryDescriptor) - (Size)))\r
 \r
-EFI_MEMORY_DESCRIPTOR *mUefiMemoryMap;\r
-UINTN                 mUefiMemoryMapSize;\r
-UINTN                 mUefiDescriptorSize;\r
+EFI_MEMORY_DESCRIPTOR  *mUefiMemoryMap;\r
+UINTN                  mUefiMemoryMapSize;\r
+UINTN                  mUefiDescriptorSize;\r
 \r
-EFI_GCD_MEMORY_SPACE_DESCRIPTOR   *mGcdMemSpace       = NULL;\r
-UINTN                             mGcdMemNumberOfDesc = 0;\r
+EFI_GCD_MEMORY_SPACE_DESCRIPTOR  *mGcdMemSpace       = NULL;\r
+UINTN                            mGcdMemNumberOfDesc = 0;\r
 \r
 EFI_MEMORY_ATTRIBUTES_TABLE  *mUefiMemoryAttributesTable = NULL;\r
 \r
-PAGE_ATTRIBUTE_TABLE mPageAttributeTable[] = {\r
-  {Page4K,  SIZE_4KB, PAGING_4K_ADDRESS_MASK_64},\r
-  {Page2M,  SIZE_2MB, PAGING_2M_ADDRESS_MASK_64},\r
-  {Page1G,  SIZE_1GB, PAGING_1G_ADDRESS_MASK_64},\r
+PAGE_ATTRIBUTE_TABLE  mPageAttributeTable[] = {\r
+  { Page4K, SIZE_4KB, PAGING_4K_ADDRESS_MASK_64 },\r
+  { Page2M, SIZE_2MB, PAGING_2M_ADDRESS_MASK_64 },\r
+  { Page1G, SIZE_1GB, PAGING_1G_ADDRESS_MASK_64 },\r
 };\r
 \r
 UINTN  mInternalCr3;\r
@@ -43,7 +43,7 @@ UINTN  mInternalCr3;
 **/\r
 VOID\r
 SetPageTableBase (\r
-  IN UINTN   Cr3\r
+  IN UINTN  Cr3\r
   )\r
 {\r
   mInternalCr3 = Cr3;\r
@@ -62,11 +62,13 @@ PageAttributeToLength (
   )\r
 {\r
   UINTN  Index;\r
-  for (Index = 0; Index < sizeof(mPageAttributeTable)/sizeof(mPageAttributeTable[0]); Index++) {\r
+\r
+  for (Index = 0; Index < sizeof (mPageAttributeTable)/sizeof (mPageAttributeTable[0]); Index++) {\r
     if (PageAttribute == mPageAttributeTable[Index].Attribute) {\r
       return (UINTN)mPageAttributeTable[Index].Length;\r
     }\r
   }\r
+\r
   return 0;\r
 }\r
 \r
@@ -83,11 +85,13 @@ PageAttributeToMask (
   )\r
 {\r
   UINTN  Index;\r
-  for (Index = 0; Index < sizeof(mPageAttributeTable)/sizeof(mPageAttributeTable[0]); Index++) {\r
+\r
+  for (Index = 0; Index < sizeof (mPageAttributeTable)/sizeof (mPageAttributeTable[0]); Index++) {\r
     if (PageAttribute == mPageAttributeTable[Index].Attribute) {\r
       return (UINTN)mPageAttributeTable[Index].AddressMask;\r
     }\r
   }\r
+\r
   return 0;\r
 }\r
 \r
@@ -101,22 +105,22 @@ PageAttributeToMask (
 **/\r
 VOID *\r
 GetPageTableEntry (\r
-  IN  PHYSICAL_ADDRESS                  Address,\r
-  OUT PAGE_ATTRIBUTE                    *PageAttribute\r
+  IN  PHYSICAL_ADDRESS  Address,\r
+  OUT PAGE_ATTRIBUTE    *PageAttribute\r
   )\r
 {\r
-  UINTN                 Index1;\r
-  UINTN                 Index2;\r
-  UINTN                 Index3;\r
-  UINTN                 Index4;\r
-  UINTN                 Index5;\r
-  UINT64                *L1PageTable;\r
-  UINT64                *L2PageTable;\r
-  UINT64                *L3PageTable;\r
-  UINT64                *L4PageTable;\r
-  UINT64                *L5PageTable;\r
-  UINTN                 PageTableBase;\r
-  BOOLEAN               Enable5LevelPaging;\r
+  UINTN    Index1;\r
+  UINTN    Index2;\r
+  UINTN    Index3;\r
+  UINTN    Index4;\r
+  UINTN    Index5;\r
+  UINT64   *L1PageTable;\r
+  UINT64   *L2PageTable;\r
+  UINT64   *L3PageTable;\r
+  UINT64   *L4PageTable;\r
+  UINT64   *L5PageTable;\r
+  UINTN    PageTableBase;\r
+  BOOLEAN  Enable5LevelPaging;\r
 \r
   GetPageTable (&PageTableBase, &Enable5LevelPaging);\r
 \r
@@ -126,7 +130,7 @@ GetPageTableEntry (
   Index2 = ((UINTN)Address >> 21) & PAGING_PAE_INDEX_MASK;\r
   Index1 = ((UINTN)Address >> 12) & PAGING_PAE_INDEX_MASK;\r
 \r
-  if (sizeof(UINTN) == sizeof(UINT64)) {\r
+  if (sizeof (UINTN) == sizeof (UINT64)) {\r
     if (Enable5LevelPaging) {\r
       L5PageTable = (UINT64 *)PageTableBase;\r
       if (L5PageTable[Index5] == 0) {\r
@@ -138,6 +142,7 @@ GetPageTableEntry (
     } else {\r
       L4PageTable = (UINT64 *)PageTableBase;\r
     }\r
+\r
     if (L4PageTable[Index4] == 0) {\r
       *PageAttribute = PageNone;\r
       return NULL;\r
@@ -147,10 +152,12 @@ GetPageTableEntry (
   } else {\r
     L3PageTable = (UINT64 *)PageTableBase;\r
   }\r
+\r
   if (L3PageTable[Index3] == 0) {\r
     *PageAttribute = PageNone;\r
     return NULL;\r
   }\r
+\r
   if ((L3PageTable[Index3] & IA32_PG_PS) != 0) {\r
     // 1G\r
     *PageAttribute = Page1G;\r
@@ -162,6 +169,7 @@ GetPageTableEntry (
     *PageAttribute = PageNone;\r
     return NULL;\r
   }\r
+\r
   if ((L2PageTable[Index2] & IA32_PG_PS) != 0) {\r
     // 2M\r
     *PageAttribute = Page2M;\r
@@ -174,6 +182,7 @@ GetPageTableEntry (
     *PageAttribute = PageNone;\r
     return NULL;\r
   }\r
+\r
   *PageAttribute = Page4K;\r
   return &L1PageTable[Index1];\r
 }\r
@@ -187,20 +196,24 @@ GetPageTableEntry (
 **/\r
 UINT64\r
 GetAttributesFromPageEntry (\r
-  IN  UINT64                            *PageEntry\r
+  IN  UINT64  *PageEntry\r
   )\r
 {\r
   UINT64  Attributes;\r
+\r
   Attributes = 0;\r
   if ((*PageEntry & IA32_PG_P) == 0) {\r
     Attributes |= EFI_MEMORY_RP;\r
   }\r
+\r
   if ((*PageEntry & IA32_PG_RW) == 0) {\r
     Attributes |= EFI_MEMORY_RO;\r
   }\r
+\r
   if ((*PageEntry & IA32_PG_NX) != 0) {\r
     Attributes |= EFI_MEMORY_XP;\r
   }\r
+\r
   return Attributes;\r
 }\r
 \r
@@ -214,17 +227,17 @@ GetAttributesFromPageEntry (
 **/\r
 VOID\r
 ConvertPageEntryAttribute (\r
-  IN  UINT64                            *PageEntry,\r
-  IN  UINT64                            Attributes,\r
-  IN  BOOLEAN                           IsSet,\r
-  OUT BOOLEAN                           *IsModified\r
+  IN  UINT64   *PageEntry,\r
+  IN  UINT64   Attributes,\r
+  IN  BOOLEAN  IsSet,\r
+  OUT BOOLEAN  *IsModified\r
   )\r
 {\r
   UINT64  CurrentPageEntry;\r
   UINT64  NewPageEntry;\r
 \r
   CurrentPageEntry = *PageEntry;\r
-  NewPageEntry = CurrentPageEntry;\r
+  NewPageEntry     = CurrentPageEntry;\r
   if ((Attributes & EFI_MEMORY_RP) != 0) {\r
     if (IsSet) {\r
       NewPageEntry &= ~(UINT64)IA32_PG_P;\r
@@ -232,6 +245,7 @@ ConvertPageEntryAttribute (
       NewPageEntry |= IA32_PG_P;\r
     }\r
   }\r
+\r
   if ((Attributes & EFI_MEMORY_RO) != 0) {\r
     if (IsSet) {\r
       NewPageEntry &= ~(UINT64)IA32_PG_RW;\r
@@ -250,6 +264,7 @@ ConvertPageEntryAttribute (
       NewPageEntry |= IA32_PG_RW;\r
     }\r
   }\r
+\r
   if ((Attributes & EFI_MEMORY_XP) != 0) {\r
     if (mXdSupported) {\r
       if (IsSet) {\r
@@ -259,6 +274,7 @@ ConvertPageEntryAttribute (
       }\r
     }\r
   }\r
+\r
   *PageEntry = NewPageEntry;\r
   if (CurrentPageEntry != NewPageEntry) {\r
     *IsModified = TRUE;\r
@@ -281,13 +297,13 @@ ConvertPageEntryAttribute (
 **/\r
 PAGE_ATTRIBUTE\r
 NeedSplitPage (\r
-  IN  PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                            Length,\r
-  IN  UINT64                            *PageEntry,\r
-  IN  PAGE_ATTRIBUTE                    PageAttribute\r
+  IN  PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64            Length,\r
+  IN  UINT64            *PageEntry,\r
+  IN  PAGE_ATTRIBUTE    PageAttribute\r
   )\r
 {\r
-  UINT64                PageEntryLength;\r
+  UINT64  PageEntryLength;\r
 \r
   PageEntryLength = PageAttributeToLength (PageAttribute);\r
 \r
@@ -315,14 +331,14 @@ NeedSplitPage (
 **/\r
 RETURN_STATUS\r
 SplitPage (\r
-  IN  UINT64                            *PageEntry,\r
-  IN  PAGE_ATTRIBUTE                    PageAttribute,\r
-  IN  PAGE_ATTRIBUTE                    SplitAttribute\r
+  IN  UINT64          *PageEntry,\r
+  IN  PAGE_ATTRIBUTE  PageAttribute,\r
+  IN  PAGE_ATTRIBUTE  SplitAttribute\r
   )\r
 {\r
-  UINT64   BaseAddress;\r
-  UINT64   *NewPageEntry;\r
-  UINTN    Index;\r
+  UINT64  BaseAddress;\r
+  UINT64  *NewPageEntry;\r
+  UINTN   Index;\r
 \r
   ASSERT (PageAttribute == Page2M || PageAttribute == Page1G);\r
 \r
@@ -337,10 +353,12 @@ SplitPage (
       if (NewPageEntry == NULL) {\r
         return RETURN_OUT_OF_RESOURCES;\r
       }\r
+\r
       BaseAddress = *PageEntry & PAGING_2M_ADDRESS_MASK_64;\r
-      for (Index = 0; Index < SIZE_4KB / sizeof(UINT64); Index++) {\r
+      for (Index = 0; Index < SIZE_4KB / sizeof (UINT64); Index++) {\r
         NewPageEntry[Index] = (BaseAddress + SIZE_4KB * Index) | mAddressEncMask | ((*PageEntry) & PAGE_PROGATE_BITS);\r
       }\r
+\r
       (*PageEntry) = (UINT64)(UINTN)NewPageEntry | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
       return RETURN_SUCCESS;\r
     } else {\r
@@ -352,16 +370,18 @@ SplitPage (
     // No need support 1G->4K directly, we should use 1G->2M, then 2M->4K to get more compact page table.\r
     //\r
     ASSERT (SplitAttribute == Page2M || SplitAttribute == Page4K);\r
-    if ((SplitAttribute == Page2M || SplitAttribute == Page4K)) {\r
+    if (((SplitAttribute == Page2M) || (SplitAttribute == Page4K))) {\r
       NewPageEntry = AllocatePageTableMemory (1);\r
       DEBUG ((DEBUG_VERBOSE, "Split - 0x%x\n", NewPageEntry));\r
       if (NewPageEntry == NULL) {\r
         return RETURN_OUT_OF_RESOURCES;\r
       }\r
+\r
       BaseAddress = *PageEntry & PAGING_1G_ADDRESS_MASK_64;\r
-      for (Index = 0; Index < SIZE_4KB / sizeof(UINT64); Index++) {\r
+      for (Index = 0; Index < SIZE_4KB / sizeof (UINT64); Index++) {\r
         NewPageEntry[Index] = (BaseAddress + SIZE_2MB * Index) | mAddressEncMask | IA32_PG_PS | ((*PageEntry) & PAGE_PROGATE_BITS);\r
       }\r
+\r
       (*PageEntry) = (UINT64)(UINTN)NewPageEntry | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
       return RETURN_SUCCESS;\r
     } else {\r
@@ -401,21 +421,21 @@ SplitPage (
 RETURN_STATUS\r
 EFIAPI\r
 ConvertMemoryPageAttributes (\r
-  IN  PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                            Length,\r
-  IN  UINT64                            Attributes,\r
-  IN  BOOLEAN                           IsSet,\r
-  OUT BOOLEAN                           *IsSplitted   OPTIONAL,\r
-  OUT BOOLEAN                           *IsModified   OPTIONAL\r
+  IN  PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64            Length,\r
+  IN  UINT64            Attributes,\r
+  IN  BOOLEAN           IsSet,\r
+  OUT BOOLEAN           *IsSplitted   OPTIONAL,\r
+  OUT BOOLEAN           *IsModified   OPTIONAL\r
   )\r
 {\r
-  UINT64                            *PageEntry;\r
-  PAGE_ATTRIBUTE                    PageAttribute;\r
-  UINTN                             PageEntryLength;\r
-  PAGE_ATTRIBUTE                    SplitAttribute;\r
-  RETURN_STATUS                     Status;\r
-  BOOLEAN                           IsEntryModified;\r
-  EFI_PHYSICAL_ADDRESS              MaximumSupportMemAddress;\r
+  UINT64                *PageEntry;\r
+  PAGE_ATTRIBUTE        PageAttribute;\r
+  UINTN                 PageEntryLength;\r
+  PAGE_ATTRIBUTE        SplitAttribute;\r
+  RETURN_STATUS         Status;\r
+  BOOLEAN               IsEntryModified;\r
+  EFI_PHYSICAL_ADDRESS  MaximumSupportMemAddress;\r
 \r
   ASSERT (Attributes != 0);\r
   ASSERT ((Attributes & ~EFI_MEMORY_ATTRIBUTE_MASK) == 0);\r
@@ -431,18 +451,21 @@ ConvertMemoryPageAttributes (
   if (BaseAddress > MaximumSupportMemAddress) {\r
     return RETURN_UNSUPPORTED;\r
   }\r
+\r
   if (Length > MaximumSupportMemAddress) {\r
     return RETURN_UNSUPPORTED;\r
   }\r
+\r
   if ((Length != 0) && (BaseAddress > MaximumSupportMemAddress - (Length - 1))) {\r
     return RETURN_UNSUPPORTED;\r
   }\r
 \r
-//  DEBUG ((DEBUG_ERROR, "ConvertMemoryPageAttributes(%x) - %016lx, %016lx, %02lx\n", IsSet, BaseAddress, Length, Attributes));\r
+  //  DEBUG ((DEBUG_ERROR, "ConvertMemoryPageAttributes(%x) - %016lx, %016lx, %02lx\n", IsSet, BaseAddress, Length, Attributes));\r
 \r
   if (IsSplitted != NULL) {\r
     *IsSplitted = FALSE;\r
   }\r
+\r
   if (IsModified != NULL) {\r
     *IsModified = FALSE;\r
   }\r
@@ -455,8 +478,9 @@ ConvertMemoryPageAttributes (
     if (PageEntry == NULL) {\r
       return RETURN_UNSUPPORTED;\r
     }\r
+\r
     PageEntryLength = PageAttributeToLength (PageAttribute);\r
-    SplitAttribute = NeedSplitPage (BaseAddress, Length, PageEntry, PageAttribute);\r
+    SplitAttribute  = NeedSplitPage (BaseAddress, Length, PageEntry, PageAttribute);\r
     if (SplitAttribute == PageNone) {\r
       ConvertPageEntryAttribute (PageEntry, Attributes, IsSet, &IsEntryModified);\r
       if (IsEntryModified) {\r
@@ -464,22 +488,26 @@ ConvertMemoryPageAttributes (
           *IsModified = TRUE;\r
         }\r
       }\r
+\r
       //\r
       // Convert success, move to next\r
       //\r
       BaseAddress += PageEntryLength;\r
-      Length -= PageEntryLength;\r
+      Length      -= PageEntryLength;\r
     } else {\r
       Status = SplitPage (PageEntry, PageAttribute, SplitAttribute);\r
       if (RETURN_ERROR (Status)) {\r
         return RETURN_UNSUPPORTED;\r
       }\r
+\r
       if (IsSplitted != NULL) {\r
         *IsSplitted = TRUE;\r
       }\r
+\r
       if (IsModified != NULL) {\r
         *IsModified = TRUE;\r
       }\r
+\r
       //\r
       // Just split current page\r
       // Convert success in next around\r
@@ -512,7 +540,7 @@ FlushTlbForAll (
   VOID\r
   )\r
 {\r
-  UINTN       Index;\r
+  UINTN  Index;\r
 \r
   FlushTlbOnCurrentProcessor (NULL);\r
 \r
@@ -551,22 +579,22 @@ FlushTlbForAll (
 EFI_STATUS\r
 EFIAPI\r
 SmmSetMemoryAttributesEx (\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length,\r
-  IN  UINT64                                     Attributes,\r
-  OUT BOOLEAN                                    *IsSplitted  OPTIONAL\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length,\r
+  IN  UINT64                Attributes,\r
+  OUT BOOLEAN               *IsSplitted  OPTIONAL\r
   )\r
 {\r
   EFI_STATUS  Status;\r
   BOOLEAN     IsModified;\r
 \r
   Status = ConvertMemoryPageAttributes (BaseAddress, Length, Attributes, TRUE, IsSplitted, &IsModified);\r
-  if (!EFI_ERROR(Status)) {\r
+  if (!EFI_ERROR (Status)) {\r
     if (IsModified) {\r
       //\r
       // Flush TLB as last step\r
       //\r
-      FlushTlbForAll();\r
+      FlushTlbForAll ();\r
     }\r
   }\r
 \r
@@ -599,22 +627,22 @@ SmmSetMemoryAttributesEx (
 EFI_STATUS\r
 EFIAPI\r
 SmmClearMemoryAttributesEx (\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length,\r
-  IN  UINT64                                     Attributes,\r
-  OUT BOOLEAN                                    *IsSplitted  OPTIONAL\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length,\r
+  IN  UINT64                Attributes,\r
+  OUT BOOLEAN               *IsSplitted  OPTIONAL\r
   )\r
 {\r
   EFI_STATUS  Status;\r
   BOOLEAN     IsModified;\r
 \r
   Status = ConvertMemoryPageAttributes (BaseAddress, Length, Attributes, FALSE, IsSplitted, &IsModified);\r
-  if (!EFI_ERROR(Status)) {\r
+  if (!EFI_ERROR (Status)) {\r
     if (IsModified) {\r
       //\r
       // Flush TLB as last step\r
       //\r
-      FlushTlbForAll();\r
+      FlushTlbForAll ();\r
     }\r
   }\r
 \r
@@ -646,9 +674,9 @@ SmmClearMemoryAttributesEx (
 EFI_STATUS\r
 EFIAPI\r
 SmmSetMemoryAttributes (\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length,\r
-  IN  UINT64                                     Attributes\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length,\r
+  IN  UINT64                Attributes\r
   )\r
 {\r
   return SmmSetMemoryAttributesEx (BaseAddress, Length, Attributes, NULL);\r
@@ -679,9 +707,9 @@ SmmSetMemoryAttributes (
 EFI_STATUS\r
 EFIAPI\r
 SmmClearMemoryAttributes (\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length,\r
-  IN  UINT64                                     Attributes\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length,\r
+  IN  UINT64                Attributes\r
   )\r
 {\r
   return SmmClearMemoryAttributesEx (BaseAddress, Length, Attributes, NULL);\r
@@ -698,9 +726,9 @@ SmmClearMemoryAttributes (
 **/\r
 EFI_STATUS\r
 SetShadowStack (\r
-  IN  UINTN                                      Cr3,\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length\r
+  IN  UINTN                 Cr3,\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length\r
   )\r
 {\r
   EFI_STATUS  Status;\r
@@ -725,9 +753,9 @@ SetShadowStack (
 **/\r
 EFI_STATUS\r
 SetNotPresentPage (\r
-  IN  UINTN                                      Cr3,\r
-  IN  EFI_PHYSICAL_ADDRESS                       BaseAddress,\r
-  IN  UINT64                                     Length\r
+  IN  UINTN                 Cr3,\r
+  IN  EFI_PHYSICAL_ADDRESS  BaseAddress,\r
+  IN  UINT64                Length\r
   )\r
 {\r
   EFI_STATUS  Status;\r
@@ -759,7 +787,7 @@ SmmGetSystemConfigurationTable (
   OUT VOID      **Table\r
   )\r
 {\r
-  UINTN             Index;\r
+  UINTN  Index;\r
 \r
   ASSERT (TableGuid != NULL);\r
   ASSERT (Table != NULL);\r
@@ -789,11 +817,11 @@ PatchSmmSaveStateMap (
   UINTN  TileSize;\r
 \r
   TileCodeSize = GetSmiHandlerSize ();\r
-  TileCodeSize = ALIGN_VALUE(TileCodeSize, SIZE_4KB);\r
+  TileCodeSize = ALIGN_VALUE (TileCodeSize, SIZE_4KB);\r
   TileDataSize = (SMRAM_SAVE_STATE_MAP_OFFSET - SMM_PSD_OFFSET) + sizeof (SMRAM_SAVE_STATE_MAP);\r
-  TileDataSize = ALIGN_VALUE(TileDataSize, SIZE_4KB);\r
-  TileSize = TileDataSize + TileCodeSize - 1;\r
-  TileSize = 2 * GetPowerOfTwo32 ((UINT32)TileSize);\r
+  TileDataSize = ALIGN_VALUE (TileDataSize, SIZE_4KB);\r
+  TileSize     = TileDataSize + TileCodeSize - 1;\r
+  TileSize     = 2 * GetPowerOfTwo32 ((UINT32)TileSize);\r
 \r
   DEBUG ((DEBUG_INFO, "PatchSmmSaveStateMap:\n"));\r
   for (Index = 0; Index < mMaxNumberOfCpus - 1; Index++) {\r
@@ -863,8 +891,8 @@ PatchGdtIdtMap (
   VOID\r
   )\r
 {\r
-  EFI_PHYSICAL_ADDRESS       BaseAddress;\r
-  UINTN                      Size;\r
+  EFI_PHYSICAL_ADDRESS  BaseAddress;\r
+  UINTN                 Size;\r
 \r
   //\r
   // GDT\r
@@ -872,7 +900,7 @@ PatchGdtIdtMap (
   DEBUG ((DEBUG_INFO, "PatchGdtIdtMap - GDT:\n"));\r
 \r
   BaseAddress = mGdtBuffer;\r
-  Size = ALIGN_VALUE(mGdtBufferSize, SIZE_4KB);\r
+  Size        = ALIGN_VALUE (mGdtBufferSize, SIZE_4KB);\r
   //\r
   // The range should have been set to RO\r
   // if it is allocated with EfiRuntimeServicesCode.\r
@@ -889,7 +917,7 @@ PatchGdtIdtMap (
   DEBUG ((DEBUG_INFO, "PatchGdtIdtMap - IDT:\n"));\r
 \r
   BaseAddress = gcSmiIdtr.Base;\r
-  Size = ALIGN_VALUE(gcSmiIdtr.Limit + 1, SIZE_4KB);\r
+  Size        = ALIGN_VALUE (gcSmiIdtr.Limit + 1, SIZE_4KB);\r
   //\r
   // The range should have been set to RO\r
   // if it is allocated with EfiRuntimeServicesCode.\r
@@ -909,17 +937,17 @@ SetMemMapAttributes (
   VOID\r
   )\r
 {\r
-  EFI_MEMORY_DESCRIPTOR                     *MemoryMap;\r
-  EFI_MEMORY_DESCRIPTOR                     *MemoryMapStart;\r
-  UINTN                                     MemoryMapEntryCount;\r
-  UINTN                                     DescriptorSize;\r
-  UINTN                                     Index;\r
-  EDKII_PI_SMM_MEMORY_ATTRIBUTES_TABLE      *MemoryAttributesTable;\r
+  EFI_MEMORY_DESCRIPTOR                 *MemoryMap;\r
+  EFI_MEMORY_DESCRIPTOR                 *MemoryMapStart;\r
+  UINTN                                 MemoryMapEntryCount;\r
+  UINTN                                 DescriptorSize;\r
+  UINTN                                 Index;\r
+  EDKII_PI_SMM_MEMORY_ATTRIBUTES_TABLE  *MemoryAttributesTable;\r
 \r
   SmmGetSystemConfigurationTable (&gEdkiiPiSmmMemoryAttributesTableGuid, (VOID **)&MemoryAttributesTable);\r
   if (MemoryAttributesTable == NULL) {\r
     DEBUG ((DEBUG_INFO, "MemoryAttributesTable - NULL\n"));\r
-    return ;\r
+    return;\r
   }\r
 \r
   DEBUG ((DEBUG_INFO, "MemoryAttributesTable:\n"));\r
@@ -928,9 +956,9 @@ SetMemMapAttributes (
   DEBUG ((DEBUG_INFO, "  DescriptorSize            - 0x%08x\n", MemoryAttributesTable->DescriptorSize));\r
 \r
   MemoryMapEntryCount = MemoryAttributesTable->NumberOfEntries;\r
-  DescriptorSize = MemoryAttributesTable->DescriptorSize;\r
-  MemoryMapStart = (EFI_MEMORY_DESCRIPTOR *)(MemoryAttributesTable + 1);\r
-  MemoryMap = MemoryMapStart;\r
+  DescriptorSize      = MemoryAttributesTable->DescriptorSize;\r
+  MemoryMapStart      = (EFI_MEMORY_DESCRIPTOR *)(MemoryAttributesTable + 1);\r
+  MemoryMap           = MemoryMapStart;\r
   for (Index = 0; Index < MemoryMapEntryCount; Index++) {\r
     DEBUG ((DEBUG_INFO, "Entry (0x%x)\n", MemoryMap));\r
     DEBUG ((DEBUG_INFO, "  Type              - 0x%x\n", MemoryMap->Type));\r
@@ -938,42 +966,43 @@ SetMemMapAttributes (
     DEBUG ((DEBUG_INFO, "  VirtualStart      - 0x%016lx\n", MemoryMap->VirtualStart));\r
     DEBUG ((DEBUG_INFO, "  NumberOfPages     - 0x%016lx\n", MemoryMap->NumberOfPages));\r
     DEBUG ((DEBUG_INFO, "  Attribute         - 0x%016lx\n", MemoryMap->Attribute));\r
-    MemoryMap = NEXT_MEMORY_DESCRIPTOR(MemoryMap, DescriptorSize);\r
+    MemoryMap = NEXT_MEMORY_DESCRIPTOR (MemoryMap, DescriptorSize);\r
   }\r
 \r
   MemoryMap = MemoryMapStart;\r
   for (Index = 0; Index < MemoryMapEntryCount; Index++) {\r
     DEBUG ((DEBUG_VERBOSE, "SetAttribute: Memory Entry - 0x%lx, 0x%x\n", MemoryMap->PhysicalStart, MemoryMap->NumberOfPages));\r
     switch (MemoryMap->Type) {\r
-    case EfiRuntimeServicesCode:\r
-      SmmSetMemoryAttributes (\r
-        MemoryMap->PhysicalStart,\r
-        EFI_PAGES_TO_SIZE((UINTN)MemoryMap->NumberOfPages),\r
-        EFI_MEMORY_RO\r
-        );\r
-      break;\r
-    case EfiRuntimeServicesData:\r
-      SmmSetMemoryAttributes (\r
-        MemoryMap->PhysicalStart,\r
-        EFI_PAGES_TO_SIZE((UINTN)MemoryMap->NumberOfPages),\r
-        EFI_MEMORY_XP\r
-        );\r
-      break;\r
-    default:\r
-      SmmSetMemoryAttributes (\r
-        MemoryMap->PhysicalStart,\r
-        EFI_PAGES_TO_SIZE((UINTN)MemoryMap->NumberOfPages),\r
-        EFI_MEMORY_XP\r
-        );\r
-      break;\r
+      case EfiRuntimeServicesCode:\r
+        SmmSetMemoryAttributes (\r
+          MemoryMap->PhysicalStart,\r
+          EFI_PAGES_TO_SIZE ((UINTN)MemoryMap->NumberOfPages),\r
+          EFI_MEMORY_RO\r
+          );\r
+        break;\r
+      case EfiRuntimeServicesData:\r
+        SmmSetMemoryAttributes (\r
+          MemoryMap->PhysicalStart,\r
+          EFI_PAGES_TO_SIZE ((UINTN)MemoryMap->NumberOfPages),\r
+          EFI_MEMORY_XP\r
+          );\r
+        break;\r
+      default:\r
+        SmmSetMemoryAttributes (\r
+          MemoryMap->PhysicalStart,\r
+          EFI_PAGES_TO_SIZE ((UINTN)MemoryMap->NumberOfPages),\r
+          EFI_MEMORY_XP\r
+          );\r
+        break;\r
     }\r
-    MemoryMap = NEXT_MEMORY_DESCRIPTOR(MemoryMap, DescriptorSize);\r
+\r
+    MemoryMap = NEXT_MEMORY_DESCRIPTOR (MemoryMap, DescriptorSize);\r
   }\r
 \r
   PatchSmmSaveStateMap ();\r
   PatchGdtIdtMap ();\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -992,27 +1021,27 @@ SortMemoryMap (
   IN UINTN                      DescriptorSize\r
   )\r
 {\r
-  EFI_MEMORY_DESCRIPTOR       *MemoryMapEntry;\r
-  EFI_MEMORY_DESCRIPTOR       *NextMemoryMapEntry;\r
-  EFI_MEMORY_DESCRIPTOR       *MemoryMapEnd;\r
-  EFI_MEMORY_DESCRIPTOR       TempMemoryMap;\r
+  EFI_MEMORY_DESCRIPTOR  *MemoryMapEntry;\r
+  EFI_MEMORY_DESCRIPTOR  *NextMemoryMapEntry;\r
+  EFI_MEMORY_DESCRIPTOR  *MemoryMapEnd;\r
+  EFI_MEMORY_DESCRIPTOR  TempMemoryMap;\r
 \r
-  MemoryMapEntry = MemoryMap;\r
+  MemoryMapEntry     = MemoryMap;\r
   NextMemoryMapEntry = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);\r
-  MemoryMapEnd = (EFI_MEMORY_DESCRIPTOR *) ((UINT8 *) MemoryMap + MemoryMapSize);\r
+  MemoryMapEnd       = (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)MemoryMap + MemoryMapSize);\r
   while (MemoryMapEntry < MemoryMapEnd) {\r
     while (NextMemoryMapEntry < MemoryMapEnd) {\r
       if (MemoryMapEntry->PhysicalStart > NextMemoryMapEntry->PhysicalStart) {\r
-        CopyMem (&TempMemoryMap, MemoryMapEntry, sizeof(EFI_MEMORY_DESCRIPTOR));\r
-        CopyMem (MemoryMapEntry, NextMemoryMapEntry, sizeof(EFI_MEMORY_DESCRIPTOR));\r
-        CopyMem (NextMemoryMapEntry, &TempMemoryMap, sizeof(EFI_MEMORY_DESCRIPTOR));\r
+        CopyMem (&TempMemoryMap, MemoryMapEntry, sizeof (EFI_MEMORY_DESCRIPTOR));\r
+        CopyMem (MemoryMapEntry, NextMemoryMapEntry, sizeof (EFI_MEMORY_DESCRIPTOR));\r
+        CopyMem (NextMemoryMapEntry, &TempMemoryMap, sizeof (EFI_MEMORY_DESCRIPTOR));\r
       }\r
 \r
       NextMemoryMapEntry = NEXT_MEMORY_DESCRIPTOR (NextMemoryMapEntry, DescriptorSize);\r
     }\r
 \r
-    MemoryMapEntry      = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);\r
-    NextMemoryMapEntry  = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);\r
+    MemoryMapEntry     = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);\r
+    NextMemoryMapEntry = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);\r
   }\r
 }\r
 \r
@@ -1034,16 +1063,16 @@ IsUefiPageNotPresent (
   )\r
 {\r
   switch (MemoryMap->Type) {\r
-  case EfiLoaderCode:\r
-  case EfiLoaderData:\r
-  case EfiBootServicesCode:\r
-  case EfiBootServicesData:\r
-  case EfiConventionalMemory:\r
-  case EfiUnusableMemory:\r
-  case EfiACPIReclaimMemory:\r
-    return TRUE;\r
-  default:\r
-    return FALSE;\r
+    case EfiLoaderCode:\r
+    case EfiLoaderData:\r
+    case EfiBootServicesCode:\r
+    case EfiBootServicesData:\r
+    case EfiConventionalMemory:\r
+    case EfiUnusableMemory:\r
+    case EfiACPIReclaimMemory:\r
+      return TRUE;\r
+    default:\r
+      return FALSE;\r
   }\r
 }\r
 \r
@@ -1069,24 +1098,25 @@ MergeMemoryMapForNotPresentEntry (
   IN UINTN                      DescriptorSize\r
   )\r
 {\r
-  EFI_MEMORY_DESCRIPTOR       *MemoryMapEntry;\r
-  EFI_MEMORY_DESCRIPTOR       *MemoryMapEnd;\r
-  UINT64                      MemoryBlockLength;\r
-  EFI_MEMORY_DESCRIPTOR       *NewMemoryMapEntry;\r
-  EFI_MEMORY_DESCRIPTOR       *NextMemoryMapEntry;\r
+  EFI_MEMORY_DESCRIPTOR  *MemoryMapEntry;\r
+  EFI_MEMORY_DESCRIPTOR  *MemoryMapEnd;\r
+  UINT64                 MemoryBlockLength;\r
+  EFI_MEMORY_DESCRIPTOR  *NewMemoryMapEntry;\r
+  EFI_MEMORY_DESCRIPTOR  *NextMemoryMapEntry;\r
 \r
-  MemoryMapEntry = MemoryMap;\r
+  MemoryMapEntry    = MemoryMap;\r
   NewMemoryMapEntry = MemoryMap;\r
-  MemoryMapEnd = (EFI_MEMORY_DESCRIPTOR *) ((UINT8 *) MemoryMap + *MemoryMapSize);\r
+  MemoryMapEnd      = (EFI_MEMORY_DESCRIPTOR *)((UINT8 *)MemoryMap + *MemoryMapSize);\r
   while ((UINTN)MemoryMapEntry < (UINTN)MemoryMapEnd) {\r
-    CopyMem (NewMemoryMapEntry, MemoryMapEntry, sizeof(EFI_MEMORY_DESCRIPTOR));\r
+    CopyMem (NewMemoryMapEntry, MemoryMapEntry, sizeof (EFI_MEMORY_DESCRIPTOR));\r
     NextMemoryMapEntry = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);\r
 \r
     do {\r
-      MemoryBlockLength = (UINT64) (EFI_PAGES_TO_SIZE((UINTN)MemoryMapEntry->NumberOfPages));\r
+      MemoryBlockLength = (UINT64)(EFI_PAGES_TO_SIZE ((UINTN)MemoryMapEntry->NumberOfPages));\r
       if (((UINTN)NextMemoryMapEntry < (UINTN)MemoryMapEnd) &&\r
-          IsUefiPageNotPresent(MemoryMapEntry) && IsUefiPageNotPresent(NextMemoryMapEntry) &&\r
-          ((MemoryMapEntry->PhysicalStart + MemoryBlockLength) == NextMemoryMapEntry->PhysicalStart)) {\r
+          IsUefiPageNotPresent (MemoryMapEntry) && IsUefiPageNotPresent (NextMemoryMapEntry) &&\r
+          ((MemoryMapEntry->PhysicalStart + MemoryBlockLength) == NextMemoryMapEntry->PhysicalStart))\r
+      {\r
         MemoryMapEntry->NumberOfPages += NextMemoryMapEntry->NumberOfPages;\r
         if (NewMemoryMapEntry != MemoryMapEntry) {\r
           NewMemoryMapEntry->NumberOfPages += NextMemoryMapEntry->NumberOfPages;\r
@@ -1100,13 +1130,13 @@ MergeMemoryMapForNotPresentEntry (
       }\r
     } while (TRUE);\r
 \r
-    MemoryMapEntry = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);\r
+    MemoryMapEntry    = NEXT_MEMORY_DESCRIPTOR (MemoryMapEntry, DescriptorSize);\r
     NewMemoryMapEntry = NEXT_MEMORY_DESCRIPTOR (NewMemoryMapEntry, DescriptorSize);\r
   }\r
 \r
   *MemoryMapSize = (UINTN)NewMemoryMapEntry - (UINTN)MemoryMap;\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -1124,15 +1154,16 @@ GetGcdMemoryMap (
 \r
   Status = gDS->GetMemorySpaceMap (&NumberOfDescriptors, &MemSpaceMap);\r
   if (EFI_ERROR (Status)) {\r
-    return ;\r
+    return;\r
   }\r
 \r
   mGcdMemNumberOfDesc = 0;\r
   for (Index = 0; Index < NumberOfDescriptors; Index++) {\r
-    if (MemSpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeReserved &&\r
-        (MemSpaceMap[Index].Capabilities & (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED)) ==\r
-          (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED)\r
-          ) {\r
+    if ((MemSpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeReserved) &&\r
+        ((MemSpaceMap[Index].Capabilities & (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED)) ==\r
+         (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED))\r
+        )\r
+    {\r
       mGcdMemNumberOfDesc++;\r
     }\r
   }\r
@@ -1142,19 +1173,20 @@ GetGcdMemoryMap (
   if (mGcdMemSpace == NULL) {\r
     mGcdMemNumberOfDesc = 0;\r
     gBS->FreePool (MemSpaceMap);\r
-    return ;\r
+    return;\r
   }\r
 \r
   mGcdMemNumberOfDesc = 0;\r
   for (Index = 0; Index < NumberOfDescriptors; Index++) {\r
-    if (MemSpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeReserved &&\r
-        (MemSpaceMap[Index].Capabilities & (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED)) ==\r
-          (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED)\r
-          ) {\r
+    if ((MemSpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeReserved) &&\r
+        ((MemSpaceMap[Index].Capabilities & (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED | EFI_MEMORY_TESTED)) ==\r
+         (EFI_MEMORY_PRESENT | EFI_MEMORY_INITIALIZED))\r
+        )\r
+    {\r
       CopyMem (\r
         &mGcdMemSpace[mGcdMemNumberOfDesc],\r
         &MemSpaceMap[Index],\r
-        sizeof(EFI_GCD_MEMORY_SPACE_DESCRIPTOR)\r
+        sizeof (EFI_GCD_MEMORY_SPACE_DESCRIPTOR)\r
         );\r
       mGcdMemNumberOfDesc++;\r
     }\r
@@ -1177,7 +1209,7 @@ GetUefiMemoryAttributesTable (
 \r
   Status = EfiGetSystemConfigurationTable (&gEfiMemoryAttributesTableGuid, (VOID **)&MemoryAttributesTable);\r
   if (!EFI_ERROR (Status) && (MemoryAttributesTable != NULL)) {\r
-    MemoryAttributesTableSize = sizeof(EFI_MEMORY_ATTRIBUTES_TABLE) + MemoryAttributesTable->DescriptorSize * MemoryAttributesTable->NumberOfEntries;\r
+    MemoryAttributesTableSize  = sizeof (EFI_MEMORY_ATTRIBUTES_TABLE) + MemoryAttributesTable->DescriptorSize * MemoryAttributesTable->NumberOfEntries;\r
     mUefiMemoryAttributesTable = AllocateCopyPool (MemoryAttributesTableSize, MemoryAttributesTable);\r
     ASSERT (mUefiMemoryAttributesTable != NULL);\r
   }\r
@@ -1191,30 +1223,30 @@ GetUefiMemoryMap (
   VOID\r
   )\r
 {\r
-  EFI_STATUS            Status;\r
-  UINTN                 MapKey;\r
-  UINT32                DescriptorVersion;\r
-  EFI_MEMORY_DESCRIPTOR *MemoryMap;\r
-  UINTN                 UefiMemoryMapSize;\r
+  EFI_STATUS             Status;\r
+  UINTN                  MapKey;\r
+  UINT32                 DescriptorVersion;\r
+  EFI_MEMORY_DESCRIPTOR  *MemoryMap;\r
+  UINTN                  UefiMemoryMapSize;\r
 \r
   DEBUG ((DEBUG_INFO, "GetUefiMemoryMap\n"));\r
 \r
   UefiMemoryMapSize = 0;\r
-  MemoryMap = NULL;\r
-  Status = gBS->GetMemoryMap (\r
-                  &UefiMemoryMapSize,\r
-                  MemoryMap,\r
-                  &MapKey,\r
-                  &mUefiDescriptorSize,\r
-                  &DescriptorVersion\r
-                  );\r
+  MemoryMap         = NULL;\r
+  Status            = gBS->GetMemoryMap (\r
+                             &UefiMemoryMapSize,\r
+                             MemoryMap,\r
+                             &MapKey,\r
+                             &mUefiDescriptorSize,\r
+                             &DescriptorVersion\r
+                             );\r
   ASSERT (Status == EFI_BUFFER_TOO_SMALL);\r
 \r
   do {\r
     Status = gBS->AllocatePool (EfiBootServicesData, UefiMemoryMapSize, (VOID **)&MemoryMap);\r
     ASSERT (MemoryMap != NULL);\r
     if (MemoryMap == NULL) {\r
-      return ;\r
+      return;\r
     }\r
 \r
     Status = gBS->GetMemoryMap (\r
@@ -1231,14 +1263,14 @@ GetUefiMemoryMap (
   } while (Status == EFI_BUFFER_TOO_SMALL);\r
 \r
   if (MemoryMap == NULL) {\r
-    return ;\r
+    return;\r
   }\r
 \r
   SortMemoryMap (MemoryMap, UefiMemoryMapSize, mUefiDescriptorSize);\r
   MergeMemoryMapForNotPresentEntry (MemoryMap, &UefiMemoryMapSize, mUefiDescriptorSize);\r
 \r
   mUefiMemoryMapSize = UefiMemoryMapSize;\r
-  mUefiMemoryMap = AllocateCopyPool (UefiMemoryMapSize, MemoryMap);\r
+  mUefiMemoryMap     = AllocateCopyPool (UefiMemoryMapSize, MemoryMap);\r
   ASSERT (mUefiMemoryMap != NULL);\r
 \r
   gBS->FreePool (MemoryMap);\r
@@ -1266,35 +1298,37 @@ SetUefiMemMapAttributes (
   VOID\r
   )\r
 {\r
-  EFI_STATUS            Status;\r
-  EFI_MEMORY_DESCRIPTOR *MemoryMap;\r
-  UINTN                 MemoryMapEntryCount;\r
-  UINTN                 Index;\r
-  EFI_MEMORY_DESCRIPTOR *Entry;\r
+  EFI_STATUS             Status;\r
+  EFI_MEMORY_DESCRIPTOR  *MemoryMap;\r
+  UINTN                  MemoryMapEntryCount;\r
+  UINTN                  Index;\r
+  EFI_MEMORY_DESCRIPTOR  *Entry;\r
 \r
   DEBUG ((DEBUG_INFO, "SetUefiMemMapAttributes\n"));\r
 \r
   if (mUefiMemoryMap != NULL) {\r
     MemoryMapEntryCount = mUefiMemoryMapSize/mUefiDescriptorSize;\r
-    MemoryMap = mUefiMemoryMap;\r
+    MemoryMap           = mUefiMemoryMap;\r
     for (Index = 0; Index < MemoryMapEntryCount; Index++) {\r
-      if (IsUefiPageNotPresent(MemoryMap)) {\r
+      if (IsUefiPageNotPresent (MemoryMap)) {\r
         Status = SmmSetMemoryAttributes (\r
                    MemoryMap->PhysicalStart,\r
-                   EFI_PAGES_TO_SIZE((UINTN)MemoryMap->NumberOfPages),\r
+                   EFI_PAGES_TO_SIZE ((UINTN)MemoryMap->NumberOfPages),\r
                    EFI_MEMORY_RP\r
                    );\r
         DEBUG ((\r
           DEBUG_INFO,\r
           "UefiMemory protection: 0x%lx - 0x%lx %r\n",\r
           MemoryMap->PhysicalStart,\r
-          MemoryMap->PhysicalStart + (UINT64)EFI_PAGES_TO_SIZE((UINTN)MemoryMap->NumberOfPages),\r
+          MemoryMap->PhysicalStart + (UINT64)EFI_PAGES_TO_SIZE ((UINTN)MemoryMap->NumberOfPages),\r
           Status\r
           ));\r
       }\r
-      MemoryMap = NEXT_MEMORY_DESCRIPTOR(MemoryMap, mUefiDescriptorSize);\r
+\r
+      MemoryMap = NEXT_MEMORY_DESCRIPTOR (MemoryMap, mUefiDescriptorSize);\r
     }\r
   }\r
+\r
   //\r
   // Do not free mUefiMemoryMap, it will be checked in IsSmmCommBufferForbiddenAddress().\r
   //\r
@@ -1318,6 +1352,7 @@ SetUefiMemMapAttributes (
         ));\r
     }\r
   }\r
+\r
   //\r
   // Do not free mGcdMemSpace, it will be checked in IsSmmCommBufferForbiddenAddress().\r
   //\r
@@ -1328,25 +1363,27 @@ SetUefiMemMapAttributes (
   if (mUefiMemoryAttributesTable != NULL) {\r
     Entry = (EFI_MEMORY_DESCRIPTOR *)(mUefiMemoryAttributesTable + 1);\r
     for (Index = 0; Index < mUefiMemoryAttributesTable->NumberOfEntries; Index++) {\r
-      if (Entry->Type == EfiRuntimeServicesCode || Entry->Type == EfiRuntimeServicesData) {\r
+      if ((Entry->Type == EfiRuntimeServicesCode) || (Entry->Type == EfiRuntimeServicesData)) {\r
         if ((Entry->Attribute & EFI_MEMORY_RO) != 0) {\r
           Status = SmmSetMemoryAttributes (\r
                      Entry->PhysicalStart,\r
-                     EFI_PAGES_TO_SIZE((UINTN)Entry->NumberOfPages),\r
+                     EFI_PAGES_TO_SIZE ((UINTN)Entry->NumberOfPages),\r
                      EFI_MEMORY_RP\r
                      );\r
           DEBUG ((\r
             DEBUG_INFO,\r
             "UefiMemoryAttribute protection: 0x%lx - 0x%lx %r\n",\r
             Entry->PhysicalStart,\r
-            Entry->PhysicalStart + (UINT64)EFI_PAGES_TO_SIZE((UINTN)Entry->NumberOfPages),\r
+            Entry->PhysicalStart + (UINT64)EFI_PAGES_TO_SIZE ((UINTN)Entry->NumberOfPages),\r
             Status\r
             ));\r
         }\r
       }\r
+\r
       Entry = NEXT_MEMORY_DESCRIPTOR (Entry, mUefiMemoryAttributesTable->DescriptorSize);\r
     }\r
   }\r
+\r
   //\r
   // Do not free mUefiMemoryAttributesTable, it will be checked in IsSmmCommBufferForbiddenAddress().\r
   //\r
@@ -1365,29 +1402,32 @@ IsSmmCommBufferForbiddenAddress (
   IN UINT64  Address\r
   )\r
 {\r
-  EFI_MEMORY_DESCRIPTOR *MemoryMap;\r
-  UINTN                 MemoryMapEntryCount;\r
-  UINTN                 Index;\r
-  EFI_MEMORY_DESCRIPTOR *Entry;\r
+  EFI_MEMORY_DESCRIPTOR  *MemoryMap;\r
+  UINTN                  MemoryMapEntryCount;\r
+  UINTN                  Index;\r
+  EFI_MEMORY_DESCRIPTOR  *Entry;\r
 \r
   if (mUefiMemoryMap != NULL) {\r
-    MemoryMap = mUefiMemoryMap;\r
+    MemoryMap           = mUefiMemoryMap;\r
     MemoryMapEntryCount = mUefiMemoryMapSize/mUefiDescriptorSize;\r
     for (Index = 0; Index < MemoryMapEntryCount; Index++) {\r
       if (IsUefiPageNotPresent (MemoryMap)) {\r
         if ((Address >= MemoryMap->PhysicalStart) &&\r
-            (Address < MemoryMap->PhysicalStart + EFI_PAGES_TO_SIZE((UINTN)MemoryMap->NumberOfPages)) ) {\r
+            (Address < MemoryMap->PhysicalStart + EFI_PAGES_TO_SIZE ((UINTN)MemoryMap->NumberOfPages)))\r
+        {\r
           return TRUE;\r
         }\r
       }\r
-      MemoryMap = NEXT_MEMORY_DESCRIPTOR(MemoryMap, mUefiDescriptorSize);\r
+\r
+      MemoryMap = NEXT_MEMORY_DESCRIPTOR (MemoryMap, mUefiDescriptorSize);\r
     }\r
   }\r
 \r
   if (mGcdMemSpace != NULL) {\r
     for (Index = 0; Index < mGcdMemNumberOfDesc; Index++) {\r
       if ((Address >= mGcdMemSpace[Index].BaseAddress) &&\r
-          (Address < mGcdMemSpace[Index].BaseAddress + mGcdMemSpace[Index].Length) ) {\r
+          (Address < mGcdMemSpace[Index].BaseAddress + mGcdMemSpace[Index].Length))\r
+      {\r
         return TRUE;\r
       }\r
     }\r
@@ -1396,17 +1436,20 @@ IsSmmCommBufferForbiddenAddress (
   if (mUefiMemoryAttributesTable != NULL) {\r
     Entry = (EFI_MEMORY_DESCRIPTOR *)(mUefiMemoryAttributesTable + 1);\r
     for (Index = 0; Index < mUefiMemoryAttributesTable->NumberOfEntries; Index++) {\r
-      if (Entry->Type == EfiRuntimeServicesCode || Entry->Type == EfiRuntimeServicesData) {\r
+      if ((Entry->Type == EfiRuntimeServicesCode) || (Entry->Type == EfiRuntimeServicesData)) {\r
         if ((Entry->Attribute & EFI_MEMORY_RO) != 0) {\r
           if ((Address >= Entry->PhysicalStart) &&\r
-              (Address < Entry->PhysicalStart + LShiftU64 (Entry->NumberOfPages, EFI_PAGE_SHIFT))) {\r
+              (Address < Entry->PhysicalStart + LShiftU64 (Entry->NumberOfPages, EFI_PAGE_SHIFT)))\r
+          {\r
             return TRUE;\r
           }\r
+\r
           Entry = NEXT_MEMORY_DESCRIPTOR (Entry, mUefiMemoryAttributesTable->DescriptorSize);\r
         }\r
       }\r
     }\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -1436,10 +1479,10 @@ IsSmmCommBufferForbiddenAddress (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiSmmSetMemoryAttributes (\r
-  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL   *This,\r
-  IN  EFI_PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                                Length,\r
-  IN  UINT64                                Attributes\r
+  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL  *This,\r
+  IN  EFI_PHYSICAL_ADDRESS                 BaseAddress,\r
+  IN  UINT64                               Length,\r
+  IN  UINT64                               Attributes\r
   )\r
 {\r
   return SmmSetMemoryAttributes (BaseAddress, Length, Attributes);\r
@@ -1471,10 +1514,10 @@ EdkiiSmmSetMemoryAttributes (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiSmmClearMemoryAttributes (\r
-  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL   *This,\r
-  IN  EFI_PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                                Length,\r
-  IN  UINT64                                Attributes\r
+  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL  *This,\r
+  IN  EFI_PHYSICAL_ADDRESS                 BaseAddress,\r
+  IN  UINT64                               Length,\r
+  IN  UINT64                               Attributes\r
   )\r
 {\r
   return SmmClearMemoryAttributes (BaseAddress, Length, Attributes);\r
@@ -1504,10 +1547,10 @@ EdkiiSmmClearMemoryAttributes (
 EFI_STATUS\r
 EFIAPI\r
 EdkiiSmmGetMemoryAttributes (\r
-  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL   *This,\r
-  IN  EFI_PHYSICAL_ADDRESS                  BaseAddress,\r
-  IN  UINT64                                Length,\r
-  OUT UINT64                                *Attributes\r
+  IN  EDKII_SMM_MEMORY_ATTRIBUTE_PROTOCOL  *This,\r
+  IN  EFI_PHYSICAL_ADDRESS                 BaseAddress,\r
+  IN  UINT64                               Length,\r
+  OUT UINT64                               *Attributes\r
   )\r
 {\r
   EFI_PHYSICAL_ADDRESS  Address;\r
@@ -1516,17 +1559,16 @@ EdkiiSmmGetMemoryAttributes (
   PAGE_ATTRIBUTE        PageAttr;\r
   INT64                 Size;\r
 \r
-  if (Length < SIZE_4KB || Attributes == NULL) {\r
+  if ((Length < SIZE_4KB) || (Attributes == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
-  Size = (INT64)Length;\r
+  Size    = (INT64)Length;\r
   MemAttr = (UINT64)-1;\r
 \r
   do {\r
-\r
     PageEntry = GetPageTableEntry (BaseAddress, &PageAttr);\r
-    if (PageEntry == NULL || PageAttr == PageNone) {\r
+    if ((PageEntry == NULL) || (PageAttr == PageNone)) {\r
       return EFI_UNSUPPORTED;\r
     }\r
 \r
@@ -1535,35 +1577,34 @@ EdkiiSmmGetMemoryAttributes (
     // share the same attribute. Return EFI_NO_MAPPING if not.\r
     //\r
     *Attributes = GetAttributesFromPageEntry (PageEntry);\r
-    if (MemAttr != (UINT64)-1 && *Attributes != MemAttr) {\r
+    if ((MemAttr != (UINT64)-1) && (*Attributes != MemAttr)) {\r
       return EFI_NO_MAPPING;\r
     }\r
 \r
     switch (PageAttr) {\r
-    case Page4K:\r
-      Address     = *PageEntry & ~mAddressEncMask & PAGING_4K_ADDRESS_MASK_64;\r
-      Size        -= (SIZE_4KB - (BaseAddress - Address));\r
-      BaseAddress += (SIZE_4KB - (BaseAddress - Address));\r
-      break;\r
-\r
-    case Page2M:\r
-      Address     = *PageEntry & ~mAddressEncMask & PAGING_2M_ADDRESS_MASK_64;\r
-      Size        -= SIZE_2MB - (BaseAddress - Address);\r
-      BaseAddress += SIZE_2MB - (BaseAddress - Address);\r
-      break;\r
-\r
-    case Page1G:\r
-      Address     = *PageEntry & ~mAddressEncMask & PAGING_1G_ADDRESS_MASK_64;\r
-      Size        -= SIZE_1GB - (BaseAddress - Address);\r
-      BaseAddress += SIZE_1GB - (BaseAddress - Address);\r
-      break;\r
+      case Page4K:\r
+        Address      = *PageEntry & ~mAddressEncMask & PAGING_4K_ADDRESS_MASK_64;\r
+        Size        -= (SIZE_4KB - (BaseAddress - Address));\r
+        BaseAddress += (SIZE_4KB - (BaseAddress - Address));\r
+        break;\r
 \r
-    default:\r
-      return EFI_UNSUPPORTED;\r
+      case Page2M:\r
+        Address      = *PageEntry & ~mAddressEncMask & PAGING_2M_ADDRESS_MASK_64;\r
+        Size        -= SIZE_2MB - (BaseAddress - Address);\r
+        BaseAddress += SIZE_2MB - (BaseAddress - Address);\r
+        break;\r
+\r
+      case Page1G:\r
+        Address      = *PageEntry & ~mAddressEncMask & PAGING_1G_ADDRESS_MASK_64;\r
+        Size        -= SIZE_1GB - (BaseAddress - Address);\r
+        BaseAddress += SIZE_1GB - (BaseAddress - Address);\r
+        break;\r
+\r
+      default:\r
+        return EFI_UNSUPPORTED;\r
     }\r
 \r
     MemAttr = *Attributes;\r
-\r
   } while (Size > 0);\r
 \r
   return EFI_SUCCESS;\r
index 9b2b191e038579a776c806b48faac8a0012a84ee..6cc5f016cace2a43df71f69f772c21dd193abb75 100644 (file)
@@ -13,7 +13,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 ///\r
 /// SMM MP Protocol instance\r
 ///\r
-EFI_MM_MP_PROTOCOL  mSmmMp  = {\r
+EFI_MM_MP_PROTOCOL  mSmmMp = {\r
   EFI_MM_MP_PROTOCOL_REVISION,\r
   0,\r
   SmmMpGetNumberOfProcessors,\r
@@ -37,8 +37,8 @@ EFI_MM_MP_PROTOCOL  mSmmMp  = {
 EFI_STATUS\r
 EFIAPI\r
 SmmMpGetNumberOfProcessors (\r
-  IN CONST EFI_MM_MP_PROTOCOL   *This,\r
-  OUT      UINTN                *NumberOfProcessors\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  OUT      UINTN               *NumberOfProcessors\r
   )\r
 {\r
   if (NumberOfProcessors == NULL) {\r
@@ -114,23 +114,23 @@ SmmMpGetNumberOfProcessors (
 EFI_STATUS\r
 EFIAPI\r
 SmmMpDispatchProcedure (\r
-  IN CONST EFI_MM_MP_PROTOCOL            *This,\r
-  IN       EFI_AP_PROCEDURE2             Procedure,\r
-  IN       UINTN                         CpuNumber,\r
-  IN       UINTN                         TimeoutInMicroseconds,\r
-  IN OUT   VOID                          *ProcedureArguments OPTIONAL,\r
-  IN OUT   MM_COMPLETION                 *Token,\r
-  IN OUT   EFI_STATUS                    *CPUStatus\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  IN       EFI_AP_PROCEDURE2   Procedure,\r
+  IN       UINTN               CpuNumber,\r
+  IN       UINTN               TimeoutInMicroseconds,\r
+  IN OUT   VOID                *ProcedureArguments OPTIONAL,\r
+  IN OUT   MM_COMPLETION       *Token,\r
+  IN OUT   EFI_STATUS          *CPUStatus\r
   )\r
 {\r
   return InternalSmmStartupThisAp (\r
-    Procedure,\r
-    CpuNumber,\r
-    ProcedureArguments,\r
-    Token,\r
-    TimeoutInMicroseconds,\r
-    CPUStatus\r
-    );\r
+           Procedure,\r
+           CpuNumber,\r
+           ProcedureArguments,\r
+           Token,\r
+           TimeoutInMicroseconds,\r
+           CPUStatus\r
+           );\r
 }\r
 \r
 /**\r
@@ -202,21 +202,21 @@ SmmMpDispatchProcedure (
 EFI_STATUS\r
 EFIAPI\r
 SmmMpBroadcastProcedure (\r
-  IN CONST EFI_MM_MP_PROTOCOL            *This,\r
-  IN       EFI_AP_PROCEDURE2             Procedure,\r
-  IN       UINTN                         TimeoutInMicroseconds,\r
-  IN OUT   VOID                          *ProcedureArguments OPTIONAL,\r
-  IN OUT   MM_COMPLETION                 *Token,\r
-  IN OUT   EFI_STATUS                    *CPUStatus\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  IN       EFI_AP_PROCEDURE2   Procedure,\r
+  IN       UINTN               TimeoutInMicroseconds,\r
+  IN OUT   VOID                *ProcedureArguments OPTIONAL,\r
+  IN OUT   MM_COMPLETION       *Token,\r
+  IN OUT   EFI_STATUS          *CPUStatus\r
   )\r
 {\r
-  return InternalSmmStartupAllAPs(\r
-    Procedure,\r
-    TimeoutInMicroseconds,\r
-    ProcedureArguments,\r
-    Token,\r
-    CPUStatus\r
-    );\r
+  return InternalSmmStartupAllAPs (\r
+           Procedure,\r
+           TimeoutInMicroseconds,\r
+           ProcedureArguments,\r
+           Token,\r
+           CPUStatus\r
+           );\r
 }\r
 \r
 /**\r
@@ -286,8 +286,8 @@ SmmMpSetStartupProcedure (
 EFI_STATUS\r
 EFIAPI\r
 SmmMpCheckForProcedure (\r
-  IN CONST EFI_MM_MP_PROTOCOL            *This,\r
-  IN       MM_COMPLETION                 Token\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  IN       MM_COMPLETION       Token\r
   )\r
 {\r
   if (Token == NULL) {\r
@@ -329,11 +329,11 @@ SmmMpCheckForProcedure (
 EFI_STATUS\r
 EFIAPI\r
 SmmMpWaitForProcedure (\r
-  IN CONST EFI_MM_MP_PROTOCOL            *This,\r
-  IN       MM_COMPLETION                 Token\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  IN       MM_COMPLETION       Token\r
   )\r
 {\r
-  EFI_STATUS    Status;\r
+  EFI_STATUS  Status;\r
 \r
   do {\r
     Status = SmmMpCheckForProcedure (This, Token);\r
@@ -341,4 +341,3 @@ SmmMpWaitForProcedure (
 \r
   return Status;\r
 }\r
-\r
index b95ed8c6f836c20d355c40c5c207fcf54673210f..e2dac6c7d4de7fc5c15bee7cf6ec0f7f19d2a1f7 100644 (file)
@@ -27,11 +27,10 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 EFI_STATUS\r
 EFIAPI\r
 SmmMpGetNumberOfProcessors (\r
-  IN CONST EFI_MM_MP_PROTOCOL   *This,\r
-  OUT      UINTN                *NumberOfProcessors\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  OUT      UINTN               *NumberOfProcessors\r
   );\r
 \r
-\r
 /**\r
   This service allows the caller to invoke a procedure one of the application processors (AP). This\r
   function uses an optional token parameter to support blocking and non-blocking modes. If the token\r
@@ -96,13 +95,13 @@ SmmMpGetNumberOfProcessors (
 EFI_STATUS\r
 EFIAPI\r
 SmmMpDispatchProcedure (\r
-  IN CONST EFI_MM_MP_PROTOCOL             *This,\r
-  IN       EFI_AP_PROCEDURE2              Procedure,\r
-  IN       UINTN                          CpuNumber,\r
-  IN       UINTN                          TimeoutInMicroseconds,\r
-  IN OUT   VOID                           *ProcedureArguments OPTIONAL,\r
-  IN OUT   MM_COMPLETION                  *Token,\r
-  IN OUT   EFI_STATUS                     *CPUStatus\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  IN       EFI_AP_PROCEDURE2   Procedure,\r
+  IN       UINTN               CpuNumber,\r
+  IN       UINTN               TimeoutInMicroseconds,\r
+  IN OUT   VOID                *ProcedureArguments OPTIONAL,\r
+  IN OUT   MM_COMPLETION       *Token,\r
+  IN OUT   EFI_STATUS          *CPUStatus\r
   );\r
 \r
 /**\r
@@ -174,15 +173,14 @@ SmmMpDispatchProcedure (
 EFI_STATUS\r
 EFIAPI\r
 SmmMpBroadcastProcedure (\r
-  IN CONST EFI_MM_MP_PROTOCOL             *This,\r
-  IN       EFI_AP_PROCEDURE2              Procedure,\r
-  IN       UINTN                          TimeoutInMicroseconds,\r
-  IN OUT   VOID                           *ProcedureArguments OPTIONAL,\r
-  IN OUT   MM_COMPLETION                  *Token,\r
-  IN OUT   EFI_STATUS                     *CPUStatus\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  IN       EFI_AP_PROCEDURE2   Procedure,\r
+  IN       UINTN               TimeoutInMicroseconds,\r
+  IN OUT   VOID                *ProcedureArguments OPTIONAL,\r
+  IN OUT   MM_COMPLETION       *Token,\r
+  IN OUT   EFI_STATUS          *CPUStatus\r
   );\r
 \r
-\r
 /**\r
   This service allows the caller to set a startup procedure that will be executed when an AP powers\r
   up from a state where core configuration and context is lost. The procedure is execution has the\r
@@ -246,8 +244,8 @@ SmmMpSetStartupProcedure (
 EFI_STATUS\r
 EFIAPI\r
 SmmMpCheckForProcedure (\r
-  IN CONST EFI_MM_MP_PROTOCOL             *This,\r
-  IN       MM_COMPLETION                  Token\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  IN       MM_COMPLETION       Token\r
   );\r
 \r
 /**\r
@@ -278,8 +276,8 @@ SmmMpCheckForProcedure (
 EFI_STATUS\r
 EFIAPI\r
 SmmMpWaitForProcedure (\r
-  IN CONST EFI_MM_MP_PROTOCOL            *This,\r
-  IN       MM_COMPLETION                 Token\r
+  IN CONST EFI_MM_MP_PROTOCOL  *This,\r
+  IN       MM_COMPLETION       Token\r
   );\r
 \r
 #endif\r
index c3f9794b9538dde2da524c2786cf87bea58b369c..c1efda7126054686df242199a45b6aafac65db20 100644 (file)
@@ -11,80 +11,84 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include "PiSmmCpuDxeSmm.h"\r
 #include "SmmProfileInternal.h"\r
 \r
-UINT32                    mSmmProfileCr3;\r
+UINT32  mSmmProfileCr3;\r
 \r
-SMM_PROFILE_HEADER        *mSmmProfileBase;\r
-MSR_DS_AREA_STRUCT        *mMsrDsAreaBase;\r
+SMM_PROFILE_HEADER  *mSmmProfileBase;\r
+MSR_DS_AREA_STRUCT  *mMsrDsAreaBase;\r
 //\r
 // The buffer to store SMM profile data.\r
 //\r
-UINTN                     mSmmProfileSize;\r
+UINTN  mSmmProfileSize;\r
 \r
 //\r
 // The buffer to enable branch trace store.\r
 //\r
-UINTN                     mMsrDsAreaSize   = SMM_PROFILE_DTS_SIZE;\r
+UINTN  mMsrDsAreaSize = SMM_PROFILE_DTS_SIZE;\r
 \r
 //\r
 // The flag indicates if execute-disable is supported by processor.\r
 //\r
-BOOLEAN                   mXdSupported     = TRUE;\r
+BOOLEAN  mXdSupported = TRUE;\r
 \r
 //\r
 // The flag indicates if execute-disable is enabled on processor.\r
 //\r
-BOOLEAN                   mXdEnabled       = FALSE;\r
+BOOLEAN  mXdEnabled = FALSE;\r
 \r
 //\r
 // The flag indicates if BTS is supported by processor.\r
 //\r
-BOOLEAN                   mBtsSupported     = TRUE;\r
+BOOLEAN  mBtsSupported = TRUE;\r
 \r
 //\r
 // The flag indicates if SMM profile starts to record data.\r
 //\r
-BOOLEAN                   mSmmProfileStart = FALSE;\r
+BOOLEAN  mSmmProfileStart = FALSE;\r
 \r
 //\r
 // The flag indicates if #DB will be setup in #PF handler.\r
 //\r
-BOOLEAN                   mSetupDebugTrap = FALSE;\r
+BOOLEAN  mSetupDebugTrap = FALSE;\r
 \r
 //\r
 // Record the page fault exception count for one instruction execution.\r
 //\r
-UINTN                     *mPFEntryCount;\r
+UINTN  *mPFEntryCount;\r
 \r
-UINT64                    (*mLastPFEntryValue)[MAX_PF_ENTRY_COUNT];\r
+UINT64 (*mLastPFEntryValue)[MAX_PF_ENTRY_COUNT];\r
 UINT64                    *(*mLastPFEntryPointer)[MAX_PF_ENTRY_COUNT];\r
 \r
-MSR_DS_AREA_STRUCT        **mMsrDsArea;\r
-BRANCH_TRACE_RECORD       **mMsrBTSRecord;\r
-UINTN                     mBTSRecordNumber;\r
-PEBS_RECORD               **mMsrPEBSRecord;\r
+MSR_DS_AREA_STRUCT   **mMsrDsArea;\r
+BRANCH_TRACE_RECORD  **mMsrBTSRecord;\r
+UINTN                mBTSRecordNumber;\r
+PEBS_RECORD          **mMsrPEBSRecord;\r
 \r
 //\r
 // These memory ranges are always present, they does not generate the access type of page fault exception,\r
 // but they possibly generate instruction fetch type of page fault exception.\r
 //\r
-MEMORY_PROTECTION_RANGE   *mProtectionMemRange     = NULL;\r
-UINTN                     mProtectionMemRangeCount = 0;\r
+MEMORY_PROTECTION_RANGE  *mProtectionMemRange     = NULL;\r
+UINTN                    mProtectionMemRangeCount = 0;\r
 \r
 //\r
 // Some predefined memory ranges.\r
 //\r
-MEMORY_PROTECTION_RANGE mProtectionMemRangeTemplate[] = {\r
+MEMORY_PROTECTION_RANGE  mProtectionMemRangeTemplate[] = {\r
   //\r
   // SMRAM range (to be fixed in runtime).\r
   // It is always present and instruction fetches are allowed.\r
   //\r
-  {{0x00000000, 0x00000000},TRUE,FALSE},\r
+  {\r
+    { 0x00000000, 0x00000000 }, TRUE, FALSE\r
+  },\r
 \r
   //\r
   // SMM profile data range( to be fixed in runtime).\r
   // It is always present and instruction fetches are not allowed.\r
   //\r
-  {{0x00000000, 0x00000000},TRUE,TRUE},\r
+  {\r
+    { 0x00000000, 0x00000000 }, TRUE, TRUE\r
+  },\r
 \r
   //\r
   // SMRAM ranges not covered by mCpuHotPlugData.SmrrBase/mCpuHotPlugData.SmrrSiz (to be fixed in runtime).\r
@@ -105,13 +109,13 @@ MEMORY_PROTECTION_RANGE mProtectionMemRangeTemplate[] = {
 //\r
 // These memory ranges are mapped by 4KB-page instead of 2MB-page.\r
 //\r
-MEMORY_RANGE              *mSplitMemRange          = NULL;\r
-UINTN                     mSplitMemRangeCount      = 0;\r
+MEMORY_RANGE  *mSplitMemRange     = NULL;\r
+UINTN         mSplitMemRangeCount = 0;\r
 \r
 //\r
 // SMI command port.\r
 //\r
-UINT32                    mSmiCommandPort;\r
+UINT32  mSmiCommandPort;\r
 \r
 /**\r
   Disable branch trace store.\r
@@ -146,8 +150,8 @@ GetCpuIndex (
   VOID\r
   )\r
 {\r
-  UINTN     Index;\r
-  UINT32    ApicId;\r
+  UINTN   Index;\r
+  UINT32  ApicId;\r
 \r
   ApicId = GetApicId ();\r
 \r
@@ -156,6 +160,7 @@ GetCpuIndex (
       return Index;\r
     }\r
   }\r
+\r
   ASSERT (FALSE);\r
   return 0;\r
 }\r
@@ -169,8 +174,8 @@ GetCpuIndex (
 **/\r
 UINT64\r
 GetSourceFromDestinationOnBts (\r
-  UINTN  CpuIndex,\r
-  UINT64 DestinationIP\r
+  UINTN   CpuIndex,\r
+  UINT64  DestinationIP\r
   )\r
 {\r
   BRANCH_TRACE_RECORD  *CurrentBTSRecord;\r
@@ -186,8 +191,9 @@ GetSourceFromDestinationOnBts (
       // Underflow\r
       //\r
       CurrentBTSRecord = (BRANCH_TRACE_RECORD *)((UINTN)mMsrDsArea[CpuIndex]->BTSAbsoluteMaximum - 1);\r
-      CurrentBTSRecord --;\r
+      CurrentBTSRecord--;\r
     }\r
+\r
     if (CurrentBTSRecord->LastBranchTo == DestinationIP) {\r
       //\r
       // Good! find 1st one, then find 2nd one.\r
@@ -204,6 +210,7 @@ GetSourceFromDestinationOnBts (
         return CurrentBTSRecord->LastBranchFrom;\r
       }\r
     }\r
+\r
     CurrentBTSRecord--;\r
   }\r
 \r
@@ -221,8 +228,8 @@ GetSourceFromDestinationOnBts (
 VOID\r
 EFIAPI\r
 DebugExceptionHandler (\r
-    IN EFI_EXCEPTION_TYPE   InterruptType,\r
-    IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  InterruptType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   UINTN  CpuIndex;\r
@@ -230,9 +237,11 @@ DebugExceptionHandler (
 \r
   if (!mSmmProfileStart &&\r
       !HEAP_GUARD_NONSTOP_MODE &&\r
-      !NULL_DETECTION_NONSTOP_MODE) {\r
+      !NULL_DETECTION_NONSTOP_MODE)\r
+  {\r
     return;\r
   }\r
+\r
   CpuIndex = GetCpuIndex ();\r
 \r
   //\r
@@ -268,7 +277,7 @@ DebugExceptionHandler (
 **/\r
 BOOLEAN\r
 IsInSmmRanges (\r
-  IN EFI_PHYSICAL_ADDRESS   Address\r
+  IN EFI_PHYSICAL_ADDRESS  Address\r
   )\r
 {\r
   UINTN  Index;\r
@@ -276,12 +285,15 @@ IsInSmmRanges (
   if ((Address >= mCpuHotPlugData.SmrrBase) && (Address < mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize)) {\r
     return TRUE;\r
   }\r
+\r
   for (Index = 0; Index < mSmmCpuSmramRangeCount; Index++) {\r
-    if (Address >= mSmmCpuSmramRanges[Index].CpuStart &&\r
-        Address < mSmmCpuSmramRanges[Index].CpuStart + mSmmCpuSmramRanges[Index].PhysicalSize) {\r
+    if ((Address >= mSmmCpuSmramRanges[Index].CpuStart) &&\r
+        (Address < mSmmCpuSmramRanges[Index].CpuStart + mSmmCpuSmramRanges[Index].PhysicalSize))\r
+    {\r
       return TRUE;\r
     }\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -294,8 +306,8 @@ IsInSmmRanges (
 **/\r
 BOOLEAN\r
 IsAddressValid (\r
-  IN EFI_PHYSICAL_ADDRESS   Address,\r
-  IN BOOLEAN                *Nx\r
+  IN EFI_PHYSICAL_ADDRESS  Address,\r
+  IN BOOLEAN               *Nx\r
   )\r
 {\r
   UINTN  Index;\r
@@ -310,14 +322,15 @@ IsAddressValid (
         return mProtectionMemRange[Index].Present;\r
       }\r
     }\r
+\r
     *Nx = TRUE;\r
     return FALSE;\r
-\r
   } else {\r
     *Nx = TRUE;\r
     if (IsInSmmRanges (Address)) {\r
       *Nx = FALSE;\r
     }\r
+\r
     return TRUE;\r
   }\r
 }\r
@@ -330,7 +343,7 @@ IsAddressValid (
 **/\r
 BOOLEAN\r
 IsAddressSplit (\r
-  IN EFI_PHYSICAL_ADDRESS   Address\r
+  IN EFI_PHYSICAL_ADDRESS  Address\r
   )\r
 {\r
   UINTN  Index;\r
@@ -349,12 +362,13 @@ IsAddressSplit (
       if ((mCpuHotPlugData.SmrrBase - Address) < BASE_2MB) {\r
         return TRUE;\r
       }\r
-    } else if (Address > (mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize - BASE_2MB))  {\r
+    } else if (Address > (mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize - BASE_2MB)) {\r
       if ((Address - (mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize - BASE_2MB)) < BASE_2MB) {\r
         return TRUE;\r
       }\r
     }\r
   }\r
+\r
   //\r
   // Return default\r
   //\r
@@ -393,9 +407,9 @@ InitProtectedMemRange (
   // Get MMIO ranges from GCD and add them into protected memory ranges.\r
   //\r
   gDS->GetMemorySpaceMap (\r
-       &NumberOfDescriptors,\r
-       &MemorySpaceMap\r
-       );\r
+         &NumberOfDescriptors,\r
+         &MemorySpaceMap\r
+         );\r
   for (Index = 0; Index < NumberOfDescriptors; Index++) {\r
     if (MemorySpaceMap[Index].GcdMemoryType == EfiGcdMemoryTypeMemoryMappedIo) {\r
       NumberOfAddedDescriptors++;\r
@@ -403,8 +417,8 @@ InitProtectedMemRange (
   }\r
 \r
   if (NumberOfAddedDescriptors != 0) {\r
-    TotalSize = NumberOfAddedDescriptors * sizeof (MEMORY_PROTECTION_RANGE) + sizeof (mProtectionMemRangeTemplate);\r
-    mProtectionMemRange = (MEMORY_PROTECTION_RANGE *) AllocateZeroPool (TotalSize);\r
+    TotalSize           = NumberOfAddedDescriptors * sizeof (MEMORY_PROTECTION_RANGE) + sizeof (mProtectionMemRangeTemplate);\r
+    mProtectionMemRange = (MEMORY_PROTECTION_RANGE *)AllocateZeroPool (TotalSize);\r
     ASSERT (mProtectionMemRange != NULL);\r
     mProtectionMemRangeCount = TotalSize / sizeof (MEMORY_PROTECTION_RANGE);\r
 \r
@@ -416,8 +430,8 @@ InitProtectedMemRange (
     //\r
     // Create split ranges which come from protected ranges.\r
     //\r
-    TotalSize = (TotalSize / sizeof (MEMORY_PROTECTION_RANGE)) * sizeof (MEMORY_RANGE);\r
-    mSplitMemRange = (MEMORY_RANGE *) AllocateZeroPool (TotalSize);\r
+    TotalSize      = (TotalSize / sizeof (MEMORY_PROTECTION_RANGE)) * sizeof (MEMORY_RANGE);\r
+    mSplitMemRange = (MEMORY_RANGE *)AllocateZeroPool (TotalSize);\r
     ASSERT (mSplitMemRange != NULL);\r
 \r
     //\r
@@ -425,13 +439,15 @@ InitProtectedMemRange (
     //\r
     NumberOfProtectRange = sizeof (mProtectionMemRangeTemplate) / sizeof (MEMORY_PROTECTION_RANGE);\r
     for (Index = 0; Index < mSmmCpuSmramRangeCount; Index++) {\r
-      if (mSmmCpuSmramRanges[Index].CpuStart >= mProtectionMemRange[0].Range.Base &&\r
-          mSmmCpuSmramRanges[Index].CpuStart + mSmmCpuSmramRanges[Index].PhysicalSize < mProtectionMemRange[0].Range.Top) {\r
+      if ((mSmmCpuSmramRanges[Index].CpuStart >= mProtectionMemRange[0].Range.Base) &&\r
+          (mSmmCpuSmramRanges[Index].CpuStart + mSmmCpuSmramRanges[Index].PhysicalSize < mProtectionMemRange[0].Range.Top))\r
+      {\r
         //\r
         // If the address have been already covered by mCpuHotPlugData.SmrrBase/mCpuHotPlugData.SmrrSiz\r
         //\r
         break;\r
       }\r
+\r
       mProtectionMemRange[NumberOfProtectRange].Range.Base = mSmmCpuSmramRanges[Index].CpuStart;\r
       mProtectionMemRange[NumberOfProtectRange].Range.Top  = mSmmCpuSmramRanges[Index].CpuStart + mSmmCpuSmramRanges[Index].PhysicalSize;\r
       mProtectionMemRange[NumberOfProtectRange].Present    = TRUE;\r
@@ -446,6 +462,7 @@ InitProtectedMemRange (
       if (MemorySpaceMap[Index].GcdMemoryType != EfiGcdMemoryTypeMemoryMappedIo) {\r
         continue;\r
       }\r
+\r
       mProtectionMemRange[NumberOfProtectRange].Range.Base = MemorySpaceMap[Index].BaseAddress;\r
       mProtectionMemRange[NumberOfProtectRange].Range.Top  = MemorySpaceMap[Index].BaseAddress + MemorySpaceMap[Index].Length;\r
       mProtectionMemRange[NumberOfProtectRange].Present    = TRUE;\r
@@ -479,7 +496,8 @@ InitProtectedMemRange (
       Top2MBAlignedAddress  = ProtectEndAddress & ~(SIZE_2MB - 1);\r
       Base2MBAlignedAddress = (ProtectBaseAddress + SIZE_2MB - 1) & ~(SIZE_2MB - 1);\r
       if ((Top2MBAlignedAddress > Base2MBAlignedAddress) &&\r
-          ((Top2MBAlignedAddress - Base2MBAlignedAddress) >= SIZE_2MB)) {\r
+          ((Top2MBAlignedAddress - Base2MBAlignedAddress) >= SIZE_2MB))\r
+      {\r
         //\r
         // There is an range which could be mapped by 2MB-page.\r
         //\r
@@ -493,6 +511,7 @@ InitProtectedMemRange (
           mSplitMemRange[NumberOfSpliteRange].Top  = (ProtectEndAddress + SIZE_2MB - 1) & ~(SIZE_2MB - 1);\r
           NumberOfSpliteRange++;\r
         }\r
+\r
         if (Low4KBPageSize != 0) {\r
           //\r
           // Add not 2MB-aligned range to be mapped by 4KB-page.\r
@@ -519,6 +538,7 @@ InitProtectedMemRange (
     DEBUG ((DEBUG_INFO, "mProtectionMemRange[%d].Base = %lx\n", Index, mProtectionMemRange[Index].Range.Base));\r
     DEBUG ((DEBUG_INFO, "mProtectionMemRange[%d].Top  = %lx\n", Index, mProtectionMemRange[Index].Range.Top));\r
   }\r
+\r
   for (Index = 0; Index < mSplitMemRangeCount; Index++) {\r
     DEBUG ((DEBUG_INFO, "mSplitMemRange[%d].Base = %lx\n", Index, mSplitMemRange[Index].Base));\r
     DEBUG ((DEBUG_INFO, "mSplitMemRange[%d].Top  = %lx\n", Index, mSplitMemRange[Index].Top));\r
@@ -534,64 +554,65 @@ InitPaging (
   VOID\r
   )\r
 {\r
-  UINT64                            Pml5Entry;\r
-  UINT64                            Pml4Entry;\r
-  UINT64                            *Pml5;\r
-  UINT64                            *Pml4;\r
-  UINT64                            *Pdpt;\r
-  UINT64                            *Pd;\r
-  UINT64                            *Pt;\r
-  UINTN                             Address;\r
-  UINTN                             Pml5Index;\r
-  UINTN                             Pml4Index;\r
-  UINTN                             PdptIndex;\r
-  UINTN                             PdIndex;\r
-  UINTN                             PtIndex;\r
-  UINTN                             NumberOfPdptEntries;\r
-  UINTN                             NumberOfPml4Entries;\r
-  UINTN                             NumberOfPml5Entries;\r
-  UINTN                             SizeOfMemorySpace;\r
-  BOOLEAN                           Nx;\r
-  IA32_CR4                          Cr4;\r
-  BOOLEAN                           Enable5LevelPaging;\r
-\r
-  Cr4.UintN = AsmReadCr4 ();\r
-  Enable5LevelPaging = (BOOLEAN) (Cr4.Bits.LA57 == 1);\r
+  UINT64    Pml5Entry;\r
+  UINT64    Pml4Entry;\r
+  UINT64    *Pml5;\r
+  UINT64    *Pml4;\r
+  UINT64    *Pdpt;\r
+  UINT64    *Pd;\r
+  UINT64    *Pt;\r
+  UINTN     Address;\r
+  UINTN     Pml5Index;\r
+  UINTN     Pml4Index;\r
+  UINTN     PdptIndex;\r
+  UINTN     PdIndex;\r
+  UINTN     PtIndex;\r
+  UINTN     NumberOfPdptEntries;\r
+  UINTN     NumberOfPml4Entries;\r
+  UINTN     NumberOfPml5Entries;\r
+  UINTN     SizeOfMemorySpace;\r
+  BOOLEAN   Nx;\r
+  IA32_CR4  Cr4;\r
+  BOOLEAN   Enable5LevelPaging;\r
+\r
+  Cr4.UintN          = AsmReadCr4 ();\r
+  Enable5LevelPaging = (BOOLEAN)(Cr4.Bits.LA57 == 1);\r
 \r
   if (sizeof (UINTN) == sizeof (UINT64)) {\r
     if (!Enable5LevelPaging) {\r
-      Pml5Entry = (UINTN) mSmmProfileCr3 | IA32_PG_P;\r
-      Pml5 = &Pml5Entry;\r
+      Pml5Entry = (UINTN)mSmmProfileCr3 | IA32_PG_P;\r
+      Pml5      = &Pml5Entry;\r
     } else {\r
-      Pml5 = (UINT64*) (UINTN) mSmmProfileCr3;\r
+      Pml5 = (UINT64 *)(UINTN)mSmmProfileCr3;\r
     }\r
+\r
     SizeOfMemorySpace = HighBitSet64 (gPhyMask) + 1;\r
     //\r
     // Calculate the table entries of PML4E and PDPTE.\r
     //\r
     NumberOfPml5Entries = 1;\r
     if (SizeOfMemorySpace > 48) {\r
-      NumberOfPml5Entries = (UINTN) LShiftU64 (1, SizeOfMemorySpace - 48);\r
-      SizeOfMemorySpace = 48;\r
+      NumberOfPml5Entries = (UINTN)LShiftU64 (1, SizeOfMemorySpace - 48);\r
+      SizeOfMemorySpace   = 48;\r
     }\r
 \r
     NumberOfPml4Entries = 1;\r
     if (SizeOfMemorySpace > 39) {\r
-      NumberOfPml4Entries = (UINTN) LShiftU64 (1, SizeOfMemorySpace - 39);\r
-      SizeOfMemorySpace = 39;\r
+      NumberOfPml4Entries = (UINTN)LShiftU64 (1, SizeOfMemorySpace - 39);\r
+      SizeOfMemorySpace   = 39;\r
     }\r
 \r
     NumberOfPdptEntries = 1;\r
     ASSERT (SizeOfMemorySpace > 30);\r
-    NumberOfPdptEntries = (UINTN) LShiftU64 (1, SizeOfMemorySpace - 30);\r
+    NumberOfPdptEntries = (UINTN)LShiftU64 (1, SizeOfMemorySpace - 30);\r
   } else {\r
-    Pml4Entry = (UINTN) mSmmProfileCr3 | IA32_PG_P;\r
-    Pml4 = &Pml4Entry;\r
-    Pml5Entry = (UINTN) Pml4 | IA32_PG_P;\r
-    Pml5 = &Pml5Entry;\r
-    NumberOfPml5Entries  = 1;\r
-    NumberOfPml4Entries  = 1;\r
-    NumberOfPdptEntries  = 4;\r
+    Pml4Entry           = (UINTN)mSmmProfileCr3 | IA32_PG_P;\r
+    Pml4                = &Pml4Entry;\r
+    Pml5Entry           = (UINTN)Pml4 | IA32_PG_P;\r
+    Pml5                = &Pml5Entry;\r
+    NumberOfPml5Entries = 1;\r
+    NumberOfPml4Entries = 1;\r
+    NumberOfPdptEntries = 4;\r
   }\r
 \r
   //\r
@@ -604,7 +625,8 @@ InitPaging (
       //\r
       continue;\r
     }\r
-    Pml4 = (UINT64 *) (UINTN) (Pml5[Pml5Index] & PHYSICAL_ADDRESS_MASK);\r
+\r
+    Pml4 = (UINT64 *)(UINTN)(Pml5[Pml5Index] & PHYSICAL_ADDRESS_MASK);\r
     for (Pml4Index = 0; Pml4Index < NumberOfPml4Entries; Pml4Index++) {\r
       if ((Pml4[Pml4Index] & IA32_PG_P) == 0) {\r
         //\r
@@ -612,6 +634,7 @@ InitPaging (
         //\r
         continue;\r
       }\r
+\r
       Pdpt = (UINT64 *)(UINTN)(Pml4[Pml4Index] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
       for (PdptIndex = 0; PdptIndex < NumberOfPdptEntries; PdptIndex++, Pdpt++) {\r
         if ((*Pdpt & IA32_PG_P) == 0) {\r
@@ -620,16 +643,19 @@ InitPaging (
           //\r
           continue;\r
         }\r
+\r
         if ((*Pdpt & IA32_PG_PS) != 0) {\r
           //\r
           // This is 1G entry, skip it\r
           //\r
           continue;\r
         }\r
+\r
         Pd = (UINT64 *)(UINTN)(*Pdpt & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
         if (Pd == 0) {\r
           continue;\r
         }\r
+\r
         for (PdIndex = 0; PdIndex < SIZE_4KB / sizeof (*Pd); PdIndex++, Pd++) {\r
           if ((*Pd & IA32_PG_P) == 0) {\r
             //\r
@@ -637,13 +663,14 @@ InitPaging (
             //\r
             continue;\r
           }\r
-          Address = (UINTN) LShiftU64 (\r
-                              LShiftU64 (\r
-                                LShiftU64 ((Pml5Index << 9) + Pml4Index, 9) + PdptIndex,\r
-                                9\r
-                                ) + PdIndex,\r
-                                21\r
-                              );\r
+\r
+          Address = (UINTN)LShiftU64 (\r
+                             LShiftU64 (\r
+                               LShiftU64 ((Pml5Index << 9) + Pml4Index, 9) + PdptIndex,\r
+                               9\r
+                               ) + PdIndex,\r
+                             21\r
+                             );\r
 \r
           //\r
           // If it is 2M page, check IsAddressSplit()\r
@@ -658,9 +685,10 @@ InitPaging (
             ASSERT (Pt != NULL);\r
 \r
             // Split it\r
-            for (PtIndex = 0; PtIndex < SIZE_4KB / sizeof(*Pt); PtIndex++) {\r
+            for (PtIndex = 0; PtIndex < SIZE_4KB / sizeof (*Pt); PtIndex++) {\r
               Pt[PtIndex] = Address + ((PtIndex << 12) | mAddressEncMask | PAGE_ATTRIBUTE_BITS);\r
             } // end for PT\r
+\r
             *Pd = (UINT64)(UINTN)Pt | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
           } // end if IsAddressSplit\r
         } // end for PD\r
@@ -679,7 +707,8 @@ InitPaging (
       //\r
       continue;\r
     }\r
-    Pml4 = (UINT64 *) (UINTN) (Pml5[Pml5Index] & PHYSICAL_ADDRESS_MASK);\r
+\r
+    Pml4 = (UINT64 *)(UINTN)(Pml5[Pml5Index] & PHYSICAL_ADDRESS_MASK);\r
     for (Pml4Index = 0; Pml4Index < NumberOfPml4Entries; Pml4Index++) {\r
       if ((Pml4[Pml4Index] & IA32_PG_P) == 0) {\r
         //\r
@@ -687,6 +716,7 @@ InitPaging (
         //\r
         continue;\r
       }\r
+\r
       Pdpt = (UINT64 *)(UINTN)(Pml4[Pml4Index] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
       for (PdptIndex = 0; PdptIndex < NumberOfPdptEntries; PdptIndex++, Pdpt++) {\r
         if ((*Pdpt & IA32_PG_P) == 0) {\r
@@ -695,6 +725,7 @@ InitPaging (
           //\r
           continue;\r
         }\r
+\r
         if ((*Pdpt & IA32_PG_PS) != 0) {\r
           //\r
           // This is 1G entry, set NX bit and skip it\r
@@ -702,12 +733,15 @@ InitPaging (
           if (mXdSupported) {\r
             *Pdpt = *Pdpt | IA32_PG_NX;\r
           }\r
+\r
           continue;\r
         }\r
+\r
         Pd = (UINT64 *)(UINTN)(*Pdpt & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
         if (Pd == 0) {\r
           continue;\r
         }\r
+\r
         for (PdIndex = 0; PdIndex < SIZE_4KB / sizeof (*Pd); PdIndex++, Pd++) {\r
           if ((*Pd & IA32_PG_P) == 0) {\r
             //\r
@@ -715,13 +749,14 @@ InitPaging (
             //\r
             continue;\r
           }\r
-          Address = (UINTN) LShiftU64 (\r
-                              LShiftU64 (\r
-                                LShiftU64 ((Pml5Index << 9) + Pml4Index, 9) + PdptIndex,\r
-                                9\r
-                                ) + PdIndex,\r
-                                21\r
-                              );\r
+\r
+          Address = (UINTN)LShiftU64 (\r
+                             LShiftU64 (\r
+                               LShiftU64 ((Pml5Index << 9) + Pml4Index, 9) + PdptIndex,\r
+                               9\r
+                               ) + PdIndex,\r
+                             21\r
+                             );\r
 \r
           if ((*Pd & IA32_PG_PS) != 0) {\r
             // 2MB page\r
@@ -732,6 +767,7 @@ InitPaging (
               //\r
               *Pd = *Pd & (INTN)(INT32)(~PAGE_ATTRIBUTE_BITS);\r
             }\r
+\r
             if (Nx && mXdSupported) {\r
               *Pd = *Pd | IA32_PG_NX;\r
             }\r
@@ -741,13 +777,16 @@ InitPaging (
             if (Pt == 0) {\r
               continue;\r
             }\r
-            for (PtIndex = 0; PtIndex < SIZE_4KB / sizeof(*Pt); PtIndex++, Pt++) {\r
+\r
+            for (PtIndex = 0; PtIndex < SIZE_4KB / sizeof (*Pt); PtIndex++, Pt++) {\r
               if (!IsAddressValid (Address, &Nx)) {\r
                 *Pt = *Pt & (INTN)(INT32)(~PAGE_ATTRIBUTE_BITS);\r
               }\r
+\r
               if (Nx && mXdSupported) {\r
                 *Pt = *Pt | IA32_PG_NX;\r
               }\r
+\r
               Address += SIZE_4KB;\r
             } // end for PT\r
           } // end if PS\r
@@ -766,7 +805,7 @@ InitPaging (
   //\r
   mXdEnabled = TRUE;\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -778,11 +817,11 @@ GetSmiCommandPort (
   VOID\r
   )\r
 {\r
-  EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *Fadt;\r
+  EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE  *Fadt;\r
 \r
-  Fadt = (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *) EfiLocateFirstAcpiTable (\r
-                                                         EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE\r
-                                                         );\r
+  Fadt = (EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE *)EfiLocateFirstAcpiTable (\r
+                                                        EFI_ACPI_2_0_FIXED_ACPI_DESCRIPTION_TABLE_SIGNATURE\r
+                                                        );\r
   ASSERT (Fadt != NULL);\r
 \r
   mSmiCommandPort = Fadt->SmiCmd;\r
@@ -830,7 +869,7 @@ InitSmmProfileCallBack (
          SMM_PROFILE_NAME,\r
          &gEfiCallerIdGuid,\r
          EFI_VARIABLE_BOOTSERVICE_ACCESS | EFI_VARIABLE_RUNTIME_ACCESS,\r
-         sizeof(mSmmProfileBase),\r
+         sizeof (mSmmProfileBase),\r
          &mSmmProfileBase\r
          );\r
 \r
@@ -856,20 +895,22 @@ InitSmmProfileInternal (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  EFI_PHYSICAL_ADDRESS       Base;\r
-  VOID                       *Registration;\r
-  UINTN                      Index;\r
-  UINTN                      MsrDsAreaSizePerCpu;\r
-  UINTN                      TotalSize;\r
+  EFI_STATUS            Status;\r
+  EFI_PHYSICAL_ADDRESS  Base;\r
+  VOID                  *Registration;\r
+  UINTN                 Index;\r
+  UINTN                 MsrDsAreaSizePerCpu;\r
+  UINTN                 TotalSize;\r
 \r
   mPFEntryCount = (UINTN *)AllocateZeroPool (sizeof (UINTN) * mMaxNumberOfCpus);\r
   ASSERT (mPFEntryCount != NULL);\r
-  mLastPFEntryValue = (UINT64  (*)[MAX_PF_ENTRY_COUNT])AllocateZeroPool (\r
-                                                         sizeof (mLastPFEntryValue[0]) * mMaxNumberOfCpus);\r
+  mLastPFEntryValue = (UINT64 (*)[MAX_PF_ENTRY_COUNT])AllocateZeroPool (\r
+                                                        sizeof (mLastPFEntryValue[0]) * mMaxNumberOfCpus\r
+                                                        );\r
   ASSERT (mLastPFEntryValue != NULL);\r
   mLastPFEntryPointer = (UINT64 *(*)[MAX_PF_ENTRY_COUNT])AllocateZeroPool (\r
-                                                           sizeof (mLastPFEntryPointer[0]) * mMaxNumberOfCpus);\r
+                                                           sizeof (mLastPFEntryPointer[0]) * mMaxNumberOfCpus\r
+                                                           );\r
   ASSERT (mLastPFEntryPointer != NULL);\r
 \r
   //\r
@@ -885,7 +926,7 @@ InitSmmProfileInternal (
     TotalSize = mSmmProfileSize;\r
   }\r
 \r
-  Base = 0xFFFFFFFF;\r
+  Base   = 0xFFFFFFFF;\r
   Status = gBS->AllocatePages (\r
                   AllocateMaxAddress,\r
                   EfiReservedMemoryType,\r
@@ -900,8 +941,8 @@ InitSmmProfileInternal (
   // Initialize SMM profile data header.\r
   //\r
   mSmmProfileBase->HeaderSize     = sizeof (SMM_PROFILE_HEADER);\r
-  mSmmProfileBase->MaxDataEntries = (UINT64)((mSmmProfileSize - sizeof(SMM_PROFILE_HEADER)) / sizeof (SMM_PROFILE_ENTRY));\r
-  mSmmProfileBase->MaxDataSize    = MultU64x64 (mSmmProfileBase->MaxDataEntries, sizeof(SMM_PROFILE_ENTRY));\r
+  mSmmProfileBase->MaxDataEntries = (UINT64)((mSmmProfileSize - sizeof (SMM_PROFILE_HEADER)) / sizeof (SMM_PROFILE_ENTRY));\r
+  mSmmProfileBase->MaxDataSize    = MultU64x64 (mSmmProfileBase->MaxDataEntries, sizeof (SMM_PROFILE_ENTRY));\r
   mSmmProfileBase->CurDataEntries = 0;\r
   mSmmProfileBase->CurDataSize    = 0;\r
   mSmmProfileBase->TsegStart      = mCpuHotPlugData.SmrrBase;\r
@@ -917,22 +958,22 @@ InitSmmProfileInternal (
     mMsrPEBSRecord = (PEBS_RECORD **)AllocateZeroPool (sizeof (PEBS_RECORD *) * mMaxNumberOfCpus);\r
     ASSERT (mMsrPEBSRecord != NULL);\r
 \r
-    mMsrDsAreaBase  = (MSR_DS_AREA_STRUCT *)((UINTN)Base + mSmmProfileSize);\r
+    mMsrDsAreaBase      = (MSR_DS_AREA_STRUCT *)((UINTN)Base + mSmmProfileSize);\r
     MsrDsAreaSizePerCpu = mMsrDsAreaSize / mMaxNumberOfCpus;\r
-    mBTSRecordNumber    = (MsrDsAreaSizePerCpu - sizeof(PEBS_RECORD) * PEBS_RECORD_NUMBER - sizeof(MSR_DS_AREA_STRUCT)) / sizeof(BRANCH_TRACE_RECORD);\r
+    mBTSRecordNumber    = (MsrDsAreaSizePerCpu - sizeof (PEBS_RECORD) * PEBS_RECORD_NUMBER - sizeof (MSR_DS_AREA_STRUCT)) / sizeof (BRANCH_TRACE_RECORD);\r
     for (Index = 0; Index < mMaxNumberOfCpus; Index++) {\r
       mMsrDsArea[Index]     = (MSR_DS_AREA_STRUCT *)((UINTN)mMsrDsAreaBase + MsrDsAreaSizePerCpu * Index);\r
-      mMsrBTSRecord[Index]  = (BRANCH_TRACE_RECORD *)((UINTN)mMsrDsArea[Index] + sizeof(MSR_DS_AREA_STRUCT));\r
-      mMsrPEBSRecord[Index] = (PEBS_RECORD *)((UINTN)mMsrDsArea[Index] + MsrDsAreaSizePerCpu - sizeof(PEBS_RECORD) * PEBS_RECORD_NUMBER);\r
+      mMsrBTSRecord[Index]  = (BRANCH_TRACE_RECORD *)((UINTN)mMsrDsArea[Index] + sizeof (MSR_DS_AREA_STRUCT));\r
+      mMsrPEBSRecord[Index] = (PEBS_RECORD *)((UINTN)mMsrDsArea[Index] + MsrDsAreaSizePerCpu - sizeof (PEBS_RECORD) * PEBS_RECORD_NUMBER);\r
 \r
-      mMsrDsArea[Index]->BTSBufferBase          = (UINTN)mMsrBTSRecord[Index];\r
-      mMsrDsArea[Index]->BTSIndex               = mMsrDsArea[Index]->BTSBufferBase;\r
-      mMsrDsArea[Index]->BTSAbsoluteMaximum     = mMsrDsArea[Index]->BTSBufferBase + mBTSRecordNumber * sizeof(BRANCH_TRACE_RECORD) + 1;\r
-      mMsrDsArea[Index]->BTSInterruptThreshold  = mMsrDsArea[Index]->BTSAbsoluteMaximum + 1;\r
+      mMsrDsArea[Index]->BTSBufferBase         = (UINTN)mMsrBTSRecord[Index];\r
+      mMsrDsArea[Index]->BTSIndex              = mMsrDsArea[Index]->BTSBufferBase;\r
+      mMsrDsArea[Index]->BTSAbsoluteMaximum    = mMsrDsArea[Index]->BTSBufferBase + mBTSRecordNumber * sizeof (BRANCH_TRACE_RECORD) + 1;\r
+      mMsrDsArea[Index]->BTSInterruptThreshold = mMsrDsArea[Index]->BTSAbsoluteMaximum + 1;\r
 \r
       mMsrDsArea[Index]->PEBSBufferBase         = (UINTN)mMsrPEBSRecord[Index];\r
       mMsrDsArea[Index]->PEBSIndex              = mMsrDsArea[Index]->PEBSBufferBase;\r
-      mMsrDsArea[Index]->PEBSAbsoluteMaximum    = mMsrDsArea[Index]->PEBSBufferBase + PEBS_RECORD_NUMBER * sizeof(PEBS_RECORD) + 1;\r
+      mMsrDsArea[Index]->PEBSAbsoluteMaximum    = mMsrDsArea[Index]->PEBSBufferBase + PEBS_RECORD_NUMBER * sizeof (PEBS_RECORD) + 1;\r
       mMsrDsArea[Index]->PEBSInterruptThreshold = mMsrDsArea[Index]->PEBSAbsoluteMaximum + 1;\r
     }\r
   }\r
@@ -967,7 +1008,7 @@ InitSmmProfileInternal (
                     );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -1056,12 +1097,13 @@ ActivateSingleStepDB (
   VOID\r
   )\r
 {\r
-  UINTN    Dr6;\r
+  UINTN  Dr6;\r
 \r
   Dr6 = AsmReadDr6 ();\r
   if ((Dr6 & DR6_SINGLE_STEP) != 0) {\r
     return;\r
   }\r
+\r
   Dr6 |= DR6_SINGLE_STEP;\r
   AsmWriteDr6 (Dr6);\r
 }\r
@@ -1079,8 +1121,9 @@ ActivateLBR (
 \r
   DebugCtl = AsmReadMsr64 (MSR_DEBUG_CTL);\r
   if ((DebugCtl & MSR_DEBUG_CTL_LBR) != 0) {\r
-    return ;\r
+    return;\r
   }\r
+\r
   DebugCtl |= MSR_DEBUG_CTL_LBR;\r
   AsmWriteMsr64 (MSR_DEBUG_CTL, DebugCtl);\r
 }\r
@@ -1093,14 +1136,14 @@ ActivateLBR (
 **/\r
 VOID\r
 ActivateBTS (\r
-  IN      UINTN                     CpuIndex\r
+  IN      UINTN  CpuIndex\r
   )\r
 {\r
   UINT64  DebugCtl;\r
 \r
   DebugCtl = AsmReadMsr64 (MSR_DEBUG_CTL);\r
   if ((DebugCtl & MSR_DEBUG_CTL_BTS) != 0) {\r
-    return ;\r
+    return;\r
   }\r
 \r
   AsmWriteMsr64 (MSR_DS_AREA, (UINT64)(UINTN)mMsrDsArea[CpuIndex]);\r
@@ -1131,7 +1174,7 @@ SmmProfileRecordSmiNum (
 **/\r
 VOID\r
 ActivateSmmProfile (\r
-  IN UINTN CpuIndex\r
+  IN UINTN  CpuIndex\r
   )\r
 {\r
   //\r
@@ -1173,7 +1216,8 @@ InitSmmProfile (
   //\r
   if (!FeaturePcdGet (PcdCpuSmmProfileEnable) &&\r
       !HEAP_GUARD_NONSTOP_MODE &&\r
-      !NULL_DETECTION_NONSTOP_MODE) {\r
+      !NULL_DETECTION_NONSTOP_MODE)\r
+  {\r
     return;\r
   }\r
 \r
@@ -1206,19 +1250,19 @@ InitSmmProfile (
 **/\r
 VOID\r
 RestorePageTableBelow4G (\r
-  UINT64        *PageTable,\r
-  UINT64        PFAddress,\r
-  UINTN         CpuIndex,\r
-  UINTN         ErrorCode\r
+  UINT64  *PageTable,\r
+  UINT64  PFAddress,\r
+  UINTN   CpuIndex,\r
+  UINTN   ErrorCode\r
   )\r
 {\r
-  UINTN         PTIndex;\r
-  UINTN         PFIndex;\r
-  IA32_CR4      Cr4;\r
-  BOOLEAN       Enable5LevelPaging;\r
+  UINTN     PTIndex;\r
+  UINTN     PFIndex;\r
+  IA32_CR4  Cr4;\r
+  BOOLEAN   Enable5LevelPaging;\r
 \r
-  Cr4.UintN = AsmReadCr4 ();\r
-  Enable5LevelPaging = (BOOLEAN) (Cr4.Bits.LA57 == 1);\r
+  Cr4.UintN          = AsmReadCr4 ();\r
+  Enable5LevelPaging = (BOOLEAN)(Cr4.Bits.LA57 == 1);\r
 \r
   //\r
   // PML5\r
@@ -1226,16 +1270,16 @@ RestorePageTableBelow4G (
   if (Enable5LevelPaging) {\r
     PTIndex = (UINTN)BitFieldRead64 (PFAddress, 48, 56);\r
     ASSERT (PageTable[PTIndex] != 0);\r
-    PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & PHYSICAL_ADDRESS_MASK);\r
+    PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & PHYSICAL_ADDRESS_MASK);\r
   }\r
 \r
   //\r
   // PML4\r
   //\r
-  if (sizeof(UINT64) == sizeof(UINTN)) {\r
+  if (sizeof (UINT64) == sizeof (UINTN)) {\r
     PTIndex = (UINTN)BitFieldRead64 (PFAddress, 39, 47);\r
     ASSERT (PageTable[PTIndex] != 0);\r
-    PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & PHYSICAL_ADDRESS_MASK);\r
+    PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & PHYSICAL_ADDRESS_MASK);\r
   }\r
 \r
   //\r
@@ -1243,7 +1287,7 @@ RestorePageTableBelow4G (
   //\r
   PTIndex = (UINTN)BitFieldRead64 (PFAddress, 30, 38);\r
   ASSERT (PageTable[PTIndex] != 0);\r
-  PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & PHYSICAL_ADDRESS_MASK);\r
+  PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & PHYSICAL_ADDRESS_MASK);\r
 \r
   //\r
   // PD\r
@@ -1261,7 +1305,7 @@ RestorePageTableBelow4G (
     //\r
     ASSERT (mPFEntryCount[CpuIndex] < MAX_PF_ENTRY_COUNT);\r
     if (mPFEntryCount[CpuIndex] < MAX_PF_ENTRY_COUNT) {\r
-      PFIndex = mPFEntryCount[CpuIndex];\r
+      PFIndex                                = mPFEntryCount[CpuIndex];\r
       mLastPFEntryValue[CpuIndex][PFIndex]   = PageTable[PTIndex];\r
       mLastPFEntryPointer[CpuIndex][PFIndex] = &PageTable[PTIndex];\r
       mPFEntryCount[CpuIndex]++;\r
@@ -1270,7 +1314,7 @@ RestorePageTableBelow4G (
     //\r
     // Set new entry\r
     //\r
-    PageTable[PTIndex] = (PFAddress & ~((1ull << 21) - 1));\r
+    PageTable[PTIndex]  = (PFAddress & ~((1ull << 21) - 1));\r
     PageTable[PTIndex] |= (UINT64)IA32_PG_PS;\r
     PageTable[PTIndex] |= (UINT64)PAGE_ATTRIBUTE_BITS;\r
     if ((ErrorCode & IA32_PF_EC_ID) != 0) {\r
@@ -1281,7 +1325,7 @@ RestorePageTableBelow4G (
     // Small page\r
     //\r
     ASSERT (PageTable[PTIndex] != 0);\r
-    PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & PHYSICAL_ADDRESS_MASK);\r
+    PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & PHYSICAL_ADDRESS_MASK);\r
 \r
     //\r
     // 4K PTE\r
@@ -1295,7 +1339,7 @@ RestorePageTableBelow4G (
     //\r
     ASSERT (mPFEntryCount[CpuIndex] < MAX_PF_ENTRY_COUNT);\r
     if (mPFEntryCount[CpuIndex] < MAX_PF_ENTRY_COUNT) {\r
-      PFIndex = mPFEntryCount[CpuIndex];\r
+      PFIndex                                = mPFEntryCount[CpuIndex];\r
       mLastPFEntryValue[CpuIndex][PFIndex]   = PageTable[PTIndex];\r
       mLastPFEntryPointer[CpuIndex][PFIndex] = &PageTable[PTIndex];\r
       mPFEntryCount[CpuIndex]++;\r
@@ -1304,7 +1348,7 @@ RestorePageTableBelow4G (
     //\r
     // Set new entry\r
     //\r
-    PageTable[PTIndex] = (PFAddress & ~((1ull << 12) - 1));\r
+    PageTable[PTIndex]  = (PFAddress & ~((1ull << 12) - 1));\r
     PageTable[PTIndex] |= (UINT64)PAGE_ATTRIBUTE_BITS;\r
     if ((ErrorCode & IA32_PF_EC_ID) != 0) {\r
       PageTable[PTIndex] &= ~IA32_PG_NX;\r
@@ -1320,18 +1364,18 @@ RestorePageTableBelow4G (
 **/\r
 VOID\r
 GuardPagePFHandler (\r
-  UINTN ErrorCode\r
+  UINTN  ErrorCode\r
   )\r
 {\r
-  UINT64                *PageTable;\r
-  UINT64                PFAddress;\r
-  UINT64                RestoreAddress;\r
-  UINTN                 RestorePageNumber;\r
-  UINTN                 CpuIndex;\r
+  UINT64  *PageTable;\r
+  UINT64  PFAddress;\r
+  UINT64  RestoreAddress;\r
+  UINTN   RestorePageNumber;\r
+  UINTN   CpuIndex;\r
 \r
-  PageTable         = (UINT64 *)AsmReadCr3 ();\r
-  PFAddress         = AsmReadCr2 ();\r
-  CpuIndex          = GetCpuIndex ();\r
+  PageTable = (UINT64 *)AsmReadCr3 ();\r
+  PFAddress = AsmReadCr2 ();\r
+  CpuIndex  = GetCpuIndex ();\r
 \r
   //\r
   // Memory operation cross pages, like "rep mov" instruction, will cause\r
@@ -1339,7 +1383,7 @@ GuardPagePFHandler (
   // that current page and the page followed are both in PRESENT state.\r
   //\r
   RestorePageNumber = 2;\r
-  RestoreAddress = PFAddress;\r
+  RestoreAddress    = PFAddress;\r
   while (RestorePageNumber > 0) {\r
     RestorePageTableBelow4G (PageTable, RestoreAddress, CpuIndex, ErrorCode);\r
     RestoreAddress += EFI_PAGE_SIZE;\r
@@ -1361,25 +1405,25 @@ GuardPagePFHandler (
 **/\r
 VOID\r
 SmmProfilePFHandler (\r
-  UINTN Rip,\r
-  UINTN ErrorCode\r
+  UINTN  Rip,\r
+  UINTN  ErrorCode\r
   )\r
 {\r
-  UINT64                *PageTable;\r
-  UINT64                PFAddress;\r
-  UINT64                RestoreAddress;\r
-  UINTN                 RestorePageNumber;\r
-  UINTN                 CpuIndex;\r
-  UINTN                 Index;\r
-  UINT64                InstructionAddress;\r
-  UINTN                 MaxEntryNumber;\r
-  UINTN                 CurrentEntryNumber;\r
-  BOOLEAN               IsValidPFAddress;\r
-  SMM_PROFILE_ENTRY     *SmmProfileEntry;\r
-  UINT64                SmiCommand;\r
-  EFI_STATUS            Status;\r
-  UINT8                 SoftSmiValue;\r
-  EFI_SMM_SAVE_STATE_IO_INFO    IoInfo;\r
+  UINT64                      *PageTable;\r
+  UINT64                      PFAddress;\r
+  UINT64                      RestoreAddress;\r
+  UINTN                       RestorePageNumber;\r
+  UINTN                       CpuIndex;\r
+  UINTN                       Index;\r
+  UINT64                      InstructionAddress;\r
+  UINTN                       MaxEntryNumber;\r
+  UINTN                       CurrentEntryNumber;\r
+  BOOLEAN                     IsValidPFAddress;\r
+  SMM_PROFILE_ENTRY           *SmmProfileEntry;\r
+  UINT64                      SmiCommand;\r
+  EFI_STATUS                  Status;\r
+  UINT8                       SoftSmiValue;\r
+  EFI_SMM_SAVE_STATE_IO_INFO  IoInfo;\r
 \r
   if (!mSmmProfileStart) {\r
     //\r
@@ -1393,10 +1437,10 @@ SmmProfilePFHandler (
     DisableBTS ();\r
   }\r
 \r
-  IsValidPFAddress  = FALSE;\r
-  PageTable         = (UINT64 *)AsmReadCr3 ();\r
-  PFAddress         = AsmReadCr2 ();\r
-  CpuIndex          = GetCpuIndex ();\r
+  IsValidPFAddress = FALSE;\r
+  PageTable        = (UINT64 *)AsmReadCr3 ();\r
+  PFAddress        = AsmReadCr2 ();\r
+  CpuIndex         = GetCpuIndex ();\r
 \r
   //\r
   // Memory operation cross pages, like "rep mov" instruction, will cause\r
@@ -1404,20 +1448,21 @@ SmmProfilePFHandler (
   // that current page and the page followed are both in PRESENT state.\r
   //\r
   RestorePageNumber = 2;\r
-  RestoreAddress = PFAddress;\r
+  RestoreAddress    = PFAddress;\r
   while (RestorePageNumber > 0) {\r
     if (RestoreAddress <= 0xFFFFFFFF) {\r
       RestorePageTableBelow4G (PageTable, RestoreAddress, CpuIndex, ErrorCode);\r
     } else {\r
       RestorePageTableAbove4G (PageTable, RestoreAddress, CpuIndex, ErrorCode, &IsValidPFAddress);\r
     }\r
+\r
     RestoreAddress += EFI_PAGE_SIZE;\r
     RestorePageNumber--;\r
   }\r
 \r
   if (!IsValidPFAddress) {\r
     InstructionAddress = Rip;\r
-    if ((ErrorCode & IA32_PF_EC_ID) != 0 && (mBtsSupported)) {\r
+    if (((ErrorCode & IA32_PF_EC_ID) != 0) && (mBtsSupported)) {\r
       //\r
       // If it is instruction fetch failure, get the correct IP from BTS.\r
       //\r
@@ -1434,18 +1479,19 @@ SmmProfilePFHandler (
     //\r
     // Indicate it is not software SMI\r
     //\r
-    SmiCommand    = 0xFFFFFFFFFFFFFFFFULL;\r
+    SmiCommand = 0xFFFFFFFFFFFFFFFFULL;\r
     for (Index = 0; Index < gSmst->NumberOfCpus; Index++) {\r
-      Status = SmmReadSaveState(&mSmmCpu, sizeof(IoInfo), EFI_SMM_SAVE_STATE_REGISTER_IO, Index, &IoInfo);\r
+      Status = SmmReadSaveState (&mSmmCpu, sizeof (IoInfo), EFI_SMM_SAVE_STATE_REGISTER_IO, Index, &IoInfo);\r
       if (EFI_ERROR (Status)) {\r
         continue;\r
       }\r
+\r
       if (IoInfo.IoPort == mSmiCommandPort) {\r
         //\r
         // A software SMI triggered by SMI command port has been found, get SmiCommand from SMI command port.\r
         //\r
         SoftSmiValue = IoRead8 (mSmiCommandPort);\r
-        SmiCommand = (UINT64)SoftSmiValue;\r
+        SmiCommand   = (UINT64)SoftSmiValue;\r
         break;\r
       }\r
     }\r
@@ -1454,24 +1500,27 @@ SmmProfilePFHandler (
     //\r
     // Check if there is already a same entry in profile data.\r
     //\r
-    for (Index = 0; Index < (UINTN) mSmmProfileBase->CurDataEntries; Index++) {\r
+    for (Index = 0; Index < (UINTN)mSmmProfileBase->CurDataEntries; Index++) {\r
       if ((SmmProfileEntry[Index].ErrorCode   == (UINT64)ErrorCode) &&\r
           (SmmProfileEntry[Index].Address     == PFAddress) &&\r
           (SmmProfileEntry[Index].CpuNum      == (UINT64)CpuIndex) &&\r
           (SmmProfileEntry[Index].Instruction == InstructionAddress) &&\r
-          (SmmProfileEntry[Index].SmiCmd      == SmiCommand)) {\r
+          (SmmProfileEntry[Index].SmiCmd      == SmiCommand))\r
+      {\r
         //\r
         // Same record exist, need not save again.\r
         //\r
         break;\r
       }\r
     }\r
+\r
     if (Index == mSmmProfileBase->CurDataEntries) {\r
-      CurrentEntryNumber = (UINTN) mSmmProfileBase->CurDataEntries;\r
-      MaxEntryNumber     = (UINTN) mSmmProfileBase->MaxDataEntries;\r
+      CurrentEntryNumber = (UINTN)mSmmProfileBase->CurDataEntries;\r
+      MaxEntryNumber     = (UINTN)mSmmProfileBase->MaxDataEntries;\r
       if (FeaturePcdGet (PcdCpuSmmProfileRingBuffer)) {\r
         CurrentEntryNumber = CurrentEntryNumber % MaxEntryNumber;\r
       }\r
+\r
       if (CurrentEntryNumber < MaxEntryNumber) {\r
         //\r
         // Log the new entry\r
@@ -1491,6 +1540,7 @@ SmmProfilePFHandler (
       }\r
     }\r
   }\r
+\r
   //\r
   // Flush TLB\r
   //\r
@@ -1511,7 +1561,7 @@ InitIdtr (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                        Status;\r
+  EFI_STATUS  Status;\r
 \r
   Status = SmmRegisterExceptionHandler (&mSmmCpuService, EXCEPT_IA32_DEBUG, DebugExceptionHandler);\r
   ASSERT_EFI_ERROR (Status);\r
index 484d81eb00e87794795338aa49448164bebbaadc..1a82ac05ce92192940ad5b00a53aea0c5aa8bfb2 100644 (file)
@@ -23,7 +23,7 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 **/\r
 VOID\r
 ActivateSmmProfile (\r
-  IN UINTN CpuIndex\r
+  IN UINTN  CpuIndex\r
   );\r
 \r
 /**\r
@@ -55,8 +55,8 @@ SmmProfileRecordSmiNum (
 **/\r
 VOID\r
 SmmProfilePFHandler (\r
-  UINTN Rip,\r
-  UINTN ErrorCode\r
+  UINTN  Rip,\r
+  UINTN  ErrorCode\r
   );\r
 \r
 /**\r
@@ -80,7 +80,6 @@ PageFaultIdtHandlerSmmProfile (
   VOID\r
   );\r
 \r
-\r
 /**\r
   Check if feature is supported by a processor.\r
 \r
@@ -116,20 +115,20 @@ GetCpuIndex (
 **/\r
 VOID\r
 GuardPagePFHandler (\r
-  UINTN ErrorCode\r
+  UINTN  ErrorCode\r
   );\r
 \r
 //\r
 // The flag indicates if execute-disable is supported by processor.\r
 //\r
-extern BOOLEAN    mXdSupported;\r
+extern BOOLEAN  mXdSupported;\r
 //\r
 // The flag indicates if execute-disable is enabled on processor.\r
 //\r
-extern BOOLEAN    mXdEnabled;\r
+extern BOOLEAN  mXdEnabled;\r
 //\r
 // The flag indicates if #DB will be setup in #PF handler.\r
 //\r
-extern BOOLEAN    mSetupDebugTrap;\r
+extern BOOLEAN  mSetupDebugTrap;\r
 \r
 #endif // _SMM_PROFILE_H_\r
index 993360a8a8c150739fe21b06ea4940045936639d..0e60509e20a8438fd74900630b0cdfb7da4d7d19 100644 (file)
@@ -22,41 +22,41 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 //\r
 // Configure the SMM_PROFILE DTS region size\r
 //\r
-#define SMM_PROFILE_DTS_SIZE       (4 * 1024 * 1024) // 4M\r
+#define SMM_PROFILE_DTS_SIZE  (4 * 1024 * 1024)      // 4M\r
 \r
-#define MAX_PF_PAGE_COUNT           0x2\r
+#define MAX_PF_PAGE_COUNT  0x2\r
 \r
-#define PEBS_RECORD_NUMBER          0x2\r
+#define PEBS_RECORD_NUMBER  0x2\r
 \r
-#define MAX_PF_ENTRY_COUNT          10\r
+#define MAX_PF_ENTRY_COUNT  10\r
 \r
 //\r
 // This MACRO just enable unit test for the profile\r
 // Please disable it.\r
 //\r
 \r
-#define IA32_PF_EC_ID               (1u << 4)\r
+#define IA32_PF_EC_ID  (1u << 4)\r
 \r
-#define SMM_PROFILE_NAME            L"SmmProfileData"\r
+#define SMM_PROFILE_NAME  L"SmmProfileData"\r
 \r
 //\r
 // CPU generic definition\r
 //\r
-#define   CPUID1_EDX_XD_SUPPORT      0x100000\r
-#define   MSR_EFER                   0xc0000080\r
-#define   MSR_EFER_XD                0x800\r
+#define   CPUID1_EDX_XD_SUPPORT  0x100000\r
+#define   MSR_EFER               0xc0000080\r
+#define   MSR_EFER_XD            0x800\r
 \r
-#define   CPUID1_EDX_BTS_AVAILABLE   0x200000\r
+#define   CPUID1_EDX_BTS_AVAILABLE  0x200000\r
 \r
-#define   DR6_SINGLE_STEP            0x4000\r
-#define   RFLAG_TF                   0x100\r
+#define   DR6_SINGLE_STEP  0x4000\r
+#define   RFLAG_TF         0x100\r
 \r
-#define MSR_DEBUG_CTL                0x1D9\r
-#define   MSR_DEBUG_CTL_LBR          0x1\r
-#define   MSR_DEBUG_CTL_TR           0x40\r
-#define   MSR_DEBUG_CTL_BTS          0x80\r
-#define   MSR_DEBUG_CTL_BTINT        0x100\r
-#define MSR_DS_AREA                  0x600\r
+#define MSR_DEBUG_CTL          0x1D9\r
+#define   MSR_DEBUG_CTL_LBR    0x1\r
+#define   MSR_DEBUG_CTL_TR     0x40\r
+#define   MSR_DEBUG_CTL_BTS    0x80\r
+#define   MSR_DEBUG_CTL_BTINT  0x100\r
+#define MSR_DS_AREA            0x600\r
 \r
 #define HEAP_GUARD_NONSTOP_MODE      \\r
         ((PcdGet8 (PcdHeapGuardPropertyMask) & (BIT6|BIT3|BIT2)) > BIT6)\r
@@ -65,45 +65,45 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
         ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & (BIT6|BIT1)) > BIT6)\r
 \r
 typedef struct {\r
-  EFI_PHYSICAL_ADDRESS   Base;\r
-  EFI_PHYSICAL_ADDRESS   Top;\r
+  EFI_PHYSICAL_ADDRESS    Base;\r
+  EFI_PHYSICAL_ADDRESS    Top;\r
 } MEMORY_RANGE;\r
 \r
 typedef struct {\r
-  MEMORY_RANGE   Range;\r
-  BOOLEAN        Present;\r
-  BOOLEAN        Nx;\r
+  MEMORY_RANGE    Range;\r
+  BOOLEAN         Present;\r
+  BOOLEAN         Nx;\r
 } MEMORY_PROTECTION_RANGE;\r
 \r
 typedef struct {\r
-  UINT64  HeaderSize;\r
-  UINT64  MaxDataEntries;\r
-  UINT64  MaxDataSize;\r
-  UINT64  CurDataEntries;\r
-  UINT64  CurDataSize;\r
-  UINT64  TsegStart;\r
-  UINT64  TsegSize;\r
-  UINT64  NumSmis;\r
-  UINT64  NumCpus;\r
+  UINT64    HeaderSize;\r
+  UINT64    MaxDataEntries;\r
+  UINT64    MaxDataSize;\r
+  UINT64    CurDataEntries;\r
+  UINT64    CurDataSize;\r
+  UINT64    TsegStart;\r
+  UINT64    TsegSize;\r
+  UINT64    NumSmis;\r
+  UINT64    NumCpus;\r
 } SMM_PROFILE_HEADER;\r
 \r
 typedef struct {\r
-  UINT64  SmiNum;\r
-  UINT64  CpuNum;\r
-  UINT64  ApicId;\r
-  UINT64  ErrorCode;\r
-  UINT64  Instruction;\r
-  UINT64  Address;\r
-  UINT64  SmiCmd;\r
+  UINT64    SmiNum;\r
+  UINT64    CpuNum;\r
+  UINT64    ApicId;\r
+  UINT64    ErrorCode;\r
+  UINT64    Instruction;\r
+  UINT64    Address;\r
+  UINT64    SmiCmd;\r
 } SMM_PROFILE_ENTRY;\r
 \r
-extern SMM_S3_RESUME_STATE       *mSmmS3ResumeState;\r
-extern UINTN                     gSmiExceptionHandlers[];\r
-extern BOOLEAN                   mXdSupported;\r
-X86_ASSEMBLY_PATCH_LABEL         gPatchXdSupported;\r
-X86_ASSEMBLY_PATCH_LABEL         gPatchMsrIa32MiscEnableSupported;\r
-extern UINTN                     *mPFEntryCount;\r
-extern UINT64                    (*mLastPFEntryValue)[MAX_PF_ENTRY_COUNT];\r
+extern SMM_S3_RESUME_STATE  *mSmmS3ResumeState;\r
+extern UINTN                gSmiExceptionHandlers[];\r
+extern BOOLEAN              mXdSupported;\r
+X86_ASSEMBLY_PATCH_LABEL    gPatchXdSupported;\r
+X86_ASSEMBLY_PATCH_LABEL    gPatchMsrIa32MiscEnableSupported;\r
+extern UINTN                *mPFEntryCount;\r
+extern UINT64 (*mLastPFEntryValue)[MAX_PF_ENTRY_COUNT];\r
 extern UINT64                    *(*mLastPFEntryPointer)[MAX_PF_ENTRY_COUNT];\r
 \r
 //\r
@@ -127,7 +127,7 @@ InitIdtr (
 **/\r
 BOOLEAN\r
 IsAddressSplit (\r
-  IN EFI_PHYSICAL_ADDRESS   Address\r
+  IN EFI_PHYSICAL_ADDRESS  Address\r
   );\r
 \r
 /**\r
@@ -139,8 +139,8 @@ IsAddressSplit (
 **/\r
 BOOLEAN\r
 IsAddressValid (\r
-  IN EFI_PHYSICAL_ADDRESS   Address,\r
-  IN BOOLEAN                *Nx\r
+  IN EFI_PHYSICAL_ADDRESS  Address,\r
+  IN BOOLEAN               *Nx\r
   );\r
 \r
 /**\r
@@ -161,7 +161,7 @@ SmiDefaultPFHandler (
 **/\r
 VOID\r
 ClearTrapFlag (\r
-  IN OUT EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN OUT EFI_SYSTEM_CONTEXT  SystemContext\r
   );\r
 \r
 #endif // _SMM_PROFILE_H_\r
index 518978c1d9680e0b0a3b09014ff480f87dfe460e..c8ddc6083df6f1b3673695959b3a390812651be7 100644 (file)
@@ -18,53 +18,53 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #include "PiSmmCpuDxeSmm.h"\r
 \r
 typedef struct {\r
-  UINT64                            Signature;              // Offset 0x00\r
-  UINT16                            Reserved1;              // Offset 0x08\r
-  UINT16                            Reserved2;              // Offset 0x0A\r
-  UINT16                            Reserved3;              // Offset 0x0C\r
-  UINT16                            SmmCs;                  // Offset 0x0E\r
-  UINT16                            SmmDs;                  // Offset 0x10\r
-  UINT16                            SmmSs;                  // Offset 0x12\r
-  UINT16                            SmmOtherSegment;        // Offset 0x14\r
-  UINT16                            Reserved4;              // Offset 0x16\r
-  UINT64                            Reserved5;              // Offset 0x18\r
-  UINT64                            Reserved6;              // Offset 0x20\r
-  UINT64                            Reserved7;              // Offset 0x28\r
-  UINT64                            SmmGdtPtr;              // Offset 0x30\r
-  UINT32                            SmmGdtSize;             // Offset 0x38\r
-  UINT32                            Reserved8;              // Offset 0x3C\r
-  UINT64                            Reserved9;              // Offset 0x40\r
-  UINT64                            Reserved10;             // Offset 0x48\r
-  UINT16                            Reserved11;             // Offset 0x50\r
-  UINT16                            Reserved12;             // Offset 0x52\r
-  UINT32                            Reserved13;             // Offset 0x54\r
-  UINT64                            Reserved14;             // Offset 0x58\r
+  UINT64    Signature;                                      // Offset 0x00\r
+  UINT16    Reserved1;                                      // Offset 0x08\r
+  UINT16    Reserved2;                                      // Offset 0x0A\r
+  UINT16    Reserved3;                                      // Offset 0x0C\r
+  UINT16    SmmCs;                                          // Offset 0x0E\r
+  UINT16    SmmDs;                                          // Offset 0x10\r
+  UINT16    SmmSs;                                          // Offset 0x12\r
+  UINT16    SmmOtherSegment;                                // Offset 0x14\r
+  UINT16    Reserved4;                                      // Offset 0x16\r
+  UINT64    Reserved5;                                      // Offset 0x18\r
+  UINT64    Reserved6;                                      // Offset 0x20\r
+  UINT64    Reserved7;                                      // Offset 0x28\r
+  UINT64    SmmGdtPtr;                                      // Offset 0x30\r
+  UINT32    SmmGdtSize;                                     // Offset 0x38\r
+  UINT32    Reserved8;                                      // Offset 0x3C\r
+  UINT64    Reserved9;                                      // Offset 0x40\r
+  UINT64    Reserved10;                                     // Offset 0x48\r
+  UINT16    Reserved11;                                     // Offset 0x50\r
+  UINT16    Reserved12;                                     // Offset 0x52\r
+  UINT32    Reserved13;                                     // Offset 0x54\r
+  UINT64    Reserved14;                                     // Offset 0x58\r
 } PROCESSOR_SMM_DESCRIPTOR;\r
 \r
-extern CONST PROCESSOR_SMM_DESCRIPTOR      gcPsd;\r
+extern CONST PROCESSOR_SMM_DESCRIPTOR  gcPsd;\r
 \r
 //\r
 // EFER register LMA bit\r
 //\r
-#define LMA BIT10\r
+#define LMA  BIT10\r
 \r
 ///\r
 /// Macro used to simplify the lookup table entries of type CPU_SMM_SAVE_STATE_LOOKUP_ENTRY\r
 ///\r
-#define SMM_CPU_OFFSET(Field) OFFSET_OF (SMRAM_SAVE_STATE_MAP, Field)\r
+#define SMM_CPU_OFFSET(Field)  OFFSET_OF (SMRAM_SAVE_STATE_MAP, Field)\r
 \r
 ///\r
 /// Macro used to simplify the lookup table entries of type CPU_SMM_SAVE_STATE_REGISTER_RANGE\r
 ///\r
-#define SMM_REGISTER_RANGE(Start, End) { Start, End, End - Start + 1 }\r
+#define SMM_REGISTER_RANGE(Start, End)  { Start, End, End - Start + 1 }\r
 \r
 ///\r
 /// Structure used to describe a range of registers\r
 ///\r
 typedef struct {\r
-  EFI_SMM_SAVE_STATE_REGISTER  Start;\r
-  EFI_SMM_SAVE_STATE_REGISTER  End;\r
-  UINTN                        Length;\r
+  EFI_SMM_SAVE_STATE_REGISTER    Start;\r
+  EFI_SMM_SAVE_STATE_REGISTER    End;\r
+  UINTN                          Length;\r
 } CPU_SMM_SAVE_STATE_REGISTER_RANGE;\r
 \r
 ///\r
@@ -72,36 +72,36 @@ typedef struct {
 /// associated with each supported EFI_SMM_SAVE_STATE_REGISTER value\r
 ///\r
 \r
-#define SMM_SAVE_STATE_REGISTER_SMMREVID_INDEX        1\r
-#define SMM_SAVE_STATE_REGISTER_IOMISC_INDEX          2\r
-#define SMM_SAVE_STATE_REGISTER_IOMEMADDR_INDEX       3\r
-#define SMM_SAVE_STATE_REGISTER_MAX_INDEX             4\r
+#define SMM_SAVE_STATE_REGISTER_SMMREVID_INDEX   1\r
+#define SMM_SAVE_STATE_REGISTER_IOMISC_INDEX     2\r
+#define SMM_SAVE_STATE_REGISTER_IOMEMADDR_INDEX  3\r
+#define SMM_SAVE_STATE_REGISTER_MAX_INDEX        4\r
 \r
 typedef struct {\r
-  UINT8   Width32;\r
-  UINT8   Width64;\r
-  UINT16  Offset32;\r
-  UINT16  Offset64Lo;\r
-  UINT16  Offset64Hi;\r
-  BOOLEAN Writeable;\r
+  UINT8      Width32;\r
+  UINT8      Width64;\r
+  UINT16     Offset32;\r
+  UINT16     Offset64Lo;\r
+  UINT16     Offset64Hi;\r
+  BOOLEAN    Writeable;\r
 } CPU_SMM_SAVE_STATE_LOOKUP_ENTRY;\r
 \r
 ///\r
 /// Structure used to build a lookup table for the IOMisc width information\r
 ///\r
 typedef struct {\r
-  UINT8                        Width;\r
-  EFI_SMM_SAVE_STATE_IO_WIDTH  IoWidth;\r
+  UINT8                          Width;\r
+  EFI_SMM_SAVE_STATE_IO_WIDTH    IoWidth;\r
 } CPU_SMM_SAVE_STATE_IO_WIDTH;\r
 \r
 ///\r
 /// Variables from SMI Handler\r
 ///\r
-X86_ASSEMBLY_PATCH_LABEL gPatchSmbase;\r
-X86_ASSEMBLY_PATCH_LABEL gPatchSmiStack;\r
-X86_ASSEMBLY_PATCH_LABEL gPatchSmiCr3;\r
-extern volatile UINT8    gcSmiHandlerTemplate[];\r
-extern CONST UINT16      gcSmiHandlerSize;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatchSmbase;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatchSmiStack;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatchSmiCr3;\r
+extern volatile UINT8     gcSmiHandlerTemplate[];\r
+extern CONST UINT16       gcSmiHandlerSize;\r
 \r
 //\r
 // Variables used by SMI Handler\r
@@ -112,76 +112,76 @@ IA32_DESCRIPTOR  gSmiHandlerIdtr;
 /// Table used by GetRegisterIndex() to convert an EFI_SMM_SAVE_STATE_REGISTER\r
 /// value to an index into a table of type CPU_SMM_SAVE_STATE_LOOKUP_ENTRY\r
 ///\r
-CONST CPU_SMM_SAVE_STATE_REGISTER_RANGE mSmmCpuRegisterRanges[] = {\r
+CONST CPU_SMM_SAVE_STATE_REGISTER_RANGE  mSmmCpuRegisterRanges[] = {\r
   SMM_REGISTER_RANGE (EFI_SMM_SAVE_STATE_REGISTER_GDTBASE, EFI_SMM_SAVE_STATE_REGISTER_LDTINFO),\r
   SMM_REGISTER_RANGE (EFI_SMM_SAVE_STATE_REGISTER_ES,      EFI_SMM_SAVE_STATE_REGISTER_RIP),\r
   SMM_REGISTER_RANGE (EFI_SMM_SAVE_STATE_REGISTER_RFLAGS,  EFI_SMM_SAVE_STATE_REGISTER_CR4),\r
-  { (EFI_SMM_SAVE_STATE_REGISTER)0, (EFI_SMM_SAVE_STATE_REGISTER)0, 0 }\r
+  { (EFI_SMM_SAVE_STATE_REGISTER)0,                        (EFI_SMM_SAVE_STATE_REGISTER)0,      0}\r
 };\r
 \r
 ///\r
 /// Lookup table used to retrieve the widths and offsets associated with each\r
 /// supported EFI_SMM_SAVE_STATE_REGISTER value\r
 ///\r
-CONST CPU_SMM_SAVE_STATE_LOOKUP_ENTRY mSmmCpuWidthOffset[] = {\r
-  {0, 0, 0, 0, 0, FALSE},                                                                                                     //  Reserved\r
+CONST CPU_SMM_SAVE_STATE_LOOKUP_ENTRY  mSmmCpuWidthOffset[] = {\r
+  { 0, 0, 0,                              0,                                   0,                                   FALSE },  //  Reserved\r
 \r
   //\r
   // Internally defined CPU Save State Registers. Not defined in PI SMM CPU Protocol.\r
   //\r
-  {4, 4, SMM_CPU_OFFSET (x86.SMMRevId)  , SMM_CPU_OFFSET (x64.SMMRevId)  , 0                                 , FALSE}, // SMM_SAVE_STATE_REGISTER_SMMREVID_INDEX  = 1\r
-  {4, 4, SMM_CPU_OFFSET (x86.IOMisc)    , SMM_CPU_OFFSET (x64.IOMisc)    , 0                                 , FALSE}, // SMM_SAVE_STATE_REGISTER_IOMISC_INDEX    = 2\r
-  {4, 8, SMM_CPU_OFFSET (x86.IOMemAddr) , SMM_CPU_OFFSET (x64.IOMemAddr) , SMM_CPU_OFFSET (x64.IOMemAddr) + 4, FALSE}, // SMM_SAVE_STATE_REGISTER_IOMEMADDR_INDEX = 3\r
+  { 4, 4, SMM_CPU_OFFSET (x86.SMMRevId),  SMM_CPU_OFFSET (x64.SMMRevId),       0,                                   FALSE }, // SMM_SAVE_STATE_REGISTER_SMMREVID_INDEX  = 1\r
+  { 4, 4, SMM_CPU_OFFSET (x86.IOMisc),    SMM_CPU_OFFSET (x64.IOMisc),         0,                                   FALSE }, // SMM_SAVE_STATE_REGISTER_IOMISC_INDEX    = 2\r
+  { 4, 8, SMM_CPU_OFFSET (x86.IOMemAddr), SMM_CPU_OFFSET (x64.IOMemAddr),      SMM_CPU_OFFSET (x64.IOMemAddr) + 4,  FALSE }, // SMM_SAVE_STATE_REGISTER_IOMEMADDR_INDEX = 3\r
 \r
   //\r
   // CPU Save State registers defined in PI SMM CPU Protocol.\r
   //\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64.GdtBaseLoDword) , SMM_CPU_OFFSET (x64.GdtBaseHiDword), FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_GDTBASE  = 4\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64.IdtBaseLoDword) , SMM_CPU_OFFSET (x64.IdtBaseHiDword), FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_IDTBASE  = 5\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64.LdtBaseLoDword) , SMM_CPU_OFFSET (x64.LdtBaseHiDword), FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_LDTBASE  = 6\r
-  {0, 0, 0                            , 0                                   , 0                                  , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_GDTLIMIT = 7\r
-  {0, 0, 0                            , 0                                   , 0                                  , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_IDTLIMIT = 8\r
-  {0, 0, 0                            , 0                                   , 0                                  , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_LDTLIMIT = 9\r
-  {0, 0, 0                            , 0                                   , 0                                  , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_LDTINFO  = 10\r
-\r
-  {4, 4, SMM_CPU_OFFSET (x86._ES)     , SMM_CPU_OFFSET (x64._ES)     , 0                               , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_ES       = 20\r
-  {4, 4, SMM_CPU_OFFSET (x86._CS)     , SMM_CPU_OFFSET (x64._CS)     , 0                               , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_CS       = 21\r
-  {4, 4, SMM_CPU_OFFSET (x86._SS)     , SMM_CPU_OFFSET (x64._SS)     , 0                               , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_SS       = 22\r
-  {4, 4, SMM_CPU_OFFSET (x86._DS)     , SMM_CPU_OFFSET (x64._DS)     , 0                               , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_DS       = 23\r
-  {4, 4, SMM_CPU_OFFSET (x86._FS)     , SMM_CPU_OFFSET (x64._FS)     , 0                               , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_FS       = 24\r
-  {4, 4, SMM_CPU_OFFSET (x86._GS)     , SMM_CPU_OFFSET (x64._GS)     , 0                               , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_GS       = 25\r
-  {0, 4, 0                            , SMM_CPU_OFFSET (x64._LDTR)   , 0                               , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_LDTR_SEL = 26\r
-  {4, 4, SMM_CPU_OFFSET (x86._TR)     , SMM_CPU_OFFSET (x64._TR)     , 0                               , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_TR_SEL   = 27\r
-  {4, 8, SMM_CPU_OFFSET (x86._DR7)    , SMM_CPU_OFFSET (x64._DR7)    , SMM_CPU_OFFSET (x64._DR7)    + 4, FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_DR7      = 28\r
-  {4, 8, SMM_CPU_OFFSET (x86._DR6)    , SMM_CPU_OFFSET (x64._DR6)    , SMM_CPU_OFFSET (x64._DR6)    + 4, FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_DR6      = 29\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64._R8)     , SMM_CPU_OFFSET (x64._R8)     + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_R8       = 30\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64._R9)     , SMM_CPU_OFFSET (x64._R9)     + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_R9       = 31\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64._R10)    , SMM_CPU_OFFSET (x64._R10)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_R10      = 32\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64._R11)    , SMM_CPU_OFFSET (x64._R11)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_R11      = 33\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64._R12)    , SMM_CPU_OFFSET (x64._R12)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_R12      = 34\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64._R13)    , SMM_CPU_OFFSET (x64._R13)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_R13      = 35\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64._R14)    , SMM_CPU_OFFSET (x64._R14)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_R14      = 36\r
-  {0, 8, 0                            , SMM_CPU_OFFSET (x64._R15)    , SMM_CPU_OFFSET (x64._R15)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_R15      = 37\r
-  {4, 8, SMM_CPU_OFFSET (x86._EAX)    , SMM_CPU_OFFSET (x64._RAX)    , SMM_CPU_OFFSET (x64._RAX)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RAX      = 38\r
-  {4, 8, SMM_CPU_OFFSET (x86._EBX)    , SMM_CPU_OFFSET (x64._RBX)    , SMM_CPU_OFFSET (x64._RBX)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RBX      = 39\r
-  {4, 8, SMM_CPU_OFFSET (x86._ECX)    , SMM_CPU_OFFSET (x64._RCX)    , SMM_CPU_OFFSET (x64._RCX)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RCX      = 40\r
-  {4, 8, SMM_CPU_OFFSET (x86._EDX)    , SMM_CPU_OFFSET (x64._RDX)    , SMM_CPU_OFFSET (x64._RDX)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RDX      = 41\r
-  {4, 8, SMM_CPU_OFFSET (x86._ESP)    , SMM_CPU_OFFSET (x64._RSP)    , SMM_CPU_OFFSET (x64._RSP)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RSP      = 42\r
-  {4, 8, SMM_CPU_OFFSET (x86._EBP)    , SMM_CPU_OFFSET (x64._RBP)    , SMM_CPU_OFFSET (x64._RBP)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RBP      = 43\r
-  {4, 8, SMM_CPU_OFFSET (x86._ESI)    , SMM_CPU_OFFSET (x64._RSI)    , SMM_CPU_OFFSET (x64._RSI)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RSI      = 44\r
-  {4, 8, SMM_CPU_OFFSET (x86._EDI)    , SMM_CPU_OFFSET (x64._RDI)    , SMM_CPU_OFFSET (x64._RDI)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RDI      = 45\r
-  {4, 8, SMM_CPU_OFFSET (x86._EIP)    , SMM_CPU_OFFSET (x64._RIP)    , SMM_CPU_OFFSET (x64._RIP)    + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RIP      = 46\r
-\r
-  {4, 8, SMM_CPU_OFFSET (x86._EFLAGS) , SMM_CPU_OFFSET (x64._RFLAGS) , SMM_CPU_OFFSET (x64._RFLAGS) + 4, TRUE },  //  EFI_SMM_SAVE_STATE_REGISTER_RFLAGS   = 51\r
-  {4, 8, SMM_CPU_OFFSET (x86._CR0)    , SMM_CPU_OFFSET (x64._CR0)    , SMM_CPU_OFFSET (x64._CR0)    + 4, FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_CR0      = 52\r
-  {4, 8, SMM_CPU_OFFSET (x86._CR3)    , SMM_CPU_OFFSET (x64._CR3)    , SMM_CPU_OFFSET (x64._CR3)    + 4, FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_CR3      = 53\r
-  {0, 4, 0                            , SMM_CPU_OFFSET (x64._CR4)    , 0                               , FALSE},  //  EFI_SMM_SAVE_STATE_REGISTER_CR4      = 54\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64.GdtBaseLoDword), SMM_CPU_OFFSET (x64.GdtBaseHiDword), FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_GDTBASE  = 4\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64.IdtBaseLoDword), SMM_CPU_OFFSET (x64.IdtBaseHiDword), FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_IDTBASE  = 5\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64.LdtBaseLoDword), SMM_CPU_OFFSET (x64.LdtBaseHiDword), FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_LDTBASE  = 6\r
+  { 0, 0, 0,                              0,                                   0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_GDTLIMIT = 7\r
+  { 0, 0, 0,                              0,                                   0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_IDTLIMIT = 8\r
+  { 0, 0, 0,                              0,                                   0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_LDTLIMIT = 9\r
+  { 0, 0, 0,                              0,                                   0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_LDTINFO  = 10\r
+\r
+  { 4, 4, SMM_CPU_OFFSET (x86._ES),       SMM_CPU_OFFSET (x64._ES),            0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_ES       = 20\r
+  { 4, 4, SMM_CPU_OFFSET (x86._CS),       SMM_CPU_OFFSET (x64._CS),            0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_CS       = 21\r
+  { 4, 4, SMM_CPU_OFFSET (x86._SS),       SMM_CPU_OFFSET (x64._SS),            0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_SS       = 22\r
+  { 4, 4, SMM_CPU_OFFSET (x86._DS),       SMM_CPU_OFFSET (x64._DS),            0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_DS       = 23\r
+  { 4, 4, SMM_CPU_OFFSET (x86._FS),       SMM_CPU_OFFSET (x64._FS),            0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_FS       = 24\r
+  { 4, 4, SMM_CPU_OFFSET (x86._GS),       SMM_CPU_OFFSET (x64._GS),            0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_GS       = 25\r
+  { 0, 4, 0,                              SMM_CPU_OFFSET (x64._LDTR),          0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_LDTR_SEL = 26\r
+  { 4, 4, SMM_CPU_OFFSET (x86._TR),       SMM_CPU_OFFSET (x64._TR),            0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_TR_SEL   = 27\r
+  { 4, 8, SMM_CPU_OFFSET (x86._DR7),      SMM_CPU_OFFSET (x64._DR7),           SMM_CPU_OFFSET (x64._DR7)    + 4,    FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_DR7      = 28\r
+  { 4, 8, SMM_CPU_OFFSET (x86._DR6),      SMM_CPU_OFFSET (x64._DR6),           SMM_CPU_OFFSET (x64._DR6)    + 4,    FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_DR6      = 29\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64._R8),            SMM_CPU_OFFSET (x64._R8)     + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_R8       = 30\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64._R9),            SMM_CPU_OFFSET (x64._R9)     + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_R9       = 31\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64._R10),           SMM_CPU_OFFSET (x64._R10)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_R10      = 32\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64._R11),           SMM_CPU_OFFSET (x64._R11)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_R11      = 33\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64._R12),           SMM_CPU_OFFSET (x64._R12)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_R12      = 34\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64._R13),           SMM_CPU_OFFSET (x64._R13)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_R13      = 35\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64._R14),           SMM_CPU_OFFSET (x64._R14)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_R14      = 36\r
+  { 0, 8, 0,                              SMM_CPU_OFFSET (x64._R15),           SMM_CPU_OFFSET (x64._R15)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_R15      = 37\r
+  { 4, 8, SMM_CPU_OFFSET (x86._EAX),      SMM_CPU_OFFSET (x64._RAX),           SMM_CPU_OFFSET (x64._RAX)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RAX      = 38\r
+  { 4, 8, SMM_CPU_OFFSET (x86._EBX),      SMM_CPU_OFFSET (x64._RBX),           SMM_CPU_OFFSET (x64._RBX)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RBX      = 39\r
+  { 4, 8, SMM_CPU_OFFSET (x86._ECX),      SMM_CPU_OFFSET (x64._RCX),           SMM_CPU_OFFSET (x64._RCX)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RCX      = 40\r
+  { 4, 8, SMM_CPU_OFFSET (x86._EDX),      SMM_CPU_OFFSET (x64._RDX),           SMM_CPU_OFFSET (x64._RDX)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RDX      = 41\r
+  { 4, 8, SMM_CPU_OFFSET (x86._ESP),      SMM_CPU_OFFSET (x64._RSP),           SMM_CPU_OFFSET (x64._RSP)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RSP      = 42\r
+  { 4, 8, SMM_CPU_OFFSET (x86._EBP),      SMM_CPU_OFFSET (x64._RBP),           SMM_CPU_OFFSET (x64._RBP)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RBP      = 43\r
+  { 4, 8, SMM_CPU_OFFSET (x86._ESI),      SMM_CPU_OFFSET (x64._RSI),           SMM_CPU_OFFSET (x64._RSI)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RSI      = 44\r
+  { 4, 8, SMM_CPU_OFFSET (x86._EDI),      SMM_CPU_OFFSET (x64._RDI),           SMM_CPU_OFFSET (x64._RDI)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RDI      = 45\r
+  { 4, 8, SMM_CPU_OFFSET (x86._EIP),      SMM_CPU_OFFSET (x64._RIP),           SMM_CPU_OFFSET (x64._RIP)    + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RIP      = 46\r
+\r
+  { 4, 8, SMM_CPU_OFFSET (x86._EFLAGS),   SMM_CPU_OFFSET (x64._RFLAGS),        SMM_CPU_OFFSET (x64._RFLAGS) + 4,    TRUE  }, //  EFI_SMM_SAVE_STATE_REGISTER_RFLAGS   = 51\r
+  { 4, 8, SMM_CPU_OFFSET (x86._CR0),      SMM_CPU_OFFSET (x64._CR0),           SMM_CPU_OFFSET (x64._CR0)    + 4,    FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_CR0      = 52\r
+  { 4, 8, SMM_CPU_OFFSET (x86._CR3),      SMM_CPU_OFFSET (x64._CR3),           SMM_CPU_OFFSET (x64._CR3)    + 4,    FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_CR3      = 53\r
+  { 0, 4, 0,                              SMM_CPU_OFFSET (x64._CR4),           0,                                   FALSE }, //  EFI_SMM_SAVE_STATE_REGISTER_CR4      = 54\r
 };\r
 \r
 ///\r
 /// Lookup table for the IOMisc width information\r
 ///\r
-CONST CPU_SMM_SAVE_STATE_IO_WIDTH mSmmCpuIoWidth[] = {\r
+CONST CPU_SMM_SAVE_STATE_IO_WIDTH  mSmmCpuIoWidth[] = {\r
   { 0, EFI_SMM_SAVE_STATE_IO_WIDTH_UINT8  },  // Undefined           = 0\r
   { 1, EFI_SMM_SAVE_STATE_IO_WIDTH_UINT8  },  // SMM_IO_LENGTH_BYTE  = 1\r
   { 2, EFI_SMM_SAVE_STATE_IO_WIDTH_UINT16 },  // SMM_IO_LENGTH_WORD  = 2\r
@@ -195,7 +195,7 @@ CONST CPU_SMM_SAVE_STATE_IO_WIDTH mSmmCpuIoWidth[] = {
 ///\r
 /// Lookup table for the IOMisc type information\r
 ///\r
-CONST EFI_SMM_SAVE_STATE_IO_TYPE mSmmCpuIoType[] = {\r
+CONST EFI_SMM_SAVE_STATE_IO_TYPE  mSmmCpuIoType[] = {\r
   EFI_SMM_SAVE_STATE_IO_TYPE_OUTPUT,     // SMM_IO_TYPE_OUT_DX        = 0\r
   EFI_SMM_SAVE_STATE_IO_TYPE_INPUT,      // SMM_IO_TYPE_IN_DX         = 1\r
   EFI_SMM_SAVE_STATE_IO_TYPE_STRING,     // SMM_IO_TYPE_OUTS          = 2\r
@@ -237,11 +237,13 @@ GetRegisterIndex (
   UINTN  Offset;\r
 \r
   for (Index = 0, Offset = SMM_SAVE_STATE_REGISTER_MAX_INDEX; mSmmCpuRegisterRanges[Index].Length != 0; Index++) {\r
-    if (Register >= mSmmCpuRegisterRanges[Index].Start && Register <= mSmmCpuRegisterRanges[Index].End) {\r
+    if ((Register >= mSmmCpuRegisterRanges[Index].Start) && (Register <= mSmmCpuRegisterRanges[Index].End)) {\r
       return Register - mSmmCpuRegisterRanges[Index].Start + Offset;\r
     }\r
+\r
     Offset += mSmmCpuRegisterRanges[Index].Length;\r
   }\r
+\r
   return 0;\r
 }\r
 \r
@@ -265,10 +267,10 @@ GetRegisterIndex (
 **/\r
 EFI_STATUS\r
 ReadSaveStateRegisterByIndex (\r
-  IN UINTN   CpuIndex,\r
-  IN UINTN   RegisterIndex,\r
-  IN UINTN   Width,\r
-  OUT VOID   *Buffer\r
+  IN UINTN  CpuIndex,\r
+  IN UINTN  RegisterIndex,\r
+  IN UINTN  Width,\r
+  OUT VOID  *Buffer\r
   )\r
 {\r
   SMRAM_SAVE_STATE_MAP  *CpuSaveState;\r
@@ -297,8 +299,8 @@ ReadSaveStateRegisterByIndex (
     //\r
     // Write return buffer\r
     //\r
-    ASSERT(CpuSaveState != NULL);\r
-    CopyMem(Buffer, (UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset32, Width);\r
+    ASSERT (CpuSaveState != NULL);\r
+    CopyMem (Buffer, (UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset32, Width);\r
   } else {\r
     //\r
     // If 64-bit mode width is zero, then the specified register can not be accessed\r
@@ -317,14 +319,15 @@ ReadSaveStateRegisterByIndex (
     //\r
     // Write at most 4 of the lower bytes of the return buffer\r
     //\r
-    CopyMem(Buffer, (UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset64Lo, MIN(4, Width));\r
+    CopyMem (Buffer, (UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset64Lo, MIN (4, Width));\r
     if (Width > 4) {\r
       //\r
       // Write at most 4 of the upper bytes of the return buffer\r
       //\r
-      CopyMem((UINT8 *)Buffer + 4, (UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset64Hi, Width - 4);\r
+      CopyMem ((UINT8 *)Buffer + 4, (UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset64Hi, Width - 4);\r
     }\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -382,7 +385,7 @@ ReadSaveStateRegister (
     //\r
     // Get SMM Revision ID\r
     //\r
-    ReadSaveStateRegisterByIndex (CpuIndex, SMM_SAVE_STATE_REGISTER_SMMREVID_INDEX, sizeof(SmmRevId), &SmmRevId);\r
+    ReadSaveStateRegisterByIndex (CpuIndex, SMM_SAVE_STATE_REGISTER_SMMREVID_INDEX, sizeof (SmmRevId), &SmmRevId);\r
 \r
     //\r
     // See if the CPU supports the IOMisc register in the save state\r
@@ -394,7 +397,7 @@ ReadSaveStateRegister (
     //\r
     // Get the IOMisc register value\r
     //\r
-    ReadSaveStateRegisterByIndex (CpuIndex, SMM_SAVE_STATE_REGISTER_IOMISC_INDEX, sizeof(IoMisc.Uint32), &IoMisc.Uint32);\r
+    ReadSaveStateRegisterByIndex (CpuIndex, SMM_SAVE_STATE_REGISTER_IOMISC_INDEX, sizeof (IoMisc.Uint32), &IoMisc.Uint32);\r
 \r
     //\r
     // Check for the SMI_FLAG in IOMisc\r
@@ -407,14 +410,15 @@ ReadSaveStateRegister (
     // Only support IN/OUT, but not INS/OUTS/REP INS/REP OUTS.\r
     //\r
     if ((mSmmCpuIoType[IoMisc.Bits.Type] != EFI_SMM_SAVE_STATE_IO_TYPE_INPUT) &&\r
-        (mSmmCpuIoType[IoMisc.Bits.Type] != EFI_SMM_SAVE_STATE_IO_TYPE_OUTPUT)) {\r
+        (mSmmCpuIoType[IoMisc.Bits.Type] != EFI_SMM_SAVE_STATE_IO_TYPE_OUTPUT))\r
+    {\r
       return EFI_NOT_FOUND;\r
     }\r
 \r
     //\r
     // Compute index for the I/O Length and I/O Type lookup tables\r
     //\r
-    if (mSmmCpuIoWidth[IoMisc.Bits.Length].Width == 0 || mSmmCpuIoType[IoMisc.Bits.Type] == 0) {\r
+    if ((mSmmCpuIoWidth[IoMisc.Bits.Length].Width == 0) || (mSmmCpuIoType[IoMisc.Bits.Type] == 0)) {\r
       return EFI_NOT_FOUND;\r
     }\r
 \r
@@ -429,14 +433,14 @@ ReadSaveStateRegister (
     // Zero the IoInfo structure that will be returned in Buffer\r
     //\r
     IoInfo = (EFI_SMM_SAVE_STATE_IO_INFO *)Buffer;\r
-    ZeroMem (IoInfo, sizeof(EFI_SMM_SAVE_STATE_IO_INFO));\r
+    ZeroMem (IoInfo, sizeof (EFI_SMM_SAVE_STATE_IO_INFO));\r
 \r
     //\r
     // Use lookup tables to help fill in all the fields of the IoInfo structure\r
     //\r
-    IoInfo->IoPort = (UINT16)IoMisc.Bits.Port;\r
+    IoInfo->IoPort  = (UINT16)IoMisc.Bits.Port;\r
     IoInfo->IoWidth = mSmmCpuIoWidth[IoMisc.Bits.Length].IoWidth;\r
-    IoInfo->IoType = mSmmCpuIoType[IoMisc.Bits.Type];\r
+    IoInfo->IoType  = mSmmCpuIoType[IoMisc.Bits.Type];\r
     ReadSaveStateRegister (CpuIndex, EFI_SMM_SAVE_STATE_REGISTER_RAX, mSmmCpuIoWidth[IoMisc.Bits.Length].Width, &IoInfo->IoData);\r
     return EFI_SUCCESS;\r
   }\r
@@ -525,11 +529,12 @@ WriteSaveStateRegister (
     if (Width > mSmmCpuWidthOffset[RegisterIndex].Width32) {\r
       return EFI_INVALID_PARAMETER;\r
     }\r
+\r
     //\r
     // Write SMM State register\r
     //\r
     ASSERT (CpuSaveState != NULL);\r
-    CopyMem((UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset32, Buffer, Width);\r
+    CopyMem ((UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset32, Buffer, Width);\r
   } else {\r
     //\r
     // If 64-bit mode width is zero, then the specified register can not be accessed\r
@@ -548,14 +553,15 @@ WriteSaveStateRegister (
     //\r
     // Write at most 4 of the lower bytes of SMM State register\r
     //\r
-    CopyMem((UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset64Lo, Buffer, MIN (4, Width));\r
+    CopyMem ((UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset64Lo, Buffer, MIN (4, Width));\r
     if (Width > 4) {\r
       //\r
       // Write at most 4 of the upper bytes of SMM State register\r
       //\r
-      CopyMem((UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset64Hi, (UINT8 *)Buffer + 4, Width - 4);\r
+      CopyMem ((UINT8 *)CpuSaveState + mSmmCpuWidthOffset[RegisterIndex].Offset64Hi, (UINT8 *)Buffer + 4, Width - 4);\r
     }\r
   }\r
+\r
   return EFI_SUCCESS;\r
 }\r
 \r
@@ -600,7 +606,7 @@ HookReturnFromSmm (
 \r
   if (mSmmSaveStateRegisterLma == EFI_SMM_SAVE_STATE_REGISTER_LMA_32BIT) {\r
     OriginalInstructionPointer = (UINT64)CpuState->x86._EIP;\r
-    CpuState->x86._EIP = (UINT32)NewInstructionPointer;\r
+    CpuState->x86._EIP         = (UINT32)NewInstructionPointer;\r
     //\r
     // Clear the auto HALT restart flag so the RSM instruction returns\r
     // program control to the instruction following the HLT instruction.\r
@@ -615,6 +621,7 @@ HookReturnFromSmm (
     } else {\r
       CpuState->x64._RIP = (UINT32)NewInstructionPointer;\r
     }\r
+\r
     //\r
     // Clear the auto HALT restart flag so the RSM instruction returns\r
     // program control to the instruction following the HLT instruction.\r
@@ -623,6 +630,7 @@ HookReturnFromSmm (
       CpuState->x64.AutoHALTRestart &= ~BIT0;\r
     }\r
   }\r
+\r
   return OriginalInstructionPointer;\r
 }\r
 \r
@@ -644,6 +652,7 @@ GetSmiHandlerSize (
   if (Size != 0) {\r
     return Size;\r
   }\r
+\r
   return gcSmiHandlerSize;\r
 }\r
 \r
@@ -693,7 +702,7 @@ InstallSmiHandler (
   //\r
   Psd = (PROCESSOR_SMM_DESCRIPTOR *)(VOID *)((UINTN)SmBase + SMM_PSD_OFFSET);\r
   CopyMem (Psd, &gcPsd, sizeof (gcPsd));\r
-  Psd->SmmGdtPtr = (UINT64)GdtBase;\r
+  Psd->SmmGdtPtr  = (UINT64)GdtBase;\r
   Psd->SmmGdtSize = (UINT32)GdtSize;\r
 \r
   if (SmmCpuFeaturesGetSmiHandlerSize () != 0) {\r
@@ -729,14 +738,14 @@ InstallSmiHandler (
   //\r
   // Set the value at the top of the CPU stack to the CPU Index\r
   //\r
-  *(UINTN*)(UINTN)CpuSmiStack = CpuIndex;\r
+  *(UINTN *)(UINTN)CpuSmiStack = CpuIndex;\r
 \r
   //\r
   // Copy template to CPU specific SMI handler location\r
   //\r
   CopyMem (\r
-    (VOID*)((UINTN)SmBase + SMM_HANDLER_OFFSET),\r
-    (VOID*)gcSmiHandlerTemplate,\r
+    (VOID *)((UINTN)SmBase + SMM_HANDLER_OFFSET),\r
+    (VOID *)gcSmiHandlerTemplate,\r
     gcSmiHandlerSize\r
     );\r
 }\r
index 096ab323bbcf1ddabcc0a309f068219177b858d7..0c070c5736c6bfff9c9af244454f2e96313b8c52 100644 (file)
@@ -8,11 +8,11 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 \r
 #include "PiSmmCpuDxeSmm.h"\r
 \r
-UINT64   mTimeoutTicker = 0;\r
+UINT64  mTimeoutTicker = 0;\r
 //\r
 //  Number of counts in a roll-over cycle of the performance counter.\r
 //\r
-UINT64   mCycle = 0;\r
+UINT64  mCycle = 0;\r
 //\r
 // Flag to indicate the performance counter is count-up or count-down.\r
 //\r
@@ -33,15 +33,15 @@ InitializeSmmTimer (
 \r
   TimerFrequency = GetPerformanceCounterProperties (&Start, &End);\r
   mTimeoutTicker = DivU64x32 (\r
-                     MultU64x64(TimerFrequency, PcdGet64 (PcdCpuSmmApSyncTimeout)),\r
+                     MultU64x64 (TimerFrequency, PcdGet64 (PcdCpuSmmApSyncTimeout)),\r
                      1000 * 1000\r
                      );\r
   if (End < Start) {\r
     mCountDown = TRUE;\r
-    mCycle = Start - End;\r
+    mCycle     = Start - End;\r
   } else {\r
     mCountDown = FALSE;\r
-    mCycle = End - Start;\r
+    mCycle     = End - Start;\r
   }\r
 }\r
 \r
@@ -58,7 +58,6 @@ StartSyncTimer (
   return GetPerformanceCounter ();\r
 }\r
 \r
-\r
 /**\r
   Check if the SMM AP Sync timer is timeout.\r
 \r
@@ -68,7 +67,7 @@ StartSyncTimer (
 BOOLEAN\r
 EFIAPI\r
 IsSyncTimerTimeout (\r
-  IN      UINT64                    Timer\r
+  IN      UINT64  Timer\r
   )\r
 {\r
   UINT64  CurrentTimer;\r
@@ -106,5 +105,5 @@ IsSyncTimerTimeout (
     }\r
   }\r
 \r
-  return (BOOLEAN) (Delta >= mTimeoutTicker);\r
+  return (BOOLEAN)(Delta >= mTimeoutTicker);\r
 }\r
index 211a78b1c428c8b12b0923c2be1fc2979e1b5527..538394f2391050a132e34ebc97e8c233308ab15f 100644 (file)
@@ -10,16 +10,16 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 \r
 #include "PiSmmCpuDxeSmm.h"\r
 \r
-#define PAGE_TABLE_PAGES            8\r
-#define ACC_MAX_BIT                 BIT3\r
+#define PAGE_TABLE_PAGES  8\r
+#define ACC_MAX_BIT       BIT3\r
 \r
-extern UINTN mSmmShadowStackSize;\r
+extern UINTN  mSmmShadowStackSize;\r
 \r
-LIST_ENTRY                          mPagePool = INITIALIZE_LIST_HEAD_VARIABLE (mPagePool);\r
-BOOLEAN                             m1GPageTableSupport = FALSE;\r
-BOOLEAN                             mCpuSmmRestrictedMemoryAccess;\r
-BOOLEAN                             m5LevelPagingNeeded;\r
-X86_ASSEMBLY_PATCH_LABEL            gPatch5LevelPagingNeeded;\r
+LIST_ENTRY                mPagePool           = INITIALIZE_LIST_HEAD_VARIABLE (mPagePool);\r
+BOOLEAN                   m1GPageTableSupport = FALSE;\r
+BOOLEAN                   mCpuSmmRestrictedMemoryAccess;\r
+BOOLEAN                   m5LevelPagingNeeded;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatch5LevelPagingNeeded;\r
 \r
 /**\r
   Disable CET.\r
@@ -51,8 +51,8 @@ Is1GPageSupport (
   VOID\r
   )\r
 {\r
-  UINT32         RegEax;\r
-  UINT32         RegEdx;\r
+  UINT32  RegEax;\r
+  UINT32  RegEdx;\r
 \r
   AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
   if (RegEax >= 0x80000001) {\r
@@ -61,6 +61,7 @@ Is1GPageSupport (
       return TRUE;\r
     }\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -78,9 +79,9 @@ Is5LevelPagingNeeded (
   VOID\r
   )\r
 {\r
-  CPUID_VIR_PHY_ADDRESS_SIZE_EAX              VirPhyAddressSize;\r
-  CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_ECX ExtFeatureEcx;\r
-  UINT32                                      MaxExtendedFunctionId;\r
+  CPUID_VIR_PHY_ADDRESS_SIZE_EAX               VirPhyAddressSize;\r
+  CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_ECX  ExtFeatureEcx;\r
+  UINT32                                       MaxExtendedFunctionId;\r
 \r
   AsmCpuid (CPUID_EXTENDED_FUNCTION, &MaxExtendedFunctionId, NULL, NULL, NULL);\r
   if (MaxExtendedFunctionId >= CPUID_VIR_PHY_ADDRESS_SIZE) {\r
@@ -88,14 +89,20 @@ Is5LevelPagingNeeded (
   } else {\r
     VirPhyAddressSize.Bits.PhysicalAddressBits = 36;\r
   }\r
+\r
   AsmCpuidEx (\r
     CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS,\r
     CPUID_STRUCTURED_EXTENDED_FEATURE_FLAGS_SUB_LEAF_INFO,\r
-    NULL, NULL, &ExtFeatureEcx.Uint32, NULL\r
+    NULL,\r
+    NULL,\r
+    &ExtFeatureEcx.Uint32,\r
+    NULL\r
     );\r
   DEBUG ((\r
-    DEBUG_INFO, "PhysicalAddressBits = %d, 5LPageTable = %d.\n",\r
-    VirPhyAddressSize.Bits.PhysicalAddressBits, ExtFeatureEcx.Bits.FiveLevelPage\r
+    DEBUG_INFO,\r
+    "PhysicalAddressBits = %d, 5LPageTable = %d.\n",\r
+    VirPhyAddressSize.Bits.PhysicalAddressBits,\r
+    ExtFeatureEcx.Bits.FiveLevelPage\r
     ));\r
 \r
   if (VirPhyAddressSize.Bits.PhysicalAddressBits > 4 * 9 + 12) {\r
@@ -114,18 +121,19 @@ Is5LevelPagingNeeded (
 **/\r
 VOID\r
 GetPageTable (\r
-  OUT UINTN   *Base,\r
-  OUT BOOLEAN *FiveLevels OPTIONAL\r
+  OUT UINTN    *Base,\r
+  OUT BOOLEAN  *FiveLevels OPTIONAL\r
   )\r
 {\r
-  IA32_CR4 Cr4;\r
+  IA32_CR4  Cr4;\r
 \r
   if (mInternalCr3 == 0) {\r
     *Base = AsmReadCr3 () & PAGING_4K_ADDRESS_MASK_64;\r
     if (FiveLevels != NULL) {\r
-      Cr4.UintN = AsmReadCr4 ();\r
+      Cr4.UintN   = AsmReadCr4 ();\r
       *FiveLevels = (BOOLEAN)(Cr4.Bits.LA57 == 1);\r
     }\r
+\r
     return;\r
   }\r
 \r
@@ -146,8 +154,8 @@ GetPageTable (
 **/\r
 VOID\r
 SetSubEntriesNum (\r
-  IN OUT UINT64               *Entry,\r
-  IN     UINT64               SubEntryNum\r
+  IN OUT UINT64  *Entry,\r
+  IN     UINT64  SubEntryNum\r
   )\r
 {\r
   //\r
@@ -167,7 +175,7 @@ SetSubEntriesNum (
 **/\r
 UINT64\r
 GetSubEntriesNum (\r
-  IN UINT64            *Entry\r
+  IN UINT64  *Entry\r
   )\r
 {\r
   //\r
@@ -186,25 +194,26 @@ CalculateMaximumSupportAddress (
   VOID\r
   )\r
 {\r
-  UINT32                                        RegEax;\r
-  UINT8                                         PhysicalAddressBits;\r
-  VOID                                          *Hob;\r
+  UINT32  RegEax;\r
+  UINT8   PhysicalAddressBits;\r
+  VOID    *Hob;\r
 \r
   //\r
   // Get physical address bits supported.\r
   //\r
   Hob = GetFirstHob (EFI_HOB_TYPE_CPU);\r
   if (Hob != NULL) {\r
-    PhysicalAddressBits = ((EFI_HOB_CPU *) Hob)->SizeOfMemorySpace;\r
+    PhysicalAddressBits = ((EFI_HOB_CPU *)Hob)->SizeOfMemorySpace;\r
   } else {\r
     AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
     if (RegEax >= 0x80000008) {\r
       AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL);\r
-      PhysicalAddressBits = (UINT8) RegEax;\r
+      PhysicalAddressBits = (UINT8)RegEax;\r
     } else {\r
       PhysicalAddressBits = 36;\r
     }\r
   }\r
+\r
   return PhysicalAddressBits;\r
 }\r
 \r
@@ -216,54 +225,54 @@ CalculateMaximumSupportAddress (
 **/\r
 VOID\r
 SetStaticPageTable (\r
-  IN UINTN               PageTable,\r
-  IN UINT8               PhysicalAddressBits\r
+  IN UINTN  PageTable,\r
+  IN UINT8  PhysicalAddressBits\r
   )\r
 {\r
-  UINT64                                        PageAddress;\r
-  UINTN                                         NumberOfPml5EntriesNeeded;\r
-  UINTN                                         NumberOfPml4EntriesNeeded;\r
-  UINTN                                         NumberOfPdpEntriesNeeded;\r
-  UINTN                                         IndexOfPml5Entries;\r
-  UINTN                                         IndexOfPml4Entries;\r
-  UINTN                                         IndexOfPdpEntries;\r
-  UINTN                                         IndexOfPageDirectoryEntries;\r
-  UINT64                                        *PageMapLevel5Entry;\r
-  UINT64                                        *PageMapLevel4Entry;\r
-  UINT64                                        *PageMap;\r
-  UINT64                                        *PageDirectoryPointerEntry;\r
-  UINT64                                        *PageDirectory1GEntry;\r
-  UINT64                                        *PageDirectoryEntry;\r
+  UINT64  PageAddress;\r
+  UINTN   NumberOfPml5EntriesNeeded;\r
+  UINTN   NumberOfPml4EntriesNeeded;\r
+  UINTN   NumberOfPdpEntriesNeeded;\r
+  UINTN   IndexOfPml5Entries;\r
+  UINTN   IndexOfPml4Entries;\r
+  UINTN   IndexOfPdpEntries;\r
+  UINTN   IndexOfPageDirectoryEntries;\r
+  UINT64  *PageMapLevel5Entry;\r
+  UINT64  *PageMapLevel4Entry;\r
+  UINT64  *PageMap;\r
+  UINT64  *PageDirectoryPointerEntry;\r
+  UINT64  *PageDirectory1GEntry;\r
+  UINT64  *PageDirectoryEntry;\r
 \r
   //\r
   // IA-32e paging translates 48-bit linear addresses to 52-bit physical addresses\r
   //  when 5-Level Paging is disabled.\r
   //\r
   ASSERT (PhysicalAddressBits <= 52);\r
-  if (!m5LevelPagingNeeded && PhysicalAddressBits > 48) {\r
+  if (!m5LevelPagingNeeded && (PhysicalAddressBits > 48)) {\r
     PhysicalAddressBits = 48;\r
   }\r
 \r
   NumberOfPml5EntriesNeeded = 1;\r
   if (PhysicalAddressBits > 48) {\r
-    NumberOfPml5EntriesNeeded = (UINTN) LShiftU64 (1, PhysicalAddressBits - 48);\r
-    PhysicalAddressBits = 48;\r
+    NumberOfPml5EntriesNeeded = (UINTN)LShiftU64 (1, PhysicalAddressBits - 48);\r
+    PhysicalAddressBits       = 48;\r
   }\r
 \r
   NumberOfPml4EntriesNeeded = 1;\r
   if (PhysicalAddressBits > 39) {\r
-    NumberOfPml4EntriesNeeded = (UINTN) LShiftU64 (1, PhysicalAddressBits - 39);\r
-    PhysicalAddressBits = 39;\r
+    NumberOfPml4EntriesNeeded = (UINTN)LShiftU64 (1, PhysicalAddressBits - 39);\r
+    PhysicalAddressBits       = 39;\r
   }\r
 \r
   NumberOfPdpEntriesNeeded = 1;\r
   ASSERT (PhysicalAddressBits > 30);\r
-  NumberOfPdpEntriesNeeded = (UINTN) LShiftU64 (1, PhysicalAddressBits - 30);\r
+  NumberOfPdpEntriesNeeded = (UINTN)LShiftU64 (1, PhysicalAddressBits - 30);\r
 \r
   //\r
   // By architecture only one PageMapLevel4 exists - so lets allocate storage for it.\r
   //\r
-  PageMap         = (VOID *) PageTable;\r
+  PageMap = (VOID *)PageTable;\r
 \r
   PageMapLevel4Entry = PageMap;\r
   PageMapLevel5Entry = NULL;\r
@@ -273,22 +282,24 @@ SetStaticPageTable (
     //\r
     PageMapLevel5Entry = PageMap;\r
   }\r
-  PageAddress        = 0;\r
+\r
+  PageAddress = 0;\r
 \r
   for ( IndexOfPml5Entries = 0\r
-      ; IndexOfPml5Entries < NumberOfPml5EntriesNeeded\r
-      ; IndexOfPml5Entries++, PageMapLevel5Entry++) {\r
+        ; IndexOfPml5Entries < NumberOfPml5EntriesNeeded\r
+        ; IndexOfPml5Entries++, PageMapLevel5Entry++)\r
+  {\r
     //\r
     // Each PML5 entry points to a page of PML4 entires.\r
     // So lets allocate space for them and fill them in in the IndexOfPml4Entries loop.\r
     // When 5-Level Paging is disabled, below allocation happens only once.\r
     //\r
     if (m5LevelPagingNeeded) {\r
-      PageMapLevel4Entry = (UINT64 *) ((*PageMapLevel5Entry) & ~mAddressEncMask & gPhyMask);\r
+      PageMapLevel4Entry = (UINT64 *)((*PageMapLevel5Entry) & ~mAddressEncMask & gPhyMask);\r
       if (PageMapLevel4Entry == NULL) {\r
         PageMapLevel4Entry = AllocatePageTableMemory (1);\r
-        ASSERT(PageMapLevel4Entry != NULL);\r
-        ZeroMem (PageMapLevel4Entry, EFI_PAGES_TO_SIZE(1));\r
+        ASSERT (PageMapLevel4Entry != NULL);\r
+        ZeroMem (PageMapLevel4Entry, EFI_PAGES_TO_SIZE (1));\r
 \r
         *PageMapLevel5Entry = (UINT64)(UINTN)PageMapLevel4Entry | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
       }\r
@@ -298,11 +309,11 @@ SetStaticPageTable (
       //\r
       // Each PML4 entry points to a page of Page Directory Pointer entries.\r
       //\r
-      PageDirectoryPointerEntry = (UINT64 *) ((*PageMapLevel4Entry) & ~mAddressEncMask & gPhyMask);\r
+      PageDirectoryPointerEntry = (UINT64 *)((*PageMapLevel4Entry) & ~mAddressEncMask & gPhyMask);\r
       if (PageDirectoryPointerEntry == NULL) {\r
         PageDirectoryPointerEntry = AllocatePageTableMemory (1);\r
-        ASSERT(PageDirectoryPointerEntry != NULL);\r
-        ZeroMem (PageDirectoryPointerEntry, EFI_PAGES_TO_SIZE(1));\r
+        ASSERT (PageDirectoryPointerEntry != NULL);\r
+        ZeroMem (PageDirectoryPointerEntry, EFI_PAGES_TO_SIZE (1));\r
 \r
         *PageMapLevel4Entry = (UINT64)(UINTN)PageDirectoryPointerEntry | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
       }\r
@@ -310,12 +321,13 @@ SetStaticPageTable (
       if (m1GPageTableSupport) {\r
         PageDirectory1GEntry = PageDirectoryPointerEntry;\r
         for (IndexOfPageDirectoryEntries = 0; IndexOfPageDirectoryEntries < 512; IndexOfPageDirectoryEntries++, PageDirectory1GEntry++, PageAddress += SIZE_1GB) {\r
-          if (IndexOfPml4Entries == 0 && IndexOfPageDirectoryEntries < 4) {\r
+          if ((IndexOfPml4Entries == 0) && (IndexOfPageDirectoryEntries < 4)) {\r
             //\r
             // Skip the < 4G entries\r
             //\r
             continue;\r
           }\r
+\r
           //\r
           // Fill in the Page Directory entries\r
           //\r
@@ -324,21 +336,22 @@ SetStaticPageTable (
       } else {\r
         PageAddress = BASE_4GB;\r
         for (IndexOfPdpEntries = 0; IndexOfPdpEntries < (NumberOfPml4EntriesNeeded == 1 ? NumberOfPdpEntriesNeeded : 512); IndexOfPdpEntries++, PageDirectoryPointerEntry++) {\r
-          if (IndexOfPml4Entries == 0 && IndexOfPdpEntries < 4) {\r
+          if ((IndexOfPml4Entries == 0) && (IndexOfPdpEntries < 4)) {\r
             //\r
             // Skip the < 4G entries\r
             //\r
             continue;\r
           }\r
+\r
           //\r
           // Each Directory Pointer entries points to a page of Page Directory entires.\r
           // So allocate space for them and fill them in in the IndexOfPageDirectoryEntries loop.\r
           //\r
-          PageDirectoryEntry = (UINT64 *) ((*PageDirectoryPointerEntry) & ~mAddressEncMask & gPhyMask);\r
+          PageDirectoryEntry = (UINT64 *)((*PageDirectoryPointerEntry) & ~mAddressEncMask & gPhyMask);\r
           if (PageDirectoryEntry == NULL) {\r
             PageDirectoryEntry = AllocatePageTableMemory (1);\r
-            ASSERT(PageDirectoryEntry != NULL);\r
-            ZeroMem (PageDirectoryEntry, EFI_PAGES_TO_SIZE(1));\r
+            ASSERT (PageDirectoryEntry != NULL);\r
+            ZeroMem (PageDirectoryEntry, EFI_PAGES_TO_SIZE (1));\r
 \r
             //\r
             // Fill in a Page Directory Pointer Entries\r
@@ -369,15 +382,15 @@ SmmInitPageTable (
   VOID\r
   )\r
 {\r
-  EFI_PHYSICAL_ADDRESS              Pages;\r
-  UINT64                            *PTEntry;\r
-  LIST_ENTRY                        *FreePage;\r
-  UINTN                             Index;\r
-  UINTN                             PageFaultHandlerHookAddress;\r
-  IA32_IDT_GATE_DESCRIPTOR          *IdtEntry;\r
-  EFI_STATUS                        Status;\r
-  UINT64                            *Pml4Entry;\r
-  UINT64                            *Pml5Entry;\r
+  EFI_PHYSICAL_ADDRESS      Pages;\r
+  UINT64                    *PTEntry;\r
+  LIST_ENTRY                *FreePage;\r
+  UINTN                     Index;\r
+  UINTN                     PageFaultHandlerHookAddress;\r
+  IA32_IDT_GATE_DESCRIPTOR  *IdtEntry;\r
+  EFI_STATUS                Status;\r
+  UINT64                    *Pml4Entry;\r
+  UINT64                    *Pml5Entry;\r
 \r
   //\r
   // Initialize spin lock\r
@@ -401,7 +414,7 @@ SmmInitPageTable (
   //\r
   // Set IA32_PG_PMNT bit to mask this entry\r
   //\r
-  PTEntry = (UINT64*)(UINTN)Pages;\r
+  PTEntry = (UINT64 *)(UINTN)Pages;\r
   for (Index = 0; Index < 4; Index++) {\r
     PTEntry[Index] |= IA32_PG_PMNT;\r
   }\r
@@ -409,7 +422,7 @@ SmmInitPageTable (
   //\r
   // Fill Page-Table-Level4 (PML4) entry\r
   //\r
-  Pml4Entry = (UINT64*)AllocatePageTableMemory (1);\r
+  Pml4Entry = (UINT64 *)AllocatePageTableMemory (1);\r
   ASSERT (Pml4Entry != NULL);\r
   *Pml4Entry = Pages | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
   ZeroMem (Pml4Entry + 1, EFI_PAGE_SIZE - sizeof (*Pml4Entry));\r
@@ -424,9 +437,9 @@ SmmInitPageTable (
     //\r
     // Fill PML5 entry\r
     //\r
-    Pml5Entry = (UINT64*)AllocatePageTableMemory (1);\r
+    Pml5Entry = (UINT64 *)AllocatePageTableMemory (1);\r
     ASSERT (Pml5Entry != NULL);\r
-    *Pml5Entry = (UINTN) Pml4Entry | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
+    *Pml5Entry = (UINTN)Pml4Entry | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
     ZeroMem (Pml5Entry + 1, EFI_PAGE_SIZE - sizeof (*Pml5Entry));\r
     //\r
     // Set sub-entries number\r
@@ -445,7 +458,7 @@ SmmInitPageTable (
     //\r
     // Add pages to page pool\r
     //\r
-    FreePage = (LIST_ENTRY*)AllocatePageTableMemory (PAGE_TABLE_PAGES);\r
+    FreePage = (LIST_ENTRY *)AllocatePageTableMemory (PAGE_TABLE_PAGES);\r
     ASSERT (FreePage != NULL);\r
     for (Index = 0; Index < PAGE_TABLE_PAGES; Index++) {\r
       InsertTailList (&mPagePool, FreePage);\r
@@ -455,20 +468,21 @@ SmmInitPageTable (
 \r
   if (FeaturePcdGet (PcdCpuSmmProfileEnable) ||\r
       HEAP_GUARD_NONSTOP_MODE ||\r
-      NULL_DETECTION_NONSTOP_MODE) {\r
+      NULL_DETECTION_NONSTOP_MODE)\r
+  {\r
     //\r
     // Set own Page Fault entry instead of the default one, because SMM Profile\r
     // feature depends on IRET instruction to do Single Step\r
     //\r
     PageFaultHandlerHookAddress = (UINTN)PageFaultIdtHandlerSmmProfile;\r
-    IdtEntry  = (IA32_IDT_GATE_DESCRIPTOR *) gcSmiIdtr.Base;\r
-    IdtEntry += EXCEPT_IA32_PAGE_FAULT;\r
-    IdtEntry->Bits.OffsetLow      = (UINT16)PageFaultHandlerHookAddress;\r
-    IdtEntry->Bits.Reserved_0     = 0;\r
-    IdtEntry->Bits.GateType       = IA32_IDT_GATE_TYPE_INTERRUPT_32;\r
-    IdtEntry->Bits.OffsetHigh     = (UINT16)(PageFaultHandlerHookAddress >> 16);\r
-    IdtEntry->Bits.OffsetUpper    = (UINT32)(PageFaultHandlerHookAddress >> 32);\r
-    IdtEntry->Bits.Reserved_1     = 0;\r
+    IdtEntry                    = (IA32_IDT_GATE_DESCRIPTOR *)gcSmiIdtr.Base;\r
+    IdtEntry                   += EXCEPT_IA32_PAGE_FAULT;\r
+    IdtEntry->Bits.OffsetLow    = (UINT16)PageFaultHandlerHookAddress;\r
+    IdtEntry->Bits.Reserved_0   = 0;\r
+    IdtEntry->Bits.GateType     = IA32_IDT_GATE_TYPE_INTERRUPT_32;\r
+    IdtEntry->Bits.OffsetHigh   = (UINT16)(PageFaultHandlerHookAddress >> 16);\r
+    IdtEntry->Bits.OffsetUpper  = (UINT32)(PageFaultHandlerHookAddress >> 32);\r
+    IdtEntry->Bits.Reserved_1   = 0;\r
   } else {\r
     //\r
     // Register Smm Page Fault Handler\r
@@ -509,8 +523,8 @@ SmmInitPageTable (
 **/\r
 VOID\r
 SetAccNum (\r
-  IN OUT UINT64               *Entry,\r
-  IN     UINT64               Acc\r
+  IN OUT UINT64  *Entry,\r
+  IN     UINT64  Acc\r
   )\r
 {\r
   //\r
@@ -529,7 +543,7 @@ SetAccNum (
 **/\r
 UINT64\r
 GetAccNum (\r
-  IN UINT64            *Entry\r
+  IN UINT64  *Entry\r
   )\r
 {\r
   //\r
@@ -548,10 +562,10 @@ GetAccNum (
 **/\r
 UINT64\r
 GetAndUpdateAccNum (\r
-  IN OUT UINT64      *Entry\r
+  IN OUT UINT64  *Entry\r
   )\r
 {\r
-  UINT64         Acc;\r
+  UINT64  Acc;\r
 \r
   Acc = GetAccNum (Entry);\r
   if ((*Entry & IA32_PG_A) != 0) {\r
@@ -570,6 +584,7 @@ GetAndUpdateAccNum (
       SetAccNum (Entry, Acc - 1);\r
     }\r
   }\r
+\r
   return Acc;\r
 }\r
 \r
@@ -587,84 +602,86 @@ ReclaimPages (
   VOID\r
   )\r
 {\r
-  UINT64                       Pml5Entry;\r
-  UINT64                       *Pml5;\r
-  UINT64                       *Pml4;\r
-  UINT64                       *Pdpt;\r
-  UINT64                       *Pdt;\r
-  UINTN                        Pml5Index;\r
-  UINTN                        Pml4Index;\r
-  UINTN                        PdptIndex;\r
-  UINTN                        PdtIndex;\r
-  UINTN                        MinPml5;\r
-  UINTN                        MinPml4;\r
-  UINTN                        MinPdpt;\r
-  UINTN                        MinPdt;\r
-  UINT64                       MinAcc;\r
-  UINT64                       Acc;\r
-  UINT64                       SubEntriesNum;\r
-  BOOLEAN                      PML4EIgnore;\r
-  BOOLEAN                      PDPTEIgnore;\r
-  UINT64                       *ReleasePageAddress;\r
-  IA32_CR4                     Cr4;\r
-  BOOLEAN                      Enable5LevelPaging;\r
-  UINT64                       PFAddress;\r
-  UINT64                       PFAddressPml5Index;\r
-  UINT64                       PFAddressPml4Index;\r
-  UINT64                       PFAddressPdptIndex;\r
-  UINT64                       PFAddressPdtIndex;\r
-\r
-  Pml4 = NULL;\r
-  Pdpt = NULL;\r
-  Pdt  = NULL;\r
-  MinAcc  = (UINT64)-1;\r
-  MinPml4 = (UINTN)-1;\r
-  MinPml5 = (UINTN)-1;\r
-  MinPdpt = (UINTN)-1;\r
-  MinPdt  = (UINTN)-1;\r
-  Acc     = 0;\r
+  UINT64    Pml5Entry;\r
+  UINT64    *Pml5;\r
+  UINT64    *Pml4;\r
+  UINT64    *Pdpt;\r
+  UINT64    *Pdt;\r
+  UINTN     Pml5Index;\r
+  UINTN     Pml4Index;\r
+  UINTN     PdptIndex;\r
+  UINTN     PdtIndex;\r
+  UINTN     MinPml5;\r
+  UINTN     MinPml4;\r
+  UINTN     MinPdpt;\r
+  UINTN     MinPdt;\r
+  UINT64    MinAcc;\r
+  UINT64    Acc;\r
+  UINT64    SubEntriesNum;\r
+  BOOLEAN   PML4EIgnore;\r
+  BOOLEAN   PDPTEIgnore;\r
+  UINT64    *ReleasePageAddress;\r
+  IA32_CR4  Cr4;\r
+  BOOLEAN   Enable5LevelPaging;\r
+  UINT64    PFAddress;\r
+  UINT64    PFAddressPml5Index;\r
+  UINT64    PFAddressPml4Index;\r
+  UINT64    PFAddressPdptIndex;\r
+  UINT64    PFAddressPdtIndex;\r
+\r
+  Pml4               = NULL;\r
+  Pdpt               = NULL;\r
+  Pdt                = NULL;\r
+  MinAcc             = (UINT64)-1;\r
+  MinPml4            = (UINTN)-1;\r
+  MinPml5            = (UINTN)-1;\r
+  MinPdpt            = (UINTN)-1;\r
+  MinPdt             = (UINTN)-1;\r
+  Acc                = 0;\r
   ReleasePageAddress = 0;\r
-  PFAddress = AsmReadCr2 ();\r
+  PFAddress          = AsmReadCr2 ();\r
   PFAddressPml5Index = BitFieldRead64 (PFAddress, 48, 48 + 8);\r
   PFAddressPml4Index = BitFieldRead64 (PFAddress, 39, 39 + 8);\r
   PFAddressPdptIndex = BitFieldRead64 (PFAddress, 30, 30 + 8);\r
-  PFAddressPdtIndex = BitFieldRead64 (PFAddress, 21, 21 + 8);\r
+  PFAddressPdtIndex  = BitFieldRead64 (PFAddress, 21, 21 + 8);\r
 \r
-  Cr4.UintN = AsmReadCr4 ();\r
-  Enable5LevelPaging = (BOOLEAN) (Cr4.Bits.LA57 == 1);\r
-  Pml5 = (UINT64*)(UINTN)(AsmReadCr3 () & gPhyMask);\r
+  Cr4.UintN          = AsmReadCr4 ();\r
+  Enable5LevelPaging = (BOOLEAN)(Cr4.Bits.LA57 == 1);\r
+  Pml5               = (UINT64 *)(UINTN)(AsmReadCr3 () & gPhyMask);\r
 \r
   if (!Enable5LevelPaging) {\r
     //\r
     // Create one fake PML5 entry for 4-Level Paging\r
     // so that the page table parsing logic only handles 5-Level page structure.\r
     //\r
-    Pml5Entry = (UINTN) Pml5 | IA32_PG_P;\r
-    Pml5 = &Pml5Entry;\r
+    Pml5Entry = (UINTN)Pml5 | IA32_PG_P;\r
+    Pml5      = &Pml5Entry;\r
   }\r
 \r
   //\r
   // First, find the leaf entry has the smallest access record value\r
   //\r
   for (Pml5Index = 0; Pml5Index < (Enable5LevelPaging ? (EFI_PAGE_SIZE / sizeof (*Pml4)) : 1); Pml5Index++) {\r
-    if ((Pml5[Pml5Index] & IA32_PG_P) == 0 || (Pml5[Pml5Index] & IA32_PG_PMNT) != 0) {\r
+    if (((Pml5[Pml5Index] & IA32_PG_P) == 0) || ((Pml5[Pml5Index] & IA32_PG_PMNT) != 0)) {\r
       //\r
       // If the PML5 entry is not present or is masked, skip it\r
       //\r
       continue;\r
     }\r
-    Pml4 = (UINT64*)(UINTN)(Pml5[Pml5Index] & gPhyMask);\r
+\r
+    Pml4 = (UINT64 *)(UINTN)(Pml5[Pml5Index] & gPhyMask);\r
     for (Pml4Index = 0; Pml4Index < EFI_PAGE_SIZE / sizeof (*Pml4); Pml4Index++) {\r
-      if ((Pml4[Pml4Index] & IA32_PG_P) == 0 || (Pml4[Pml4Index] & IA32_PG_PMNT) != 0) {\r
+      if (((Pml4[Pml4Index] & IA32_PG_P) == 0) || ((Pml4[Pml4Index] & IA32_PG_PMNT) != 0)) {\r
         //\r
         // If the PML4 entry is not present or is masked, skip it\r
         //\r
         continue;\r
       }\r
-      Pdpt = (UINT64*)(UINTN)(Pml4[Pml4Index] & ~mAddressEncMask & gPhyMask);\r
+\r
+      Pdpt        = (UINT64 *)(UINTN)(Pml4[Pml4Index] & ~mAddressEncMask & gPhyMask);\r
       PML4EIgnore = FALSE;\r
       for (PdptIndex = 0; PdptIndex < EFI_PAGE_SIZE / sizeof (*Pdpt); PdptIndex++) {\r
-        if ((Pdpt[PdptIndex] & IA32_PG_P) == 0 || (Pdpt[PdptIndex] & IA32_PG_PMNT) != 0) {\r
+        if (((Pdpt[PdptIndex] & IA32_PG_P) == 0) || ((Pdpt[PdptIndex] & IA32_PG_PMNT) != 0)) {\r
           //\r
           // If the PDPT entry is not present or is masked, skip it\r
           //\r
@@ -674,18 +691,20 @@ ReclaimPages (
             //\r
             PML4EIgnore = TRUE;\r
           }\r
+\r
           continue;\r
         }\r
+\r
         if ((Pdpt[PdptIndex] & IA32_PG_PS) == 0) {\r
           //\r
           // It's not 1-GByte pages entry, it should be a PDPT entry,\r
           // we will not check PML4 entry more\r
           //\r
           PML4EIgnore = TRUE;\r
-          Pdt = (UINT64*)(UINTN)(Pdpt[PdptIndex] & ~mAddressEncMask & gPhyMask);\r
+          Pdt         = (UINT64 *)(UINTN)(Pdpt[PdptIndex] & ~mAddressEncMask & gPhyMask);\r
           PDPTEIgnore = FALSE;\r
-          for (PdtIndex = 0; PdtIndex < EFI_PAGE_SIZE / sizeof(*Pdt); PdtIndex++) {\r
-            if ((Pdt[PdtIndex] & IA32_PG_P) == 0 || (Pdt[PdtIndex] & IA32_PG_PMNT) != 0) {\r
+          for (PdtIndex = 0; PdtIndex < EFI_PAGE_SIZE / sizeof (*Pdt); PdtIndex++) {\r
+            if (((Pdt[PdtIndex] & IA32_PG_P) == 0) || ((Pdt[PdtIndex] & IA32_PG_PMNT) != 0)) {\r
               //\r
               // If the PD entry is not present or is masked, skip it\r
               //\r
@@ -695,79 +714,86 @@ ReclaimPages (
                 //\r
                 PDPTEIgnore = TRUE;\r
               }\r
+\r
               continue;\r
             }\r
+\r
             if ((Pdt[PdtIndex] & IA32_PG_PS) == 0) {\r
               //\r
               // It's not 2 MByte page table entry, it should be PD entry\r
               // we will find the entry has the smallest access record value\r
               //\r
               PDPTEIgnore = TRUE;\r
-              if (PdtIndex != PFAddressPdtIndex || PdptIndex != PFAddressPdptIndex ||\r
-                  Pml4Index != PFAddressPml4Index || Pml5Index != PFAddressPml5Index) {\r
+              if ((PdtIndex != PFAddressPdtIndex) || (PdptIndex != PFAddressPdptIndex) ||\r
+                  (Pml4Index != PFAddressPml4Index) || (Pml5Index != PFAddressPml5Index))\r
+              {\r
                 Acc = GetAndUpdateAccNum (Pdt + PdtIndex);\r
                 if (Acc < MinAcc) {\r
                   //\r
                   // If the PD entry has the smallest access record value,\r
                   // save the Page address to be released\r
                   //\r
-                  MinAcc  = Acc;\r
-                  MinPml5 = Pml5Index;\r
-                  MinPml4 = Pml4Index;\r
-                  MinPdpt = PdptIndex;\r
-                  MinPdt  = PdtIndex;\r
+                  MinAcc             = Acc;\r
+                  MinPml5            = Pml5Index;\r
+                  MinPml4            = Pml4Index;\r
+                  MinPdpt            = PdptIndex;\r
+                  MinPdt             = PdtIndex;\r
                   ReleasePageAddress = Pdt + PdtIndex;\r
                 }\r
               }\r
             }\r
           }\r
+\r
           if (!PDPTEIgnore) {\r
             //\r
             // If this PDPT entry has no PDT entries pointer to 4 KByte pages,\r
             // it should only has the entries point to 2 MByte Pages\r
             //\r
-            if (PdptIndex != PFAddressPdptIndex || Pml4Index != PFAddressPml4Index ||\r
-                Pml5Index != PFAddressPml5Index) {\r
+            if ((PdptIndex != PFAddressPdptIndex) || (Pml4Index != PFAddressPml4Index) ||\r
+                (Pml5Index != PFAddressPml5Index))\r
+            {\r
               Acc = GetAndUpdateAccNum (Pdpt + PdptIndex);\r
               if (Acc < MinAcc) {\r
                 //\r
                 // If the PDPT entry has the smallest access record value,\r
                 // save the Page address to be released\r
                 //\r
-                MinAcc  = Acc;\r
-                MinPml5 = Pml5Index;\r
-                MinPml4 = Pml4Index;\r
-                MinPdpt = PdptIndex;\r
-                MinPdt  = (UINTN)-1;\r
+                MinAcc             = Acc;\r
+                MinPml5            = Pml5Index;\r
+                MinPml4            = Pml4Index;\r
+                MinPdpt            = PdptIndex;\r
+                MinPdt             = (UINTN)-1;\r
                 ReleasePageAddress = Pdpt + PdptIndex;\r
               }\r
             }\r
           }\r
         }\r
       }\r
+\r
       if (!PML4EIgnore) {\r
         //\r
         // If PML4 entry has no the PDPT entry pointer to 2 MByte pages,\r
         // it should only has the entries point to 1 GByte Pages\r
         //\r
-        if (Pml4Index != PFAddressPml4Index || Pml5Index != PFAddressPml5Index) {\r
+        if ((Pml4Index != PFAddressPml4Index) || (Pml5Index != PFAddressPml5Index)) {\r
           Acc = GetAndUpdateAccNum (Pml4 + Pml4Index);\r
           if (Acc < MinAcc) {\r
             //\r
             // If the PML4 entry has the smallest access record value,\r
             // save the Page address to be released\r
             //\r
-            MinAcc  = Acc;\r
-            MinPml5 = Pml5Index;\r
-            MinPml4 = Pml4Index;\r
-            MinPdpt = (UINTN)-1;\r
-            MinPdt  = (UINTN)-1;\r
+            MinAcc             = Acc;\r
+            MinPml5            = Pml5Index;\r
+            MinPml4            = Pml4Index;\r
+            MinPdpt            = (UINTN)-1;\r
+            MinPdt             = (UINTN)-1;\r
             ReleasePageAddress = Pml4 + Pml4Index;\r
           }\r
         }\r
       }\r
     }\r
   }\r
+\r
   //\r
   // Make sure one PML4/PDPT/PD entry is selected\r
   //\r
@@ -776,7 +802,7 @@ ReclaimPages (
   //\r
   // Secondly, insert the page pointed by this entry into page pool and clear this entry\r
   //\r
-  InsertTailList (&mPagePool, (LIST_ENTRY*)(UINTN)(*ReleasePageAddress & ~mAddressEncMask & gPhyMask));\r
+  InsertTailList (&mPagePool, (LIST_ENTRY *)(UINTN)(*ReleasePageAddress & ~mAddressEncMask & gPhyMask));\r
   *ReleasePageAddress = 0;\r
 \r
   //\r
@@ -788,16 +814,17 @@ ReclaimPages (
       //\r
       // If 4 KByte Page Table is released, check the PDPT entry\r
       //\r
-      Pml4 = (UINT64 *) (UINTN) (Pml5[MinPml5] & gPhyMask);\r
-      Pdpt = (UINT64*)(UINTN)(Pml4[MinPml4] & ~mAddressEncMask & gPhyMask);\r
-      SubEntriesNum = GetSubEntriesNum(Pdpt + MinPdpt);\r
-      if (SubEntriesNum == 0 &&\r
-          (MinPdpt != PFAddressPdptIndex || MinPml4 != PFAddressPml4Index || MinPml5 != PFAddressPml5Index)) {\r
+      Pml4          = (UINT64 *)(UINTN)(Pml5[MinPml5] & gPhyMask);\r
+      Pdpt          = (UINT64 *)(UINTN)(Pml4[MinPml4] & ~mAddressEncMask & gPhyMask);\r
+      SubEntriesNum = GetSubEntriesNum (Pdpt + MinPdpt);\r
+      if ((SubEntriesNum == 0) &&\r
+          ((MinPdpt != PFAddressPdptIndex) || (MinPml4 != PFAddressPml4Index) || (MinPml5 != PFAddressPml5Index)))\r
+      {\r
         //\r
         // Release the empty Page Directory table if there was no more 4 KByte Page Table entry\r
         // clear the Page directory entry\r
         //\r
-        InsertTailList (&mPagePool, (LIST_ENTRY*)(UINTN)(Pdpt[MinPdpt] & ~mAddressEncMask & gPhyMask));\r
+        InsertTailList (&mPagePool, (LIST_ENTRY *)(UINTN)(Pdpt[MinPdpt] & ~mAddressEncMask & gPhyMask));\r
         Pdpt[MinPdpt] = 0;\r
         //\r
         // Go on checking the PML4 table\r
@@ -805,33 +832,37 @@ ReclaimPages (
         MinPdt = (UINTN)-1;\r
         continue;\r
       }\r
+\r
       //\r
       // Update the sub-entries filed in PDPT entry and exit\r
       //\r
       SetSubEntriesNum (Pdpt + MinPdpt, (SubEntriesNum - 1) & 0x1FF);\r
       break;\r
     }\r
+\r
     if (MinPdpt != (UINTN)-1) {\r
       //\r
       // One 2MB Page Table is released or Page Directory table is released, check the PML4 entry\r
       //\r
       SubEntriesNum = GetSubEntriesNum (Pml4 + MinPml4);\r
-      if (SubEntriesNum == 0 && (MinPml4 != PFAddressPml4Index || MinPml5 != PFAddressPml5Index)) {\r
+      if ((SubEntriesNum == 0) && ((MinPml4 != PFAddressPml4Index) || (MinPml5 != PFAddressPml5Index))) {\r
         //\r
         // Release the empty PML4 table if there was no more 1G KByte Page Table entry\r
         // clear the Page directory entry\r
         //\r
-        InsertTailList (&mPagePool, (LIST_ENTRY*)(UINTN)(Pml4[MinPml4] & ~mAddressEncMask & gPhyMask));\r
+        InsertTailList (&mPagePool, (LIST_ENTRY *)(UINTN)(Pml4[MinPml4] & ~mAddressEncMask & gPhyMask));\r
         Pml4[MinPml4] = 0;\r
-        MinPdpt = (UINTN)-1;\r
+        MinPdpt       = (UINTN)-1;\r
         continue;\r
       }\r
+\r
       //\r
       // Update the sub-entries filed in PML4 entry and exit\r
       //\r
       SetSubEntriesNum (Pml4 + MinPml4, (SubEntriesNum - 1) & 0x1FF);\r
       break;\r
     }\r
+\r
     //\r
     // PLM4 table has been released before, exit it\r
     //\r
@@ -850,7 +881,7 @@ AllocPage (
   VOID\r
   )\r
 {\r
-  UINT64                            RetVal;\r
+  UINT64  RetVal;\r
 \r
   if (IsListEmpty (&mPagePool)) {\r
     //\r
@@ -867,7 +898,7 @@ AllocPage (
   //\r
   // Clean this page and return\r
   //\r
-  ZeroMem ((VOID*)(UINTN)RetVal, EFI_PAGE_SIZE);\r
+  ZeroMem ((VOID *)(UINTN)RetVal, EFI_PAGE_SIZE);\r
   return RetVal;\r
 }\r
 \r
@@ -880,78 +911,81 @@ SmiDefaultPFHandler (
   VOID\r
   )\r
 {\r
-  UINT64                            *PageTable;\r
-  UINT64                            *PageTableTop;\r
-  UINT64                            PFAddress;\r
-  UINTN                             StartBit;\r
-  UINTN                             EndBit;\r
-  UINT64                            PTIndex;\r
-  UINTN                             Index;\r
-  SMM_PAGE_SIZE_TYPE                PageSize;\r
-  UINTN                             NumOfPages;\r
-  UINTN                             PageAttribute;\r
-  EFI_STATUS                        Status;\r
-  UINT64                            *UpperEntry;\r
-  BOOLEAN                           Enable5LevelPaging;\r
-  IA32_CR4                          Cr4;\r
+  UINT64              *PageTable;\r
+  UINT64              *PageTableTop;\r
+  UINT64              PFAddress;\r
+  UINTN               StartBit;\r
+  UINTN               EndBit;\r
+  UINT64              PTIndex;\r
+  UINTN               Index;\r
+  SMM_PAGE_SIZE_TYPE  PageSize;\r
+  UINTN               NumOfPages;\r
+  UINTN               PageAttribute;\r
+  EFI_STATUS          Status;\r
+  UINT64              *UpperEntry;\r
+  BOOLEAN             Enable5LevelPaging;\r
+  IA32_CR4            Cr4;\r
 \r
   //\r
   // Set default SMM page attribute\r
   //\r
-  PageSize = SmmPageSize2M;\r
-  NumOfPages = 1;\r
+  PageSize      = SmmPageSize2M;\r
+  NumOfPages    = 1;\r
   PageAttribute = 0;\r
 \r
-  EndBit = 0;\r
-  PageTableTop = (UINT64*)(AsmReadCr3 () & gPhyMask);\r
-  PFAddress = AsmReadCr2 ();\r
+  EndBit       = 0;\r
+  PageTableTop = (UINT64 *)(AsmReadCr3 () & gPhyMask);\r
+  PFAddress    = AsmReadCr2 ();\r
 \r
-  Cr4.UintN = AsmReadCr4 ();\r
-  Enable5LevelPaging = (BOOLEAN) (Cr4.Bits.LA57 != 0);\r
+  Cr4.UintN          = AsmReadCr4 ();\r
+  Enable5LevelPaging = (BOOLEAN)(Cr4.Bits.LA57 != 0);\r
 \r
   Status = GetPlatformPageTableAttribute (PFAddress, &PageSize, &NumOfPages, &PageAttribute);\r
   //\r
   // If platform not support page table attribute, set default SMM page attribute\r
   //\r
   if (Status != EFI_SUCCESS) {\r
-    PageSize = SmmPageSize2M;\r
-    NumOfPages = 1;\r
+    PageSize      = SmmPageSize2M;\r
+    NumOfPages    = 1;\r
     PageAttribute = 0;\r
   }\r
+\r
   if (PageSize >= MaxSmmPageSizeType) {\r
     PageSize = SmmPageSize2M;\r
   }\r
+\r
   if (NumOfPages > 512) {\r
     NumOfPages = 512;\r
   }\r
 \r
   switch (PageSize) {\r
-  case SmmPageSize4K:\r
-    //\r
-    // BIT12 to BIT20 is Page Table index\r
-    //\r
-    EndBit = 12;\r
-    break;\r
-  case SmmPageSize2M:\r
-    //\r
-    // BIT21 to BIT29 is Page Directory index\r
-    //\r
-    EndBit = 21;\r
-    PageAttribute |= (UINTN)IA32_PG_PS;\r
-    break;\r
-  case SmmPageSize1G:\r
-    if (!m1GPageTableSupport) {\r
-      DEBUG ((DEBUG_ERROR, "1-GByte pages is not supported!"));\r
+    case SmmPageSize4K:\r
+      //\r
+      // BIT12 to BIT20 is Page Table index\r
+      //\r
+      EndBit = 12;\r
+      break;\r
+    case SmmPageSize2M:\r
+      //\r
+      // BIT21 to BIT29 is Page Directory index\r
+      //\r
+      EndBit         = 21;\r
+      PageAttribute |= (UINTN)IA32_PG_PS;\r
+      break;\r
+    case SmmPageSize1G:\r
+      if (!m1GPageTableSupport) {\r
+        DEBUG ((DEBUG_ERROR, "1-GByte pages is not supported!"));\r
+        ASSERT (FALSE);\r
+      }\r
+\r
+      //\r
+      // BIT30 to BIT38 is Page Directory Pointer Table index\r
+      //\r
+      EndBit         = 30;\r
+      PageAttribute |= (UINTN)IA32_PG_PS;\r
+      break;\r
+    default:\r
       ASSERT (FALSE);\r
-    }\r
-    //\r
-    // BIT30 to BIT38 is Page Directory Pointer Table index\r
-    //\r
-    EndBit = 30;\r
-    PageAttribute |= (UINTN)IA32_PG_PS;\r
-    break;\r
-  default:\r
-    ASSERT (FALSE);\r
   }\r
 \r
   //\r
@@ -977,13 +1011,14 @@ SmiDefaultPFHandler (
         //\r
         UpperEntry = PageTable + PTIndex;\r
       }\r
+\r
       //\r
       // BIT9 to BIT11 of entry is used to save access record,\r
       // initialize value is 7\r
       //\r
       PageTable[PTIndex] |= (UINT64)IA32_PG_A;\r
       SetAccNum (PageTable + PTIndex, 7);\r
-      PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & gPhyMask);\r
+      PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & gPhyMask);\r
     }\r
 \r
     PTIndex = BitFieldRead64 (PFAddress, StartBit, StartBit + 8);\r
@@ -996,6 +1031,7 @@ SmiDefaultPFHandler (
       DEBUG ((DEBUG_ERROR, "New page table overlapped with old page table!\n"));\r
       ASSERT (FALSE);\r
     }\r
+\r
     //\r
     // Fill the new entry\r
     //\r
@@ -1004,6 +1040,7 @@ SmiDefaultPFHandler (
     if (UpperEntry != NULL) {\r
       SetSubEntriesNum (UpperEntry, (GetSubEntriesNum (UpperEntry) + 1) & 0x1FF);\r
     }\r
+\r
     //\r
     // Get the next page address if we need to create more page tables\r
     //\r
@@ -1022,14 +1059,14 @@ SmiDefaultPFHandler (
 VOID\r
 EFIAPI\r
 SmiPFHandler (\r
-  IN EFI_EXCEPTION_TYPE   InterruptType,\r
-  IN EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN EFI_EXCEPTION_TYPE  InterruptType,\r
+  IN EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
-  UINTN             PFAddress;\r
-  UINTN             GuardPageAddress;\r
-  UINTN             ShadowStackGuardPageAddress;\r
-  UINTN             CpuIndex;\r
+  UINTN  PFAddress;\r
+  UINTN  GuardPageAddress;\r
+  UINTN  ShadowStackGuardPageAddress;\r
+  UINTN  CpuIndex;\r
 \r
   ASSERT (InterruptType == EXCEPT_IA32_PAGE_FAULT);\r
 \r
@@ -1049,31 +1086,34 @@ SmiPFHandler (
   // or SMM page protection violation.\r
   //\r
   if ((PFAddress >= mCpuHotPlugData.SmrrBase) &&\r
-      (PFAddress < (mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize))) {\r
+      (PFAddress < (mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize)))\r
+  {\r
     DumpCpuContext (InterruptType, SystemContext);\r
-    CpuIndex = GetCpuIndex ();\r
-    GuardPageAddress = (mSmmStackArrayBase + EFI_PAGE_SIZE + CpuIndex * (mSmmStackSize + mSmmShadowStackSize));\r
+    CpuIndex                    = GetCpuIndex ();\r
+    GuardPageAddress            = (mSmmStackArrayBase + EFI_PAGE_SIZE + CpuIndex * (mSmmStackSize + mSmmShadowStackSize));\r
     ShadowStackGuardPageAddress = (mSmmStackArrayBase + mSmmStackSize + EFI_PAGE_SIZE + CpuIndex * (mSmmStackSize + mSmmShadowStackSize));\r
     if ((FeaturePcdGet (PcdCpuSmmStackGuard)) &&\r
         (PFAddress >= GuardPageAddress) &&\r
-        (PFAddress < (GuardPageAddress + EFI_PAGE_SIZE))) {\r
+        (PFAddress < (GuardPageAddress + EFI_PAGE_SIZE)))\r
+    {\r
       DEBUG ((DEBUG_ERROR, "SMM stack overflow!\n"));\r
     } else if ((FeaturePcdGet (PcdCpuSmmStackGuard)) &&\r
-        (mSmmShadowStackSize > 0) &&\r
-        (PFAddress >= ShadowStackGuardPageAddress) &&\r
-        (PFAddress < (ShadowStackGuardPageAddress + EFI_PAGE_SIZE))) {\r
+               (mSmmShadowStackSize > 0) &&\r
+               (PFAddress >= ShadowStackGuardPageAddress) &&\r
+               (PFAddress < (ShadowStackGuardPageAddress + EFI_PAGE_SIZE)))\r
+    {\r
       DEBUG ((DEBUG_ERROR, "SMM shadow stack overflow!\n"));\r
     } else {\r
       if ((SystemContext.SystemContextX64->ExceptionData & IA32_PF_EC_ID) != 0) {\r
         DEBUG ((DEBUG_ERROR, "SMM exception at execution (0x%lx)\n", PFAddress));\r
         DEBUG_CODE (\r
           DumpModuleInfoByIp (*(UINTN *)(UINTN)SystemContext.SystemContextX64->Rsp);\r
-        );\r
+          );\r
       } else {\r
         DEBUG ((DEBUG_ERROR, "SMM exception at access (0x%lx)\n", PFAddress));\r
         DEBUG_CODE (\r
           DumpModuleInfoByIp ((UINTN)SystemContext.SystemContextX64->Rip);\r
-        );\r
+          );\r
       }\r
 \r
       if (HEAP_GUARD_NONSTOP_MODE) {\r
@@ -1081,6 +1121,7 @@ SmiPFHandler (
         goto Exit;\r
       }\r
     }\r
+\r
     CpuDeadLoop ();\r
     goto Exit;\r
   }\r
@@ -1089,13 +1130,14 @@ SmiPFHandler (
   // If a page fault occurs in non-SMRAM range.\r
   //\r
   if ((PFAddress < mCpuHotPlugData.SmrrBase) ||\r
-      (PFAddress >= mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize)) {\r
+      (PFAddress >= mCpuHotPlugData.SmrrBase + mCpuHotPlugData.SmrrSize))\r
+  {\r
     if ((SystemContext.SystemContextX64->ExceptionData & IA32_PF_EC_ID) != 0) {\r
       DumpCpuContext (InterruptType, SystemContext);\r
       DEBUG ((DEBUG_ERROR, "Code executed on IP(0x%lx) out of SMM range after SMM is locked!\n", PFAddress));\r
       DEBUG_CODE (\r
         DumpModuleInfoByIp (*(UINTN *)(UINTN)SystemContext.SystemContextX64->Rsp);\r
-      );\r
+        );\r
       CpuDeadLoop ();\r
       goto Exit;\r
     }\r
@@ -1103,13 +1145,14 @@ SmiPFHandler (
     //\r
     // If NULL pointer was just accessed\r
     //\r
-    if ((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT1) != 0 &&\r
-        (PFAddress < EFI_PAGE_SIZE)) {\r
+    if (((PcdGet8 (PcdNullPointerDetectionPropertyMask) & BIT1) != 0) &&\r
+        (PFAddress < EFI_PAGE_SIZE))\r
+    {\r
       DumpCpuContext (InterruptType, SystemContext);\r
       DEBUG ((DEBUG_ERROR, "!!! NULL pointer access !!!\n"));\r
       DEBUG_CODE (\r
         DumpModuleInfoByIp ((UINTN)SystemContext.SystemContextX64->Rip);\r
-      );\r
+        );\r
 \r
       if (NULL_DETECTION_NONSTOP_MODE) {\r
         GuardPagePFHandler (SystemContext.SystemContextX64->ExceptionData);\r
@@ -1125,7 +1168,7 @@ SmiPFHandler (
       DEBUG ((DEBUG_ERROR, "Access SMM communication forbidden address (0x%lx)!\n", PFAddress));\r
       DEBUG_CODE (\r
         DumpModuleInfoByIp ((UINTN)SystemContext.SystemContextX64->Rip);\r
-      );\r
+        );\r
       CpuDeadLoop ();\r
       goto Exit;\r
     }\r
@@ -1152,20 +1195,20 @@ SetPageTableAttributes (
   VOID\r
   )\r
 {\r
-  UINTN                 Index2;\r
-  UINTN                 Index3;\r
-  UINTN                 Index4;\r
-  UINTN                 Index5;\r
-  UINT64                *L1PageTable;\r
-  UINT64                *L2PageTable;\r
-  UINT64                *L3PageTable;\r
-  UINT64                *L4PageTable;\r
-  UINT64                *L5PageTable;\r
-  UINTN                 PageTableBase;\r
-  BOOLEAN               IsSplitted;\r
-  BOOLEAN               PageTableSplitted;\r
-  BOOLEAN               CetEnabled;\r
-  BOOLEAN               Enable5LevelPaging;\r
+  UINTN    Index2;\r
+  UINTN    Index3;\r
+  UINTN    Index4;\r
+  UINTN    Index5;\r
+  UINT64   *L1PageTable;\r
+  UINT64   *L2PageTable;\r
+  UINT64   *L3PageTable;\r
+  UINT64   *L4PageTable;\r
+  UINT64   *L5PageTable;\r
+  UINTN    PageTableBase;\r
+  BOOLEAN  IsSplitted;\r
+  BOOLEAN  PageTableSplitted;\r
+  BOOLEAN  CetEnabled;\r
+  BOOLEAN  Enable5LevelPaging;\r
 \r
   //\r
   // Don't mark page table memory as read-only if\r
@@ -1177,18 +1220,21 @@ SetPageTableAttributes (
   //\r
   if (!mCpuSmmRestrictedMemoryAccess ||\r
       ((PcdGet8 (PcdHeapGuardPropertyMask) & (BIT3 | BIT2)) != 0) ||\r
-      FeaturePcdGet (PcdCpuSmmProfileEnable)) {\r
+      FeaturePcdGet (PcdCpuSmmProfileEnable))\r
+  {\r
     //\r
     // Restriction on access to non-SMRAM memory and heap guard could not be enabled at the same time.\r
     //\r
-    ASSERT (!(mCpuSmmRestrictedMemoryAccess &&\r
-              (PcdGet8 (PcdHeapGuardPropertyMask) & (BIT3 | BIT2)) != 0));\r
+    ASSERT (\r
+      !(mCpuSmmRestrictedMemoryAccess &&\r
+        (PcdGet8 (PcdHeapGuardPropertyMask) & (BIT3 | BIT2)) != 0)\r
+      );\r
 \r
     //\r
     // Restriction on access to non-SMRAM memory and SMM profile could not be enabled at the same time.\r
     //\r
     ASSERT (!(mCpuSmmRestrictedMemoryAccess && FeaturePcdGet (PcdCpuSmmProfileEnable)));\r
-    return ;\r
+    return;\r
   }\r
 \r
   DEBUG ((DEBUG_INFO, "SetPageTableAttributes\n"));\r
@@ -1197,19 +1243,20 @@ SetPageTableAttributes (
   // Disable write protection, because we need mark page table to be write protected.\r
   // We need *write* page table memory, to mark itself to be *read only*.\r
   //\r
-  CetEnabled = ((AsmReadCr4() & CR4_CET_ENABLE) != 0) ? TRUE : FALSE;\r
+  CetEnabled = ((AsmReadCr4 () & CR4_CET_ENABLE) != 0) ? TRUE : FALSE;\r
   if (CetEnabled) {\r
     //\r
     // CET must be disabled if WP is disabled.\r
     //\r
-    DisableCet();\r
+    DisableCet ();\r
   }\r
-  AsmWriteCr0 (AsmReadCr0() & ~CR0_WP);\r
+\r
+  AsmWriteCr0 (AsmReadCr0 () & ~CR0_WP);\r
 \r
   do {\r
     DEBUG ((DEBUG_INFO, "Start...\n"));\r
     PageTableSplitted = FALSE;\r
-    L5PageTable = NULL;\r
+    L5PageTable       = NULL;\r
 \r
     GetPageTable (&PageTableBase, &Enable5LevelPaging);\r
 \r
@@ -1219,7 +1266,7 @@ SetPageTableAttributes (
       PageTableSplitted = (PageTableSplitted || IsSplitted);\r
     }\r
 \r
-    for (Index5 = 0; Index5 < (Enable5LevelPaging ? SIZE_4KB/sizeof(UINT64) : 1); Index5++) {\r
+    for (Index5 = 0; Index5 < (Enable5LevelPaging ? SIZE_4KB/sizeof (UINT64) : 1); Index5++) {\r
       if (Enable5LevelPaging) {\r
         L4PageTable = (UINT64 *)(UINTN)(L5PageTable[Index5] & ~mAddressEncMask & PAGING_4K_ADDRESS_MASK_64);\r
         if (L4PageTable == NULL) {\r
@@ -1228,10 +1275,11 @@ SetPageTableAttributes (
       } else {\r
         L4PageTable = (UINT64 *)PageTableBase;\r
       }\r
+\r
       SmmSetMemoryAttributesEx ((EFI_PHYSICAL_ADDRESS)(UINTN)L4PageTable, SIZE_4KB, EFI_MEMORY_RO, &IsSplitted);\r
       PageTableSplitted = (PageTableSplitted || IsSplitted);\r
 \r
-      for (Index4 = 0; Index4 < SIZE_4KB/sizeof(UINT64); Index4++) {\r
+      for (Index4 = 0; Index4 < SIZE_4KB/sizeof (UINT64); Index4++) {\r
         L3PageTable = (UINT64 *)(UINTN)(L4PageTable[Index4] & ~mAddressEncMask & PAGING_4K_ADDRESS_MASK_64);\r
         if (L3PageTable == NULL) {\r
           continue;\r
@@ -1240,11 +1288,12 @@ SetPageTableAttributes (
         SmmSetMemoryAttributesEx ((EFI_PHYSICAL_ADDRESS)(UINTN)L3PageTable, SIZE_4KB, EFI_MEMORY_RO, &IsSplitted);\r
         PageTableSplitted = (PageTableSplitted || IsSplitted);\r
 \r
-        for (Index3 = 0; Index3 < SIZE_4KB/sizeof(UINT64); Index3++) {\r
+        for (Index3 = 0; Index3 < SIZE_4KB/sizeof (UINT64); Index3++) {\r
           if ((L3PageTable[Index3] & IA32_PG_PS) != 0) {\r
             // 1G\r
             continue;\r
           }\r
+\r
           L2PageTable = (UINT64 *)(UINTN)(L3PageTable[Index3] & ~mAddressEncMask & PAGING_4K_ADDRESS_MASK_64);\r
           if (L2PageTable == NULL) {\r
             continue;\r
@@ -1253,15 +1302,17 @@ SetPageTableAttributes (
           SmmSetMemoryAttributesEx ((EFI_PHYSICAL_ADDRESS)(UINTN)L2PageTable, SIZE_4KB, EFI_MEMORY_RO, &IsSplitted);\r
           PageTableSplitted = (PageTableSplitted || IsSplitted);\r
 \r
-          for (Index2 = 0; Index2 < SIZE_4KB/sizeof(UINT64); Index2++) {\r
+          for (Index2 = 0; Index2 < SIZE_4KB/sizeof (UINT64); Index2++) {\r
             if ((L2PageTable[Index2] & IA32_PG_PS) != 0) {\r
               // 2M\r
               continue;\r
             }\r
+\r
             L1PageTable = (UINT64 *)(UINTN)(L2PageTable[Index2] & ~mAddressEncMask & PAGING_4K_ADDRESS_MASK_64);\r
             if (L1PageTable == NULL) {\r
               continue;\r
             }\r
+\r
             SmmSetMemoryAttributesEx ((EFI_PHYSICAL_ADDRESS)(UINTN)L1PageTable, SIZE_4KB, EFI_MEMORY_RO, &IsSplitted);\r
             PageTableSplitted = (PageTableSplitted || IsSplitted);\r
           }\r
@@ -1273,15 +1324,15 @@ SetPageTableAttributes (
   //\r
   // Enable write protection, after page table updated.\r
   //\r
-  AsmWriteCr0 (AsmReadCr0() | CR0_WP);\r
+  AsmWriteCr0 (AsmReadCr0 () | CR0_WP);\r
   if (CetEnabled) {\r
     //\r
     // re-enable CET.\r
     //\r
-    EnableCet();\r
+    EnableCet ();\r
   }\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
index 8c9de1fdae70fa4df6ad275cb77bf25ba192ed5c..dafbc3390e2c68203ac6098da0bd94cc5443b4f5 100644 (file)
@@ -9,8 +9,8 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 \r
 #include "PiSmmCpuDxeSmm.h"\r
 \r
-X86_ASSEMBLY_PATCH_LABEL gPatchSmmRelocationOriginalAddressPtr32;\r
-X86_ASSEMBLY_PATCH_LABEL gPatchRebasedFlagAddr32;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatchSmmRelocationOriginalAddressPtr32;\r
+X86_ASSEMBLY_PATCH_LABEL  gPatchRebasedFlagAddr32;\r
 \r
 UINTN             mSmmRelocationOriginalAddress;\r
 volatile BOOLEAN  *mRebasedFlag;\r
@@ -42,14 +42,14 @@ SemaphoreHook (
   SMRAM_SAVE_STATE_MAP  *CpuState;\r
   UINTN                 TempValue;\r
 \r
-  mRebasedFlag       = RebasedFlag;\r
+  mRebasedFlag = RebasedFlag;\r
   PatchInstructionX86 (\r
     gPatchRebasedFlagAddr32,\r
     (UINT32)(UINTN)mRebasedFlag,\r
     4\r
     );\r
 \r
-  CpuState = (SMRAM_SAVE_STATE_MAP *)(UINTN)(SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET);\r
+  CpuState                      = (SMRAM_SAVE_STATE_MAP *)(UINTN)(SMM_DEFAULT_SMBASE + SMRAM_SAVE_STATE_MAP_OFFSET);\r
   mSmmRelocationOriginalAddress = HookReturnFromSmm (\r
                                     CpuIndex,\r
                                     CpuState,\r
index ce7afce6d4dafc8f07bcf32331fb72e6ff8ec795..00a284c369dd74049c5dc66a070b39b333d10cf2 100644 (file)
@@ -8,18 +8,18 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 \r
 #include "PiSmmCpuDxeSmm.h"\r
 \r
-EFI_PHYSICAL_ADDRESS                mGdtBuffer;\r
-UINTN                               mGdtBufferSize;\r
+EFI_PHYSICAL_ADDRESS  mGdtBuffer;\r
+UINTN                 mGdtBufferSize;\r
 \r
-extern BOOLEAN mCetSupported;\r
-extern UINTN mSmmShadowStackSize;\r
+extern BOOLEAN  mCetSupported;\r
+extern UINTN    mSmmShadowStackSize;\r
 \r
-X86_ASSEMBLY_PATCH_LABEL mPatchCetPl0Ssp;\r
-X86_ASSEMBLY_PATCH_LABEL mPatchCetInterruptSsp;\r
-X86_ASSEMBLY_PATCH_LABEL mPatchCetInterruptSspTable;\r
-UINT32 mCetPl0Ssp;\r
-UINT32 mCetInterruptSsp;\r
-UINT32 mCetInterruptSspTable;\r
+X86_ASSEMBLY_PATCH_LABEL  mPatchCetPl0Ssp;\r
+X86_ASSEMBLY_PATCH_LABEL  mPatchCetInterruptSsp;\r
+X86_ASSEMBLY_PATCH_LABEL  mPatchCetInterruptSspTable;\r
+UINT32                    mCetPl0Ssp;\r
+UINT32                    mCetInterruptSsp;\r
+UINT32                    mCetInterruptSspTable;\r
 \r
 UINTN  mSmmInterruptSspTables;\r
 \r
@@ -33,14 +33,14 @@ UINTN  mSmmInterruptSspTables;
 VOID\r
 EFIAPI\r
 InitializeIdtIst (\r
-  IN EFI_EXCEPTION_TYPE            ExceptionType,\r
-  IN UINT8                         Ist\r
+  IN EFI_EXCEPTION_TYPE  ExceptionType,\r
+  IN UINT8               Ist\r
   )\r
 {\r
   IA32_IDT_GATE_DESCRIPTOR  *IdtGate;\r
 \r
-  IdtGate = (IA32_IDT_GATE_DESCRIPTOR *)gcSmiIdtr.Base;\r
-  IdtGate += ExceptionType;\r
+  IdtGate                  = (IA32_IDT_GATE_DESCRIPTOR *)gcSmiIdtr.Base;\r
+  IdtGate                 += ExceptionType;\r
   IdtGate->Bits.Reserved_0 = Ist;\r
 }\r
 \r
@@ -59,34 +59,34 @@ InitGdt (
   OUT UINTN  *GdtStepSize\r
   )\r
 {\r
-  UINTN                     Index;\r
-  IA32_SEGMENT_DESCRIPTOR   *GdtDescriptor;\r
-  UINTN                     TssBase;\r
-  UINTN                     GdtTssTableSize;\r
-  UINT8                     *GdtTssTables;\r
-  UINTN                     GdtTableStepSize;\r
+  UINTN                    Index;\r
+  IA32_SEGMENT_DESCRIPTOR  *GdtDescriptor;\r
+  UINTN                    TssBase;\r
+  UINTN                    GdtTssTableSize;\r
+  UINT8                    *GdtTssTables;\r
+  UINTN                    GdtTableStepSize;\r
 \r
   //\r
   // For X64 SMM, we allocate separate GDT/TSS for each CPUs to avoid TSS load contention\r
   // on each SMI entry.\r
   //\r
   GdtTssTableSize = (gcSmiGdtr.Limit + 1 + TSS_SIZE + 7) & ~7; // 8 bytes aligned\r
-  mGdtBufferSize = GdtTssTableSize * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
-  GdtTssTables = (UINT8*)AllocateCodePages (EFI_SIZE_TO_PAGES (mGdtBufferSize));\r
+  mGdtBufferSize  = GdtTssTableSize * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus;\r
+  GdtTssTables    = (UINT8 *)AllocateCodePages (EFI_SIZE_TO_PAGES (mGdtBufferSize));\r
   ASSERT (GdtTssTables != NULL);\r
-  mGdtBuffer = (UINTN)GdtTssTables;\r
+  mGdtBuffer       = (UINTN)GdtTssTables;\r
   GdtTableStepSize = GdtTssTableSize;\r
 \r
   for (Index = 0; Index < gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus; Index++) {\r
-    CopyMem (GdtTssTables + GdtTableStepSize * Index, (VOID*)(UINTN)gcSmiGdtr.Base, gcSmiGdtr.Limit + 1 + TSS_SIZE);\r
+    CopyMem (GdtTssTables + GdtTableStepSize * Index, (VOID *)(UINTN)gcSmiGdtr.Base, gcSmiGdtr.Limit + 1 + TSS_SIZE);\r
 \r
     //\r
     // Fixup TSS descriptors\r
     //\r
-    TssBase = (UINTN)(GdtTssTables + GdtTableStepSize * Index + gcSmiGdtr.Limit + 1);\r
-    GdtDescriptor = (IA32_SEGMENT_DESCRIPTOR *)(TssBase) - 2;\r
-    GdtDescriptor->Bits.BaseLow = (UINT16)(UINTN)TssBase;\r
-    GdtDescriptor->Bits.BaseMid = (UINT8)((UINTN)TssBase >> 16);\r
+    TssBase                      = (UINTN)(GdtTssTables + GdtTableStepSize * Index + gcSmiGdtr.Limit + 1);\r
+    GdtDescriptor                = (IA32_SEGMENT_DESCRIPTOR *)(TssBase) - 2;\r
+    GdtDescriptor->Bits.BaseLow  = (UINT16)(UINTN)TssBase;\r
+    GdtDescriptor->Bits.BaseMid  = (UINT8)((UINTN)TssBase >> 16);\r
     GdtDescriptor->Bits.BaseHigh = (UINT8)((UINTN)TssBase >> 24);\r
 \r
     if ((FeaturePcdGet (PcdCpuSmmStackGuard)) || ((PcdGet32 (PcdControlFlowEnforcementPropertyMask) != 0) && mCetSupported)) {\r
@@ -118,15 +118,17 @@ GetProtectedModeCS (
 \r
   AsmReadGdtr (&GdtrDesc);\r
   GdtEntryCount = (GdtrDesc.Limit + 1) / sizeof (IA32_SEGMENT_DESCRIPTOR);\r
-  GdtEntry = (IA32_SEGMENT_DESCRIPTOR *) GdtrDesc.Base;\r
+  GdtEntry      = (IA32_SEGMENT_DESCRIPTOR *)GdtrDesc.Base;\r
   for (Index = 0; Index < GdtEntryCount; Index++) {\r
     if (GdtEntry->Bits.L == 0) {\r
-      if (GdtEntry->Bits.Type > 8 && GdtEntry->Bits.DB == 1) {\r
+      if ((GdtEntry->Bits.Type > 8) && (GdtEntry->Bits.DB == 1)) {\r
         break;\r
       }\r
     }\r
+\r
     GdtEntry++;\r
   }\r
+\r
   ASSERT (Index != GdtEntryCount);\r
   return Index * 8;\r
 }\r
@@ -171,9 +173,9 @@ InitShadowStack (
   IN VOID   *ShadowStack\r
   )\r
 {\r
-  UINTN       SmmShadowStackSize;\r
-  UINT64      *InterruptSspTable;\r
-  UINT32      InterruptSsp;\r
+  UINTN   SmmShadowStackSize;\r
+  UINT64  *InterruptSspTable;\r
+  UINT32  InterruptSsp;\r
 \r
   if ((PcdGet32 (PcdControlFlowEnforcementPropertyMask) != 0) && mCetSupported) {\r
     SmmShadowStackSize = EFI_PAGES_TO_SIZE (EFI_SIZE_TO_PAGES (PcdGet32 (PcdCpuSmmShadowStackSize)));\r
@@ -188,14 +190,15 @@ InitShadowStack (
       //\r
       SmmShadowStackSize += EFI_PAGES_TO_SIZE (1);\r
     }\r
-    mCetPl0Ssp = (UINT32)((UINTN)ShadowStack + SmmShadowStackSize - sizeof(UINT64));\r
+\r
+    mCetPl0Ssp = (UINT32)((UINTN)ShadowStack + SmmShadowStackSize - sizeof (UINT64));\r
     PatchInstructionX86 (mPatchCetPl0Ssp, mCetPl0Ssp, 4);\r
     DEBUG ((DEBUG_INFO, "mCetPl0Ssp - 0x%x\n", mCetPl0Ssp));\r
     DEBUG ((DEBUG_INFO, "ShadowStack - 0x%x\n", ShadowStack));\r
     DEBUG ((DEBUG_INFO, "  SmmShadowStackSize - 0x%x\n", SmmShadowStackSize));\r
 \r
     if (mSmmInterruptSspTables == 0) {\r
-      mSmmInterruptSspTables = (UINTN)AllocateZeroPool(sizeof(UINT64) * 8 * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus);\r
+      mSmmInterruptSspTables = (UINTN)AllocateZeroPool (sizeof (UINT64) * 8 * gSmmCpuPrivate->SmmCoreEntryContext.NumberOfCpus);\r
       ASSERT (mSmmInterruptSspTables != 0);\r
       DEBUG ((DEBUG_INFO, "mSmmInterruptSspTables - 0x%x\n", mSmmInterruptSspTables));\r
     }\r
@@ -209,17 +212,16 @@ InitShadowStack (
     // Please refer to UefiCpuPkg/Library/CpuExceptionHandlerLib/X64 for the full stack frame at runtime.\r
     // According to SDM (ver. 075 June 2021), shadow stack should be 32 bytes aligned.\r
     //\r
-    InterruptSsp = (UINT32)(((UINTN)ShadowStack + EFI_PAGES_TO_SIZE(1) - (sizeof(UINT64) * 4)) & ~0x1f);\r
-    *(UINT64 *)(UINTN)InterruptSsp = (InterruptSsp - sizeof(UINT64) * 4) | 0x2;\r
-    mCetInterruptSsp = InterruptSsp - sizeof(UINT64);\r
+    InterruptSsp                   = (UINT32)(((UINTN)ShadowStack + EFI_PAGES_TO_SIZE (1) - (sizeof (UINT64) * 4)) & ~0x1f);\r
+    *(UINT64 *)(UINTN)InterruptSsp = (InterruptSsp - sizeof (UINT64) * 4) | 0x2;\r
+    mCetInterruptSsp               = InterruptSsp - sizeof (UINT64);\r
 \r
-    mCetInterruptSspTable = (UINT32)(UINTN)(mSmmInterruptSspTables + sizeof(UINT64) * 8 * CpuIndex);\r
-    InterruptSspTable = (UINT64 *)(UINTN)mCetInterruptSspTable;\r
-    InterruptSspTable[1] = mCetInterruptSsp;\r
+    mCetInterruptSspTable = (UINT32)(UINTN)(mSmmInterruptSspTables + sizeof (UINT64) * 8 * CpuIndex);\r
+    InterruptSspTable     = (UINT64 *)(UINTN)mCetInterruptSspTable;\r
+    InterruptSspTable[1]  = mCetInterruptSsp;\r
     PatchInstructionX86 (mPatchCetInterruptSsp, mCetInterruptSsp, 4);\r
     PatchInstructionX86 (mPatchCetInterruptSspTable, mCetInterruptSspTable, 4);\r
     DEBUG ((DEBUG_INFO, "mCetInterruptSsp - 0x%x\n", mCetInterruptSsp));\r
     DEBUG ((DEBUG_INFO, "mCetInterruptSspTable - 0x%x\n", mCetInterruptSspTable));\r
   }\r
 }\r
-\r
index 63bae5a9137cbbff9cf2617b1f5825429a6eb141..cb7a69174530e6bccc2d26707caea2c45034bac2 100644 (file)
@@ -14,17 +14,17 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 //\r
 // Current page index.\r
 //\r
-UINTN                     mPFPageIndex;\r
+UINTN  mPFPageIndex;\r
 \r
 //\r
 // Pool for dynamically creating page table in page fault handler.\r
 //\r
-UINT64                    mPFPageBuffer;\r
+UINT64  mPFPageBuffer;\r
 \r
 //\r
 // Store the uplink information for each page being used.\r
 //\r
-UINT64                    *mPFPageUplink[MAX_PF_PAGE_COUNT];\r
+UINT64  *mPFPageUplink[MAX_PF_PAGE_COUNT];\r
 \r
 /**\r
   Create SMM page table for S3 path.\r
@@ -35,8 +35,8 @@ InitSmmS3Cr3 (
   VOID\r
   )\r
 {\r
-  EFI_PHYSICAL_ADDRESS              Pages;\r
-  UINT64                            *PTEntry;\r
+  EFI_PHYSICAL_ADDRESS  Pages;\r
+  UINT64                *PTEntry;\r
 \r
   //\r
   // Generate PAE page table for the first 4GB memory space\r
@@ -46,7 +46,7 @@ InitSmmS3Cr3 (
   //\r
   // Fill Page-Table-Level4 (PML4) entry\r
   //\r
-  PTEntry = (UINT64*)AllocatePageTableMemory (1);\r
+  PTEntry = (UINT64 *)AllocatePageTableMemory (1);\r
   ASSERT (PTEntry != NULL);\r
   *PTEntry = Pages | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
   ZeroMem (PTEntry + 1, EFI_PAGE_SIZE - sizeof (*PTEntry));\r
@@ -56,7 +56,7 @@ InitSmmS3Cr3 (
   //\r
   mSmmS3ResumeState->SmmS3Cr3 = (UINT32)(UINTN)PTEntry;\r
 \r
-  return ;\r
+  return;\r
 }\r
 \r
 /**\r
@@ -68,7 +68,7 @@ InitPagesForPFHandler (
   VOID\r
   )\r
 {\r
-  VOID          *Address;\r
+  VOID  *Address;\r
 \r
   //\r
   // Pre-Allocate memory for page fault handler\r
@@ -77,9 +77,9 @@ InitPagesForPFHandler (
   Address = AllocatePages (MAX_PF_PAGE_COUNT);\r
   ASSERT (Address != NULL);\r
 \r
-  mPFPageBuffer =  (UINT64)(UINTN) Address;\r
-  mPFPageIndex = 0;\r
-  ZeroMem ((VOID *) (UINTN) mPFPageBuffer, EFI_PAGE_SIZE * MAX_PF_PAGE_COUNT);\r
+  mPFPageBuffer =  (UINT64)(UINTN)Address;\r
+  mPFPageIndex  = 0;\r
+  ZeroMem ((VOID *)(UINTN)mPFPageBuffer, EFI_PAGE_SIZE * MAX_PF_PAGE_COUNT);\r
   ZeroMem (mPFPageUplink, sizeof (mPFPageUplink));\r
 \r
   return;\r
@@ -93,16 +93,16 @@ InitPagesForPFHandler (
 **/\r
 VOID\r
 AcquirePage (\r
-  UINT64          *Uplink\r
+  UINT64  *Uplink\r
   )\r
 {\r
-  UINT64          Address;\r
+  UINT64  Address;\r
 \r
   //\r
   // Get the buffer\r
   //\r
   Address = mPFPageBuffer + EFI_PAGES_TO_SIZE (mPFPageIndex);\r
-  ZeroMem ((VOID *) (UINTN) Address, EFI_PAGE_SIZE);\r
+  ZeroMem ((VOID *)(UINTN)Address, EFI_PAGE_SIZE);\r
 \r
   //\r
   // Cut the previous uplink if it exists and wasn't overwritten\r
@@ -114,7 +114,7 @@ AcquirePage (
   //\r
   // Link & Record the current uplink\r
   //\r
-  *Uplink = Address | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
+  *Uplink                     = Address | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
   mPFPageUplink[mPFPageIndex] = Uplink;\r
 \r
   mPFPageIndex = (mPFPageIndex + 1) % MAX_PF_PAGE_COUNT;\r
@@ -134,26 +134,26 @@ AcquirePage (
 **/\r
 VOID\r
 RestorePageTableAbove4G (\r
-  UINT64        *PageTable,\r
-  UINT64        PFAddress,\r
-  UINTN         CpuIndex,\r
-  UINTN         ErrorCode,\r
-  BOOLEAN       *IsValidPFAddress\r
+  UINT64   *PageTable,\r
+  UINT64   PFAddress,\r
+  UINTN    CpuIndex,\r
+  UINTN    ErrorCode,\r
+  BOOLEAN  *IsValidPFAddress\r
   )\r
 {\r
-  UINTN         PTIndex;\r
-  UINT64        Address;\r
-  BOOLEAN       Nx;\r
-  BOOLEAN       Existed;\r
-  UINTN         Index;\r
-  UINTN         PFIndex;\r
-  IA32_CR4      Cr4;\r
-  BOOLEAN       Enable5LevelPaging;\r
+  UINTN     PTIndex;\r
+  UINT64    Address;\r
+  BOOLEAN   Nx;\r
+  BOOLEAN   Existed;\r
+  UINTN     Index;\r
+  UINTN     PFIndex;\r
+  IA32_CR4  Cr4;\r
+  BOOLEAN   Enable5LevelPaging;\r
 \r
   ASSERT ((PageTable != NULL) && (IsValidPFAddress != NULL));\r
 \r
-  Cr4.UintN = AsmReadCr4 ();\r
-  Enable5LevelPaging = (BOOLEAN) (Cr4.Bits.LA57 == 1);\r
+  Cr4.UintN          = AsmReadCr4 ();\r
+  Enable5LevelPaging = (BOOLEAN)(Cr4.Bits.LA57 == 1);\r
 \r
   //\r
   // If page fault address is 4GB above.\r
@@ -164,26 +164,28 @@ RestorePageTableAbove4G (
   // If it exists in page table but page fault is generated,\r
   // there are 2 possible reasons: 1. present flag is set to 0; 2. instruction fetch in protected memory range.\r
   //\r
-  Existed = FALSE;\r
-  PageTable = (UINT64*)(AsmReadCr3 () & PHYSICAL_ADDRESS_MASK);\r
-  PTIndex = 0;\r
+  Existed   = FALSE;\r
+  PageTable = (UINT64 *)(AsmReadCr3 () & PHYSICAL_ADDRESS_MASK);\r
+  PTIndex   = 0;\r
   if (Enable5LevelPaging) {\r
     PTIndex = BitFieldRead64 (PFAddress, 48, 56);\r
   }\r
+\r
   if ((!Enable5LevelPaging) || ((PageTable[PTIndex] & IA32_PG_P) != 0)) {\r
     // PML5E\r
     if (Enable5LevelPaging) {\r
-      PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
+      PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
     }\r
+\r
     PTIndex = BitFieldRead64 (PFAddress, 39, 47);\r
     if ((PageTable[PTIndex] & IA32_PG_P) != 0) {\r
       // PML4E\r
-      PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
-      PTIndex = BitFieldRead64 (PFAddress, 30, 38);\r
+      PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
+      PTIndex   = BitFieldRead64 (PFAddress, 30, 38);\r
       if ((PageTable[PTIndex] & IA32_PG_P) != 0) {\r
         // PDPTE\r
-        PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
-        PTIndex = BitFieldRead64 (PFAddress, 21, 29);\r
+        PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
+        PTIndex   = BitFieldRead64 (PFAddress, 21, 29);\r
         // PD\r
         if ((PageTable[PTIndex] & IA32_PG_PS) != 0) {\r
           //\r
@@ -197,7 +199,7 @@ RestorePageTableAbove4G (
           //\r
           // 4KB page\r
           //\r
-          PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask& PHYSICAL_ADDRESS_MASK);\r
+          PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask& PHYSICAL_ADDRESS_MASK);\r
           if (PageTable != 0) {\r
             //\r
             // When there is a valid entry to map to 4KB page, need not create a new entry to map 2MB.\r
@@ -217,7 +219,6 @@ RestorePageTableAbove4G (
   // If page entry does not existed in page table at all, create a new entry.\r
   //\r
   if (!Existed) {\r
-\r
     if (IsAddressValid (PFAddress, &Nx)) {\r
       //\r
       // If page fault address above 4GB is in protected range but it causes a page fault exception,\r
@@ -234,19 +235,20 @@ RestorePageTableAbove4G (
     //\r
     // Find the page table entry created just now.\r
     //\r
-    PageTable = (UINT64*)(AsmReadCr3 () & PHYSICAL_ADDRESS_MASK);\r
+    PageTable = (UINT64 *)(AsmReadCr3 () & PHYSICAL_ADDRESS_MASK);\r
     PFAddress = AsmReadCr2 ();\r
     // PML5E\r
     if (Enable5LevelPaging) {\r
-      PTIndex = BitFieldRead64 (PFAddress, 48, 56);\r
-      PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
+      PTIndex   = BitFieldRead64 (PFAddress, 48, 56);\r
+      PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
     }\r
+\r
     // PML4E\r
-    PTIndex = BitFieldRead64 (PFAddress, 39, 47);\r
-    PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
+    PTIndex   = BitFieldRead64 (PFAddress, 39, 47);\r
+    PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
     // PDPTE\r
-    PTIndex = BitFieldRead64 (PFAddress, 30, 38);\r
-    PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
+    PTIndex   = BitFieldRead64 (PFAddress, 30, 38);\r
+    PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
     // PD\r
     PTIndex = BitFieldRead64 (PFAddress, 21, 29);\r
     Address = PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK;\r
@@ -257,18 +259,21 @@ RestorePageTableAbove4G (
       AcquirePage (&PageTable[PTIndex]);\r
 \r
       // PTE\r
-      PageTable = (UINT64*)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
+      PageTable = (UINT64 *)(UINTN)(PageTable[PTIndex] & ~mAddressEncMask & PHYSICAL_ADDRESS_MASK);\r
       for (Index = 0; Index < 512; Index++) {\r
         PageTable[Index] = Address | mAddressEncMask | PAGE_ATTRIBUTE_BITS;\r
         if (!IsAddressValid (Address, &Nx)) {\r
           PageTable[Index] = PageTable[Index] & (INTN)(INT32)(~PAGE_ATTRIBUTE_BITS);\r
         }\r
+\r
         if (Nx && mXdSupported) {\r
           PageTable[Index] = PageTable[Index] | IA32_PG_NX;\r
         }\r
+\r
         if (Address == (PFAddress & PHYSICAL_ADDRESS_MASK & ~((1ull << 12) - 1))) {\r
           PTIndex = Index;\r
         }\r
+\r
         Address += SIZE_4KB;\r
       } // end for PT\r
     } else {\r
@@ -281,6 +286,7 @@ RestorePageTableAbove4G (
         //\r
         PageTable[PTIndex] = PageTable[PTIndex] & (INTN)(INT32)(~PAGE_ATTRIBUTE_BITS);\r
       }\r
+\r
       //\r
       // Set XD bit to 1\r
       //\r
@@ -297,7 +303,7 @@ RestorePageTableAbove4G (
   //\r
   ASSERT (mPFEntryCount[CpuIndex] < MAX_PF_ENTRY_COUNT);\r
   if (mPFEntryCount[CpuIndex] < MAX_PF_ENTRY_COUNT) {\r
-    PFIndex = mPFEntryCount[CpuIndex];\r
+    PFIndex                                = mPFEntryCount[CpuIndex];\r
     mLastPFEntryValue[CpuIndex][PFIndex]   = PageTable[PTIndex];\r
     mLastPFEntryPointer[CpuIndex][PFIndex] = &PageTable[PTIndex];\r
     mPFEntryCount[CpuIndex]++;\r
@@ -326,7 +332,7 @@ RestorePageTableAbove4G (
 **/\r
 VOID\r
 ClearTrapFlag (\r
-  IN OUT EFI_SYSTEM_CONTEXT   SystemContext\r
+  IN OUT EFI_SYSTEM_CONTEXT  SystemContext\r
   )\r
 {\r
   SystemContext.SystemContextX64->Rflags &= (UINTN) ~BIT8;\r
index a857f587ebdaf43fa035a92f48bb6dfe14e2b1fa..80205c9b3e86f38ccd816cd2046cfbd4db4b2c87 100644 (file)
@@ -12,50 +12,50 @@ SPDX-License-Identifier: BSD-2-Clause-Patent
 #pragma pack (1)\r
 \r
 typedef struct _MSR_DS_AREA_STRUCT {\r
-  UINT64  BTSBufferBase;\r
-  UINT64  BTSIndex;\r
-  UINT64  BTSAbsoluteMaximum;\r
-  UINT64  BTSInterruptThreshold;\r
-  UINT64  PEBSBufferBase;\r
-  UINT64  PEBSIndex;\r
-  UINT64  PEBSAbsoluteMaximum;\r
-  UINT64  PEBSInterruptThreshold;\r
-  UINT64  PEBSCounterReset[2];\r
-  UINT64  Reserved;\r
+  UINT64    BTSBufferBase;\r
+  UINT64    BTSIndex;\r
+  UINT64    BTSAbsoluteMaximum;\r
+  UINT64    BTSInterruptThreshold;\r
+  UINT64    PEBSBufferBase;\r
+  UINT64    PEBSIndex;\r
+  UINT64    PEBSAbsoluteMaximum;\r
+  UINT64    PEBSInterruptThreshold;\r
+  UINT64    PEBSCounterReset[2];\r
+  UINT64    Reserved;\r
 } MSR_DS_AREA_STRUCT;\r
 \r
 typedef struct _BRANCH_TRACE_RECORD {\r
-  UINT64  LastBranchFrom;\r
-  UINT64  LastBranchTo;\r
-  UINT64  Rsvd0 : 4;\r
-  UINT64  BranchPredicted : 1;\r
-  UINT64  Rsvd1 : 59;\r
+  UINT64    LastBranchFrom;\r
+  UINT64    LastBranchTo;\r
+  UINT64    Rsvd0           : 4;\r
+  UINT64    BranchPredicted : 1;\r
+  UINT64    Rsvd1           : 59;\r
 } BRANCH_TRACE_RECORD;\r
 \r
 typedef struct _PEBS_RECORD {\r
-  UINT64  Rflags;\r
-  UINT64  LinearIP;\r
-  UINT64  Rax;\r
-  UINT64  Rbx;\r
-  UINT64  Rcx;\r
-  UINT64  Rdx;\r
-  UINT64  Rsi;\r
-  UINT64  Rdi;\r
-  UINT64  Rbp;\r
-  UINT64  Rsp;\r
-  UINT64  R8;\r
-  UINT64  R9;\r
-  UINT64  R10;\r
-  UINT64  R11;\r
-  UINT64  R12;\r
-  UINT64  R13;\r
-  UINT64  R14;\r
-  UINT64  R15;\r
+  UINT64    Rflags;\r
+  UINT64    LinearIP;\r
+  UINT64    Rax;\r
+  UINT64    Rbx;\r
+  UINT64    Rcx;\r
+  UINT64    Rdx;\r
+  UINT64    Rsi;\r
+  UINT64    Rdi;\r
+  UINT64    Rbp;\r
+  UINT64    Rsp;\r
+  UINT64    R8;\r
+  UINT64    R9;\r
+  UINT64    R10;\r
+  UINT64    R11;\r
+  UINT64    R12;\r
+  UINT64    R13;\r
+  UINT64    R14;\r
+  UINT64    R15;\r
 } PEBS_RECORD;\r
 \r
 #pragma pack ()\r
 \r
-#define PHYSICAL_ADDRESS_MASK       ((1ull << 52) - SIZE_4KB)\r
+#define PHYSICAL_ADDRESS_MASK  ((1ull << 52) - SIZE_4KB)\r
 \r
 /**\r
   Update page table to map the memory correctly in order to make the instruction\r
@@ -71,11 +71,11 @@ typedef struct _PEBS_RECORD {
 **/\r
 VOID\r
 RestorePageTableAbove4G (\r
-  UINT64        *PageTable,\r
-  UINT64        PFAddress,\r
-  UINTN         CpuIndex,\r
-  UINTN         ErrorCode,\r
-  BOOLEAN       *IsValidPFAddress\r
+  UINT64   *PageTable,\r
+  UINT64   PFAddress,\r
+  UINTN    CpuIndex,\r
+  UINTN    ErrorCode,\r
+  BOOLEAN  *IsValidPFAddress\r
   );\r
 \r
 /**\r
index ee063a102080a73de7c73de5c4e9083cb89cc603..97adb68138896b41541cc89b224ef59f0944c9b5 100644 (file)
 EFI_STATUS\r
 EFIAPI\r
 FindImageBase (\r
-  IN  EFI_FIRMWARE_VOLUME_HEADER       *FirmwareVolumePtr,\r
-  IN  EFI_FV_FILETYPE                  FileType,\r
-  OUT EFI_PHYSICAL_ADDRESS             *CoreImageBase\r
+  IN  EFI_FIRMWARE_VOLUME_HEADER  *FirmwareVolumePtr,\r
+  IN  EFI_FV_FILETYPE             FileType,\r
+  OUT EFI_PHYSICAL_ADDRESS        *CoreImageBase\r
   )\r
 {\r
-  EFI_PHYSICAL_ADDRESS        CurrentAddress;\r
-  EFI_PHYSICAL_ADDRESS        EndOfFirmwareVolume;\r
-  EFI_FFS_FILE_HEADER         *File;\r
-  UINT32                      Size;\r
-  EFI_PHYSICAL_ADDRESS        EndOfFile;\r
-  EFI_COMMON_SECTION_HEADER   *Section;\r
-  EFI_PHYSICAL_ADDRESS        EndOfSection;\r
+  EFI_PHYSICAL_ADDRESS       CurrentAddress;\r
+  EFI_PHYSICAL_ADDRESS       EndOfFirmwareVolume;\r
+  EFI_FFS_FILE_HEADER        *File;\r
+  UINT32                     Size;\r
+  EFI_PHYSICAL_ADDRESS       EndOfFile;\r
+  EFI_COMMON_SECTION_HEADER  *Section;\r
+  EFI_PHYSICAL_ADDRESS       EndOfSection;\r
 \r
   *CoreImageBase = 0;\r
 \r
-  CurrentAddress = (EFI_PHYSICAL_ADDRESS)(UINTN) FirmwareVolumePtr;\r
+  CurrentAddress      = (EFI_PHYSICAL_ADDRESS)(UINTN)FirmwareVolumePtr;\r
   EndOfFirmwareVolume = CurrentAddress + FirmwareVolumePtr->FvLength;\r
 \r
   //\r
   // Loop through the FFS files in the Boot Firmware Volume\r
   //\r
   for (EndOfFile = CurrentAddress + FirmwareVolumePtr->HeaderLength; ; ) {\r
-\r
     CurrentAddress = (EndOfFile + 7) & 0xfffffffffffffff8ULL;\r
     if (CurrentAddress > EndOfFirmwareVolume) {\r
       return EFI_NOT_FOUND;\r
     }\r
 \r
-    File = (EFI_FFS_FILE_HEADER*)(UINTN) CurrentAddress;\r
+    File = (EFI_FFS_FILE_HEADER *)(UINTN)CurrentAddress;\r
     if (IS_FFS_FILE2 (File)) {\r
       Size = FFS_FILE2_SIZE (File);\r
       if (Size <= 0x00FFFFFF) {\r
@@ -78,13 +77,14 @@ FindImageBase (
     // Loop through the FFS file sections within the FFS file\r
     //\r
     if (IS_FFS_FILE2 (File)) {\r
-      EndOfSection = (EFI_PHYSICAL_ADDRESS) (UINTN) ((UINT8 *) File + sizeof (EFI_FFS_FILE_HEADER2));\r
+      EndOfSection = (EFI_PHYSICAL_ADDRESS)(UINTN)((UINT8 *)File + sizeof (EFI_FFS_FILE_HEADER2));\r
     } else {\r
-      EndOfSection = (EFI_PHYSICAL_ADDRESS) (UINTN) ((UINT8 *) File + sizeof (EFI_FFS_FILE_HEADER));\r
+      EndOfSection = (EFI_PHYSICAL_ADDRESS)(UINTN)((UINT8 *)File + sizeof (EFI_FFS_FILE_HEADER));\r
     }\r
-    for (;;) {\r
+\r
+    for ( ; ;) {\r
       CurrentAddress = (EndOfSection + 3) & 0xfffffffffffffffcULL;\r
-      Section = (EFI_COMMON_SECTION_HEADER*)(UINTN) CurrentAddress;\r
+      Section        = (EFI_COMMON_SECTION_HEADER *)(UINTN)CurrentAddress;\r
 \r
       if (IS_SECTION2 (Section)) {\r
         Size = SECTION2_SIZE (Section);\r
@@ -106,14 +106,15 @@ FindImageBase (
       //\r
       // Look for executable sections\r
       //\r
-      if (Section->Type == EFI_SECTION_PE32 || Section->Type == EFI_SECTION_TE) {\r
+      if ((Section->Type == EFI_SECTION_PE32) || (Section->Type == EFI_SECTION_TE)) {\r
         if (File->Type == FileType) {\r
           if (IS_SECTION2 (Section)) {\r
-            *CoreImageBase = (PHYSICAL_ADDRESS) (UINTN) ((UINT8 *) Section + sizeof (EFI_COMMON_SECTION_HEADER2));\r
+            *CoreImageBase = (PHYSICAL_ADDRESS)(UINTN)((UINT8 *)Section + sizeof (EFI_COMMON_SECTION_HEADER2));\r
           } else {\r
-            *CoreImageBase = (PHYSICAL_ADDRESS) (UINTN) ((UINT8 *) Section + sizeof (EFI_COMMON_SECTION_HEADER));\r
+            *CoreImageBase = (PHYSICAL_ADDRESS)(UINTN)((UINT8 *)Section + sizeof (EFI_COMMON_SECTION_HEADER));\r
           }\r
         }\r
+\r
         break;\r
       }\r
     }\r
@@ -141,15 +142,15 @@ FindImageBase (
 VOID\r
 EFIAPI\r
 FindAndReportEntryPoints (\r
-  IN  EFI_FIRMWARE_VOLUME_HEADER       *SecCoreFirmwareVolumePtr,\r
-  IN  EFI_FIRMWARE_VOLUME_HEADER       *PeiCoreFirmwareVolumePtr,\r
-  OUT EFI_PEI_CORE_ENTRY_POINT         *PeiCoreEntryPoint\r
+  IN  EFI_FIRMWARE_VOLUME_HEADER  *SecCoreFirmwareVolumePtr,\r
+  IN  EFI_FIRMWARE_VOLUME_HEADER  *PeiCoreFirmwareVolumePtr,\r
+  OUT EFI_PEI_CORE_ENTRY_POINT    *PeiCoreEntryPoint\r
   )\r
 {\r
-  EFI_STATUS                       Status;\r
-  EFI_PHYSICAL_ADDRESS             SecCoreImageBase;\r
-  EFI_PHYSICAL_ADDRESS             PeiCoreImageBase;\r
-  PE_COFF_LOADER_IMAGE_CONTEXT     ImageContext;\r
+  EFI_STATUS                    Status;\r
+  EFI_PHYSICAL_ADDRESS          SecCoreImageBase;\r
+  EFI_PHYSICAL_ADDRESS          PeiCoreImageBase;\r
+  PE_COFF_LOADER_IMAGE_CONTEXT  ImageContext;\r
 \r
   //\r
   // Find SEC Core image base\r
@@ -157,12 +158,12 @@ FindAndReportEntryPoints (
   Status = FindImageBase (SecCoreFirmwareVolumePtr, EFI_FV_FILETYPE_SECURITY_CORE, &SecCoreImageBase);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  ZeroMem ((VOID *) &ImageContext, sizeof (PE_COFF_LOADER_IMAGE_CONTEXT));\r
+  ZeroMem ((VOID *)&ImageContext, sizeof (PE_COFF_LOADER_IMAGE_CONTEXT));\r
   //\r
   // Report SEC Core debug information when remote debug is enabled\r
   //\r
   ImageContext.ImageAddress = SecCoreImageBase;\r
-  ImageContext.PdbPointer = PeCoffLoaderGetPdbPointer ((VOID*) (UINTN) ImageContext.ImageAddress);\r
+  ImageContext.PdbPointer   = PeCoffLoaderGetPdbPointer ((VOID *)(UINTN)ImageContext.ImageAddress);\r
   PeCoffLoaderRelocateImageExtraAction (&ImageContext);\r
 \r
   //\r
@@ -175,13 +176,13 @@ FindAndReportEntryPoints (
   // Report PEI Core debug information when remote debug is enabled\r
   //\r
   ImageContext.ImageAddress = PeiCoreImageBase;\r
-  ImageContext.PdbPointer = PeCoffLoaderGetPdbPointer ((VOID*) (UINTN) ImageContext.ImageAddress);\r
+  ImageContext.PdbPointer   = PeCoffLoaderGetPdbPointer ((VOID *)(UINTN)ImageContext.ImageAddress);\r
   PeCoffLoaderRelocateImageExtraAction (&ImageContext);\r
 \r
   //\r
   // Find PEI Core entry point\r
   //\r
-  Status = PeCoffLoaderGetEntryPoint ((VOID *) (UINTN) PeiCoreImageBase, (VOID**) PeiCoreEntryPoint);\r
+  Status = PeCoffLoaderGetEntryPoint ((VOID *)(UINTN)PeiCoreImageBase, (VOID **)PeiCoreEntryPoint);\r
   if (EFI_ERROR (Status)) {\r
     *PeiCoreEntryPoint = 0;\r
   }\r
index 440140f5654c6c5e2f4969153d7a173ae08d778d..cd2e34017106436a0b00a087805d796e73a49046 100644 (file)
@@ -8,21 +8,21 @@
 \r
 #include "SecMain.h"\r
 \r
-EFI_SEC_PLATFORM_INFORMATION_PPI mSecPlatformInformation = {\r
+EFI_SEC_PLATFORM_INFORMATION_PPI  mSecPlatformInformation = {\r
   SecPlatformInformationBist\r
 };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR mPeiSecPlatformInformation = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPeiSecPlatformInformation = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiSecPlatformInformationPpiGuid,\r
   &mSecPlatformInformation\r
 };\r
 \r
-EFI_SEC_PLATFORM_INFORMATION2_PPI mSecPlatformInformation2 = {\r
+EFI_SEC_PLATFORM_INFORMATION2_PPI  mSecPlatformInformation2 = {\r
   SecPlatformInformation2Bist\r
 };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR mPeiSecPlatformInformation2 = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPeiSecPlatformInformation2 = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiSecPlatformInformation2PpiGuid,\r
   &mSecPlatformInformation2\r
@@ -40,13 +40,13 @@ EFI_PEI_PPI_DESCRIPTOR mPeiSecPlatformInformation2 = {
 **/\r
 EFI_STATUS\r
 GetBistFromHob (\r
-  IN OUT UINT64           *StructureSize,\r
-  IN OUT VOID             *StructureBuffer\r
+  IN OUT UINT64  *StructureSize,\r
+  IN OUT VOID    *StructureBuffer\r
   )\r
 {\r
-  EFI_HOB_GUID_TYPE       *GuidHob;\r
-  VOID                    *DataInHob;\r
-  UINTN                   DataSize;\r
+  EFI_HOB_GUID_TYPE  *GuidHob;\r
+  VOID               *DataInHob;\r
+  UINTN              DataSize;\r
 \r
   GuidHob = GetFirstGuidHob (&gEfiCallerIdGuid);\r
   if (GuidHob == NULL) {\r
@@ -60,12 +60,12 @@ GetBistFromHob (
   //\r
   // return the information from BistHob\r
   //\r
-  if ((*StructureSize) < (UINT64) DataSize) {\r
-    *StructureSize = (UINT64) DataSize;\r
+  if ((*StructureSize) < (UINT64)DataSize) {\r
+    *StructureSize = (UINT64)DataSize;\r
     return EFI_BUFFER_TOO_SMALL;\r
   }\r
 \r
-  *StructureSize = (UINT64) DataSize;\r
+  *StructureSize = (UINT64)DataSize;\r
   CopyMem (StructureBuffer, DataInHob, DataSize);\r
   return EFI_SUCCESS;\r
 }\r
@@ -84,9 +84,9 @@ GetBistFromHob (
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformationBist (\r
-  IN CONST EFI_PEI_SERVICES                  **PeiServices,\r
-  IN OUT UINT64                              *StructureSize,\r
-     OUT EFI_SEC_PLATFORM_INFORMATION_RECORD *PlatformInformationRecord\r
+  IN CONST EFI_PEI_SERVICES                **PeiServices,\r
+  IN OUT UINT64                            *StructureSize,\r
+  OUT EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
   )\r
 {\r
   return GetBistFromHob (StructureSize, PlatformInformationRecord);\r
@@ -107,9 +107,9 @@ SecPlatformInformationBist (
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformation2Bist (\r
-  IN CONST EFI_PEI_SERVICES                   **PeiServices,\r
-  IN OUT UINT64                               *StructureSize,\r
-     OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2\r
+  IN CONST EFI_PEI_SERVICES                 **PeiServices,\r
+  IN OUT UINT64                             *StructureSize,\r
+  OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2  *PlatformInformationRecord2\r
   )\r
 {\r
   return GetBistFromHob (StructureSize, PlatformInformationRecord2);\r
@@ -133,11 +133,11 @@ SecPlatformInformation2Bist (
 **/\r
 EFI_STATUS\r
 GetBistInfoFromPpi (\r
-  IN CONST EFI_PEI_SERVICES     **PeiServices,\r
-  IN CONST EFI_GUID             *Guid,\r
-     OUT EFI_PEI_PPI_DESCRIPTOR **PpiDescriptor,\r
-     OUT VOID                   **BistInformationData,\r
-     OUT UINT64                 *BistInformationSize OPTIONAL\r
+  IN CONST EFI_PEI_SERVICES   **PeiServices,\r
+  IN CONST EFI_GUID           *Guid,\r
+  OUT EFI_PEI_PPI_DESCRIPTOR  **PpiDescriptor,\r
+  OUT VOID                    **BistInformationData,\r
+  OUT UINT64                  *BistInformationSize OPTIONAL\r
   )\r
 {\r
   EFI_STATUS                            Status;\r
@@ -161,15 +161,15 @@ GetBistInfoFromPpi (
     //\r
     InformationSize         = 0;\r
     SecPlatformInformation2 = NULL;\r
-    Status = SecPlatformInformation2Ppi->PlatformInformation2 (\r
-                                           PeiServices,\r
-                                           &InformationSize,\r
-                                           SecPlatformInformation2\r
-                                           );\r
+    Status                  = SecPlatformInformation2Ppi->PlatformInformation2 (\r
+                                                            PeiServices,\r
+                                                            &InformationSize,\r
+                                                            SecPlatformInformation2\r
+                                                            );\r
     if (Status == EFI_BUFFER_TOO_SMALL) {\r
       Status = PeiServicesAllocatePool (\r
-                 (UINTN) InformationSize,\r
-                 (VOID **) &SecPlatformInformation2\r
+                 (UINTN)InformationSize,\r
+                 (VOID **)&SecPlatformInformation2\r
                  );\r
       if (Status == EFI_SUCCESS) {\r
         //\r
@@ -185,6 +185,7 @@ GetBistInfoFromPpi (
           if (BistInformationSize != NULL) {\r
             *BistInformationSize = InformationSize;\r
           }\r
+\r
           return EFI_SUCCESS;\r
         }\r
       }\r
@@ -203,25 +204,25 @@ RepublishSecPlatformInformationPpi (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                            Status;\r
-  CONST EFI_PEI_SERVICES                **PeiServices;\r
-  UINT64                                BistInformationSize;\r
-  VOID                                  *BistInformationData;\r
-  EFI_PEI_PPI_DESCRIPTOR                *SecInformationDescriptor;\r
+  EFI_STATUS              Status;\r
+  CONST EFI_PEI_SERVICES  **PeiServices;\r
+  UINT64                  BistInformationSize;\r
+  VOID                    *BistInformationData;\r
+  EFI_PEI_PPI_DESCRIPTOR  *SecInformationDescriptor;\r
 \r
   PeiServices = GetPeiServicesTablePointer ();\r
-  Status = GetBistInfoFromPpi (\r
-             PeiServices,\r
-             &gEfiSecPlatformInformation2PpiGuid,\r
-             &SecInformationDescriptor,\r
-             &BistInformationData,\r
-             &BistInformationSize\r
-             );\r
+  Status      = GetBistInfoFromPpi (\r
+                  PeiServices,\r
+                  &gEfiSecPlatformInformation2PpiGuid,\r
+                  &SecInformationDescriptor,\r
+                  &BistInformationData,\r
+                  &BistInformationSize\r
+                  );\r
   if (Status == EFI_SUCCESS) {\r
     BuildGuidDataHob (\r
       &gEfiCallerIdGuid,\r
       BistInformationData,\r
-      (UINTN) BistInformationSize\r
+      (UINTN)BistInformationSize\r
       );\r
     //\r
     // The old SecPlatformInformation2 data is on temporary memory.\r
@@ -232,7 +233,9 @@ RepublishSecPlatformInformationPpi (
                SecInformationDescriptor,\r
                &mPeiSecPlatformInformation2\r
                );\r
-  } if (Status == EFI_NOT_FOUND) {\r
+  }\r
+\r
+  if (Status == EFI_NOT_FOUND) {\r
     Status = GetBistInfoFromPpi (\r
                PeiServices,\r
                &gEfiSecPlatformInformationPpiGuid,\r
@@ -244,7 +247,7 @@ RepublishSecPlatformInformationPpi (
       BuildGuidDataHob (\r
         &gEfiCallerIdGuid,\r
         BistInformationData,\r
-        (UINTN) BistInformationSize\r
+        (UINTN)BistInformationSize\r
         );\r
       //\r
       // The old SecPlatformInformation data is on temporary memory.\r
@@ -260,5 +263,5 @@ RepublishSecPlatformInformationPpi (
     }\r
   }\r
 \r
-  ASSERT_EFI_ERROR(Status);\r
+  ASSERT_EFI_ERROR (Status);\r
 }\r
index 2416c4ce56b281ad66626ef95d4bbc6c64d8517e..a7526be9dd6eaf76b09d8fe0db5ee3321501e229 100644 (file)
@@ -8,20 +8,20 @@
 \r
 #include "SecMain.h"\r
 \r
-EFI_PEI_TEMPORARY_RAM_DONE_PPI gSecTemporaryRamDonePpi = {\r
+EFI_PEI_TEMPORARY_RAM_DONE_PPI  gSecTemporaryRamDonePpi = {\r
   SecTemporaryRamDone\r
 };\r
 \r
 EFI_SEC_PLATFORM_INFORMATION_PPI  mSecPlatformInformationPpi = { SecPlatformInformation };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR            mPeiSecPlatformInformationPpi[] = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPeiSecPlatformInformationPpi[] = {\r
   {\r
     //\r
     // SecPerformance PPI notify descriptor.\r
     //\r
     EFI_PEI_PPI_DESCRIPTOR_NOTIFY_CALLBACK,\r
     &gPeiSecPerformancePpiGuid,\r
-    (VOID *) (UINTN) SecPerformancePpiCallBack\r
+    (VOID *)(UINTN)SecPerformancePpiCallBack\r
   },\r
   {\r
     EFI_PEI_PPI_DESCRIPTOR_PPI,\r
@@ -47,12 +47,12 @@ MigrateGdt (
   VOID\r
   )\r
 {\r
-  EFI_STATUS          Status;\r
-  UINTN               GdtBufferSize;\r
-  IA32_DESCRIPTOR     Gdtr;\r
-  VOID                *GdtBuffer;\r
+  EFI_STATUS       Status;\r
+  UINTN            GdtBufferSize;\r
+  IA32_DESCRIPTOR  Gdtr;\r
+  VOID             *GdtBuffer;\r
 \r
-  AsmReadGdtr ((IA32_DESCRIPTOR *) &Gdtr);\r
+  AsmReadGdtr ((IA32_DESCRIPTOR *)&Gdtr);\r
   GdtBufferSize = sizeof (IA32_SEGMENT_DESCRIPTOR) -1 + Gdtr.Limit + 1;\r
 \r
   Status =  PeiServicesAllocatePool (\r
@@ -65,8 +65,8 @@ MigrateGdt (
   }\r
 \r
   GdtBuffer = ALIGN_POINTER (GdtBuffer, sizeof (IA32_SEGMENT_DESCRIPTOR));\r
-  CopyMem (GdtBuffer, (VOID *) Gdtr.Base, Gdtr.Limit + 1);\r
-  Gdtr.Base = (UINTN) GdtBuffer;\r
+  CopyMem (GdtBuffer, (VOID *)Gdtr.Base, Gdtr.Limit + 1);\r
+  Gdtr.Base = (UINTN)GdtBuffer;\r
   AsmWriteGdtr (&Gdtr);\r
 \r
   return EFI_SUCCESS;\r
@@ -90,8 +90,8 @@ UINT64  mIdtEntryTemplate = 0xffff8e000010ffe4ULL;
 VOID\r
 NORETURN\r
 EFIAPI\r
-SecStartupPhase2(\r
-  IN VOID                     *Context\r
+SecStartupPhase2 (\r
+  IN VOID  *Context\r
   );\r
 \r
 /**\r
@@ -114,18 +114,18 @@ SecPerformancePpiCallBack (
   IN VOID                       *Ppi\r
   )\r
 {\r
-  EFI_STATUS                    Status;\r
-  PEI_SEC_PERFORMANCE_PPI       *SecPerf;\r
-  FIRMWARE_SEC_PERFORMANCE      Performance;\r
+  EFI_STATUS                Status;\r
+  PEI_SEC_PERFORMANCE_PPI   *SecPerf;\r
+  FIRMWARE_SEC_PERFORMANCE  Performance;\r
 \r
-  SecPerf = (PEI_SEC_PERFORMANCE_PPI *) Ppi;\r
-  Status = SecPerf->GetPerformance ((CONST EFI_PEI_SERVICES **) PeiServices, SecPerf, &Performance);\r
+  SecPerf = (PEI_SEC_PERFORMANCE_PPI *)Ppi;\r
+  Status  = SecPerf->GetPerformance ((CONST EFI_PEI_SERVICES **)PeiServices, SecPerf, &Performance);\r
   if (!EFI_ERROR (Status)) {\r
     BuildGuidDataHob (\r
       &gEfiFirmwarePerformanceGuid,\r
       &Performance,\r
       sizeof (FIRMWARE_SEC_PERFORMANCE)\r
-    );\r
+      );\r
     DEBUG ((DEBUG_INFO, "FPDT: SEC Performance Hob ResetEnd = %ld\n", Performance.ResetEnd));\r
   }\r
 \r
@@ -147,17 +147,17 @@ VOID
 NORETURN\r
 EFIAPI\r
 SecStartup (\r
-  IN UINT32                   SizeOfRam,\r
-  IN UINT32                   TempRamBase,\r
-  IN VOID                     *BootFirmwareVolume\r
+  IN UINT32  SizeOfRam,\r
+  IN UINT32  TempRamBase,\r
+  IN VOID    *BootFirmwareVolume\r
   )\r
 {\r
-  EFI_SEC_PEI_HAND_OFF        SecCoreData;\r
-  IA32_DESCRIPTOR             IdtDescriptor;\r
-  SEC_IDT_TABLE               IdtTableInStack;\r
-  UINT32                      Index;\r
-  UINT32                      PeiStackSize;\r
-  EFI_STATUS                  Status;\r
+  EFI_SEC_PEI_HAND_OFF  SecCoreData;\r
+  IA32_DESCRIPTOR       IdtDescriptor;\r
+  SEC_IDT_TABLE         IdtTableInStack;\r
+  UINT32                Index;\r
+  UINT32                PeiStackSize;\r
+  EFI_STATUS            Status;\r
 \r
   //\r
   // Report Status Code to indicate entering SEC core\r
@@ -201,11 +201,11 @@ SecStartup (
   // |-------------------|---->  TempRamBase\r
 \r
   IdtTableInStack.PeiService = 0;\r
-  for (Index = 0; Index < SEC_IDT_ENTRY_COUNT; Index ++) {\r
-    CopyMem ((VOID*)&IdtTableInStack.IdtTable[Index], (VOID*)&mIdtEntryTemplate, sizeof (UINT64));\r
+  for (Index = 0; Index < SEC_IDT_ENTRY_COUNT; Index++) {\r
+    CopyMem ((VOID *)&IdtTableInStack.IdtTable[Index], (VOID *)&mIdtEntryTemplate, sizeof (UINT64));\r
   }\r
 \r
-  IdtDescriptor.Base  = (UINTN) &IdtTableInStack.IdtTable;\r
+  IdtDescriptor.Base  = (UINTN)&IdtTableInStack.IdtTable;\r
   IdtDescriptor.Limit = (UINT16)(sizeof (IdtTableInStack.IdtTable) - 1);\r
 \r
   AsmWriteIdtr (&IdtDescriptor);\r
@@ -219,14 +219,14 @@ SecStartup (
   //\r
   // Update the base address and length of Pei temporary memory\r
   //\r
-  SecCoreData.DataSize               = (UINT16) sizeof (EFI_SEC_PEI_HAND_OFF);\r
+  SecCoreData.DataSize               = (UINT16)sizeof (EFI_SEC_PEI_HAND_OFF);\r
   SecCoreData.BootFirmwareVolumeBase = BootFirmwareVolume;\r
-  SecCoreData.BootFirmwareVolumeSize = (UINTN)((EFI_FIRMWARE_VOLUME_HEADER *) BootFirmwareVolume)->FvLength;\r
-  SecCoreData.TemporaryRamBase       = (VOID*)(UINTN) TempRamBase;\r
+  SecCoreData.BootFirmwareVolumeSize = (UINTN)((EFI_FIRMWARE_VOLUME_HEADER *)BootFirmwareVolume)->FvLength;\r
+  SecCoreData.TemporaryRamBase       = (VOID *)(UINTN)TempRamBase;\r
   SecCoreData.TemporaryRamSize       = SizeOfRam;\r
   SecCoreData.PeiTemporaryRamBase    = SecCoreData.TemporaryRamBase;\r
   SecCoreData.PeiTemporaryRamSize    = SizeOfRam - PeiStackSize;\r
-  SecCoreData.StackBase              = (VOID*)(UINTN)(TempRamBase + SecCoreData.PeiTemporaryRamSize);\r
+  SecCoreData.StackBase              = (VOID *)(UINTN)(TempRamBase + SecCoreData.PeiTemporaryRamSize);\r
   SecCoreData.StackSize              = PeiStackSize;\r
 \r
   //\r
@@ -253,18 +253,18 @@ SecStartup (
 VOID\r
 NORETURN\r
 EFIAPI\r
-SecStartupPhase2(\r
-  IN VOID                     *Context\r
+SecStartupPhase2 (\r
+  IN VOID  *Context\r
   )\r
 {\r
-  EFI_SEC_PEI_HAND_OFF        *SecCoreData;\r
-  EFI_PEI_PPI_DESCRIPTOR      *PpiList;\r
-  UINT32                      Index;\r
-  EFI_PEI_PPI_DESCRIPTOR      *AllSecPpiList;\r
-  EFI_PEI_CORE_ENTRY_POINT    PeiCoreEntryPoint;\r
+  EFI_SEC_PEI_HAND_OFF      *SecCoreData;\r
+  EFI_PEI_PPI_DESCRIPTOR    *PpiList;\r
+  UINT32                    Index;\r
+  EFI_PEI_PPI_DESCRIPTOR    *AllSecPpiList;\r
+  EFI_PEI_CORE_ENTRY_POINT  PeiCoreEntryPoint;\r
 \r
   PeiCoreEntryPoint = NULL;\r
-  SecCoreData   = (EFI_SEC_PEI_HAND_OFF *) Context;\r
+  SecCoreData       = (EFI_SEC_PEI_HAND_OFF *)Context;\r
 \r
   //\r
   // Perform platform specific initialization before entering PeiCore.\r
@@ -278,14 +278,15 @@ SecStartupPhase2(
     Index = 0;\r
     do {\r
       if (CompareGuid (PpiList[Index].Guid, &gEfiPeiCoreFvLocationPpiGuid) &&\r
-          (((EFI_PEI_CORE_FV_LOCATION_PPI *) PpiList[Index].Ppi)->PeiCoreFvLocation != 0)\r
-         ) {\r
+          (((EFI_PEI_CORE_FV_LOCATION_PPI *)PpiList[Index].Ppi)->PeiCoreFvLocation != 0)\r
+          )\r
+      {\r
         //\r
         // In this case, SecCore is in BFV but PeiCore is in another FV reported by PPI.\r
         //\r
         FindAndReportEntryPoints (\r
-          (EFI_FIRMWARE_VOLUME_HEADER *) SecCoreData->BootFirmwareVolumeBase,\r
-          (EFI_FIRMWARE_VOLUME_HEADER *) ((EFI_PEI_CORE_FV_LOCATION_PPI *) PpiList[Index].Ppi)->PeiCoreFvLocation,\r
+          (EFI_FIRMWARE_VOLUME_HEADER *)SecCoreData->BootFirmwareVolumeBase,\r
+          (EFI_FIRMWARE_VOLUME_HEADER *)((EFI_PEI_CORE_FV_LOCATION_PPI *)PpiList[Index].Ppi)->PeiCoreFvLocation,\r
           &PeiCoreEntryPoint\r
           );\r
         if (PeiCoreEntryPoint != NULL) {\r
@@ -299,6 +300,7 @@ SecStartupPhase2(
       }\r
     } while ((PpiList[Index++].Flags & EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST) != EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);\r
   }\r
+\r
   //\r
   // If EFI_PEI_CORE_FV_LOCATION_PPI not found, try to locate PeiCore from BFV.\r
   //\r
@@ -307,8 +309,8 @@ SecStartupPhase2(
     // Both SecCore and PeiCore are in BFV.\r
     //\r
     FindAndReportEntryPoints (\r
-      (EFI_FIRMWARE_VOLUME_HEADER *) SecCoreData->BootFirmwareVolumeBase,\r
-      (EFI_FIRMWARE_VOLUME_HEADER *) SecCoreData->BootFirmwareVolumeBase,\r
+      (EFI_FIRMWARE_VOLUME_HEADER *)SecCoreData->BootFirmwareVolumeBase,\r
+      (EFI_FIRMWARE_VOLUME_HEADER *)SecCoreData->BootFirmwareVolumeBase,\r
       &PeiCoreEntryPoint\r
       );\r
     if (PeiCoreEntryPoint == NULL) {\r
@@ -317,13 +319,13 @@ SecStartupPhase2(
   }\r
 \r
   if (PpiList != NULL) {\r
-    AllSecPpiList = (EFI_PEI_PPI_DESCRIPTOR *) SecCoreData->PeiTemporaryRamBase;\r
+    AllSecPpiList = (EFI_PEI_PPI_DESCRIPTOR *)SecCoreData->PeiTemporaryRamBase;\r
 \r
     //\r
     // Remove the terminal flag from the terminal PPI\r
     //\r
     CopyMem (AllSecPpiList, mPeiSecPlatformInformationPpi, sizeof (mPeiSecPlatformInformationPpi));\r
-    Index = sizeof (mPeiSecPlatformInformationPpi) / sizeof (EFI_PEI_PPI_DESCRIPTOR) - 1;\r
+    Index                      = sizeof (mPeiSecPlatformInformationPpi) / sizeof (EFI_PEI_PPI_DESCRIPTOR) - 1;\r
     AllSecPpiList[Index].Flags = AllSecPpiList[Index].Flags & (~EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST);\r
 \r
     //\r
@@ -339,7 +341,7 @@ SecStartupPhase2(
     //\r
     // Add the terminal PPI\r
     //\r
-    CopyMem (&AllSecPpiList[Index ++], PpiList, sizeof (EFI_PEI_PPI_DESCRIPTOR));\r
+    CopyMem (&AllSecPpiList[Index++], PpiList, sizeof (EFI_PEI_PPI_DESCRIPTOR));\r
 \r
     //\r
     // Set PpiList to the total PPI\r
@@ -350,13 +352,13 @@ SecStartupPhase2(
     // Adjust PEI TEMP RAM Range.\r
     //\r
     ASSERT (SecCoreData->PeiTemporaryRamSize > Index * sizeof (EFI_PEI_PPI_DESCRIPTOR));\r
-    SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN) SecCoreData->PeiTemporaryRamBase + Index * sizeof (EFI_PEI_PPI_DESCRIPTOR));\r
+    SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + Index * sizeof (EFI_PEI_PPI_DESCRIPTOR));\r
     SecCoreData->PeiTemporaryRamSize = SecCoreData->PeiTemporaryRamSize - Index * sizeof (EFI_PEI_PPI_DESCRIPTOR);\r
     //\r
     // Adjust the Base and Size to be 8-byte aligned as HOB which has 8byte aligned requirement\r
     // will be built based on them in PEI phase.\r
     //\r
-    SecCoreData->PeiTemporaryRamBase = (VOID *)(((UINTN)SecCoreData->PeiTemporaryRamBase + 7) & ~0x07);\r
+    SecCoreData->PeiTemporaryRamBase  = (VOID *)(((UINTN)SecCoreData->PeiTemporaryRamBase + 7) & ~0x07);\r
     SecCoreData->PeiTemporaryRamSize &= ~(UINTN)0x07;\r
   } else {\r
     //\r
@@ -370,7 +372,7 @@ SecStartupPhase2(
     "%a() Stack Base: 0x%p, Stack Size: 0x%x\n",\r
     __FUNCTION__,\r
     SecCoreData->StackBase,\r
-    (UINT32) SecCoreData->StackSize\r
+    (UINT32)SecCoreData->StackSize\r
     ));\r
 \r
   //\r
@@ -385,7 +387,7 @@ SecStartupPhase2(
   // Transfer the control to the PEI core\r
   //\r
   ASSERT (PeiCoreEntryPoint != NULL);\r
-  (*PeiCoreEntryPoint) (SecCoreData, PpiList);\r
+  (*PeiCoreEntryPoint)(SecCoreData, PpiList);\r
 \r
   //\r
   // Should not come here.\r
@@ -407,12 +409,12 @@ SecTemporaryRamDone (
   VOID\r
   )\r
 {\r
-  EFI_STATUS                    Status;\r
-  EFI_STATUS                    Status2;\r
-  UINTN                         Index;\r
-  BOOLEAN                       State;\r
-  EFI_PEI_PPI_DESCRIPTOR        *PeiPpiDescriptor;\r
-  REPUBLISH_SEC_PPI_PPI         *RepublishSecPpiPpi;\r
+  EFI_STATUS              Status;\r
+  EFI_STATUS              Status2;\r
+  UINTN                   Index;\r
+  BOOLEAN                 State;\r
+  EFI_PEI_PPI_DESCRIPTOR  *PeiPpiDescriptor;\r
+  REPUBLISH_SEC_PPI_PPI   *RepublishSecPpiPpi;\r
 \r
   //\r
   // Republish Sec Platform Information(2) PPI\r
@@ -427,7 +429,7 @@ SecTemporaryRamDone (
                &gRepublishSecPpiPpiGuid,\r
                Index,\r
                &PeiPpiDescriptor,\r
-               (VOID **) &RepublishSecPpiPpi\r
+               (VOID **)&RepublishSecPpiPpi\r
                );\r
     if (!EFI_ERROR (Status)) {\r
       DEBUG ((DEBUG_INFO, "Calling RepublishSecPpi instance %d.\n", Index));\r
index e20bcf86532c483bfbd9f372e60e93d21b8492e7..029bee3e7e405104f9db1490d6c1d1c7dbb08c30 100644 (file)
@@ -42,8 +42,8 @@ typedef struct _SEC_IDT_TABLE {
   // Note: For IA32, only the 4 bytes immediately preceding IDT is used to store\r
   // EFI_PEI_SERVICES**\r
   //\r
-  UINT64            PeiService;\r
-  UINT64            IdtTable[SEC_IDT_ENTRY_COUNT];\r
+  UINT64    PeiService;\r
+  UINT64    IdtTable[SEC_IDT_ENTRY_COUNT];\r
 } SEC_IDT_TABLE;\r
 \r
 /**\r
@@ -73,9 +73,9 @@ VOID
 NORETURN\r
 EFIAPI\r
 SecStartup (\r
-  IN UINT32                   SizeOfRam,\r
-  IN UINT32                   TempRamBase,\r
-  IN VOID                     *BootFirmwareVolume\r
+  IN UINT32  SizeOfRam,\r
+  IN UINT32  TempRamBase,\r
+  IN VOID    *BootFirmwareVolume\r
   );\r
 \r
 /**\r
@@ -92,9 +92,9 @@ SecStartup (
 VOID\r
 EFIAPI\r
 FindAndReportEntryPoints (\r
-  IN  EFI_FIRMWARE_VOLUME_HEADER       *SecCoreFirmwareVolumePtr,\r
-  IN  EFI_FIRMWARE_VOLUME_HEADER       *PeiCoreFirmwareVolumePtr,\r
-  OUT EFI_PEI_CORE_ENTRY_POINT         *PeiCoreEntryPoint\r
+  IN  EFI_FIRMWARE_VOLUME_HEADER  *SecCoreFirmwareVolumePtr,\r
+  IN  EFI_FIRMWARE_VOLUME_HEADER  *PeiCoreFirmwareVolumePtr,\r
+  OUT EFI_PEI_CORE_ENTRY_POINT    *PeiCoreEntryPoint\r
   );\r
 \r
 /**\r
@@ -123,9 +123,9 @@ ProcessLibraryConstructorList (
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformationBist (\r
-  IN CONST EFI_PEI_SERVICES                  **PeiServices,\r
-  IN OUT UINT64                              *StructureSize,\r
-     OUT EFI_SEC_PLATFORM_INFORMATION_RECORD *PlatformInformationRecord\r
+  IN CONST EFI_PEI_SERVICES                **PeiServices,\r
+  IN OUT UINT64                            *StructureSize,\r
+  OUT EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
   );\r
 \r
 /**\r
@@ -143,9 +143,9 @@ SecPlatformInformationBist (
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformation2Bist (\r
-  IN CONST EFI_PEI_SERVICES                   **PeiServices,\r
-  IN OUT UINT64                               *StructureSize,\r
-     OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2 *PlatformInformationRecord2\r
+  IN CONST EFI_PEI_SERVICES                 **PeiServices,\r
+  IN OUT UINT64                             *StructureSize,\r
+  OUT EFI_SEC_PLATFORM_INFORMATION_RECORD2  *PlatformInformationRecord2\r
   );\r
 \r
 /**\r
index 4813a06f13fd213f909e809bf3dff4ce0ecccecd..363d44b8ff4c42d0fe34e8e37a77681f38e4f272 100644 (file)
 #include "SecMigrationPei.h"\r
 \r
 STATIC REPUBLISH_SEC_PPI_PPI  mEdkiiRepublishSecPpiPpi = {\r
-                                RepublishSecPpis\r
-                                };\r
+  RepublishSecPpis\r
+};\r
 \r
 GLOBAL_REMOVE_IF_UNREFERENCED EFI_SEC_PLATFORM_INFORMATION_PPI  mSecPlatformInformationPostMemoryPpi = {\r
-                                                                  SecPlatformInformationPostMemory\r
-                                                                  };\r
+  SecPlatformInformationPostMemory\r
+};\r
 \r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_TEMPORARY_RAM_DONE_PPI  mSecTemporaryRamDonePostMemoryPpi = {\r
+  SecTemporaryRamDonePostMemory\r
+};\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_TEMPORARY_RAM_DONE_PPI mSecTemporaryRamDonePostMemoryPpi = {\r
-                                                               SecTemporaryRamDonePostMemory\r
-                                                               };\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI  mSecTemporaryRamSupportPostMemoryPpi = {\r
+  SecTemporaryRamSupportPostMemory\r
+};\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_TEMPORARY_RAM_SUPPORT_PPI mSecTemporaryRamSupportPostMemoryPpi = {\r
-                                                                  SecTemporaryRamSupportPostMemory\r
-                                                                  };\r
+GLOBAL_REMOVE_IF_UNREFERENCED PEI_SEC_PERFORMANCE_PPI  mSecPerformancePpi = {\r
+  GetPerformancePostMemory\r
+};\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED PEI_SEC_PERFORMANCE_PPI mSecPerformancePpi = {\r
-                                                        GetPerformancePostMemory\r
-                                                        };\r
-\r
-STATIC EFI_PEI_PPI_DESCRIPTOR mEdkiiRepublishSecPpiDescriptor = {\r
+STATIC EFI_PEI_PPI_DESCRIPTOR  mEdkiiRepublishSecPpiDescriptor = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gRepublishSecPpiPpiGuid,\r
   &mEdkiiRepublishSecPpiPpi\r
-  };\r
+};\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR mSecPlatformInformationPostMemoryDescriptor = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR  mSecPlatformInformationPostMemoryDescriptor = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiSecPlatformInformationPpiGuid,\r
   &mSecPlatformInformationPostMemoryPpi\r
-  };\r
+};\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR mSecTemporaryRamDonePostMemoryDescriptor = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR  mSecTemporaryRamDonePostMemoryDescriptor = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiTemporaryRamDonePpiGuid,\r
   &mSecTemporaryRamDonePostMemoryPpi\r
-  };\r
+};\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR mSecTemporaryRamSupportPostMemoryDescriptor = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR  mSecTemporaryRamSupportPostMemoryDescriptor = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiTemporaryRamSupportPpiGuid,\r
   &mSecTemporaryRamSupportPostMemoryPpi\r
-  };\r
+};\r
 \r
-GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR mSecPerformancePpiDescriptor = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED EFI_PEI_PPI_DESCRIPTOR  mSecPerformancePpiDescriptor = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gPeiSecPerformancePpiGuid,\r
   &mSecPerformancePpi\r
-  };\r
+};\r
 \r
 /**\r
   Disables the use of Temporary RAM.\r
@@ -110,10 +109,10 @@ SecTemporaryRamDonePostMemory (
 EFI_STATUS\r
 EFIAPI\r
 SecTemporaryRamSupportPostMemory (\r
-  IN CONST EFI_PEI_SERVICES   **PeiServices,\r
-  IN EFI_PHYSICAL_ADDRESS     TemporaryMemoryBase,\r
-  IN EFI_PHYSICAL_ADDRESS     PermanentMemoryBase,\r
-  IN UINTN                    CopySize\r
+  IN CONST EFI_PEI_SERVICES  **PeiServices,\r
+  IN EFI_PHYSICAL_ADDRESS    TemporaryMemoryBase,\r
+  IN EFI_PHYSICAL_ADDRESS    PermanentMemoryBase,\r
+  IN UINTN                   CopySize\r
   )\r
 {\r
   //\r
@@ -151,7 +150,7 @@ GetPerformancePostMemory (
 {\r
   SEC_PLATFORM_INFORMATION_CONTEXT_HOB  *SecPlatformInformationContexHob;\r
 \r
-  if (This == NULL || Performance == NULL) {\r
+  if ((This == NULL) || (Performance == NULL)) {\r
     return EFI_INVALID_PARAMETER;\r
   }\r
 \r
@@ -182,9 +181,9 @@ GetPerformancePostMemory (
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformationPostMemory (\r
-  IN CONST EFI_PEI_SERVICES                     **PeiServices,\r
-  IN OUT   UINT64                               *StructureSize,\r
-     OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
+  IN CONST EFI_PEI_SERVICES                  **PeiServices,\r
+  IN OUT   UINT64                            *StructureSize,\r
+  OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
   )\r
 {\r
   SEC_PLATFORM_INFORMATION_CONTEXT_HOB  *SecPlatformInformationContexHob;\r
@@ -209,9 +208,9 @@ SecPlatformInformationPostMemory (
 \r
   *StructureSize = SecPlatformInformationContexHob->Context.StructureSize;\r
   CopyMem (\r
-    (VOID *) PlatformInformationRecord,\r
-    (VOID *) SecPlatformInformationContexHob->Context.PlatformInformationRecord,\r
-    (UINTN) SecPlatformInformationContexHob->Context.StructureSize\r
+    (VOID *)PlatformInformationRecord,\r
+    (VOID *)SecPlatformInformationContexHob->Context.PlatformInformationRecord,\r
+    (UINTN)SecPlatformInformationContexHob->Context.StructureSize\r
     );\r
 \r
   return EFI_SUCCESS;\r
@@ -241,13 +240,13 @@ RepublishSecPpis (
   UINT64                                SecStructureSize;\r
 \r
   SecPlatformInformationPtr = NULL;\r
-  SecStructureSize = 0;\r
+  SecStructureSize          = 0;\r
 \r
   Status = PeiServicesLocatePpi (\r
              &gEfiTemporaryRamDonePpiGuid,\r
              0,\r
              &PeiPpiDescriptor,\r
-             (VOID **) &PeiPpi\r
+             (VOID **)&PeiPpi\r
              );\r
   if (!EFI_ERROR (Status)) {\r
     Status = PeiServicesReInstallPpi (\r
@@ -261,7 +260,7 @@ RepublishSecPpis (
              &gEfiTemporaryRamSupportPpiGuid,\r
              0,\r
              &PeiPpiDescriptor,\r
-             (VOID **) &PeiPpi\r
+             (VOID **)&PeiPpi\r
              );\r
   if (!EFI_ERROR (Status)) {\r
     Status = PeiServicesReInstallPpi (\r
@@ -274,7 +273,7 @@ RepublishSecPpis (
   Status = PeiServicesCreateHob (\r
              EFI_HOB_TYPE_GUID_EXTENSION,\r
              sizeof (SEC_PLATFORM_INFORMATION_CONTEXT_HOB),\r
-             (VOID **) &SecPlatformInformationContextHob\r
+             (VOID **)&SecPlatformInformationContextHob\r
              );\r
   ASSERT_EFI_ERROR (Status);\r
   if (EFI_ERROR (Status)) {\r
@@ -289,14 +288,14 @@ RepublishSecPpis (
              &gPeiSecPerformancePpiGuid,\r
              0,\r
              &PeiPpiDescriptor,\r
-             (VOID **) &PeiPpi\r
+             (VOID **)&PeiPpi\r
              );\r
   if (!EFI_ERROR (Status)) {\r
-    Status = ((PEI_SEC_PERFORMANCE_PPI *) PeiPpi)->GetPerformance (\r
-                                                     GetPeiServicesTablePointer (),\r
-                                                     (PEI_SEC_PERFORMANCE_PPI *) PeiPpi,\r
-                                                     &SecPlatformInformationContextHob->FirmwareSecPerformance\r
-                                                     );\r
+    Status = ((PEI_SEC_PERFORMANCE_PPI *)PeiPpi)->GetPerformance (\r
+                                                    GetPeiServicesTablePointer (),\r
+                                                    (PEI_SEC_PERFORMANCE_PPI *)PeiPpi,\r
+                                                    &SecPlatformInformationContextHob->FirmwareSecPerformance\r
+                                                    );\r
     ASSERT_EFI_ERROR (Status);\r
     if (!EFI_ERROR (Status)) {\r
       Status = PeiServicesReInstallPpi (\r
@@ -311,32 +310,33 @@ RepublishSecPpis (
              &gEfiSecPlatformInformationPpiGuid,\r
              0,\r
              &PeiPpiDescriptor,\r
-             (VOID **) &PeiPpi\r
+             (VOID **)&PeiPpi\r
              );\r
   if (!EFI_ERROR (Status)) {\r
-    Status = ((EFI_SEC_PLATFORM_INFORMATION_PPI *) PeiPpi)->PlatformInformation (\r
-                                                              GetPeiServicesTablePointer (),\r
-                                                              &SecStructureSize,\r
-                                                              SecPlatformInformationPtr\r
-                                                              );\r
+    Status = ((EFI_SEC_PLATFORM_INFORMATION_PPI *)PeiPpi)->PlatformInformation (\r
+                                                             GetPeiServicesTablePointer (),\r
+                                                             &SecStructureSize,\r
+                                                             SecPlatformInformationPtr\r
+                                                             );\r
     ASSERT (Status == EFI_BUFFER_TOO_SMALL);\r
     if (Status != EFI_BUFFER_TOO_SMALL) {\r
       return EFI_NOT_FOUND;\r
     }\r
 \r
-    ZeroMem ((VOID *) &(SecPlatformInformationContextHob->Context), sizeof (SEC_PLATFORM_INFORMATION_CONTEXT));\r
-    SecPlatformInformationContextHob->Context.PlatformInformationRecord = AllocatePool ((UINTN) SecStructureSize);\r
+    ZeroMem ((VOID *)&(SecPlatformInformationContextHob->Context), sizeof (SEC_PLATFORM_INFORMATION_CONTEXT));\r
+    SecPlatformInformationContextHob->Context.PlatformInformationRecord = AllocatePool ((UINTN)SecStructureSize);\r
     ASSERT (SecPlatformInformationContextHob->Context.PlatformInformationRecord != NULL);\r
     if (SecPlatformInformationContextHob->Context.PlatformInformationRecord == NULL) {\r
       return EFI_OUT_OF_RESOURCES;\r
     }\r
+\r
     SecPlatformInformationContextHob->Context.StructureSize = SecStructureSize;\r
 \r
-    Status = ((EFI_SEC_PLATFORM_INFORMATION_PPI *) PeiPpi)->PlatformInformation (\r
-                                                              GetPeiServicesTablePointer (),\r
-                                                              &(SecPlatformInformationContextHob->Context.StructureSize),\r
-                                                              SecPlatformInformationContextHob->Context.PlatformInformationRecord\r
-                                                              );\r
+    Status = ((EFI_SEC_PLATFORM_INFORMATION_PPI *)PeiPpi)->PlatformInformation (\r
+                                                             GetPeiServicesTablePointer (),\r
+                                                             &(SecPlatformInformationContextHob->Context.StructureSize),\r
+                                                             SecPlatformInformationContextHob->Context.PlatformInformationRecord\r
+                                                             );\r
     ASSERT_EFI_ERROR (Status);\r
     if (!EFI_ERROR (Status)) {\r
       Status = PeiServicesReInstallPpi (\r
index 2d28490d9eb83f4927e5037c2fd84540a027b7b6..9919c8af767309a3cce3b5ecf828307b5e9348da 100644 (file)
@@ -36,9 +36,9 @@
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformationPostMemory (\r
-  IN CONST EFI_PEI_SERVICES                     **PeiServices,\r
-  IN OUT   UINT64                               *StructureSize,\r
-     OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
+  IN CONST EFI_PEI_SERVICES                  **PeiServices,\r
+  IN OUT   UINT64                            *StructureSize,\r
+  OUT   EFI_SEC_PLATFORM_INFORMATION_RECORD  *PlatformInformationRecord\r
   );\r
 \r
 /**\r
@@ -55,9 +55,9 @@ SecPlatformInformationPostMemory (
 EFI_STATUS\r
 EFIAPI\r
 SecPlatformInformationPpiNotifyCallback (\r
-  IN EFI_PEI_SERVICES              **PeiServices,\r
-  IN EFI_PEI_NOTIFY_DESCRIPTOR     *NotifyDescriptor,\r
-  IN VOID                          *Ppi\r
+  IN EFI_PEI_SERVICES           **PeiServices,\r
+  IN EFI_PEI_NOTIFY_DESCRIPTOR  *NotifyDescriptor,\r
+  IN VOID                       *Ppi\r
   );\r
 \r
 /**\r
@@ -110,10 +110,10 @@ SecTemporaryRamDonePostMemory (
 EFI_STATUS\r
 EFIAPI\r
 SecTemporaryRamSupportPostMemory (\r
-  IN CONST EFI_PEI_SERVICES   **PeiServices,\r
-  IN EFI_PHYSICAL_ADDRESS     TemporaryMemoryBase,\r
-  IN EFI_PHYSICAL_ADDRESS     PermanentMemoryBase,\r
-  IN UINTN                    CopySize\r
+  IN CONST EFI_PEI_SERVICES  **PeiServices,\r
+  IN EFI_PHYSICAL_ADDRESS    TemporaryMemoryBase,\r
+  IN EFI_PHYSICAL_ADDRESS    PermanentMemoryBase,\r
+  IN UINTN                   CopySize\r
   );\r
 \r
 /**\r
@@ -143,16 +143,16 @@ GetPerformancePostMemory (
   );\r
 \r
 typedef struct {\r
-  UINT64                                StructureSize;\r
-  EFI_SEC_PLATFORM_INFORMATION_RECORD   *PlatformInformationRecord;\r
+  UINT64                                 StructureSize;\r
+  EFI_SEC_PLATFORM_INFORMATION_RECORD    *PlatformInformationRecord;\r
 } SEC_PLATFORM_INFORMATION_CONTEXT;\r
 \r
 typedef struct {\r
-  EFI_HOB_GUID_TYPE                     Header;\r
-  UINT8                                 Revision;\r
-  UINT8                                 Reserved[3];\r
-  FIRMWARE_SEC_PERFORMANCE              FirmwareSecPerformance;\r
-  SEC_PLATFORM_INFORMATION_CONTEXT      Context;\r
+  EFI_HOB_GUID_TYPE                   Header;\r
+  UINT8                               Revision;\r
+  UINT8                               Reserved[3];\r
+  FIRMWARE_SEC_PERFORMANCE            FirmwareSecPerformance;\r
+  SEC_PLATFORM_INFORMATION_CONTEXT    Context;\r
 } SEC_PLATFORM_INFORMATION_CONTEXT_HOB;\r
 \r
 #endif\r
index 6fa907161a9079def8834cf1c0873fd20c281e35..8419a4e32acbde9fc3ece2f33a08f5a6901f4830 100644 (file)
 #pragma pack(1)\r
 typedef union {\r
   struct {\r
-    UINT32  LimitLow    : 16;\r
-    UINT32  BaseLow     : 16;\r
-    UINT32  BaseMid     : 8;\r
-    UINT32  Type        : 4;\r
-    UINT32  System      : 1;\r
-    UINT32  Dpl         : 2;\r
-    UINT32  Present     : 1;\r
-    UINT32  LimitHigh   : 4;\r
-    UINT32  Software    : 1;\r
-    UINT32  Reserved    : 1;\r
-    UINT32  DefaultSize : 1;\r
-    UINT32  Granularity : 1;\r
-    UINT32  BaseHigh    : 8;\r
+    UINT32    LimitLow    : 16;\r
+    UINT32    BaseLow     : 16;\r
+    UINT32    BaseMid     : 8;\r
+    UINT32    Type        : 4;\r
+    UINT32    System      : 1;\r
+    UINT32    Dpl         : 2;\r
+    UINT32    Present     : 1;\r
+    UINT32    LimitHigh   : 4;\r
+    UINT32    Software    : 1;\r
+    UINT32    Reserved    : 1;\r
+    UINT32    DefaultSize : 1;\r
+    UINT32    Granularity : 1;\r
+    UINT32    BaseHigh    : 8;\r
   } Bits;\r
-  UINT64  Uint64;\r
+  UINT64    Uint64;\r
 } IA32_GDT;\r
 \r
 //\r
@@ -81,18 +81,18 @@ typedef union {
 //\r
 typedef union {\r
   struct {\r
-    UINT64  Present:1;                // 0 = Not present in memory, 1 = Present in memory\r
-    UINT64  ReadWrite:1;              // 0 = Read-Only, 1= Read/Write\r
-    UINT64  UserSupervisor:1;         // 0 = Supervisor, 1=User\r
-    UINT64  WriteThrough:1;           // 0 = Write-Back caching, 1=Write-Through caching\r
-    UINT64  CacheDisabled:1;          // 0 = Cached, 1=Non-Cached\r
-    UINT64  Accessed:1;               // 0 = Not accessed, 1 = Accessed (set by CPU)\r
-    UINT64  Reserved:1;               // Reserved\r
-    UINT64  MustBeZero:2;             // Must Be Zero\r
-    UINT64  Available:3;              // Available for use by system software\r
-    UINT64  PageTableBaseAddress:40;  // Page Table Base Address\r
-    UINT64  AvabilableHigh:11;        // Available for use by system software\r
-    UINT64  Nx:1;                     // No Execute bit\r
+    UINT64    Present              : 1;  // 0 = Not present in memory, 1 = Present in memory\r
+    UINT64    ReadWrite            : 1;  // 0 = Read-Only, 1= Read/Write\r
+    UINT64    UserSupervisor       : 1;  // 0 = Supervisor, 1=User\r
+    UINT64    WriteThrough         : 1;  // 0 = Write-Back caching, 1=Write-Through caching\r
+    UINT64    CacheDisabled        : 1;  // 0 = Cached, 1=Non-Cached\r
+    UINT64    Accessed             : 1;  // 0 = Not accessed, 1 = Accessed (set by CPU)\r
+    UINT64    Reserved             : 1;  // Reserved\r
+    UINT64    MustBeZero           : 2;  // Must Be Zero\r
+    UINT64    Available            : 3;  // Available for use by system software\r
+    UINT64    PageTableBaseAddress : 40; // Page Table Base Address\r
+    UINT64    AvabilableHigh       : 11; // Available for use by system software\r
+    UINT64    Nx                   : 1;  // No Execute bit\r
   } Bits;\r
   UINT64    Uint64;\r
 } PAGE_MAP_AND_DIRECTORY_POINTER;\r
@@ -102,21 +102,21 @@ typedef union {
 //\r
 typedef union {\r
   struct {\r
-    UINT64  Present:1;                // 0 = Not present in memory, 1 = Present in memory\r
-    UINT64  ReadWrite:1;              // 0 = Read-Only, 1= Read/Write\r
-    UINT64  UserSupervisor:1;         // 0 = Supervisor, 1=User\r
-    UINT64  WriteThrough:1;           // 0 = Write-Back caching, 1=Write-Through caching\r
-    UINT64  CacheDisabled:1;          // 0 = Cached, 1=Non-Cached\r
-    UINT64  Accessed:1;               // 0 = Not accessed, 1 = Accessed (set by CPU)\r
-    UINT64  Dirty:1;                  // 0 = Not Dirty, 1 = written by processor on access to page\r
-    UINT64  MustBe1:1;                // Must be 1\r
-    UINT64  Global:1;                 // 0 = Not global page, 1 = global page TLB not cleared on CR3 write\r
-    UINT64  Available:3;              // Available for use by system software\r
-    UINT64  PAT:1;                    //\r
-    UINT64  MustBeZero:8;             // Must be zero;\r
-    UINT64  PageTableBaseAddress:31;  // Page Table Base Address\r
-    UINT64  AvabilableHigh:11;        // Available for use by system software\r
-    UINT64  Nx:1;                     // 0 = Execute Code, 1 = No Code Execution\r
+    UINT64    Present              : 1;  // 0 = Not present in memory, 1 = Present in memory\r
+    UINT64    ReadWrite            : 1;  // 0 = Read-Only, 1= Read/Write\r
+    UINT64    UserSupervisor       : 1;  // 0 = Supervisor, 1=User\r
+    UINT64    WriteThrough         : 1;  // 0 = Write-Back caching, 1=Write-Through caching\r
+    UINT64    CacheDisabled        : 1;  // 0 = Cached, 1=Non-Cached\r
+    UINT64    Accessed             : 1;  // 0 = Not accessed, 1 = Accessed (set by CPU)\r
+    UINT64    Dirty                : 1;  // 0 = Not Dirty, 1 = written by processor on access to page\r
+    UINT64    MustBe1              : 1;  // Must be 1\r
+    UINT64    Global               : 1;  // 0 = Not global page, 1 = global page TLB not cleared on CR3 write\r
+    UINT64    Available            : 3;  // Available for use by system software\r
+    UINT64    PAT                  : 1;  //\r
+    UINT64    MustBeZero           : 8;  // Must be zero;\r
+    UINT64    PageTableBaseAddress : 31; // Page Table Base Address\r
+    UINT64    AvabilableHigh       : 11; // Available for use by system software\r
+    UINT64    Nx                   : 1;  // 0 = Execute Code, 1 = No Code Execution\r
   } Bits;\r
   UINT64    Uint64;\r
 } PAGE_TABLE_ENTRY;\r
@@ -126,21 +126,21 @@ typedef union {
 //\r
 typedef union {\r
   struct {\r
-    UINT64  Present:1;                // 0 = Not present in memory, 1 = Present in memory\r
-    UINT64  ReadWrite:1;              // 0 = Read-Only, 1= Read/Write\r
-    UINT64  UserSupervisor:1;         // 0 = Supervisor, 1=User\r
-    UINT64  WriteThrough:1;           // 0 = Write-Back caching, 1=Write-Through caching\r
-    UINT64  CacheDisabled:1;          // 0 = Cached, 1=Non-Cached\r
-    UINT64  Accessed:1;               // 0 = Not accessed, 1 = Accessed (set by CPU)\r
-    UINT64  Dirty:1;                  // 0 = Not Dirty, 1 = written by processor on access to page\r
-    UINT64  MustBe1:1;                // Must be 1\r
-    UINT64  Global:1;                 // 0 = Not global page, 1 = global page TLB not cleared on CR3 write\r
-    UINT64  Available:3;              // Available for use by system software\r
-    UINT64  PAT:1;                    //\r
-    UINT64  MustBeZero:17;            // Must be zero;\r
-    UINT64  PageTableBaseAddress:22;  // Page Table Base Address\r
-    UINT64  AvabilableHigh:11;        // Available for use by system software\r
-    UINT64  Nx:1;                     // 0 = Execute Code, 1 = No Code Execution\r
+    UINT64    Present              : 1;  // 0 = Not present in memory, 1 = Present in memory\r
+    UINT64    ReadWrite            : 1;  // 0 = Read-Only, 1= Read/Write\r
+    UINT64    UserSupervisor       : 1;  // 0 = Supervisor, 1=User\r
+    UINT64    WriteThrough         : 1;  // 0 = Write-Back caching, 1=Write-Through caching\r
+    UINT64    CacheDisabled        : 1;  // 0 = Cached, 1=Non-Cached\r
+    UINT64    Accessed             : 1;  // 0 = Not accessed, 1 = Accessed (set by CPU)\r
+    UINT64    Dirty                : 1;  // 0 = Not Dirty, 1 = written by processor on access to page\r
+    UINT64    MustBe1              : 1;  // Must be 1\r
+    UINT64    Global               : 1;  // 0 = Not global page, 1 = global page TLB not cleared on CR3 write\r
+    UINT64    Available            : 3;  // Available for use by system software\r
+    UINT64    PAT                  : 1;  //\r
+    UINT64    MustBeZero           : 17; // Must be zero;\r
+    UINT64    PageTableBaseAddress : 22; // Page Table Base Address\r
+    UINT64    AvabilableHigh       : 11; // Available for use by system software\r
+    UINT64    Nx                   : 1;  // 0 = Execute Code, 1 = No Code Execution\r
   } Bits;\r
   UINT64    Uint64;\r
 } PAGE_TABLE_1G_ENTRY;\r
@@ -150,15 +150,15 @@ typedef union {
 // One for 32 bits PEI + 64 bits DXE, the other for 32 bits PEI + 32 bits DXE case.\r
 //\r
 typedef struct {\r
-  EFI_GUID  HeaderGuid;\r
-  UINT32    MessageLength;\r
-  UINT8     Data[1];\r
+  EFI_GUID    HeaderGuid;\r
+  UINT32      MessageLength;\r
+  UINT8       Data[1];\r
 } SMM_COMMUNICATE_HEADER_32;\r
 \r
 typedef struct {\r
-  EFI_GUID  HeaderGuid;\r
-  UINT64    MessageLength;\r
-  UINT8     Data[1];\r
+  EFI_GUID    HeaderGuid;\r
+  UINT64      MessageLength;\r
+  UINT8       Data[1];\r
 } SMM_COMMUNICATE_HEADER_64;\r
 \r
 #pragma pack()\r
@@ -166,6 +166,7 @@ typedef struct {
 //\r
 // Function prototypes\r
 //\r
+\r
 /**\r
   a ASM function to transfer control to OS.\r
 \r
@@ -174,7 +175,7 @@ typedef struct {
 **/\r
 typedef\r
 VOID\r
-(EFIAPI *ASM_TRANSFER_CONTROL) (\r
+(EFIAPI *ASM_TRANSFER_CONTROL)(\r
   IN   UINT32           S3WakingVector,\r
   IN   UINT32           AcpiLowMemoryBase\r
   );\r
@@ -225,33 +226,33 @@ S3RestoreConfig2 (
 VOID\r
 EFIAPI\r
 AsmSetDataSelectors (\r
-  IN UINT16   SelectorValue\r
+  IN UINT16  SelectorValue\r
   );\r
 \r
 //\r
 // Globals\r
 //\r
-EFI_PEI_S3_RESUME2_PPI      mS3ResumePpi = { S3RestoreConfig2 };\r
+EFI_PEI_S3_RESUME2_PPI  mS3ResumePpi = { S3RestoreConfig2 };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR mPpiList = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPpiList = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiPeiS3Resume2PpiGuid,\r
   &mS3ResumePpi\r
 };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR mPpiListPostScriptTable = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPpiListPostScriptTable = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gPeiPostScriptTablePpiGuid,\r
   0\r
 };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR mPpiListEndOfPeiTable = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPpiListEndOfPeiTable = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEfiEndOfPeiSignalPpiGuid,\r
   0\r
 };\r
 \r
-EFI_PEI_PPI_DESCRIPTOR mPpiListS3SmmInitDoneTable = {\r
+EFI_PEI_PPI_DESCRIPTOR  mPpiListS3SmmInitDoneTable = {\r
   (EFI_PEI_PPI_DESCRIPTOR_PPI | EFI_PEI_PPI_DESCRIPTOR_TERMINATE_LIST),\r
   &gEdkiiS3SmmInitDoneGuid,\r
   0\r
@@ -260,29 +261,46 @@ EFI_PEI_PPI_DESCRIPTOR mPpiListS3SmmInitDoneTable = {
 //\r
 // Global Descriptor Table (GDT)\r
 //\r
-GLOBAL_REMOVE_IF_UNREFERENCED IA32_GDT mGdtEntries[] = {\r
-/* selector { Global Segment Descriptor                              } */\r
-/* 0x00 */  {{0,      0,  0,  0,    0,  0,  0,  0,    0,  0, 0,  0,  0}},\r
-/* 0x08 */  {{0,      0,  0,  0,    0,  0,  0,  0,    0,  0, 0,  0,  0}},\r
-/* 0x10 */  {{0xFFFF, 0,  0,  0xB,  1,  0,  1,  0xF,  0,  0, 1,  1,  0}},\r
-/* 0x18 */  {{0xFFFF, 0,  0,  0x3,  1,  0,  1,  0xF,  0,  0, 1,  1,  0}},\r
-/* 0x20 */  {{0,      0,  0,  0,    0,  0,  0,  0,    0,  0, 0,  0,  0}},\r
-/* 0x28 */  {{0xFFFF, 0,  0,  0xB,  1,  0,  1,  0xF,  0,  0, 0,  1,  0}},\r
-/* 0x30 */  {{0xFFFF, 0,  0,  0x3,  1,  0,  1,  0xF,  0,  0, 0,  1,  0}},\r
-/* 0x38 */  {{0xFFFF, 0,  0,  0xB,  1,  0,  1,  0xF,  0,  1, 0,  1,  0}},\r
-/* 0x40 */  {{0,      0,  0,  0,    0,  0,  0,  0,    0,  0, 0,  0,  0}},\r
+GLOBAL_REMOVE_IF_UNREFERENCED IA32_GDT  mGdtEntries[] = {\r
+  /* selector { Global Segment Descriptor                              } */\r
+  /* 0x00 */ {\r
+    { 0,      0, 0, 0,   0, 0, 0, 0,   0, 0, 0, 0, 0 }\r
+  },\r
+  /* 0x08 */ {\r
+    { 0,      0, 0, 0,   0, 0, 0, 0,   0, 0, 0, 0, 0 }\r
+  },\r
+  /* 0x10 */ {\r
+    { 0xFFFF, 0, 0, 0xB, 1, 0, 1, 0xF, 0, 0, 1, 1, 0 }\r
+  },\r
+  /* 0x18 */ {\r
+    { 0xFFFF, 0, 0, 0x3, 1, 0, 1, 0xF, 0, 0, 1, 1, 0 }\r
+  },\r
+  /* 0x20 */ {\r
+    { 0,      0, 0, 0,   0, 0, 0, 0,   0, 0, 0, 0, 0 }\r
+  },\r
+  /* 0x28 */ {\r
+    { 0xFFFF, 0, 0, 0xB, 1, 0, 1, 0xF, 0, 0, 0, 1, 0 }\r
+  },\r
+  /* 0x30 */ {\r
+    { 0xFFFF, 0, 0, 0x3, 1, 0, 1, 0xF, 0, 0, 0, 1, 0 }\r
+  },\r
+  /* 0x38 */ {\r
+    { 0xFFFF, 0, 0, 0xB, 1, 0, 1, 0xF, 0, 1, 0, 1, 0 }\r
+  },\r
+  /* 0x40 */ {\r
+    { 0,      0, 0, 0,   0, 0, 0, 0,   0, 0, 0, 0, 0 }\r
+  },\r
 };\r
 \r
-#define DATA_SEGEMENT_SELECTOR        0x18\r
+#define DATA_SEGEMENT_SELECTOR  0x18\r
 \r
 //\r
 // IA32 Gdt register\r
 //\r
-GLOBAL_REMOVE_IF_UNREFERENCED CONST IA32_DESCRIPTOR mGdt = {\r
+GLOBAL_REMOVE_IF_UNREFERENCED CONST IA32_DESCRIPTOR  mGdt = {\r
   sizeof (mGdtEntries) - 1,\r
-  (UINTN) mGdtEntries\r
-  };\r
-\r
+  (UINTN)mGdtEntries\r
+};\r
 \r
 /**\r
   The function will check if current waking vector is long mode.\r
@@ -294,28 +312,32 @@ GLOBAL_REMOVE_IF_UNREFERENCED CONST IA32_DESCRIPTOR mGdt = {
 **/\r
 BOOLEAN\r
 IsLongModeWakingVector (\r
-  IN ACPI_S3_CONTEXT                *AcpiS3Context\r
+  IN ACPI_S3_CONTEXT  *AcpiS3Context\r
   )\r
 {\r
   EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE  *Facs;\r
 \r
-  Facs = (EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *) ((UINTN) (AcpiS3Context->AcpiFacsTable));\r
+  Facs = (EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *)((UINTN)(AcpiS3Context->AcpiFacsTable));\r
   if ((Facs == NULL) ||\r
       (Facs->Signature != EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE) ||\r
-      ((Facs->FirmwareWakingVector == 0) && (Facs->XFirmwareWakingVector == 0)) ) {\r
+      ((Facs->FirmwareWakingVector == 0) && (Facs->XFirmwareWakingVector == 0)))\r
+  {\r
     // Something wrong with FACS\r
     return FALSE;\r
   }\r
+\r
   if (Facs->XFirmwareWakingVector != 0) {\r
     if ((Facs->Version == EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION) &&\r
         ((Facs->Flags & EFI_ACPI_4_0_64BIT_WAKE_SUPPORTED_F) != 0) &&\r
-        ((Facs->OspmFlags & EFI_ACPI_4_0_OSPM_64BIT_WAKE__F) != 0)) {\r
+        ((Facs->OspmFlags & EFI_ACPI_4_0_OSPM_64BIT_WAKE__F) != 0))\r
+    {\r
       // Both BIOS and OS wants 64bit vector\r
       if (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) {\r
         return TRUE;\r
       }\r
     }\r
   }\r
+\r
   return FALSE;\r
 }\r
 \r
@@ -327,15 +349,15 @@ IsLongModeWakingVector (
 **/\r
 VOID\r
 SignalToSmmByCommunication (\r
-  IN EFI_GUID   *HandlerType\r
+  IN EFI_GUID  *HandlerType\r
   )\r
 {\r
-  EFI_STATUS                         Status;\r
-  EFI_PEI_SMM_COMMUNICATION_PPI      *SmmCommunicationPpi;\r
-  UINTN                              CommSize;\r
-  SMM_COMMUNICATE_HEADER_32          Header32;\r
-  SMM_COMMUNICATE_HEADER_64          Header64;\r
-  VOID                               *CommBuffer;\r
+  EFI_STATUS                     Status;\r
+  EFI_PEI_SMM_COMMUNICATION_PPI  *SmmCommunicationPpi;\r
+  UINTN                          CommSize;\r
+  SMM_COMMUNICATE_HEADER_32      Header32;\r
+  SMM_COMMUNICATE_HEADER_64      Header64;\r
+  VOID                           *CommBuffer;\r
 \r
   DEBUG ((DEBUG_INFO, "Signal %g to SMM - Enter\n", HandlerType));\r
 \r
@@ -345,15 +367,16 @@ SignalToSmmByCommunication (
   // if (sizeof(UINTN) == sizeof(UINT64), PEI already 64 bits, assume DXE also 64 bits.\r
   // or (FeaturePcdGet (PcdDxeIplSwitchToLongMode)), DXE will switch to 64 bits.\r
   //\r
-  if ((sizeof(UINTN) == sizeof(UINT64)) || (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
-    CommBuffer = &Header64;\r
+  if ((sizeof (UINTN) == sizeof (UINT64)) || (FeaturePcdGet (PcdDxeIplSwitchToLongMode))) {\r
+    CommBuffer             = &Header64;\r
     Header64.MessageLength = 0;\r
-    CommSize = OFFSET_OF (SMM_COMMUNICATE_HEADER_64, Data);\r
+    CommSize               = OFFSET_OF (SMM_COMMUNICATE_HEADER_64, Data);\r
   } else {\r
-    CommBuffer = &Header32;\r
+    CommBuffer             = &Header32;\r
     Header32.MessageLength = 0;\r
-    CommSize = OFFSET_OF (SMM_COMMUNICATE_HEADER_32, Data);\r
+    CommSize               = OFFSET_OF (SMM_COMMUNICATE_HEADER_32, Data);\r
   }\r
+\r
   CopyGuid (CommBuffer, HandlerType);\r
 \r
   Status = PeiServicesLocatePpi (\r
@@ -390,8 +413,8 @@ SignalToSmmByCommunication (
 VOID\r
 EFIAPI\r
 S3ResumeBootOs (\r
-  IN ACPI_S3_CONTEXT                *AcpiS3Context,\r
-  IN PEI_S3_RESUME_STATE            *PeiS3ResumeState\r
+  IN ACPI_S3_CONTEXT      *AcpiS3Context,\r
+  IN PEI_S3_RESUME_STATE  *PeiS3ResumeState\r
   )\r
 {\r
   EFI_STATUS                                    Status;\r
@@ -436,11 +459,12 @@ S3ResumeBootOs (
   //\r
   // Get ACPI Table Address\r
   //\r
-  Facs = (EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *) ((UINTN) (AcpiS3Context->AcpiFacsTable));\r
+  Facs = (EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *)((UINTN)(AcpiS3Context->AcpiFacsTable));\r
 \r
   if ((Facs == NULL) ||\r
       (Facs->Signature != EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_SIGNATURE) ||\r
-      ((Facs->FirmwareWakingVector == 0) && (Facs->XFirmwareWakingVector == 0)) ) {\r
+      ((Facs->FirmwareWakingVector == 0) && (Facs->XFirmwareWakingVector == 0)))\r
+  {\r
     //\r
     // Report Status code that no valid vector is found\r
     //\r
@@ -449,20 +473,20 @@ S3ResumeBootOs (
       (EFI_SOFTWARE_PEI_MODULE | EFI_SW_PEI_EC_S3_OS_WAKE_ERROR)\r
       );\r
     CpuDeadLoop ();\r
-    return ;\r
+    return;\r
   }\r
 \r
   //\r
   // Install EndOfPeiPpi\r
   //\r
-  PERF_INMODULE_BEGIN("EndOfPeiPpi");\r
+  PERF_INMODULE_BEGIN ("EndOfPeiPpi");\r
 \r
   Status = PeiServicesInstallPpi (&mPpiListEndOfPeiTable);\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  PERF_INMODULE_END("EndOfPeiPpi");\r
+  PERF_INMODULE_END ("EndOfPeiPpi");\r
 \r
-  PERF_INMODULE_BEGIN("EndOfS3Resume");\r
+  PERF_INMODULE_BEGIN ("EndOfS3Resume");\r
 \r
   DEBUG ((DEBUG_INFO, "Signal EndOfS3Resume\n"));\r
   //\r
@@ -482,7 +506,7 @@ S3ResumeBootOs (
     //\r
     // Switch to native waking vector\r
     //\r
-    TempStackTop = (UINTN)&TempStack + sizeof(TempStack);\r
+    TempStackTop = (UINTN)&TempStack + sizeof (TempStack);\r
     DEBUG ((\r
       DEBUG_INFO,\r
       "%a() Stack Base: 0x%x, Stack Size: 0x%x\n",\r
@@ -492,7 +516,8 @@ S3ResumeBootOs (
       ));\r
     if ((Facs->Version == EFI_ACPI_4_0_FIRMWARE_ACPI_CONTROL_STRUCTURE_VERSION) &&\r
         ((Facs->Flags & EFI_ACPI_4_0_64BIT_WAKE_SUPPORTED_F) != 0) &&\r
-        ((Facs->OspmFlags & EFI_ACPI_4_0_OSPM_64BIT_WAKE__F) != 0)) {\r
+        ((Facs->OspmFlags & EFI_ACPI_4_0_OSPM_64BIT_WAKE__F) != 0))\r
+    {\r
       //\r
       // X64 long mode waking vector\r
       //\r
@@ -513,10 +538,10 @@ S3ResumeBootOs (
           EFI_ERROR_CODE | EFI_ERROR_MAJOR,\r
           (EFI_SOFTWARE_PEI_MODULE | EFI_SW_PEI_EC_S3_OS_WAKE_ERROR)\r
           );\r
-        DEBUG (( DEBUG_ERROR, "Unsupported for 32bit DXE transfer to 64bit OS waking vector!\r\n"));\r
+        DEBUG ((DEBUG_ERROR, "Unsupported for 32bit DXE transfer to 64bit OS waking vector!\r\n"));\r
         ASSERT (FALSE);\r
         CpuDeadLoop ();\r
-        return ;\r
+        return;\r
       }\r
     } else {\r
       //\r
@@ -524,7 +549,7 @@ S3ResumeBootOs (
       //\r
       DEBUG ((DEBUG_INFO, "Transfer to 32bit OS waking vector - %x\r\n", (UINTN)Facs->XFirmwareWakingVector));\r
       SwitchStack (\r
-        (SWITCH_STACK_ENTRY_POINT) (UINTN) Facs->XFirmwareWakingVector,\r
+        (SWITCH_STACK_ENTRY_POINT)(UINTN)Facs->XFirmwareWakingVector,\r
         NULL,\r
         NULL,\r
         (VOID *)(UINTN)TempStackTop\r
@@ -549,7 +574,7 @@ S3ResumeBootOs (
   //\r
   // Never run to here\r
   //\r
-  CpuDeadLoop();\r
+  CpuDeadLoop ();\r
 }\r
 \r
 /**\r
@@ -561,28 +586,28 @@ S3ResumeBootOs (
 **/\r
 VOID\r
 RestoreS3PageTables (\r
-  IN UINTN                                         S3NvsPageTableAddress,\r
-  IN BOOLEAN                                       Build4GPageTableOnly\r
+  IN UINTN    S3NvsPageTableAddress,\r
+  IN BOOLEAN  Build4GPageTableOnly\r
   )\r
 {\r
   if (FeaturePcdGet (PcdDxeIplSwitchToLongMode)) {\r
-    UINT32                                        RegEax;\r
-    UINT32                                        RegEdx;\r
-    UINT8                                         PhysicalAddressBits;\r
-    EFI_PHYSICAL_ADDRESS                          PageAddress;\r
-    UINTN                                         IndexOfPml4Entries;\r
-    UINTN                                         IndexOfPdpEntries;\r
-    UINTN                                         IndexOfPageDirectoryEntries;\r
-    UINT32                                        NumberOfPml4EntriesNeeded;\r
-    UINT32                                        NumberOfPdpEntriesNeeded;\r
-    PAGE_MAP_AND_DIRECTORY_POINTER                *PageMapLevel4Entry;\r
-    PAGE_MAP_AND_DIRECTORY_POINTER                *PageMap;\r
-    PAGE_MAP_AND_DIRECTORY_POINTER                *PageDirectoryPointerEntry;\r
-    PAGE_TABLE_ENTRY                              *PageDirectoryEntry;\r
-    VOID                                          *Hob;\r
-    BOOLEAN                                       Page1GSupport;\r
-    PAGE_TABLE_1G_ENTRY                           *PageDirectory1GEntry;\r
-    UINT64                                        AddressEncMask;\r
+    UINT32                          RegEax;\r
+    UINT32                          RegEdx;\r
+    UINT8                           PhysicalAddressBits;\r
+    EFI_PHYSICAL_ADDRESS            PageAddress;\r
+    UINTN                           IndexOfPml4Entries;\r
+    UINTN                           IndexOfPdpEntries;\r
+    UINTN                           IndexOfPageDirectoryEntries;\r
+    UINT32                          NumberOfPml4EntriesNeeded;\r
+    UINT32                          NumberOfPdpEntriesNeeded;\r
+    PAGE_MAP_AND_DIRECTORY_POINTER  *PageMapLevel4Entry;\r
+    PAGE_MAP_AND_DIRECTORY_POINTER  *PageMap;\r
+    PAGE_MAP_AND_DIRECTORY_POINTER  *PageDirectoryPointerEntry;\r
+    PAGE_TABLE_ENTRY                *PageDirectoryEntry;\r
+    VOID                            *Hob;\r
+    BOOLEAN                         Page1GSupport;\r
+    PAGE_TABLE_1G_ENTRY             *PageDirectory1GEntry;\r
+    UINT64                          AddressEncMask;\r
 \r
     //\r
     // Make sure AddressEncMask is contained to smallest supported address field\r
@@ -600,11 +625,11 @@ RestoreS3PageTables (
     //\r
     // By architecture only one PageMapLevel4 exists - so lets allocate storage for it.\r
     //\r
-    PageMap = (PAGE_MAP_AND_DIRECTORY_POINTER *)S3NvsPageTableAddress;\r
+    PageMap                = (PAGE_MAP_AND_DIRECTORY_POINTER *)S3NvsPageTableAddress;\r
     S3NvsPageTableAddress += SIZE_4KB;\r
 \r
     Page1GSupport = FALSE;\r
-    if (PcdGetBool(PcdUse1GPageTable)) {\r
+    if (PcdGetBool (PcdUse1GPageTable)) {\r
       AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
       if (RegEax >= 0x80000001) {\r
         AsmCpuid (0x80000001, NULL, NULL, NULL, &RegEdx);\r
@@ -619,12 +644,12 @@ RestoreS3PageTables (
     //\r
     Hob = GetFirstHob (EFI_HOB_TYPE_CPU);\r
     if (Hob != NULL) {\r
-      PhysicalAddressBits = ((EFI_HOB_CPU *) Hob)->SizeOfMemorySpace;\r
+      PhysicalAddressBits = ((EFI_HOB_CPU *)Hob)->SizeOfMemorySpace;\r
     } else {\r
       AsmCpuid (0x80000000, &RegEax, NULL, NULL, NULL);\r
       if (RegEax >= 0x80000008) {\r
         AsmCpuid (0x80000008, &RegEax, NULL, NULL, NULL);\r
-        PhysicalAddressBits = (UINT8) RegEax;\r
+        PhysicalAddressBits = (UINT8)RegEax;\r
       } else {\r
         PhysicalAddressBits = 36;\r
       }\r
@@ -644,17 +669,18 @@ RestoreS3PageTables (
     //\r
     if (Build4GPageTableOnly) {\r
       PhysicalAddressBits = 32;\r
-      ZeroMem (PageMap, EFI_PAGES_TO_SIZE(2));\r
+      ZeroMem (PageMap, EFI_PAGES_TO_SIZE (2));\r
     }\r
+\r
     //\r
     // Calculate the table entries needed.\r
     //\r
     if (PhysicalAddressBits <= 39) {\r
       NumberOfPml4EntriesNeeded = 1;\r
-      NumberOfPdpEntriesNeeded = (UINT32)LShiftU64 (1, (PhysicalAddressBits - 30));\r
+      NumberOfPdpEntriesNeeded  = (UINT32)LShiftU64 (1, (PhysicalAddressBits - 30));\r
     } else {\r
       NumberOfPml4EntriesNeeded = (UINT32)LShiftU64 (1, (PhysicalAddressBits - 39));\r
-      NumberOfPdpEntriesNeeded = 512;\r
+      NumberOfPdpEntriesNeeded  = 512;\r
     }\r
 \r
     PageMapLevel4Entry = PageMap;\r
@@ -665,26 +691,26 @@ RestoreS3PageTables (
       // So lets allocate space for them and fill them in in the IndexOfPdpEntries loop.\r
       //\r
       PageDirectoryPointerEntry = (PAGE_MAP_AND_DIRECTORY_POINTER *)S3NvsPageTableAddress;\r
-      S3NvsPageTableAddress += SIZE_4KB;\r
+      S3NvsPageTableAddress    += SIZE_4KB;\r
 \r
       //\r
       // Make a PML4 Entry\r
       //\r
-      PageMapLevel4Entry->Uint64 = (UINT64)(UINTN)PageDirectoryPointerEntry | AddressEncMask;\r
+      PageMapLevel4Entry->Uint64         = (UINT64)(UINTN)PageDirectoryPointerEntry | AddressEncMask;\r
       PageMapLevel4Entry->Bits.ReadWrite = 1;\r
-      PageMapLevel4Entry->Bits.Present = 1;\r
+      PageMapLevel4Entry->Bits.Present   = 1;\r
 \r
       if (Page1GSupport) {\r
-        PageDirectory1GEntry = (VOID *) PageDirectoryPointerEntry;\r
+        PageDirectory1GEntry = (VOID *)PageDirectoryPointerEntry;\r
 \r
         for (IndexOfPageDirectoryEntries = 0; IndexOfPageDirectoryEntries < 512; IndexOfPageDirectoryEntries++, PageDirectory1GEntry++, PageAddress += SIZE_1GB) {\r
           //\r
           // Fill in the Page Directory entries\r
           //\r
-          PageDirectory1GEntry->Uint64 = (UINT64)PageAddress | AddressEncMask;\r
+          PageDirectory1GEntry->Uint64         = (UINT64)PageAddress | AddressEncMask;\r
           PageDirectory1GEntry->Bits.ReadWrite = 1;\r
-          PageDirectory1GEntry->Bits.Present = 1;\r
-          PageDirectory1GEntry->Bits.MustBe1 = 1;\r
+          PageDirectory1GEntry->Bits.Present   = 1;\r
+          PageDirectory1GEntry->Bits.MustBe1   = 1;\r
         }\r
       } else {\r
         for (IndexOfPdpEntries = 0; IndexOfPdpEntries < NumberOfPdpEntriesNeeded; IndexOfPdpEntries++, PageDirectoryPointerEntry++) {\r
@@ -692,34 +718,35 @@ RestoreS3PageTables (
           // Each Directory Pointer entries points to a page of Page Directory entires.\r
           // So allocate space for them and fill them in in the IndexOfPageDirectoryEntries loop.\r
           //\r
-          PageDirectoryEntry = (PAGE_TABLE_ENTRY *)S3NvsPageTableAddress;\r
+          PageDirectoryEntry     = (PAGE_TABLE_ENTRY *)S3NvsPageTableAddress;\r
           S3NvsPageTableAddress += SIZE_4KB;\r
 \r
           //\r
           // Fill in a Page Directory Pointer Entries\r
           //\r
-          PageDirectoryPointerEntry->Uint64 = (UINT64)(UINTN)PageDirectoryEntry | AddressEncMask;\r
+          PageDirectoryPointerEntry->Uint64         = (UINT64)(UINTN)PageDirectoryEntry | AddressEncMask;\r
           PageDirectoryPointerEntry->Bits.ReadWrite = 1;\r
-          PageDirectoryPointerEntry->Bits.Present = 1;\r
+          PageDirectoryPointerEntry->Bits.Present   = 1;\r
 \r
           for (IndexOfPageDirectoryEntries = 0; IndexOfPageDirectoryEntries < 512; IndexOfPageDirectoryEntries++, PageDirectoryEntry++, PageAddress += SIZE_2MB) {\r
             //\r
             // Fill in the Page Directory entries\r
             //\r
-            PageDirectoryEntry->Uint64 = (UINT64)PageAddress | AddressEncMask;\r
+            PageDirectoryEntry->Uint64         = (UINT64)PageAddress | AddressEncMask;\r
             PageDirectoryEntry->Bits.ReadWrite = 1;\r
-            PageDirectoryEntry->Bits.Present = 1;\r
-            PageDirectoryEntry->Bits.MustBe1 = 1;\r
+            PageDirectoryEntry->Bits.Present   = 1;\r
+            PageDirectoryEntry->Bits.MustBe1   = 1;\r
           }\r
         }\r
       }\r
     }\r
-    return ;\r
+\r
+    return;\r
   } else {\r
     //\r
     // If DXE is running 32-bit mode, no need to establish page table.\r
     //\r
-    return ;\r
+    return;\r
   }\r
 }\r
 \r
@@ -739,12 +766,12 @@ S3ResumeExecuteBootScript (
   IN BOOT_SCRIPT_EXECUTOR_VARIABLE  *EfiBootScriptExecutorVariable\r
   )\r
 {\r
-  EFI_STATUS                 Status;\r
-  PEI_SMM_ACCESS_PPI         *SmmAccess;\r
-  UINTN                      Index;\r
-  VOID                       *GuidHob;\r
-  PEI_S3_RESUME_STATE        *PeiS3ResumeState;\r
-  BOOLEAN                    InterruptStatus;\r
+  EFI_STATUS           Status;\r
+  PEI_SMM_ACCESS_PPI   *SmmAccess;\r
+  UINTN                Index;\r
+  VOID                 *GuidHob;\r
+  PEI_S3_RESUME_STATE  *PeiS3ResumeState;\r
+  BOOLEAN              InterruptStatus;\r
 \r
   DEBUG ((DEBUG_INFO, "S3ResumeExecuteBootScript()\n"));\r
 \r
@@ -767,11 +794,11 @@ S3ResumeExecuteBootScript (
     SendSmiIpi (GetApicId ());\r
 \r
     Status = PeiServicesLocatePpi (\r
-                              &gPeiSmmAccessPpiGuid,\r
-                              0,\r
-                              NULL,\r
-                              (VOID **) &SmmAccess\r
-                              );\r
+               &gPeiSmmAccessPpiGuid,\r
+               0,\r
+               NULL,\r
+               (VOID **)&SmmAccess\r
+               );\r
     if (!EFI_ERROR (Status)) {\r
       DEBUG ((DEBUG_INFO, "Close all SMRAM regions before executing boot script\n"));\r
 \r
@@ -819,7 +846,7 @@ S3ResumeExecuteBootScript (
   //\r
   // Prepare data for return back\r
   //\r
-  PeiS3ResumeState = AllocatePool (sizeof(*PeiS3ResumeState));\r
+  PeiS3ResumeState = AllocatePool (sizeof (*PeiS3ResumeState));\r
   if (PeiS3ResumeState == NULL) {\r
     REPORT_STATUS_CODE (\r
       EFI_ERROR_CODE | EFI_ERROR_MAJOR,\r
@@ -827,6 +854,7 @@ S3ResumeExecuteBootScript (
       );\r
     ASSERT (FALSE);\r
   }\r
+\r
   DEBUG ((DEBUG_INFO, "PeiS3ResumeState - %x\r\n", PeiS3ResumeState));\r
   PeiS3ResumeState->ReturnCs           = 0x10;\r
   PeiS3ResumeState->ReturnEntryPoint   = (EFI_PHYSICAL_ADDRESS)(UINTN)S3ResumeBootOs;\r
@@ -865,7 +893,7 @@ S3ResumeExecuteBootScript (
     //\r
     DEBUG ((DEBUG_INFO, "transfer control to Standalone Boot Script Executor\r\n"));\r
     SwitchStack (\r
-      (SWITCH_STACK_ENTRY_POINT) (UINTN) EfiBootScriptExecutorVariable->BootScriptExecutorEntrypoint,\r
+      (SWITCH_STACK_ENTRY_POINT)(UINTN)EfiBootScriptExecutorVariable->BootScriptExecutorEntrypoint,\r
       (VOID *)AcpiS3Context,\r
       (VOID *)PeiS3ResumeState,\r
       (VOID *)(UINTN)(AcpiS3Context->BootScriptStackBase + AcpiS3Context->BootScriptStackSize)\r
@@ -875,8 +903,9 @@ S3ResumeExecuteBootScript (
   //\r
   // Never run to here\r
   //\r
-  CpuDeadLoop();\r
+  CpuDeadLoop ();\r
 }\r
+\r
 /**\r
   Restores the platform to its preboot configuration for an S3 resume and\r
   jumps to the OS waking vector.\r
@@ -914,32 +943,32 @@ S3RestoreConfig2 (
   IN EFI_PEI_S3_RESUME2_PPI  *This\r
   )\r
 {\r
-  EFI_STATUS                                    Status;\r
-  PEI_SMM_ACCESS_PPI                            *SmmAccess;\r
-  UINTN                                         Index;\r
-  ACPI_S3_CONTEXT                               *AcpiS3Context;\r
-  EFI_PHYSICAL_ADDRESS                          TempEfiBootScriptExecutorVariable;\r
-  EFI_PHYSICAL_ADDRESS                          TempAcpiS3Context;\r
-  BOOT_SCRIPT_EXECUTOR_VARIABLE                 *EfiBootScriptExecutorVariable;\r
-  UINTN                                         VarSize;\r
-  EFI_SMRAM_DESCRIPTOR                          *SmramDescriptor;\r
-  SMM_S3_RESUME_STATE                           *SmmS3ResumeState;\r
-  VOID                                          *GuidHob;\r
-  BOOLEAN                                       Build4GPageTableOnly;\r
-  BOOLEAN                                       InterruptStatus;\r
-  IA32_CR0                                      Cr0;\r
-\r
-  TempAcpiS3Context = 0;\r
+  EFI_STATUS                     Status;\r
+  PEI_SMM_ACCESS_PPI             *SmmAccess;\r
+  UINTN                          Index;\r
+  ACPI_S3_CONTEXT                *AcpiS3Context;\r
+  EFI_PHYSICAL_ADDRESS           TempEfiBootScriptExecutorVariable;\r
+  EFI_PHYSICAL_ADDRESS           TempAcpiS3Context;\r
+  BOOT_SCRIPT_EXECUTOR_VARIABLE  *EfiBootScriptExecutorVariable;\r
+  UINTN                          VarSize;\r
+  EFI_SMRAM_DESCRIPTOR           *SmramDescriptor;\r
+  SMM_S3_RESUME_STATE            *SmmS3ResumeState;\r
+  VOID                           *GuidHob;\r
+  BOOLEAN                        Build4GPageTableOnly;\r
+  BOOLEAN                        InterruptStatus;\r
+  IA32_CR0                       Cr0;\r
+\r
+  TempAcpiS3Context                 = 0;\r
   TempEfiBootScriptExecutorVariable = 0;\r
 \r
   DEBUG ((DEBUG_INFO, "Enter S3 PEIM\r\n"));\r
 \r
   VarSize = sizeof (EFI_PHYSICAL_ADDRESS);\r
-  Status = RestoreLockBox (\r
-             &gEfiAcpiVariableGuid,\r
-             &TempAcpiS3Context,\r
-             &VarSize\r
-             );\r
+  Status  = RestoreLockBox (\r
+              &gEfiAcpiVariableGuid,\r
+              &TempAcpiS3Context,\r
+              &VarSize\r
+              );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   Status = RestoreLockBox (\r
@@ -952,12 +981,12 @@ S3RestoreConfig2 (
   AcpiS3Context = (ACPI_S3_CONTEXT *)(UINTN)TempAcpiS3Context;\r
   ASSERT (AcpiS3Context != NULL);\r
 \r
-  VarSize   = sizeof (EFI_PHYSICAL_ADDRESS);\r
-  Status = RestoreLockBox (\r
-             &gEfiBootScriptExecutorVariableGuid,\r
-             &TempEfiBootScriptExecutorVariable,\r
-             &VarSize\r
-             );\r
+  VarSize = sizeof (EFI_PHYSICAL_ADDRESS);\r
+  Status  = RestoreLockBox (\r
+              &gEfiBootScriptExecutorVariableGuid,\r
+              &TempEfiBootScriptExecutorVariable,\r
+              &VarSize\r
+              );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
   Status = RestoreLockBox (\r
@@ -967,18 +996,18 @@ S3RestoreConfig2 (
              );\r
   ASSERT_EFI_ERROR (Status);\r
 \r
-  EfiBootScriptExecutorVariable = (BOOT_SCRIPT_EXECUTOR_VARIABLE *) (UINTN) TempEfiBootScriptExecutorVariable;\r
+  EfiBootScriptExecutorVariable = (BOOT_SCRIPT_EXECUTOR_VARIABLE *)(UINTN)TempEfiBootScriptExecutorVariable;\r
   ASSERT (EfiBootScriptExecutorVariable != NULL);\r
 \r
-  DEBUG (( DEBUG_INFO, "AcpiS3Context = %x\n", AcpiS3Context));\r
-  DEBUG (( DEBUG_INFO, "Waking Vector = %x\n", ((EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *) ((UINTN) (AcpiS3Context->AcpiFacsTable)))->FirmwareWakingVector));\r
-  DEBUG (( DEBUG_INFO, "AcpiS3Context->AcpiFacsTable = %x\n", AcpiS3Context->AcpiFacsTable));\r
-  DEBUG (( DEBUG_INFO, "AcpiS3Context->IdtrProfile = %x\n", AcpiS3Context->IdtrProfile));\r
-  DEBUG (( DEBUG_INFO, "AcpiS3Context->S3NvsPageTableAddress = %x\n", AcpiS3Context->S3NvsPageTableAddress));\r
-  DEBUG (( DEBUG_INFO, "AcpiS3Context->S3DebugBufferAddress = %x\n", AcpiS3Context->S3DebugBufferAddress));\r
-  DEBUG (( DEBUG_INFO, "AcpiS3Context->BootScriptStackBase = %x\n", AcpiS3Context->BootScriptStackBase));\r
-  DEBUG (( DEBUG_INFO, "AcpiS3Context->BootScriptStackSize = %x\n", AcpiS3Context->BootScriptStackSize));\r
-  DEBUG (( DEBUG_INFO, "EfiBootScriptExecutorVariable->BootScriptExecutorEntrypoint = %x\n", EfiBootScriptExecutorVariable->BootScriptExecutorEntrypoint));\r
+  DEBUG ((DEBUG_INFO, "AcpiS3Context = %x\n", AcpiS3Context));\r
+  DEBUG ((DEBUG_INFO, "Waking Vector = %x\n", ((EFI_ACPI_2_0_FIRMWARE_ACPI_CONTROL_STRUCTURE *)((UINTN)(AcpiS3Context->AcpiFacsTable)))->FirmwareWakingVector));\r
+  DEBUG ((DEBUG_INFO, "AcpiS3Context->AcpiFacsTable = %x\n", AcpiS3Context->AcpiFacsTable));\r
+  DEBUG ((DEBUG_INFO, "AcpiS3Context->IdtrProfile = %x\n", AcpiS3Context->IdtrProfile));\r
+  DEBUG ((DEBUG_INFO, "AcpiS3Context->S3NvsPageTableAddress = %x\n", AcpiS3Context->S3NvsPageTableAddress));\r
+  DEBUG ((DEBUG_INFO, "AcpiS3Context->S3DebugBufferAddress = %x\n", AcpiS3Context->S3DebugBufferAddress));\r
+  DEBUG ((DEBUG_INFO, "AcpiS3Context->BootScriptStackBase = %x\n", AcpiS3Context->BootScriptStackBase));\r
+  DEBUG ((DEBUG_INFO, "AcpiS3Context->BootScriptStackSize = %x\n", AcpiS3Context->BootScriptStackSize));\r
+  DEBUG ((DEBUG_INFO, "EfiBootScriptExecutorVariable->BootScriptExecutorEntrypoint = %x\n", EfiBootScriptExecutorVariable->BootScriptExecutorEntrypoint));\r
 \r
   //\r
   // Additional step for BootScript integrity - we only handle BootScript and BootScriptExecutor.\r
@@ -1001,6 +1030,7 @@ S3RestoreConfig2 (
     } else {\r
       Build4GPageTableOnly = TRUE;\r
     }\r
+\r
     RestoreS3PageTables ((UINTN)AcpiS3Context->S3NvsPageTableAddress, Build4GPageTableOnly);\r
   }\r
 \r
@@ -1014,19 +1044,19 @@ S3RestoreConfig2 (
     // assumption that it's in 32 bits mode now.\r
     // Add ASSERT code to indicate this assumption.\r
     //\r
-    ASSERT(sizeof (UINTN) == sizeof (UINT32));\r
+    ASSERT (sizeof (UINTN) == sizeof (UINT32));\r
 \r
     Status = PeiServicesLocatePpi (\r
-                              &gPeiSmmAccessPpiGuid,\r
-                              0,\r
-                              NULL,\r
-                              (VOID **) &SmmAccess\r
-                              );\r
+               &gPeiSmmAccessPpiGuid,\r
+               0,\r
+               NULL,\r
+               (VOID **)&SmmAccess\r
+               );\r
     for (Index = 0; !EFI_ERROR (Status); Index++) {\r
       Status = SmmAccess->Open ((EFI_PEI_SERVICES **)GetPeiServicesTablePointer (), SmmAccess, Index);\r
     }\r
 \r
-    SmramDescriptor = (EFI_SMRAM_DESCRIPTOR *) GET_GUID_HOB_DATA (GuidHob);\r
+    SmramDescriptor  = (EFI_SMRAM_DESCRIPTOR *)GET_GUID_HOB_DATA (GuidHob);\r
     SmmS3ResumeState = (SMM_S3_RESUME_STATE *)(UINTN)SmramDescriptor->CpuStart;\r
 \r
     SmmS3ResumeState->ReturnCs           = AsmReadCs ();\r
@@ -1035,19 +1065,19 @@ S3RestoreConfig2 (
     SmmS3ResumeState->ReturnContext2     = (EFI_PHYSICAL_ADDRESS)(UINTN)EfiBootScriptExecutorVariable;\r
     SmmS3ResumeState->ReturnStackPointer = (EFI_PHYSICAL_ADDRESS)STACK_ALIGN_DOWN (&Status);\r
 \r
-    DEBUG (( DEBUG_INFO, "SMM S3 Signature                = %x\n", SmmS3ResumeState->Signature));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 Stack Base               = %x\n", SmmS3ResumeState->SmmS3StackBase));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 Stack Size               = %x\n", SmmS3ResumeState->SmmS3StackSize));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 Resume Entry Point       = %x\n", SmmS3ResumeState->SmmS3ResumeEntryPoint));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 CR0                      = %x\n", SmmS3ResumeState->SmmS3Cr0));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 CR3                      = %x\n", SmmS3ResumeState->SmmS3Cr3));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 CR4                      = %x\n", SmmS3ResumeState->SmmS3Cr4));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 Return CS                = %x\n", SmmS3ResumeState->ReturnCs));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 Return Entry Point       = %x\n", SmmS3ResumeState->ReturnEntryPoint));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 Return Context1          = %x\n", SmmS3ResumeState->ReturnContext1));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 Return Context2          = %x\n", SmmS3ResumeState->ReturnContext2));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 Return Stack Pointer     = %x\n", SmmS3ResumeState->ReturnStackPointer));\r
-    DEBUG (( DEBUG_INFO, "SMM S3 Smst                     = %x\n", SmmS3ResumeState->Smst));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Signature                = %x\n", SmmS3ResumeState->Signature));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Stack Base               = %x\n", SmmS3ResumeState->SmmS3StackBase));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Stack Size               = %x\n", SmmS3ResumeState->SmmS3StackSize));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Resume Entry Point       = %x\n", SmmS3ResumeState->SmmS3ResumeEntryPoint));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 CR0                      = %x\n", SmmS3ResumeState->SmmS3Cr0));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 CR3                      = %x\n", SmmS3ResumeState->SmmS3Cr3));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 CR4                      = %x\n", SmmS3ResumeState->SmmS3Cr4));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Return CS                = %x\n", SmmS3ResumeState->ReturnCs));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Return Entry Point       = %x\n", SmmS3ResumeState->ReturnEntryPoint));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Return Context1          = %x\n", SmmS3ResumeState->ReturnContext1));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Return Context2          = %x\n", SmmS3ResumeState->ReturnContext2));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Return Stack Pointer     = %x\n", SmmS3ResumeState->ReturnStackPointer));\r
+    DEBUG ((DEBUG_INFO, "SMM S3 Smst                     = %x\n", SmmS3ResumeState->Smst));\r
 \r
     if (SmmS3ResumeState->Signature == SMM_S3_RESUME_SMM_32) {\r
       SwitchStack (\r
@@ -1057,6 +1087,7 @@ S3RestoreConfig2 (
         (VOID *)(UINTN)(SmmS3ResumeState->SmmS3StackBase + SmmS3ResumeState->SmmS3StackSize)\r
         );\r
     }\r
+\r
     if (SmmS3ResumeState->Signature == SMM_S3_RESUME_SMM_64) {\r
       //\r
       // Switch to long mode to complete resume.\r
@@ -1085,6 +1116,7 @@ S3RestoreConfig2 (
         Cr0.Bits.PG = 0;\r
         AsmWriteCr0 (Cr0.UintN);\r
       }\r
+\r
       AsmWriteCr3 ((UINTN)SmmS3ResumeState->SmmS3Cr3);\r
 \r
       //\r
@@ -1102,12 +1134,12 @@ S3RestoreConfig2 (
         SmmS3ResumeState->SmmS3StackBase + SmmS3ResumeState->SmmS3StackSize\r
         );\r
     }\r
-\r
   }\r
 \r
-  S3ResumeExecuteBootScript (AcpiS3Context, EfiBootScriptExecutorVariable );\r
+  S3ResumeExecuteBootScript (AcpiS3Context, EfiBootScriptExecutorVariable);\r
   return EFI_SUCCESS;\r
 }\r
+\r
 /**\r
   Main entry for S3 Resume PEIM.\r
 \r
@@ -1122,8 +1154,8 @@ S3RestoreConfig2 (
 EFI_STATUS\r
 EFIAPI\r
 PeimS3ResumeEntryPoint (\r
-  IN EFI_PEI_FILE_HANDLE       FileHandle,\r
-  IN CONST EFI_PEI_SERVICES    **PeiServices\r
+  IN EFI_PEI_FILE_HANDLE     FileHandle,\r
+  IN CONST EFI_PEI_SERVICES  **PeiServices\r
   )\r
 {\r
   EFI_STATUS  Status;\r