user: 请显示与下面列出的汇编代码相匹配的C语言实现:

```asm
<print_SeatsMap_Special>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x28,%rsp
  mov    %edi,0x10(%rsp)
  mov    %esi,%r15d
  mov    %rdx,%r14
  movslq %esi,%rax
  mov    %rax,0x8(%rsp)
  sub    $0x1,%edi
  mov    $0x0,%eax
  call   <int_to_charc@plt>
  mov    %eax,0x14(%rsp)
  lea    0x1(%rax),%r13d
  lea    D79(%rip),%rdx
  mov    %r13d,%esi
  lea    D37(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  test   %r15d,%r15d
  jle    L44
  mov    $0x0,%ebx
  lea    D33(%rip),%r12
L28:
  mov    %ebx,%esi
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%ebp
  add    $0x1,%ebx
  cmp    %ebx,%r15d
  jne    L28
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D79(%rip),%rdx
  mov    %r13d,%esi
  lea    D37(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    $0x0,%ebx
  lea    D80(%rip),%r12
L96:
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  mov    %ebx,%eax
  add    $0x1,%ebx
  cmp    %eax,%ebp
  jne    L96
L91:
  mov    $0xa,%edi
  call   <putchar@plt>
  cmpl   $0x0,0x10(%rsp)
  jle    L115
  lea    -0x1(%r15),%eax
  mov    %rax,0x18(%rsp)
  lea    0x1(%r14,%rax,1),%rbp
  mov    $0x0,%r13d
  lea    D17(%rip),%r12
  lea    D104(%rip),%r14
  jmp    L110
L10:
  mov    %r12,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
L103:
  add    $0x1,%rbx
  cmp    %rbp,%rbx
  je     L40
L74:
  cmpb   $0x1,(%rbx)
  jne    L10
  mov    %r14,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L103
L40:
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x1,%r13d
  add    0x8(%rsp),%rbp
  cmp    %r13d,0x10(%rsp)
  je     L115
L110:
  mov    %r13d,%edx
  mov    0x14(%rsp),%esi
  lea    D28(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  test   %r15d,%r15d
  jle    L40
  mov    %rbp,%rbx
  sub    0x18(%rsp),%rbx
  sub    $0x1,%rbx
  jmp    L74
L115:
  mov    $0xa,%edi
  call   <putchar@plt>
  add    $0x28,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L44:
  mov    $0xa,%edi
  call   <putchar@plt>
  lea    D79(%rip),%rdx
  mov    %r13d,%esi
  lea    D37(%rip),%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  jmp    L91
```

tool_calls: name: retrieve_data
arguments: data_tag: D79
type: string
name: retrieve_data
arguments: data_tag: D37
type: string
name: retrieve_data
arguments: data_tag: D33
type: string
name: retrieve_data
arguments: data_tag: D80
type: string
name: retrieve_data
arguments: data_tag: D17
type: string
name: retrieve_data
arguments: data_tag: D104
type: string
name: retrieve_data
arguments: data_tag: D28
type: string

tool: 

tool: D37: %*s

tool: D33:   %d 

tool: D80:  ___

tool: D17: ___|

tool: D104: _#_|

tool: D28: %*d |

assistant: ```c
void print_SeatsMap_Special(int rows, int cols, char mat[rows][cols]) {
  int i, j;
  int char_num = int_to_charc(rows - 1);
  printf("%*s", char_num + 1, "");
  for (i = 0; i < cols; i++) {
    printf("  %d ", i);
  }
  printf("\n");
  printf("%*s", char_num + 1, "");
  for (i = 0; i < cols; i++) {
    printf(" ___");
  }
  printf("\n");
  for (i = 0; i < rows; i++) {
    printf("%*d |", char_num, i);
    for (j = 0; j < cols; j++) {
      if (mat[i][j] == 1)
        printf("_#_|");
      else
        printf("___|");
    }
    printf("\n");
  }
  printf("\n");
}
```