anchor.diff:          MOV     EAX,[ESI]
           ADC     EAX,EDI
           MOV     [EBX],EAX
  +        JNC     @RestLoopStore0
   
           MOV     EAX,[ESI + CLimbSize]
           ADC     EAX,EDI
           MOV     [EBX + CLimbSize],EAX
  +        JNC     @RestLoopStore1
   
           MOV     EAX,[ESI + 2*CLimbSize]
           ADC     EAX,EDI
           MOV     [EBX + 2*CLimbSize],EAX
  +        JNC     @RestLoopStore2
   
           MOV     EAX,[ESI + 3*CLimbSize]
           ADC     EAX,EDI
           MOV     [EBX + 3*CLimbSize],EAX
  +        JNC     @RestLoopStore3
   
           LEA     ESI,[ESI + CUnrollIncrement*CLimbSize]
           LEA     EBX,[EBX + CUnrollIncrement*CLimbSize]
  
positive.code: @LastLimb:
  
          ADC     EDI,EDI
          MOV     [EBX],EDI
  
  @Exit:
  
negative.code:     ShallowCopy(Right, Result);
  end;
  
  // https://www.di-mgt.com.au/euclidean.html#code-modinv
  class function BigInteger.ModInverse(const Value, Modulus: BigInteger): BigInteger;
  var
    u1, u3, v1, v3, temp1, temp3, q: BigInteger;
    iter: Integer;
  begin
    // Step X1. Initialise
  