anchor.diff:  end;
   
   procedure DecodeBranch_Ev(PInst: PInstruction);
  +{ TODO: Remove DS and compute address when segment is not DS. }
   var
     VA, P: PByte;
     F: Word;
  +  DS: Word;
   begin
     F := PInst^.DstAddr.Flags or JF_USED or JF_ABSOLUTE or JF_INDIRECT or JF_NEAR;
     DecodeModRm(PInst);
  
positive.code:         begin
            if VLSize = VL512 then
              N := SIZE_32_BYTE;
          end
          else
          begin
            if VLSize > VL128 then
              N := SIZE_16_BYTE;
          end;
  
negative.code: 
        end;
        P := VA + Int32(PInst^.Disp.Value);
        if DS = SEG_DS then
        begin
          try
            { Since UnivDisasm can disassemble from anywere (memory,disk,..)
              User may provide wrong address !!
              ==> So we must use try to access memory !!!
            }
            P := PByte(PUInt64(P)^);
          except
            P := nil;
            PInst^.Error(ERROR_INVALID_EFFECTIVE_ADDRESS);
          end;
          PInst^.DstAddr.Addr := P;
        end;
      end else begin
        { No EIP/RIP }
        if DS = SEG_DS then
        begin
          P := PByte(PInst^.Disp.Value);
          try
            case PInst^.AddressMode of
              AM_16: P := PByte(PUInt16(P)^);
              AM_32: P := PByte(PUInt32(P)^);
            else PInst^.Error(ERROR_INVALID_ADDRESS_MODE);
            end;
          except
            P := nil;
            PInst^.Error(ERROR_INVALID_EFFECTIVE_ADDRESS);
          end;
          PInst^.DstAddr.Addr := P;
        end;
      end;
    end else begin
      { JMP/CALL [REG] }
      F := F or JF_REG;
      PInst^.DstAddr.Addr := nil;
  