user: Converte this assembly snippet into its equivalent C code:

```asm
<op_min_in_interval_usage>:
  endbr64
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x8,%rsp
  mov    %rdi,%r12
  mov    %rsi,%rbp
  mov    %rdx,%rbx
  test   %rdx,%rdx
  lea    D23(%rip),%rax
  cmove  %rax,%rbx
  mov    %rbx,%rdx
  lea    D83(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D38(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D12(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D13(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D117(%rip),%r13
  mov    %r13,%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %r12,%rcx
  mov    %rbx,%rdx
  lea    D103(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D40(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D28(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D2(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D30(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  mov    %r13,%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D92(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  mov    %rbx,%rdx
  lea    D24(%rip),%rsi
  mov    %rbp,%rdi
  mov    $0x0,%eax
  call   <fprintf@plt>
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D23
data_type: string
name: extract_symbolic_data
arguments: data_label: D83
data_type: string
name: extract_symbolic_data
arguments: data_label: D38
data_type: string
name: extract_symbolic_data
arguments: data_label: D12
data_type: string
name: extract_symbolic_data
arguments: data_label: D13
data_type: string
name: extract_symbolic_data
arguments: data_label: D117
data_type: string
name: extract_symbolic_data
arguments: data_label: D103
data_type: string
name: extract_symbolic_data
arguments: data_label: D40
data_type: string
name: extract_symbolic_data
arguments: data_label: D28
data_type: string
name: extract_symbolic_data
arguments: data_label: D2
data_type: string
name: extract_symbolic_data
arguments: data_label: D30
data_type: string
name: extract_symbolic_data
arguments: data_label: D92
data_type: string
name: extract_symbolic_data
arguments: data_label: D24
data_type: string

tool: 

tool: D83: %sFind the minimum value in each of a set of intervals. The intervals are


tool: D38: %sreplaced by infinity everywhere except at their single trough position. Ties


tool: D12: %sare broken by the position nearest the center of the interval. Any bases


tool: D13: %soutside the intervals are also replaced by infinity.


tool: D117: %s


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


tool: D40: %s  --origin=one             input intervals are origin-one, closed


tool: D28: %s  --origin=zero            input intervals are origin-zero, half-open


tool: D2: %s  --infinity=<value>       value to fill non-minima


tool: D30: %s                           (default is +inf)


tool: D92: %sThe input intervals are required to be sorted along each chromosome, and


tool: D24: %snon-overlapping)


assistant: ```c
void op_min_in_interval_usage(char *name, FILE *f, char *indent) {
  if (indent == NULL)
    indent = "";
  fprintf(f, "%sFind the minimum value in each of a set of intervals. The intervals are\n", indent);
  fprintf(f, "%sreplaced by infinity everywhere except at their single trough position. Ties\n", indent);
  fprintf(f, "%sare broken by the position nearest the center of the interval. Any bases\n", indent);
  fprintf(f, "%soutside the intervals are also replaced by infinity.\n", indent);
  fprintf(f, "%s\n", indent);
  fprintf(f, "%susage: %s <filename> [options]\n", indent, name);
  fprintf(f, "%s  --origin=one             input intervals are origin-one, closed\n", indent);
  fprintf(f, "%s  --origin=zero            input intervals are origin-zero, half-open\n", indent);
  fprintf(f, "%s  --infinity=<value>       value to fill non-minima\n", indent);
  fprintf(f, "%s                           (default is +inf)\n", indent);
  fprintf(f, "%s\n", indent);
  fprintf(f, "%sThe input intervals are required to be sorted along each chromosome, and\n", indent);
  fprintf(f, "%snon-overlapping)\n", indent);
}
```