#define NULL ((void *)0)
typedef unsigned long size_t; // Customize by platform.
typedef long intptr_t;
typedef unsigned long uintptr_t;
typedef long scalar_t__; // Either arithmetic or pointer type.
/* By default, we understand bool (as a convenience). */
typedef int bool;
#define false 0
#define true 1

/* Forward declarations */

/* Type definitions */

/* Variables and functions */
int get_cputype(int);
int get_vendor();
int /*<<< orphan*/ have_cpuid();
int /*<<< orphan*/ support_avx();
int /*<<< orphan*/ support_avx2();
int /*<<< orphan*/ support_avx512();
int /*<<< orphan*/ support_avx512_bf16();
int get_cpuname(void) {
  int family, exfamily, model, vendor, exmodel, stepping;
  if (!have_cpuid())
    return 11;
  family = get_cputype(4);
  exfamily = get_cputype(1);
  model = get_cputype(5);
  exmodel = get_cputype(2);
  stepping = get_cputype(9);
  vendor = get_vendor();
  if (vendor == 1) {
    switch (family) {
    case 0x4:
      return 12;
    case 0x5:
      return 13;
    case 0x6:
      switch (exmodel) {
      case 0:
        switch (model) {
        case 1:
        case 3:
        case 5:
        case 6:
          return 18;
        case 7:
        case 8:
        case 10:
        case 11:
          return 15;
        case 9:
        case 13:
        case 14:
          return 16;
        case 15:
          return 18;
        }
        break;
      case 1:
        switch (model) {
        case 6:
          return 18;
        case 7:
          return 19;
        case 10:
        case 11:
        case 14:
        case 15:
          return 21;
        case 12:
          return 22;
        case 13:
          return 20;
        }
        break;
      case 2:
        switch (model) {
        case 5:
          return 21;
        case 10:
          if (support_avx())
            return 44;
          else
            return 21;
        case 12:
          return 21;
        case 13:
          if (support_avx())
            return 44;
          else
            return 21;
        case 14:
        case 15:
          return 21;
        }
        break;
      case 3:
        switch (model) {
        case 7:
          return 22;
        case 10:
        case 14:
          if (support_avx())
            return 44;
          else
            return 21;
        case 12:
        case 15:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 13:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        }
        break;
      case 4:
        switch (model) {
        case 5:
        case 6:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 7:
        case 15:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 14:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 12:
        case 13:
          return 21;
        }
        break;
      case 5:
        switch (model) {
        case 6:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 5:
          if (support_avx512_bf16())
            return 54;
          if (support_avx512())
            return 52;
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 14:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 7:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 12:
        case 15:
          return 21;
        }
        break;
      case 6:
        switch (model) {
        case 6:
          if (support_avx512())
            return 52;
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 10:
          if (support_avx512_bf16())
            return 54;
          if (support_avx512())
            return 52;
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        }
        break;
      case 7:
        switch (model) {
        case 10:
          return 21;
        case 14:
          if (support_avx512())
            return 52;
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        }
        break;
      case 9:
      case 8:
        switch (model) {
        case 12:
          if (support_avx512())
            return 52;
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 14:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        }
      case 10:
        switch (model) {
        case 5:
        case 6:
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        case 7:
          if (support_avx512())
            return 52;
          if (support_avx2())
            return 48;
          if (support_avx())
            return 44;
          else
            return 21;
        }
        break;
      }
      break;
    case 0x7:
      return 23;
    case 0xf:
      switch (exfamily) {
      case 0:
        return 17;
      case 1:
        return 23;
      }
      break;
    }
    return 1;
  }
  if (vendor == 3) {
    switch (family) {
    case 0x4:
      return 25;
    case 0x5:
      return 26;
    case 0x6:
      return 30;
    case 0xf:
      switch (exfamily) {
      case 0:
      case 2:
        return 29;
      case 1:
      case 3:
        return 30;
      case 5:
      case 7:
        return 45;
      case 6:
        switch (model) {
        case 1:
          if (support_avx())
            return 46;
          else
            return 30;
        case 2:
        case 3:
          if (support_avx())
            return 47;
          else
            return 30;
        case 5:
          if (support_avx())
            return 50;
          else
            return 30;
        case 0:
        case 8:
          switch (exmodel) {
          case 1:
            if (support_avx())
              return 47;
            else
              return 30;
          case 3:
            if (support_avx())
              return 49;
            else
              return 30;
          case 6:
            if (support_avx())
              return 50;
            else
              return 30;
          }
          break;
        }
        break;
      case 8:
        switch (model) {
        case 1:
        case 8:
        default:
          if (support_avx())
            return 51;
          else
            return 30;
        }
        break;
      case 10:
        if (support_avx())
          return 51;
        else
          return 30;
      }
      break;
    }
    return 3;
  }
  if (vendor == 11) {
    switch (family) {
    case 0xf:
      switch (exfamily) {
      case 9:
        if (support_avx())
          return 51;
        else
          return 30;
      }
      break;
    }
    return 99;
  }
  if (vendor == 4) {
    switch (family) {
    case 0x4:
      return 33;
    case 0x5:
      return 34;
    case 0x6:
      return 35;
    }
    return 4;
  }
  if (vendor == 5) {
    switch (family) {
    case 0x5:
      return 36;
    }
    return 5;
  }
  if (vendor == 6) {
    switch (family) {
    case 0x5:
      return 37;
    case 0x6:
      if (model == 0xf && stepping < 0xe)
        return 43;
      return 21;
    default:
      if (family >= 0x7)
        return 21;
      else
        return 42;
    }
  }
  if (vendor == 12) {
    return 21;
  }
  if (vendor == 7) {
    switch (family) {
    case 0x5:
      return 38;
    }
    return 7;
  }
  if (vendor == 8) {
    switch (family) {
    case 0x5:
      return 39;
    }
    return 8;
  }
  if (vendor == 9) {
    switch (family) {
    case 0x5:
      return 40;
    }
    return 9;
  }
  if (vendor == 10) {
    switch (family) {
    case 0x5:
      return 41;
    }
    return 10;
  }
  return 0;
}


