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

```asm
<triRender>:
  endbr64
  sub    $0x8,%rsp
  mov    %rdi,%rax
  mov    %rsi,%r10
  mov    %rdx,%rdi
  mov    %r9,%rdx
  movsd  (%rax),%xmm0
  movsd  (%rsi),%xmm1
  comisd %xmm0,%xmm1
  jbe    L48
  movsd  (%rdi),%xmm2
  comisd %xmm0,%xmm2
  ja     L22
L48:
  comisd %xmm1,%xmm0
  jbe    L55
  movsd  (%rdi),%xmm2
  comisd %xmm1,%xmm2
  ja     L89
L55:
  movsd  (%rdi),%xmm2
  comisd %xmm2,%xmm0
  jbe    L51
  comisd %xmm2,%xmm1
  ja     L77
L43:
  ucomisd %xmm2,%xmm0
  setp   %sil
  mov    $0x1,%r9d
  cmovne %r9d,%esi
  test   %sil,%sil
  je     L11
  ucomisd %xmm1,%xmm0
  setnp  %sil
  mov    $0x0,%r9d
  cmovne %r9d,%esi
  test   %sil,%sil
  jne    L105
L11:
  ucomisd %xmm1,%xmm0
  setp   %sil
  mov    $0x1,%r9d
  cmovne %r9d,%esi
  test   %sil,%sil
  je     L113
  ucomisd %xmm2,%xmm1
  setnp  %sil
  mov    $0x0,%r9d
  cmovne %r9d,%esi
  test   %sil,%sil
  jne    L125
L113:
  sub    $0x8,%rsp
  push   0x18(%rsp)
  mov    %rdx,%r9
  mov    %rdi,%rdx
  mov    %r10,%rsi
  mov    %rax,%rdi
  call   <triRenderALeft@plt>
  add    $0x10,%rsp
L108:
  add    $0x8,%rsp
  ret
L22:
  sub    $0x8,%rsp
  push   0x18(%rsp)
  mov    %rdi,%rdx
  mov    %rax,%rdi
  call   <triRenderALeft@plt>
  add    $0x10,%rsp
  jmp    L108
L89:
  sub    $0x8,%rsp
  push   %r8
  mov    0x20(%rsp),%r9
  mov    %rdx,%r8
  mov    %rax,%rdx
  mov    %rdi,%rsi
  mov    %r10,%rdi
  call   <triRenderALeft@plt>
  add    $0x10,%rsp
  jmp    L108
L77:
  sub    $0x8,%rsp
  push   %rdx
  mov    %r8,%r9
  mov    0x20(%rsp),%r8
  mov    %r10,%rdx
  mov    %rax,%rsi
  call   <triRenderALeft@plt>
  add    $0x10,%rsp
  jmp    L108
L51:
  ucomisd %xmm2,%xmm1
  setp   %sil
  mov    $0x1,%r9d
  cmovne %r9d,%esi
  test   %sil,%sil
  je     L43
  ucomisd %xmm2,%xmm0
  setnp  %sil
  mov    $0x0,%r9d
  cmovne %r9d,%esi
  test   %sil,%sil
  je     L43
  sub    $0x8,%rsp
  push   0x18(%rsp)
  mov    %rdx,%r9
  mov    %rdi,%rdx
  mov    %r10,%rsi
  mov    %rax,%rdi
  call   <triRenderALeft@plt>
  add    $0x10,%rsp
  jmp    L108
L105:
  sub    $0x8,%rsp
  push   %r8
  mov    0x20(%rsp),%r9
  mov    %rdx,%r8
  mov    %rax,%rdx
  mov    %rdi,%rsi
  mov    %r10,%rdi
  call   <triRenderALeft@plt>
  add    $0x10,%rsp
  jmp    L108
L125:
  sub    $0x8,%rsp
  push   %rdx
  mov    %r8,%r9
  mov    0x20(%rsp),%r8
  mov    %r10,%rdx
  mov    %rax,%rsi
  call   <triRenderALeft@plt>
  add    $0x10,%rsp
  jmp    L108
```

assistant: ```c
void triRender(double a[2], double b[2], double c[2], double rgb[3], double alpha[2], double beta[2], double gamma[2]) {
  if (a[0] < b[0] && a[0] < c[0]) {
    triRenderALeft(a, b, c, rgb, alpha, beta, gamma);
  } else if (b[0] < a[0] && b[0] < c[0]) {
    triRenderALeft(b, c, a, rgb, beta, gamma, alpha);
  } else if (c[0] < a[0] && c[0] < b[0]) {
    triRenderALeft(c, a, b, rgb, gamma, alpha, beta);
  } else if (a[0] == c[0] && b[0] != c[0]) {
    triRenderALeft(a, b, c, rgb, alpha, beta, gamma);
  } else if (a[0] == b[0] && a[0] != c[0]) {
    triRenderALeft(b, c, a, rgb, beta, gamma, alpha);
  } else if (b[0] == c[0] && a[0] != b[0]) {
    triRenderALeft(c, a, b, rgb, gamma, alpha, beta);
  } else {
    triRenderALeft(a, b, c, rgb, alpha, beta, gamma);
  }
}
```