]> git.proxmox.com Git - mirror_edk2.git/blobdiff - MdePkg/Library/BaseSafeIntLib/SafeIntLib.c
UefiCpuPkg: Move AsmRelocateApLoopStart from Mpfuncs.nasm to AmdSev.nasm
[mirror_edk2.git] / MdePkg / Library / BaseSafeIntLib / SafeIntLib.c
index de91ffeca2a560b17b0bbc8cd7dd6309b745c9e3..13fe84d4b3c0d18f0ec59689c07e220edf6de375 100644 (file)
@@ -5,35 +5,18 @@
   Copyright (c) 2017, Microsoft Corporation\r
 \r
   All rights reserved.\r
-  Redistribution and use in source and binary forms, with or without\r
-  modification, are permitted provided that the following conditions are met:\r
-  1. Redistributions of source code must retain the above copyright notice,\r
-  this list of conditions and the following disclaimer.\r
-  2. Redistributions in binary form must reproduce the above copyright notice,\r
-  this list of conditions and the following disclaimer in the documentation\r
-  and/or other materials provided with the distribution.\r
-\r
-  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND\r
-  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED\r
-  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.\r
-  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,\r
-  INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,\r
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\r
-  DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
-  LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE\r
-  OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF\r
-  ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+  SPDX-License-Identifier: BSD-2-Clause-Patent\r
 \r
 **/\r
 \r
 #include <Base.h>\r
 #include <Library/SafeIntLib.h>\r
-\r
+#include <Library/BaseLib.h>\r
 \r
 //\r
 // Magnitude of MIN_INT64 as expressed by a UINT64 number.\r
 //\r
-#define MIN_INT64_MAGNITUDE (((UINT64)(- (MIN_INT64 + 1))) + 1)\r
+#define MIN_INT64_MAGNITUDE  (((UINT64)(- (MIN_INT64 + 1))) + 1)\r
 \r
 //\r
 // Conversion functions\r
