user: 请将这段汇编代码片段转换成等效的C代码:

```asm
<info>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %edi,-0x14(%rbp)
  mov    %esi,-0x18(%rbp)
  mov    %edx,-0x1c(%rbp)
  cmpl   $0x6,-0x14(%rbp)
  ja     L139
  mov    -0x14(%rbp),%eax
  lea    0x0(,%rax,4),%rdx
  lea    D131(%rip),%rax
  mov    (%rdx,%rax,1),%eax
  cltq
  lea    D131(%rip),%rdx
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D166(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L211
  lea    D23(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L211
  lea    D61(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L211
  lea    D51(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L211
  lea    D114(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L211
  lea    D9(%rip),%rax
  mov    %rax,-0x8(%rbp)
  jmp    L211
L139:
  lea    D270(%rip),%rax
  mov    %rax,-0x8(%rbp)
  nop
L211:
  mov    -0x1c(%rbp),%edx
  mov    -0x8(%rbp),%rax
  mov    %edx,%ecx
  mov    %rax,%rdx
  lea    D177(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  mov    -0x18(%rbp),%eax
  and    $0x100,%eax
  test   %eax,%eax
  je     L96
  lea    D93(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L96:
  mov    -0x18(%rbp),%eax
  and    $0x200,%eax
  test   %eax,%eax
  je     L249
  lea    D195(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L249:
  mov    -0x18(%rbp),%eax
  and    $0x400,%eax
  test   %eax,%eax
  je     L127
  lea    D225(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L127:
  mov    -0x18(%rbp),%eax
  and    $0x800,%eax
  test   %eax,%eax
  je     L226
  lea    D10(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L226:
  mov    -0x18(%rbp),%eax
  and    $0x1000,%eax
  test   %eax,%eax
  je     L205
  cmpl   $0x1,-0x14(%rbp)
  jne    L36
  cmpl   $0x2,-0x1c(%rbp)
  jne    L36
  lea    D220(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L205
L36:
  lea    D25(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L205:
  mov    -0x18(%rbp),%eax
  and    $0x2000,%eax
  test   %eax,%eax
  je     L66
  lea    D192(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L66:
  mov    -0x18(%rbp),%eax
  and    $0x4000,%eax
  test   %eax,%eax
  je     L51
  lea    D199(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L51:
  mov    -0x18(%rbp),%eax
  and    $0x8000,%eax
  test   %eax,%eax
  je     L133
  lea    D155(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L133:
  mov    -0x18(%rbp),%eax
  and    $0x10000,%eax
  test   %eax,%eax
  je     L126
  lea    D171(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L126:
  mov    -0x18(%rbp),%eax
  and    $0x40000,%eax
  test   %eax,%eax
  je     L106
  lea    D173(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L106:
  mov    -0x18(%rbp),%eax
  and    $0x20000,%eax
  test   %eax,%eax
  je     L74
  lea    D113(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L74:
  mov    -0x18(%rbp),%eax
  and    $0x80000,%eax
  test   %eax,%eax
  je     L115
  lea    D45(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L115:
  mov    -0x18(%rbp),%eax
  and    $0x100000,%eax
  test   %eax,%eax
  je     L181
  lea    D0(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L181:
  mov    -0x18(%rbp),%eax
  and    $0x200000,%eax
  test   %eax,%eax
  je     L251
  lea    D219(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L251:
  mov    -0x18(%rbp),%eax
  and    $0x400000,%eax
  test   %eax,%eax
  je     L150
  lea    D76(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L150:
  mov    -0x18(%rbp),%eax
  and    $0x800000,%eax
  test   %eax,%eax
  je     L170
  lea    D86(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L170:
  lea    D57(%rip),%rax
  mov    %rax,%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  nop
  leave
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D166
data_type: string
name: extract_symbolic_data
arguments: tag: D23
data_type: string
name: extract_symbolic_data
arguments: tag: D61
data_type: string
name: extract_symbolic_data
arguments: tag: D51
data_type: string
name: extract_symbolic_data
arguments: tag: D114
data_type: string
name: extract_symbolic_data
arguments: tag: D9
data_type: string
name: extract_symbolic_data
arguments: tag: D270
data_type: string
name: extract_symbolic_data
arguments: tag: D177
data_type: string
name: extract_symbolic_data
arguments: tag: D93
data_type: string
name: extract_symbolic_data
arguments: tag: D195
data_type: string
name: extract_symbolic_data
arguments: tag: D225
data_type: string
name: extract_symbolic_data
arguments: tag: D10
data_type: string
name: extract_symbolic_data
arguments: tag: D220
data_type: string
name: extract_symbolic_data
arguments: tag: D25
data_type: string
name: extract_symbolic_data
arguments: tag: D192
data_type: string
name: extract_symbolic_data
arguments: tag: D199
data_type: string
name: extract_symbolic_data
arguments: tag: D155
data_type: string
name: extract_symbolic_data
arguments: tag: D171
data_type: string
name: extract_symbolic_data
arguments: tag: D173
data_type: string
name: extract_symbolic_data
arguments: tag: D113
data_type: string
name: extract_symbolic_data
arguments: tag: D45
data_type: string
name: extract_symbolic_data
arguments: tag: D0
data_type: string
name: extract_symbolic_data
arguments: tag: D219
data_type: string
name: extract_symbolic_data
arguments: tag: D76
data_type: string
name: extract_symbolic_data
arguments: tag: D86
data_type: string
name: extract_symbolic_data
arguments: tag: D57
data_type: string

tool: D166: TinyMUSH-3

tool: D23: TinyMUX

tool: D61: TinyMUSH

tool: D51: TinyMUSE

tool: D114: TinyMUD

tool: D9: TinyMUCK

tool: D270: *unknown*

tool: D177: %s version %d:

tool: D93:  Zone

tool: D195:  Link

tool: D225:  GDBM

tool: D10:  AtrName

tool: D220:  ExtLocks

tool: D25:  AtrKey

tool: D192:  Parent

tool: D199:  Comm

tool: D155:  AtrMoney

tool: D171:  ExtFlags

tool: D173:  MoreFlags

tool: D113:  Powers

tool: D45:  QuotedStr

tool: D0:  TypedQuotas

tool: D219:  Timestamps

tool: D76:  VisualAttrs

tool: D86:  CreateTime

tool: D57: 


assistant: ```c
void info(int fmt, int flags, int ver) {
  const char *cp;
  switch (fmt) {
  case 6:
    cp = "TinyMUSH-3";
    break;
  case 5:
    cp = "TinyMUX";
    break;
  case 1:
    cp = "TinyMUSH";
    break;
  case 2:
    cp = "TinyMUSE";
    break;
  case 3:
    cp = "TinyMUD";
    break;
  case 4:
    cp = "TinyMUCK";
    break;
  default:
    cp = "*unknown*";
    break;
  }
  log_write_raw(1, "%s version %d:", cp, ver);
  if (flags & 0x00000100) {
    log_write_raw(1, " Zone");
  }
  if (flags & 0x00000200) {
    log_write_raw(1, " Link");
  }
  if (flags & 0x00000400) {
    log_write_raw(1, " GDBM");
  }
  if (flags & 0x00000800) {
    log_write_raw(1, " AtrName");
  }
  if (flags & 0x00001000) {
    if ((fmt == 1) && (ver == 2)) {
      log_write_raw(1, " ExtLocks");
    } else {
      log_write_raw(1, " AtrKey");
    }
  }
  if (flags & 0x00002000) {
    log_write_raw(1, " Parent");
  }
  if (flags & 0x00004000) {
    log_write_raw(1, " Comm");
  }
  if (flags & 0x00008000) {
    log_write_raw(1, " AtrMoney");
  }
  if (flags & 0x00010000) {
    log_write_raw(1, " ExtFlags");
  }
  if (flags & 0x00040000) {
    log_write_raw(1, " MoreFlags");
  }
  if (flags & 0x00020000) {
    log_write_raw(1, " Powers");
  }
  if (flags & 0x00080000) {
    log_write_raw(1, " QuotedStr");
  }
  if (flags & 0x00100000) {
    log_write_raw(1, " TypedQuotas");
  }
  if (flags & 0x00200000) {
    log_write_raw(1, " Timestamps");
  }
  if (flags & 0x00400000) {
    log_write_raw(1, " VisualAttrs");
  }
  if (flags & 0x00800000) {
    log_write_raw(1, " CreateTime");
  }
  log_write_raw(1, "\n");
}
```