Ugochukwu Mmaduekwe преди 2 седмици
родител
ревизия
f924846afa

+ 57 - 57
CryptoLib/src/Math/Raw/ClpNat.pas

@@ -176,7 +176,7 @@ var
   LI: Int32;
 begin
   LC := UInt64(0);
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + UInt64(AX[LI]) + AY[LI];
     AZ[LI] := UInt32(LC);
@@ -277,7 +277,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + UInt64(AX[LI]) + AY[LI] + AZ[LI];
     AZ[LI] := UInt32(LC);
@@ -292,7 +292,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + UInt64(AX[AXOff + LI]) + AY[AYOff + LI] + AZ[AZOff + LI];
     AZ[AZOff + LI] := UInt32(LC);
@@ -393,7 +393,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + UInt64(AX[LI]) + AZ[LI];
     AZ[LI] := UInt32(LC);
@@ -408,7 +408,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + UInt64(AX[AXOff + LI]) + AZ[AZOff + LI];
     AZ[AZOff + LI] := UInt32(LC);
@@ -423,7 +423,7 @@ var
   LI: Int32;
 begin
   LC := ACIn;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + UInt64(AX[AXOff + LI]) + AZ[AZOff + LI];
     AZ[AZOff + LI] := UInt32(LC);
@@ -438,7 +438,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + UInt64(AU[AUOff + LI]) + AV[AVOff + LI];
     AU[AUOff + LI] := UInt32(LC);
@@ -530,7 +530,7 @@ var
 begin
   LMASK := UInt32(-(AMask ) and 1);
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + UInt64(AX[LI]) + (AY[LI] and LMASK);
     AZ[LI] := UInt32(LC);
@@ -547,7 +547,7 @@ var
 begin
   LMASK := UInt32(-(AMask ) and 1);
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + UInt64(AZ[LI]) + (AX[LI] and LMASK);
     AZ[LI] := UInt32(LC);
@@ -566,7 +566,7 @@ begin
   LMASK := UInt32(-(AMask ) and 1);
   LZI := AZ[AZOff + LI];
   LDiff := LZI xor AX[AXOff + LI];
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LZI := LZI xor (LDiff and LMASK);
     AZ[AZOff + LI] := LZI;
@@ -679,7 +679,7 @@ var
 begin
   LMASK := UInt32(-(AMask ) and 1);
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (AX[LI] - (AY[LI] and LMASK));
     AZ[LI] := UInt32(LC);
@@ -696,7 +696,7 @@ var
 begin
   LMASK := UInt32(-(AMask ) and 1);
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (AX[AXOff + LI] - (AY[AYOff + LI] and LMASK));
     AZ[AZOff + LI] := UInt32(LC);
@@ -709,7 +709,7 @@ class function TNat.Dec(ALen: Int32; const AZ: TCryptoLibUInt32Array): Int32;
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     System.Dec(AZ[LI]);
     if AZ[LI] <> UInt32.MaxValue then
@@ -749,7 +749,7 @@ begin
   {$IFDEF DEBUG}
   System.Assert(AZPos <= ALen);
   {$ENDIF}
-  for LI := AZPos to (ALen) - 1 do
+  for LI := AZPos to ALen - 1 do
   begin
     System.Dec(AZ[LI]);
     if AZ[LI] <> UInt32.MaxValue then
@@ -768,7 +768,7 @@ begin
   {$IFDEF DEBUG}
   System.Assert(AZPos <= ALen);
   {$ENDIF}
-  for LI := AZPos to (ALen) - 1 do
+  for LI := AZPos to ALen - 1 do
   begin
     System.Dec(AZ[AZOff + LI]);
     if AZ[AZOff + LI] <> UInt32.MaxValue then
@@ -801,7 +801,7 @@ var
   LI: Int32;
 begin
   LD := AX[AXOff] xor AY;
-  for LI := 1 to (ALen) - 1 do
+  for LI := 1 to ALen - 1 do
   begin
     LD := LD or (AX[AXOff + LI]);
   end;
@@ -815,7 +815,7 @@ var
   LI: Int32;
 begin
   LD := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LD := LD or (AX[AXOff + LI] xor AY[AYOff + LI]);
   end;
@@ -829,7 +829,7 @@ var
   LI: Int32;
 begin
   LD := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LD := LD or (AX[AXOff + LI]);
   end;
@@ -848,7 +848,7 @@ begin
   if ((AX.SignValue < 0) or (AX.BitLength > ABits)) then
   raise EArgumentCryptoLibException.Create('');
   LZ[0] := UInt32(AX.Int32Value);
-  for LI := 1 to (LLen) - 1 do
+  for LI := 1 to LLen - 1 do
   begin
     AX := AX.ShiftRight(32);
     LZ[LI] := UInt32(AX.Int32Value);
@@ -867,7 +867,7 @@ begin
   if ((AX.SignValue < 0) or (AX.BitLength > ABits)) then
   raise EArgumentCryptoLibException.Create('');
   LZ[0] := UInt64(AX.Int64Value);
-  for LI := 1 to (LLen) - 1 do
+  for LI := 1 to LLen - 1 do
   begin
     AX := AX.ShiftRight(64);
     LZ[LI] := UInt64(AX.Int64Value);
@@ -971,7 +971,7 @@ class function TNat.Inc(ALen: Int32; const AZ: TCryptoLibUInt32Array): UInt32;
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     System.Inc(AZ[LI]);
     if AZ[LI] <> UInt32(0) then
@@ -1011,7 +1011,7 @@ begin
   {$IFDEF DEBUG}
   System.Assert(AZPos <= ALen);
   {$ENDIF}
-  for LI := AZPos to (ALen) - 1 do
+  for LI := AZPos to ALen - 1 do
   begin
     System.Inc(AZ[LI]);
     if AZ[LI] <> UInt32(0) then
@@ -1030,7 +1030,7 @@ begin
   {$IFDEF DEBUG}
   System.Assert(AZPos <= ALen);
   {$ENDIF}
-  for LI := AZPos to (ALen) - 1 do
+  for LI := AZPos to ALen - 1 do
   begin
     System.Inc(AZ[AZOff + LI]);
     if AZ[AZOff + LI] <> UInt32(0) then
@@ -1051,7 +1051,7 @@ begin
     Result := False;
     Exit;
   end;
