diff --git a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c
index 09b58ac..d5614b2 100644
--- a/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c
+++ b/MdeModulePkg/Bus/Pci/PciBusDxe/PciEnumerator.c
@@ -1127,7 +1127,7 @@
     //
     if ((Aperture & 0x02) != 0) {
       Ptr->Desc     = ACPI_ADDRESS_SPACE_DESCRIPTOR;
-      Ptr->Len      = sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3;
+      Ptr->Len      = (UINT16) (sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3);
       //
       // Mem
       //
@@ -1151,7 +1151,7 @@
     //
     if ((Aperture & 0x04) != 0) {
       Ptr->Desc     = ACPI_ADDRESS_SPACE_DESCRIPTOR;
-      Ptr->Len      = sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3;
+      Ptr->Len      = (UINT16) (sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3);
       //
       // Mem
       //
@@ -1174,7 +1174,7 @@
     //
     if ((Aperture & 0x08) != 0) {
       Ptr->Desc     = ACPI_ADDRESS_SPACE_DESCRIPTOR;
-      Ptr->Len      = sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3;
+      Ptr->Len      = (UINT16) (sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3);
       //
       // Mem
       //
@@ -1197,7 +1197,7 @@
     //
     if ((Aperture & 0x10) != 0) {
       Ptr->Desc     = ACPI_ADDRESS_SPACE_DESCRIPTOR;
-      Ptr->Len      = sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3;
+      Ptr->Len      = (UINT16) (sizeof (EFI_ACPI_ADDRESS_SPACE_DESCRIPTOR) - 3);
       //
       // Mem
       //
diff --git a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c
index 81f78cb..cb892e3 100644
--- a/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c
+++ b/MdeModulePkg/Bus/Usb/UsbBusDxe/UsbDesc.c
@@ -197,12 +197,12 @@
     return NULL;
   }
 
-  Desc = AllocateZeroPool (CtrlLen);
+  Desc = AllocateZeroPool ((UINTN) CtrlLen);
   if (Desc == NULL) {
     return NULL;
   }
 
-  CopyMem (Desc, Head, DescLen);
+  CopyMem (Desc, Head, (UINTN) DescLen);
 
   *Consumed = Offset + Head->Len;
 
diff --git a/MdeModulePkg/Core/Dxe/Event/Tpl.c b/MdeModulePkg/Core/Dxe/Event/Tpl.c
index 7fe9b12..240e8e4 100644
--- a/MdeModulePkg/Core/Dxe/Event/Tpl.c
+++ b/MdeModulePkg/Core/Dxe/Event/Tpl.c
@@ -118,7 +118,7 @@
   // Dispatch any pending events
   //
   while (((-2 << NewTpl) & gEventPending) != 0) {
-    gEfiCurrentTpl = HighBitSet64 (gEventPending);
+    gEfiCurrentTpl = (UINTN) HighBitSet64 (gEventPending);
     if (gEfiCurrentTpl < TPL_HIGH_LEVEL) {
       CoreSetInterruptState (TRUE);
     }
diff --git a/MdeModulePkg/Core/Dxe/Hand/Locate.c b/MdeModulePkg/Core/Dxe/Hand/Locate.c
index 9714f64..df7fa8f 100644
--- a/MdeModulePkg/Core/Dxe/Hand/Locate.c
+++ b/MdeModulePkg/Core/Dxe/Hand/Locate.c
@@ -490,7 +490,8 @@
     // Check if DevicePath is first part of SourcePath
     //
     Size = GetDevicePathSize (TmpDevicePath) - sizeof(EFI_DEVICE_PATH_PROTOCOL);
-    if ((Size <= SourceSize) && CompareMem (SourcePath, TmpDevicePath, Size) == 0) {
+    ASSERT (Size >= 0);
+    if ((Size <= SourceSize) && CompareMem (SourcePath, TmpDevicePath, (UINTN) Size) == 0) {
       //
       // If the size is equal to the best match, then we
       // have a duplicate device path for 2 different device
diff --git a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c
index bdea068..e6f732d 100644
--- a/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c
+++ b/MdeModulePkg/Universal/Console/GraphicsConsoleDxe/GraphicsConsole.c
@@ -816,8 +816,8 @@
 
   MaxColumn = Private->ModeData[Mode].Columns;
   MaxRow    = Private->ModeData[Mode].Rows;
-  DeltaX    = Private->ModeData[Mode].DeltaX;
-  DeltaY    = Private->ModeData[Mode].DeltaY;
+  DeltaX    = (UINTN) Private->ModeData[Mode].DeltaX;
+  DeltaY    = (UINTN) Private->ModeData[Mode].DeltaY;
   Width     = MaxColumn * EFI_GLYPH_WIDTH;
   Height    = (MaxRow - 1) * EFI_GLYPH_HEIGHT;
   Delta     = Width * sizeof (EFI_GRAPHICS_OUTPUT_BLT_PIXEL);
diff --git a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
index c80f1db..534c564 100644
--- a/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
+++ b/MdeModulePkg/Universal/HiiDatabaseDxe/Database.c
@@ -86,7 +86,7 @@
   // Backup the number of Hii handles
   //
   Private->HiiHandleCount++;
-  HiiHandle->Key = Private->HiiHandleCount;
+  HiiHandle->Key = (UINTN) Private->HiiHandleCount;
   //
   // Insert the handle to hii handle list of the whole database.
   //
diff --git a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c
index e8e127d..0884026 100644
--- a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c
+++ b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Impl.c
@@ -467,7 +467,7 @@
 {
   EFI_DHCP4_PACKET_OPTION   **DstOptions;
   EFI_DHCP4_PACKET_OPTION   **SrcOptions;
-  INTN                      Len;
+  UINTN                     Len;
   UINT32                    Index;
 
   CopyMem (Dst, Src, sizeof (*Dst));
diff --git a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Option.c b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Option.c
index ff48bec..d7700bc 100644
--- a/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Option.c
+++ b/MdeModulePkg/Universal/Network/Dhcp4Dxe/Dhcp4Option.c
@@ -611,7 +611,7 @@
   // Allocate a buffer to hold the DHCP options, and after that, a
   // continuous buffer to put all the options' data.
   //
-  Options = AllocateZeroPool (OptNum * sizeof (DHCP_OPTION) + TotalLen);
+  Options = AllocateZeroPool ((UINTN) (OptNum * sizeof (DHCP_OPTION)) + TotalLen);
 
   if (Options == NULL) {
     Status = EFI_OUT_OF_RESOURCES;
@@ -754,7 +754,7 @@
 
     *(Buf++) = Tag;
     *(Buf++) = (UINT8) Len;
-    CopyMem (Buf, Data + Index * 255, Len);
+    CopyMem (Buf, Data + Index * 255, (UINTN) Len);
 
     Buf     += Len;
   }
diff --git a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c
index bb4ce0a..26860e5 100644
--- a/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c
+++ b/MdeModulePkg/Universal/Network/Mtftp4Dxe/Mtftp4Support.c
@@ -223,7 +223,7 @@
 	  *TotalBlock  = Num;
 	  
       if (Range->Round > 0) {
-	    *TotalBlock += Range->Bound +  MultU64x32 (Range->Round -1, (UINT32)(Range->Bound + 1)) + 1;
+	    *TotalBlock += Range->Bound +  MultU64x32 ((UINTN) (Range->Round -1), (UINT32) (Range->Bound + 1)) + 1;
 	  }
 
       if (Range->Start > Range->Bound) {
diff --git a/MdeModulePkg/Universal/Network/SnpDxe/Transmit.c b/MdeModulePkg/Universal/Network/SnpDxe/Transmit.c
index ac6b664..e6c5af7 100644
--- a/MdeModulePkg/Universal/Network/SnpDxe/Transmit.c
+++ b/MdeModulePkg/Universal/Network/SnpDxe/Transmit.c
@@ -90,7 +90,7 @@
   Snp->Cdb.DBsize     = PXE_DBSIZE_NOT_USED;
   Snp->Cdb.DBaddr     = PXE_DBADDR_NOT_USED;
 
-  Snp->Cdb.CPBsize    = sizeof (PXE_CPB_FILL_HEADER_FRAGMENTED);
+  Snp->Cdb.CPBsize    = (UINT16) sizeof (PXE_CPB_FILL_HEADER_FRAGMENTED);
   Snp->Cdb.CPBaddr    = (UINT64)(UINTN) Cpb;
 
   Snp->Cdb.StatCode   = PXE_STATCODE_INITIALIZE;
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
index b124b72..4923478 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/IfrParse.c
@@ -1499,7 +1499,7 @@
         CurrentStatement->Minimum = ((EFI_IFR_NUMERIC *) OpCodeData)->data.u8.MinValue;
         CurrentStatement->Maximum = ((EFI_IFR_NUMERIC *) OpCodeData)->data.u8.MaxValue;
         CurrentStatement->Step    = ((EFI_IFR_NUMERIC *) OpCodeData)->data.u8.Step;
-        CurrentStatement->StorageWidth = sizeof (UINT8);
+        CurrentStatement->StorageWidth = (UINT16) sizeof (UINT8);
         Value->Type = EFI_IFR_TYPE_NUM_SIZE_8;
         break;
 
@@ -1507,7 +1507,7 @@
         CopyMem (&CurrentStatement->Minimum, &((EFI_IFR_NUMERIC *) OpCodeData)->data.u16.MinValue, sizeof (UINT16));
         CopyMem (&CurrentStatement->Maximum, &((EFI_IFR_NUMERIC *) OpCodeData)->data.u16.MaxValue, sizeof (UINT16));
         CopyMem (&CurrentStatement->Step,    &((EFI_IFR_NUMERIC *) OpCodeData)->data.u16.Step,     sizeof (UINT16));
-        CurrentStatement->StorageWidth = sizeof (UINT16);
+        CurrentStatement->StorageWidth = (UINT16) sizeof (UINT16);
         Value->Type = EFI_IFR_TYPE_NUM_SIZE_16;
         break;
 
@@ -1515,7 +1515,7 @@
         CopyMem (&CurrentStatement->Minimum, &((EFI_IFR_NUMERIC *) OpCodeData)->data.u32.MinValue, sizeof (UINT32));
         CopyMem (&CurrentStatement->Maximum, &((EFI_IFR_NUMERIC *) OpCodeData)->data.u32.MaxValue, sizeof (UINT32));
         CopyMem (&CurrentStatement->Step,    &((EFI_IFR_NUMERIC *) OpCodeData)->data.u32.Step,     sizeof (UINT32));
-        CurrentStatement->StorageWidth = sizeof (UINT32);
+        CurrentStatement->StorageWidth = (UINT16) sizeof (UINT32);
         Value->Type = EFI_IFR_TYPE_NUM_SIZE_32;
         break;
 
@@ -1523,7 +1523,7 @@
         CopyMem (&CurrentStatement->Minimum, &((EFI_IFR_NUMERIC *) OpCodeData)->data.u64.MinValue, sizeof (UINT64));
         CopyMem (&CurrentStatement->Maximum, &((EFI_IFR_NUMERIC *) OpCodeData)->data.u64.MaxValue, sizeof (UINT64));
         CopyMem (&CurrentStatement->Step,    &((EFI_IFR_NUMERIC *) OpCodeData)->data.u64.Step,     sizeof (UINT64));
-        CurrentStatement->StorageWidth = sizeof (UINT64);
+        CurrentStatement->StorageWidth = (UINT16) sizeof (UINT64);
         Value->Type = EFI_IFR_TYPE_NUM_SIZE_64;
         break;
 
@@ -1558,7 +1558,7 @@
       ASSERT(CurrentStatement != NULL);
 
       CurrentStatement->Flags = ((EFI_IFR_CHECKBOX *) OpCodeData)->Flags;
-      CurrentStatement->StorageWidth = sizeof (BOOLEAN);
+      CurrentStatement->StorageWidth = (UINT16) sizeof (BOOLEAN);
       CurrentStatement->HiiValue.Type = EFI_IFR_TYPE_BOOLEAN;
 
       InitializeRequestElement (FormSet, CurrentStatement);
@@ -1610,7 +1610,7 @@
       CurrentStatement->HiiValue.Type = EFI_IFR_TYPE_DATE;
 
       if ((CurrentStatement->Flags & EFI_QF_DATE_STORAGE) == QF_DATE_STORAGE_NORMAL) {
-        CurrentStatement->StorageWidth = sizeof (EFI_HII_DATE);
+        CurrentStatement->StorageWidth = (UINT16) sizeof (EFI_HII_DATE);
 
         InitializeRequestElement (FormSet, CurrentStatement);
       } else {
@@ -1630,7 +1630,7 @@
       CurrentStatement->HiiValue.Type = EFI_IFR_TYPE_TIME;
 
       if ((CurrentStatement->Flags & QF_TIME_STORAGE) == QF_TIME_STORAGE_NORMAL) {
-        CurrentStatement->StorageWidth = sizeof (EFI_IFR_TIME);
+        CurrentStatement->StorageWidth = (UINT16) sizeof (EFI_IFR_TIME);
 
         InitializeRequestElement (FormSet, CurrentStatement);
       } else {
diff --git a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c
index d916aeb..3310bb2 100644
--- a/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c
+++ b/MdeModulePkg/Universal/SetupBrowserDxe/Ui.c
@@ -1775,8 +1775,8 @@
         UpArrow         = FALSE;
         Row             = TopRow;
 
-        Temp            = SkipValue;
-        Temp2           = SkipValue;
+        Temp            = (UINTN) SkipValue;
+        Temp2           = (UINTN) SkipValue;
 
         ClearLines (
           LocalScreen.LeftColumn,
@@ -2532,6 +2532,7 @@
           }
           BufferSize = StrLen (StringPtr) / 2;
           DevicePath = AllocatePool (BufferSize);
+          ASSERT (DevicePath != NULL);
 
           //
           // Convert from Device Path String to DevicePath Buffer in the reverse order.
@@ -2940,6 +2941,7 @@
     case CfUiPageDown:
       ControlFlag     = CfCheckSelection;
 
+      ASSERT (NewPos != NULL);
       if (NewPos->ForwardLink == &gMenuOption) {
         NewLine = FALSE;
         Repaint = FALSE;
@@ -3007,7 +3009,7 @@
         //
         // An option might be multi-line, so we need to reflect that data in the overall skip value
         //
-        UpdateOptionSkipLines (Selection, NextMenuOption, &OptionString, SkipValue);
+        UpdateOptionSkipLines (Selection, NextMenuOption, &OptionString, (UINTN) SkipValue);
 
         Temp = MenuOption->Row + MenuOption->Skip + DistanceValue - 1;
         if ((MenuOption->Row + MenuOption->Skip == BottomRow + 1) &&
