Arduino Due using the same language ?

Yes, but if you look at the defines:

#define bitRead(value, bit) (((value) >> (bit)) & 0x01)
#define bitSet(value, bit) ((value) |= (1UL << (bit)))
#define bitClear(value, bit) ((value) &= ~(1UL << (bit)))
#define bitWrite(value, bit, bitvalue) (bitvalue ? bitSet(value, bit) : bitClear(value, bit))

Your bitRead (and bitWrite) are working on 0x40094000, not what it is pointing to.

And the 0x13 bit of the number 0x40094000 is indeed 1.

I suggest something like:

  long* x = (long*) 0x40094000;
  bitWrite(*x, 0x13, 0);

Can't test it because I don't have a Due, but I'm sure the macro does what I said.