user: Demonstrate the C code that generates the assembly output below:

```asm
<render_line_3D_BLA>:
  endbr64
  push   %r15
  mov    %edx,%esi
  mov    %rdi,%r15
  mov    %ecx,%edi
  push   %r14
  imul   %ecx,%esi
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  mov    0x38(%rsp),%edx
  mov    0x48(%rsp),%r13d
  mov    0x50(%rsp),%r12d
  mov    0x40(%rsp),%r14d
  movl   $0x1,-0xc(%rsp)
  sub    %r9d,%r13d
  sub    %edx,%r12d
  sub    %r8d,%r14d
  jns    L123
  movl   $0xffffffff,-0xc(%rsp)
  mov    %r8d,%r14d
  sub    0x40(%rsp),%r14d
L123:
  movl   $0x1,-0x8(%rsp)
  test   %r13d,%r13d
  jns    L189
  movl   $0xffffffff,-0x8(%rsp)
  mov    %r9d,%r13d
  sub    0x48(%rsp),%r13d
L189:
  movl   $0x1,-0x4(%rsp)
  test   %r12d,%r12d
  jns    L41
  movl   $0xffffffff,-0x4(%rsp)
  mov    %edx,%r12d
  sub    0x50(%rsp),%r12d
L41:
  mov    %esi,%ecx
  mov    %edi,%eax
  lea    (%r14,%r14,1),%r10d
  mov    %r12d,%ebp
  imul   %edx,%ecx
  lea    0x0(%r13,%r13,1),%r11d
  imul   %r9d,%eax
  cmp    %r12d,%r13d
  lea    (%r12,%r12,1),%ebx
  cmovge %r13d,%ebp
  cmp    %ebp,%r14d
  jl     L134
  mov    %r11d,%r13d
  mov    %ebx,%r12d
  sub    %r14d,%r13d
  sub    %r14d,%r12d
  cmp    %r8d,0x40(%rsp)
  je     L170
  mov    0x40(%rsp),%ebp
  nopw   0x0(%rax,%rax,1)
L20:
  mov    %esi,%ecx
  mov    %edi,%eax
  imul   %edx,%ecx
  imul   %r9d,%eax
  lea    (%rcx,%rax,1),%r14d
  add    %r8d,%r14d
  movslq %r14d,%r14
  lea    (%r15,%r14,4),%r14
  movss  (%r14),%xmm1
  addss  %xmm0,%xmm1
  movss  %xmm1,(%r14)
  test   %r13d,%r13d
  js     L160
  add    -0x8(%rsp),%r9d
  mov    %edi,%eax
  sub    %r10d,%r13d
  imul   %r9d,%eax
L160:
  test   %r12d,%r12d
  js     L77
  add    -0x4(%rsp),%edx
  mov    %esi,%ecx
  sub    %r10d,%r12d
  imul   %edx,%ecx
L77:
  add    -0xc(%rsp),%r8d
  add    %r11d,%r13d
  add    %ebx,%r12d
  cmp    %r8d,%ebp
  jne    L20
L170:
  add    %ecx,%eax
L132:
  add    %r8d,%eax
  cltq
  lea    (%r15,%rax,4),%rax
  addss  (%rax),%xmm0
  movss  %xmm0,(%rax)
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax)
L134:
  cmp    %r12d,%r14d
  cmovl  %r12d,%r14d
  cmp    %r14d,%r13d
  jl     L115
  mov    %r10d,%r12d
  mov    %ebx,%r14d
  sub    %r13d,%r12d
  sub    %r13d,%r14d
  cmp    %r9d,0x48(%rsp)
  je     L14
  mov    -0x8(%rsp),%ebp
  mov    %edi,-0x8(%rsp)
  mov    %ebp,%r13d
  imul   %edi,%r13d
  nopw   0x0(%rax,%rax,1)
L186:
  mov    %esi,%ecx
  imul   %edx,%ecx
  lea    (%rax,%rcx,1),%edi
  add    %r8d,%edi
  movslq %edi,%rdi
  lea    (%r15,%rdi,4),%rdi
  movss  (%rdi),%xmm1
  addss  %xmm0,%xmm1
  movss  %xmm1,(%rdi)
  test   %r12d,%r12d
  js     L117
  add    -0xc(%rsp),%r8d
  sub    %r11d,%r12d
L117:
  test   %r14d,%r14d
  js     L59
  add    -0x4(%rsp),%edx
  mov    %esi,%ecx
  sub    %r11d,%r14d
  imul   %edx,%ecx
L59:
  add    %r10d,%r12d
  add    %ebx,%r14d
  add    %ebp,%r9d
  add    %r13d,%eax
  cmp    %r9d,0x48(%rsp)
  jne    L186
  mov    -0x8(%rsp),%edi
L14:
  imul   %edi,%r9d
  lea    (%r9,%rcx,1),%eax
  jmp    L132
  nopl   0x0(%rax,%rax,1)
L115:
  mov    %r10d,%r13d
  mov    %r11d,%r14d
  sub    %r12d,%r13d
  sub    %r12d,%r14d
  cmp    %edx,0x50(%rsp)
  je     L70
  mov    -0x4(%rsp),%ebp
  mov    %esi,-0x4(%rsp)
  mov    %ebp,%r12d
  imul   %esi,%r12d
  nopl   0x0(%rax)
L45:
  mov    %edi,%eax
  imul   %r9d,%eax
  lea    (%rcx,%rax,1),%esi
  add    %r8d,%esi
  movslq %esi,%rsi
  lea    (%r15,%rsi,4),%rsi
  movss  (%rsi),%xmm1
  addss  %xmm0,%xmm1
  movss  %xmm1,(%rsi)
  test   %r13d,%r13d
  js     L79
  add    -0xc(%rsp),%r8d
  sub    %ebx,%r13d
L79:
  test   %r14d,%r14d
  js     L133
  add    -0x8(%rsp),%r9d
  mov    %edi,%eax
  sub    %ebx,%r14d
  imul   %r9d,%eax
L133:
  add    %r10d,%r13d
  add    %r11d,%r14d
  add    %ebp,%edx
  add    %r12d,%ecx
  cmp    %edx,0x50(%rsp)
  jne    L45
  mov    -0x4(%rsp),%esi
L70:
  imul   %edx,%esi
  add    %esi,%eax
  jmp    L132
```

