Fast? uhmmm no. It depends by how long it should be your xor pad, if it has a limited short size you can build it by hand but if that is supposed to be unlimited (as I think) then it's complicated.
set MEMORY_FILE10 string " void decrypt(unsigned char *data, int size) { int i, c; for(i = 0; i < size; i++) { c = i >> 4; switch(i & 15) { case 0: break; case 1: c >>= 8; break; case 2: c >>= 16; break; case 3: c >>= 24; break; default: c = 0; } data[i] ^= c; } } "
get SIZE asize log MEMORY_FILE 0 SIZE calldll MEMORY_FILE10 decrypt tcc RET MEMORY_FILE SIZE log "dump.dat" 0 SIZE MEMORY_FILE