-  for LI := 1 to (ALen) - 1 do
+  for LI := 1 to ALen - 1 do
   begin
     if AX[LI] <> 0 then
     begin
@@ -1071,7 +1071,7 @@ begin
     Result := False;
     Exit;
   end;
-  for LI := 1 to (ALen) - 1 do
+  for LI := 1 to ALen - 1 do
   begin
     if AX[LI] <> 0 then
     begin
@@ -1088,7 +1088,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (Int64(AX[LI]) - AY[LI]);
     LC := TBitUtilities.Asr64(LC, 32);
@@ -1103,7 +1103,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (Int64(AX[AXOff + LI]) - Int64(AY[AYOff + LI]));
     LC := TBitUtilities.Asr64(LC, 32);
@@ -1119,7 +1119,7 @@ var
   LI: Int32;
 begin
   AZz[ALen] := MulWord(ALen, AX[0], AY, AZz);
-  for LI := 1 to (ALen) - 1 do
+  for LI := 1 to ALen - 1 do
   begin
     AZz[LI + ALen] := MulWordAddTo(ALen, AX[LI], AY, 0, AZz, LI);
   end;
@@ -1130,7 +1130,7 @@ var
   LI: Int32;
 begin
   AZz[AZzOff + ALen] := MulWord(ALen, AX[AXOff], AY, AYOff, AZz, AZzOff);
-  for LI := 1 to (ALen) - 1 do
+  for LI := 1 to ALen - 1 do
   begin
     AZz[AZzOff + LI + ALen] := MulWordAddTo(ALen, AX[AXOff + LI], AY, AYOff, AZz, AZzOff + LI);
   end;
@@ -1141,7 +1141,7 @@ var
   LI: Int32;
 begin
   AZz[AZzOff + AYLen] := MulWord(AYLen, AX[AXOff], AY, AYOff, AZz, AZzOff);
-  for LI := 1 to (AXLen) - 1 do
+  for LI := 1 to AXLen - 1 do
   begin
     AZz[AZzOff + LI + AYLen] := MulWordAddTo(AYLen, AX[AXOff + LI], AY, AYOff, AZz, AZzOff + LI);
   end;
@@ -1153,7 +1153,7 @@ var
   LI: Int32;
 begin
   LZc := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LZc := LZc + (MulWordAddTo(ALen, AX[LI], AY, 0, AZz, LI) and M);
     LZc := LZc + (AZz[LI + ALen] and M);
@@ -1169,7 +1169,7 @@ var
   LI: Int32;
 begin
   LZc := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LZc := LZc + (MulWordAddTo(ALen, AX[AXOff + LI], AY, AYOff, AZz, AZzOff) and M);
     LZc := LZc + (AZz[AZzOff + ALen] and M);
@@ -1226,7 +1226,7 @@ var
 begin
   LC := 0;
   LXVal := AX;
-  for LI := 0 to (ALen - 1) do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (LXVal * AY[AYOff + LI]);
     AZ[AZOff + LI] := UInt32(LC);
@@ -1243,7 +1243,7 @@ var
 begin
   LC := 0;
   LXVal := AX;
-  for LI := 0 to (ALen - 1) do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (LXVal * AY[AYOff + LI] + AZ[AZOff + LI]);
     AZ[AZOff + LI] := UInt32(LC);
@@ -1287,7 +1287,7 @@ var
   LI: Int32;
 begin
   LC := Int64(0);
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC - (AX[LI]);
     AZ[LI] := UInt32(LC);
@@ -2018,7 +2018,7 @@ begin
   LD := UInt64(0);
   LZzPos := 2;
 
-  for LI := 1 to (ALen) - 1 do
+  for LI := 1 to ALen - 1 do
   begin
     LD := LD + SquareWordAddTo(AX, LI, AZz);
 
@@ -2073,7 +2073,7 @@ begin
   LD := UInt64(0);
   LZzPos := AZzOff + 2;
 
-  for LI := 1 to (ALen) - 1 do
+  for LI := 1 to ALen - 1 do
   begin
     LD := LD + SquareWordAddTo(AX, AXOff, LI, AZz, AZzOff);
 
@@ -2144,7 +2144,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (Int64(AX[LI]) - Int64(AY[LI]));
     AZ[LI] := UInt32(LC);
@@ -2159,7 +2159,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (Int64(AX[AXOff + LI]) - Int64(AY[AYOff + LI]));
     AZ[AZOff + LI] := UInt32(LC);
@@ -2260,7 +2260,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (Int64(AZ[LI]) - Int64(AX[LI]) - Int64(AY[LI]));
     AZ[LI] := UInt32(LC);
@@ -2275,7 +2275,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (Int64(AZ[AZOff + LI]) - Int64(AX[AXOff + LI]) - Int64(AY[AYOff + LI]));
     AZ[AZOff + LI] := UInt32(LC);
@@ -2376,7 +2376,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (Int64(AZ[LI]) - Int64(AX[LI]));
     AZ[LI] := UInt32(LC);
@@ -2391,7 +2391,7 @@ var
   LI: Int32;
 begin
   LC := 0;
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     LC := LC + (Int64(AZ[AZOff + LI]) - Int64(AX[AXOff + LI]));
     AZ[AZOff + LI] := UInt32(LC);
