anchor.diff:        jnz @CopySelectedLoop
        jmp @Done
        @CopyAll:
  -      mov esi,dword ptr SubMatches
  -      mov ecx,dword ptr [esi+TFLRESubMatches.Count]
  -      mov esi,dword ptr [esi+TFLRESubMatches.SubMatches]
  -      mov edi,dword ptr [ebx+TFLRESubMatches.SubMatches]
  +      mov esi,dword ptr State
  +      mov ecx,dword ptr [esi+TFLREParallelNFAState.Count]
  +      mov esi,dword ptr [esi+TFLREParallelNFAState.SubMatches]
  +      mov edi,dword ptr [ebx+TFLREParallelNFAState.SubMatches]
         rep movsd
       @Done:
      pop edi
  
positive.code:   end;
   end;
  
   if assigned(BestSubMatches) then begin
    if assigned(Matched) then begin
     ThreadLocalStorage.SubMatchesRelease(Matched);
    end;
    Matched:=BestSubMatches;
   end;
  
   if assigned(Matched) then begin
  
negative.code:  result^.BitState:=BitState;
  end;
  
  function TFLREThreadLocalStorage.ParallelNFAStateAcquire(const State:PFLREParallelNFAState):PFLREParallelNFAState; {$ifdef caninline}inline;{$endif}
  begin
   inc(State^.ReferenceCounter);
   result:=State;
  end;
  
  procedure TFLREThreadLocalStorage.ParallelNFAStateRelease(const State:PFLREParallelNFAState); {$ifdef caninline}inline;{$endif}
  begin
   dec(State^.ReferenceCounter);
   if State^.ReferenceCounter=0 then begin
    State^.Next:=FreeSubMatches;
    FreeSubMatches:=State;
   end;
  end;
  
  function TFLREThreadLocalStorage.ParallelNFAStateUpdate(const State:PFLREParallelNFAState;const Index,Position:longint):PFLREParallelNFAState; {$ifdef caninline}inline;{$endif}
  var Counter:longint;
      BitState:longword;
  begin
   result:=State;
   if result^.ReferenceCounter>1 then begin
    result:=ParallelNFAStateAllocate(State^.Count,State^.BitState);
  {$ifdef cpu386}
    asm
     push ebx
     push esi
     push edi
      mov ebx,dword ptr result
      mov ecx,dword ptr [ebx+TFLREParallelNFAState.BitState]
      test ecx,ecx // or test ecx,$80000000; jnz @CopyAll 
      js @CopyAll
      jecxz @Done
       mov esi,dword ptr State
       mov esi,dword ptr [esi+TFLREParallelNFAState.SubMatches]
       mov edi,dword ptr [ebx+TFLREParallelNFAState.SubMatches]
       @CopySelectedLoop:
         bsf eax,ecx
         mov edx,dword ptr [esi+eax*4]
  