user: Please show me the C implementation that matches the assembly code listed below:

```asm
<draw_grid>:
  endbr64
  push   %r14
  lea    D38(%rip),%r14
  push   %r13
  mov    %r14,%rdx
  lea    D28(%rip),%r13
  push   %r12
  lea    D2(%rip),%r12
  push   %rbp
  mov    %esi,%ebp
  push   %rbx
  mov    %edi,%ebx
  call   <mvprintw@plt>
  lea    0x1(%rbx),%edi
  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
  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
  mov    %ebp,%esi
  pop    %rbx
  lea    D37(%rip),%rdx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  jmp    1050 <mvprintw@plt>
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D38
datatype: string
name: extract_symbolic_data
arguments: data_label: D28
datatype: string
name: extract_symbolic_data
arguments: data_label: D2
datatype: string
name: extract_symbolic_data
arguments: data_label: D37
datatype: string

tool: D38: #####################################

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

tool: D2: #        |        |        |        #

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