@@ -2496,7 +2496,7 @@ class procedure TNat.&Xor(ALen: Int32; const AX: TCryptoLibUInt32Array; const AY
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[LI] := AX[LI] xor AY[LI];
   end;
@@ -2506,7 +2506,7 @@ class procedure TNat.&Xor(ALen: Int32; const AX: TCryptoLibUInt32Array; AXOff: I
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[AZOff + LI] := AX[AXOff + LI] xor AY[AYOff + LI];
   end;
@@ -2516,7 +2516,7 @@ class procedure TNat.Xor64(ALen: Int32; const AX: TCryptoLibUInt64Array; AY: UIn
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[LI] := AX[LI] xor AY;
   end;
@@ -2526,7 +2526,7 @@ class procedure TNat.Xor64(ALen: Int32; const AX: TCryptoLibUInt64Array; AXOff:
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[AZOff + LI] := AX[AXOff + LI] xor AY;
   end;
@@ -2536,7 +2536,7 @@ class procedure TNat.Xor64(ALen: Int32; const AX: TCryptoLibUInt64Array; const A
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[LI] := AX[LI] xor AY[LI];
   end;
@@ -2546,7 +2546,7 @@ class procedure TNat.Xor64(ALen: Int32; const AX: TCryptoLibUInt64Array; AXOff:
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[AZOff + LI] := AX[AXOff + LI] xor AY[AYOff + LI];
   end;
@@ -2556,7 +2556,7 @@ class procedure TNat.XorBothTo(ALen: Int32; const AX: TCryptoLibUInt32Array; con
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[LI] := AZ[LI] xor (AX[LI] xor AY[LI]);
   end;
@@ -2566,7 +2566,7 @@ class procedure TNat.XorBothTo(ALen: Int32; const AX: TCryptoLibUInt32Array; AXO
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[AZOff + LI] := AZ[AZOff + LI] xor (AX[AXOff + LI] xor AY[AYOff + LI]);
   end;
@@ -2576,7 +2576,7 @@ class procedure TNat.XorBothTo64(ALen: Int32; const AX: TCryptoLibUInt64Array; c
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[LI] := AZ[LI] xor (AX[LI] xor AY[LI]);
   end;
@@ -2586,7 +2586,7 @@ class procedure TNat.XorBothTo64(ALen: Int32; const AX: TCryptoLibUInt64Array; A
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[AZOff + LI] := AZ[AZOff + LI] xor (AX[AXOff + LI] xor AY[AYOff + LI]);
   end;
@@ -2596,7 +2596,7 @@ class procedure TNat.XorTo(ALen: Int32; const AX: TCryptoLibUInt32Array; const A
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[LI] := AZ[LI] xor (AX[LI]);
   end;
@@ -2606,7 +2606,7 @@ class procedure TNat.XorTo(ALen: Int32; const AX: TCryptoLibUInt32Array; AXOff:
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[AZOff + LI] := AZ[AZOff + LI] xor (AX[AXOff + LI]);
   end;
@@ -2616,7 +2616,7 @@ class procedure TNat.XorTo64(ALen: Int32; const AX: TCryptoLibUInt64Array; const
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[LI] := AZ[LI] xor (AX[LI]);
   end;
@@ -2626,7 +2626,7 @@ class procedure TNat.XorTo64(ALen: Int32; const AX: TCryptoLibUInt64Array; AXOff
 var
   LI: Int32;
 begin
-  for LI := 0 to (ALen) - 1 do
+  for LI := 0 to ALen - 1 do
   begin
     AZ[AZOff + LI] := AZ[AZOff + LI] xor (AX[AXOff + LI]);
   end;

+ 1 - 2
CryptoLib/src/Math/Raw/ClpNat128.pas

@@ -238,8 +238,7 @@ end;
 
 class procedure TNat128.Copy64(const AX: TCryptoLibUInt64Array; const AZ: TCryptoLibUInt64Array);
 begin
-  AZ[0] := AX[0];
-  AZ[1] := AX[1];
+  System.Move(AX[0], AZ[0], 2 * System.SizeOf(UInt64));
 end;
 
 class procedure TNat128.Copy64(const AX: TCryptoLibUInt64Array; AXOff: Int32; const AZ: TCryptoLibUInt64Array; AZOff: Int32);

+ 1 - 5
CryptoLib/src/Math/Raw/ClpNat160.pas

@@ -239,11 +239,7 @@ end;
 
 class procedure TNat160.Copy(const AX: TCryptoLibUInt32Array; AXOff: Int32; const AZ: TCryptoLibUInt32Array; AZOff: Int32);
 begin
-  AZ[AZOff + 0] := AX[AXOff + 0];
-  AZ[AZOff + 1] := AX[AXOff + 1];
-  AZ[AZOff + 2] := AX[AXOff + 2];
-  AZ[AZOff + 3] := AX[AXOff + 3];
-  AZ[AZOff + 4] := AX[AXOff + 4];
+  System.Move(AX[AXOff], AZ[AZOff], 5 * System.SizeOf(UInt32));
 end;
 
 class function TNat160.Create: TCryptoLibUInt32Array;

+ 10 - 12
CryptoLib/src/Math/Raw/ClpNat192.pas

@@ -229,9 +229,7 @@ end;
 
 class procedure TNat192.Copy64(const AX: TCryptoLibUInt64Array; AZ: TCryptoLibUInt64Array);
 begin
-  AZ[0] := AX[0];
-  AZ[1] := AX[1];
-  AZ[2] := AX[2];
+  System.Move(AX[0], AZ[0], 3 * System.SizeOf(UInt64));
 end;
 
 class procedure TNat192.Copy64(const AX: TCryptoLibUInt64Array; AXOff: Int32; AZ: TCryptoLibUInt64Array; AZOff: Int32);
@@ -382,7 +380,7 @@ begin
     Result := False;
     Exit;
   end;
-  for LI := 1 to (6) - 1 do
+  for LI := 1 to 5 do
   begin
     if AX[LI] <> 0 then
     begin
@@ -402,7 +400,7 @@ begin
     Result := False;
     Exit;
   end;
-  for LI := 1 to (3) - 1 do
+  for LI := 1 to 2 do
   begin
     if AX[LI] <> UInt64(0) then
     begin
@@ -417,7 +415,7 @@ class function TNat192.IsZero(const AX: TCryptoLibUInt32Array): Boolean;
 var
   LI: Int32;
 begin
-  for LI := 0 to (6) - 1 do
+  for LI := 0 to 5 do
   begin
     if AX[LI] <> 0 then
     begin
@@ -468,7 +466,7 @@ begin
   AZz[5] := UInt32(LC);
   LC := LC shr 32;
   AZz[6] := UInt32(LC);
-  for LI := 1 to (6) - 1 do
+  for LI := 1 to 5 do
   begin
     LC := 0;
     LXI := AX[LI];
@@ -534,7 +532,7 @@ begin
   AZz[AZzOff + 5] := UInt32(LC);
   LC := LC shr 32;
   AZz[AZzOff + 6] := UInt32(LC);
-  for LI := 1 to (6) - 1 do
+  for LI := 1 to 5 do
   begin
     Inc(AZzOff);
     LC := 0;
@@ -581,7 +579,7 @@ begin
   LY4 := AY[4];
   LY5 := AY[5];
   LZc := 0;
-  for LI := 0 to (6) - 1 do
+  for LI := 0 to 5 do
   begin
     LC := 0;
     LXI := AX[LI];
@@ -630,7 +628,7 @@ begin
   LY4 := AY[AYOff + 4];
   LY5 := AY[AYOff + 5];
   LZc := 0;
-  for LI := 0 to (6) - 1 do
+  for LI := 0 to 5 do
   begin
     LC := 0;
     LXI := AX[AXOff + LI];
@@ -1221,7 +1219,7 @@ var
   LXI: UInt32;
 begin
   SetLength(LBs, 24);
-  for LI := 0 to (6) - 1 do
+  for LI := 0 to 5 do
   begin
     LXI := AX[LI];
     if LXI <> 0 then
@@ -1237,7 +1235,7 @@ var
   LXI: UInt64;
 begin
   SetLength(LBs, 24);
-  for LI := 0 to (3) - 1 do
+  for LI := 0 to 2 do
   begin
     LXI := AX[LI];
     if LXI <> Int64(0) then

+ 7 - 7
CryptoLib/src/Math/Raw/ClpNat224.pas

@@ -414,7 +414,7 @@ begin
     Result := False;
     Exit;
   end;
-  for LI := 1 to (7) - 1 do
+  for LI := 1 to 6 do
   begin
     if AX[LI] <> 0 then
     begin
@@ -429,7 +429,7 @@ class function TNat224.IsZero(const AX: TCryptoLibUInt32Array): Boolean;
 var
   LI: Int32;
 begin
-  for LI := 0 to (7) - 1 do
+  for LI := 0 to 6 do
   begin
     if AX[LI] <> 0 then
     begin
@@ -485,7 +485,7 @@ begin
   AZz[6] := UInt32(LC);
   LC := LC shr 32;
   AZz[7] := UInt32(LC);
-  for LI := 1 to (7) - 1 do
+  for LI := 1 to 6 do
   begin
     LC := 0;
     LXI := AX[LI];
@@ -559,7 +559,7 @@ begin
   AZz[AZzOff + 6] := UInt32(LC);
   LC := LC shr 32;
   AZz[AZzOff + 7] := UInt32(LC);
-  for LI := 1 to (7) - 1 do
+  for LI := 1 to 6 do
   begin
     Inc(AZzOff);
     LC := 0;
@@ -611,7 +611,7 @@ begin
   LY5 := AY[5];
   LY6 := AY[6];
   LZc := 0;
-  for LI := 0 to (7) - 1 do
+  for LI := 0 to 6 do
   begin
     LC := 0;
     LXI := AX[LI];
@@ -665,7 +665,7 @@ begin
   LY5 := AY[AYOff + 5];
   LY6 := AY[AYOff + 6];
   LZc := 0;
-  for LI := 0 to (7) - 1 do
+  for LI := 0 to 6 do
   begin
     LC := 0;
     LXI := AX[AXOff + LI];
@@ -1390,7 +1390,7 @@ var
   LXI: UInt32;
 begin
   SetLength(LBs, 28);
-  for LI := 0 to (7) - 1 do
+  for LI := 0 to 6 do
   begin
     LXI := AX[LI];
     if LXI <> 0 then

+ 272 - 281
CryptoLib/src/Math/Raw/ClpNat256.pas

@@ -322,14 +322,7 @@ end;
 
 class procedure TNat256.Copy(const AX: TCryptoLibUInt32Array; AZ: TCryptoLibUInt32Array);
 begin
-  AZ[0] := AX[0];
-  AZ[1] := AX[1];
-  AZ[2] := AX[2];
-  AZ[3] := AX[3];
-  AZ[4] := AX[4];
-  AZ[5] := AX[5];
-  AZ[6] := AX[6];
-  AZ[7] := AX[7];
+  System.Move(AX[0], AZ[0], 8 * System.SizeOf(UInt32));
 end;
 
 class procedure TNat256.Copy(const AX: TCryptoLibUInt32Array; AXOff: Int32; AZ: TCryptoLibUInt32Array; AZOff: Int32);
@@ -339,10 +332,7 @@ end;
 
 class procedure TNat256.Copy64(const AX: TCryptoLibUInt64Array; AZ: TCryptoLibUInt64Array);
 begin
-  AZ[0] := AX[0];
-  AZ[1] := AX[1];
-  AZ[2] := AX[2];
-  AZ[3] := AX[3];
+  System.Move(AX[0], AZ[0], 4 * System.SizeOf(UInt64));
 end;
 
 class procedure TNat256.Copy64(const AX: TCryptoLibUInt64Array; AXOff: Int32; AZ: TCryptoLibUInt64Array; AZOff: Int32);
@@ -497,7 +487,7 @@ begin
     Result := False;
     Exit;
   end;
-  for LI := 1 to (8) - 1 do
+  for LI := 1 to 7 do
   begin
     if AX[LI] <> 0 then
     begin
@@ -517,7 +507,7 @@ begin
     Result := False;
     Exit;
   end;
-  for LI := 1 to (4) - 1 do
+  for LI := 1 to 3 do
   begin
     if AX[LI] <> UInt64(0) then
     begin
@@ -567,63 +557,63 @@ begin
   LY_6 := AY[6];
   LY_7 := AY[7];
   begin
-  LC := 0;
-  LX_0 := AX[0];
-  LC := LC + (LX_0 * LY_0);
-  AZz[0] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_1);
-  AZz[1] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_2);
-  AZz[2] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_3);
-  AZz[3] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_4);
-  AZz[4] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_5);
-  AZz[5] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_6);
-  AZz[6] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_7);
-  AZz[7] := UInt32(LC);
-  LC := LC shr 32;
-  AZz[8] := UInt32(LC);
+    LC := 0;
+    LX_0 := AX[0];
+    LC := LC + (LX_0 * LY_0);
+    AZz[0] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_1);
+    AZz[1] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_2);
+    AZz[2] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_3);
+    AZz[3] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_4);
+    AZz[4] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_5);
+    AZz[5] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_6);
+    AZz[6] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_7);
+    AZz[7] := UInt32(LC);
+    LC := LC shr 32;
+    AZz[8] := UInt32(LC);
   end;
