anchor.diff:    {$IFEND}
   {$IFEND}
   
  -// For Delphi XE and up:
  -{$IF CompilerVersion >= 22.0}
  -  {$CODEALIGN 16}
  -  {$ALIGN 16}
  -{$IFEND}
  -
  -// For Win32:
   {$IF SizeOf(Extended) > SizeOf(Double)}
     {$DEFINE HasExtended}
   {$IFEND}
   
  -// For PAnsiChar:
   {$IF NOT DECLARED(PAnsiChar)}
     {$DEFINE NoAnsi}
   {$IFEND}
   
  -// Assembler is only supplied for Windows targets.
  -// For other targets, PUREPASCAL must be defined.
  +// Assembler is only supplied for Windows targets. For other targets, PUREPASCAL must be defined.
   {$IFNDEF PUREPASCAL}
     {$IFNDEF MSWINDOWS}
       {$DEFINE PUREPASCAL}
     {$ENDIF}
   {$ENDIF}
  -
  -// To account for bad code generation for fifth parameter in Win64 in Rio.
  -// TODO: Remove, if fixed.
  -{$IF (CompilerVersion = 33) and defined(WIN64)}
  -  {$DEFINE RIO64}
  -{$IFEND}
   
   const
   {$IFDEF PUREPASCAL}
  
positive.code:   ALeft := ALeft shr Shift;
    ARight := ARight shr Shift;
  
    // $$RV: Does this make sense? All trailing zeroes were removed already.
    while ALeft.IsEven do
      ALeft := ALeft shr 1;
  
  
negative.code: end;
  
  class procedure BigInteger.DivThreeHalvesByTwo(const LeftUpperMid, LeftLower, Right, RightUpper: BigInteger;
    const RightLower: BigInteger; N: Integer;
    var Quotient, Remainder: BigInteger);
  var
    Q, R: BigInteger;
  