.s been rewritten with gnu asm