-  for LI := 1 to (8) - 1 do
+  for LI := 1 to 7 do
   begin
-  LC := 0;
-  LX_i := AX[LI];
-  LC := LC + (LX_i * LY_0 + AZz[LI + 0]);
-  AZz[LI + 0] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_1 + AZz[LI + 1]);
-  AZz[LI + 1] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_2 + AZz[LI + 2]);
-  AZz[LI + 2] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_3 + AZz[LI + 3]);
-  AZz[LI + 3] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_4 + AZz[LI + 4]);
-  AZz[LI + 4] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_5 + AZz[LI + 5]);
-  AZz[LI + 5] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_6 + AZz[LI + 6]);
-  AZz[LI + 6] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_7 + AZz[LI + 7]);
-  AZz[LI + 7] := UInt32(LC);
-  LC := LC shr 32;
-  AZz[LI + 8] := UInt32(LC);
+    LC := 0;
+    LX_i := AX[LI];
+    LC := LC + (LX_i * LY_0 + AZz[LI + 0]);
+    AZz[LI + 0] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_1 + AZz[LI + 1]);
+    AZz[LI + 1] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_2 + AZz[LI + 2]);
+    AZz[LI + 2] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_3 + AZz[LI + 3]);
+    AZz[LI + 3] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_4 + AZz[LI + 4]);
+    AZz[LI + 4] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_5 + AZz[LI + 5]);
+    AZz[LI + 5] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_6 + AZz[LI + 6]);
+    AZz[LI + 6] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_7 + AZz[LI + 7]);
+    AZz[LI + 7] := UInt32(LC);
+    LC := LC shr 32;
+    AZz[LI + 8] := UInt32(LC);
   end;
 end;
 
