user: What is the c source code of the assembly code below?

```asm
<fill_array>:
  endbr64
  push   %r15
  mov    %rdi,%rax
  push   %r14
  push   %r13
  mov    %rcx,%r13
  push   %r12
  push   %rbp
  push   %rbx
  sub    $0x38,%rsp
  mov    (%rcx),%r11d
  test   %r11d,%r11d
  jle    L43
  lea    (%rsi,%rsi,1),%ecx
  mov    %esi,%r9d
  movslq %r11d,%rsi
  movdqa D32(%rip),%xmm7
  movslq %ecx,%rcx
  lea    0x4(%r13,%rsi,4),%rsi
  movdqa D28(%rip),%xmm6
  movdqa D43(%rip),%xmm5
  mov    (%r8,%rcx,4),%r10d
  mov    0x4(%r8,%rcx,4),%r15d
  mov    %rsi,0x8(%rsp)
  mov    %r9d,%esi
  mov    $0x1,%r12d
  mov    %r10d,%r14d
  mov    %r15d,%r9d
  mov    %r13,%r10
  mov    %r11d,%r15d
  mov    %esi,%r11d
L109:
  mov    (%r10,%r12,4),%ebx
  mov    0x4(%r10,%r12,4),%ebp
  cmp    %ebx,%r14d
  cmovge %r14d,%ebx
  cmp    %ebp,%r9d
  cmovle %r9d,%ebp
  cmp    %ebp,%ebx
  jle    L49
L111:
  add    $0x2,%r12
  cmp    %r12d,%r15d
  jge    L109
L43:
  add    $0x38,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopw   0x0(%rax,%rax,1)
L49:
  mov    %r11w,0x6(%rsp)
  cmp    %edx,%r11d
  jl     L73
  mov    %ebp,%esi
  sub    %ebx,%esi
  lea    0x1(%rsi),%edi
  cmp    $0x6,%esi
  jbe    L115
  mov    %edi,%r13d
  movd   %ebx,%xmm1
  movd   %r11d,%xmm2
  mov    %rax,%rcx
  shr    $0x3,%r13d
  pshufd $0x0,%xmm1,%xmm1
  punpcklwd %xmm2,%xmm2
  sub    $0x1,%r13d
  paddd  D66(%rip),%xmm1
  pshufd $0x0,%xmm2,%xmm2
  shl    $0x5,%r13
  lea    0x20(%rax,%r13,1),%r13
L110:
  movdqa %xmm1,%xmm0
  add    $0x20,%rcx
  paddd  %xmm7,%xmm1
  movdqa %xmm0,%xmm4
  movdqa %xmm0,%xmm3
  paddd  %xmm6,%xmm4
  punpcklwd %xmm4,%xmm0
  punpckhwd %xmm4,%xmm3
  movdqa %xmm0,%xmm4
  punpcklwd %xmm3,%xmm0
  punpckhwd %xmm3,%xmm4
  movdqa %xmm2,%xmm3
  punpcklwd %xmm4,%xmm0
  paddw  %xmm5,%xmm0
  punpcklwd %xmm0,%xmm3
  movups %xmm3,-0x20(%rcx)
  movdqa %xmm2,%xmm3
  punpckhwd %xmm0,%xmm3
  movups %xmm3,-0x10(%rcx)
  cmp    %rcx,%r13
  jne    L110
  mov    %edi,%r13d
  and    $0xfffffff8,%r13d
  mov    %r13d,%ecx
  add    %r13d,%ebx
  lea    (%rax,%rcx,4),%rcx
  cmp    %r13d,%edi
  je     L74
L12:
  lea    0x1(%rbx),%edi
  mov    %r11w,(%rcx)
  mov    %di,0x2(%rcx)
  lea    0x1(%rbx),%edi
  cmp    %edi,%ebp
  jl     L74
  add    $0x1,%edi
  mov    %r11w,0x4(%rcx)
  mov    %di,0x6(%rcx)
  lea    0x2(%rbx),%edi
  cmp    %edi,%ebp
  jl     L74
  add    $0x1,%edi
  mov    %r11w,0x8(%rcx)
  mov    %di,0xa(%rcx)
  lea    0x3(%rbx),%edi
  cmp    %edi,%ebp
  jl     L74
  add    $0x1,%edi
  mov    %r11w,0xc(%rcx)
  mov    %di,0xe(%rcx)
  lea    0x4(%rbx),%edi
  cmp    %edi,%ebp
  jl     L74
  add    $0x1,%edi
  mov    %r11w,0x10(%rcx)
  mov    %di,0x12(%rcx)
  lea    0x5(%rbx),%edi
  cmp    %edi,%ebp
  jl     L74
  add    $0x1,%edi
  add    $0x6,%ebx
  mov    %r11w,0x14(%rcx)
  mov    %di,0x16(%rcx)
  cmp    %ebx,%ebp
  jl     L74
  add    $0x1,%ebx
  mov    %r11w,0x18(%rcx)
  mov    %bx,0x1a(%rcx)
  nopl   (%rax)
L74:
  mov    %esi,%esi
  lea    0x4(%rax,%rsi,4),%rax
  jmp    L111
  nopl   0x0(%rax)
L73:
  mov    %r9d,0x20(%rsp)
  lea    0x1(%r11),%r13d
  mov    %r11d,0x24(%rsp)
  mov    %r10,0x28(%rsp)
  mov    %r12,0x10(%rsp)
  mov    %ebx,%r12d
  mov    0x8(%rsp),%rbx
  mov    %r15d,0x18(%rsp)
  mov    %edx,%r15d
  mov    %r14d,0x1c(%rsp)
  mov    %r8,%r14
L69:
  movzwl 0x6(%rsp),%edx
  lea    0x1(%r12),%ecx
  mov    %r14,%r8
  mov    %r13d,%esi
  mov    %cx,0x2(%rax)
  lea    0x4(%rax),%rdi
  mov    %rbx,%rcx
  add    $0x1,%r12d
  mov    %dx,(%rax)
  mov    %r15d,%edx
  call   <fill_array>
  cmp    %r12d,%ebp
  movdqa D32(%rip),%xmm7
  movdqa D28(%rip),%xmm6
  movdqa D43(%rip),%xmm5
  jge    L69
  mov    %r15d,%edx
  mov    %r14,%r8
  mov    0x10(%rsp),%r12
  mov    0x20(%rsp),%r9d
  mov    0x24(%rsp),%r11d
  mov    0x18(%rsp),%r15d
  mov    0x28(%rsp),%r10
  mov    0x1c(%rsp),%r14d
  jmp    L111
L115:
  mov    %rax,%rcx
  jmp    L12
```

