user: 请将以下的汇编代码转换成C语言代码:

```asm
<generic_notification_ind_dump>:
  endbr64
  push   %r15
  lea    D142(%rip),%rsi
  mov    %rdx,%r15
  push   %r14
  push   %r13
  mov    %rdi,%r13
  push   %r12
  mov    %ecx,%r12d
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  call   <ss7_message@plt>
  test   %r12d,%r12d
  jle    L240
  movslq %r12d,%rbp
  xor    %r14d,%r14d
  lea    D207(%rip),%rbx
  nopl   0x0(%rax)
L76:
  test   %r14,%r14
  je     L98
L130:
  movzbl (%r15,%r14,1),%eax
  and    $0x7f,%eax
  cmp    $0x7b,%al
  ja     L35
  movzbl %al,%eax
  movslq (%rbx,%rax,4),%rax
  add    %rbx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
L35:
  lea    D171(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  nopw   0x0(%rax,%rax,1)
L60:
  add    $0x1,%r14
  cmp    %rbp,%r14
  jne    L76
L240:
  mov    %r13,%rdi
  lea    D46(%rip),%rsi
  call   <ss7_message@plt>
  add    $0x8,%rsp
  mov    %r12d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  lea    D153(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D129(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D34(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D228(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D188(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D26(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D156(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D157(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D20(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D94(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D126(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D209(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D244(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D220(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D166(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D216(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D24(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D59(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D257(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D98(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D250(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  lea    D229(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L60
  nopl   0x0(%rax,%rax,1)
L98:
  cmpb   $0x0,-0x1(%r15)
  jns    L130
  jmp    L240
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D142
type: string
name: extract_symbolic_data
arguments: data_label: D171
type: string
name: extract_symbolic_data
arguments: data_label: D46
type: string
name: extract_symbolic_data
arguments: data_label: D153
type: string
name: extract_symbolic_data
arguments: data_label: D129
type: string
name: extract_symbolic_data
arguments: data_label: D34
type: string
name: extract_symbolic_data
arguments: data_label: D228
type: string
name: extract_symbolic_data
arguments: data_label: D188
type: string
name: extract_symbolic_data
arguments: data_label: D26
type: string
name: extract_symbolic_data
arguments: data_label: D156
type: string
name: extract_symbolic_data
arguments: data_label: D157
type: string
name: extract_symbolic_data
arguments: data_label: D20
type: string
name: extract_symbolic_data
arguments: data_label: D94
type: string
name: extract_symbolic_data
arguments: data_label: D126
type: string
name: extract_symbolic_data
arguments: data_label: D209
type: string
name: extract_symbolic_data
arguments: data_label: D244
type: string
name: extract_symbolic_data
arguments: data_label: D220
type: string
name: extract_symbolic_data
arguments: data_label: D166
type: string
name: extract_symbolic_data
arguments: data_label: D216
type: string
name: extract_symbolic_data
arguments: data_label: D24
type: string
name: extract_symbolic_data
arguments: data_label: D59
type: string
name: extract_symbolic_data
arguments: data_label: D257
type: string
name: extract_symbolic_data
arguments: data_label: D98
type: string
name: extract_symbolic_data
arguments: data_label: D250
type: string
name: extract_symbolic_data
arguments: data_label: D229
type: string

tool: D142: 			Notification indicator: 

tool: D171: reserved; 

tool: D46: 


tool: D153: remote is diverting; 

tool: D129: remote retrieval; 

tool: D34: remote hold; 

tool: D228: call transfer, active; 

tool: D188: call transfer, alerting; 

tool: D26: diversion activated; 

tool: D156: call is a waiting call; 

tool: D157: other party floating; 

tool: D20: other party disconnected; 

tool: D94: other party split; 

tool: D126: other party reattached; 

tool: D209: other party isolated; 

tool: D244: reattached; 

tool: D220: isolated; 

tool: D166: other party added; 

tool: D216: conference disconnected; 

tool: D24: conference established; 

tool: D59: call completion delay; 

tool: D257: discriminator for extension to ASN.1; 

tool: D98: bearer service change; 

tool: D250: user resumed; 

tool: D229: user suspended; 

assistant: ```c
int((generic_notification_ind_dump))(struct ss7 *ss7, int messagetype, unsigned char *parm, int len) {
  int pos = 0;
  ss7_message(ss7, "\t\t\tNotification indicator: ");
  while (pos < len && (pos || !(parm[pos - 1] & 0x80))) {
    switch (parm[pos] & 0x7f) {
    case 0x00:
      ss7_message(ss7, "user suspended; ");
      break;
    case 0x01:
      ss7_message(ss7, "user resumed; ");
      break;
    case 0x02:
      ss7_message(ss7, "bearer service change; ");
      break;
    case 0x03:
      ss7_message(ss7, "discriminator for extension to ASN.1; ");
      break;
    case 0x04:
      ss7_message(ss7, "call completion delay; ");
      break;
    case 0x42:
      ss7_message(ss7, "conference established; ");
      break;
    case 0x43:
      ss7_message(ss7, "conference disconnected; ");
      break;
    case 0x44:
      ss7_message(ss7, "other party added; ");
      break;
    case 0x45:
      ss7_message(ss7, "isolated; ");
      break;
    case 0x46:
      ss7_message(ss7, "reattached; ");
      break;
    case 0x47:
      ss7_message(ss7, "other party isolated; ");
      break;
    case 0x48:
      ss7_message(ss7, "other party reattached; ");
      break;
    case 0x49:
      ss7_message(ss7, "other party split; ");
      break;
    case 0x4a:
      ss7_message(ss7, "other party disconnected; ");
      break;
    case 0x4b:
      ss7_message(ss7, "other party floating; ");
      break;
    case 0x60:
      ss7_message(ss7, "call is a waiting call; ");
      break;
    case 0x68:
      ss7_message(ss7, "diversion activated; ");
      break;
    case 0x69:
      ss7_message(ss7, "call transfer, alerting; ");
      break;
    case 0x6a:
      ss7_message(ss7, "call transfer, active; ");
      break;
    case 0x79:
      ss7_message(ss7, "remote hold; ");
      break;
    case 0x7a:
      ss7_message(ss7, "remote retrieval; ");
      break;
    case 0x7b:
      ss7_message(ss7, "remote is diverting; ");
      break;
    default:
      ss7_message(ss7, "reserved; ");
    }
    pos++;
  }
  ss7_message(ss7, "\n");
  return len;
}
```