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

```asm
<generic_notification_ind_dump>:
  endbr64
  push   %r15
  lea    D6(%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    L106
  movslq %r12d,%rbp
  xor    %r14d,%r14d
  lea    D31(%rip),%rbx
  nopl   0x0(%rax)
L57:
  test   %r14,%r14
  je     L153
L161:
  movzbl (%r15,%r14,1),%eax
  and    $0x7f,%eax
  cmp    $0x7b,%al
  ja     L260
  movzbl %al,%eax
  movslq (%rbx,%rax,4),%rax
  add    %rbx,%rax
  notrack jmp *%rax
  nopw   0x0(%rax,%rax,1)
L260:
  lea    D42(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  nopw   0x0(%rax,%rax,1)
L228:
  add    $0x1,%r14
  cmp    %rbp,%r14
  jne    L57
L106:
  mov    %r13,%rdi
  lea    D70(%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    D15(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D138(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D84(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D251(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D195(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D34(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D92(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D219(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D55(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D214(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D215(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D228(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D256(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D16(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D48(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D217(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D170(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D164(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D24(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D85(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D106(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  lea    D124(%rip),%rsi
  mov    %r13,%rdi
  call   <ss7_message@plt>
  jmp    L228
  nopl   0x0(%rax,%rax,1)
L153:
  cmpb   $0x0,-0x1(%r15)
  jns    L161
  jmp    L106
```

tool_calls: name: read_data
arguments: tag: D6
type: string
name: read_data
arguments: tag: D42
type: string
name: read_data
arguments: tag: D70
type: string
name: read_data
arguments: tag: D15
type: string
name: read_data
arguments: tag: D138
type: string
name: read_data
arguments: tag: D84
type: string
name: read_data
arguments: tag: D251
type: string
name: read_data
arguments: tag: D195
type: string
name: read_data
arguments: tag: D34
type: string
name: read_data
arguments: tag: D92
type: string
name: read_data
arguments: tag: D219
type: string
name: read_data
arguments: tag: D55
type: string
name: read_data
arguments: tag: D214
type: string
name: read_data
arguments: tag: D215
type: string
name: read_data
arguments: tag: D228
type: string
name: read_data
arguments: tag: D256
type: string
name: read_data
arguments: tag: D16
type: string
name: read_data
arguments: tag: D48
type: string
name: read_data
arguments: tag: D217
type: string
name: read_data
arguments: tag: D170
type: string
name: read_data
arguments: tag: D164
type: string
name: read_data
arguments: tag: D24
type: string
name: read_data
arguments: tag: D85
type: string
name: read_data
arguments: tag: D106
type: string
name: read_data
arguments: tag: D124
type: string

tool: D6: 			Notification indicator: 

tool: D42: reserved; 

tool: D70: 


tool: D15: remote is diverting; 

tool: D138: remote retrieval; 

tool: D84: remote hold; 

tool: D251: call transfer, active; 

tool: D195: call transfer, alerting; 

tool: D34: diversion activated; 

tool: D92: call is a waiting call; 

tool: D219: other party floating; 

tool: D55: other party disconnected; 

tool: D214: other party split; 

tool: D215: other party reattached; 

tool: D228: other party isolated; 

tool: D256: reattached; 

tool: D16: isolated; 

tool: D48: other party added; 

tool: D217: conference disconnected; 

tool: D170: conference established; 

tool: D164: call completion delay; 

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

tool: D85: bearer service change; 

tool: D106: user resumed; 

tool: D124: 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;
}
```