@@ -651,64 +641,64 @@ begin
   LY_6 := AY[AYOff + 6];
   LY_7 := AY[AYOff + 7];
   begin
-  LC := 0;
-  LX_0 := AX[AXOff + 0];
-  LC := LC + (LX_0 * LY_0);
-  AZz[AZzOff + 0] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_1);
-  AZz[AZzOff + 1] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_2);
-  AZz[AZzOff + 2] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_3);
-  AZz[AZzOff + 3] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_4);
-  AZz[AZzOff + 4] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_5);
-  AZz[AZzOff + 5] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_6);
-  AZz[AZzOff + 6] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_0 * LY_7);
-  AZz[AZzOff + 7] := UInt32(LC);
-  LC := LC shr 32;
-  AZz[AZzOff + 8] := UInt32(LC);
+    LC := 0;
+    LX_0 := AX[AXOff + 0];
+    LC := LC + (LX_0 * LY_0);
+    AZz[AZzOff + 0] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_1);
+    AZz[AZzOff + 1] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_2);
+    AZz[AZzOff + 2] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_3);
+    AZz[AZzOff + 3] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_4);
+    AZz[AZzOff + 4] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_5);
+    AZz[AZzOff + 5] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_6);
+    AZz[AZzOff + 6] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_0 * LY_7);
+    AZz[AZzOff + 7] := UInt32(LC);
+    LC := LC shr 32;
+    AZz[AZzOff + 8] := UInt32(LC);
   end;
-  for LI := 1 to (8) - 1 do
+  for LI := 1 to 7 do
   begin
-  Inc(AZzOff);
-  LC := 0;
-  LX_i := AX[AXOff + LI];
-  LC := LC + (LX_i * LY_0 + AZz[AZzOff + 0]);
-  AZz[AZzOff + 0] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_1 + AZz[AZzOff + 1]);
-  AZz[AZzOff + 1] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_2 + AZz[AZzOff + 2]);
-  AZz[AZzOff + 2] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_3 + AZz[AZzOff + 3]);
-  AZz[AZzOff + 3] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_4 + AZz[AZzOff + 4]);
-  AZz[AZzOff + 4] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_5 + AZz[AZzOff + 5]);
-  AZz[AZzOff + 5] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_6 + AZz[AZzOff + 6]);
-  AZz[AZzOff + 6] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_7 + AZz[AZzOff + 7]);
-  AZz[AZzOff + 7] := UInt32(LC);
-  LC := LC shr 32;
-  AZz[AZzOff + 8] := UInt32(LC);
+    Inc(AZzOff);
+    LC := 0;
+    LX_i := AX[AXOff + LI];
+    LC := LC + (LX_i * LY_0 + AZz[AZzOff + 0]);
+    AZz[AZzOff + 0] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_1 + AZz[AZzOff + 1]);
+    AZz[AZzOff + 1] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_2 + AZz[AZzOff + 2]);
+    AZz[AZzOff + 2] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_3 + AZz[AZzOff + 3]);
+    AZz[AZzOff + 3] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_4 + AZz[AZzOff + 4]);
+    AZz[AZzOff + 4] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_5 + AZz[AZzOff + 5]);
+    AZz[AZzOff + 5] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_6 + AZz[AZzOff + 6]);
+    AZz[AZzOff + 6] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_7 + AZz[AZzOff + 7]);
+    AZz[AZzOff + 7] := UInt32(LC);
+    LC := LC shr 32;
+    AZz[AZzOff + 8] := UInt32(LC);
   end;
 end;
 
@@ -736,63 +726,63 @@ begin
   LX_6 := AX[6];
   LX_7 := AX[7];
   begin
-  LC := 0;
-  LY_0 := AY128[0];
-  LC := LC + (LY_0 * LX_0);
-  AZz[0] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_0 * LX_1);
-  AZz[1] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_0 * LX_2);
-  AZz[2] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_0 * LX_3);
-  AZz[3] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_0 * LX_4);
-  AZz[4] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_0 * LX_5);
-  AZz[5] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_0 * LX_6);
-  AZz[6] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_0 * LX_7);
-  AZz[7] := UInt32(LC);
-  LC := LC shr 32;
-  AZz[8] := UInt32(LC);
+    LC := 0;
+    LY_0 := AY128[0];
+    LC := LC + (LY_0 * LX_0);
+    AZz[0] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_0 * LX_1);
+    AZz[1] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_0 * LX_2);
+    AZz[2] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_0 * LX_3);
+    AZz[3] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_0 * LX_4);
+    AZz[4] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_0 * LX_5);
+    AZz[5] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_0 * LX_6);
+    AZz[6] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_0 * LX_7);
+    AZz[7] := UInt32(LC);
+    LC := LC shr 32;
+    AZz[8] := UInt32(LC);
   end;
