104     static int iset = -1; 
   109     int abcd[4] = {0, 0, 0, 0};                        
   111     if ( abcd[0] == 0 ) 
return iset;                   
   113     if ( ( abcd[3] & ( 1 << 0 ) ) == 0 ) 
return iset;  
   114     if ( ( abcd[3] & ( 1 << 23 ) ) == 0 ) 
return iset; 
   115     if ( ( abcd[3] & ( 1 << 15 ) ) == 0 ) 
return iset; 
   116     if ( ( abcd[3] & ( 1 << 24 ) ) == 0 ) 
return iset; 
   117     if ( ( abcd[3] & ( 1 << 25 ) ) == 0 ) 
return iset; 
   119     if ( ( abcd[3] & ( 1 << 26 ) ) == 0 ) 
return iset; 
   121     if ( ( abcd[2] & ( 1 << 0 ) ) == 0 ) 
return iset;  
   123     if ( ( abcd[2] & ( 1 << 9 ) ) == 0 ) 
return iset;  
   125     if ( ( abcd[2] & ( 1 << 19 ) ) == 0 ) 
return iset; 
   127     if ( ( abcd[2] & ( 1 << 23 ) ) == 0 ) 
return iset; 
   128     if ( ( abcd[2] & ( 1 << 20 ) ) == 0 ) 
return iset; 
   130     if ( ( abcd[2] & ( 1 << 27 ) ) == 0 ) 
return iset; 
   131     if ( ( xgetbv( 0 ) & 6 ) != 6 ) 
return iset;       
   132     if ( ( abcd[2] & ( 1 << 28 ) ) == 0 ) 
return iset; 
   135     if ( ( abcd[1] & ( 1 << 5 ) ) == 0 ) 
return iset;  
   137     if ( ( abcd[1] & ( 1 << 16 ) ) == 0 ) 
return iset; 
   139     if ( ( abcd[0] & 0x60 ) != 0x60 ) 
return iset;     
   142     if ( ( abcd[1] & ( 1 << 31 ) ) == 0 ) 
return iset; 
   144     if ( ( abcd[1] & 0x40020000 ) != 0x40020000 ) 
return iset; 
 #define cpuid(func, eax, ebx, ecx, edx)