anchor.diff:  
           SUB     EDX,ECX
           PUSH    EDX
  -        XOR     EDX,EDX
   
           XOR     EAX,EAX
   
  
positive.code:     Length: NativeInt;
    end;
  
  procedure MakeLength(var FData: Pointer; RequiredSize: Integer); inline;
  var
    NewData: PByte;
    NewSize: Integer;
  
negative.code: var
    CBasePowers: array[TNumberBase] of TArray<BigInteger>;
  
  function FindSize(Limb: PLimb; Size: Integer): Integer;
  {$IFDEF PUREPASCAL}
  begin
    while (Size > 0) and (Limb[Size - 1] = 0) do
      Dec(Size);
    Result := Size;
  end;
  {$ELSE}
  {$IFDEF WIN32}
  asm
  
          LEA     EAX,[EAX + EDX * CLimbSize - CLimbSize]
          XOR     ECX,ECX
  
  @Loop:
  
          CMP     [EAX],ECX
          JNE     @Exit
          LEA     EAX,[EAX - CLimbSize]
          DEC     EDX
          JNE     @Loop
  
  @Exit:
  
          MOV     EAX,EDX
  
  end;
  {$ELSE !WIN32}
  asm
  
          LEA     RAX,[RCX + RDX * CLimbSize - CLimbSize]
          XOR     ECX,ECX
  
  @Loop:
  
          CMP     [RAX],ECX
          JNE     @Exit
          LEA     RAX,[RAX - CLimbSize]
          DEC     EDX
          JNE     @Loop
  
  @Exit:
  
          MOV     EAX,EDX
  
  end;
  {$ENDIF !WIN32}
  {$ENDIF}
  
  function IntMax(Left, Right: UInt32): UInt32;
  {$IFNDEF PUREPASCAL}
  {$IFDEF WIN32}
  