user: What would the C source look like for the assembly code provided here?

```asm
<disp7s>:
  endbr64
  push   %r15
  push   %r14
  push   %r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    %esi,%r13d
  mov    %edx,%r14d
  mov    %ecx,0x8(%rsp)
  mov    0x70(%rsp),%eax
  movss  %xmm0,0xc(%rsp)
  mov    %fs:0x28,%rdx
  mov    %rdx,0x28(%rsp)
  xor    %edx,%edx
  movabs $0xa4ded674b6ba24ee,%rsi
  mov    %rsi,0x1e(%rsp)
  movw   $0xf6fe,0x26(%rsp)
  cmp    $0x9,%eax
  ja     L128
  mov    %rdi,%r12
  mov    %r8d,%r15d
  mov    %r9d,%ebx
  cltq
  movzbl 0x1e(%rsp,%rax,1),%ebp
  test   %bpl,%bpl
  js     L77
L44:
  test   $0x40,%bpl
  jne    L32
L67:
  test   $0x20,%bpl
  jne    L110
L60:
  test   $0x10,%bpl
  jne    L25
L119:
  test   $0x8,%bpl
  jne    L90
L103:
  test   $0x4,%bpl
  jne    L7
L53:
  test   $0x2,%bpl
  jne    L101
L128:
  mov    0x28(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L17
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
L77:
  lea    (%r9,%r9,1),%eax
  sub    $0x8,%rsp
  push   $0x1
  movss  0x1c(%rsp),%xmm0
  sub    %eax,%r8d
  mov    0x18(%rsp),%ecx
  mov    %r14d,%edx
  mov    %r13d,%esi
  call   <draw_rectangle@plt>
  add    $0x10,%rsp
  jmp    L44
L32:
  lea    (%rbx,%rbx,1),%eax
  sub    $0x8,%rsp
  push   %rbx
  movss  0x1c(%rsp),%xmm0
  mov    $0x1,%r9d
  mov    %r15d,%r8d
  sub    %eax,%r8d
  mov    0x18(%rsp),%ecx
  mov    %r14d,%edx
  mov    %r13d,%esi
  mov    %r12,%rdi
  call   <draw_rectangle@plt>
  add    $0x10,%rsp
  jmp    L67
L110:
  lea    (%rbx,%rbx,1),%eax
  mov    0x8(%rsp),%edi
  lea    (%rbx,%rdi,1),%ecx
  sub    $0x8,%rsp
  push   %rbx
  movss  0x1c(%rsp),%xmm0
  mov    $0x1,%r9d
  mov    %r15d,%r8d
  sub    %eax,%r8d
  mov    %r14d,%edx
  mov    %r13d,%esi
  mov    %r12,%rdi
  call   <draw_rectangle@plt>
  add    $0x10,%rsp
  jmp    L60
L25:
  sub    $0x8,%rsp
  push   $0x1
  movss  0x1c(%rsp),%xmm0
  mov    %ebx,%r9d
  mov    %r15d,%r8d
  sub    %ebx,%r8d
  mov    0x18(%rsp),%ecx
  mov    %r14d,%edx
  mov    %r13d,%esi
  mov    %r12,%rdi
  call   <draw_rectangle@plt>
  add    $0x10,%rsp
  jmp    L119
L90:
  sub    $0x8,%rsp
  push   %rbx
  movss  0x1c(%rsp),%xmm0
  mov    $0x1,%r9d
  mov    %r15d,%r8d
  sub    %ebx,%r8d
  mov    0x18(%rsp),%ecx
  mov    %r14d,%edx
  mov    %r13d,%esi
  mov    %r12,%rdi
  call   <draw_rectangle@plt>
  add    $0x10,%rsp
  jmp    L103
L7:
  mov    0x8(%rsp),%eax
  lea    (%rbx,%rax,1),%ecx
  sub    $0x8,%rsp
  push   %rbx
  movss  0x1c(%rsp),%xmm0
  mov    $0x1,%r9d
  mov    %r15d,%r8d
  sub    %ebx,%r8d
  mov    %r14d,%edx
  mov    %r13d,%esi
  mov    %r12,%rdi
  call   <draw_rectangle@plt>
  add    $0x10,%rsp
  jmp    L53
L101:
  sub    $0x8,%rsp
  push   $0x1
  movss  0x1c(%rsp),%xmm0
  mov    %ebx,%r9d
  mov    %r15d,%r8d
  mov    0x18(%rsp),%ecx
  mov    %r14d,%edx
  mov    %r13d,%esi
  mov    %r12,%rdi
  call   <draw_rectangle@plt>
  add    $0x10,%rsp
  jmp    L128
L17:
  call   <__stack_chk_fail@plt>
```

assistant: ```c
void disp7s(float *sl, int w, int h, int x, int y, int v, int d, float gray) {
  char seg[10] = {0xEE, 0x24, 0xBA, 0xB6, 0x74, 0xD6, 0xDE, 0xA4, 0xFE, 0xF6};
  if ((d < 0) || (d > 9))
    return;
  if ((seg[d] & 0x80) != 0)
    draw_rectangle(sl, w, h, x, y - 2 * v, v, 1, gray);
  if ((seg[d] & 0x40) != 0)
    draw_rectangle(sl, w, h, x, y - 2 * v, 1, v, gray);
  if ((seg[d] & 0x20) != 0)
    draw_rectangle(sl, w, h, x + v, y - 2 * v, 1, v, gray);
  if ((seg[d] & 0x10) != 0)
    draw_rectangle(sl, w, h, x, y - v, v, 1, gray);
  if ((seg[d] & 0x08) != 0)
    draw_rectangle(sl, w, h, x, y - v, 1, v, gray);
  if ((seg[d] & 0x04) != 0)
    draw_rectangle(sl, w, h, x + v, y - v, 1, v, gray);
  if ((seg[d] & 0x02) != 0)
    draw_rectangle(sl, w, h, x, y, v, 1, gray);
}
```