user: 下面的汇编指令对应的C源代码是什么：

```asm
<show_sas_phy_event_info>:
  endbr64
  cmp    $0x63,%edi
  ja     L202
  push   %rbx
  mov    %edx,%ebx
  mov    %edi,%edi
  lea    D277(%rip),%rdx
  movslq (%rdx,%rdi,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D371(%rip),%rdi
  call   <puts@plt>
L58:
  pop    %rbx
  ret
  lea    D340(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D229(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D347(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D351(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D217(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D393(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D372(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D118(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D34(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D406(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D154(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D167(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D312(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D366(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D289(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D228(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D139(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  movzbl %sil,%esi
  lea    D156(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  movzbl %bl,%esi
  lea    D35(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  movzwl %si,%eax
  test   $0x8000,%esi
  jne    L298
  mov    %eax,%esi
  lea    D252(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L166:
  movzwl %bx,%esi
  test   $0x80,%bh
  jne    L157
  lea    D129(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L298:
  lea    -0x7fdf(%rax),%esi
  lea    D130(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L166
L157:
  sub    $0x7fdf,%esi
  lea    D67(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D199(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  lea    D35(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D38(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%esi
  lea    D35(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D25(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D362(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D285(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D392(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D368(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D182(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D160(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D396(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D408(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D107(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D73(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
  lea    D308(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L58
L202:
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D371
datatype: string
name: parse_data
arguments: data_tag: D340
datatype: string
name: parse_data
arguments: data_tag: D229
datatype: string
name: parse_data
arguments: data_tag: D347
datatype: string
name: parse_data
arguments: data_tag: D351
datatype: string
name: parse_data
arguments: data_tag: D217
datatype: string
name: parse_data
arguments: data_tag: D393
datatype: string
name: parse_data
arguments: data_tag: D372
datatype: string
name: parse_data
arguments: data_tag: D118
datatype: string
name: parse_data
arguments: data_tag: D34
datatype: string
name: parse_data
arguments: data_tag: D406
datatype: string
name: parse_data
arguments: data_tag: D154
datatype: string
name: parse_data
arguments: data_tag: D167
datatype: string
name: parse_data
arguments: data_tag: D312
datatype: string
name: parse_data
arguments: data_tag: D366
datatype: string
name: parse_data
arguments: data_tag: D289
datatype: string
name: parse_data
arguments: data_tag: D228
datatype: string
name: parse_data
arguments: data_tag: D139
datatype: string
name: parse_data
arguments: data_tag: D156
datatype: string
name: parse_data
arguments: data_tag: D35
datatype: string
name: parse_data
arguments: data_tag: D252
datatype: string
name: parse_data
arguments: data_tag: D129
datatype: string
name: parse_data
arguments: data_tag: D130
datatype: string
name: parse_data
arguments: data_tag: D67
datatype: string
name: parse_data
arguments: data_tag: D199
datatype: string
name: parse_data
arguments: data_tag: D38
datatype: string
name: parse_data
arguments: data_tag: D25
datatype: string
name: parse_data
arguments: data_tag: D362
datatype: string
name: parse_data
arguments: data_tag: D285
datatype: string
name: parse_data
arguments: data_tag: D392
datatype: string
name: parse_data
arguments: data_tag: D368
datatype: string
name: parse_data
arguments: data_tag: D182
datatype: string
name: parse_data
arguments: data_tag: D160
datatype: string
name: parse_data
arguments: data_tag: D396
datatype: string
name: parse_data
arguments: data_tag: D408
datatype: string
name: parse_data
arguments: data_tag: D107
datatype: string
name: parse_data
arguments: data_tag: D73
datatype: string
name: parse_data
arguments: data_tag: D308
datatype: string

tool: D371:      No event

tool: D340:      Invalid word count: %u


tool: D229:      Running disparity error count: %u


tool: D347:      Loss of dword synchronization count: %u


tool: D351:      Phy reset problem count: %u


tool: D217:      Elasticity buffer overflow count: %u


tool: D393:      Received ERROR  count: %u


tool: D372:      Received address frame error count: %u


tool: D118:      Transmitted abandon-class OPEN_REJECT count: %u


tool: D34:      Received abandon-class OPEN_REJECT count: %u


tool: D406:      Transmitted retry-class OPEN_REJECT count: %u


tool: D154:      Received retry-class OPEN_REJECT count: %u


tool: D167:      Received AIP (WATING ON PARTIAL) count: %u


tool: D312:      Received AIP (WAITING ON CONNECTION) count: %u


tool: D366:      Transmitted BREAK count: %u


tool: D289:      Received BREAK count: %u


tool: D228:      Break timeout count: %u


tool: D139:      Connection count: %u


tool: D156:      Peak transmitted pathway blocked count: %u


tool: D35:          Peak value detector threshold: %u


tool: D252:      Peak transmitted arbitration wait time (us): %u


tool: D129:          Peak value detector threshold (us): %u


tool: D130:      Peak transmitted arbitration wait time (ms): %u


tool: D67:          Peak value detector threshold (ms): %u


tool: D199:      Peak arbitration time (us): %u


tool: D38:      Peak connection time (us): %u


tool: D25:      Transmitted SSP frame count: %u


tool: D362:      Received SSP frame count: %u


tool: D285:      Transmitted SSP frame error count: %u


tool: D392:      Received SSP frame error count: %u


tool: D368:      Transmitted CREDIT_BLOCKED count: %u


tool: D182:      Received CREDIT_BLOCKED count: %u


tool: D160:      Transmitted SATA frame count: %u


tool: D396:      Received SATA frame count: %u


tool: D408:      SATA flow control buffer overflow count: %u


tool: D107:      Transmitted SMP frame count: %u


tool: D73:      Received SMP frame count: %u


tool: D308:      Received SMP frame error count: %u


assistant: ```c
void show_sas_phy_event_info(int peis, unsigned int val, unsigned thresh_val) {
  unsigned int u;
  switch (peis) {
  case 0:
    printf("     No event\n");
    break;
  case 0x1:
    printf("     Invalid word count: %u\n", val);
    break;
  case 0x2:
    printf("     Running disparity error count: %u\n", val);
    break;
  case 0x3:
    printf("     Loss of dword synchronization count: %u\n", val);
    break;
  case 0x4:
    printf("     Phy reset problem count: %u\n", val);
    break;
  case 0x5:
    printf("     Elasticity buffer overflow count: %u\n", val);
    break;
  case 0x6:
    printf("     Received ERROR  count: %u\n", val);
    break;
  case 0x20:
    printf("     Received address frame error count: %u\n", val);
    break;
  case 0x21:
    printf("     Transmitted abandon-class OPEN_REJECT count: %u\n", val);
    break;
  case 0x22:
    printf("     Received abandon-class OPEN_REJECT count: %u\n", val);
    break;
  case 0x23:
    printf("     Transmitted retry-class OPEN_REJECT count: %u\n", val);
    break;
  case 0x24:
    printf("     Received retry-class OPEN_REJECT count: %u\n", val);
    break;
  case 0x25:
    printf("     Received AIP (WATING ON PARTIAL) count: %u\n", val);
    break;
  case 0x26:
    printf("     Received AIP (WAITING ON CONNECTION) count: %u\n", val);
    break;
  case 0x27:
    printf("     Transmitted BREAK count: %u\n", val);
    break;
  case 0x28:
    printf("     Received BREAK count: %u\n", val);
    break;
  case 0x29:
    printf("     Break timeout count: %u\n", val);
    break;
  case 0x2a:
    printf("     Connection count: %u\n", val);
    break;
  case 0x2b:
    printf("     Peak transmitted pathway blocked count: %u\n", val & 0xff);
    printf("         Peak value detector threshold: %u\n", thresh_val & 0xff);
    break;
  case 0x2c:
    u = val & 0xffff;
    if (u < 0x8000)
      printf("     Peak transmitted arbitration wait time (us): "
             "%u\n",
             u);
    else
      printf("     Peak transmitted arbitration wait time (ms): "
             "%u\n",
             33 + (u - 0x8000));
    u = thresh_val & 0xffff;
    if (u < 0x8000)
      printf("         Peak value detector threshold (us): %u\n", u);
    else
      printf("         Peak value detector threshold (ms): %u\n", 33 + (u - 0x8000));
    break;
  case 0x2d:
    printf("     Peak arbitration time (us): %u\n", val);
    printf("         Peak value detector threshold: %u\n", thresh_val);
    break;
  case 0x2e:
    printf("     Peak connection time (us): %u\n", val);
    printf("         Peak value detector threshold: %u\n", thresh_val);
    break;
  case 0x40:
    printf("     Transmitted SSP frame count: %u\n", val);
    break;
  case 0x41:
    printf("     Received SSP frame count: %u\n", val);
    break;
  case 0x42:
    printf("     Transmitted SSP frame error count: %u\n", val);
    break;
  case 0x43:
    printf("     Received SSP frame error count: %u\n", val);
    break;
  case 0x44:
    printf("     Transmitted CREDIT_BLOCKED count: %u\n", val);
    break;
  case 0x45:
    printf("     Received CREDIT_BLOCKED count: %u\n", val);
    break;
  case 0x50:
    printf("     Transmitted SATA frame count: %u\n", val);
    break;
  case 0x51:
    printf("     Received SATA frame count: %u\n", val);
    break;
  case 0x52:
    printf("     SATA flow control buffer overflow count: %u\n", val);
    break;
  case 0x60:
    printf("     Transmitted SMP frame count: %u\n", val);
    break;
  case 0x61:
    printf("     Received SMP frame count: %u\n", val);
    break;
  case 0x63:
    printf("     Received SMP frame error count: %u\n", val);
    break;
  default:
    break;
  }
}
```