2 Mbps data stream to computer

"May get better results" is not exactly a promising direction to invest a week's worth of effort. Just converting C code to assembler is what the compiler does, and it does it very well. To improve the throughput significantly, you need a better algorithm.

Serial is using the programming port. This is limited by the serial speed between the SAM3X and 16U2 chips on the Due board. SerialUSB is much better - this uses the native port directly attached to the SAM3X. With native USB you can achieve the full speed specification of USB2.0 480Mbps. You won't get that speed without some work but maybe the Arduino SerialUSB library can get the speed you need without modification.

The second thing to change in your sketch is the output method: You are using Serial.print() which will convert the 32-bit integer into (up to) 10 ASCII characters. Serial.write() will write an 8-bit byte directly. Change the main loop to only record 8 bits of data and then SerialUSB.write() will probably be able to send at the speed you need. The other end will need to record this binary data and then turn it back into whatever real output you need.