diff --git a/ChocolArm64/ATranslator.cs b/ChocolArm64/ATranslator.cs
index 02c18efd2b..f1bc2cff96 100644
--- a/ChocolArm64/ATranslator.cs
+++ b/ChocolArm64/ATranslator.cs
@@ -107,25 +107,31 @@ namespace ChocolArm64
 
             ATranslatedSub Subroutine = Context.GetSubroutine();
 
-            if (SubBlocks.Contains(Position))
+            lock (SubBlocks)
             {
-                SubBlocks.Remove(Position);
+                if (SubBlocks.Contains(Position))
+                {
+                    SubBlocks.Remove(Position);
 
-                Subroutine.SetType(ATranslatedSubType.SubBlock);
-            }
-            else
-            {
-                Subroutine.SetType(ATranslatedSubType.SubTier0);
+                    Subroutine.SetType(ATranslatedSubType.SubBlock);
+                }
+                else
+                {
+                    Subroutine.SetType(ATranslatedSubType.SubTier0);
+                }
             }
 
             CachedSubs.AddOrUpdate(Position, Subroutine, (Key, OldVal) => Subroutine);
 
             AOpCode LastOp = Block.GetLastOp();
 
-            if (LastOp.Emitter != AInstEmit.Ret &&
-                LastOp.Emitter != AInstEmit.Br)
+            lock (SubBlocks)
             {
-                SubBlocks.Add(LastOp.Position + 4);
+                if (LastOp.Emitter != AInstEmit.Ret &&
+                    LastOp.Emitter != AInstEmit.Br)
+                {
+                    SubBlocks.Add(LastOp.Position + 4);
+                }
             }
 
             return Subroutine;