user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<funD>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %edi,-0x4(%rbp)
  cmpl   $0x8000000,-0x4(%rbp)
  ja     L516
  cmpl   $0x4000001,-0x4(%rbp)
  jae    L515
  cmpl   $0x4000000,-0x4(%rbp)
  ja     L516
  cmpl   $0x2000001,-0x4(%rbp)
  jae    L475
  cmpl   $0x2000000,-0x4(%rbp)
  ja     L516
  cmpl   $0x1000001,-0x4(%rbp)
  jae    L552
  cmpl   $0x1000000,-0x4(%rbp)
  ja     L516
  cmpl   $0x800001,-0x4(%rbp)
  jae    L330
  cmpl   $0x800000,-0x4(%rbp)
  ja     L516
  cmpl   $0x400001,-0x4(%rbp)
  jae    L357
  cmpl   $0x400000,-0x4(%rbp)
  ja     L516
  cmpl   $0x200001,-0x4(%rbp)
  jae    L578
  cmpl   $0x200000,-0x4(%rbp)
  ja     L516
  cmpl   $0x100001,-0x4(%rbp)
  jae    L218
  cmpl   $0x100000,-0x4(%rbp)
  ja     L516
  cmpl   $0x80001,-0x4(%rbp)
  jae    L652
  cmpl   $0x80000,-0x4(%rbp)
  ja     L516
  cmpl   $0x40001,-0x4(%rbp)
  jae    L311
  cmpl   $0x40000,-0x4(%rbp)
  ja     L516
  cmpl   $0x20001,-0x4(%rbp)
  jae    L160
  cmpl   $0x20000,-0x4(%rbp)
  ja     L516
  cmpl   $0x10001,-0x4(%rbp)
  jae    L185
  cmpl   $0x10000,-0x4(%rbp)
  ja     L516
  cmpl   $0x8001,-0x4(%rbp)
  jae    L410
  cmpl   $0x8000,-0x4(%rbp)
  ja     L516
  cmpl   $0x4001,-0x4(%rbp)
  jae    L544
  cmpl   $0x4000,-0x4(%rbp)
  ja     L516
  cmpl   $0x2001,-0x4(%rbp)
  jae    L707
  cmpl   $0x2000,-0x4(%rbp)
  ja     L516
  cmpl   $0x1001,-0x4(%rbp)
  jae    L542
  cmpl   $0x1000,-0x4(%rbp)
  ja     L516
  cmpl   $0x801,-0x4(%rbp)
  jae    L229
  cmpl   $0x800,-0x4(%rbp)
  ja     L516
  cmpl   $0x401,-0x4(%rbp)
  jae    L200
  cmpl   $0x400,-0x4(%rbp)
  ja     L516
  cmpl   $0x201,-0x4(%rbp)
  jae    L635
  cmpl   $0x200,-0x4(%rbp)
  ja     L516
  cmpl   $0x101,-0x4(%rbp)
  jae    L401
  cmpl   $0x100,-0x4(%rbp)
  ja     L516
  cmpl   $0x81,-0x4(%rbp)
  jae    L637
  cmpl   $0x40,-0x4(%rbp)
  ja     L513
  cmpl   $0x3,-0x4(%rbp)
  jb     L516
  mov    -0x4(%rbp),%eax
  sub    $0x3,%eax
  cmp    $0x3d,%eax
  ja     L516
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D2(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D2(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
L513:
  mov    -0x4(%rbp),%eax
  sub    $0x41,%eax
  cmp    $0x3f,%eax
  ja     L516
  jmp    L611
  mov    $0x4,%eax
  jmp    L183
  mov    $0x8,%eax
  jmp    L183
  mov    $0x10,%eax
  jmp    L183
  mov    $0x20,%eax
  jmp    L183
  mov    $0x40,%eax
  jmp    L183
L611:
  mov    $0x80,%eax
  jmp    L183
L637:
  mov    $0x100,%eax
  jmp    L183
L401:
  mov    $0x200,%eax
  jmp    L183
L635:
  mov    $0x400,%eax
  jmp    L183
L200:
  mov    $0x800,%eax
  jmp    L183
L229:
  mov    $0x1000,%eax
  jmp    L183
L542:
  mov    $0x2000,%eax
  jmp    L183
L707:
  mov    $0x4000,%eax
  jmp    L183
L544:
  mov    $0x8000,%eax
  jmp    L183
L410:
  mov    $0x10000,%eax
  jmp    L183
L185:
  mov    $0x20000,%eax
  jmp    L183
L160:
  mov    $0x40000,%eax
  jmp    L183
L311:
  mov    $0x80000,%eax
  jmp    L183
L652:
  mov    $0x100000,%eax
  jmp    L183
L218:
  mov    $0x200000,%eax
  jmp    L183
L578:
  mov    $0x400000,%eax
  jmp    L183
L357:
  mov    $0x800000,%eax
  jmp    L183
L330:
  mov    $0x1000000,%eax
  jmp    L183
L552:
  mov    $0x2000000,%eax
  jmp    L183
L475:
  mov    $0x4000000,%eax
  jmp    L183
L515:
  mov    $0x8000000,%eax
  jmp    L183
L516:
  mov    -0x4(%rbp),%eax
L183:
  pop    %rbp
  ret
```

assistant: ```c
unsigned int funD(unsigned int x) {
  switch (x) {
  case 3 ... 4:
    return 0x4;
  case 5 ... 8:
    return 0x8;
  case 9 ... 16:
    return 0x10;
  case 17 ... 32:
    return 0x20;
  case 33 ... 64:
    return 0x40;
  case 65 ... 128:
    return 0x80;
  case 129 ... 256:
    return 0x100;
  case 257 ... 512:
    return 0x200;
  case 513 ... 1024:
    return 0x400;
  case 1025 ... 2048:
    return 0x800;
  case 2049 ... 4096:
    return 0x1000;
  case 4097 ... 8192:
    return 0x2000;
  case 8193 ... 16384:
    return 0x4000;
  case 16385 ... 32768:
    return 0x8000;
  case 32769 ... 65536:
    return 0x10000;
  case 0x10001 ... 0x20000:
    return 0x20000;
  case 0x20001 ... 0x40000:
    return 0x40000;
  case 0x40001 ... 0x80000:
    return 0x80000;
  case 0x80001 ... 0x100000:
    return 0x100000;
  case 0x100001 ... 0x200000:
    return 0x200000;
  case 0x200001 ... 0x400000:
    return 0x400000;
  case 0x400001 ... 0x800000:
    return 0x800000;
  case 0x800001 ... 0x1000000:
    return 0x1000000;
  case 0x1000001 ... 0x2000000:
    return 0x2000000;
  case 0x2000001 ... 0x4000000:
    return 0x4000000;
  case 0x4000001 ... 0x8000000:
    return 0x8000000;
  }
  return x;
}
```