Well, I don't have experience with asm and such but for the obfuscation, even at the basic level your code should create lots and lots of delegates that will definitely make the code harder to understand. Also, hide calls to internal and external methods.