user: Converte this assembly snippet into its equivalent C code:

```asm
<compute_point>:
  endbr64
  push   %r15
  movslq %edx,%r9
  push   %r14
  push   %r13
  mov    %rcx,%r13
  imul   $0x1a,%esi,%ecx
  push   %r12
  push   %rbp
  movslq %ecx,%r8
  push   %rbx
  lea    -0x1a(%rcx),%r10d
  mov    %rdi,%rbx
  add    %r9,%r8
  lea    -0x34(%rcx),%esi
  lea    -0x4e(%rcx),%edx
  movslq %r10d,%r10
  lea    0x0(,%r8,4),%r14
  add    %r9,%r10
  movslq %esi,%rsi
  movslq %edx,%rdx
  lea    (%rdi,%r14,1),%rbp
  sub    $0x38,%rsp
  mov    (%rbx,%r10,4),%r12d
  add    %r9,%rsi
  mov    0x0(%rbp),%eax
  add    %r9,%rdx
  lea    0x0(,%rsi,4),%rdi
  lea    0x0(,%r10,4),%r15
  mov    %rdi,(%rsp)
  lea    0x0(,%rdx,4),%rdi
  imul   %eax,%r12d
  mov    %rdi,0x8(%rsp)
  imul   (%rbx,%rsi,4),%r12d
  imul   (%rbx,%rdx,4),%r12d
  test   %r12d,%r12d
  jg     L122
  xor    %r12d,%r12d
L57:
  mov    (%rsp),%rdi
  mov    0x4(%rbx,%r15,1),%r10d
  imul   %eax,%r10d
  imul   0x8(%rbx,%rdi,1),%r10d
  mov    0x8(%rsp),%rdi
  imul   0xc(%rbx,%rdi,1),%r10d
  cmp    %r10d,%r12d
  jl     L144
L80:
  mov    0x4(%rbx,%r14,1),%r10d
  imul   %eax,%r10d
  imul   0x8(%rbx,%r14,1),%r10d
  imul   0xc(%rbx,%r14,1),%r10d
  cmp    %r10d,%r12d
  jl     L65
L82:
  lea    0x1a(%rcx),%edx
  movslq %edx,%rdx
  lea    0x1(%r9,%rdx,1),%rsi
  lea    0x34(%rcx),%edx
  add    $0x4e,%ecx
  mov    (%rbx,%rsi,4),%edi
  movslq %edx,%rdx
  lea    0x0(,%rsi,4),%r11
  movslq %ecx,%rcx
  lea    0x2(%r9,%rdx,1),%rdx
  lea    0x3(%r9,%rcx,1),%rcx
  imul   %eax,%edi
  mov    (%rbx,%rdx,4),%esi
  lea    0x0(,%rdx,4),%r10
  mov    (%rbx,%rcx,4),%edx
  lea    0x0(,%rcx,4),%r9
  imul   %edi,%esi
  imul   %esi,%edx
  cmp    %edx,%r12d
  jl     L61
L151:
  mov    -0x4(%rbx,%r11,1),%ecx
  imul   %eax,%ecx
  imul   -0x8(%rbx,%r10,1),%ecx
  imul   -0xc(%rbx,%r9,1),%ecx
  cmp    %ecx,%r12d
  jl     L126
L17:
  mov    -0x8(%rbx,%r11,1),%ecx
  imul   %eax,%ecx
  imul   -0x10(%rbx,%r10,1),%ecx
  imul   -0x18(%rbx,%r9,1),%ecx
  cmp    %ecx,%r12d
  jl     L58
L134:
  mov    -0x4(%rbx,%r14,1),%ecx
  imul   %eax,%ecx
  imul   -0x8(%rbx,%r14,1),%ecx
  imul   -0xc(%rbx,%r14,1),%ecx
  cmp    %ecx,%r12d
  jl     L13
L133:
  mov    (%rsp),%rdi
  imul   -0x4(%rbx,%r15,1),%eax
  imul   -0x8(%rbx,%rdi,1),%eax
  mov    0x8(%rsp),%rdi
  imul   -0xc(%rbx,%rdi,1),%eax
  mov    %eax,%ebx
  cmp    %eax,%r12d
  jl     L138
L45:
  add    $0x38,%rsp
  mov    %r12d,%eax
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L122:
  mov    $0xa,%edx
  lea    D6(%rip),%rsi
  mov    %r13,%rdi
  mov    %ecx,0x10(%rsp)
  mov    %r9,0x18(%rsp)
  call   <strncpy@plt>
  mov    0x0(%rbp),%eax
  mov    0x10(%rsp),%ecx
  mov    0x18(%rsp),%r9
  jmp    L57
  xchg   %ax,%ax
L138:
  mov    $0xa,%edx
  lea    D56(%rip),%rsi
  mov    %r13,%rdi
  mov    %ebx,%r12d
  call   <strncpy@plt>
  jmp    L45
  nopl   0x0(%rax)
L13:
  mov    $0xa,%edx
  lea    D19(%rip),%rsi
  mov    %r13,%rdi
  mov    %ecx,0x10(%rsp)
  call   <strncpy@plt>
  mov    0x0(%rbp),%eax
  mov    0x10(%rsp),%r12d
  jmp    L133
  nopl   (%rax)
L58:
  mov    $0xa,%edx
  lea    D31(%rip),%rsi
  mov    %r13,%rdi
  mov    %ecx,0x10(%rsp)
  call   <strncpy@plt>
  mov    0x0(%rbp),%eax
  mov    0x10(%rsp),%r12d
  jmp    L134
  nopl   (%rax)
L126:
  mov    $0xa,%edx
  lea    D4(%rip),%rsi
  mov    %r13,%rdi
  mov    %r9,0x20(%rsp)
  mov    %r10,0x18(%rsp)
  mov    %r11,0x10(%rsp)
  mov    %ecx,0x2c(%rsp)
  call   <strncpy@plt>
  mov    0x0(%rbp),%eax
  mov    0x2c(%rsp),%r12d
  mov    0x20(%rsp),%r9
  mov    0x18(%rsp),%r10
  mov    0x10(%rsp),%r11
  jmp    L17
  nopl   0x0(%rax,%rax,1)
L61:
  mov    %edx,0x2c(%rsp)
  lea    D40(%rip),%rsi
  mov    $0xa,%edx
  mov    %r13,%rdi
  mov    %r9,0x20(%rsp)
  mov    %r10,0x18(%rsp)
  mov    %r11,0x10(%rsp)
  call   <strncpy@plt>
  mov    0x0(%rbp),%eax
  mov    0x2c(%rsp),%r12d
  mov    0x20(%rsp),%r9
  mov    0x18(%rsp),%r10
  mov    0x10(%rsp),%r11
  jmp    L151
  nopl   0x0(%rax,%rax,1)
L65:
  mov    $0xa,%edx
  lea    D57(%rip),%rsi
  mov    %r13,%rdi
  mov    %ecx,0x10(%rsp)
  mov    %r9,0x18(%rsp)
  mov    %r10d,0x20(%rsp)
  call   <strncpy@plt>
  mov    0x0(%rbp),%eax
  mov    0x20(%rsp),%r12d
  mov    0x18(%rsp),%r9
  mov    0x10(%rsp),%ecx
  jmp    L82
  nopl   0x0(%rax,%rax,1)
L144:
  mov    $0xa,%edx
  lea    D67(%rip),%rsi
  mov    %r13,%rdi
  mov    %ecx,0x10(%rsp)
  mov    %r9,0x18(%rsp)
  mov    %r10d,0x20(%rsp)
  call   <strncpy@plt>
  mov    0x0(%rbp),%eax
  mov    0x20(%rsp),%r12d
  mov    0x18(%rsp),%r9
  mov    0x10(%rsp),%ecx
  jmp    L80
```

