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

```asm
<main>:
  endbr64
  push   %r14
  lea    D48(%rip),%rdi
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x10,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0x8(%rsp)
  xor    %eax,%eax
  lea    0x4(%rsp),%rsi
  call   <scanf@plt>
  mov    0x4(%rsp),%eax
  xor    %esi,%esi
  lea    -0x1(%rax),%ebp
  cmp    $0x2,%eax
  jle    L165
  lea    -0x2(%rax),%esi
  cmp    $0x3,%eax
  je     L165
  lea    -0x3(%rax),%edi
  sub    $0x4,%eax
  cmp    $0x5,%eax
  jbe    L230
  mov    %edi,%edx
  movdqa D27(%rip),%xmm2
  xor    %eax,%eax
  pxor   %xmm0,%xmm0
  movdqa D42(%rip),%xmm4
  movdqa D43(%rip),%xmm3
  shr    $0x2,%edx
  nopl   0x0(%rax)
L58:
  movdqa %xmm2,%xmm1
  add    $0x1,%eax
  paddd  %xmm4,%xmm2
  paddd  %xmm3,%xmm1
  paddd  %xmm1,%xmm0
  cmp    %edx,%eax
  jne    L58
  movdqa %xmm0,%xmm1
  mov    %edi,%r8d
  psrldq $0x8,%xmm1
  and    $0xfffffffc,%r8d
  paddd  %xmm1,%xmm0
  lea    0x1(%r8),%edx
  movdqa %xmm0,%xmm1
  lea    0x1(%r8,%r8,1),%ecx
  psrldq $0x4,%xmm1
  paddd  %xmm1,%xmm0
  movd   %xmm0,%eax
  add    $0x1,%eax
  cmp    %edi,%r8d
  je     L152
L211:
  lea    0x1(%rdx),%edi
  lea    0x2(%rax,%rcx,1),%eax
  cmp    %esi,%edi
  jge    L152
  lea    0x2(%rdx),%edi
  lea    0x4(%rax,%rcx,1),%eax
  cmp    %edi,%esi
  jle    L152
  lea    0x3(%rdx),%edi
  lea    0x6(%rax,%rcx,1),%eax
  cmp    %edi,%esi
  jle    L152
  lea    0x4(%rdx),%edi
  lea    0x8(%rax,%rcx,1),%eax
  cmp    %edi,%esi
  jle    L152
  add    $0x5,%edx
  lea    0xa(%rax,%rcx,1),%eax
  cmp    %edx,%esi
  jle    L152
  lea    0xc(%rax,%rcx,1),%eax
L152:
  mov    %eax,%esi
L165:
  lea    D49(%rip),%rdi
  xor    %eax,%eax
  xor    %r13d,%r13d
  xor    %r14d,%r14d
  call   <printf@plt>
  mov    0x4(%rsp),%eax
  mov    $0x1,%r12d
  test   %eax,%eax
  jle    L161
  nopl   0x0(%rax)
L153:
  xor    %ebx,%ebx
  test   %ebp,%ebp
  jle    L93
  xchg   %ax,%ax
L120:
  mov    $0x20,%edi
  add    $0x1,%ebx
  call   <putchar@plt>
  cmp    %ebp,%ebx
  jne    L120
L93:
  xor    %ebx,%ebx
  jmp    L4
  nopl   (%rax)
L138:
  mov    0x4(%rsp),%eax
  sub    $0x1,%eax
  cmp    %r14d,%eax
  je     L17
  mov    $0x23,%edi
  add    $0x1,%ebx
  call   <putchar@plt>
  cmp    %r12d,%ebx
  je     L205
L4:
  test   %ebx,%ebx
  je     L17
  cmp    %r13d,%ebx
  jne    L138
L17:
  mov    $0x2a,%edi
  add    $0x1,%ebx
  call   <putchar@plt>
  cmp    %r12d,%ebx
  jne    L4
L205:
  sub    $0x1,%ebp
  add    $0x2,%r12d
  add    $0x1,%r14d
  cmp    0x4(%rsp),%r14d
  jl     L109
L161:
  mov    0x8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L223
  add    $0x10,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  ret
  nopw   0x0(%rax,%rax,1)
L109:
  mov    $0xa,%edi
  add    $0x2,%r13d
  call   <putchar@plt>
  cmp    0x4(%rsp),%r14d
  jl     L153
  jmp    L161
L230:
  mov    $0x1,%eax
  mov    $0x1,%ecx
  mov    $0x1,%edx
  jmp    L211
L223:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: parse_data
arguments: label: D48
type_guessed: string
name: parse_data
arguments: label: D27
type_guessed: byte[16]
name: parse_data
arguments: label: D42
type_guessed: byte[16]
name: parse_data
arguments: label: D43
type_guessed: byte[16]
name: parse_data
arguments: label: D49
type_guessed: string

tool: D48: %d

tool: {"D27": [0x01,0x00,0x00,0x00,0x03,0x00,0x00,0x00,0x05,0x00,0x00,0x00,0x07,0x00,0x00,0x00]}

tool: {"D42": [0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00]}

tool: {"D43": [0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x02,0x00,0x00,0x00]}

tool: D49: %d


assistant: ```c
int main() {
  int t, r = 0, u, m, p = 1, d = 0;
  scanf("%d", &t);
  m = t - 1;
  if (t > 2) {
    u = 1;
    d = 1;
    for (r = 1; r < t - 2; r++) {
      u += 2;
      d += u;
    }
  }
  printf("%d\n", d);
  for (r = 0; r < t; r++) {
    for (u = 0; u < m; u++) {
      printf(" ");
    }
    for (u = 0; u < p; u++) {
      if (u == 0 || u == p - 1 || r == t - 1) {
        printf("*");
      } else if (r != t - 1) {
        printf("#");
      }
    }
    m--;
    p += 2;
    if (r + 1 < t)
      printf("\n");
  }
  return 0;
}
```