user: 请将这段汇编代码片段转换成等效的C代码：

```asm
<render_lines_2D_WLA>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rcx,-0x28(%rsp)
  mov    %r9,-0x20(%rsp)
  test   %r8d,%r8d
  jle    L378
  mov    %rdi,%r10
  mov    %edx,%r12d
  mov    %r8d,%eax
  mov    %rax,-0x18(%rsp)
  movq   $0x0,-0x48(%rsp)
  movss  D4(%rip),%xmm7
  movaps %xmm7,%xmm6
  movaps %xmm7,%xmm1
  movaps %xmm7,%xmm5
  movaps %xmm7,%xmm4
  jmp    L276
L750:
  mov    %edx,%esi
  sub    %eax,%esi
  movl   $0xffffffff,-0x4c(%rsp)
  jmp    L654
L814:
  mov    %ecx,%r8d
  sub    %r15d,%r8d
  movl   $0xffffffff,-0x50(%rsp)
  jmp    L138
L158:
  lea    (%rsi,%rsi,1),%edi
  mov    %edi,-0x34(%rsp)
  sub    %r8d,%ebx
  mov    %ebx,%r9d
  test   %r13d,%r13d
  jle    L320
  mov    -0x50(%rsp),%ebx
  mov    %ebx,%r11d
  lea    (%rcx,%rbx,2),%esi
  mov    %ebx,%edi
  neg    %edi
  sub    %ebx,%edi
  mov    %edi,-0x40(%rsp)
  mov    %r15d,%edi
  sub    %ebx,%edi
  sub    %ebx,%edi
  mov    $0x0,%r8d
  neg    %ebx
  mov    %ebx,-0xc(%rsp)
  movaps %xmm0,%xmm3
  movaps %xmm0,%xmm2
  lea    (%r11,%r11,2),%ebx
  mov    %ebx,-0x3c(%rsp)
  mov    %ecx,-0x8(%rsp)
  jmp    L815
L415:
  mov    %r12d,%ebp
  imul   %edx,%ebp
  lea    0x0(%rbp,%rbx,1),%r14d
  movslq %r14d,%r14
  movss  %xmm0,(%r10,%r14,4)
  add    %esi,%ebp
  movslq %ebp,%rbp
  movss  %xmm0,(%r10,%rbp,4)
  mov    %r12d,%esi
  imul   %eax,%esi
  add    %esi,%ecx
  movslq %ecx,%rcx
  movss  %xmm0,(%r10,%rcx,4)
  add    %edi,%esi
  movslq %esi,%rsi
  movss  %xmm0,(%r10,%rsi,4)
  add    -0x30(%rsp),%r9d
  jmp    L184
L377:
  add    -0x4c(%rsp),%edx
  mov    %r12d,%ebp
  imul   %edx,%ebp
  lea    0x0(%rbp,%rbx,1),%r14d
  movslq %r14d,%r14
  movss  %xmm3,(%r10,%r14,4)
  add    %esi,%ebp
  movslq %ebp,%rbp
  movss  %xmm3,(%r10,%rbp,4)
  sub    -0x4c(%rsp),%eax
  mov    %r12d,%esi
  imul   %eax,%esi
  add    %esi,%ecx
  movslq %ecx,%rcx
  movss  %xmm3,(%r10,%rcx,4)
  add    %edi,%esi
  movslq %esi,%rsi
  movss  %xmm3,(%r10,%rsi,4)
L446:
  add    -0x38(%rsp),%r9d
L184:
  add    $0x1,%r8d
  mov    -0x3c(%rsp),%ecx
  lea    (%rcx,%rbx,1),%esi
  add    -0x40(%rsp),%edi
  cmp    %r8d,%r13d
  je     L82
L815:
  mov    %esi,%ebx
  sub    %r11d,%ebx
  lea    (%r11,%rdi,1),%ecx
  test   %r9d,%r9d
  js     L415
  cmp    %r9d,-0x34(%rsp)
  jle    L377
  mov    %r12d,%ebp
  imul   %edx,%ebp
  add    %ebx,%ebp
  movslq %ebp,%rbp
  movss  %xmm2,(%r10,%rbp,4)
  mov    -0x4c(%rsp),%r14d
  add    %r14d,%edx
  mov    %r12d,%ebp
  imul   %edx,%ebp
  add    %esi,%ebp
  movslq %ebp,%rbp
  movss  %xmm2,(%r10,%rbp,4)
  mov    %r12d,%esi
  imul   %eax,%esi
  add    %ecx,%esi
  movslq %esi,%rsi
  movss  %xmm2,(%r10,%rsi,4)
  sub    %r14d,%eax
  mov    %r12d,%ecx
  imul   %eax,%ecx
  add    %edi,%ecx
  movslq %ecx,%rcx
  movss  %xmm2,(%r10,%rcx,4)
  jmp    L446
L82:
  mov    -0x8(%rsp),%ecx
  sub    $0x1,%r13d
  mov    %r13d,%esi
  imul   %r11d,%esi
  lea    (%rcx,%r11,2),%ecx
  lea    (%rcx,%rsi,2),%ecx
  mov    %r15d,%edi
  sub    %r11d,%edi
  sub    %r11d,%edi
  mov    -0xc(%rsp),%esi
  sub    %r11d,%esi
  imul   %r13d,%esi
  lea    (%rdi,%rsi,1),%r15d
L320:
  cmpl   $0x0,-0x2c(%rsp)
  jle    L74
  test   %r9d,%r9d
  js     L304
  cmp    %r9d,-0x34(%rsp)
  jle    L568
  mov    -0x50(%rsp),%edi
  add    %edi,%ecx
  mov    %r12d,%esi
  imul   %edx,%esi
  add    %ecx,%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x10(%rsp)
  je     L744
  add    -0x4c(%rsp),%edx
  imul   %r12d,%edx
  add    %edi,%ecx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L744:
  cmpl   $0x2,-0x2c(%rsp)
  jle    L74
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L304:
  mov    -0x50(%rsp),%edi
  add    %edi,%ecx
  imul   %r12d,%edx
  lea    (%rdx,%rcx,1),%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x10(%rsp)
  je     L614
  add    %edi,%ecx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L614:
  cmpl   $0x2,-0x2c(%rsp)
  jle    L74
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L568:
  mov    -0x50(%rsp),%edi
  add    %edi,%ecx
  add    -0x4c(%rsp),%edx
  imul   %r12d,%edx
  lea    (%rdx,%rcx,1),%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x10(%rsp)
  je     L608
  add    %edi,%ecx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L608:
  cmpl   $0x2,-0x2c(%rsp)
  jle    L74
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L75:
  add    %r15d,%edx
  mov    %r12d,%ebx
  imul   %edx,%ebx
  add    %ecx,%ebx
  movslq %ebx,%rbx
  movss  %xmm0,(%r10,%rbx,4)
  add    %r15d,%edx
  mov    %r12d,%ebx
  imul   %edx,%ebx
  add    %esi,%ebx
  movslq %ebx,%rbx
  movss  %xmm0,(%r10,%rbx,4)
  sub    %r15d,%eax
  mov    %r12d,%esi
  imul   %eax,%esi
  add    %edi,%esi
  movslq %esi,%rsi
  movss  %xmm0,(%r10,%rsi,4)
  sub    %r15d,%eax
  mov    %r12d,%esi
  imul   %eax,%esi
  add    %r9d,%esi
  movslq %esi,%rsi
  movss  %xmm0,(%r10,%rsi,4)
  add    -0x34(%rsp),%r8d
L281:
  add    $0x1,%r11d
  mov    -0x3c(%rsp),%edi
  lea    (%rdi,%rcx,1),%esi
  add    -0x40(%rsp),%r9d
  cmp    %r11d,%r13d
  je     L210
L15:
  mov    %esi,%ecx
  sub    %ebp,%ecx
  lea    0x0(%rbp,%r9,1),%edi
  test   %r8d,%r8d
  jg     L75
  cmp    %r8d,-0x30(%rsp)
  jle    L864
  mov    %r12d,%ebx
  imul   %edx,%ebx
  add    %ecx,%ebx
  movslq %ebx,%rbx
  movss  %xmm2,(%r10,%rbx,4)
  add    %r15d,%edx
  mov    %r12d,%ebx
  imul   %edx,%ebx
  add    %esi,%ebx
  movslq %ebx,%rbx
  movss  %xmm2,(%r10,%rbx,4)
  mov    %r12d,%esi
  imul   %eax,%esi
  add    %edi,%esi
  movslq %esi,%rsi
  movss  %xmm2,(%r10,%rsi,4)
  sub    %r15d,%eax
  mov    %r12d,%esi
  imul   %eax,%esi
  add    %r9d,%esi
  movslq %esi,%rsi
  movss  %xmm2,(%r10,%rsi,4)
L334:
  add    -0x38(%rsp),%r8d
  jmp    L281
L864:
  add    %r15d,%edx
  mov    %r12d,%ebx
  imul   %edx,%ebx
  lea    (%rbx,%rcx,1),%r14d
  movslq %r14d,%r14
  movss  %xmm3,(%r10,%r14,4)
  add    %esi,%ebx
  movslq %ebx,%rbx
  movss  %xmm3,(%r10,%rbx,4)
  sub    %r15d,%eax
  mov    %r12d,%esi
  imul   %eax,%esi
  add    %esi,%edi
  movslq %edi,%rdi
  movss  %xmm3,(%r10,%rdi,4)
  add    %r9d,%esi
  movslq %esi,%rsi
  movss  %xmm3,(%r10,%rsi,4)
  jmp    L334
L210:
  mov    -0x8(%rsp),%ecx
  mov    -0x4(%rsp),%r15d
  sub    $0x1,%r13d
  lea    (%rcx,%rbp,2),%ecx
  mov    %r13d,%esi
  imul   %ebp,%esi
  lea    (%rcx,%rsi,2),%ecx
  mov    %r15d,%esi
  sub    %ebp,%esi
  sub    %ebp,%esi
  mov    -0xc(%rsp),%edi
  sub    %ebp,%edi
  imul   %r13d,%edi
  lea    (%rsi,%rdi,1),%r15d
L84:
  cmpl   $0x0,-0x2c(%rsp)
  jle    L74
  test   %r8d,%r8d
  jle    L539
  mov    -0x50(%rsp),%ebx
  add    %ebx,%ecx
  mov    -0x4c(%rsp),%edi
  add    %edi,%edx
  mov    %r12d,%esi
  imul   %edx,%esi
  add    %ecx,%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x10(%rsp)
  je     L50
  add    %edi,%edx
  imul   %r12d,%edx
  add    %ebx,%ecx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L50:
  cmpl   $0x2,-0x2c(%rsp)
  jle    L74
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
L74:
  addq   $0x1,-0x48(%rsp)
  mov    -0x48(%rsp),%rax
  cmp    -0x18(%rsp),%rax
  je     L378
L276:
  mov    -0x28(%rsp),%rdx
  mov    -0x48(%rsp),%rax
  mov    (%rdx,%rax,4),%ecx
  mov    -0x20(%rsp),%rdx
  mov    (%rdx,%rax,4),%edx
  mov    0x40(%rsp),%rdi
  mov    (%rdi,%rax,4),%r15d
  mov    0x50(%rsp),%rdi
  mov    (%rdi,%rax,4),%eax
  mov    %r15d,%r8d
  sub    %ecx,%r8d
  movl   $0x1,-0x4c(%rsp)
  mov    %eax,%esi
  sub    %edx,%esi
  js     L750
L654:
  movl   $0x1,-0x50(%rsp)
  test   %r8d,%r8d
  js     L814
L138:
  mov    %edx,%edi
  imul   %r12d,%edi
  add    %ecx,%edi
  movslq %edi,%rdi
  movss  D4(%rip),%xmm0
  movss  %xmm0,(%r10,%rdi,4)
  mov    %eax,%edi
  imul   %r12d,%edi
  add    %r15d,%edi
  movslq %edi,%rdi
  movss  %xmm0,(%r10,%rdi,4)
  cmp    %esi,%r8d
  jle    L249
  lea    -0x1(%r8),%ebx
  mov    %ebx,-0x10(%rsp)
  mov    %ebx,%r13d
  sar    $0x2,%r13d
  and    $0x3,%ebx
  mov    %ebx,-0x2c(%rsp)
  lea    0x0(,%rsi,4),%ebx
  mov    %ebx,-0x30(%rsp)
  lea    (%r8,%r8,1),%edi
  mov    %ebx,%r11d
  sub    %edi,%r11d
  mov    %r11d,-0x38(%rsp)
  js     L158
  sub    %r8d,%esi
  lea    (%rsi,%rsi,1),%edi
  mov    %edi,-0x30(%rsp)
  lea    0x0(,%rsi,4),%edi
  mov    %edi,-0x34(%rsp)
  add    %edi,%r8d
  test   %r13d,%r13d
  jle    L84
  mov    -0x50(%rsp),%ebx
  mov    %ebx,%ebp
  lea    (%rcx,%rbx,2),%esi
  mov    %ebx,%edi
  neg    %edi
  sub    %ebx,%edi
  mov    %edi,-0x40(%rsp)
  mov    %r15d,%r9d
  sub    %ebx,%r9d
  sub    %ebx,%r9d
  mov    $0x0,%r11d
  mov    %ebx,%edi
  neg    %edi
  mov    %edi,-0xc(%rsp)
  movss  D4(%rip),%xmm3
  movaps %xmm3,%xmm2
  movaps %xmm3,%xmm0
  lea    (%rbx,%rbx,2),%edi
  mov    %edi,-0x3c(%rsp)
  mov    %ecx,-0x8(%rsp)
  mov    %r15d,-0x4(%rsp)
  mov    -0x4c(%rsp),%r15d
  jmp    L15
L539:
  cmp    %r8d,-0x30(%rsp)
  jle    L868
  mov    -0x50(%rsp),%edi
  add    %edi,%ecx
  mov    %r12d,%esi
  imul   %edx,%esi
  add    %ecx,%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x10(%rsp)
  je     L722
  add    -0x4c(%rsp),%edx
  imul   %r12d,%edx
  add    %edi,%ecx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L722:
  cmpl   $0x2,-0x2c(%rsp)
  jle    L74
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L868:
  mov    -0x50(%rsp),%edi
  add    %edi,%ecx
  add    -0x4c(%rsp),%edx
  imul   %r12d,%edx
  lea    (%rdx,%rcx,1),%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x10(%rsp)
  je     L681
  add    %edi,%ecx
  add    %edx,%ecx
  movslq %ecx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L681:
  cmpl   $0x2,-0x2c(%rsp)
  jle    L74
  cmp    %r8d,-0x30(%rsp)
  jge    L510
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L510:
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L249:
  lea    -0x1(%rsi),%edi
  mov    %edi,-0x2c(%rsp)
  mov    %edi,%ebp
  sar    $0x2,%ebp
  and    $0x3,%edi
  mov    %edi,-0x30(%rsp)
  lea    0x0(,%r8,4),%r14d
  lea    (%rsi,%rsi,1),%edi
  mov    %r14d,%ebx
  sub    %edi,%ebx
  mov    %ebx,-0x3c(%rsp)
  js     L340
  sub    %esi,%r8d
  lea    (%r8,%r8,1),%edi
  mov    %edi,-0x34(%rsp)
  lea    0x0(,%r8,4),%edi
  mov    %edi,-0x38(%rsp)
  add    %edi,%esi
  test   %ebp,%ebp
  jle    L56
  mov    -0x4c(%rsp),%r14d
  lea    (%r14,%rdx,1),%r8d
  mov    %r14d,-0x10(%rsp)
  mov    %eax,%edi
  sub    %r14d,%edi
  mov    %r14d,%r9d
  imul   %r12d,%r9d
  lea    (%r9,%r9,1),%ebx
  mov    %ebx,-0x40(%rsp)
  mov    %r8d,%ebx
  imul   %r12d,%ebx
  add    %r14d,%r8d
  imul   %r12d,%r8d
  mov    %r14d,%r9d
  neg    %r14d
  mov    %r14d,-0xc(%rsp)
  sub    %r9d,%r14d
  imul   %r12d,%r14d
  mov    %edi,%r11d
  imul   %r12d,%r11d
  sub    %r9d,%edi
  imul   %r12d,%edi
  mov    $0x0,%r9d
  mov    %eax,-0x8(%rsp)
  mov    -0x50(%rsp),%eax
  jmp    L858
L340:
  lea    (%r8,%r8,1),%edi
  mov    %edi,-0x10(%rsp)
  mov    %r14d,%edi
  sub    %esi,%edi
  test   %ebp,%ebp
  jle    L365
  mov    -0x4c(%rsp),%r13d
  lea    0x0(%r13,%rdx,1),%r8d
  mov    %r13d,-0xc(%rsp)
  mov    %eax,%esi
  sub    %r13d,%esi
  mov    %r13d,%r9d
  imul   %r12d,%r9d
  lea    (%r9,%r9,1),%ebx
  mov    %ebx,-0x40(%rsp)
  mov    %r8d,%ebx
  imul   %r12d,%ebx
  add    %r13d,%r8d
  imul   %r12d,%r8d
  mov    %r13d,%r9d
  neg    %r9d
  mov    %r9d,-0x8(%rsp)
  sub    %r13d,%r9d
  imul   %r12d,%r9d
  mov    %r9d,-0x38(%rsp)
  mov    %esi,%r11d
  imul   %r12d,%r11d
  sub    %r13d,%esi
  imul   %r12d,%esi
  mov    $0x0,%r9d
  movss  D4(%rip),%xmm0
  mov    %r14d,-0x34(%rsp)
  mov    -0x10(%rsp),%r14d
  jmp    L616
L247:
  lea    (%rbx,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm0,(%r10,%r13,4)
  lea    (%r8,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm0,(%r10,%r13,4)
  lea    (%r11,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm0,(%r10,%r13,4)
  lea    (%rsi,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm0,(%r10,%r13,4)
  add    -0x34(%rsp),%edi
  jmp    L80
L634:
  add    -0x50(%rsp),%ecx
  lea    (%rbx,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm5,(%r10,%r13,4)
  lea    (%r8,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm5,(%r10,%r13,4)
  sub    -0x50(%rsp),%r15d
  lea    (%r11,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm5,(%r10,%r13,4)
  lea    (%rsi,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm5,(%r10,%r13,4)
L136:
  add    -0x3c(%rsp),%edi
L80:
  add    $0x1,%r9d
  mov    -0x40(%rsp),%r13d
  add    %r13d,%ebx
  add    %r13d,%r8d
  mov    -0x38(%rsp),%r13d
  add    %r13d,%r11d
  add    %r13d,%esi
  cmp    %r9d,%ebp
  je     L242
L616:
  test   %edi,%edi
  js     L247
  cmp    %edi,%r14d
  jle    L634
  lea    (%rbx,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm4,(%r10,%r13,4)
  add    -0x50(%rsp),%ecx
  lea    (%r8,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm4,(%r10,%r13,4)
  lea    (%r11,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm4,(%r10,%r13,4)
  sub    -0x50(%rsp),%r15d
  lea    (%rsi,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm4,(%r10,%r13,4)
  jmp    L136
L242:
  sub    $0x1,%ebp
  mov    -0xc(%rsp),%ebx
  lea    (%rdx,%rbx,2),%edx
  mov    %ebx,%esi
  imul   %ebp,%esi
  lea    (%rdx,%rsi,2),%edx
  sub    %ebx,%eax
  sub    %ebx,%eax
  mov    -0x8(%rsp),%esi
  sub    %ebx,%esi
  imul   %ebp,%esi
  add    %esi,%eax
L365:
  cmpl   $0x0,-0x30(%rsp)
  jle    L74
  test   %edi,%edi
  js     L855
  cmp    %edi,-0x10(%rsp)
  jle    L4
  mov    -0x4c(%rsp),%edi
  add    %edi,%edx
  mov    %r12d,%esi
  imul   %edx,%esi
  add    %ecx,%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x2c(%rsp)
  je     L886
  add    %edi,%edx
  imul   %r12d,%edx
  add    -0x50(%rsp),%ecx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L886:
  cmpl   $0x2,-0x30(%rsp)
  jle    L74
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  add    %r15d,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L855:
  mov    -0x4c(%rsp),%edi
  add    %edi,%edx
  mov    %r12d,%esi
  imul   %edx,%esi
  add    %ecx,%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x2c(%rsp)
  je     L740
  add    %edi,%edx
  imul   %r12d,%edx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L740:
  cmpl   $0x2,-0x30(%rsp)
  jle    L74
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  add    %r15d,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L4:
  add    -0x50(%rsp),%ecx
  mov    -0x4c(%rsp),%edi
  add    %edi,%edx
  mov    %r12d,%esi
  imul   %edx,%esi
  add    %ecx,%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x2c(%rsp)
  je     L839
  add    %edi,%edx
  imul   %r12d,%edx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L839:
  cmpl   $0x2,-0x30(%rsp)
  jle    L74
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L317:
  add    %eax,%ecx
  lea    (%rbx,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm1,(%r10,%r13,4)
  add    %eax,%ecx
  lea    (%r8,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm1,(%r10,%r13,4)
  sub    %eax,%r15d
  lea    (%r11,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm1,(%r10,%r13,4)
  sub    %eax,%r15d
  lea    (%rdi,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm1,(%r10,%r13,4)
  add    -0x38(%rsp),%esi
L238:
  add    $0x1,%r9d
  mov    -0x40(%rsp),%r13d
  add    %r13d,%ebx
  add    %r13d,%r8d
  add    %r14d,%r11d
  add    %r14d,%edi
  cmp    %r9d,%ebp
  je     L760
L858:
  test   %esi,%esi
  jg     L317
  cmp    %esi,-0x34(%rsp)
  jle    L141
  lea    (%rbx,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm6,(%r10,%r13,4)
  add    %eax,%ecx
  lea    (%r8,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm6,(%r10,%r13,4)
  lea    (%r11,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm6,(%r10,%r13,4)
  sub    %eax,%r15d
  lea    (%rdi,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm6,(%r10,%r13,4)
L705:
  add    -0x3c(%rsp),%esi
  jmp    L238
L141:
  add    %eax,%ecx
  lea    (%rbx,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm7,(%r10,%r13,4)
  lea    (%r8,%rcx,1),%r13d
  movslq %r13d,%r13
  movss  %xmm7,(%r10,%r13,4)
  sub    %eax,%r15d
  lea    (%r11,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm7,(%r10,%r13,4)
  lea    (%rdi,%r15,1),%r13d
  movslq %r13d,%r13
  movss  %xmm7,(%r10,%r13,4)
  jmp    L705
L760:
  mov    -0x8(%rsp),%eax
  sub    $0x1,%ebp
  mov    -0x10(%rsp),%ebx
  lea    (%rdx,%rbx,2),%edx
  mov    %ebx,%edi
  imul   %ebp,%edi
  lea    (%rdx,%rdi,2),%edx
  sub    %ebx,%eax
  sub    %ebx,%eax
  mov    -0xc(%rsp),%edi
  sub    %ebx,%edi
  imul   %ebp,%edi
  add    %edi,%eax
L56:
  cmpl   $0x0,-0x30(%rsp)
  jle    L74
  test   %esi,%esi
  jle    L47
  mov    -0x50(%rsp),%ebx
  add    %ebx,%ecx
  mov    -0x4c(%rsp),%edi
  add    %edi,%edx
  mov    %r12d,%esi
  imul   %edx,%esi
  add    %ecx,%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x2c(%rsp)
  je     L65
  add    %edi,%edx
  imul   %r12d,%edx
  add    %ebx,%ecx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L65:
  cmpl   $0x2,-0x30(%rsp)
  jle    L74
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L47:
  cmp    %esi,-0x34(%rsp)
  jle    L768
  mov    -0x4c(%rsp),%edi
  add    %edi,%edx
  mov    %r12d,%esi
  imul   %edx,%esi
  add    %ecx,%esi
  movslq %esi,%rsi
  movl   $0x3f800000,(%r10,%rsi,4)
  testb  $0x2,-0x2c(%rsp)
  je     L324
  add    %edi,%edx
  imul   %r12d,%edx
  add    -0x50(%rsp),%ecx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L324:
  cmpl   $0x2,-0x30(%rsp)
  jle    L74
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  add    %r15d,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L768:
  add    -0x50(%rsp),%ecx
  mov    -0x4c(%rsp),%ebx
  add    %ebx,%edx
  mov    %r12d,%edi
  imul   %edx,%edi
  add    %ecx,%edi
  movslq %edi,%rdi
  movl   $0x3f800000,(%r10,%rdi,4)
  testb  $0x2,-0x2c(%rsp)
  je     L829
  add    %ebx,%edx
  imul   %r12d,%edx
  add    %ecx,%edx
  movslq %edx,%rdx
  movl   $0x3f800000,(%r10,%rdx,4)
L829:
  cmpl   $0x2,-0x30(%rsp)
  jle    L74
  cmp    %esi,-0x34(%rsp)
  jge    L805
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  mov    %r15d,%edx
  sub    -0x50(%rsp),%edx
  add    %edx,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L805:
  sub    -0x4c(%rsp),%eax
  imul   %r12d,%eax
  add    %r15d,%eax
  cltq
  movl   $0x3f800000,(%r10,%rax,4)
  jmp    L74
L378:
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: read_data
arguments: data_label: D4
data_type: byte[4]

tool: {"D4": [0x00,0x00,0x80,0x3f]}

assistant: ```c
void render_lines_2D_WLA(float *mat, int wy, int wx, int *X1, int nx1, int *Y1, int ny1, int *X2, int nx2, int *Y2, int ny2) {
  int dx, dy, stepx, stepy, n;
  int length, extras, incr2, incr1, c, d, i;
  int x1, y1, x2, y2;
  float val = 1.0f;
  for (n = 0; n < nx1; ++n) {
    x1 = X1[n];
    y1 = Y1[n];
    x2 = X2[n];
    y2 = Y2[n];
    dy = y2 - y1;
    dx = x2 - x1;
    if (dy < 0) {
      dy = -dy;
      stepy = -1;
    } else {
      stepy = 1;
    }
    if (dx < 0) {
      dx = -dx;
      stepx = -1;
    } else {
      stepx = 1;
    }
    mat[y1 * wx + x1] = val;
    mat[y2 * wx + x2] = val;
    if (dx > dy) {
      length = (dx - 1) >> 2;
      extras = (dx - 1) & 3;
      incr2 = (dy << 2) - (dx << 1);
      if (incr2 < 0) {
        c = dy << 1;
        incr1 = c << 1;
        d = incr1 - dx;
        for (i = 0; i < length; i++) {
          x1 = x1 + stepx;
          x2 = x2 - stepx;
          if (d < 0) {
            mat[y1 * wx + x1] = val;
            x1 = x1 + stepx;
            mat[y1 * wx + x1] = val;
            mat[y2 * wx + x2] = val;
            x2 = x2 - stepx;
            mat[y2 * wx + x2] = val;
            d += incr1;
          } else {
            if (d < c) {
              mat[y1 * wx + x1] = val;
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
              mat[y2 * wx + x2] = val;
              x2 = x2 - stepx;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            } else {
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
              x1 = x1 + stepx;
              mat[y1 * wx + x1] = val;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
              x2 = x2 - stepx;
              mat[y2 * wx + x2] = val;
            }
            d += incr2;
          }
        }
        if (extras > 0) {
          if (d < 0) {
            x1 = x1 + stepx;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              x1 = x1 + stepx;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              x2 = x2 - stepx;
              mat[y2 * wx + x2] = val;
            }
          } else if (d < c) {
            x1 = x1 + stepx;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              x2 = x2 - stepx;
              mat[y2 * wx + x2] = val;
            }
          } else {
            x1 = x1 + stepx;
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              x1 = x1 + stepx;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              x2 = x2 - stepx;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            }
          }
        }
      } else {
        c = (dy - dx) << 1;
        incr1 = c << 1;
        d = incr1 + dx;
        for (i = 0; i < length; i++) {
          x1 = x1 + stepx;
          x2 = x2 - stepx;
          if (d > 0) {
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            x1 = x1 + stepx;
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            y2 = y2 - stepy;
            mat[y2 * wx + x2] = val;
            x2 = x2 - stepx;
            y2 = y2 - stepy;
            mat[y2 * wx + x2] = val;
            d += incr1;
          } else {
            if (d < c) {
              mat[y1 * wx + x1] = val;
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
              mat[y2 * wx + x2] = val;
              x2 = x2 - stepx;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            } else {
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
              x1 = x1 + stepx;
              mat[y1 * wx + x1] = val;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
              x2 = x2 - stepx;
              mat[y2 * wx + x2] = val;
            }
            d += incr2;
          }
        }
        if (extras > 0) {
          if (d > 0) {
            x1 = x1 + stepx;
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              x2 = x2 - stepx;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            }
          } else if (d < c) {
            x1 = x1 + stepx;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              x2 = x2 - stepx;
              mat[y2 * wx + x2] = val;
            }
          } else {
            x1 = x1 + stepx;
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              x1 = x1 + stepx;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              if (d > c) {
                x2 = x2 - stepx;
                y2 = y2 - stepy;
                mat[y2 * wx + x2] = val;
              } else {
                x2 = x2 - stepx;
                mat[y2 * wx + x2] = val;
              }
            }
          }
        }
      }
    } else {
      length = (dy - 1) >> 2;
      extras = (dy - 1) & 3;
      incr2 = (dx << 2) - (dy << 1);
      if (incr2 < 0) {
        c = dx << 1;
        incr1 = c << 1;
        d = incr1 - dy;
        for (i = 0; i < length; i++) {
          y1 = y1 + stepy;
          y2 = y2 - stepy;
          if (d < 0) {
            mat[y1 * wx + x1] = val;
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            mat[y2 * wx + x2] = val;
            y2 = y2 - stepy;
            mat[y2 * wx + x2] = val;
            d += incr1;
          } else {
            if (d < c) {
              mat[y1 * wx + x1] = val;
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
              mat[y2 * wx + x2] = val;
              x2 = x2 - stepx;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            } else {
              x1 = x1 + stepx;
              mat[y1 * wx + x1] = val;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
              x2 = x2 - stepx;
              mat[y2 * wx + x2] = val;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            }
            d += incr2;
          }
        }
        if (extras > 0) {
          if (d < 0) {
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            }
          } else if (d < c) {
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            }
          } else {
            x1 = x1 + stepx;
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              x2 = x2 - stepx;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            }
          }
        }
      } else {
        c = (dx - dy) << 1;
        incr1 = c << 1;
        d = incr1 + dy;
        for (i = 0; i < length; i++) {
          y1 = y1 + stepy;
          y2 = y2 - stepy;
          if (d > 0) {
            x1 = x1 + stepx;
            mat[y1 * wx + x1] = val;
            x1 = x1 + stepx;
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            x2 = x2 - stepx;
            mat[y2 * wx + x2] = val;
            x2 = x2 - stepx;
            y2 = y2 - stepy;
            mat[y2 * wx + x2] = val;
            d += incr1;
          } else {
            if (d < c) {
              mat[y1 * wx + x1] = val;
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
              mat[y2 * wx + x2] = val;
              x2 = x2 - stepx;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            } else {
              x1 = x1 + stepx;
              mat[y1 * wx + x1] = val;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
              x2 = x2 - stepx;
              mat[y2 * wx + x2] = val;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            }
            d += incr2;
          }
        }
        if (extras > 0) {
          if (d > 0) {
            x1 = x1 + stepx;
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              x2 = x2 - stepx;
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            }
          } else if (d < c) {
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              x1 = x1 + stepx;
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              y2 = y2 - stepy;
              mat[y2 * wx + x2] = val;
            }
          } else {
            x1 = x1 + stepx;
            y1 = y1 + stepy;
            mat[y1 * wx + x1] = val;
            if (extras > 1) {
              y1 = y1 + stepy;
              mat[y1 * wx + x1] = val;
            }
            if (extras > 2) {
              if (d > c) {
                x2 = x2 - stepx;
                y2 = y2 - stepy;
                mat[y2 * wx + x2] = val;
              } else {
                y2 = y2 - stepy;
                mat[y2 * wx + x2] = val;
              }
            }
          }
        }
      }
    }
  }
}
```