user: Translate the below assembly code into C programming language:

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  lea    D7(%rip),%r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0xcb8,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,0xca8(%rsp)
  xor    %eax,%eax
  lea    0x20(%rsp),%rbp
  lea    0xc0(%rsp),%r12
  lea    0xd40(%rsp),%r14
  nopl   0x0(%rax)
L14:
  lea    -0xa0(%r12),%rbx
L65:
  mov    %rbx,%rsi
  mov    %r13,%rdi
  add    $0x8,%rbx
  call   <scanf@plt>
  cmp    %r12,%rbx
  jne    L65
  lea    0xa0(%rbx),%r12
  cmp    %r14,%r12
  jne    L14
  mov    $0xa0,%r13d
  mov    $0x2,%ebx
  xor    %esi,%esi
  xor    %r9d,%r9d
  mov    $0x140,%r12d
  lea    -0x1e0(%rbp),%rax
  mov    $0xffffffffffffff60,%rcx
  mov    $0xfffffffffffffffe,%r14
  mov    %rax,0x18(%rsp)
  mov    $0x3,%r11d
  pxor   %xmm0,%xmm0
  mov    $0x1e0,%r10d
  mov    $0xfffffffffffffffd,%r15
  mov    %rcx,%rbp
  nopw   0x0(%rax,%rax,1)
L165:
  lea    (%r14,%r14,4),%rdi
  mov    0x18(%rsp),%rax
  add    $0x1,%r9
  mov    $0x2,%ecx
  shl    $0x2,%rdi
  mov    $0x3,%edx
  mov    %rdi,0x8(%rsp)
  lea    (%r15,%r15,4),%rdi
  add    %r10,%rax
  shl    $0x2,%rdi
  mov    %rdi,0x10(%rsp)
  jmp    L210
  nopl   (%rax)
L48:
  lea    (%rax,%rsi,1),%rdi
  pxor   %xmm2,%xmm2
  cvtsi2sdq (%rdi,%r13,1),%xmm2
  mulsd  %xmm1,%xmm2
  cmp    $0x16,%rdx
  je     L109
  pxor   %xmm3,%xmm3
  pxor   %xmm4,%xmm4
  cvtsi2sdq 0x8(%rax),%xmm3
  cvtsi2sdq 0x8(%rdi,%r13,1),%xmm4
  mulsd  %xmm1,%xmm3
  mulsd  %xmm1,%xmm4
  cmp    $0x1,%r9
  jne    L103
L234:
  mov    $0x1,%edi
  cmp    $0x13,%rbx
  ja     L144
L157:
  lea    (%rax,%rsi,1),%r8
  pxor   %xmm5,%xmm5
  cvtsi2sdq (%r8,%r12,1),%xmm5
  mulsd  %xmm5,%xmm2
  cmp    $0x13,%rcx
  ja     L196
  pxor   %xmm5,%xmm5
  cvtsi2sdq 0x10(%rax),%xmm5
  mulsd  %xmm5,%xmm3
  pxor   %xmm5,%xmm5
  cvtsi2sdq 0x10(%r8,%r12,1),%xmm5
  mulsd  %xmm5,%xmm4
  test   %r14,%r14
  jns    L113
L196:
  cmp    $0x13,%r11
  ja     L122
L201:
  lea    (%rax,%rsi,1),%r8
  pxor   %xmm5,%xmm5
  cvtsi2sdq (%r8,%r10,1),%xmm5
  mulsd  %xmm5,%xmm2
  cmp    $0x13,%rdx
  ja     L84
  pxor   %xmm5,%xmm5
  cvtsi2sdq 0x18(%rax),%xmm5
  mulsd  %xmm5,%xmm3
  pxor   %xmm5,%xmm5
  cvtsi2sdq 0x18(%r8,%r10,1),%xmm5
  mulsd  %xmm5,%xmm4
  test   %r15,%r15
  jns    L167
