  Encrypted computing is an emerging technology based on a processor that
`works encrypted', taking encrypted inputs to encrypted outputs while data
remains in encrypted form throughout. It aims to secure user data against
possible insider attacks by the operator and operating system (who do not know
the user's encryption key and cannot access it in the processor). Formally
`obfuscating' compilation for encrypted computing is such that on each
recompilation of the source code, machine code of the same structure is emitted
for which runtime traces also all have the same structure but each word beneath
the encryption differs from nominal with maximal possible entropy across
recompilations. That generates classic cryptographic semantic security for
data, relative to the security of the encryption, but it guarantees only single
words and an adversary has more than that on which to base decryption attempts.
This paper extends the existing integer-based technology to doubles, floats,
arrays, structs and unions as data structures, covering ANSI C. A single
principle drives compiler design and improves the existing security theory to
quantitative results: every arithmetic instruction that writes must vary to the
maximal extent possible.
