func main() { … } func encryptBlockAsm() { … } func decryptBlockAsm() { … } // Note that round keys are stored in uint128 format, not uint32 func expandKeyAsm() { … } func Lexp_enc256() { … } func Lexp_enc192() { … } func Lexp_enc128() { … } func Lexp_dec() { … } func Lexp_dec_loop() { … } func _expand_key_128() { … } func _expand_key_192a() { … } func _expand_key_192b() { … } func _expand_key_256a() { … } func _expand_key_256b() { … } const ThatPeskyUnicodeDot … // removePeskyUnicodeDot strips the dot from the relevant TEXT directives such that they // can exist as internal assembly functions // // Avo v0.6.0 does not support the generation of internal assembly functions. Go's unicode // dot tells the compiler to link a TEXT symbol to a function in the current Go package // (or another package if specified). Avo unconditionally prepends the unicode dot to all // TEXT symbols, making it impossible to emit an internal function without this hack. // // There is a pending PR to add internal functions to Avo: // https://github.com/mmcloughlin/avo/pull/443 // // If merged it should allow the usage of InternalFunction("NAME") for the specified functions func removePeskyUnicodeDot(internalFunctions []string, target string) { … }