+// Returns TRUE if this file is a valid EFI loader file, and is proper ARCH
+static BOOLEAN IsValidLoader(REFIT_VOLUME *Volume, CHAR16 *FileName) {
+#if defined (EFIX64)
+#define EFI_STUB_ARCH 0x8664
+#else
+#define EFI_STUB_ARCH 0x14c
+#endif
+#define FAT_ARCH 0x0ef1fab9 /* ID for Apple "fat" binary */
+ EFI_STATUS Status;
+ EFI_FILE_HANDLE FileHandle;
+ CHAR8 Header[512];
+ UINTN Size = sizeof(Header);
+ BOOLEAN IsValid;
+
+ Status = refit_call5_wrapper(Volume->RootDir->Open, Volume->RootDir, &FileHandle, FileName, EFI_FILE_MODE_READ, 0);
+ if (EFI_ERROR(Status))
+ return 0;
+
+ Status = refit_call3_wrapper(FileHandle->Read, FileHandle, &Size, Header);
+ refit_call1_wrapper(FileHandle->Close, FileHandle);
+
+ IsValid = !EFI_ERROR(Status) &&
+ Size == sizeof(Header) &&
+ ((Header[0] == 'M' && Header[1] == 'Z' &&
+ (Size = *(UINT32 *)&Header[0x3c]) < 0x180 &&
+ Header[Size] == 'P' && Header[Size+1] == 'E' &&
+ Header[Size+2] == 0 && Header[Size+3] == 0 &&
+ *(UINT16 *)&Header[Size+4] == EFI_STUB_ARCH) ||
+ (*(UINT32 *)&Header == FAT_ARCH));
+ return IsValid;
+} // BOOLEAN IsValidLoader()
+