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

```asm
<op_or_usage>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x8(%rbp)
  mov    %rsi,-0x10(%rbp)
  mov    %rdx,-0x18(%rbp)
  cmpq   $0x0,-0x18(%rbp)
  jne    L1
  lea    D93(%rip),%rax
  mov    %rax,-0x18(%rbp)
L1:
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D49(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D104(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D8(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D78(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x8(%rbp),%rcx
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D69(%rip),%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D95(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D68(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D87(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D81(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    -0x18(%rbp),%rdx
  mov    -0x10(%rbp),%rax
  lea    D32(%rip),%rcx
  mov    %rcx,%rsi
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  nop
  leave
  ret
```

tool_calls: name: disassemble_data
arguments: label: D93
type: string
name: disassemble_data
arguments: label: D49
type: string
name: disassemble_data
arguments: label: D104
type: string
name: disassemble_data
arguments: label: D8
type: string
name: disassemble_data
arguments: label: D78
type: string
name: disassemble_data
arguments: label: D69
type: string
name: disassemble_data
arguments: label: D95
type: string
name: disassemble_data
arguments: label: D68
type: string
name: disassemble_data
arguments: label: D87
type: string
name: disassemble_data
arguments: label: D81
type: string
name: disassemble_data
arguments: label: D32
type: string

tool: 

tool: D49: %sLogical OR an incoming set of interval values with the current set. The


tool: D104: %sresult is 1.0 if the entry is non-zero in either set. Otherwise the result is


tool: D8: %s0.0.


tool: D78: %s


tool: D69: %susage: %s <filename> [options]


tool: D95: %s  --value=<col>            input intervals contain a value in the specified


tool: D68: %s                           column


tool: D87: %s  --novalue                input intervals have no value (value given is 1)


tool: D81: %s  --origin=one             input/output intervals are origin-one, closed


tool: D32: %s  --origin=zero            input/output intervals are origin-zero, half-open


assistant: ```c
void op_or_usage(char *name, FILE *f, char *indent) {
  if (indent == NULL)
    indent = "";
  fprintf(f, "%sLogical OR an incoming set of interval values with the current set. The\n", indent);
  fprintf(f, "%sresult is 1.0 if the entry is non-zero in either set. Otherwise the result is\n", indent);
  fprintf(f, "%s0.0.\n", indent);
  fprintf(f, "%s\n", indent);
  fprintf(f, "%susage: %s <filename> [options]\n", indent, name);
  fprintf(f, "%s  --value=<col>            input intervals contain a value in the specified\n", indent);
  fprintf(f, "%s                           column\n", indent);
  fprintf(f, "%s  --novalue                input intervals have no value (value given is 1)\n", indent);
  fprintf(f, "%s  --origin=one             input/output intervals are origin-one, closed\n", indent);
  fprintf(f, "%s  --origin=zero            input/output intervals are origin-zero, half-open\n", indent);
}
```