@@ -85,10 +68,10 @@ SafeInt8ToUint8 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -129,10 +112,10 @@ SafeInt8ToChar8 (
 \r
   if (Operand >= 0) {\r
     *Result = (CHAR8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -173,10 +156,10 @@ SafeInt8ToUint16 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -217,10 +200,10 @@ SafeInt8ToUint32 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT32)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -261,10 +244,10 @@ SafeInt8ToUintn (
 \r
   if (Operand >= 0) {\r
     *Result = (UINTN)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINTN_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -305,10 +288,10 @@ SafeInt8ToUint64 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT64)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -349,10 +332,10 @@ SafeUint8ToInt8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -393,10 +376,10 @@ SafeUint8ToChar8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (CHAR8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -437,10 +420,10 @@ SafeInt16ToInt8 (
 \r
   if ((Operand >= MIN_INT8) && (Operand <= MAX_INT8)) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -481,10 +464,10 @@ SafeInt16ToChar8 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_INT8)) {\r
     *Result = (CHAR8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -525,10 +508,10 @@ SafeInt16ToUint8 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_UINT8)) {\r
     *Result = (UINT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -569,10 +552,10 @@ SafeInt16ToUint16 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -613,10 +596,10 @@ SafeInt16ToUint32 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT32)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -657,10 +640,10 @@ SafeInt16ToUintn (
 \r
   if (Operand >= 0) {\r
     *Result = (UINTN)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINTN_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -701,10 +684,10 @@ SafeInt16ToUint64 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT64)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -745,10 +728,10 @@ SafeUint16ToInt8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -789,10 +772,10 @@ SafeUint16ToChar8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -833,10 +816,10 @@ SafeUint16ToUint8 (
 \r
   if (Operand <= MAX_UINT8) {\r
     *Result = (UINT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -877,10 +860,10 @@ SafeUint16ToInt16 (
 \r
   if (Operand <= MAX_INT16) {\r
     *Result = (INT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -921,10 +904,10 @@ SafeInt32ToInt8 (
 \r
   if ((Operand >= MIN_INT8) && (Operand <= MAX_INT8)) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -965,10 +948,10 @@ SafeInt32ToChar8 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_INT8)) {\r
     *Result = (CHAR8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1009,10 +992,10 @@ SafeInt32ToUint8 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_UINT8)) {\r
     *Result = (UINT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1053,10 +1036,10 @@ SafeInt32ToInt16 (
 \r
   if ((Operand >= MIN_INT16) && (Operand <= MAX_INT16)) {\r
     *Result = (INT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1097,10 +1080,10 @@ SafeInt32ToUint16 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_UINT16)) {\r
     *Result = (UINT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1141,10 +1124,10 @@ SafeInt32ToUint32 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT32)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1185,10 +1168,10 @@ SafeInt32ToUint64 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT64)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1229,10 +1212,10 @@ SafeUint32ToInt8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1273,10 +1256,10 @@ SafeUint32ToChar8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1317,10 +1300,10 @@ SafeUint32ToUint8 (
 \r
   if (Operand <= MAX_UINT8) {\r
     *Result = (UINT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1361,10 +1344,10 @@ SafeUint32ToInt16 (
 \r
   if (Operand <= MAX_INT16) {\r
     *Result = (INT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1405,10 +1388,10 @@ SafeUint32ToUint16 (
 \r
   if (Operand <= MAX_UINT16) {\r
     *Result = (UINT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1449,10 +1432,10 @@ SafeUint32ToInt32 (
 \r
   if (Operand <= MAX_INT32) {\r
     *Result = (INT32)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1493,10 +1476,10 @@ SafeIntnToInt8 (
 \r
   if ((Operand >= MIN_INT8) && (Operand <= MAX_INT8)) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1537,10 +1520,10 @@ SafeIntnToChar8 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_INT8)) {\r
     *Result = (CHAR8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1581,10 +1564,10 @@ SafeIntnToUint8 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_UINT8)) {\r
     *Result = (UINT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1625,10 +1608,10 @@ SafeIntnToInt16 (
 \r
   if ((Operand >= MIN_INT16) && (Operand <= MAX_INT16)) {\r
     *Result = (INT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1669,10 +1652,10 @@ SafeIntnToUint16 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_UINT16)) {\r
     *Result = (UINT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1713,10 +1696,10 @@ SafeIntnToUintn (
 \r
   if (Operand >= 0) {\r
     *Result = (UINTN)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINTN_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1757,10 +1740,10 @@ SafeIntnToUint64 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT64)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1801,10 +1784,10 @@ SafeUintnToInt8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1845,10 +1828,10 @@ SafeUintnToChar8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1889,10 +1872,10 @@ SafeUintnToUint8 (
 \r
   if (Operand <= MAX_UINT8) {\r
     *Result = (UINT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1933,10 +1916,10 @@ SafeUintnToInt16 (
 \r
   if (Operand <= MAX_INT16) {\r
     *Result = (INT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -1977,10 +1960,10 @@ SafeUintnToUint16 (
 \r
   if (Operand <= MAX_UINT16) {\r
     *Result = (UINT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2021,10 +2004,10 @@ SafeUintnToInt32 (
 \r
   if (Operand <= MAX_INT32) {\r
     *Result = (INT32)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2065,10 +2048,10 @@ SafeUintnToIntn (
 \r
   if (Operand <= MAX_INTN) {\r
     *Result = (INTN)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INTN_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2109,10 +2092,10 @@ SafeInt64ToInt8 (
 \r
   if ((Operand >= MIN_INT8) && (Operand <= MAX_INT8)) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2153,10 +2136,10 @@ SafeInt64ToChar8 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_INT8)) {\r
     *Result = (CHAR8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2197,10 +2180,10 @@ SafeInt64ToUint8 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_UINT8)) {\r
     *Result = (UINT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2241,10 +2224,10 @@ SafeInt64ToInt16 (
 \r
   if ((Operand >= MIN_INT16) && (Operand <= MAX_INT16)) {\r
     *Result = (INT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2285,10 +2268,10 @@ SafeInt64ToUint16 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_UINT16)) {\r
     *Result = (UINT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2329,10 +2312,10 @@ SafeInt64ToInt32 (
 \r
   if ((Operand >= MIN_INT32) && (Operand <= MAX_INT32)) {\r
     *Result = (INT32)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2373,10 +2356,10 @@ SafeInt64ToUint32 (
 \r
   if ((Operand >= 0) && (Operand <= MAX_UINT32)) {\r
     *Result = (UINT32)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2417,10 +2400,10 @@ SafeInt64ToUint64 (
 \r
   if (Operand >= 0) {\r
     *Result = (UINT64)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2461,10 +2444,10 @@ SafeUint64ToInt8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2505,10 +2488,10 @@ SafeUint64ToChar8 (
 \r
   if (Operand <= MAX_INT8) {\r
     *Result = (INT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = CHAR8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2549,10 +2532,10 @@ SafeUint64ToUint8 (
 \r
   if (Operand <= MAX_UINT8) {\r
     *Result = (UINT8)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2593,10 +2576,10 @@ SafeUint64ToInt16 (
 \r
   if (Operand <= MAX_INT16) {\r
     *Result = (INT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2637,10 +2620,10 @@ SafeUint64ToUint16 (
 \r
   if (Operand <= MAX_UINT16) {\r
     *Result = (UINT16)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2681,10 +2664,10 @@ SafeUint64ToInt32 (
 \r
   if (Operand <= MAX_INT32) {\r
     *Result = (INT32)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2725,10 +2708,10 @@ SafeUint64ToUint32 (
 \r
   if (Operand <= MAX_UINT32) {\r
     *Result = (UINT32)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2769,10 +2752,10 @@ SafeUint64ToIntn (
 \r
   if (Operand <= MAX_INTN) {\r
     *Result = (INTN)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INTN_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2813,10 +2796,10 @@ SafeUint64ToInt64 (
 \r
   if (Operand <= MAX_INT64) {\r
     *Result = (INT64)Operand;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = INT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2863,10 +2846,10 @@ SafeUint8Add (
 \r
   if (((UINT8)(Augend + Addend)) >= Augend) {\r
     *Result = (UINT8)(Augend + Addend);\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2909,10 +2892,10 @@ SafeUint16Add (
 \r
   if (((UINT16)(Augend + Addend)) >= Augend) {\r
     *Result = (UINT16)(Augend + Addend);\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -2955,10 +2938,10 @@ SafeUint32Add (
 \r
   if ((Augend + Addend) >= Augend) {\r
     *Result = (Augend + Addend);\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -3001,10 +2984,10 @@ SafeUint64Add (
 \r
   if ((Augend + Addend) >= Augend) {\r
     *Result = (Augend + Addend);\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -3051,10 +3034,10 @@ SafeUint8Sub (
 \r
   if (Minuend >= Subtrahend) {\r
     *Result = (UINT8)(Minuend - Subtrahend);\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT8_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -3097,10 +3080,10 @@ SafeUint16Sub (
 \r
   if (Minuend >= Subtrahend) {\r
     *Result = (UINT16)(Minuend - Subtrahend);\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT16_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -3143,10 +3126,10 @@ SafeUint32Sub (
 \r
   if (Minuend >= Subtrahend) {\r
     *Result = (Minuend - Subtrahend);\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT32_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -3189,10 +3172,10 @@ SafeUint64Sub (
 \r
   if (Minuend >= Subtrahend) {\r
     *Result = (Minuend - Subtrahend);\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     *Result = UINT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   }\r
 \r
   return Status;\r
@@ -3305,7 +3288,7 @@ SafeUint32Mult (
 {\r
   UINT64  IntermediateResult;\r
 \r
-  IntermediateResult = ((UINT64) Multiplicand) *((UINT64) Multiplier);\r
+  IntermediateResult = ((UINT64)Multiplicand) *((UINT64)Multiplier);\r
 \r
   return SafeUint64ToUint32 (IntermediateResult, Result);\r
 }\r
@@ -3353,11 +3336,11 @@ SafeUint64Mult (
     return RETURN_INVALID_PARAMETER;\r
   }\r
 \r
-  ProductAD = 0;\r
-  ProductBC = 0;\r
-  ProductBD = 0;\r
+  ProductAD      = 0;\r
+  ProductBC      = 0;\r
+  ProductBD      = 0;\r
   UnsignedResult = 0;\r
-  Status = RETURN_BUFFER_TOO_SMALL;\r
+  Status         = RETURN_BUFFER_TOO_SMALL;\r
 \r
   //\r
   // 64x64 into 128 is like 32.32 x 32.32.\r
@@ -3373,8 +3356,8 @@ SafeUint64Mult (
   // b * c must be less than 2^32 or there would be bits in the high 64-bits\r
   // then there must be no overflow of the resulting values summed up.\r
   //\r
-  DwordA = (UINT32)(Multiplicand >> 32);\r
-  DwordC = (UINT32)(Multiplier >> 32);\r
+  DwordA = (UINT32)RShiftU64 (Multiplicand, 32);\r
+  DwordC = (UINT32)RShiftU64 (Multiplier, 32);\r
 \r
   //\r
   // common case -- if high dwords are both zero, no chance for overflow\r
@@ -3384,40 +3367,41 @@ SafeUint64Mult (
     DwordD = (UINT32)Multiplier;\r
 \r
     *Result = (((UINT64)DwordB) *(UINT64)DwordD);\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   } else {\r
     //\r
     // a * c must be 0 or there would be bits set in the high 64-bits\r
     //\r
     if ((DwordA == 0) ||\r
-        (DwordC == 0)) {\r
+        (DwordC == 0))\r
+    {\r
       DwordD = (UINT32)Multiplier;\r
 \r
       //\r
       // a * d must be less than 2^32 or there would be bits set in the high 64-bits\r
       //\r
-      ProductAD = (((UINT64)DwordA) *(UINT64)DwordD);\r
+      ProductAD = MultU64x64 ((UINT64)DwordA, (UINT64)DwordD);\r
       if ((ProductAD & 0xffffffff00000000) == 0) {\r
         DwordB = (UINT32)Multiplicand;\r
 \r
         //\r
         // b * c must be less than 2^32 or there would be bits set in the high 64-bits\r
         //\r
-        ProductBC = (((UINT64)DwordB) *(UINT64)DwordC);\r
+        ProductBC = MultU64x64 ((UINT64)DwordB, (UINT64)DwordC);\r
         if ((ProductBC & 0xffffffff00000000) == 0) {\r
           //\r
           // now sum them all up checking for overflow.\r
           // shifting is safe because we already checked for overflow above\r
           //\r
-          if (!RETURN_ERROR (SafeUint64Add (ProductBC << 32, ProductAD << 32, &UnsignedResult))) {\r
+          if (!RETURN_ERROR (SafeUint64Add (LShiftU64 (ProductBC, 32), LShiftU64 (ProductAD, 32), &UnsignedResult))) {\r
             //\r
             // b * d\r
             //\r
-            ProductBD = (((UINT64)DwordB) *(UINT64)DwordD);\r
+            ProductBD = MultU64x64 ((UINT64)DwordB, (UINT64)DwordD);\r
 \r
             if (!RETURN_ERROR (SafeUint64Add (UnsignedResult, ProductBD, &UnsignedResult))) {\r
               *Result = UnsignedResult;\r
-              Status = RETURN_SUCCESS;\r
+              Status  = RETURN_SUCCESS;\r
             }\r
           }\r
         }\r
@@ -3428,6 +3412,7 @@ SafeUint64Mult (
   if (RETURN_ERROR (Status)) {\r
     *Result = UINT64_ERROR;\r
   }\r
+\r
   return Status;\r
 }\r
 \r
@@ -3525,11 +3510,12 @@ SafeChar8Add (
 \r
   Augend32 = (INT32)Augend;\r
   Addend32 = (INT32)Addend;\r
-  if (Augend32 < 0 || Augend32 > MAX_INT8) {\r
+  if ((Augend32 < 0) || (Augend32 > MAX_INT8)) {\r
     *Result = CHAR8_ERROR;\r
     return RETURN_BUFFER_TOO_SMALL;\r
   }\r
-  if (Addend32 < 0 || Addend32 > MAX_INT8) {\r
+\r
+  if ((Addend32 < 0) || (Addend32 > MAX_INT8)) {\r
     *Result = CHAR8_ERROR;\r
     return RETURN_BUFFER_TOO_SMALL;\r
   }\r
@@ -3682,12 +3668,13 @@ SafeInt64Add (
   //     0 >= (MIN_INT64 - Addend) > MIN_INT64\r
   //\r
   if (((Addend > 0) && (Augend > (MAX_INT64 - Addend))) ||\r
-      ((Addend < 0) && (Augend < (MIN_INT64 - Addend)))) {\r
+      ((Addend < 0) && (Augend < (MIN_INT64 - Addend))))\r
+  {\r
     *Result = INT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   } else {\r
     *Result = Augend + Addend;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   }\r
 \r
   return Status;\r
@@ -3767,11 +3754,12 @@ SafeChar8Sub (
 \r
   Minuend32    = (INT32)Minuend;\r
   Subtrahend32 = (INT32)Subtrahend;\r
-  if (Minuend32 < 0 || Minuend32 > MAX_INT8) {\r
+  if ((Minuend32 < 0) || (Minuend32 > MAX_INT8)) {\r
     *Result = CHAR8_ERROR;\r
     return RETURN_BUFFER_TOO_SMALL;\r
   }\r
-  if (Subtrahend32 < 0 || Subtrahend32 > MAX_INT8) {\r
+\r
+  if ((Subtrahend32 < 0) || (Subtrahend32 > MAX_INT8)) {\r
     *Result = CHAR8_ERROR;\r
     return RETURN_BUFFER_TOO_SMALL;\r
   }\r
@@ -3917,12 +3905,13 @@ SafeInt64Sub (
   //     -1 = (MAX_INT64 + MIN_INT64) <= (MAX_INT64 + Subtrahend) < MAX_INT64\r
   //\r
   if (((Subtrahend > 0) && (Minuend < (MIN_INT64 + Subtrahend))) ||\r
-      ((Subtrahend < 0) && (Minuend > (MAX_INT64 + Subtrahend)))) {\r
+      ((Subtrahend < 0) && (Minuend > (MAX_INT64 + Subtrahend))))\r
+  {\r
     *Result = INT64_ERROR;\r
-    Status = RETURN_BUFFER_TOO_SMALL;\r
+    Status  = RETURN_BUFFER_TOO_SMALL;\r
   } else {\r
     *Result = Minuend - Subtrahend;\r
-    Status = RETURN_SUCCESS;\r
+    Status  = RETURN_SUCCESS;\r
   }\r
 \r
   return Status;\r
@@ -4002,11 +3991,12 @@ SafeChar8Mult (
 \r
   Multiplicand32 = (INT32)Multiplicand;\r
   Multiplier32   = (INT32)Multiplier;\r
-  if (Multiplicand32 < 0 || Multiplicand32 > MAX_INT8) {\r
+  if ((Multiplicand32 < 0) || (Multiplicand32 > MAX_INT8)) {\r
     *Result = CHAR8_ERROR;\r
     return RETURN_BUFFER_TOO_SMALL;\r
   }\r
-  if (Multiplier32 < 0 || Multiplier32 > MAX_INT8) {\r
+\r
+  if ((Multiplier32 < 0) || (Multiplier32 > MAX_INT8)) {\r
     *Result = CHAR8_ERROR;\r
     return RETURN_BUFFER_TOO_SMALL;\r
   }\r
@@ -4075,7 +4065,7 @@ SafeInt32Mult (
   OUT INT32  *Result\r
   )\r
 {\r
-  return SafeInt64ToInt32 (((INT64)Multiplicand) *((INT64)Multiplier), Result);\r
+  return SafeInt64ToInt32 (MultS64x64 (Multiplicand, Multiplier), Result);\r
 }\r
 \r
 /**\r
@@ -4123,7 +4113,7 @@ SafeInt64Mult (
     //\r
     // Avoid negating the most negative number.\r
     //\r
-    UnsignedMultiplicand = ((UINT64)(- (Multiplicand + 1))) + 1;\r
+    UnsignedMultiplicand = ((UINT64)(-(Multiplicand + 1))) + 1;\r
   } else {\r
     UnsignedMultiplicand = (UINT64)Multiplicand;\r
   }\r
@@ -4132,7 +4122,7 @@ SafeInt64Mult (
     //\r
     // Avoid negating the most negative number.\r
     //\r
-    UnsignedMultiplier = ((UINT64)(- (Multiplier + 1))) + 1;\r
+    UnsignedMultiplier = ((UINT64)(-(Multiplier + 1))) + 1;\r
   } else {\r
     UnsignedMultiplier = (UINT64)Multiplier;\r
   }\r
@@ -4142,14 +4132,16 @@ SafeInt64Mult (
     if ((Multiplicand < 0) != (Multiplier < 0)) {\r
       if (UnsignedResult > MIN_INT64_MAGNITUDE) {\r
         *Result = INT64_ERROR;\r
-        Status = RETURN_BUFFER_TOO_SMALL;\r
+        Status  = RETURN_BUFFER_TOO_SMALL;\r
+      } else if (UnsignedResult == MIN_INT64_MAGNITUDE) {\r
+        *Result = MIN_INT64;\r
       } else {\r
-        *Result = - ((INT64)UnsignedResult);\r
+        *Result = -((INT64)UnsignedResult);\r
       }\r
     } else {\r
       if (UnsignedResult > MAX_INT64) {\r
         *Result = INT64_ERROR;\r
-        Status = RETURN_BUFFER_TOO_SMALL;\r
+        Status  = RETURN_BUFFER_TOO_SMALL;\r
       } else {\r
         *Result = (INT64)UnsignedResult;\r
       }\r
@@ -4157,6 +4149,6 @@ SafeInt64Mult (
   } else {\r
     *Result = INT64_ERROR;\r
   }\r
+\r
   return Status;\r
 }\r
-\r