-  for LI := 1 to (4) - 1 do
+  for LI := 1 to 3 do
   begin
-  LC := 0;
-  LY_i := AY128[LI];
-  LC := LC + (LY_i * LX_0 + AZz[LI + 0]);
-  AZz[LI + 0] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_i * LX_1 + AZz[LI + 1]);
-  AZz[LI + 1] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_i * LX_2 + AZz[LI + 2]);
-  AZz[LI + 2] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_i * LX_3 + AZz[LI + 3]);
-  AZz[LI + 3] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_i * LX_4 + AZz[LI + 4]);
-  AZz[LI + 4] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_i * LX_5 + AZz[LI + 5]);
-  AZz[LI + 5] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_i * LX_6 + AZz[LI + 6]);
-  AZz[LI + 6] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LY_i * LX_7 + AZz[LI + 7]);
-  AZz[LI + 7] := UInt32(LC);
-  LC := LC shr 32;
-  AZz[LI + 8] := UInt32(LC);
+    LC := 0;
+    LY_i := AY128[LI];
+    LC := LC + (LY_i * LX_0 + AZz[LI + 0]);
+    AZz[LI + 0] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_i * LX_1 + AZz[LI + 1]);
+    AZz[LI + 1] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_i * LX_2 + AZz[LI + 2]);
+    AZz[LI + 2] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_i * LX_3 + AZz[LI + 3]);
+    AZz[LI + 3] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_i * LX_4 + AZz[LI + 4]);
+    AZz[LI + 4] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_i * LX_5 + AZz[LI + 5]);
+    AZz[LI + 5] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_i * LX_6 + AZz[LI + 6]);
+    AZz[LI + 6] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LY_i * LX_7 + AZz[LI + 7]);
+    AZz[LI + 7] := UInt32(LC);
+    LC := LC shr 32;
+    AZz[LI + 8] := UInt32(LC);
   end;
 end;
 
@@ -820,37 +810,37 @@ begin
   LY_6 := AY[6];
   LY_7 := AY[7];
   LZc := 0;
-  for LI := 0 to (8) - 1 do
+  for LI := 0 to 7 do
   begin
-  LC := 0;
-  LX_i := AX[LI];
-  LC := LC + (LX_i * LY_0 + AZz[LI + 0]);
-  AZz[LI + 0] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_1 + AZz[LI + 1]);
-  AZz[LI + 1] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_2 + AZz[LI + 2]);
-  AZz[LI + 2] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_3 + AZz[LI + 3]);
-  AZz[LI + 3] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_4 + AZz[LI + 4]);
-  AZz[LI + 4] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_5 + AZz[LI + 5]);
-  AZz[LI + 5] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_6 + AZz[LI + 6]);
-  AZz[LI + 6] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_7 + AZz[LI + 7]);
-  AZz[LI + 7] := UInt32(LC);
-  LC := LC shr 32;
-  LZc := LZc + (LC + AZz[LI + 8]);
-  AZz[LI + 8] := UInt32(LZc);
-  LZc := LZc shr (32);
+    LC := 0;
+    LX_i := AX[LI];
+    LC := LC + (LX_i * LY_0 + AZz[LI + 0]);
+    AZz[LI + 0] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_1 + AZz[LI + 1]);
+    AZz[LI + 1] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_2 + AZz[LI + 2]);
+    AZz[LI + 2] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_3 + AZz[LI + 3]);
+    AZz[LI + 3] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_4 + AZz[LI + 4]);
+    AZz[LI + 4] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_5 + AZz[LI + 5]);
+    AZz[LI + 5] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_6 + AZz[LI + 6]);
+    AZz[LI + 6] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_7 + AZz[LI + 7]);
+    AZz[LI + 7] := UInt32(LC);
+    LC := LC shr 32;
+    LZc := LZc + (LC + AZz[LI + 8]);
+    AZz[LI + 8] := UInt32(LZc);
+    LZc := LZc shr (32);
   end;
   Result := UInt32(LZc);
 end;
@@ -879,38 +869,38 @@ begin
   LY_6 := AY[AYOff + 6];
   LY_7 := AY[AYOff + 7];
   LZc := 0;
-  for LI := 0 to (8) - 1 do
+  for LI := 0 to 7 do
   begin
-  LC := 0;
-  LX_i := AX[AXOff + LI];
-  LC := LC + (LX_i * LY_0 + AZz[AZzOff + 0]);
-  AZz[AZzOff + 0] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_1 + AZz[AZzOff + 1]);
-  AZz[AZzOff + 1] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_2 + AZz[AZzOff + 2]);
-  AZz[AZzOff + 2] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_3 + AZz[AZzOff + 3]);
-  AZz[AZzOff + 3] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_4 + AZz[AZzOff + 4]);
-  AZz[AZzOff + 4] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_5 + AZz[AZzOff + 5]);
-  AZz[AZzOff + 5] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_6 + AZz[AZzOff + 6]);
-  AZz[AZzOff + 6] := UInt32(LC);
-  LC := LC shr 32;
-  LC := LC + (LX_i * LY_7 + AZz[AZzOff + 7]);
-  AZz[AZzOff + 7] := UInt32(LC);
-  LC := LC shr 32;
-  LZc := LZc + (LC + AZz[AZzOff + 8]);
-  AZz[AZzOff + 8] := UInt32(LZc);
-  LZc := LZc shr (32);
-  Inc(AZzOff);
+    LC := 0;
+    LX_i := AX[AXOff + LI];
+    LC := LC + (LX_i * LY_0 + AZz[AZzOff + 0]);
+    AZz[AZzOff + 0] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_1 + AZz[AZzOff + 1]);
+    AZz[AZzOff + 1] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_2 + AZz[AZzOff + 2]);
+    AZz[AZzOff + 2] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_3 + AZz[AZzOff + 3]);
+    AZz[AZzOff + 3] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_4 + AZz[AZzOff + 4]);
+    AZz[AZzOff + 4] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_5 + AZz[AZzOff + 5]);
+    AZz[AZzOff + 5] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_6 + AZz[AZzOff + 6]);
+    AZz[AZzOff + 6] := UInt32(LC);
+    LC := LC shr 32;
+    LC := LC + (LX_i * LY_7 + AZz[AZzOff + 7]);
+    AZz[AZzOff + 7] := UInt32(LC);
+    LC := LC shr 32;
+    LZc := LZc + (LC + AZz[AZzOff + 8]);
+    AZz[AZzOff + 8] := UInt32(LZc);
+    LZc := LZc shr (32);
+    Inc(AZzOff);
   end;
   Result := UInt32(LZc);
 end;
