user: 这段汇编代码用C语言表示是什么样的?

```asm
<af_fmt2str>:
  endbr64
  test   %edx,%edx
  jle    L140
  push   %r15
  push   %r14
  push   %r13
  mov    %edi,%r13d
  push   %r12
  lea    -0x1(%rdx),%r12d
  lea    D138(%rip),%rdx
  push   %rbp
  mov    %rsi,%rbp
  push   %rbx
  sub    $0x8,%rsp
  test   $0x1,%dil
  je     L86
L37:
  mov    %r12d,%esi
  mov    %rbp,%rdi
  xor    %eax,%eax
  mov    %r12d,%r15d
  call   <snprintf@plt>
  mov    %eax,%ebx
  sub    %eax,%r15d
  cltq
  lea    0x0(%rbp,%rax,1),%r14
  mov    %r13d,%eax
  and    $0x1c0,%eax
  je     L15
  lea    D81(%rip),%rdx
  cmp    $0x100,%eax
  je     L114
  jg     L145
  lea    D2(%rip),%rdx
  cmp    $0x80,%eax
  je     L114
  lea    D91(%rip),%rdx
  cmp    $0xc0,%eax
  jne    L171
L114:
  mov    %r15d,%esi
  mov    %r14,%rdi
  xor    %eax,%eax
  call   <snprintf@plt>
  add    %eax,%ebx
L118:
  movslq %ebx,%rax
  test   %ebx,%ebx
  jle    L133
  lea    -0x1(%rax),%rdx
  cmpb   $0x20,-0x1(%rbp,%rax,1)
  cmove  %rdx,%rax
L133:
  movb   $0x0,0x0(%rbp,%rax,1)
  add    $0x8,%rsp
  mov    %rbp,%rax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   (%rax)
L145:
  lea    D38(%rip),%rdx
  cmp    $0x140,%eax
  je     L114
  cmp    $0x180,%eax
  jne    L129
  lea    D65(%rip),%rdx
  jmp    L114
  cs nopw 0x0(%rax,%rax,1)
L171:
  lea    D35(%rip),%rdx
  cmp    $0x40,%eax
  je     L114
L129:
  lea    D68(%rip),%rdx
  jmp    L114
  nopl   (%rax)
L86:
  lea    D100(%rip),%rdx
  jmp    L37
  nopl   0x0(%rax)
L15:
  mov    %r13d,%edi
  call   <af_fmt2bits@plt>
  mov    %r15d,%esi
  mov    %r14,%rdi
  lea    D56(%rip),%rdx
  mov    %eax,%ecx
  xor    %eax,%eax
  call   <snprintf@plt>
  mov    %r12d,%esi
  add    %eax,%ebx
  movslq %ebx,%rdi
  sub    %ebx,%esi
  add    %rbp,%rdi
  test   $0x4,%r13b
  jne    L16
  and    $0x2,%r13d
  je     L163
  lea    D126(%rip),%rdx
  xor    %eax,%eax
  call   <snprintf@plt>
  add    %eax,%ebx
L7:
  movslq %ebx,%rdi
  mov    %r12d,%esi
  lea    D49(%rip),%rdx
  xor    %eax,%eax
  sub    %ebx,%esi
  add    %rbp,%rdi
  call   <snprintf@plt>
  add    %eax,%ebx
  jmp    L118
  nop
L16:
  lea    D51(%rip),%rdx
  xor    %eax,%eax
  call   <snprintf@plt>
  add    %eax,%ebx
  jmp    L118
  nopl   (%rax)
L140:
  xor    %eax,%eax
  ret
  nopl   0x0(%rax,%rax,1)
L163:
  lea    D125(%rip),%rdx
  xor    %eax,%eax
  call   <snprintf@plt>
  add    %eax,%ebx
  jmp    L7
```

tool_calls: name: retrieve_data
arguments: data_label: D138
type_guessed: string
name: retrieve_data
arguments: data_label: D81
type_guessed: string
name: retrieve_data
arguments: data_label: D2
type_guessed: string
name: retrieve_data
arguments: data_label: D91
type_guessed: string
name: retrieve_data
arguments: data_label: D38
type_guessed: string
name: retrieve_data
arguments: data_label: D65
type_guessed: string
name: retrieve_data
arguments: data_label: D35
type_guessed: string
name: retrieve_data
arguments: data_label: D68
type_guessed: string
name: retrieve_data
arguments: data_label: D100
type_guessed: string
name: retrieve_data
arguments: data_label: D56
type_guessed: string
name: retrieve_data
arguments: data_label: D126
type_guessed: string
name: retrieve_data
arguments: data_label: D49
type_guessed: string
name: retrieve_data
arguments: data_label: D51
type_guessed: string
name: retrieve_data
arguments: data_label: D125
type_guessed: string

tool: D138: little-endian 

tool: D81: AC3 

tool: D2: A-law 

tool: D91: MPEG-2 

tool: D38: IMA-ADPCM 

tool: D65: IEC61937 

tool: D35: mu-law 

tool: D68: unknown format 

tool: D100: big-endian 

tool: D56: %d-bit 

tool: D126: unsigned 

tool: D49: int 

tool: D51: float 

tool: D125: signed 

assistant: ```c
char *af_fmt2str(int format, char *str, int size) {
  int i = 0;
  if (size < 1)
    return NULL;
  size--;
  if ((1 << 0) == (format & (1 << 0)))
    i += snprintf(str, size - i, "little-endian ");
  else
    i += snprintf(str, size - i, "big-endian ");
  if (format & (7 << 6)) {
    switch (format & (7 << 6)) {
    case ((1 << 6)):
      i += snprintf(&str[i], size - i, "mu-law ");
      break;
    case ((2 << 6)):
      i += snprintf(&str[i], size - i, "A-law ");
      break;
    case ((3 << 6)):
      i += snprintf(&str[i], size - i, "MPEG-2 ");
      break;
    case ((4 << 6)):
      i += snprintf(&str[i], size - i, "AC3 ");
      break;
    case ((6 << 6)):
      i += snprintf(&str[i], size - i, "IEC61937 ");
      break;
    case ((5 << 6)):
      i += snprintf(&str[i], size - i, "IMA-ADPCM ");
      break;
    default:
      i += snprintf(&str[i], size - i, "unknown format ");
    }
  } else {
    i += snprintf(&str[i], size - i, "%d-bit ", af_fmt2bits(format));
    if ((1 << 2) == (format & (1 << 2)))
      i += snprintf(&str[i], size - i, "float ");
    else {
      if ((1 << 1) == (format & (1 << 1)))
        i += snprintf(&str[i], size - i, "unsigned ");
      else
        i += snprintf(&str[i], size - i, "signed ");
      i += snprintf(&str[i], size - i, "int ");
    }
  }
  if (i > 0 && str[i - 1] == ' ')
    i--;
  str[i] = 0;
  return str;
}
```