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

```asm
<printBigTriangleUp>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x20,%rsp
  mov    %rdi,-0x18(%rbp)
  mov    %esi,-0x1c(%rbp)
  movl   $0x4,-0x4(%rbp)
  mov    -0x1c(%rbp),%eax
  sub    $0x1,%eax
  mov    %eax,-0xc(%rbp)
  jmp    L79
L46:
  movl   $0x0,-0x8(%rbp)
  jmp    L51
L39:
  mov    -0xc(%rbp),%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x8(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <prettyprint@plt>
  addl   $0x1,-0x8(%rbp)
L51:
  mov    -0x1c(%rbp),%eax
  sub    -0xc(%rbp),%eax
  cmp    %eax,-0x8(%rbp)
  jl     L39
  lea    D39(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  subl   $0x1,-0xc(%rbp)
L79:
  mov    -0x1c(%rbp),%eax
  sub    -0x4(%rbp),%eax
  cmp    %eax,-0xc(%rbp)
  jge    L46
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x1c(%rbp),%eax
  sub    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <prettyprint@plt>
  movl   $0x0,-0xc(%rbp)
  jmp    L83
L21:
  mov    $0x0,%eax
  call   <printPoints@plt>
  addl   $0x1,-0xc(%rbp)
L83:
  mov    -0x4(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0xc(%rbp)
  jl     L21
  mov    -0x4(%rbp),%eax
  lea    0x1(%rax),%edx
  mov    -0x1c(%rbp),%eax
  sub    %edx,%eax
  cltq
  lea    0x0(,%rax,8),%rdx
  mov    -0x18(%rbp),%rax
  add    %rdx,%rax
  mov    (%rax),%rdx
  mov    -0x4(%rbp),%eax
  cltq
  shl    $0x3,%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <prettyprint@plt>
  lea    D39(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  movl   $0x0,-0xc(%rbp)
  jmp    L78
L55:
  mov    $0x0,%eax
  call   <printPoints@plt>
  addl   $0x1,-0xc(%rbp)
L78:
  mov    -0x4(%rbp),%eax
  add    $0x1,%eax
  cmp    %eax,-0xc(%rbp)
  jle    L55
  lea    D39(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <prettyprint@plt>
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rax
  add    $0x8,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <prettyprint@plt>
  movl   $0x0,-0xc(%rbp)
  jmp    L57
L71:
  mov    $0x0,%eax
  call   <printPoints@plt>
  addl   $0x1,-0xc(%rbp)
L57:
  mov    -0x4(%rbp),%eax
  sub    $0x1,%eax
  cmp    %eax,-0xc(%rbp)
  jl     L71
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  sub    $0x10,%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <prettyprint@plt>
  mov    -0x18(%rbp),%rax
  mov    (%rax),%rdx
  mov    -0x1c(%rbp),%eax
  cltq
  shl    $0x3,%rax
  sub    $0x8,%rax
  add    %rdx,%rax
  mov    (%rax),%rax
  movq   %rax,%xmm0
  call   <prettyprint@plt>
  lea    D39(%rip),%rax
  mov    %rax,%rdi
  call   <printf@plt>
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: data_tag: D39
type: string

tool: D39: 


assistant: ```c
void printBigTriangleUp(double **data, int baseSize) {
  int i, j;
  int roundSize = 4;
  for (i = baseSize - 1; i >= baseSize - roundSize; i--) {
    for (j = 0; j < baseSize - i; j++) {
      prettyprint(data[i][j]);
    }
    printf("\n");
  }
  prettyprint(data[baseSize - (roundSize + 1)][0]);
  for (i = 0; i < roundSize - 1; i++) {
    printPoints();
  }
  prettyprint(data[baseSize - (roundSize + 1)][roundSize]);
  printf("\n");
  for (i = 0; i <= roundSize + 1; i++) {
    printPoints();
  }
  printf("\n");
  prettyprint(data[0][0]);
  prettyprint(data[0][1]);
  for (i = 0; i < roundSize - 1; i++) {
    printPoints();
  }
  prettyprint(data[0][baseSize - 2]);
  prettyprint(data[0][baseSize - 1]);
  printf("\n");
}
```