L84:
  maxsd  %xmm0,%xmm2
  add    $0x8,%rax
  add    $0x1,%rdx
  add    $0x1,%rcx
  maxsd  %xmm2,%xmm3
  maxsd  %xmm3,%xmm4
  maxsd  %xmm4,%xmm1
  movapd %xmm1,%xmm0
  test   %dil,%dil
  je     L225
L210:
  pxor   %xmm1,%xmm1
  cvtsi2sdq (%rax),%xmm1
  cmp    $0x14,%r9
  jne    L48
  movapd %xmm1,%xmm2
  cmp    $0x16,%rdx
  je     L109
  pxor   %xmm3,%xmm3
  movapd %xmm1,%xmm2
  movapd %xmm1,%xmm4
  cvtsi2sdq 0x8(%rax),%xmm3
  lea    (%rax,%rsi,1),%rdi
  mulsd  %xmm1,%xmm3
L103:
  pxor   %xmm5,%xmm5
  cvtsi2sdq 0x8(%rdi,%rbp,1),%xmm5
  mulsd  %xmm5,%xmm1
  jmp    L234
  nopl   0x0(%rax)
L109:
  movapd %xmm1,%xmm3
  movapd %xmm1,%xmm4
  xor    %edi,%edi
  cmp    $0x13,%rbx
  jbe    L157
L144:
  cmp    $0x13,%rcx
  ja     L196
  pxor   %xmm5,%xmm5
  cvtsi2sdq 0x10(%rax),%xmm5
  mulsd  %xmm5,%xmm3
  test   %r14,%r14
  js     L196
L113:
  mov    0x8(%rsp),%r8
  pxor   %xmm5,%xmm5
  add    %rcx,%r8
  cvtsi2sdq 0x20(%rsp,%r8,8),%xmm5
  mulsd  %xmm5,%xmm1
  cmp    $0x13,%r11
  jbe    L201
L122:
  cmp    $0x13,%rdx
  ja     L84
  pxor   %xmm5,%xmm5
  cvtsi2sdq 0x18(%rax),%xmm5
  mulsd  %xmm5,%xmm3
  test   %r15,%r15
  js     L84
L167:
  mov    0x10(%rsp),%r8
  pxor   %xmm5,%xmm5
  add    %rdx,%r8
  cvtsi2sdq 0x20(%rsp,%r8,8),%xmm5
  mulsd  %xmm5,%xmm1
  jmp    L84
  nopl   0x0(%rax,%rax,1)
L225:
  add    $0x1,%r15
  add    $0x1,%r11
  add    $0x1,%r14
  add    $0x1,%rbx
  sub    $0xa0,%rsi
  add    $0xa0,%r10
  add    $0xa0,%r12
  add    $0xa0,%rbp
  add    $0xa0,%r13
  cmp    $0x14,%r9
  jne    L165
  lea    D8(%rip),%rdi
  call   <printf@plt>
  mov    0xca8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L125
  add    $0xcb8,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L125:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: unpack_data
arguments: data_tag: D7
data_type: string
name: unpack_data
arguments: data_tag: D8
data_type: string

tool: D7: %Ld

tool: D8: %.0lf

assistant: ```c
int main() {
  long long i, j, k;
  double s1, s2, s3, s4, max = 0;
  long long a[20][20];
  for (i = 0; i < 20; i++)
    for (j = 0; j < 20; j++)
      scanf("%Ld", &a[i][j]);
  for (i = 0; i < 20; i++) {
    for (j = 0; j < 20; j++) {
      k = 0;
      s1 = s2 = s3 = s4 = 1;
      while (1) {
        if (i + k < 20)
          s1 *= a[i + k][j];
        if (j + k < 20)
          s2 *= a[i][j + k];
        if (i + k < 20 && j + k < 20)
          s3 *= a[i + k][j + k];
        if (i - k >= 0 && j + k < 20)
          s4 *= a[i - k][j + k];
        k++;
        if (k == 4)
          break;
      }
      if (s1 > max)
        max = s1;
      if (s2 > max)
        max = s2;
      if (s3 > max)
        max = s3;
      if (s4 > max)
        max = s4;
    }
  }
  printf("%.0lf", max);
  return 0;
}
```