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

```asm
<render_line_2D_WALA>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0x48,%rsp
  mov    %rdi,-0xa8(%rbp)
  mov    %esi,-0xac(%rbp)
  mov    %edx,-0xb0(%rbp)
  mov    %ecx,-0xb4(%rbp)
  mov    %r8d,-0xb8(%rbp)
  mov    %r9d,-0xbc(%rbp)
  movss  %xmm0,-0xc0(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdl -0xbc(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb4(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x50(%rbp)
  pxor   %xmm0,%xmm0
  cvtsi2sdl 0x10(%rbp),%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb8(%rbp),%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x48(%rbp)
  movsd  -0x50(%rbp),%xmm0
  movq   D143(%rip),%xmm1
  andpd  %xmm1,%xmm0
  movsd  -0x48(%rbp),%xmm1
  movq   D143(%rip),%xmm2
  andpd  %xmm2,%xmm1
  comisd %xmm1,%xmm0
  jbe    L33
  mov    -0xbc(%rbp),%eax
  cmp    -0xb4(%rbp),%eax
  jge    L57
  mov    -0xb4(%rbp),%eax
  mov    %eax,-0x78(%rbp)
  mov    -0xbc(%rbp),%eax
  mov    %eax,-0xb4(%rbp)
  mov    -0x78(%rbp),%eax
  mov    %eax,-0xbc(%rbp)
  mov    -0xb8(%rbp),%eax
  mov    %eax,-0x74(%rbp)
  mov    0x10(%rbp),%eax
  mov    %eax,-0xb8(%rbp)
  mov    -0x74(%rbp),%eax
  mov    %eax,0x10(%rbp)
L57:
  movsd  -0x48(%rbp),%xmm0
  divsd  -0x50(%rbp),%xmm0
  movsd  %xmm0,-0x20(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb4(%rbp),%xmm1
  movsd  D140(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb8(%rbp),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xb4(%rbp),%xmm2
  movsd  -0x18(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb4(%rbp),%xmm1
  movsd  D140(%rip),%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xb4(%rbp),%xmm2
  movsd  D140(%rip),%xmm1
  addsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D154(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x70(%rbp)
  movsd  -0x10(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x6c(%rbp)
  mov    -0x6c(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x70(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x10(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm3,%xmm3
  cvtsi2sd %eax,%xmm3
  movsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  D154(%rip),%xmm0
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x8(%rbp),%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x6c(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x70(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x6c(%rbp),%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x70(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x10(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  movsd  -0x10(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x8(%rbp),%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x6c(%rbp),%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x70(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  movsd  -0x10(%rbp),%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xbc(%rbp),%xmm1
  movsd  D140(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x18(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl 0x10(%rbp),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xbc(%rbp),%xmm2
  movsd  -0x18(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  -0x20(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x10(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xbc(%rbp),%xmm1
  movsd  D140(%rip),%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xbc(%rbp),%xmm2
  movsd  D140(%rip),%xmm1
  addsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rbp)
  movsd  -0x18(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x68(%rbp)
  movsd  -0x10(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x64(%rbp)
  mov    -0x64(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x10(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm3,%xmm3
  cvtsi2sd %eax,%xmm3
  movsd  -0x10(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  D154(%rip),%xmm0
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x8(%rbp),%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x64(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x10(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  movsd  -0x10(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x8(%rbp),%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x64(%rbp),%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x68(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x70(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x98(%rbp)
  jmp    L69
L26:
  movsd  -0x60(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x60(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  movsd  -0x60(%rbp),%xmm0
  movapd %xmm0,%xmm3
  subsd  %xmm2,%xmm3
  movsd  D154(%rip),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x60(%rbp),%xmm1
  cvttsd2si %xmm1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  movsd  -0x60(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x60(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm3,%xmm3
  cvtsi2sd %eax,%xmm3
  movsd  -0x60(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  movsd  -0x60(%rbp),%xmm1
  cvttsd2si %xmm1,%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x98(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  movsd  -0x60(%rbp),%xmm0
  addsd  -0x20(%rbp),%xmm0
  movsd  %xmm0,-0x60(%rbp)
  addl   $0x1,-0x98(%rbp)
L69:
  mov    -0x68(%rbp),%eax
  cmp    -0x98(%rbp),%eax
  jg     L26
  jmp    L28
L33:
  mov    0x10(%rbp),%eax
  cmp    -0xb8(%rbp),%eax
  jge    L11
  mov    -0xb4(%rbp),%eax
  mov    %eax,-0x90(%rbp)
  mov    -0xbc(%rbp),%eax
  mov    %eax,-0xb4(%rbp)
  mov    -0x90(%rbp),%eax
  mov    %eax,-0xbc(%rbp)
  mov    -0xb8(%rbp),%eax
  mov    %eax,-0x8c(%rbp)
  mov    0x10(%rbp),%eax
  mov    %eax,-0xb8(%rbp)
  mov    -0x8c(%rbp),%eax
  mov    %eax,0x10(%rbp)
L11:
  movsd  -0x50(%rbp),%xmm0
  divsd  -0x48(%rbp),%xmm0
  movsd  %xmm0,-0x40(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb8(%rbp),%xmm1
  movsd  D140(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb4(%rbp),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xb8(%rbp),%xmm2
  movsd  -0x38(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  -0x40(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xb8(%rbp),%xmm1
  movsd  D140(%rip),%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl -0xb8(%rbp),%xmm2
  movsd  D140(%rip),%xmm1
  addsd  %xmm1,%xmm2
  movapd %xmm0,%xmm1
  subsd  %xmm2,%xmm1
  movsd  D154(%rip),%xmm0
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x38(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x88(%rbp)
  movsd  -0x30(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x84(%rbp)
  mov    -0x88(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x84(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x30(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm3,%xmm3
  cvtsi2sd %eax,%xmm3
  movsd  -0x30(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  D154(%rip),%xmm0
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x28(%rbp),%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x88(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x84(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x88(%rbp),%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x84(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x30(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  movsd  -0x30(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x28(%rbp),%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x88(%rbp),%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x84(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  movsd  -0x30(%rbp),%xmm0
  addsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl 0x10(%rbp),%xmm1
  movsd  D140(%rip),%xmm0
  addsd  %xmm1,%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x38(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl -0xbc(%rbp),%xmm1
  pxor   %xmm2,%xmm2
  cvtsi2sdl 0x10(%rbp),%xmm2
  movsd  -0x38(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  mulsd  -0x40(%rbp),%xmm0
  addsd  %xmm1,%xmm0
  movsd  %xmm0,-0x30(%rbp)
  pxor   %xmm1,%xmm1
  cvtsi2sdl 0x10(%rbp),%xmm1
  movsd  D140(%rip),%xmm0
  addsd  %xmm1,%xmm0
  pxor   %xmm2,%xmm2
  cvtsi2sdl 0x10(%rbp),%xmm2
  movsd  D140(%rip),%xmm1
  addsd  %xmm2,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0x28(%rbp)
  movsd  -0x38(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x80(%rbp)
  movsd  -0x30(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  mov    %eax,-0x7c(%rbp)
  mov    -0x80(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x7c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x30(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm3,%xmm3
  cvtsi2sd %eax,%xmm3
  movsd  -0x30(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  movsd  D154(%rip),%xmm0
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x28(%rbp),%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x80(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x7c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x80(%rbp),%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x7c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x30(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  movsd  -0x30(%rbp),%xmm0
  subsd  %xmm2,%xmm0
  movapd %xmm0,%xmm2
  mulsd  -0x28(%rbp),%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x80(%rbp),%eax
  add    $0x1,%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  mov    -0x7c(%rbp),%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x88(%rbp),%eax
  add    $0x1,%eax
  mov    %eax,-0x94(%rbp)
  jmp    L32
L73:
  mov    -0x94(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  movsd  -0x58(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm2,%xmm2
  cvtsi2sd %eax,%xmm2
  movsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm3
  subsd  %xmm2,%xmm3
  movsd  D154(%rip),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  movsd  -0x58(%rbp),%xmm1
  cvttsd2si %xmm1,%eax
  add    %edx,%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  mov    -0x94(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  movsd  -0x58(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  add    %edx,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  movss  (%rax),%xmm0
  pxor   %xmm1,%xmm1
  cvtss2sd %xmm0,%xmm1
  movsd  -0x58(%rbp),%xmm0
  cvttsd2si %xmm0,%eax
  pxor   %xmm3,%xmm3
  cvtsi2sd %eax,%xmm3
  movsd  -0x58(%rbp),%xmm0
  movapd %xmm0,%xmm2
  subsd  %xmm3,%xmm2
  pxor   %xmm0,%xmm0
  cvtss2sd -0xc0(%rbp),%xmm0
  mulsd  %xmm2,%xmm0
  addsd  %xmm1,%xmm0
  mov    -0x94(%rbp),%eax
  imul   -0xb0(%rbp),%eax
  mov    %eax,%edx
  movsd  -0x58(%rbp),%xmm1
  cvttsd2si %xmm1,%eax
  add    %edx,%eax
  cltq
  add    $0x1,%rax
  lea    0x0(,%rax,4),%rdx
  mov    -0xa8(%rbp),%rax
  add    %rdx,%rax
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,(%rax)
  movsd  -0x58(%rbp),%xmm0
  addsd  -0x40(%rbp),%xmm0
  movsd  %xmm0,-0x58(%rbp)
  addl   $0x1,-0x94(%rbp)
L32:
  mov    -0x80(%rbp),%eax
  cmp    -0x94(%rbp),%eax
  jg     L73
L28:
  nop
  leave
  ret
```