tool_calls: name: extract_symbolic_data
arguments: data_label: D32
type: byte[16]
name: extract_symbolic_data
arguments: data_label: D28
type: byte[16]
name: extract_symbolic_data
arguments: data_label: D43
type: byte[16]
name: extract_symbolic_data
arguments: data_label: D66
type: byte[16]

tool: {"D32": [0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00,0x08,0x00,0x00,0x00]}

tool: {"D28": [0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00,0x04,0x00,0x00,0x00]}

tool: {"D43": [0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00,0x01,0x00]}

tool: {"D66": [0x00,0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x03,0x00,0x00,0x00]}

assistant: ```c
short *fill_array(short *list, int access_inx, int loop_dim, int ranges[], int limits[]) {
  int i, j;
  int istart, istop;
  int inx;
  inx = access_inx * 2;
  for (j = 1; j <= ranges[0]; j += 2) {
    istart = (((ranges[j]) > (limits[inx])) ? (ranges[j]) : (limits[inx]));
    istop = (((ranges[j + 1]) < (limits[inx + 1])) ? (ranges[j + 1]) : (limits[inx + 1]));
    if (istart <= istop) {
      for (i = istart; i <= istop; i++) {
        *list++ = access_inx;
        *list++ = i + 1;
        if (access_inx < loop_dim)
          list = fill_array(list, access_inx + 1, loop_dim, ranges + ranges[0] + 1, limits);
      }
    }
  }
  return list;
}
```