@@ -1236,17 +1226,17 @@ begin
   LC := UInt32(LP shr 32) and 1;
   LX_1 := AX[1];
   LZz_2 := AZz[2];
-  begin
+
   LZz_1 := LZz_1 + (LX_1 * LX_0);
   LW := UInt32(LZz_1);
   AZz[1] := (LW  shl 1)  or LC;
   LC := LW  shr 31;
   LZz_2 := LZz_2 + (LZz_1  shr 32);
-  end;
+
   LX_2 := AX[2];
   LZz_3 := AZz[3];
   LZz_4 := AZz[4];
-  begin
+
   LZz_2 := LZz_2 + (LX_2 * LX_0);
   LW := UInt32(LZz_2);
   AZz[2] := (LW  shl 1)  or LC;
@@ -1254,11 +1244,11 @@ begin
   LZz_3 := LZz_3 + ((LZz_2  shr 32) + LX_2 * LX_1);
   LZz_4 := LZz_4 + (LZz_3  shr 32);
   LZz_3 := LZz_3 and M;
-  end;
+
   LX_3 := AX[3];
   LZz_5 := AZz[5] + (LZz_4 shr 32); LZz_4 := LZz_4 and M;
   LZz_6 := AZz[6] + (LZz_5 shr 32); LZz_5 := LZz_5 and M;
-  begin
+
   LZz_3 := LZz_3 + (LX_3 * LX_0);
   LW := UInt32(LZz_3);
   AZz[3] := (LW  shl 1)  or LC;
@@ -1268,11 +1258,11 @@ begin
   LZz_4 := LZz_4 and M;
   LZz_6 := LZz_6 + (LZz_5  shr 32);
   LZz_5 := LZz_5 and M;
-  end;
+
   LX_4 := AX[4];
   LZz_7 := AZz[7] + (LZz_6 shr 32); LZz_6 := LZz_6 and M;
   LZz_8 := AZz[8] + (LZz_7 shr 32); LZz_7 := LZz_7 and M;
-  begin
+
   LZz_4 := LZz_4 + (LX_4 * LX_0);
   LW := UInt32(LZz_4);
   AZz[4] := (LW  shl 1)  or LC;
@@ -1284,11 +1274,11 @@ begin
   LZz_6 := LZz_6 and M;
   LZz_8 := LZz_8 + (LZz_7  shr 32);
   LZz_7 := LZz_7 and M;
-  end;
+
   LX_5 := AX[5];
   LZz_9 := AZz[9] + (LZz_8 shr 32); LZz_8 := LZz_8 and M;
   LZz_10 := AZz[10] + (LZz_9 shr 32); LZz_9 := LZz_9 and M;
-  begin
+
   LZz_5 := LZz_5 + (LX_5 * LX_0);
   LW := UInt32(LZz_5);
   AZz[5] := (LW  shl 1)  or LC;
@@ -1302,11 +1292,11 @@ begin
   LZz_8 := LZz_8 and M;
   LZz_10 := LZz_10 + (LZz_9  shr 32);
   LZz_9 := LZz_9 and M;
-  end;
+
   LX_6 := AX[6];
   LZz_11 := AZz[11] + (LZz_10 shr 32); LZz_10 := LZz_10 and M;
   LZz_12 := AZz[12] + (LZz_11 shr 32); LZz_11 := LZz_11 and M;
-  begin
+
   LZz_6 := LZz_6 + (LX_6 * LX_0);
   LW := UInt32(LZz_6);
   AZz[6] := (LW  shl 1)  or LC;
@@ -1322,11 +1312,11 @@ begin
   LZz_10 := LZz_10 and M;
   LZz_12 := LZz_12 + (LZz_11  shr 32);
   LZz_11 := LZz_11 and M;
-  end;
+
   LX_7 := AX[7];
   LZz_13 := AZz[13] + (LZz_12 shr 32); LZz_12 := LZz_12 and M;
   LZz_14 := AZz[14] + (LZz_13 shr 32); LZz_13 := LZz_13 and M;
-  begin
+
   LZz_7 := LZz_7 + (LX_7 * LX_0);
   LW := UInt32(LZz_7);
   AZz[7] := (LW  shl 1)  or LC;
@@ -1338,7 +1328,7 @@ begin
   LZz_12 := LZz_12 + ((LZz_11  shr 32) + LX_7 * LX_5);
   LZz_13 := LZz_13 + ((LZz_12  shr 32) + LX_7 * LX_6);
   LZz_14 := LZz_14 + (LZz_13  shr 32);
-  end;
+
   LW := UInt32(LZz_8);
   AZz[8] := (LW  shl 1)  or LC;
   LC := LW  shr 31;
@@ -1410,23 +1400,24 @@ begin
     AZz[AZzOff + LJ] := UInt32(LP shr 1);
     LC := UInt32(LP);
   end;
+
   LP := LX_0 * LX_0;
   LZz_1 := UInt64(LC shl 31) or (LP shr 33);
   AZz[AZzOff + 0] := UInt32(LP);
   LC := UInt32(LP shr 32) and 1;
   LX_1 := AX[AXOff + 1];
   LZz_2 := AZz[AZzOff + 2];
-  begin
+
   LZz_1 := LZz_1 + (LX_1 * LX_0);
   LW := UInt32(LZz_1);
   AZz[AZzOff + 1] := (LW  shl 1)  or LC;
   LC := LW  shr 31;
   LZz_2 := LZz_2 + (LZz_1  shr 32);
-  end;
+
   LX_2 := AX[AXOff + 2];
   LZz_3 := AZz[AZzOff + 3];
   LZz_4 := AZz[AZzOff + 4];
-  begin
+
   LZz_2 := LZz_2 + (LX_2 * LX_0);
   LW := UInt32(LZz_2);
   AZz[AZzOff + 2] := (LW  shl 1)  or LC;
@@ -1434,11 +1425,11 @@ begin
   LZz_3 := LZz_3 + ((LZz_2  shr 32) + LX_2 * LX_1);
   LZz_4 := LZz_4 + (LZz_3  shr 32);
   LZz_3 := LZz_3 and M;
