user: What is the c source code of the assembly code below?

```asm
<io_printcards>:
  endbr64
  push   %r15
  xor    %eax,%eax
  mov    %r9d,%r15d
  push   %r14
  mov    %r8d,%r14d
  push   %r13
  lea    D0(%rip),%r13
  push   %r12
  mov    %edi,%r12d
  mov    $0xa,%edi
  push   %rbp
  mov    %edx,%ebp
  mov    %r13,%rdx
  push   %rbx
  mov    %esi,%ebx
  xor    %esi,%esi
  sub    $0x18,%rsp
  mov    0x50(%rsp),%r10d
  mov    %ecx,0xc(%rsp)
  mov    %r10d,0x8(%rsp)
  call   <mvprintw@plt>
  lea    D47(%rip),%rdx
  xor    %esi,%esi
  xor    %eax,%eax
  mov    $0xb,%edi
  call   <mvprintw@plt>
  lea    D27(%rip),%rdx
  xor    %esi,%esi
  xor    %eax,%eax
  mov    $0xc,%edi
  call   <mvprintw@plt>
  sub    $0x8,%rsp
  mov    %ebp,%r9d
  mov    %ebx,%r8d
  push   %r15
  lea    D15(%rip),%rdx
  xor    %esi,%esi
  mov    $0xd,%edi
  push   %r14
  mov    0x24(%rsp),%ecx
  xor    %eax,%eax
  push   %rcx
  mov    %r12d,%ecx
  call   <mvprintw@plt>
  mov    0x28(%rsp),%r10d
  add    $0x20,%rsp
  cmp    $0x5,%r10d
  je     L10
  cmp    $0x4,%r10d
  jne    L71
  mov    $0x2a,%esi
  mov    $0x20,%eax
L94:
  mov    $0x20,%r8d
  mov    $0x20,%r9d
  mov    $0x20,%edx
  mov    $0x20,%ecx
  jmp    L67
  nopl   (%rax)
L71:
  cmp    $0x3,%r10d
  jne    L12
  mov    $0x20,%r8d
  mov    $0x20,%r9d
  mov    $0x2a,%edx
  mov    $0x20,%esi
  mov    $0x20,%eax
  mov    $0x20,%ecx
L67:
  sub    $0x8,%rsp
  mov    $0xe,%edi
  push   %rax
  xor    %eax,%eax
  push   %rsi
  xor    %esi,%esi
  push   %rdx
  lea    D36(%rip),%rdx
  call   <mvprintw@plt>
  add    $0x38,%rsp
  mov    %r13,%rdx
  xor    %esi,%esi
  pop    %rbx
  mov    $0xf,%edi
  pop    %rbp
  xor    %eax,%eax
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  jmp    1050 <mvprintw@plt>
  nopl   (%rax)
L10:
  mov    $0x2a,%eax
L22:
  mov    $0x20,%esi
  test   %r10d,%r10d
  jne    L94
  mov    $0x20,%r8d
  mov    $0x20,%r9d
  mov    $0x20,%edx
  mov    $0x2a,%ecx
  jmp    L67
L12:
  cmp    $0x2,%r10d
  jne    L23
  mov    $0x20,%r8d
  mov    $0x2a,%r9d
  mov    $0x20,%edx
  mov    $0x20,%esi
  mov    $0x20,%eax
  mov    $0x20,%ecx
  jmp    L67
L23:
  cmp    $0x1,%r10d
  jne    L44
  mov    $0x2a,%r8d
  mov    $0x20,%r9d
  mov    $0x20,%edx
  mov    $0x20,%esi
  mov    $0x20,%eax
  mov    $0x20,%ecx
  jmp    L67
L44:
  mov    $0x20,%eax
  jmp    L22
```

tool_calls: name: unpack_data
arguments: data_label: D0
data_type: string
name: unpack_data
arguments: data_label: D47
data_type: string
name: unpack_data
arguments: data_label: D27
data_type: string
name: unpack_data
arguments: data_label: D15
data_type: string
name: unpack_data
arguments: data_label: D36
data_type: string

tool: D0: ###########################################################

tool: D47: #  Buy   Soldier     Road    Monopoly   Year of   Victory #

tool: D27: # Card             Building             Plenty     Point  #

tool: D15: #  %2d      %2d        %2d         %2d        %2d        %2d    #

tool: D36: #   %c       %c         %c          %c         %c         %c    #

assistant: ```c
void io_printcards(int c, int s, int r, int m, int p, int v, int pos) {
  int x = 0;
  int y = 10;
  mvprintw(y++, x, "###########################################################");
  mvprintw(y++, x, "#  Buy   Soldier     Road    Monopoly   Year of   Victory #");
  mvprintw(y++, x, "# Card             Building             Plenty     Point  #");
  mvprintw(y++, x, "#  %2d      %2d        %2d         %2d        %2d        %2d    #", c, s, r, m, p, v);
  mvprintw(y++, x, "#   %c       %c         %c          %c         %c         %c    #", (pos == 0) ? '*' : ' ', (pos == 1) ? '*' : ' ', (pos == 2) ? '*' : ' ', (pos == 3) ? '*' : ' ', (pos == 4) ? '*' : ' ', (pos == 5) ? '*' : ' ');
  mvprintw(y++, x, "###########################################################");
}
```