user: Please show me the C implementation that matches the assembly code listed below:

```asm
<cpuloop>:
  endbr64
  mov    %edi,%ecx
  cmp    $0xff,%edi
  ja     L17
  cmp    $0x4f,%edi
  jbe    L16
  sub    $0x50,%ecx
  cmp    $0xaf,%ecx
  ja     L17
  lea    D6(%rip),%rdx
  movslq (%rdx,%rcx,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nop
L16:
  cmp    $0x5,%edi
  jbe    L47
  lea    -0x6(%rdi),%eax
  cmp    $0x19,%eax
  ja     L17
  mov    $0x1,%eax
  shl    %cl,%rax
  test   $0x3f0000,%eax
  jne    L46
  test   $0x80808080,%eax
  jne    L41
  test   $0x40404040,%eax
  jne    L5
L17:
  xor    %eax,%eax
  jmp    11e0 <noop86@plt>
  nopl   (%rax)
  xor    %eax,%eax
  jmp    1200 <mov86@plt>
  nop
L5:
  xor    %eax,%eax
  jmp    1160 <push86@plt>
  nopw   0x0(%rax,%rax,1)
  xor    %eax,%eax
  jmp    1240 <xchg86@plt>
  nopw   0x0(%rax,%rax,1)
L41:
  xor    %eax,%eax
  jmp    1190 <pop86@plt>
  nopw   0x0(%rax,%rax,1)
L47:
  xor    %eax,%eax
  jmp    11d0 <add86@plt>
  nopw   0x0(%rax,%rax,1)
  xor    %eax,%eax
  jmp    1230 <in86@plt>
  nopw   0x0(%rax,%rax,1)
  xor    %eax,%eax
  jmp    1150 <out86@plt>
  xor    %eax,%eax
  jmp    11f0 <popf86@plt>
  xor    %eax,%eax
  jmp    11c0 <pushf86@plt>
  xor    %eax,%eax
  jmp    1210 <sahf86@plt>
  xor    %eax,%eax
  jmp    11b0 <xlat86@plt>
  xor    %eax,%eax
  jmp    1220 <lea86@plt>
  xor    %eax,%eax
  jmp    1170 <lds86@plt>
  xor    %eax,%eax
  jmp    1180 <les86@plt>
  xor    %eax,%eax
  jmp    1250 <lahf86@plt>
  nop
L46:
  xor    %eax,%eax
  jmp    11a0 <adc86@plt>
```

assistant: ```c
void cpuloop(unsigned int opcode) {
  switch (opcode) {
  case 0:
  case 1:
  case 2:
  case 3:
  case 4:
  case 5:
    add86();
    break;
  case 6:
    push86();
    break;
  case 7:
    pop86();
    break;
  case 14:
    push86();
    break;
  case 15:
    pop86();
    break;
  case 16:
  case 17:
  case 18:
  case 19:
  case 20:
  case 21:
    adc86();
    break;
  case 23:
  case 31:
    pop86();
    break;
  case 22:
  case 30:
  case 80:
  case 81:
  case 82:
  case 83:
  case 84:
  case 85:
  case 86:
  case 87:
  case 255:
    push86();
    break;
  case 88:
  case 89:
  case 90:
  case 91:
  case 92:
  case 93:
  case 94:
  case 95:
    pop86();
    break;
  case 128:
  case 129:
  case 130:
  case 131:
    add86();
    break;
  case 134:
  case 135:
    xchg86();
    break;
  case 136:
  case 137:
  case 138:
  case 139:
  case 140:
    mov86();
    break;
  case 141:
    lea86();
    break;
  case 142:
    mov86();
    break;
  case 143:
    pop86();
    break;
  case 144:
  case 145:
  case 146:
  case 147:
  case 148:
  case 149:
  case 150:
  case 151:
    xchg86();
    break;
  case 156:
    pushf86();
    break;
  case 157:
    popf86();
    break;
  case 158:
    sahf86();
    break;
  case 159:
    lahf86();
    break;
  case 160:
  case 161:
  case 162:
  case 163:
  case 176:
  case 177:
  case 178:
  case 179:
  case 180:
  case 181:
  case 182:
  case 183:
  case 184:
  case 185:
  case 186:
  case 187:
  case 188:
  case 189:
  case 190:
  case 191:
  case 198:
  case 199:
    mov86();
    break;
  case 196:
    les86();
    break;
  case 197:
    lds86();
    break;
  case 215:
    xlat86();
    break;
  case 228:
  case 229:
  case 236:
  case 237:
    in86();
    break;
  case 230:
  case 231:
  case 238:
  case 239:
    out86();
    break;
  default:
    noop86();
    break;
  }
}
```