+ &cmp ("ebp",0);
+ &jne (&label("notP4"));
+ &and ("eax",15<<8); # familiy ID
+ &cmp ("eax",15<<8); # P4?
+ &jne (&label("notP4"));
+ &or ("edx",1<<20); # use reserved bit to engage RC4_CHAR
+&set_label("notP4");
+ &bt ("edx",28); # test hyper-threading bit
+ &jnc (&label("done"));
+ &shr ("ebx",16);
+ &and ("ebx",0xff);
+ &cmp ("ebx",1); # see if cache is shared(*)
+ &ja (&label("done"));
+ &and ("edx",0xefffffff); # clear hyper-threading bit if not
+&set_label("done");