user: 请从给定的汇编指令推导出C源代码:

```asm
<draw_grid>:
  endbr64
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %edi,%ebx
  mov    %esi,%ebp
  lea    D28(%rip),%r14
  mov    %r14,%rdx
  call   <mvprintw@plt>
  lea    0x1(%rbx),%edi
  lea    D22(%rip),%r12
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x2(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x3(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x4(%rbx),%edi
  lea    D2(%rip),%r13
  mov    %r13,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x5(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x6(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x7(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x8(%rbx),%edi
  mov    %r13,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x9(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0xa(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0xb(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0xc(%rbx),%edi
  mov    %r13,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0xd(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0xe(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0xf(%rbx),%edi
  mov    %r12,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x10(%rbx),%edi
  mov    %r14,%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  lea    0x13(%rbx),%edi
  lea    D17(%rip),%rdx
  mov    %ebp,%esi
  call   <mvprintw@plt>
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D28
type: string
name: extract_symbolic_data
arguments: tag: D22
type: string
name: extract_symbolic_data
arguments: tag: D2
type: string
name: extract_symbolic_data
arguments: tag: D17
type: string

tool: D28: #####################################

tool: D22: #        |        |        |        #

tool: D2: #-----------------------------------#

tool: D17: Control: wasd  Exit: q

assistant: ```c
void draw_grid(int y, int x) {
  mvprintw(y++, x, "#####################################");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#-----------------------------------#");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#-----------------------------------#");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#-----------------------------------#");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#        |        |        |        #");
  mvprintw(y++, x, "#####################################");
  mvprintw(y + 2, x, "Control: wasd  Exit: q");
}
```