user: 请从给定的汇编指令推导出C源代码:

```asm
<check_intel_cpu_model>:
  endbr64
  cmp    $0x6,%edi
  jne    L16
  test   %edx,%edx
  je     L47
L16:
  ret
  xchg   %ax,%ax
L47:
  sub    $0x8,%rsp
  cmp    $0x1f,%esi
  jbe    L66
  sub    $0x25,%esi
  cmp    $0x79,%esi
  ja     L10
  lea    D186(%rip),%rdx
  movslq (%rdx,%rsi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
L66:
  cmp    $0xe,%esi
  ja     L23
L10:
  add    $0x8,%rsp
  ret
  nopw   0x0(%rax,%rax,1)
L23:
  mov    $0x1,%eax
  mov    %esi,%ecx
  shl    %cl,%rax
  test   $0x20808000,%eax
  jne    L45
  test   $0xc4000000,%eax
  jne    L73
  cmp    $0x1c,%esi
  jne    L10
  lea    D128(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  nopl   0x0(%rax)
  lea    D88(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  lea    D153(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D169(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  lea    D153(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D92(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  lea    D153(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D27(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  lea    D153(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D7(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  lea    D153(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D21(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  lea    D153(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D26(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  nopl   0x0(%rax,%rax,1)
L73:
  lea    D153(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D140(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  lea    D30(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  lea    D153(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  mov    %eax,%edi
  call   <assert@plt>
  lea    D35(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
  nopl   0x0(%rax,%rax,1)
L45:
  lea    D4(%rip),%rdi
  call   <__builtin_cpu_is@plt>
  add    $0x8,%rsp
  mov    %eax,%edi
  jmp    1060 <assert@plt>
```

tool_calls: name: unpack_data
arguments: data_tag: D128
type: string
name: unpack_data
arguments: data_tag: D88
type: string
name: unpack_data
arguments: data_tag: D153
type: string
name: unpack_data
arguments: data_tag: D169
type: string
name: unpack_data
arguments: data_tag: D92
type: string
name: unpack_data
arguments: data_tag: D27
type: string
name: unpack_data
arguments: data_tag: D7
type: string
name: unpack_data
arguments: data_tag: D21
type: string
name: unpack_data
arguments: data_tag: D26
type: string
name: unpack_data
arguments: data_tag: D140
type: string
name: unpack_data
arguments: data_tag: D30
type: string
name: unpack_data
arguments: data_tag: D35
type: string
name: unpack_data
arguments: data_tag: D4
type: string

tool: D128: atom

tool: D88: silvermont

tool: D153: corei7

tool: D169: skylake

tool: D92: broadwell

tool: D27: haswell

tool: D7: westmere

tool: D21: sandybridge

tool: D26: ivybridge

tool: D140: nehalem

tool: D30: knl

tool: D35: skylake-avx512

tool: D4: 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;
    }
  }
}
```