anchor.diff:    end;
   end;
   
  +var
  +  TrampolineExitProcess: procedure(ExitCode: UInt); stdcall;
  +
  +procedure ItemHouseKeeping(data,arg:pointer);
  +begin
  +  //LOG('Housekeeping for '+TObject(data).ClassName);
  +  TObject(data).free;
  +end;
  +
  +procedure ExitProcessBounce(ExitCode: UInt); stdcall;
  +begin
  +  Log('ExitProcess('+IntToStr(ExitCode)+')');
  +  // housekeeping
  +  cs.Enter;
  +  try
  +    Items.ForEachCall(ItemHouseKeeping, nil);
  +    Items.Clear;
  +  finally
  +    cs.Leave;
  +  end;
  +  Log('Housekeeping done, good bye!');
  +  if Assigned(TrampolineExitProcess) then
  +    TrampolineExitProcess(ExitCode);
  +end;
  +
   procedure StartHook(Settings: PHookSettings); stdcall;
   var
     p: Pointer;
  
positive.code:   cs.Leave;
  end;
  
  procedure RegisterHandleObj(h: THandle; const subSystem: string; data: Pointer);
  begin
    if Assigned(cs) then
    begin
  
negative.code:   end;
  
    LoadDirect3D9;
  
    TrampolineExitProcess := InterceptCreate(@ExitProcess, @ExitProcessBounce);
  
    if Config.DumpACM then
    begin
  