refactor asm compiler 2