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

```asm
<inf_ind_dump>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %esi,-0xc(%rbp)
  mov    %rdx,-0x18(%rbp)
  mov    %ecx,-0x10(%rbp)
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x2,%eax
  test   %eax,%eax
  je     L59
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L118
  lea    D85(%rip),%rax
  jmp    L7
L118:
  lea    D21(%rip),%rax
  jmp    L7
L59:
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x1,%eax
  test   %eax,%eax
  je     L67
  lea    D73(%rip),%rax
  jmp    L7
L67:
  lea    D17(%rip),%rax
L7:
  mov    -0x8(%rbp),%rcx
  mov    %rax,%rdx
  lea    D134(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <ss7_message@plt>
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x4,%eax
  test   %eax,%eax
  je     L23
  lea    D15(%rip),%rax
  jmp    L62
L23:
  lea    D124(%rip),%rax
L62:
  mov    -0x8(%rbp),%rcx
  mov    %rax,%rdx
  lea    D44(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <ss7_message@plt>
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x20,%eax
  test   %eax,%eax
  je     L6
  lea    D15(%rip),%rax
  jmp    L44
L6:
  lea    D124(%rip),%rax
L44:
  mov    -0x8(%rbp),%rcx
  mov    %rax,%rdx
  lea    D126(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <ss7_message@plt>
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  movzbl %al,%eax
  and    $0x40,%eax
  test   %eax,%eax
  je     L51
  lea    D15(%rip),%rax
  jmp    L137
L51:
  lea    D124(%rip),%rax
L137:
  mov    -0x8(%rbp),%rcx
  mov    %rax,%rdx
  lea    D76(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <ss7_message@plt>
  mov    -0x18(%rbp),%rax
  movzbl (%rax),%eax
  test   %al,%al
  jns    L58
  lea    D0(%rip),%rax
  jmp    L5
L58:
  lea    D32(%rip),%rax
L5:
  mov    -0x8(%rbp),%rcx
  mov    %rax,%rdx
  lea    D103(%rip),%rax
  mov    %rax,%rsi
  mov    %rcx,%rdi
  call   <ss7_message@plt>
  mov    $0x2,%eax
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D85
datatype: string
name: disassemble_data
arguments: label: D21
datatype: string
name: disassemble_data
arguments: label: D73
datatype: string
name: disassemble_data
arguments: label: D17
datatype: string
name: disassemble_data
arguments: label: D134
datatype: string
name: disassemble_data
arguments: label: D15
datatype: string
name: disassemble_data
arguments: label: D124
datatype: string
name: disassemble_data
arguments: label: D44
datatype: string
name: disassemble_data
arguments: label: D126
datatype: string
name: disassemble_data
arguments: label: D76
datatype: string
name: disassemble_data
arguments: label: D0
datatype: string
name: disassemble_data
arguments: label: D32
datatype: string
name: disassemble_data
arguments: label: D103
datatype: string

tool: D85: included

tool: D21: spare

tool: D73: not available

tool: D17: not included

tool: D134: 			Calling party address: %s


tool: 

tool: D124: not 

tool: D44: 			Hold: %sprovided


tool: D126: 			Calling party's category %sincluded


tool: D76: 			Charge information %sincluded


tool: D0: Unsolicated

tool: D32: Solicated

tool: D103: 			%s


assistant: ```c
int((inf_ind_dump))(struct ss7 *ss7, int messagetype, unsigned char *parm, int len) {
  ss7_message(ss7, "\t\t\tCalling party address: %s\n", (parm[0] & 0x2) ? ((parm[0] & 0x1) ? "included" : "spare") : ((parm[0] & 0x1) ? "not available" : "not included"));
  ss7_message(ss7, "\t\t\tHold: %sprovided\n", (parm[0] & 0x4) ? "" : "not ");
  ss7_message(ss7, "\t\t\tCalling party's category %sincluded\n", (parm[0] & 0x20) ? "" : "not ");
  ss7_message(ss7, "\t\t\tCharge information %sincluded\n", (parm[0] & 0x40) ? "" : "not ");
  ss7_message(ss7, "\t\t\t%s\n", (parm[0] & 0x80) ? "Unsolicated" : "Solicated");
  return 2;
}
```