tool_calls: name: disassemble_data
arguments: data_tag: D6
data_type: string
name: disassemble_data
arguments: data_tag: D56
data_type: string
name: disassemble_data
arguments: data_tag: D19
data_type: string
name: disassemble_data
arguments: data_tag: D31
data_type: string
name: disassemble_data
arguments: data_tag: D4
data_type: string
name: disassemble_data
arguments: data_tag: D40
data_type: string
name: disassemble_data
arguments: data_tag: D57
data_type: string
name: disassemble_data
arguments: data_tag: D67
data_type: string

tool: D6: north

tool: D56: northwest

tool: D19: west

tool: D31: southwest

tool: D4: south

tool: D40: southeast

tool: D57: east

tool: D67: northeast

assistant: ```c
int compute_point(int *a, int i, int j, char *type) {
  int n;
  int max = 0;
  n = *(a + (26 * i) + j) * *(a + (26 * (i - 1)) + j) * *(a + (26 * (i - 2)) + j) * *(a + (26 * (i - 3)) + j);
  if (n > max) {
    max = n;
    strncpy(type, "north", 10);
  }
  n = *(a + (26 * i) + j) * *(a + (26 * (i - 1)) + j + 1) * *(a + (26 * (i - 2)) + j + 2) * *(a + (26 * (i - 3)) + j + 3);
  if (n > max) {
    max = n;
    strncpy(type, "northeast", 10);
  }
  n = *(a + (26 * i) + j) * *(a + (26 * i) + j + 1) * *(a + (26 * i) + j + 2) * *(a + (26 * i) + j + 3);
  if (n > max) {
    max = n;
    strncpy(type, "east", 10);
  }
  n = *(a + (26 * i) + j) * *(a + (26 * (i + 1)) + j + 1) * *(a + (26 * (i + 2)) + j + 2) * *(a + (26 * (i + 3)) + j + 3);
  if (n > max) {
    max = n;
    strncpy(type, "southeast", 10);
  }
  n = *(a + (26 * i) + j) * *(a + (26 * (i + 1)) + j) * *(a + (26 * (i + 2)) + j) * *(a + (26 * (i + 3)) + j);
  if (n > max) {
    max = n;
    strncpy(type, "south", 10);
  }
  n = *(a + (26 * i) + j) * *(a + (26 * (i + 1)) + j - 1) * *(a + (26 * (i + 2)) + j - 2) * *(a + (26 * (i + 3)) + j - 3);
  if (n > max) {
    max = n;
    strncpy(type, "southwest", 10);
  }
  n = *(a + (26 * i) + j) * *(a + (26 * i) + j - 1) * *(a + (26 * i) + j - 2) * *(a + (26 * i) + j - 3);
  if (n > max) {
    max = n;
    strncpy(type, "west", 10);
  }
  n = *(a + (26 * i) + j) * *(a + (26 * (i - 1)) + j - 1) * *(a + (26 * (i - 2)) + j - 2) * *(a + (26 * (i - 3)) + j - 3);
  if (n > max) {
    max = n;
    strncpy(type, "northwest", 10);
  }
  return max;
}
```