tool_calls: name: parse_data
arguments: tag: D143
type_guessed: qword
name: parse_data
arguments: tag: D140
type_guessed: f64
name: parse_data
arguments: tag: D154
type_guessed: f64

tool: D143: 9223372036854775807

tool: D140: 0.5

tool: D154: 1

assistant: ```c
void render_line_2D_WALA(float *mat, int wy, int wx, int x1, int y1, int x2, int y2, float val) {
  double dx = (double)x2 - (double)x1;
  double dy = (double)y2 - (double)y1;
  if (fabs(dx) > fabs(dy)) {
    if (x2 < x1) {
      do {
        __typeof__(x1) tmp;
        tmp = x1;
        x1 = x2;
        x2 = tmp;
      } while (0);
      do {
        __typeof__(y1) tmp;
        tmp = y1;
        y1 = y2;
        y2 = tmp;
      } while (0);
    }
    double gradient = dy / dx;
    double xend = ((int)(((double)(x1)) + 0.5));
    double yend = y1 + gradient * (xend - x1);
    double xgap = (1.0 - ((double)(x1 + 0.5) - (double)((int)x1 + 0.5)));
    int xpxl1 = xend;
    int ypxl1 = ((int)yend);
    mat[ypxl1 * wx + xpxl1] += ((1.0 - ((double)(yend) - (double)((int)yend))) * xgap * val);
    mat[(ypxl1 + 1) * wx + xpxl1] += (((double)(yend) - (double)((int)yend)) * xgap * val);
    double intery = yend + gradient;
    xend = ((int)(((double)(x2)) + 0.5));
    yend = y2 + gradient * (xend - x2);
    xgap = ((double)(x2 + 0.5) - (double)((int)x2 + 0.5));
    int xpxl2 = xend;
    int ypxl2 = ((int)yend);
    mat[ypxl2 * wx + xpxl2] += ((1.0 - ((double)(yend) - (double)((int)yend))) * xgap * val);
    mat[(ypxl2 + 1) * wx + xpxl2] += (((double)(yend) - (double)((int)yend)) * xgap * val);
    int x;
    for (x = xpxl1 + 1; x <= (xpxl2 - 1); x++) {
      mat[((int)intery) * wx + x] += ((1.0 - ((double)(intery) - (double)((int)intery))) * val);
      mat[(((int)intery) + 1) * wx + x] += (((double)(intery) - (double)((int)intery)) * val);
      intery += gradient;
    }
  } else {
    if (y2 < y1) {
      do {
        __typeof__(x1) tmp;
        tmp = x1;
        x1 = x2;
        x2 = tmp;
      } while (0);
      do {
        __typeof__(y1) tmp;
        tmp = y1;
        y1 = y2;
        y2 = tmp;
      } while (0);
    }
    double gradient = dx / dy;
    double yend = ((int)(((double)(y1)) + 0.5));
    double xend = x1 + gradient * (yend - y1);
    double ygap = (1.0 - ((double)(y1 + 0.5) - (double)((int)y1 + 0.5)));
    int ypxl1 = yend;
    int xpxl1 = ((int)xend);
    mat[ypxl1 * wx + xpxl1] += ((1.0 - ((double)(xend) - (double)((int)xend))) * ygap * val);
    mat[(ypxl1 + 1) * wx + xpxl1] += (((double)(xend) - (double)((int)xend)) * ygap * val);
    double interx = xend + gradient;
    yend = ((int)(((double)(y2)) + 0.5));
    xend = x2 + gradient * (yend - y2);
    ygap = ((double)(y2 + 0.5) - (double)((int)y2 + 0.5));
    int ypxl2 = yend;
    int xpxl2 = ((int)xend);
    mat[ypxl2 * wx + xpxl2] += ((1.0 - ((double)(xend) - (double)((int)xend))) * ygap * val);
    mat[(ypxl2 + 1) * wx + xpxl2] += (((double)(xend) - (double)((int)xend)) * ygap * val);
    int y;
    for (y = ypxl1 + 1; y <= (ypxl2 - 1); y++) {
      mat[y * wx + ((int)interx)] += ((1.0 - ((double)(interx) - (double)((int)interx))) * val);
      mat[y * wx + ((int)interx) + 1] += (((double)(interx) - (double)((int)interx)) * val);
      interx += gradient;
    }
  }
}
```