user: Demonstrate the C code that generates the assembly output below:

```asm
<check_intel_cpu_model>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  mov    %esi,-0x8(%rbp)
  mov    %edx,-0xc(%rbp)
  cmpl   $0x0,-0xc(%rbp)
  jne    L110
  cmpl   $0x5,-0x4(%rbp)
  je     L166
  cmpl   $0x6,-0x4(%rbp)
  je     L31
  jmp    L110
L31:
  cmpl   $0x1f,-0x8(%rbp)
  ja     L200
  cmpl   $0xf,-0x8(%rbp)
  jae    L68
  jmp    L201
L91:
  mov    -0x8(%rbp),%eax
  sub    $0x25,%eax
  cmp    $0x79,%eax
  ja     L201
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D65(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D65(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
L68:
  mov    -0x8(%rbp),%eax
  mov    $0x1,%edx
  mov    %eax,%ecx
  shl    %cl,%rdx
  mov    %rdx,%rax
  mov    %rax,%rdx
  and    $0x20808000,%edx
  test   %rdx,%rdx
  setne  %dl
  test   %dl,%dl
  jne    L141
  mov    %rax,%rdx
  and    $0xc4000000,%edx
  test   %rdx,%rdx
  setne  %dl
  test   %dl,%dl
  jne    L137
  and    $0x10000000,%eax
  test   %rax,%rax
  setne  %al
  test   %al,%al
  jne    L26
  jmp    L201
L200:
  cmpl   $0x9e,-0x8(%rbp)
  ja     L201
  cmpl   $0x25,-0x8(%rbp)
  jae    L91
  jmp    L201
L26:
  lea    D183(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
  lea    D10(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
  lea    D5(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
L137:
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D100(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D45(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D31(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D23(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D109(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D155(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
  lea    D29(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D128(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
L141:
  lea    D22(%rip),%rax
  mov    %rax,%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  jmp    L224
L201:
  nop
L224:
  jmp    L110
L166:
  nop
L110:
  nop
  leave
  ret
```

tool_calls: name: read_data
arguments: tag: D183
type: string
name: read_data
arguments: tag: D10
type: string
name: read_data
arguments: tag: D5
type: string
name: read_data
arguments: tag: D29
type: string
name: read_data
arguments: tag: D100
type: string
name: read_data
arguments: tag: D45
type: string
name: read_data
arguments: tag: D31
type: string
name: read_data
arguments: tag: D23
type: string
name: read_data
arguments: tag: D77
type: string
name: read_data
arguments: tag: D109
type: string
name: read_data
arguments: tag: D155
type: string
name: read_data
arguments: tag: D128
type: string
name: read_data
arguments: tag: D22
type: string

tool: D183: atom

tool: D10: silvermont

tool: D5: knl

tool: D29: corei7

tool: D100: nehalem

tool: D45: westmere

tool: D31: sandybridge

tool: D23: ivybridge

tool: D77: haswell

tool: D109: broadwell

tool: D155: skylake

tool: D128: skylake-avx512

tool: D22: core2

assistant: ```c
void check_intel_cpu_model(unsigned int family, unsigned int model, unsigned int brand_id) {
  if (brand_id == 0) {
    switch (family) {
    case 0x5:
      break;
    case 0x6:
      switch (model) {
      case 0x1c:
      case 0x26:
        assert(__builtin_cpu_is("atom"));
        break;
      case 0x37:
      case 0x4a:
      case 0x4d:
      case 0x5a:
      case 0x5d:
        assert(__builtin_cpu_is("silvermont"));
        break;
      case 0x57:
        assert(__builtin_cpu_is("knl"));
        break;
      case 0x1a:
      case 0x1e:
      case 0x1f:
      case 0x2e:
        assert(__builtin_cpu_is("corei7"));
        assert(__builtin_cpu_is("nehalem"));
        break;
      case 0x25:
      case 0x2c:
      case 0x2f:
        assert(__builtin_cpu_is("corei7"));
        assert(__builtin_cpu_is("westmere"));
        break;
      case 0x2a:
      case 0x2d:
        assert(__builtin_cpu_is("corei7"));
        assert(__builtin_cpu_is("sandybridge"));
        break;
      case 0x3a:
      case 0x3e:
        assert(__builtin_cpu_is("corei7"));
        assert(__builtin_cpu_is("ivybridge"));
        break;
      case 0x3c:
      case 0x3f:
      case 0x45:
      case 0x46:
        assert(__builtin_cpu_is("corei7"));
        assert(__builtin_cpu_is("haswell"));
        break;
      case 0x3d:
      case 0x47:
      case 0x4f:
      case 0x56:
        assert(__builtin_cpu_is("corei7"));
        assert(__builtin_cpu_is("broadwell"));
        break;
      case 0x4e:
      case 0x5e:
      case 0x8e:
      case 0x9e:
        assert(__builtin_cpu_is("corei7"));
        assert(__builtin_cpu_is("skylake"));
        break;
      case 0x55:
        assert(__builtin_cpu_is("corei7"));
        assert(__builtin_cpu_is("skylake-avx512"));
        break;
      case 0x17:
      case 0x1d:
      case 0x0f:
        assert(__builtin_cpu_is("core2"));
        break;
      default:
        break;
      }
      break;
    default:
      break;
    }
  }
}
```