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

```asm
<drawPoly4TGEx4_TRI>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  sub    $0x68,%rsp
  mov    %edi,%eax
  mov    %ecx,%r10d
  mov    %r8d,-0x7c(%rbp)
  mov    %r9d,-0x80(%rbp)
  mov    0x10(%rbp),%ebx
  mov    %ebx,-0x84(%rbp)
  mov    0x18(%rbp),%ecx
  mov    %ecx,-0x88(%rbp)
  mov    0x20(%rbp),%r15d
  mov    0x28(%rbp),%r14d
  mov    0x30(%rbp),%r13d
  mov    0x38(%rbp),%r12d
  mov    0x40(%rbp),%ebx
  mov    0x48(%rbp),%r11d
  mov    0x50(%rbp),%r9d
  mov    0x58(%rbp),%r8d
  mov    0x60(%rbp),%edi
  mov    0x68(%rbp),%ecx
  mov    %ax,-0x34(%rbp)
  mov    %esi,%eax
  mov    %ax,-0x38(%rbp)
  mov    %edx,%eax
  mov    %ax,-0x3c(%rbp)
  mov    %r10d,%eax
  mov    %ax,-0x40(%rbp)
  movzwl -0x7c(%rbp),%eax
  mov    %ax,-0x44(%rbp)
  movzwl -0x80(%rbp),%eax
  mov    %ax,-0x48(%rbp)
  movzwl -0x84(%rbp),%eax
  mov    %ax,-0x4c(%rbp)
  movzwl -0x88(%rbp),%eax
  mov    %ax,-0x50(%rbp)
  mov    %r15d,%eax
  mov    %ax,-0x54(%rbp)
  mov    %r14d,%eax
  mov    %ax,-0x58(%rbp)
  mov    %r13d,%eax
  mov    %ax,-0x5c(%rbp)
  mov    %r12d,%eax
  mov    %ax,-0x60(%rbp)
  mov    %ebx,%eax
  mov    %ax,-0x64(%rbp)
  mov    %r11d,%eax
  mov    %ax,-0x68(%rbp)
  mov    %r9d,%eax
  mov    %ax,-0x6c(%rbp)
  mov    %r8d,%eax
  mov    %ax,-0x70(%rbp)
  mov    %edi,%eax
  mov    %ax,-0x74(%rbp)
  mov    %ecx,%eax
  mov    %ax,-0x78(%rbp)
  movswl -0x78(%rbp),%r14d
  movswl -0x74(%rbp),%r13d
  movswl -0x70(%rbp),%r12d
  movswl -0x6c(%rbp),%ebx
  movswl -0x68(%rbp),%r11d
  movswl -0x64(%rbp),%r10d
  movswl -0x60(%rbp),%r9d
  movswl -0x5c(%rbp),%r8d
  movswl -0x50(%rbp),%eax
  mov    %eax,-0x7c(%rbp)
  movswl -0x4c(%rbp),%r15d
  movswl -0x48(%rbp),%ecx
  movswl -0x44(%rbp),%edx
  movswl -0x40(%rbp),%esi
  movswl -0x3c(%rbp),%edi
  sub    $0x8,%rsp
  mov    0x80(%rbp),%eax
  push   %rax
  mov    0x88(%rbp),%eax
  push   %rax
  mov    0x78(%rbp),%eax
  push   %rax
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  push   %r11
  push   %r10
  push   %r9
  push   %r8
  mov    -0x7c(%rbp),%r9d
  mov    %r15d,%r8d
  call   <drawPoly3TGEx4@plt>
  add    $0x60,%rsp
  movswl -0x78(%rbp),%r14d
  movswl -0x74(%rbp),%r13d
  movswl -0x70(%rbp),%r12d
  movswl -0x6c(%rbp),%ebx
  movswl -0x60(%rbp),%r11d
  movswl -0x5c(%rbp),%r10d
  movswl -0x58(%rbp),%r9d
  movswl -0x54(%rbp),%r8d
  movswl -0x50(%rbp),%eax
  mov    %eax,-0x7c(%rbp)
  movswl -0x4c(%rbp),%r15d
  movswl -0x40(%rbp),%ecx
  movswl -0x3c(%rbp),%edx
  movswl -0x38(%rbp),%esi
  movswl -0x34(%rbp),%edi
  sub    $0x8,%rsp
  mov    0x80(%rbp),%eax
  push   %rax
  mov    0x78(%rbp),%eax
  push   %rax
  mov    0x70(%rbp),%eax
  push   %rax
  push   %r14
  push   %r13
  push   %r12
  push   %rbx
  push   %r11
  push   %r10
  push   %r9
  push   %r8
  mov    -0x7c(%rbp),%r9d
  mov    %r15d,%r8d
  call   <drawPoly3TGEx4@plt>
  add    $0x60,%rsp
  nop
  lea    -0x28(%rbp),%rsp
  pop    %rbx
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  pop    %rbp
  ret
```

assistant: ```c
void drawPoly4TGEx4_TRI(short x1, short y1, short x2, short y2, short x3, short y3, short x4, short y4, short tx1, short ty1, short tx2, short ty2, short tx3, short ty3, short tx4, short ty4, short clX, short clY, int32_t col1, int32_t col2, int32_t col3, int32_t col4) {
  drawPoly3TGEx4(x2, y2, x3, y3, x4, y4, tx2, ty2, tx3, ty3, tx4, ty4, clX, clY, col2, col4, col3);
  drawPoly3TGEx4(x1, y1, x2, y2, x4, y4, tx1, ty1, tx2, ty2, tx4, ty4, clX, clY, col1, col2, col3);
}
```