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

```asm
<info>:
  endbr64
  push   %r12
  mov    %edx,%r12d
  push   %rbp
  mov    %edi,%ebp
  push   %rbx
  mov    %esi,%ebx
  cmp    $0x6,%edi
  ja     L316
  lea    D145(%rip),%rdx
  mov    %edi,%eax
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  nopl   0x0(%rax,%rax,1)
  lea    D143(%rip),%rdx
  nopw   0x0(%rax,%rax,1)
L92:
  xor    %eax,%eax
  mov    %r12d,%ecx
  mov    $0x1,%edi
  lea    D50(%rip),%rsi
  call   <log_write_raw@plt>
  test   $0x1,%bh
  jne    L280
L148:
  test   $0x2,%bh
  jne    L220
L140:
  test   $0x4,%bh
  jne    L303
  test   $0x8,%bh
  jne    L162
L10:
  test   $0x10,%bh
  je     L188
  cmp    $0x1,%ebp
  jne    L185
  cmp    $0x2,%r12d
  jne    L185
  lea    D96(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
L188:
  test   $0x20,%bh
  jne    L238
L229:
  test   $0x40,%bh
  jne    L131
L367:
  test   $0x80,%bh
  jne    L5
L63:
  test   $0x10000,%ebx
  jne    L327
L7:
  test   $0x40000,%ebx
  jne    L382
L321:
  test   $0x20000,%ebx
  jne    L130
L330:
  test   $0x80000,%ebx
  jne    L341
L54:
  test   $0x100000,%ebx
  jne    L371
L231:
  test   $0x200000,%ebx
  jne    L3
L186:
  test   $0x400000,%ebx
  jne    L66
L284:
  and    $0x800000,%ebx
  jne    L300
L406:
  pop    %rbx
  lea    D114(%rip),%rsi
  pop    %rbp
  mov    $0x1,%edi
  xor    %eax,%eax
  pop    %r12
  jmp    1050 <log_write_raw@plt>
  nopl   0x0(%rax,%rax,1)
  lea    D131(%rip),%rdx
  jmp    L92
  nopl   0x0(%rax)
  lea    D4(%rip),%rdx
  jmp    L92
  nopl   0x0(%rax)
  lea    D158(%rip),%rdx
  jmp    L92
  nopl   0x0(%rax)
  lea    D228(%rip),%rdx
  jmp    L92
  nopl   0x0(%rax)
  lea    D16(%rip),%rdx
  jmp    L92
  nopl   0x0(%rax)
L300:
  lea    D248(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L406
L303:
  xor    %eax,%eax
  lea    D223(%rip),%rsi
  mov    $0x1,%edi
  call   <log_write_raw@plt>
  test   $0x8,%bh
  je     L10
L162:
  lea    D195(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L10
  nopl   0x0(%rax)
L220:
  lea    D85(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L140
L66:
  lea    D178(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L284
  nopl   0x0(%rax,%rax,1)
L3:
  lea    D218(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L186
  nopl   0x0(%rax,%rax,1)
L280:
  lea    D19(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L148
  nopl   0x0(%rax,%rax,1)
L371:
  lea    D197(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L231
  nopl   0x0(%rax,%rax,1)
L341:
  lea    D258(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L54
  nopl   0x0(%rax,%rax,1)
L130:
  lea    D234(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L330
  nopl   0x0(%rax,%rax,1)
L382:
  lea    D134(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L321
  nopl   0x0(%rax,%rax,1)
L327:
  lea    D257(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L7
  nopl   0x0(%rax,%rax,1)
L5:
  lea    D200(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L63
  nopl   0x0(%rax,%rax,1)
L131:
  lea    D196(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L367
  nopl   0x0(%rax,%rax,1)
L238:
  lea    D224(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L229
  nopl   0x0(%rax,%rax,1)
L185:
  lea    D235(%rip),%rsi
  mov    $0x1,%edi
  xor    %eax,%eax
  call   <log_write_raw@plt>
  jmp    L188
L316:
  lea    D254(%rip),%rdx
  jmp    L92
```

tool_calls: name: read_data
arguments: label: D143
datatype: string
name: read_data
arguments: label: D50
datatype: string
name: read_data
arguments: label: D96
datatype: string
name: read_data
arguments: label: D114
datatype: string
name: read_data
arguments: label: D131
datatype: string
name: read_data
arguments: label: D4
datatype: string
name: read_data
arguments: label: D158
datatype: string
name: read_data
arguments: label: D228
datatype: string
name: read_data
arguments: label: D16
datatype: string
name: read_data
arguments: label: D248
datatype: string
name: read_data
arguments: label: D223
datatype: string
name: read_data
arguments: label: D195
datatype: string
name: read_data
arguments: label: D85
datatype: string
name: read_data
arguments: label: D178
datatype: string
name: read_data
arguments: label: D218
datatype: string
name: read_data
arguments: label: D19
datatype: string
name: read_data
arguments: label: D197
datatype: string
name: read_data
arguments: label: D258
datatype: string
name: read_data
arguments: label: D234
datatype: string
name: read_data
arguments: label: D134
datatype: string
name: read_data
arguments: label: D257
datatype: string
name: read_data
arguments: label: D200
datatype: string
name: read_data
arguments: label: D196
datatype: string
name: read_data
arguments: label: D224
datatype: string
name: read_data
arguments: label: D235
datatype: string
name: read_data
arguments: label: D254
datatype: string

tool: D143: TinyMUSH-3

tool: D50: %s version %d:

tool: D96:  ExtLocks

tool: D114: 


tool: D131: TinyMUX

tool: D4: TinyMUSE

tool: D158: TinyMUD

tool: D228: TinyMUSH

tool: D16: TinyMUCK

tool: D248:  CreateTime

tool: D223:  GDBM

tool: D195:  AtrName

tool: D85:  Link

tool: D178:  VisualAttrs

tool: D218:  Timestamps

tool: D19:  Zone

tool: D197:  TypedQuotas

tool: D258:  QuotedStr

tool: D234:  Powers

tool: D134:  MoreFlags

tool: D257:  ExtFlags

tool: D200:  AtrMoney

tool: D196:  Comm

tool: D224:  Parent

tool: D235:  AtrKey

tool: D254: *unknown*

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");
}
```