diff --git a/ChocolArm64/Translation/AILEmitterCtx.cs b/ChocolArm64/Translation/AILEmitterCtx.cs
index 466594694..03b06610b 100644
--- a/ChocolArm64/Translation/AILEmitterCtx.cs
+++ b/ChocolArm64/Translation/AILEmitterCtx.cs
@@ -72,7 +72,7 @@ namespace ChocolArm64.Translation
 
             Emitter = new AILEmitter(Graph, Root, SubName);
 
-            ILBlock = Emitter.GetILBlock(0);          
+            ILBlock = Emitter.GetILBlock(0);
 
             OpcIndex = -1;
 
@@ -260,18 +260,24 @@ namespace ChocolArm64.Translation
                 case AIntType.Int64:  Emit(OpCodes.Conv_I8); break;
             }
 
-            if (IntType == AIntType.UInt64 ||
-                IntType == AIntType.Int64)
+            bool Sz64 = CurrOp.RegisterSize != ARegisterSize.Int32;
+
+            if (Sz64 == (IntType == AIntType.UInt64 ||
+                         IntType == AIntType.Int64))
             {
                 return;
             }
 
-            if (CurrOp.RegisterSize != ARegisterSize.Int32)
+            if (Sz64)
             {
                 Emit(IntType >= AIntType.Int8
                     ? OpCodes.Conv_I8
                     : OpCodes.Conv_U8);
             }
+            else
+            {
+                Emit(OpCodes.Conv_U4);
+            }
         }
 
         public void EmitLsl(int Amount) => EmitILShift(Amount, OpCodes.Shl);
@@ -298,7 +304,7 @@ namespace ChocolArm64.Translation
                 EmitLdc_I4(Amount);
 
                 Emit(OpCodes.Shr_Un);
-                
+
                 Ldloc(Tmp2Index, AIoType.Int);
 
                 EmitLdc_I4(CurrOp.GetBitsCount() - Amount);