-  end;
+
   LX_3 := AX[AXOff + 3];
   LZz_5 := AZz[AZzOff + 5] + (LZz_4 shr 32); LZz_4 := LZz_4 and M;
   LZz_6 := AZz[AZzOff + 6] + (LZz_5 shr 32); LZz_5 := LZz_5 and M;
-  begin
+
   LZz_3 := LZz_3 + (LX_3 * LX_0);
   LW := UInt32(LZz_3);
   AZz[AZzOff + 3] := (LW  shl 1)  or LC;
@@ -1448,11 +1439,11 @@ begin
   LZz_4 := LZz_4 and M;
   LZz_6 := LZz_6 + (LZz_5  shr 32);
   LZz_5 := LZz_5 and M;
-  end;
+
   LX_4 := AX[AXOff + 4];
   LZz_7 := AZz[AZzOff + 7] + (LZz_6 shr 32); LZz_6 := LZz_6 and M;
   LZz_8 := AZz[AZzOff + 8] + (LZz_7 shr 32); LZz_7 := LZz_7 and M;
-  begin
+
   LZz_4 := LZz_4 + (LX_4 * LX_0);
   LW := UInt32(LZz_4);
   AZz[AZzOff + 4] := (LW  shl 1)  or LC;
@@ -1464,11 +1455,11 @@ begin
   LZz_6 := LZz_6 and M;
   LZz_8 := LZz_8 + (LZz_7  shr 32);
   LZz_7 := LZz_7 and M;
-  end;
+
   LX_5 := AX[AXOff + 5];
   LZz_9 := AZz[AZzOff + 9] + (LZz_8 shr 32); LZz_8 := LZz_8 and M;
   LZz_10 := AZz[AZzOff + 10] + (LZz_9 shr 32); LZz_9 := LZz_9 and M;
-  begin
+
   LZz_5 := LZz_5 + (LX_5 * LX_0);
   LW := UInt32(LZz_5);
   AZz[AZzOff + 5] := (LW  shl 1)  or LC;
@@ -1482,11 +1473,11 @@ begin
   LZz_8 := LZz_8 and M;
   LZz_10 := LZz_10 + (LZz_9  shr 32);
   LZz_9 := LZz_9 and M;
-  end;
+
   LX_6 := AX[AXOff + 6];
   LZz_11 := AZz[AZzOff + 11] + (LZz_10 shr 32); LZz_10 := LZz_10 and M;
   LZz_12 := AZz[AZzOff + 12] + (LZz_11 shr 32); LZz_11 := LZz_11 and M;
-  begin
+
   LZz_6 := LZz_6 + (LX_6 * LX_0);
   LW := UInt32(LZz_6);
   AZz[AZzOff + 6] := (LW  shl 1)  or LC;
@@ -1502,11 +1493,11 @@ begin
   LZz_10 := LZz_10 and M;
   LZz_12 := LZz_12 + (LZz_11  shr 32);
   LZz_11 := LZz_11 and M;
-  end;
+
   LX_7 := AX[AXOff + 7];
   LZz_13 := AZz[AZzOff + 13] + (LZz_12 shr 32); LZz_12 := LZz_12 and M;
   LZz_14 := AZz[AZzOff + 14] + (LZz_13 shr 32); LZz_13 := LZz_13 and M;
-  begin
+
   LZz_7 := LZz_7 + (LX_7 * LX_0);
   LW := UInt32(LZz_7);
   AZz[AZzOff + 7] := (LW  shl 1)  or LC;
@@ -1518,7 +1509,7 @@ begin
   LZz_12 := LZz_12 + ((LZz_11  shr 32) + LX_7 * LX_5);
   LZz_13 := LZz_13 + ((LZz_12  shr 32) + LX_7 * LX_6);
   LZz_14 := LZz_14 + (LZz_13  shr 32);
-  end;
+
   LW := UInt32(LZz_8);
   AZz[AZzOff + 8] := (LW  shl 1)  or LC;
   LC := LW  shr 31;
@@ -1711,13 +1702,13 @@ var
   LI: Int32;
 begin
   SetLength(LBs, 32);
-  for LI := 0 to (8) - 1 do
-  begin
-  LX_i := AX[LI];
-  if (LX_i <> 0) then
+  for LI := 0 to 7 do
   begin
-  TPack.UInt32_To_BE(LX_i, LBs, (7 - LI)  shl 2);
-  end;
+    LX_i := AX[LI];
+    if (LX_i <> 0) then
+    begin
+      TPack.UInt32_To_BE(LX_i, LBs, (7 - LI)  shl 2);
+    end;
   end;
   Result := TBigInteger.Create(1, LBs);
 end;
@@ -1729,13 +1720,13 @@ var
   LI: Int32;
 begin
   SetLength(LBs, 32);
-  for LI := 0 to (4) - 1 do
-  begin
-  LX_i := AX[LI];
-  if (LX_i <> Int64(0)) then
+  for LI := 0 to 3 do
   begin
-  TPack.UInt64_To_BE(LX_i, LBs, (3 - LI) shl 3);
-  end;
+    LX_i := AX[LI];
+    if (LX_i <> Int64(0)) then
+    begin
+      TPack.UInt64_To_BE(LX_i, LBs, (3 - LI) shl 3);
+    end;
   end;
   Result := TBigInteger.Create(1, LBs);
 end;

+ 3 - 3
CryptoLib/src/Math/Raw/ClpNat320.pas

@@ -91,7 +91,7 @@ begin
     Result := False;
     Exit;
   end;
-  for LI := 1 to (5) - 1 do
+  for LI := 1 to 4 do
   begin
     if AX[LI] <> UInt64(0) then
     begin
@@ -106,7 +106,7 @@ class function TNat320.IsZero64(const AX: TCryptoLibUInt64Array): Boolean;
 var
   LI: Int32;
 begin
-  for LI := 0 to (5) - 1 do
+  for LI := 0 to 4 do
   begin
     if AX[LI] <> UInt64(0) then
     begin
@@ -124,7 +124,7 @@ var
   LI: Int32;
 begin
   SetLength(LBs, 40);
-  for LI := 0 to (5) - 1 do
+  for LI := 0 to 4 do
   begin
     LX_i := AX[LI];
     if (LX_i <> Int64(0)) then