So the first diff AF 16 vs AE 3D is the length of the bytecode. 6038 bytes vs 5949 bytes.
I'm sure it's possible to figure this out, but TBH doing the compilation on the host PC via mpy-cross is the supported way to do it (and by disabling the save code functionality you can save yourself a bit of ROM on the device too). Off the top of my head I can imagine some ways in which doing this on-device is actually likely to cause issues (e.g. not including the right QSTR data).
Do you plan to upgrade to 1.12? There have been improvements to the .mpy format and bytecode in general which might make it worth your while.