I've been looking at this a few times, and just figured out why it looks strange.

Put less logic in inline assembly where possible.  Make a single function that returns the cpuid information, then do all of the bitchecking in C.  Now this function is turned into a 3 line simple function, and the inline assembly is also quite simple.

Please do make sure that all bits in the cpuid variables (you might want to read it into a u64_t) are what you'd expect (i.e. cpudid_var & (1<<25) is the correct bit for this).