user: 下面的汇编指令对应的C源代码是什么：

```asm
<pregame>:
  endbr64
  push   %r13
  lea    D25(%rip),%r13
  push   %r12
  mov    %esi,%r12d
  push   %rbp
  mov    %edi,%ebp
  add    $0x1,%edi
  push   %rbx
  lea    D20(%rip),%rbx
  sub    $0x8,%rsp
  call   <itoa@plt>
  lea    D34(%rip),%rdi
  mov    %rax,%rsi
  call   <cat@plt>
  lea    D16(%rip),%rsi
  mov    %rax,%rdi
  call   <cat@plt>
  mov    %rax,%rdi
  call   <map_setmessage@plt>
  mov    %ebp,%edi
  call   <data_isai@plt>
  test   %rax,%rax
  jne    L118
  nop
L11:
  mov    %ebp,%edi
  call   <data_refresh@plt>
  xor    %edi,%edi
  call   <io_printmap@plt>
  xor    %eax,%eax
  call   <io_getkey@plt>
  cmp    $0x75,%eax
  jg     L132
  cmp    $0x60,%eax
  jle    L152
  lea    -0x61(%rax),%edi
  cmp    $0x14,%edi
  ja     L132
  movslq (%rbx,%rdi,4),%rax
  add    %rbx,%rax
  notrack jmp *%rax
  nopl   (%rax)
L84:
  cmp    $0x4,%eax
  je     L143
L132:
  mov    %r13,%rdi
  call   <map_setmessage@plt>
  jmp    L11
  nopw   0x0(%rax,%rax,1)
  mov    $0x1,%edi
  call   <pass_between_humans@plt>
  jmp    L11
  nopl   0x0(%rax)
  xor    %edi,%edi
  call   <quit@plt>
  jmp    L11
  nopl   0x0(%rax)
  xor    %eax,%eax
  call   <io_printhelp@plt>
  xor    %eax,%eax
  call   <io_getkey@plt>
  jmp    L11
L143:
  xor    %eax,%eax
  call   <marker_show@plt>
  mov    $0x1,%esi
  mov    %ebp,%edi
  call   <build_routine@plt>
  test   %eax,%eax
  je     L11
  mov    $0x1,%esi
  mov    %ebp,%edi
  call   <road_routine@plt>
  jmp    L130
  nopl   0x0(%rax)
  mov    %ebp,%edi
  call   <ai_pregame@plt>
L130:
  test   %r12d,%r12d
  jne    L119
L109:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  ret
  nopw   0x0(%rax,%rax,1)
L152:
  cmp    $0x3,%eax
  jg     L84
  test   %eax,%eax
  js     L132
  mov    %eax,%edi
  call   <marker_move@plt>
  jmp    L11
  nopl   (%rax)
L118:
  mov    %ebp,%edi
  call   <ai_pregame@plt>
  mov    %ebp,%edi
  call   <data_refresh@plt>
  xor    %edi,%edi
  call   <io_printmap@plt>
  xor    %eax,%eax
  call   <data_sleep@plt>
  test   %r12d,%r12d
  je     L109
L119:
  xor    %eax,%eax
  call   <marker_getposition@plt>
  add    $0x8,%rsp
  mov    %ebp,%edi
  pop    %rbx
  mov    %eax,%esi
  pop    %rbp
  pop    %r12
  pop    %r13
  jmp    1210 <data_pregameres@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_tag: D25
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D34
type_guessed: string
name: extract_symbolic_data
arguments: data_tag: D16
type_guessed: string

tool: D25: Press 'b' to build

tool: D34: Player 

tool: D16:  pregame, please build a settlement.

assistant: ```c
void pregame(int player, int res) {
  int c;
  int go = 1;
  map_setmessage(cat(cat("Player ", itoa(player + 1)), " pregame, please build a settlement."));
  if (data_isai(player)) {
    ai_pregame(player);
    data_refresh(player);
    io_printmap(0);
    data_sleep();
    go = 0;
  }
  while (go) {
    data_refresh(player);
    io_printmap(0);
    switch (c = io_getkey()) {
    case 0:
    case 1:
    case 2:
    case 3:
      marker_move(c);
      break;
    case 4:
    case 'b':
      marker_show();
      if (!build_routine(player, 1))
        break;
      road_routine(player, 1);
      go = 0;
      break;
    case 'h':
      io_printhelp();
      io_getkey();
      break;
    case 'q':
      quit(0);
      break;
    case 'a':
      ai_pregame(player);
      go = 0;
      break;
    case 'u':
      pass_between_humans(1);
      break;
    default:
      map_setmessage("Press 'b' to build");
      break;
    }
  }
  if (res)
    data_pregameres(player, marker_getposition());
}
```