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

```asm
<cpuloop>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x10,%rsp
  mov    %edi,-0x4(%rbp)
  cmpl   $0xff,-0x4(%rbp)
  ja     L202
  mov    -0x4(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D16(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D16(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  mov    $0x0,%eax
  call   <add86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <push86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <pop86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <push86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <pop86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <adc86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <pop86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <push86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <pop86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <add86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <xchg86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <mov86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <lea86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <mov86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <pop86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <xchg86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <pushf86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <popf86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <sahf86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <lahf86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <mov86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <les86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <lds86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <xlat86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <in86@plt>
  jmp    L176
  mov    $0x0,%eax
  call   <out86@plt>
  jmp    L176
L202:
  mov    $0x0,%eax
  call   <noop86@plt>
  nop
L176:
  nop
  leave
  ret
```

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;
  }
}
```