x86 assembly (clang, -O0):
<get_cpuname>:
push   %rbp
mov    %rsp,%rbp
sub    $0xa0,%rsp
mov    $0x0,%al
call   1090 <have_cpuid@plt>
cmp    $0x0,%eax
jne    1197 <get_cpuname+0x27>
movl   $0xb,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x4,%edi
call   1030 <get_cputype@plt>
mov    %eax,-0x8(%rbp)
mov    $0x1,%edi
call   1030 <get_cputype@plt>
mov    %eax,-0xc(%rbp)
mov    $0x5,%edi
call   1030 <get_cputype@plt>
mov    %eax,-0x10(%rbp)
mov    $0x2,%edi
call   1030 <get_cputype@plt>
mov    %eax,-0x18(%rbp)
mov    $0x9,%edi
call   1030 <get_cputype@plt>
mov    %eax,-0x1c(%rbp)
mov    $0x0,%al
call   1060 <get_vendor@plt>
mov    %eax,-0x14(%rbp)
cmpl   $0x1,-0x14(%rbp)
jne    1ac7 <get_cpuname+0x957>
mov    -0x8(%rbp),%eax
add    $0xfffffffc,%eax
mov    %eax,%ecx
mov    %rcx,-0x28(%rbp)
sub    $0xb,%eax
ja     1abb <get_cpuname+0x94b>
mov    -0x28(%rbp),%rax
lea    0x1e74(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0xc,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0xd,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    -0x18(%rbp),%eax
mov    %rax,-0x30(%rbp)
sub    $0xa,%rax
ja     1a69 <get_cpuname+0x8f9>
mov    -0x30(%rbp),%rax
lea    0x1e67(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    -0x10(%rbp),%eax
add    $0xffffffff,%eax
mov    %eax,%ecx
mov    %rcx,-0x38(%rbp)
sub    $0xe,%eax
ja     12ab <get_cpuname+0x13b>
mov    -0x38(%rbp),%rax
lea    0x1f3a(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x12,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0xf,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x10,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x12,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1a69 <get_cpuname+0x8f9>
mov    -0x10(%rbp),%eax
add    $0xfffffffa,%eax
mov    %eax,%ecx
mov    %rcx,-0x40(%rbp)
sub    $0x9,%eax
ja     1315 <get_cpuname+0x1a5>
mov    -0x40(%rbp),%rax
lea    0x1eb4(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x12,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x13,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x16,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x14,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1a69 <get_cpuname+0x8f9>
mov    -0x10(%rbp),%eax
add    $0xfffffffb,%eax
mov    %eax,%ecx
mov    %rcx,-0x48(%rbp)
sub    $0xa,%eax
ja     13b7 <get_cpuname+0x247>
mov    -0x48(%rbp),%rax
lea    0x1e1e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     136b <get_cpuname+0x1fb>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     139f <get_cpuname+0x22f>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1a69 <get_cpuname+0x8f9>
mov    -0x10(%rbp),%eax
add    $0xfffffff9,%eax
mov    %eax,%ecx
mov    %rcx,-0x50(%rbp)
sub    $0x8,%eax
ja     14a1 <get_cpuname+0x331>
mov    -0x50(%rbp),%rax
lea    0x1d58(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x16,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     140d <get_cpuname+0x29d>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     1435 <get_cpuname+0x2c5>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1451 <get_cpuname+0x2e1>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     1479 <get_cpuname+0x309>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1495 <get_cpuname+0x325>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1a69 <get_cpuname+0x8f9>
mov    -0x10(%rbp),%eax
add    $0xfffffffb,%eax
mov    %eax,%ecx
mov    %rcx,-0x58(%rbp)
sub    $0xa,%eax
ja     15a7 <get_cpuname+0x437>
mov    -0x58(%rbp),%rax
lea    0x1c42(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     14eb <get_cpuname+0x37b>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1507 <get_cpuname+0x397>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     152f <get_cpuname+0x3bf>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     154b <get_cpuname+0x3db>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     1573 <get_cpuname+0x403>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     158f <get_cpuname+0x41f>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1a69 <get_cpuname+0x8f9>
mov    -0x10(%rbp),%eax
add    $0xfffffffb,%eax
mov    %eax,%ecx
mov    %rcx,-0x60(%rbp)
sub    $0xa,%eax
ja     1729 <get_cpuname+0x5b9>
mov    -0x60(%rbp),%rax
lea    0x1b10(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     15f1 <get_cpuname+0x481>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     160d <get_cpuname+0x49d>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1050 <support_avx512_bf16@plt>
cmp    $0x0,%eax
je     1635 <get_cpuname+0x4c5>
movl   $0x36,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1040 <support_avx512@plt>
cmp    $0x0,%eax
je     1651 <get_cpuname+0x4e1>
movl   $0x34,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     166d <get_cpuname+0x4fd>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1689 <get_cpuname+0x519>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     16b1 <get_cpuname+0x541>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     16cd <get_cpuname+0x55d>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     16f5 <get_cpuname+0x585>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1711 <get_cpuname+0x5a1>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1a69 <get_cpuname+0x8f9>
mov    -0x10(%rbp),%eax
mov    %eax,-0x64(%rbp)
sub    $0x6,%eax
je     1753 <get_cpuname+0x5e3>
jmp    1742 <get_cpuname+0x5d2>
mov    -0x64(%rbp),%eax
sub    $0xa,%eax
je     17b3 <get_cpuname+0x643>
jmp    182f <get_cpuname+0x6bf>
mov    $0x0,%al
call   1040 <support_avx512@plt>
cmp    $0x0,%eax
je     176f <get_cpuname+0x5ff>
movl   $0x34,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     178b <get_cpuname+0x61b>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     17a7 <get_cpuname+0x637>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1050 <support_avx512_bf16@plt>
cmp    $0x0,%eax
je     17cf <get_cpuname+0x65f>
movl   $0x36,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1040 <support_avx512@plt>
cmp    $0x0,%eax
je     17eb <get_cpuname+0x67b>
movl   $0x34,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     1807 <get_cpuname+0x697>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1823 <get_cpuname+0x6b3>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1a69 <get_cpuname+0x8f9>
mov    -0x10(%rbp),%eax
mov    %eax,-0x68(%rbp)
sub    $0xa,%eax
je     1859 <get_cpuname+0x6e9>
jmp    1848 <get_cpuname+0x6d8>
mov    -0x68(%rbp),%eax
sub    $0xe,%eax
je     1865 <get_cpuname+0x6f5>
jmp    18c5 <get_cpuname+0x755>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1040 <support_avx512@plt>
cmp    $0x0,%eax
je     1881 <get_cpuname+0x711>
movl   $0x34,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     189d <get_cpuname+0x72d>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     18b9 <get_cpuname+0x749>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1a69 <get_cpuname+0x8f9>
mov    -0x10(%rbp),%eax
mov    %eax,-0x6c(%rbp)
sub    $0xc,%eax
je     18ef <get_cpuname+0x77f>
jmp    18de <get_cpuname+0x76e>
mov    -0x6c(%rbp),%eax
sub    $0xe,%eax
je     194f <get_cpuname+0x7df>
jmp    1993 <get_cpuname+0x823>
mov    $0x0,%al
call   1040 <support_avx512@plt>
cmp    $0x0,%eax
je     190b <get_cpuname+0x79b>
movl   $0x34,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     1927 <get_cpuname+0x7b7>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1943 <get_cpuname+0x7d3>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     196b <get_cpuname+0x7fb>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1987 <get_cpuname+0x817>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1998 <get_cpuname+0x828>
mov    -0x10(%rbp),%eax
mov    %eax,-0x70(%rbp)
add    $0xfffffffb,%eax
sub    $0x2,%eax
jb     19c0 <get_cpuname+0x850>
jmp    19af <get_cpuname+0x83f>
mov    -0x70(%rbp),%eax
sub    $0x7,%eax
je     1a04 <get_cpuname+0x894>
jmp    1a64 <get_cpuname+0x8f4>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     19dc <get_cpuname+0x86c>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     19f8 <get_cpuname+0x888>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1040 <support_avx512@plt>
cmp    $0x0,%eax
je     1a20 <get_cpuname+0x8b0>
movl   $0x34,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1080 <support_avx2@plt>
cmp    $0x0,%eax
je     1a3c <get_cpuname+0x8cc>
movl   $0x30,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1a58 <get_cpuname+0x8e8>
movl   $0x2c,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1a69 <get_cpuname+0x8f9>
jmp    1abb <get_cpuname+0x94b>
movl   $0x17,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    -0xc(%rbp),%eax
mov    %eax,-0x74(%rbp)
test   %eax,%eax
je     1a9e <get_cpuname+0x92e>
jmp    1a8d <get_cpuname+0x91d>
mov    -0x74(%rbp),%eax
sub    $0x1,%eax
je     1aaa <get_cpuname+0x93a>
jmp    1ab6 <get_cpuname+0x946>
movl   $0x11,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x17,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1abb <get_cpuname+0x94b>
movl   $0x1,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0x3,-0x14(%rbp)
jne    1d62 <get_cpuname+0xbf2>
mov    -0x8(%rbp),%eax
add    $0xfffffffc,%eax
mov    %eax,%ecx
mov    %rcx,-0x80(%rbp)
sub    $0xb,%eax
ja     1d56 <get_cpuname+0xbe6>
mov    -0x80(%rbp),%rax
lea    0x150f(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x19,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1a,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    -0xc(%rbp),%eax
mov    %rax,-0x88(%rbp)
sub    $0xa,%rax
ja     1d51 <get_cpuname+0xbe1>
mov    -0x88(%rbp),%rax
lea    0x14f0(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
movl   $0x1d,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x2d,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    -0x10(%rbp),%eax
mov    %rax,-0x90(%rbp)
sub    $0x8,%rax
ja     1ccc <get_cpuname+0xb5c>
mov    -0x90(%rbp),%rax
lea    0x14cd(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1bb4 <get_cpuname+0xa44>
movl   $0x2e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1bdc <get_cpuname+0xa6c>
movl   $0x2f,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1c04 <get_cpuname+0xa94>
movl   $0x32,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    -0x18(%rbp),%eax
mov    %eax,-0x94(%rbp)
sub    $0x1,%eax
je     1c4f <get_cpuname+0xadf>
jmp    1c27 <get_cpuname+0xab7>
mov    -0x94(%rbp),%eax
sub    $0x3,%eax
je     1c77 <get_cpuname+0xb07>
jmp    1c3b <get_cpuname+0xacb>
mov    -0x94(%rbp),%eax
sub    $0x6,%eax
je     1c9f <get_cpuname+0xb2f>
jmp    1cc7 <get_cpuname+0xb57>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1c6b <get_cpuname+0xafb>
movl   $0x2f,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1c93 <get_cpuname+0xb23>
movl   $0x31,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1cbb <get_cpuname+0xb4b>
movl   $0x32,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1ccc <get_cpuname+0xb5c>
jmp    1d51 <get_cpuname+0xbe1>
mov    -0x10(%rbp),%eax
mov    %eax,-0x98(%rbp)
sub    $0x1,%eax
je     1cfc <get_cpuname+0xb8c>
jmp    1ce8 <get_cpuname+0xb78>
mov    -0x98(%rbp),%eax
sub    $0x8,%eax
jne    1d01 <get_cpuname+0xb91>
jmp    1cfc <get_cpuname+0xb8c>
jmp    1d01 <get_cpuname+0xb91>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1d1d <get_cpuname+0xbad>
movl   $0x33,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1d45 <get_cpuname+0xbd5>
movl   $0x33,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1d56 <get_cpuname+0xbe6>
movl   $0x3,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0xb,-0x14(%rbp)
jne    1dc7 <get_cpuname+0xc57>
mov    -0x8(%rbp),%eax
sub    $0xf,%eax
jne    1dbb <get_cpuname+0xc4b>
jmp    1d7d <get_cpuname+0xc0d>
mov    -0xc(%rbp),%eax
sub    $0x9,%eax
jne    1db6 <get_cpuname+0xc46>
jmp    1d8e <get_cpuname+0xc1e>
mov    $0x0,%al
call   1070 <support_avx@plt>
cmp    $0x0,%eax
je     1daa <get_cpuname+0xc3a>
movl   $0x33,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x1e,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
jmp    1dbb <get_cpuname+0xc4b>
movl   $0x63,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0x4,-0x14(%rbp)
jne    1e40 <get_cpuname+0xcd0>
mov    -0x8(%rbp),%eax
mov    %eax,-0x9c(%rbp)
sub    $0x4,%eax
je     1e10 <get_cpuname+0xca0>
jmp    1de8 <get_cpuname+0xc78>
mov    -0x9c(%rbp),%eax
sub    $0x5,%eax
je     1e1c <get_cpuname+0xcac>
jmp    1dfc <get_cpuname+0xc8c>
mov    -0x9c(%rbp),%eax
sub    $0x6,%eax
je     1e28 <get_cpuname+0xcb8>
jmp    1e34 <get_cpuname+0xcc4>
movl   $0x21,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x22,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x23,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x4,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0x5,-0x14(%rbp)
jne    1e73 <get_cpuname+0xd03>
mov    -0x8(%rbp),%eax
sub    $0x5,%eax
jne    1e67 <get_cpuname+0xcf7>
jmp    1e5b <get_cpuname+0xceb>
movl   $0x24,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x5,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0x6,-0x14(%rbp)
jne    1f02 <get_cpuname+0xd92>
mov    -0x8(%rbp),%eax
mov    %eax,-0xa0(%rbp)
sub    $0x5,%eax
je     1ea8 <get_cpuname+0xd38>
jmp    1e94 <get_cpuname+0xd24>
mov    -0xa0(%rbp),%eax
sub    $0x6,%eax
je     1eb4 <get_cpuname+0xd44>
jmp    1ee0 <get_cpuname+0xd70>
movl   $0x25,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0xf,-0x10(%rbp)
jne    1ed4 <get_cpuname+0xd64>
cmpl   $0xe,-0x1c(%rbp)
jge    1ed4 <get_cpuname+0xd64>
movl   $0x2b,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0x7,-0x8(%rbp)
jl     1ef6 <get_cpuname+0xd86>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x2a,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0xc,-0x14(%rbp)
jne    1f18 <get_cpuname+0xda8>
movl   $0x15,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0x7,-0x14(%rbp)
jne    1f4b <get_cpuname+0xddb>
mov    -0x8(%rbp),%eax
sub    $0x5,%eax
jne    1f3f <get_cpuname+0xdcf>
jmp    1f33 <get_cpuname+0xdc3>
movl   $0x26,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x7,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0x8,-0x14(%rbp)
jne    1f7e <get_cpuname+0xe0e>
mov    -0x8(%rbp),%eax
sub    $0x5,%eax
jne    1f72 <get_cpuname+0xe02>
jmp    1f66 <get_cpuname+0xdf6>
movl   $0x27,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x8,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0x9,-0x14(%rbp)
jne    1fb1 <get_cpuname+0xe41>
mov    -0x8(%rbp),%eax
sub    $0x5,%eax
jne    1fa5 <get_cpuname+0xe35>
jmp    1f99 <get_cpuname+0xe29>
movl   $0x28,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x9,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
cmpl   $0xa,-0x14(%rbp)
jne    1fe4 <get_cpuname+0xe74>
mov    -0x8(%rbp),%eax
sub    $0x5,%eax
jne    1fd8 <get_cpuname+0xe68>
jmp    1fcc <get_cpuname+0xe5c>
movl   $0x29,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0xa,-0x4(%rbp)
jmp    1feb <get_cpuname+0xe7b>
movl   $0x0,-0x4(%rbp)
mov    -0x4(%rbp),%eax
add    $0xa0,%rsp
pop    %rbp
ret

x86 assembly (clang, -O2):
<get_cpuname>:
push   %rbp
push   %r15
push   %r14
push   %r12
push   %rbx
xor    %eax,%eax
call   1090 <have_cpuid@plt>
test   %eax,%eax
je     1212 <get_cpuname+0xa2>
mov    $0x4,%edi
call   1030 <get_cputype@plt>
mov    %eax,%ebx
mov    $0x1,%edi
call   1030 <get_cputype@plt>
mov    %eax,%r12d
mov    $0x5,%edi
call   1030 <get_cputype@plt>
mov    %eax,%r14d
mov    $0x2,%edi
call   1030 <get_cputype@plt>
mov    %eax,%r15d
mov    $0x9,%edi
call   1030 <get_cputype@plt>
mov    %eax,%ebp
xor    %eax,%eax
call   1060 <get_vendor@plt>
add    $0xffffffff,%eax
cmp    $0xb,%eax
ja     1248 <get_cpuname+0xd8>
lea    0xe24(%rip),%rcx
movslq (%rcx,%rax,4),%rdx
add    %rcx,%rdx
mov    $0x15,%eax
jmp    *%rdx
add    $0xfffffffc,%ebx
cmp    $0xb,%ebx
ja     152c <get_cpuname+0x3bc>
mov    $0xc,%eax
lea    0xeae(%rip),%rcx
movslq (%rcx,%rbx,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
mov    $0xd,%eax
jmp    1217 <get_cpuname+0xa7>
mov    $0xb,%eax
pop    %rbx
pop    %r12
pop    %r14
pop    %r15
pop    %rbp
ret
mov    $0x63,%eax
cmp    $0xf,%ebx
jne    1217 <get_cpuname+0xa7>
cmp    $0x9,%r12d
jne    1217 <get_cpuname+0xa7>
xor    %eax,%eax
call   1070 <support_avx@plt>
test   %eax,%eax
mov    $0x1e,%ecx
mov    $0x33,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
xor    %eax,%eax
jmp    1217 <get_cpuname+0xa7>
add    $0xfffffffc,%ebx
cmp    $0xb,%ebx
ja     141c <get_cpuname+0x2ac>
mov    $0x19,%eax
lea    0xdcc(%rip),%rcx
movslq (%rcx,%rbx,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
mov    $0x1a,%eax
jmp    1217 <get_cpuname+0xa7>
lea    -0x4(%rbx),%eax
add    $0x1d,%ebx
cmp    $0x3,%eax
mov    $0x4,%eax
cmovb  %ebx,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0x5,%ebx
mov    $0x24,%ecx
mov    $0x5,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0x5,%ebx
je     1316 <get_cpuname+0x1a6>
cmp    $0x6,%ebx
jne    1320 <get_cpuname+0x1b0>
cmp    $0xe,%ebp
mov    $0x2b,%eax
mov    $0x15,%ecx
cmovge %ecx,%eax
cmp    $0xf,%r14d
cmovne %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0x5,%ebx
mov    $0x26,%ecx
mov    $0x7,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0x5,%ebx
mov    $0x27,%ecx
mov    $0x8,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0x5,%ebx
mov    $0x28,%ecx
mov    $0x9,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0x5,%ebx
mov    $0x29,%ecx
mov    $0xa,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
mov    $0x25,%eax
jmp    1217 <get_cpuname+0xa7>
mov    $0x15,%ecx
mov    $0x2a,%eax
cmovg  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0xa,%r12d
ja     141c <get_cpuname+0x2ac>
mov    $0x1d,%eax
mov    %r12d,%ecx
lea    0xd15(%rip),%rdx
movslq (%rdx,%rcx,4),%rcx
add    %rdx,%rcx
jmp    *%rcx
mov    $0x1e,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0xa,%r15d
ja     152c <get_cpuname+0x3bc>
mov    %r15d,%eax
lea    0xd6e(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
add    $0xfffffffb,%r14d
cmp    $0x9,%r14d
ja     152c <get_cpuname+0x3bc>
lea    0xd7c(%rip),%rax
movslq (%rax,%r14,4),%rcx
add    %rax,%rcx
jmp    *%rcx
mov    $0x17,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0x1,%r12d
mov    $0x17,%eax
mov    $0x1,%ecx
cmove  %eax,%ecx
test   %r12d,%r12d
mov    $0x11,%eax
cmovne %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
mov    $0x2d,%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0x8,%r14d
ja     141c <get_cpuname+0x2ac>
mov    %r14d,%eax
lea    0xcae(%rip),%rcx
movslq (%rcx,%rax,4),%rax
add    %rcx,%rax
jmp    *%rax
cmp    $0x6,%r15d
je     1593 <get_cpuname+0x423>
cmp    $0x3,%r15d
je     15c9 <get_cpuname+0x459>
cmp    $0x1,%r15d
jne    141c <get_cpuname+0x2ac>
xor    %eax,%eax
call   1070 <support_avx@plt>
test   %eax,%eax
mov    $0x1e,%ecx
mov    $0x2f,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
mov    $0x3,%eax
jmp    1217 <get_cpuname+0xa7>
add    $0xffffffff,%r14d
cmp    $0xf,%r14d
jae    152c <get_cpuname+0x3bc>
movslq %r14d,%rax
lea    0xd72(%rip),%rcx
jmp    1458 <get_cpuname+0x2e8>
add    $0xfffffffa,%r14d
cmp    $0xa,%r14d
jae    152c <get_cpuname+0x3bc>
movslq %r14d,%rax
lea    0xd94(%rip),%rcx
mov    (%rcx,%rax,4),%eax
jmp    1217 <get_cpuname+0xa7>
cmp    $0xf,%r14d
ja     152c <get_cpuname+0x3bc>
mov    $0xd020,%eax
bt     %r14d,%eax
mov    $0x15,%eax
jb     1217 <get_cpuname+0xa7>
cmp    $0xa,%r14d
je     1578 <get_cpuname+0x408>
cmp    $0xd,%r14d
je     1578 <get_cpuname+0x408>
jmp    152c <get_cpuname+0x3bc>
add    $0xfffffff9,%r14d
cmp    $0x8,%r14d
ja     152c <get_cpuname+0x3bc>
mov    $0x16,%eax
lea    0xcdb(%rip),%rcx
movslq (%rcx,%r14,4),%rdx
add    %rcx,%rdx
jmp    *%rdx
add    $0xfffffffb,%r14d
cmp    $0xa,%r14d
ja     152c <get_cpuname+0x3bc>
lea    0xc95(%rip),%rax
movslq (%rax,%r14,4),%rcx
add    %rax,%rcx
mov    $0x15,%eax
jmp    *%rcx
add    $0xfffffffb,%r14d
cmp    $0xa,%r14d
ja     152c <get_cpuname+0x3bc>
lea    0xc4a(%rip),%rax
movslq (%rax,%r14,4),%rcx
add    %rax,%rcx
mov    $0x15,%eax
jmp    *%rcx
cmp    $0xa,%r14d
je     1536 <get_cpuname+0x3c6>
cmp    $0x6,%r14d
je     154c <get_cpuname+0x3dc>
jmp    152c <get_cpuname+0x3bc>
mov    $0x15,%eax
cmp    $0xa,%r14d
je     1217 <get_cpuname+0xa7>
cmp    $0xe,%r14d
je     154c <get_cpuname+0x3dc>
jmp    152c <get_cpuname+0x3bc>
lea    -0x5(%r14),%eax
cmp    $0x2,%eax
jb     1562 <get_cpuname+0x3f2>
cmp    $0x7,%r14d
je     154c <get_cpuname+0x3dc>
mov    $0x1,%eax
jmp    1217 <get_cpuname+0xa7>
xor    %eax,%eax
call   1050 <support_avx512_bf16@plt>
mov    %eax,%ecx
mov    $0x36,%eax
test   %ecx,%ecx
jne    1217 <get_cpuname+0xa7>
xor    %eax,%eax
call   1040 <support_avx512@plt>
mov    %eax,%ecx
mov    $0x34,%eax
test   %ecx,%ecx
jne    1217 <get_cpuname+0xa7>
xor    %eax,%eax
call   1080 <support_avx2@plt>
mov    %eax,%ecx
mov    $0x30,%eax
test   %ecx,%ecx
jne    1217 <get_cpuname+0xa7>
xor    %eax,%eax
call   1070 <support_avx@plt>
test   %eax,%eax
mov    $0x15,%ecx
mov    $0x2c,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
xor    %eax,%eax
call   1070 <support_avx@plt>
test   %eax,%eax
mov    $0x1e,%ecx
mov    $0x32,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>
xor    %eax,%eax
call   1070 <support_avx@plt>
mov    %eax,%ecx
xor    %eax,%eax
test   %ecx,%ecx
setne  %al
shl    $0x4,%eax
add    $0x1e,%eax
jmp    1217 <get_cpuname+0xa7>
xor    %eax,%eax
call   1070 <support_avx@plt>
test   %eax,%eax
mov    $0x1e,%ecx
mov    $0x31,%eax
cmove  %ecx,%eax
jmp    1217 <get_cpuname+0xa7>

LLVM IR (-O0):
define i32 @get_cpuname() {
%1 = alloca i32
%2 = alloca i32
%3 = alloca i32
%4 = alloca i32
%5 = alloca i32
%6 = alloca i32
%7 = alloca i32
%8 = call i32 (...) @have_cpuid()
%9 = icmp ne i32 %8, 0
br i1 %9, label %11, label %10
10: ; preds = %0
store i32 11, i32* %1
br label %417
11: ; preds = %0
%12 = call i32 @get_cputype(i32 4)
store i32 %12, i32* %2
%13 = call i32 @get_cputype(i32 1)
store i32 %13, i32* %3
%14 = call i32 @get_cputype(i32 5)
store i32 %14, i32* %4
%15 = call i32 @get_cputype(i32 2)
store i32 %15, i32* %6
%16 = call i32 @get_cputype(i32 9)
store i32 %16, i32* %7
%17 = call i32 (...) @get_vendor()
store i32 %17, i32* %5
%18 = load i32, i32* %5
%19 = icmp eq i32 %18, 1
br i1 %19, label %20, label %271
20: ; preds = %11
%21 = load i32, i32* %2
switch i32 %21, label %270 [
i32 4, label %22
i32 5, label %23
i32 6, label %24
i32 7, label %264
i32 15, label %265
]
22: ; preds = %20
store i32 12, i32* %1
br label %417
23: ; preds = %20
store i32 13, i32* %1
br label %417
24: ; preds = %20
%25 = load i32, i32* %6
switch i32 %25, label %263 [
i32 0, label %26
i32 1, label %33
i32 2, label %41
i32 3, label %57
i32 4, label %84
i32 5, label %115
i32 6, label %163
i32 7, label %196
i32 9, label %213
i32 8, label %213
i32 10, label %238
]
26: ; preds = %24
%27 = load i32, i32* %4
switch i32 %27, label %32 [
i32 1, label %28
i32 3, label %28
i32 5, label %28
i32 6, label %28
i32 7, label %29
i32 8, label %29
i32 10, label %29
i32 11, label %29
i32 9, label %30
i32 13, label %30
i32 14, label %30
i32 15, label %31
]
28: ; preds = %26, %26, %26, %26
store i32 18, i32* %1
br label %417
29: ; preds = %26, %26, %26, %26
store i32 15, i32* %1
br label %417
30: ; preds = %26, %26, %26
store i32 16, i32* %1
br label %417
31: ; preds = %26
store i32 18, i32* %1
br label %417
32: ; preds = %26
br label %263
33: ; preds = %24
%34 = load i32, i32* %4
switch i32 %34, label %40 [
i32 6, label %35
i32 7, label %36
i32 10, label %37
i32 11, label %37
i32 14, label %37
i32 15, label %37
i32 12, label %38
i32 13, label %39
]
35: ; preds = %33
store i32 18, i32* %1
br label %417
36: ; preds = %33
store i32 19, i32* %1
br label %417
37: ; preds = %33, %33, %33, %33
store i32 21, i32* %1
br label %417
38: ; preds = %33
store i32 22, i32* %1
br label %417
39: ; preds = %33
store i32 20, i32* %1
br label %417
40: ; preds = %33
br label %263
41: ; preds = %24
%42 = load i32, i32* %4
switch i32 %42, label %56 [
i32 5, label %43
i32 10, label %44
i32 12, label %49
i32 13, label %50
i32 14, label %55
i32 15, label %55
]
43: ; preds = %41
store i32 21, i32* %1
br label %417
44: ; preds = %41
%45 = call i32 (...) @support_avx()
%46 = icmp ne i32 %45, 0
br i1 %46, label %47, label %48
47: ; preds = %44
store i32 44, i32* %1
br label %417
48: ; preds = %44
store i32 21, i32* %1
br label %417
49: ; preds = %41
store i32 21, i32* %1
br label %417
50: ; preds = %41
%51 = call i32 (...) @support_avx()
%52 = icmp ne i32 %51, 0
br i1 %52, label %53, label %54
53: ; preds = %50
store i32 44, i32* %1
br label %417
54: ; preds = %50
store i32 21, i32* %1
br label %417
55: ; preds = %41, %41
store i32 21, i32* %1
br label %417
56: ; preds = %41
br label %263
57: ; preds = %24
%58 = load i32, i32* %4
switch i32 %58, label %83 [
i32 7, label %59
i32 10, label %60
i32 14, label %60
i32 12, label %65
i32 15, label %65
i32 13, label %74
]
59: ; preds = %57
store i32 22, i32* %1
br label %417
60: ; preds = %57, %57
%61 = call i32 (...) @support_avx()
%62 = icmp ne i32 %61, 0
br i1 %62, label %63, label %64
63: ; preds = %60
store i32 44, i32* %1
br label %417
64: ; preds = %60
store i32 21, i32* %1
br label %417
65: ; preds = %57, %57
%66 = call i32 (...) @support_avx2()
%67 = icmp ne i32 %66, 0
br i1 %67, label %68, label %69
68: ; preds = %65
store i32 48, i32* %1
br label %417
69: ; preds = %65
%70 = call i32 (...) @support_avx()
%71 = icmp ne i32 %70, 0
br i1 %71, label %72, label %73
72: ; preds = %69
store i32 44, i32* %1
br label %417
73: ; preds = %69
store i32 21, i32* %1
br label %417
74: ; preds = %57
%75 = call i32 (...) @support_avx2()
%76 = icmp ne i32 %75, 0
br i1 %76, label %77, label %78
77: ; preds = %74
store i32 48, i32* %1
br label %417
78: ; preds = %74
%79 = call i32 (...) @support_avx()
%80 = icmp ne i32 %79, 0
br i1 %80, label %81, label %82
81: ; preds = %78
store i32 44, i32* %1
br label %417
82: ; preds = %78
store i32 21, i32* %1
br label %417
83: ; preds = %57
br label %263
84: ; preds = %24
%85 = load i32, i32* %4
switch i32 %85, label %114 [
i32 5, label %86
i32 6, label %86
i32 7, label %95
i32 15, label %95
i32 14, label %104
i32 12, label %113
i32 13, label %113
]
86: ; preds = %84, %84
%87 = call i32 (...) @support_avx2()
%88 = icmp ne i32 %87, 0
br i1 %88, label %89, label %90
89: ; preds = %86
store i32 48, i32* %1
br label %417
90: ; preds = %86
%91 = call i32 (...) @support_avx()
%92 = icmp ne i32 %91, 0
br i1 %92, label %93, label %94
93: ; preds = %90
store i32 44, i32* %1
br label %417
94: ; preds = %90
store i32 21, i32* %1
br label %417
95: ; preds = %84, %84
%96 = call i32 (...) @support_avx2()
%97 = icmp ne i32 %96, 0
br i1 %97, label %98, label %99
98: ; preds = %95
store i32 48, i32* %1
br label %417
99: ; preds = %95
%100 = call i32 (...) @support_avx()
%101 = icmp ne i32 %100, 0
br i1 %101, label %102, label %103
102: ; preds = %99
store i32 44, i32* %1
br label %417
103: ; preds = %99
store i32 21, i32* %1
br label %417
104: ; preds = %84
%105 = call i32 (...) @support_avx2()
%106 = icmp ne i32 %105, 0
br i1 %106, label %107, label %108
107: ; preds = %104
store i32 48, i32* %1
br label %417
108: ; preds = %104
%109 = call i32 (...) @support_avx()
%110 = icmp ne i32 %109, 0
br i1 %110, label %111, label %112
111: ; preds = %108
store i32 44, i32* %1
br label %417
112: ; preds = %108
store i32 21, i32* %1
br label %417
113: ; preds = %84, %84
store i32 21, i32* %1
br label %417
114: ; preds = %84
br label %263
115: ; preds = %24
%116 = load i32, i32* %4
switch i32 %116, label %162 [
i32 6, label %117
i32 5, label %126
i32 14, label %143
i32 7, label %152
i32 12, label %161
i32 15, label %161
]
117: ; preds = %115
%118 = call i32 (...) @support_avx2()
%119 = icmp ne i32 %118, 0
br i1 %119, label %120, label %121
120: ; preds = %117
store i32 48, i32* %1
br label %417
121: ; preds = %117
%122 = call i32 (...) @support_avx()
%123 = icmp ne i32 %122, 0
br i1 %123, label %124, label %125
124: ; preds = %121
store i32 44, i32* %1
br label %417
125: ; preds = %121
store i32 21, i32* %1
br label %417
126: ; preds = %115
%127 = call i32 (...) @support_avx512_bf16()
%128 = icmp ne i32 %127, 0
br i1 %128, label %129, label %130
129: ; preds = %126
store i32 54, i32* %1
br label %417
130: ; preds = %126
%131 = call i32 (...) @support_avx512()
%132 = icmp ne i32 %131, 0
br i1 %132, label %133, label %134
133: ; preds = %130
store i32 52, i32* %1
br label %417
134: ; preds = %130
%135 = call i32 (...) @support_avx2()
%136 = icmp ne i32 %135, 0
br i1 %136, label %137, label %138
137: ; preds = %134
store i32 48, i32* %1
br label %417
138: ; preds = %134
%139 = call i32 (...) @support_avx()
%140 = icmp ne i32 %139, 0
br i1 %140, label %141, label %142
141: ; preds = %138
store i32 44, i32* %1
br label %417
142: ; preds = %138
store i32 21, i32* %1
br label %417
143: ; preds = %115
%144 = call i32 (...) @support_avx2()
%145 = icmp ne i32 %144, 0
br i1 %145, label %146, label %147
146: ; preds = %143
store i32 48, i32* %1
br label %417
147: ; preds = %143
%148 = call i32 (...) @support_avx()
%149 = icmp ne i32 %148, 0
br i1 %149, label %150, label %151
150: ; preds = %147
store i32 44, i32* %1
br label %417
151: ; preds = %147
store i32 21, i32* %1
br label %417
152: ; preds = %115
%153 = call i32 (...) @support_avx2()
%154 = icmp ne i32 %153, 0
br i1 %154, label %155, label %156
155: ; preds = %152
store i32 48, i32* %1
br label %417
156: ; preds = %152
%157 = call i32 (...) @support_avx()
%158 = icmp ne i32 %157, 0
br i1 %158, label %159, label %160
159: ; preds = %156
store i32 44, i32* %1
br label %417
160: ; preds = %156
store i32 21, i32* %1
br label %417
161: ; preds = %115, %115
store i32 21, i32* %1
br label %417
162: ; preds = %115
br label %263
163: ; preds = %24
%164 = load i32, i32* %4
switch i32 %164, label %195 [
i32 6, label %165
i32 10, label %178
]
165: ; preds = %163
%166 = call i32 (...) @support_avx512()
%167 = icmp ne i32 %166, 0
br i1 %167, label %168, label %169
168: ; preds = %165
store i32 52, i32* %1
br label %417
169: ; preds = %165
%170 = call i32 (...) @support_avx2()
%171 = icmp ne i32 %170, 0
br i1 %171, label %172, label %173
172: ; preds = %169
store i32 48, i32* %1
br label %417
173: ; preds = %169
%174 = call i32 (...) @support_avx()
%175 = icmp ne i32 %174, 0
br i1 %175, label %176, label %177
176: ; preds = %173
store i32 44, i32* %1
br label %417
177: ; preds = %173
store i32 21, i32* %1
br label %417
178: ; preds = %163
%179 = call i32 (...) @support_avx512_bf16()
%180 = icmp ne i32 %179, 0
br i1 %180, label %181, label %182
181: ; preds = %178
store i32 54, i32* %1
br label %417
182: ; preds = %178
%183 = call i32 (...) @support_avx512()
%184 = icmp ne i32 %183, 0
br i1 %184, label %185, label %186
185: ; preds = %182
store i32 52, i32* %1
br label %417
186: ; preds = %182
%187 = call i32 (...) @support_avx2()
%188 = icmp ne i32 %187, 0
br i1 %188, label %189, label %190
189: ; preds = %186
store i32 48, i32* %1
br label %417
190: ; preds = %186
%191 = call i32 (...) @support_avx()
%192 = icmp ne i32 %191, 0
br i1 %192, label %193, label %194
193: ; preds = %190
store i32 44, i32* %1
br label %417
194: ; preds = %190
store i32 21, i32* %1
br label %417
195: ; preds = %163
br label %263
196: ; preds = %24
%197 = load i32, i32* %4
switch i32 %197, label %212 [
i32 10, label %198
i32 14, label %199
]
198: ; preds = %196
store i32 21, i32* %1
br label %417
199: ; preds = %196
%200 = call i32 (...) @support_avx512()
%201 = icmp ne i32 %200, 0
br i1 %201, label %202, label %203
202: ; preds = %199
store i32 52, i32* %1
br label %417
203: ; preds = %199
%204 = call i32 (...) @support_avx2()
%205 = icmp ne i32 %204, 0
br i1 %205, label %206, label %207
206: ; preds = %203
store i32 48, i32* %1
br label %417
207: ; preds = %203
%208 = call i32 (...) @support_avx()
%209 = icmp ne i32 %208, 0
br i1 %209, label %210, label %211
210: ; preds = %207
store i32 44, i32* %1
br label %417
211: ; preds = %207
store i32 21, i32* %1
br label %417
212: ; preds = %196
br label %263
213: ; preds = %24, %24
%214 = load i32, i32* %4
switch i32 %214, label %237 [
i32 12, label %215
i32 14, label %228
]
215: ; preds = %213
%216 = call i32 (...) @support_avx512()
%217 = icmp ne i32 %216, 0
br i1 %217, label %218, label %219
218: ; preds = %215
store i32 52, i32* %1
br label %417
219: ; preds = %215
%220 = call i32 (...) @support_avx2()
%221 = icmp ne i32 %220, 0
br i1 %221, label %222, label %223
222: ; preds = %219
store i32 48, i32* %1
br label %417
223: ; preds = %219
%224 = call i32 (...) @support_avx()
%225 = icmp ne i32 %224, 0
br i1 %225, label %226, label %227
226: ; preds = %223
store i32 44, i32* %1
br label %417
227: ; preds = %223
store i32 21, i32* %1
br label %417
228: ; preds = %213
%229 = call i32 (...) @support_avx2()
%230 = icmp ne i32 %229, 0
br i1 %230, label %231, label %232
231: ; preds = %228
store i32 48, i32* %1
br label %417
232: ; preds = %228
%233 = call i32 (...) @support_avx()
%234 = icmp ne i32 %233, 0
br i1 %234, label %235, label %236
235: ; preds = %232
store i32 44, i32* %1
br label %417
236: ; preds = %232
store i32 21, i32* %1
br label %417
237: ; preds = %213
br label %238
238: ; preds = %24, %237
%239 = load i32, i32* %4
switch i32 %239, label %262 [
i32 5, label %240
i32 6, label %240
i32 7, label %249
]
240: ; preds = %238, %238
%241 = call i32 (...) @support_avx2()
%242 = icmp ne i32 %241, 0
br i1 %242, label %243, label %244
243: ; preds = %240
store i32 48, i32* %1
br label %417
244: ; preds = %240
%245 = call i32 (...) @support_avx()
%246 = icmp ne i32 %245, 0
br i1 %246, label %247, label %248
247: ; preds = %244
store i32 44, i32* %1
br label %417
248: ; preds = %244
store i32 21, i32* %1
br label %417
249: ; preds = %238
%250 = call i32 (...) @support_avx512()
%251 = icmp ne i32 %250, 0
br i1 %251, label %252, label %253
252: ; preds = %249
store i32 52, i32* %1
br label %417
253: ; preds = %249
%254 = call i32 (...) @support_avx2()
%255 = icmp ne i32 %254, 0
br i1 %255, label %256, label %257
256: ; preds = %253
store i32 48, i32* %1
br label %417
257: ; preds = %253
%258 = call i32 (...) @support_avx()
%259 = icmp ne i32 %258, 0
br i1 %259, label %260, label %261
260: ; preds = %257
store i32 44, i32* %1
br label %417
261: ; preds = %257
store i32 21, i32* %1
br label %417
262: ; preds = %238
br label %263
263: ; preds = %24, %262, %212, %195, %162, %114, %83, %56, %40, %32
br label %270
264: ; preds = %20
store i32 23, i32* %1
br label %417
265: ; preds = %20
%266 = load i32, i32* %3
switch i32 %266, label %269 [
i32 0, label %267
i32 1, label %268
]
267: ; preds = %265
store i32 17, i32* %1
br label %417
268: ; preds = %265
store i32 23, i32* %1
br label %417
269: ; preds = %265
br label %270
270: ; preds = %20, %269, %263
store i32 1, i32* %1
br label %417
271: ; preds = %11
%272 = load i32, i32* %5
%273 = icmp eq i32 %272, 3
br i1 %273, label %274, label %335
274: ; preds = %271
%275 = load i32, i32* %2
switch i32 %275, label %334 [
i32 4, label %276
i32 5, label %277
i32 6, label %278
i32 15, label %279
]
276: ; preds = %274
store i32 25, i32* %1
br label %417
277: ; preds = %274
store i32 26, i32* %1
br label %417
278: ; preds = %274
store i32 30, i32* %1
br label %417
279: ; preds = %274
%280 = load i32, i32* %3
switch i32 %280, label %333 [
i32 0, label %281
i32 2, label %281
i32 1, label %282
i32 3, label %282
i32 5, label %283
i32 7, label %283
i32 6, label %284
i32 8, label %320
i32 10, label %328
]
281: ; preds = %279, %279
store i32 29, i32* %1
br label %417
282: ; preds = %279, %279
store i32 30, i32* %1
br label %417
283: ; preds = %279, %279
store i32 45, i32* %1
br label %417
284: ; preds = %279
%285 = load i32, i32* %4
switch i32 %285, label %319 [
i32 1, label %286
i32 2, label %291
i32 3, label %291
i32 5, label %296
i32 0, label %301
i32 8, label %301
]
286: ; preds = %284
%287 = call i32 (...) @support_avx()
%288 = icmp ne i32 %287, 0
br i1 %288, label %289, label %290
289: ; preds = %286
store i32 46, i32* %1
br label %417
290: ; preds = %286
store i32 30, i32* %1
br label %417
291: ; preds = %284, %284
%292 = call i32 (...) @support_avx()
%293 = icmp ne i32 %292, 0
br i1 %293, label %294, label %295
294: ; preds = %291
store i32 47, i32* %1
br label %417
295: ; preds = %291
store i32 30, i32* %1
br label %417
296: ; preds = %284
%297 = call i32 (...) @support_avx()
%298 = icmp ne i32 %297, 0
br i1 %298, label %299, label %300
299: ; preds = %296
store i32 50, i32* %1
br label %417
300: ; preds = %296
store i32 30, i32* %1
br label %417
301: ; preds = %284, %284
%302 = load i32, i32* %6
switch i32 %302, label %318 [
i32 1, label %303
i32 3, label %308
i32 6, label %313
]
303: ; preds = %301
%304 = call i32 (...) @support_avx()
%305 = icmp ne i32 %304, 0
br i1 %305, label %306, label %307
306: ; preds = %303
store i32 47, i32* %1
br label %417
307: ; preds = %303
store i32 30, i32* %1
br label %417
308: ; preds = %301
%309 = call i32 (...) @support_avx()
%310 = icmp ne i32 %309, 0
br i1 %310, label %311, label %312
311: ; preds = %308
store i32 49, i32* %1
br label %417
312: ; preds = %308
store i32 30, i32* %1
br label %417
313: ; preds = %301
%314 = call i32 (...) @support_avx()
%315 = icmp ne i32 %314, 0
br i1 %315, label %316, label %317
316: ; preds = %313
store i32 50, i32* %1
br label %417
317: ; preds = %313
store i32 30, i32* %1
br label %417
318: ; preds = %301
br label %319
319: ; preds = %284, %318
br label %333
320: ; preds = %279
%321 = load i32, i32* %4
switch i32 %321, label %323 [
i32 1, label %322
i32 8, label %322
]
322: ; preds = %320, %320
br label %323
323: ; preds = %320, %322
%324 = call i32 (...) @support_avx()
%325 = icmp ne i32 %324, 0
br i1 %325, label %326, label %327
326: ; preds = %323
store i32 51, i32* %1
br label %417
327: ; preds = %323
store i32 30, i32* %1
br label %417
328: ; preds = %279
%329 = call i32 (...) @support_avx()
%330 = icmp ne i32 %329, 0
br i1 %330, label %331, label %332
331: ; preds = %328
store i32 51, i32* %1
br label %417
332: ; preds = %328
store i32 30, i32* %1
br label %417
333: ; preds = %279, %319
br label %334
334: ; preds = %274, %333
store i32 3, i32* %1
br label %417
335: ; preds = %271
%336 = load i32, i32* %5
%337 = icmp eq i32 %336, 11
br i1 %337, label %338, label %349
338: ; preds = %335
%339 = load i32, i32* %2
switch i32 %339, label %348 [
i32 15, label %340
]
340: ; preds = %338
%341 = load i32, i32* %3
switch i32 %341, label %347 [
i32 9, label %342
]
342: ; preds = %340
%343 = call i32 (...) @support_avx()
%344 = icmp ne i32 %343, 0
br i1 %344, label %345, label %346
345: ; preds = %342
store i32 51, i32* %1
br label %417
346: ; preds = %342
store i32 30, i32* %1
br label %417
347: ; preds = %340
br label %348
348: ; preds = %338, %347
store i32 99, i32* %1
br label %417
349: ; preds = %335
%350 = load i32, i32* %5
%351 = icmp eq i32 %350, 4
br i1 %351, label %352, label %358
352: ; preds = %349
%353 = load i32, i32* %2
switch i32 %353, label %357 [
i32 4, label %354
i32 5, label %355
i32 6, label %356
]
354: ; preds = %352
store i32 33, i32* %1
br label %417
355: ; preds = %352
store i32 34, i32* %1
br label %417
356: ; preds = %352
store i32 35, i32* %1
br label %417
357: ; preds = %352
store i32 4, i32* %1
br label %417
358: ; preds = %349
%359 = load i32, i32* %5
%360 = icmp eq i32 %359, 5
br i1 %360, label %361, label %365
361: ; preds = %358
%362 = load i32, i32* %2
switch i32 %362, label %364 [
i32 5, label %363
]
363: ; preds = %361
store i32 36, i32* %1
br label %417
364: ; preds = %361
store i32 5, i32* %1
br label %417
365: ; preds = %358
%366 = load i32, i32* %5
%367 = icmp eq i32 %366, 6
br i1 %367, label %368, label %384
368: ; preds = %365
%369 = load i32, i32* %2
switch i32 %369, label %379 [
i32 5, label %370
i32 6, label %371
]
370: ; preds = %368
store i32 37, i32* %1
br label %417
371: ; preds = %368
%372 = load i32, i32* %4
%373 = icmp eq i32 %372, 15
br i1 %373, label %374, label %378
374: ; preds = %371
%375 = load i32, i32* %7
%376 = icmp slt i32 %375, 14
br i1 %376, label %377, label %378
377: ; preds = %374
store i32 43, i32* %1
br label %417
378: ; preds = %374, %371
store i32 21, i32* %1
br label %417
379: ; preds = %368
%380 = load i32, i32* %2
%381 = icmp sge i32 %380, 7
br i1 %381, label %382, label %383
382: ; preds = %379
store i32 21, i32* %1
br label %417
383: ; preds = %379
store i32 42, i32* %1
br label %417
384: ; preds = %365
%385 = load i32, i32* %5
%386 = icmp eq i32 %385, 12
br i1 %386, label %387, label %388
387: ; preds = %384
store i32 21, i32* %1
br label %417
388: ; preds = %384
%389 = load i32, i32* %5
%390 = icmp eq i32 %389, 7
br i1 %390, label %391, label %395
391: ; preds = %388
%392 = load i32, i32* %2
switch i32 %392, label %394 [
i32 5, label %393
]
393: ; preds = %391
store i32 38, i32* %1
br label %417
394: ; preds = %391
store i32 7, i32* %1
br label %417
395: ; preds = %388
%396 = load i32, i32* %5
%397 = icmp eq i32 %396, 8
br i1 %397, label %398, label %402
398: ; preds = %395
%399 = load i32, i32* %2
switch i32 %399, label %401 [
i32 5, label %400
]
400: ; preds = %398
store i32 39, i32* %1
br label %417
401: ; preds = %398
store i32 8, i32* %1
br label %417
402: ; preds = %395
%403 = load i32, i32* %5
%404 = icmp eq i32 %403, 9
br i1 %404, label %405, label %409
405: ; preds = %402
%406 = load i32, i32* %2
switch i32 %406, label %408 [
i32 5, label %407
]
407: ; preds = %405
store i32 40, i32* %1
br label %417
408: ; preds = %405
store i32 9, i32* %1
br label %417
409: ; preds = %402
%410 = load i32, i32* %5
%411 = icmp eq i32 %410, 10
br i1 %411, label %412, label %416
412: ; preds = %409
%413 = load i32, i32* %2
switch i32 %413, label %415 [
i32 5, label %414
]
414: ; preds = %412
store i32 41, i32* %1
br label %417
415: ; preds = %412
store i32 10, i32* %1
br label %417
416: ; preds = %409
store i32 0, i32* %1
br label %417
417: ; preds = %416, %415, %414, %408, %407, %401, %400, %394, %393, %387, %383, %382, %378, %377, %370, %364, %363, %357, %356, %355, %354, %348, %346, %345, %334, %332, %331, %327, %326, %317, %316, %312, %311, %307, %306, %300, %299, %295, %294, %290, %289, %283, %282, %281, %278, %277, %276, %270, %268, %267, %264, %261, %260, %256, %252, %248, %247, %243, %236, %235, %231, %227, %226, %222, %218, %211, %210, %206, %202, %198, %194, %193, %189, %185, %181, %177, %176, %172, %168, %161, %160, %159, %155, %151, %150, %146, %142, %141, %137, %133, %129, %125, %124, %120, %113, %112, %111, %107, %103, %102, %98, %94, %93, %89, %82, %81, %77, %73, %72, %68, %64, %63, %59, %55, %54, %53, %49, %48, %47, %43, %39, %38, %37, %36, %35, %31, %30, %29, %28, %23, %22, %10
%418 = load i32, i32* %1
ret i32 %418
}

LLVM IR (-O2):
@switch.table.get_cpuname = [15 x i32] [i32 18, i32 1, i32 18, i32 1, i32 18, i32 18, i32 15, i32 15, i32 16, i32 15, i32 15, i32 1, i32 16, i32 16, i32 18]
@switch.table.get_cpuname.1 = [10 x i32] [i32 18, i32 19, i32 1, i32 1, i32 21, i32 21, i32 22, i32 20, i32 21, i32 21]
define i32 @get_cpuname() {
%1 = tail call i32 (...) @have_cpuid()
%2 = icmp eq i32 %1, 0
br i1 %2, label %269, label %3
3: ; preds = %0
%4 = tail call i32 @get_cputype(i32 4)
%5 = tail call i32 @get_cputype(i32 1)
%6 = tail call i32 @get_cputype(i32 5)
%7 = tail call i32 @get_cputype(i32 2)
%8 = tail call i32 @get_cputype(i32 9)
%9 = tail call i32 (...) @get_vendor()
switch i32 %9, label %260 [
i32 1, label %10
i32 3, label %182
i32 11, label %223
i32 4, label %231
i32 5, label %236
i32 6, label %239
i32 12, label %269
i32 7, label %248
i32 8, label %251
i32 9, label %254
i32 10, label %257
]
10: ; preds = %3
switch i32 %4, label %181 [
i32 4, label %269
i32 5, label %11
i32 6, label %12
i32 7, label %175
i32 15, label %176
]
11: ; preds = %10
br label %269
12: ; preds = %10
switch i32 %7, label %181 [
i32 0, label %13
i32 1, label %16
i32 2, label %19
i32 3, label %28
i32 4, label %47
i32 5, label %69
i32 6, label %104
i32 7, label %128
i32 9, label %139
i32 8, label %139
i32 10, label %157
]
13: ; preds = %12
%14 = add i32 %6, -1
%15 = icmp ult i32 %14, 15
br i1 %15, label %261, label %181
16: ; preds = %12
%17 = add i32 %6, -6
%18 = icmp ult i32 %17, 10
br i1 %18, label %265, label %181
19: ; preds = %12
switch i32 %6, label %181 [
i32 5, label %269
i32 10, label %20
i32 12, label %269
i32 13, label %24
i32 14, label %269
i32 15, label %269
]
20: ; preds = %19
%21 = tail call i32 (...) @support_avx()
%22 = icmp eq i32 %21, 0
%23 = select i1 %22, i32 21, i32 44
br label %269
24: ; preds = %19
%25 = tail call i32 (...) @support_avx()
%26 = icmp eq i32 %25, 0
%27 = select i1 %26, i32 21, i32 44
br label %269
28: ; preds = %12
switch i32 %6, label %181 [
i32 7, label %269
i32 10, label %29
i32 14, label %29
i32 12, label %33
i32 15, label %33
i32 13, label %40
]
29: ; preds = %28, %28
%30 = tail call i32 (...) @support_avx()
%31 = icmp eq i32 %30, 0
%32 = select i1 %31, i32 21, i32 44
br label %269
33: ; preds = %28, %28
%34 = tail call i32 (...) @support_avx2()
%35 = icmp eq i32 %34, 0
br i1 %35, label %36, label %269
36: ; preds = %33
%37 = tail call i32 (...) @support_avx()
%38 = icmp eq i32 %37, 0
%39 = select i1 %38, i32 21, i32 44
br label %269
40: ; preds = %28
%41 = tail call i32 (...) @support_avx2()
%42 = icmp eq i32 %41, 0
br i1 %42, label %43, label %269
43: ; preds = %40
%44 = tail call i32 (...) @support_avx()
%45 = icmp eq i32 %44, 0
%46 = select i1 %45, i32 21, i32 44
br label %269
47: ; preds = %12
switch i32 %6, label %181 [
i32 5, label %48
i32 6, label %48
i32 7, label %55
i32 15, label %55
i32 14, label %62
i32 12, label %269
i32 13, label %269
]
48: ; preds = %47, %47
%49 = tail call i32 (...) @support_avx2()
%50 = icmp eq i32 %49, 0
br i1 %50, label %51, label %269
51: ; preds = %48
%52 = tail call i32 (...) @support_avx()
%53 = icmp eq i32 %52, 0
%54 = select i1 %53, i32 21, i32 44
br label %269
55: ; preds = %47, %47
%56 = tail call i32 (...) @support_avx2()
%57 = icmp eq i32 %56, 0
br i1 %57, label %58, label %269
58: ; preds = %55
%59 = tail call i32 (...) @support_avx()
%60 = icmp eq i32 %59, 0
%61 = select i1 %60, i32 21, i32 44
br label %269
62: ; preds = %47
%63 = tail call i32 (...) @support_avx2()
%64 = icmp eq i32 %63, 0
br i1 %64, label %65, label %269
65: ; preds = %62
%66 = tail call i32 (...) @support_avx()
%67 = icmp eq i32 %66, 0
%68 = select i1 %67, i32 21, i32 44
br label %269
69: ; preds = %12
switch i32 %6, label %181 [
i32 6, label %70
i32 5, label %77
i32 14, label %90
i32 7, label %97
i32 12, label %269
i32 15, label %269
]
70: ; preds = %69
%71 = tail call i32 (...) @support_avx2()
%72 = icmp eq i32 %71, 0
br i1 %72, label %73, label %269
73: ; preds = %70
%74 = tail call i32 (...) @support_avx()
%75 = icmp eq i32 %74, 0
%76 = select i1 %75, i32 21, i32 44
br label %269
77: ; preds = %69
%78 = tail call i32 (...) @support_avx512_bf16()
%79 = icmp eq i32 %78, 0
br i1 %79, label %80, label %269
80: ; preds = %77
%81 = tail call i32 (...) @support_avx512()
%82 = icmp eq i32 %81, 0
br i1 %82, label %83, label %269
83: ; preds = %80
%84 = tail call i32 (...) @support_avx2()
%85 = icmp eq i32 %84, 0
br i1 %85, label %86, label %269
86: ; preds = %83
%87 = tail call i32 (...) @support_avx()
%88 = icmp eq i32 %87, 0
%89 = select i1 %88, i32 21, i32 44
br label %269
90: ; preds = %69
%91 = tail call i32 (...) @support_avx2()
%92 = icmp eq i32 %91, 0
br i1 %92, label %93, label %269
93: ; preds = %90
%94 = tail call i32 (...) @support_avx()
%95 = icmp eq i32 %94, 0
%96 = select i1 %95, i32 21, i32 44
br label %269
97: ; preds = %69
%98 = tail call i32 (...) @support_avx2()
%99 = icmp eq i32 %98, 0
br i1 %99, label %100, label %269
100: ; preds = %97
%101 = tail call i32 (...) @support_avx()
%102 = icmp eq i32 %101, 0
%103 = select i1 %102, i32 21, i32 44
br label %269
104: ; preds = %12
switch i32 %6, label %181 [
i32 6, label %105
i32 10, label %115
]
105: ; preds = %104
%106 = tail call i32 (...) @support_avx512()
%107 = icmp eq i32 %106, 0
br i1 %107, label %108, label %269
108: ; preds = %105
%109 = tail call i32 (...) @support_avx2()
%110 = icmp eq i32 %109, 0
br i1 %110, label %111, label %269
111: ; preds = %108
%112 = tail call i32 (...) @support_avx()
%113 = icmp eq i32 %112, 0
%114 = select i1 %113, i32 21, i32 44
br label %269
115: ; preds = %104
%116 = tail call i32 (...) @support_avx512_bf16()
%117 = icmp eq i32 %116, 0
br i1 %117, label %118, label %269
118: ; preds = %115
%119 = tail call i32 (...) @support_avx512()
%120 = icmp eq i32 %119, 0
br i1 %120, label %121, label %269
121: ; preds = %118
%122 = tail call i32 (...) @support_avx2()
%123 = icmp eq i32 %122, 0
br i1 %123, label %124, label %269
124: ; preds = %121
%125 = tail call i32 (...) @support_avx()
%126 = icmp eq i32 %125, 0
%127 = select i1 %126, i32 21, i32 44
br label %269
128: ; preds = %12
switch i32 %6, label %181 [
i32 10, label %269
i32 14, label %129
]
129: ; preds = %128
%130 = tail call i32 (...) @support_avx512()
%131 = icmp eq i32 %130, 0
br i1 %131, label %132, label %269
132: ; preds = %129
%133 = tail call i32 (...) @support_avx2()
%134 = icmp eq i32 %133, 0
br i1 %134, label %135, label %269
135: ; preds = %132
%136 = tail call i32 (...) @support_avx()
%137 = icmp eq i32 %136, 0
%138 = select i1 %137, i32 21, i32 44
br label %269
139: ; preds = %12, %12
switch i32 %6, label %181 [
i32 12, label %140
i32 14, label %150
i32 5, label %158
i32 6, label %158
i32 7, label %165
]
140: ; preds = %139
%141 = tail call i32 (...) @support_avx512()
%142 = icmp eq i32 %141, 0
br i1 %142, label %143, label %269
143: ; preds = %140
%144 = tail call i32 (...) @support_avx2()
%145 = icmp eq i32 %144, 0
br i1 %145, label %146, label %269
146: ; preds = %143
%147 = tail call i32 (...) @support_avx()
%148 = icmp eq i32 %147, 0
%149 = select i1 %148, i32 21, i32 44
br label %269
150: ; preds = %139
%151 = tail call i32 (...) @support_avx2()
%152 = icmp eq i32 %151, 0
br i1 %152, label %153, label %269
153: ; preds = %150
%154 = tail call i32 (...) @support_avx()
%155 = icmp eq i32 %154, 0
%156 = select i1 %155, i32 21, i32 44
br label %269
157: ; preds = %12
switch i32 %6, label %181 [
i32 5, label %158
i32 6, label %158
i32 7, label %165
]
158: ; preds = %139, %139, %157, %157
%159 = tail call i32 (...) @support_avx2()
%160 = icmp eq i32 %159, 0
br i1 %160, label %161, label %269
161: ; preds = %158
%162 = tail call i32 (...) @support_avx()
%163 = icmp eq i32 %162, 0
%164 = select i1 %163, i32 21, i32 44
br label %269
165: ; preds = %139, %157
%166 = tail call i32 (...) @support_avx512()
%167 = icmp eq i32 %166, 0
br i1 %167, label %168, label %269
168: ; preds = %165
%169 = tail call i32 (...) @support_avx2()
%170 = icmp eq i32 %169, 0
br i1 %170, label %171, label %269
171: ; preds = %168
%172 = tail call i32 (...) @support_avx()
%173 = icmp eq i32 %172, 0
%174 = select i1 %173, i32 21, i32 44
br label %269
175: ; preds = %10
br label %269
176: ; preds = %10
%177 = icmp eq i32 %5, 1
%178 = select i1 %177, i32 23, i32 1
%179 = icmp eq i32 %5, 0
%180 = select i1 %179, i32 17, i32 %178
br label %269
181: ; preds = %16, %13, %139, %12, %19, %28, %47, %69, %104, %128, %157, %10
br label %269
182: ; preds = %3
switch i32 %4, label %222 [
i32 4, label %269
i32 5, label %183
i32 6, label %184
i32 15, label %185
]
183: ; preds = %182
br label %269
184: ; preds = %182
br label %269
185: ; preds = %182
switch i32 %5, label %222 [
i32 0, label %269
i32 2, label %269
i32 1, label %186
i32 3, label %186
i32 5, label %187
i32 7, label %187
i32 6, label %188
i32 8, label %214
i32 10, label %218
]
186: ; preds = %185, %185
br label %269
187: ; preds = %185, %185
br label %269
188: ; preds = %185
switch i32 %6, label %222 [
i32 1, label %189
i32 2, label %193
i32 3, label %193
i32 5, label %197
i32 0, label %201
i32 8, label %201
]
189: ; preds = %188
%190 = tail call i32 (...) @support_avx()
%191 = icmp eq i32 %190, 0
%192 = select i1 %191, i32 30, i32 46
br label %269
193: ; preds = %188, %188
%194 = tail call i32 (...) @support_avx()
%195 = icmp eq i32 %194, 0
%196 = select i1 %195, i32 30, i32 47
br label %269
197: ; preds = %188
%198 = tail call i32 (...) @support_avx()
%199 = icmp eq i32 %198, 0
%200 = select i1 %199, i32 30, i32 50
br label %269
201: ; preds = %188, %188
switch i32 %7, label %222 [
i32 1, label %202
i32 3, label %206
i32 6, label %210
]
202: ; preds = %201
%203 = tail call i32 (...) @support_avx()
%204 = icmp eq i32 %203, 0
%205 = select i1 %204, i32 30, i32 47
br label %269
206: ; preds = %201
%207 = tail call i32 (...) @support_avx()
%208 = icmp eq i32 %207, 0
%209 = select i1 %208, i32 30, i32 49
br label %269
210: ; preds = %201
%211 = tail call i32 (...) @support_avx()
%212 = icmp eq i32 %211, 0
%213 = select i1 %212, i32 30, i32 50
br label %269
214: ; preds = %185
%215 = tail call i32 (...) @support_avx()
%216 = icmp eq i32 %215, 0
%217 = select i1 %216, i32 30, i32 51
br label %269
218: ; preds = %185
%219 = tail call i32 (...) @support_avx()
%220 = icmp eq i32 %219, 0
%221 = select i1 %220, i32 30, i32 51
br label %269
222: ; preds = %185, %201, %188, %182
br label %269
223: ; preds = %3
%224 = icmp eq i32 %4, 15
%225 = icmp eq i32 %5, 9
%226 = select i1 %224, i1 %225, i1 false
br i1 %226, label %227, label %269
227: ; preds = %223
%228 = tail call i32 (...) @support_avx()
%229 = icmp eq i32 %228, 0
%230 = select i1 %229, i32 30, i32 51
br label %269
231: ; preds = %3
%232 = add i32 %4, -4
%233 = icmp ult i32 %232, 3
%234 = add i32 %4, 29
%235 = select i1 %233, i32 %234, i32 4
br label %269
236: ; preds = %3
%237 = icmp eq i32 %4, 5
%238 = select i1 %237, i32 36, i32 5
br label %269
239: ; preds = %3
switch i32 %4, label %245 [
i32 5, label %269
i32 6, label %240
]
240: ; preds = %239
%241 = icmp eq i32 %6, 15
%242 = icmp slt i32 %8, 14
%243 = select i1 %241, i1 %242, i1 false
%244 = select i1 %243, i32 43, i32 21
br label %269
245: ; preds = %239
%246 = icmp sgt i32 %4, 6
%247 = select i1 %246, i32 21, i32 42
br label %269
248: ; preds = %3
%249 = icmp eq i32 %4, 5
%250 = select i1 %249, i32 38, i32 7
br label %269
251: ; preds = %3
%252 = icmp eq i32 %4, 5
%253 = select i1 %252, i32 39, i32 8
br label %269
254: ; preds = %3
%255 = icmp eq i32 %4, 5
%256 = select i1 %255, i32 40, i32 9
br label %269
257: ; preds = %3
%258 = icmp eq i32 %4, 5
%259 = select i1 %258, i32 41, i32 10
br label %269
260: ; preds = %3
br label %269
261: ; preds = %13
%262 = sext i32 %14 to i64
%263 = getelementptr inbounds [15 x i32], [15 x i32]* @switch.table.get_cpuname, i64 0, i64 %262
%264 = load i32, i32* %263
br label %269
265: ; preds = %16
%266 = sext i32 %17 to i64
%267 = getelementptr inbounds [10 x i32], [10 x i32]* @switch.table.get_cpuname.1, i64 0, i64 %266
%268 = load i32, i32* %267
br label %269
269: ; preds = %231, %265, %261, %257, %3, %254, %251, %248, %245, %240, %239, %236, %223, %227, %218, %214, %210, %206, %202, %197, %193, %189, %185, %185, %182, %176, %171, %168, %165, %161, %158, %153, %150, %146, %143, %140, %135, %132, %129, %128, %124, %121, %118, %115, %111, %108, %105, %69, %69, %100, %97, %93, %90, %86, %83, %80, %77, %73, %70, %47, %47, %65, %62, %58, %55, %51, %48, %43, %40, %36, %33, %29, %28, %19, %19, %24, %19, %20, %19, %10, %0, %260, %222, %187, %186, %184, %183, %181, %175, %11
%270 = phi i32 [ 1, %181 ], [ 23, %175 ], [ 13, %11 ], [ 3, %222 ], [ 45, %187 ], [ 30, %186 ], [ 30, %184 ], [ 26, %183 ], [ 0, %260 ], [ 11, %0 ], [ 12, %10 ], [ 21, %19 ], [ %23, %20 ], [ 21, %19 ], [ %27, %24 ], [ 21, %19 ], [ 21, %19 ], [ 22, %28 ], [ %32, %29 ], [ 48, %33 ], [ %39, %36 ], [ 48, %40 ], [ %46, %43 ], [ 48, %48 ], [ %54, %51 ], [ 48, %55 ], [ %61, %58 ], [ 48, %62 ], [ %68, %65 ], [ 21, %47 ], [ 21, %47 ], [ 48, %70 ], [ %76, %73 ], [ 54, %77 ], [ 52, %80 ], [ 48, %83 ], [ %89, %86 ], [ 48, %90 ], [ %96, %93 ], [ 48, %97 ], [ %103, %100 ], [ 21, %69 ], [ 21, %69 ], [ 52, %105 ], [ 48, %108 ], [ %114, %111 ], [ 54, %115 ], [ 52, %118 ], [ 48, %121 ], [ %127, %124 ], [ 21, %128 ], [ 52, %129 ], [ 48, %132 ], [ %138, %135 ], [ 52, %140 ], [ 48, %143 ], [ %149, %146 ], [ 48, %150 ], [ %156, %153 ], [ 48, %158 ], [ %164, %161 ], [ 52, %165 ], [ 48, %168 ], [ %174, %171 ], [ %180, %176 ], [ 25, %182 ], [ 29, %185 ], [ 29, %185 ], [ %192, %189 ], [ %196, %193 ], [ %200, %197 ], [ %205, %202 ], [ %209, %206 ], [ %213, %210 ], [ %217, %214 ], [ %221, %218 ], [ %230, %227 ], [ 99, %223 ], [ %238, %236 ], [ 37, %239 ], [ %244, %240 ], [ %247, %245 ], [ 21, %3 ], [ %250, %248 ], [ %253, %251 ], [ %256, %254 ], [ %259, %257 ], [ %264, %261 ], [ %268, %265 ], [ %235, %231 ]
ret i32 %270
}