reorder inline assembly to work with gcc optimizatoin

Fixes #7
enable -O1 as default optimization order since we resolve #7
adjust the description and add on-going features
update thread_select to non-recursive version