user: Translate the below assembly code into C programming language:

```asm
<process_ssl_alert>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x30,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    %rcx,-0x20(%rbp)
  mov    %r8d,-0x24(%rbp)
  cmpl   $0x0,-0x24(%rbp)
  jle    L173
  mov    -0x8(%rbp),%rax
  add    $0x6,%rax
  movzbl (%rax),%eax
  movsbl %al,%eax
  cmp    $0x47,%eax
  ja     L28
  mov    %eax,%eax
  lea    0x0(,%rax,4),%rdx
  lea    D35(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D35(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D122(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D177(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D88(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D224(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D18(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D163(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D173(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D60(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D116(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D172(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D87(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D95(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D43(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D187(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D225(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D151(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D149(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D219(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D194(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D74(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
  lea    D233(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  jmp    L173
L28:
  lea    D118(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
L173:
  nop
  leave
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D122
data_type: string
name: unpack_data
arguments: data_tag: D177
data_type: string
name: unpack_data
arguments: data_tag: D88
data_type: string
name: unpack_data
arguments: data_tag: D224
data_type: string
name: unpack_data
arguments: data_tag: D18
data_type: string
name: unpack_data
arguments: data_tag: D163
data_type: string
name: unpack_data
arguments: data_tag: D173
data_type: string
name: unpack_data
arguments: data_tag: D60
data_type: string
name: unpack_data
arguments: data_tag: D116
data_type: string
name: unpack_data
arguments: data_tag: D172
data_type: string
name: unpack_data
arguments: data_tag: D87
data_type: string
name: unpack_data
arguments: data_tag: D95
data_type: string
name: unpack_data
arguments: data_tag: D43
data_type: string
name: unpack_data
arguments: data_tag: D187
data_type: string
name: unpack_data
arguments: data_tag: D225
data_type: string
name: unpack_data
arguments: data_tag: D151
data_type: string
name: unpack_data
arguments: data_tag: D149
data_type: string
name: unpack_data
arguments: data_tag: D219
data_type: string
name: unpack_data
arguments: data_tag: D194
data_type: string
name: unpack_data
arguments: data_tag: D74
data_type: string
name: unpack_data
arguments: data_tag: D233
data_type: string
name: unpack_data
arguments: data_tag: D118
data_type: string

tool: D122: CloseNotify


tool: D177: UnexpectedMessage


tool: D88: BadRecordMAC


tool: D224: DecryptionFailed


tool: D18: RecordOverflow


tool: D163: DecompressionFailure


tool: D173: HandshakeFailure


tool: D60: NoCertificate


tool: D116: BadCertificate


tool: D172: UnsupportedCertificate


tool: D87: CertificateRevoked


tool: D95: CertificateExpired


tool: D43: CertificateUnknown


tool: D187: IllegalParameter


tool: D225: UnknownCA


tool: D151: AccessDenied


tool: D149: DecodeError


tool: D219: DecryptError


tool: D194: ExportRestriction


tool: D74: ProtocolVersion


tool: D233: InsufficientSecurity


tool: D118: UNKNOWN SSL ERROR


assistant: ```c
void process_ssl_alert(char *sslalert, char *c1, char *c2, char *c3, int verbose) {
  if (verbose > 0) {
    switch (sslalert[06]) {
    case 0:
      printf("CloseNotify\n");
      break;
    case 10:
      printf("UnexpectedMessage\n");
      break;
    case 20:
      printf("BadRecordMAC\n");
      break;
    case 21:
      printf("DecryptionFailed\n");
      break;
    case 22:
      printf("RecordOverflow\n");
      break;
    case 30:
      printf("DecompressionFailure\n");
      break;
    case 40:
      printf("HandshakeFailure\n");
      break;
    case 41:
      printf("NoCertificate\n");
      break;
    case 42:
      printf("BadCertificate\n");
      break;
    case 43:
      printf("UnsupportedCertificate\n");
      break;
    case 44:
      printf("CertificateRevoked\n");
      break;
    case 45:
      printf("CertificateExpired\n");
      break;
    case 46:
      printf("CertificateUnknown\n");
      break;
    case 47:
      printf("IllegalParameter\n");
      break;
    case 48:
      printf("UnknownCA\n");
      break;
    case 49:
      printf("AccessDenied\n");
      break;
    case 50:
      printf("DecodeError\n");
      break;
    case 51:
      printf("DecryptError\n");
      break;
    case 60:
      printf("ExportRestriction\n");
      break;
    case 70:
      printf("ProtocolVersion\n");
      break;
    case 71:
      printf("InsufficientSecurity\n");
      break;
    default:
      printf("UNKNOWN SSL ERROR\n");
      break;
    }
  }
}
```