Why NtSetContextThread destroys volatile registers