user: Demonstrate the C code that generates the assembly output below:

```asm
<info>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,%ebp
  mov    %esi,%ebx
  mov    %edx,%r12d
  cmp    $0x6,%edi
  ja     L129
  mov    %edi,%eax
  lea    D204(%rip),%rdx
  movslq (%rdx,%rax,4),%rax
  add    %rdx,%rax
  notrack jmp *%rax
  lea    D145(%rip),%rdx
L232:
  mov    %r12d,%ecx
  lea    D24(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  test   $0x1,%bh
  jne    L290
L313:
  test   $0x2,%bh
  jne    L131
L217:
  test   $0x4,%bh
  jne    L47
L294:
  test   $0x8,%bh
  jne    L398
L155:
  test   $0x10,%bh
  je     L379
  cmp    $0x1,%ebp
  jne    L344
  cmp    $0x2,%r12d
  jne    L344
  lea    D79(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
L379:
  test   $0x20,%bh
  jne    L9
L75:
  test   $0x40,%bh
  jne    L288
L12:
  test   $0x80,%bh
  jne    L123
L385:
  test   $0x10000,%ebx
  jne    L223
L365:
  test   $0x40000,%ebx
  jne    L163
L111:
  test   $0x20000,%ebx
  jne    L301
L354:
  test   $0x80000,%ebx
  jne    L386
L370:
  test   $0x100000,%ebx
  jne    L161
L30:
  test   $0x200000,%ebx
  jne    L189
L207:
  test   $0x400000,%ebx
  jne    L357
L384:
  test   $0x800000,%ebx
  jne    L240
L342:
  lea    D225(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
  lea    D23(%rip),%rdx
  jmp    L232
  lea    D92(%rip),%rdx
  jmp    L232
  lea    D3(%rip),%rdx
  jmp    L232
  lea    D123(%rip),%rdx
  jmp    L232
L129:
  lea    D109(%rip),%rdx
  jmp    L232
  lea    D102(%rip),%rdx
  jmp    L232
L290:
  lea    D88(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L313
L131:
  lea    D228(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L217
L47:
  lea    D176(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L294
L398:
  lea    D249(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L155
L344:
  lea    D47(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L379
L9:
  lea    D168(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L75
L288:
  lea    D214(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L12
L123:
  lea    D186(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L385
L223:
  lea    D5(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L365
L163:
  lea    D40(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L111
L301:
  lea    D245(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L354
L386:
  lea    D144(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L370
L161:
  lea    D251(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L30
L189:
  lea    D226(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L207
L357:
  lea    D211(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L384
L240:
  lea    D248(%rip),%rsi
  mov    $0x1,%edi
  mov    $0x0,%eax
  call   <log_write_raw@plt>
  jmp    L342
```

tool_calls: name: retrieve_data
arguments: data_label: D145
type_guessed: string
name: retrieve_data
arguments: data_label: D24
type_guessed: string
name: retrieve_data
arguments: data_label: D79
type_guessed: string
name: retrieve_data
arguments: data_label: D225
type_guessed: string
name: retrieve_data
arguments: data_label: D23
type_guessed: string
name: retrieve_data
arguments: data_label: D92
type_guessed: string
name: retrieve_data
arguments: data_label: D3
type_guessed: string
name: retrieve_data
arguments: data_label: D123
type_guessed: string
name: retrieve_data
arguments: data_label: D109
type_guessed: string
name: retrieve_data
arguments: data_label: D102
type_guessed: string
name: retrieve_data
arguments: data_label: D88
type_guessed: string
name: retrieve_data
arguments: data_label: D228
type_guessed: string
name: retrieve_data
arguments: data_label: D176
type_guessed: string
name: retrieve_data
arguments: data_label: D249
type_guessed: string
name: retrieve_data
arguments: data_label: D47
type_guessed: string
name: retrieve_data
arguments: data_label: D168
type_guessed: string
name: retrieve_data
arguments: data_label: D214
type_guessed: string
name: retrieve_data
arguments: data_label: D186
type_guessed: string
name: retrieve_data
arguments: data_label: D5
type_guessed: string
name: retrieve_data
arguments: data_label: D40
type_guessed: string
name: retrieve_data
arguments: data_label: D245
type_guessed: string
name: retrieve_data
arguments: data_label: D144
type_guessed: string
name: retrieve_data
arguments: data_label: D251
type_guessed: string
name: retrieve_data
arguments: data_label: D226
type_guessed: string
name: retrieve_data
arguments: data_label: D211
type_guessed: string
name: retrieve_data
arguments: data_label: D248
type_guessed: string

tool: D145: TinyMUX

tool: D24: %s version %d:

tool: D79:  ExtLocks

tool: D225: 


tool: D23: TinyMUSH

tool: D92: TinyMUSE

tool: D3: TinyMUD

tool: D123: TinyMUCK

tool: D109: *unknown*

tool: D102: TinyMUSH-3

tool: D88:  Zone

tool: D228:  Link

tool: D176:  GDBM

tool: D249:  AtrName

tool: D47:  AtrKey

tool: D168:  Parent

tool: D214:  Comm

tool: D186:  AtrMoney

tool: D5:  ExtFlags

tool: D40:  MoreFlags

tool: D245:  Powers

tool: D144:  QuotedStr

tool: D251:  TypedQuotas

tool: D226:  Timestamps

tool: D211:  VisualAttrs

tool: D248:  CreateTime

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