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

```asm
<diagonally>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  mov    %rdi,-0x8(%rbp)
  mov    %esi,-0xc(%rbp)
  mov    %edx,-0x10(%rbp)
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L153
  cmpl   $0x0,-0x10(%rbp)
  jle    L153
  cmpl   $0x0,-0xc(%rbp)
  jle    L153
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x18(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  sub    $0x2,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L153
  cmpl   $0x1,-0x10(%rbp)
  jle    L153
  cmpl   $0x1,-0xc(%rbp)
  jg     L108
L153:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L58
  cmpl   $0x0,-0x10(%rbp)
  jle    L58
  cmpl   $0x0,-0xc(%rbp)
  jle    L58
  mov    -0x10(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  add    $0x1,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L58
  cmpl   $0xa,-0x10(%rbp)
  jg     L58
  cmpl   $0xa,-0xc(%rbp)
  jle    L108
L58:
  mov    -0x10(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  add    $0x1,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L229
  cmpl   $0xa,-0x10(%rbp)
  jg     L229
  cmpl   $0xa,-0xc(%rbp)
  jg     L229
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    0x18(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  add    $0x2,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L229
  cmpl   $0x9,-0x10(%rbp)
  jg     L229
  cmpl   $0x9,-0xc(%rbp)
  jle    L108
L229:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  add    $0x1,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L260
  cmpl   $0x0,-0x10(%rbp)
  jle    L260
  cmpl   $0xa,-0xc(%rbp)
  jg     L260
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0x18(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  add    $0x2,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L260
  cmpl   $0x1,-0x10(%rbp)
  jle    L260
  cmpl   $0x9,-0xc(%rbp)
  jle    L108
L260:
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    -0xc(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  add    $0x1,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L51
  cmpl   $0x0,-0x10(%rbp)
  jle    L51
  cmpl   $0xa,-0xc(%rbp)
  jg     L51
  mov    -0x10(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L51
  cmpl   $0xa,-0x10(%rbp)
  jg     L51
  cmpl   $0x0,-0xc(%rbp)
  jg     L108
L51:
  mov    -0x10(%rbp),%eax
  cltq
  lea    0x1(%rax),%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  mov    %rax,%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  sub    $0x1,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L299
  cmpl   $0xa,-0x10(%rbp)
  jg     L299
  cmpl   $0x0,-0xc(%rbp)
  jle    L299
  mov    -0x10(%rbp),%eax
  movslq %eax,%rdx
  mov    %rdx,%rax
  add    %rax,%rax
  add    %rdx,%rax
  shl    $0x2,%rax
  lea    0x18(%rax),%rdx
  mov    -0x8(%rbp),%rax
  add    %rax,%rdx
  mov    -0xc(%rbp),%eax
  sub    $0x2,%eax
  cltq
  movzbl (%rdx,%rax,1),%eax
  cmp    $0x23,%al
  jne    L299
  cmpl   $0x9,-0x10(%rbp)
  jg     L299
  cmpl   $0x1,-0xc(%rbp)
  jle    L299
L108:
  mov    $0x1,%eax
  jmp    L78
L299:
  mov    $0x0,%eax
L78:
  pop    %rbp
  ret
```

assistant: ```c
int diagonally(char board[12][12], int columnNumber, int rowNumber) {
  if ((((board[rowNumber - 1][columnNumber - 1] == '#') && (rowNumber - 1 >= 0) && (columnNumber - 1 >= 0)) && ((board[rowNumber - 2][columnNumber - 2] == '#') && (rowNumber - 2 >= 0) && (columnNumber - 2 >= 0))) || (((board[rowNumber - 1][columnNumber - 1] == '#') && (rowNumber - 1 >= 0) && (columnNumber - 1 >= 0)) && ((board[rowNumber + 1][columnNumber + 1] == '#') && (rowNumber + 1 < 12) && (columnNumber + 1 < 12))) || (((board[rowNumber + 1][columnNumber + 1] == '#') && (rowNumber + 1 < 12) && (columnNumber + 1 < 12)) && ((board[rowNumber + 2][columnNumber + 2] == '#') && (rowNumber + 2 < 12) && (columnNumber + 2 < 12))) || (((board[rowNumber - 1][columnNumber + 1] == '#') && (rowNumber - 1 >= 0) && (columnNumber + 1 < 12)) && ((board[rowNumber - 2][columnNumber + 2] == '#') && (rowNumber - 2 >= 0) && (columnNumber + 2 < 12))) || (((board[rowNumber - 1][columnNumber + 1] == '#') && (rowNumber - 1 >= 0) && (columnNumber + 1 < 12)) && ((board[rowNumber + 1][columnNumber - 1] == '#') && (rowNumber + 1 < 12) && (columnNumber - 1 >= 0))) ||
      (((board[rowNumber + 1][columnNumber - 1] == '#') && (rowNumber + 1 < 12) && (columnNumber - 1 >= 0)) && ((board[rowNumber + 2][columnNumber - 2] == '#') && (rowNumber + 2 < 12) && (columnNumber - 2 >= 0))))
    return 1;
  else
    return 0;
}
```