assistant: ```c
void render_line_3D_BLA(float *mat, int wz, int wy, int wx, int x1, int y1, int z1, int x2, int y2, int z2, float val) {
  int x, y, z;
  int dx, dy, dz;
  int xinc, yinc, zinc;
  int balance1, balance2;
  int step = wx * wy;
  dx = x2 - x1;
  dy = y2 - y1;
  dz = z2 - z1;
  if (dx < 0) {
    xinc = -1;
    dx = -dx;
  } else {
    xinc = 1;
  }
  if (dy < 0) {
    yinc = -1;
    dy = -dy;
  } else {
    yinc = 1;
  }
  if (dz < 0) {
    zinc = -1;
    dz = -dz;
  } else {
    zinc = 1;
  }
  x = x1;
  y = y1;
  z = z1;
  if (dx >= dy && dx >= dz) {
    dy <<= 1;
    dz <<= 1;
    balance1 = dy - dx;
    balance2 = dz - dx;
    dx <<= 1;
    while (x != x2) {
      mat[z * step + y * wx + x] += val;
      if (balance1 >= 0) {
        y = y + yinc;
        balance1 = balance1 - dx;
      }
      if (balance2 >= 0) {
        z = z + zinc;
        balance2 = balance2 - dx;
      }
      balance1 = balance1 + dy;
      balance2 = balance2 + dz;
      x = x + xinc;
    }
    mat[z * step + y * wx + x] += val;
  } else {
    if (dy >= dx && dy >= dz) {
      dx <<= 1;
      dz <<= 1;
      balance1 = dx - dy;
      balance2 = dz - dy;
      dy <<= 1;
      while (y != y2) {
        mat[z * step + y * wx + x] += val;
        if (balance1 >= 0) {
          x = x + xinc;
          balance1 = balance1 - dy;
        }
        if (balance2 >= 0) {
          z = z + zinc;
          balance2 = balance2 - dy;
        }
        balance1 = balance1 + dx;
        balance2 = balance2 + dz;
        y = y + yinc;
      }
      mat[z * step + y * wx + x] += val;
    } else {
      dx <<= 1;
      dy <<= 1;
      balance1 = dx - dz;
      balance2 = dy - dz;
      dz <<= 1;
      while (z != z2) {
        mat[z * step + y * wx + x] += val;
        if (balance1 >= 0) {
          x = x + xinc;
          balance1 = balance1 - dz;
        }
        if (balance2 >= 0) {
          y = y + yinc;
          balance2 = balance2 - dz;
        }
        balance1 = balance1 + dx;
        balance2 = balance2 + dy;
        z = z + zinc;
      }
      mat[z * step + y * wx + x] += val;
    }
  }
}
```