+ EFI_STATUS Status;\r
+ CHAR8 AsciiStartingAddress[BOOT_DEVICE_ADDRESS_MAX];\r
+ CHAR8 AsciiEndingAddress[BOOT_DEVICE_ADDRESS_MAX];\r
+ MEMMAP_DEVICE_PATH* EndingDevicePath;\r
+ EFI_DEVICE_PATH* DevicePath;\r
+\r
+ DevicePath = DuplicateDevicePath (BootOption->FilePathList);\r
+ EndingDevicePath = (MEMMAP_DEVICE_PATH*)GetLastDevicePathNode (DevicePath);\r
+\r
+ Print(L"Starting Address of the binary: ");\r
+ AsciiSPrint (AsciiStartingAddress,BOOT_DEVICE_ADDRESS_MAX,"0x%X",(UINTN)EndingDevicePath->StartingAddress);\r
+ Status = EditHIInputAscii (AsciiStartingAddress,BOOT_DEVICE_ADDRESS_MAX);\r
+ if (EFI_ERROR(Status)) {\r
+ return EFI_ABORTED;\r
+ }\r
+\r
+ Print(L"Ending Address of the binary: ");\r
+ AsciiSPrint (AsciiEndingAddress,BOOT_DEVICE_ADDRESS_MAX,"0x%X",(UINTN)EndingDevicePath->EndingAddress);\r
+ Status = EditHIInputAscii (AsciiEndingAddress,BOOT_DEVICE_ADDRESS_MAX);\r
+ if (EFI_ERROR(Status)) {\r
+ return EFI_ABORTED;\r
+ }\r
+\r
+ EndingDevicePath->StartingAddress = AsciiStrHexToUint64 (AsciiStartingAddress);\r
+ EndingDevicePath->EndingAddress = AsciiStrHexToUint64 (AsciiEndingAddress);\r
+\r
+ Status = BootDeviceGetType (NULL, BootType, Attributes);\r
+ if (EFI_ERROR(Status)) {\r
+ FreePool(DevicePath);\r
+ } else {\r
+ *NewDevicePath = DevicePath;\r
+ }\r
+\r
+ return Status;\r