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

```asm
<test_reductions_minmax>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  push   %rbx
  sub    $0x68,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x18(%rbp)
  xor    %eax,%eax
  mov    %rsp,%rax
  mov    %rax,%rbx
  movl   $0x3e8,-0x2c(%rbp)
  mov    -0x2c(%rbp),%eax
  cltq
  sub    $0x1,%rax
  mov    %rax,-0x28(%rbp)
  mov    -0x2c(%rbp),%eax
  cltq
  mov    %rax,%r8
  mov    $0x0,%r9d
  mov    -0x2c(%rbp),%eax
  cltq
  mov    %rax,%rsi
  mov    $0x0,%edi
  mov    -0x2c(%rbp),%eax
  cltq
  lea    0x0(,%rax,4),%rdx
  mov    $0x10,%eax
  sub    $0x1,%rax
  add    %rdx,%rax
  mov    $0x10,%edi
  mov    $0x0,%edx
  div    %rdi
  imul   $0x10,%rax,%rax
  mov    %rax,%rcx
  and    $0xfffffffffffff000,%rcx
  mov    %rsp,%rdx
  sub    %rcx,%rdx
L237:
  cmp    %rdx,%rsp
  je     L426
  sub    $0x1000,%rsp
  orq    $0x0,0xff8(%rsp)
  jmp    L237
L426:
  mov    %rax,%rdx
  and    $0xfff,%edx
  sub    %rdx,%rsp
  mov    %rax,%rdx
  and    $0xfff,%edx
  test   %rdx,%rdx
  je     L731
  and    $0xfff,%eax
  sub    $0x8,%rax
  add    %rsp,%rax
  orq    $0x0,(%rax)
L731:
  mov    %rsp,%rax
  add    $0x3,%rax
  shr    $0x2,%rax
  shl    $0x2,%rax
  mov    %rax,-0x20(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L31
L10:
  pxor   %xmm0,%xmm0
  cvtsi2ssl -0x70(%rbp),%xmm0
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  %xmm0,(%rax,%rdx,4)
  addl   $0x1,-0x70(%rbp)
L31:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L10
  mov    -0x2c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x6c(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L235
L746:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
  comiss -0x6c(%rbp),%xmm0
  jbe    L486
  movss  -0x6c(%rbp),%xmm0
  jmp    L141
L486:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L141:
  movss  %xmm0,-0x6c(%rbp)
  addl   $0x1,-0x70(%rbp)
L235:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L746
  mov    -0x2c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x68(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L552
L50:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
  comiss -0x68(%rbp),%xmm0
  jbe    L738
  movss  -0x68(%rbp),%xmm0
  jmp    L321
L738:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L321:
  movss  %xmm0,-0x68(%rbp)
  addl   $0x1,-0x70(%rbp)
L552:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L50
  movss  -0x6c(%rbp),%xmm0
  ucomiss -0x68(%rbp),%xmm0
  jp     L165
  movss  -0x6c(%rbp),%xmm0
  ucomiss -0x68(%rbp),%xmm0
  je     L158
L165:
  mov    $0x0,%eax
  call   <abort@plt>
L158:
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x64(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L395
L101:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm1
  movss  -0x64(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L589
  movss  -0x64(%rbp),%xmm0
  jmp    L229
L589:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L229:
  movss  %xmm0,-0x64(%rbp)
  addl   $0x1,-0x70(%rbp)
L395:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L101
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x60(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L549
L605:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm1
  movss  -0x60(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L533
  movss  -0x60(%rbp),%xmm0
  jmp    L463
L533:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L463:
  movss  %xmm0,-0x60(%rbp)
  addl   $0x1,-0x70(%rbp)
L549:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L605
  movss  -0x64(%rbp),%xmm0
  ucomiss -0x60(%rbp),%xmm0
  jp     L540
  movss  -0x64(%rbp),%xmm0
  ucomiss -0x60(%rbp),%xmm0
  je     L136
L540:
  mov    $0x0,%eax
  call   <abort@plt>
L136:
  mov    -0x2c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x5c(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L752
L654:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
  comiss -0x5c(%rbp),%xmm0
  jbe    L1
  movss  -0x5c(%rbp),%xmm0
  jmp    L692
L1:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L692:
  movss  %xmm0,-0x5c(%rbp)
  addl   $0x1,-0x70(%rbp)
L752:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L654
  mov    -0x2c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x58(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L719
L484:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
  comiss -0x58(%rbp),%xmm0
  jbe    L771
  movss  -0x58(%rbp),%xmm0
  jmp    L436
L771:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L436:
  movss  %xmm0,-0x58(%rbp)
  addl   $0x1,-0x70(%rbp)
L719:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L484
  movss  -0x5c(%rbp),%xmm0
  ucomiss -0x58(%rbp),%xmm0
  jp     L495
  movss  -0x5c(%rbp),%xmm0
  ucomiss -0x58(%rbp),%xmm0
  je     L35
L495:
  mov    $0x0,%eax
  call   <abort@plt>
L35:
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x54(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L215
L833:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm1
  movss  -0x54(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L223
  movss  -0x54(%rbp),%xmm0
  jmp    L114
L223:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L114:
  movss  %xmm0,-0x54(%rbp)
  addl   $0x1,-0x70(%rbp)
L215:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L833
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x50(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L318
L696:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm1
  movss  -0x50(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L117
  movss  -0x50(%rbp),%xmm0
  jmp    L851
L117:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L851:
  movss  %xmm0,-0x50(%rbp)
  addl   $0x1,-0x70(%rbp)
L318:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L696
  movss  -0x54(%rbp),%xmm0
  ucomiss -0x50(%rbp),%xmm0
  jp     L421
  movss  -0x54(%rbp),%xmm0
  ucomiss -0x50(%rbp),%xmm0
  je     L718
L421:
  mov    $0x0,%eax
  call   <abort@plt>
L718:
  mov    -0x2c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x4c(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L150
L438:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
  comiss -0x4c(%rbp),%xmm0
  jbe    L490
  movss  -0x4c(%rbp),%xmm0
  jmp    L635
L490:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L635:
  movss  %xmm0,-0x4c(%rbp)
  addl   $0x1,-0x70(%rbp)
L150:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L438
  mov    -0x2c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x48(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L5
L180:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
  comiss -0x48(%rbp),%xmm0
  jbe    L510
  movss  -0x48(%rbp),%xmm0
  jmp    L722
L510:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L722:
  movss  %xmm0,-0x48(%rbp)
  addl   $0x1,-0x70(%rbp)
L5:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L180
  movss  -0x4c(%rbp),%xmm0
  ucomiss -0x48(%rbp),%xmm0
  jp     L857
  movss  -0x4c(%rbp),%xmm0
  ucomiss -0x48(%rbp),%xmm0
  je     L93
L857:
  mov    $0x0,%eax
  call   <abort@plt>
L93:
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x44(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L351
L470:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm1
  movss  -0x44(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L305
  movss  -0x44(%rbp),%xmm0
  jmp    L284
L305:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L284:
  movss  %xmm0,-0x44(%rbp)
  addl   $0x1,-0x70(%rbp)
L351:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L470
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x40(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L173
L365:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm1
  movss  -0x40(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L670
  movss  -0x40(%rbp),%xmm0
  jmp    L112
L670:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L112:
  movss  %xmm0,-0x40(%rbp)
  addl   $0x1,-0x70(%rbp)
L173:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L365
  movss  -0x44(%rbp),%xmm0
  ucomiss -0x40(%rbp),%xmm0
  jp     L367
  movss  -0x44(%rbp),%xmm0
  ucomiss -0x40(%rbp),%xmm0
  je     L712
L367:
  mov    $0x0,%eax
  call   <abort@plt>
L712:
  mov    -0x2c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x3c(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L607
L33:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
  comiss -0x3c(%rbp),%xmm0
  jbe    L596
  movss  -0x3c(%rbp),%xmm0
  jmp    L849
L596:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L849:
  movss  %xmm0,-0x3c(%rbp)
  addl   $0x1,-0x70(%rbp)
L607:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L33
  mov    -0x2c(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,-0x38(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L621
L450:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
  comiss -0x38(%rbp),%xmm0
  jbe    L49
  movss  -0x38(%rbp),%xmm0
  jmp    L831
L49:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L831:
  movss  %xmm0,-0x38(%rbp)
  addl   $0x1,-0x70(%rbp)
L621:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L450
  movss  -0x3c(%rbp),%xmm0
  ucomiss -0x38(%rbp),%xmm0
  jp     L492
  movss  -0x3c(%rbp),%xmm0
  ucomiss -0x38(%rbp),%xmm0
  je     L131
L492:
  mov    $0x0,%eax
  call   <abort@plt>
L131:
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x34(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L83
L494:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm1
  movss  -0x34(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L527
  movss  -0x34(%rbp),%xmm0
  jmp    L224
L527:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L224:
  movss  %xmm0,-0x34(%rbp)
  addl   $0x1,-0x70(%rbp)
L83:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L494
  movss  D13(%rip),%xmm0
  movss  %xmm0,-0x30(%rbp)
  movl   $0x0,-0x70(%rbp)
  jmp    L161
L227:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm1
  movss  -0x30(%rbp),%xmm0
  comiss %xmm1,%xmm0
  jbe    L192
  movss  -0x30(%rbp),%xmm0
  jmp    L37
L192:
  mov    -0x20(%rbp),%rax
  mov    -0x70(%rbp),%edx
  movslq %edx,%rdx
  movss  (%rax,%rdx,4),%xmm0
L37:
  movss  %xmm0,-0x30(%rbp)
  addl   $0x1,-0x70(%rbp)
L161:
  mov    -0x70(%rbp),%eax
  cmp    -0x2c(%rbp),%eax
  jl     L227
  movss  -0x34(%rbp),%xmm0
  ucomiss -0x30(%rbp),%xmm0
  jp     L275
  movss  -0x34(%rbp),%xmm0
  ucomiss -0x30(%rbp),%xmm0
  je     L680
L275:
  mov    $0x0,%eax
  call   <abort@plt>
L680:
  mov    %rbx,%rsp
  nop
  mov    -0x18(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L727
  call   <__stack_chk_fail@plt>
L727:
  mov    -0x8(%rbp),%rbx
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D13
type_infered: byte[4]

tool: {"D13": [0x00,0x00,0x80,0xbf]}

assistant: ```c
void test_reductions_minmax(void) {
  const int n = 1000;
  int i;
  float array[n];
  for (i = 0; i < n; i++)
    array[i] = i;
  {
    float res, vres;
    res = (n + 1);
#pragma acc parallel num_gangs(ng) copy(res)

#pragma acc loop gang reduction(min : res)
    for (i = 0; i < n; i++)
      res = (((res) < ((array[i]))) ? (res) : ((array[i])));
    vres = (n + 1);
    for (i = 0; i < n; i++)
      vres = (((vres) < ((array[i]))) ? (vres) : ((array[i])));
    if (res != vres)
      abort();
  };
  {
    float res, vres;
    res = (-1);
#pragma acc parallel num_gangs(ng) copy(res)

#pragma acc loop gang reduction(max : res)
    for (i = 0; i < n; i++)
      res = (((res) > ((array[i]))) ? (res) : ((array[i])));
    vres = (-1);
    for (i = 0; i < n; i++)
      vres = (((vres) > ((array[i]))) ? (vres) : ((array[i])));
    if (res != vres)
      abort();
  };
  {
    float res, vres;
    res = (n + 1);
#pragma acc parallel num_workers(nw) copy(res)

#pragma acc loop worker reduction(min : res)
    for (i = 0; i < n; i++)
      res = (((res) < ((array[i]))) ? (res) : ((array[i])));
    vres = (n + 1);
    for (i = 0; i < n; i++)
      vres = (((vres) < ((array[i]))) ? (vres) : ((array[i])));
    if (res != vres)
      abort();
  };
  {
    float res, vres;
    res = (-1);
#pragma acc parallel num_workers(nw) copy(res)

#pragma acc loop worker reduction(max : res)
    for (i = 0; i < n; i++)
      res = (((res) > ((array[i]))) ? (res) : ((array[i])));
    vres = (-1);
    for (i = 0; i < n; i++)
      vres = (((vres) > ((array[i]))) ? (vres) : ((array[i])));
    if (res != vres)
      abort();
  };
  {
    float res, vres;
    res = (n + 1);
#pragma acc parallel vector_length(vl) copy(res)

#pragma acc loop vector reduction(min : res)
    for (i = 0; i < n; i++)
      res = (((res) < ((array[i]))) ? (res) : ((array[i])));
    vres = (n + 1);
    for (i = 0; i < n; i++)
      vres = (((vres) < ((array[i]))) ? (vres) : ((array[i])));
    if (res != vres)
      abort();
  };
  {
    float res, vres;
    res = (-1);
#pragma acc parallel vector_length(vl) copy(res)

#pragma acc loop vector reduction(max : res)
    for (i = 0; i < n; i++)
      res = (((res) > ((array[i]))) ? (res) : ((array[i])));
    vres = (-1);
    for (i = 0; i < n; i++)
      vres = (((vres) > ((array[i]))) ? (vres) : ((array[i])));
    if (res != vres)
      abort();
  };
  {
    float res, vres;
    res = (n + 1);
#pragma acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(res)

#pragma acc loop gang worker vector reduction(min : res)
    for (i = 0; i < n; i++)
      res = (((res) < ((array[i]))) ? (res) : ((array[i])));
    vres = (n + 1);
    for (i = 0; i < n; i++)
      vres = (((vres) < ((array[i]))) ? (vres) : ((array[i])));
    if (res != vres)
      abort();
  };
  {
    float res, vres;
    res = (-1);
#pragma acc parallel num_gangs(ng) num_workers(nw) vector_length(vl) copy(res)

#pragma acc loop gang worker vector reduction(max : res)
    for (i = 0; i < n; i++)
      res = (((res) > ((array[i]))) ? (res) : ((array[i])));
    vres = (-1);
    for (i = 0; i < n; i++)
      vres = (((vres) > ((array[i]))) ? (vres) : ((array[i])));
    if (res != vres)
      abort();
  };
}
```