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

```asm
<set_io_record>:
  endbr64
  push   %r12
  push   %rbp
  push   %rbx
  mov    %rsi,%rdi
  mov    %rdx,%rsi
  mov    $0x0,%eax
  jmp    L51
L238:
  add    $0x8,%rax
  cmp    $0x58,%rax
  je     L212
L51:
  mov    (%rcx,%rax,1),%rdx
  cmp    (%rsi,%rax,1),%rdx
  jae    L238
  mov    %rdx,(%rsi,%rax,1)
  jmp    L238
L212:
  mov    (%rcx),%r9
  sub    (%rsi),%r9
  mov    0x10(%rcx),%r10
  sub    0x10(%rsi),%r10
  mov    0x20(%rcx),%rdx
  sub    0x20(%rsi),%rdx
  mov    0x30(%rcx),%rbp
  sub    0x30(%rsi),%rbp
  mov    0x40(%rcx),%r11
  sub    0x40(%rsi),%r11
  mov    0x48(%rcx),%rax
  sub    0x48(%rsi),%rax
  mov    %r9,%rbx
  add    %rdx,%rbx
  js     L193
  pxor   %xmm1,%xmm1
  cvtsi2sd %rbx,%xmm1
L294:
  pxor   %xmm0,%xmm0
  cvtsi2sd %r8d,%xmm0
  mov    0x8(%rcx),%rbx
  sub    0x8(%rsi),%rbx
  js     L222
  pxor   %xmm2,%xmm2
  cvtsi2sd %rbx,%xmm2
L197:
  divsd  %xmm0,%xmm2
  mov    0x28(%rcx),%rbx
  sub    0x28(%rsi),%rbx
  js     L43
  pxor   %xmm3,%xmm3
  cvtsi2sd %rbx,%xmm3
L95:
  divsd  %xmm0,%xmm3
  test   %r9,%r9
  js     L232
  pxor   %xmm4,%xmm4
  cvtsi2sd %r9,%xmm4
L136:
  divsd  %xmm0,%xmm4
  test   %rdx,%rdx
  js     L264
  pxor   %xmm5,%xmm5
  cvtsi2sd %rdx,%xmm5
L86:
  divsd  %xmm0,%xmm5
  movapd %xmm0,%xmm8
  addsd  %xmm0,%xmm8
  test   %r10,%r10
  js     L113
  pxor   %xmm6,%xmm6
  cvtsi2sd %r10,%xmm6
L219:
  divsd  %xmm8,%xmm6
  test   %rbp,%rbp
  js     L265
  pxor   %xmm7,%xmm7
  cvtsi2sd %rbp,%xmm7
L217:
  divsd  %xmm8,%xmm7
  ucomisd D29(%rip),%xmm1
  jp     L316
  jne    L316
  imul   $0x3e8,%r8d,%r8d
  movslq %r8d,%r8
  mov    $0x0,%edx
  div    %r8
  test   %rax,%rax
  js     L242
  pxor   %xmm11,%xmm11
  cvtsi2sd %rax,%xmm11
L17:
  pxor   %xmm8,%xmm8
  movapd %xmm8,%xmm10
  movapd %xmm8,%xmm9
  jmp    L177
L193:
  mov    %rbx,%r12
  shr    %r12
  and    $0x1,%ebx
  or     %rbx,%r12
  pxor   %xmm1,%xmm1
  cvtsi2sd %r12,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L294
L222:
  mov    %rbx,%r12
  shr    %r12
  and    $0x1,%ebx
  or     %rbx,%r12
  pxor   %xmm2,%xmm2
  cvtsi2sd %r12,%xmm2
  addsd  %xmm2,%xmm2
  jmp    L197
L43:
  mov    %rbx,%r12
  shr    %r12
  and    $0x1,%ebx
  or     %rbx,%r12
  pxor   %xmm3,%xmm3
  cvtsi2sd %r12,%xmm3
  addsd  %xmm3,%xmm3
  jmp    L95
L232:
  mov    %r9,%rbx
  shr    %rbx
  and    $0x1,%r9d
  or     %r9,%rbx
  pxor   %xmm4,%xmm4
  cvtsi2sd %rbx,%xmm4
  addsd  %xmm4,%xmm4
  jmp    L136
L264:
  mov    %rdx,%r9
  shr    %r9
  and    $0x1,%edx
  or     %rdx,%r9
  pxor   %xmm5,%xmm5
  cvtsi2sd %r9,%xmm5
  addsd  %xmm5,%xmm5
  jmp    L86
L113:
  mov    %r10,%rdx
  shr    %rdx
  mov    %r10,%r9
  and    $0x1,%r9d
  or     %r9,%rdx
  pxor   %xmm6,%xmm6
  cvtsi2sd %rdx,%xmm6
  addsd  %xmm6,%xmm6
  jmp    L219
L265:
  mov    %rbp,%rdx
  shr    %rdx
  mov    %rbp,%r9
  and    $0x1,%r9d
  or     %r9,%rdx
  pxor   %xmm7,%xmm7
  cvtsi2sd %rdx,%xmm7
  addsd  %xmm7,%xmm7
  jmp    L217
L316:
  add    %rbp,%r10
  shr    %r10
  pxor   %xmm8,%xmm8
  cvtsi2sd %r10,%xmm8
  divsd  %xmm1,%xmm8
  imul   $0x3e8,%r8d,%r8d
  movslq %r8d,%r8
  mov    $0x0,%edx
  div    %r8
  test   %rax,%rax
  js     L252
  pxor   %xmm11,%xmm11
  cvtsi2sd %rax,%xmm11
L293:
  mov    0x38(%rcx),%rax
  add    0x18(%rcx),%rax
  sub    0x18(%rsi),%rax
  sub    0x38(%rsi),%rax
  js     L30
  pxor   %xmm10,%xmm10
  cvtsi2sd %rax,%xmm10
L124:
  divsd  %xmm1,%xmm10
  test   %r11,%r11
  js     L147
  pxor   %xmm9,%xmm9
  cvtsi2sd %r11,%xmm9
L85:
  divsd  %xmm1,%xmm9
L177:
  movsd  %xmm2,(%rdi)
  movsd  %xmm3,0x8(%rdi)
  movsd  %xmm4,0x10(%rdi)
  movsd  %xmm5,0x18(%rdi)
  movsd  %xmm6,0x20(%rdi)
  movsd  %xmm7,0x28(%rdi)
  movsd  %xmm8,0x30(%rdi)
  movsd  %xmm11,0x38(%rdi)
  movsd  %xmm10,0x40(%rdi)
  movsd  %xmm9,0x48(%rdi)
  test   %r11,%r11
  js     L74
  pxor   %xmm1,%xmm1
  cvtsi2sd %r11,%xmm1
L159:
  mulsd  D12(%rip),%xmm0
  divsd  %xmm0,%xmm1
  comisd D39(%rip),%xmm1
  jbe    L261
  movsd  D39(%rip),%xmm1
L261:
  movsd  %xmm1,0x50(%rdi)
  pop    %rbx
  pop    %rbp
  pop    %r12
  ret
L252:
  mov    %rax,%rdx
  shr    %rdx
  and    $0x1,%eax
  or     %rax,%rdx
  pxor   %xmm11,%xmm11
  cvtsi2sd %rdx,%xmm11
  addsd  %xmm11,%xmm11
  jmp    L293
L30:
  mov    %rax,%rdx
  shr    %rdx
  and    $0x1,%eax
  or     %rax,%rdx
  pxor   %xmm10,%xmm10
  cvtsi2sd %rdx,%xmm10
  addsd  %xmm10,%xmm10
  jmp    L124
L147:
  mov    %r11,%rax
  shr    %rax
  mov    %r11,%rdx
  and    $0x1,%edx
  or     %rdx,%rax
  pxor   %xmm9,%xmm9
  cvtsi2sd %rax,%xmm9
  addsd  %xmm9,%xmm9
  jmp    L85
L74:
  mov    %r11,%rax
  shr    %rax
  and    $0x1,%r11d
  or     %r11,%rax
  pxor   %xmm1,%xmm1
  cvtsi2sd %rax,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L159
L242:
  mov    %rax,%rdx
  shr    %rdx
  and    $0x1,%eax
  or     %rax,%rdx
  pxor   %xmm11,%xmm11
  cvtsi2sd %rdx,%xmm11
  addsd  %xmm11,%xmm11
  jmp    L17
```

tool_calls: name: extract_symbolic_data
arguments: tag: D29
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D12
type_guessed: f64
name: extract_symbolic_data
arguments: tag: D39
type_guessed: f64[2]

tool: D29: 0

tool: D12: 10

tool: {"D39": [100.0,10.0]}

assistant: ```c
void set_io_record(struct module *mod, double st_array[], unsigned long long pre_array[], unsigned long long cur_array[], int inter) {
  int i;
  for (i = 0; i < 11; i++) {
    if (cur_array[i] < pre_array[i]) {
      pre_array[i] = cur_array[i];
    }
  }
  unsigned long long rd_ios = cur_array[0] - pre_array[0];
  unsigned long long rd_merges = cur_array[1] - pre_array[1];
  unsigned long long rd_sectors = cur_array[2] - pre_array[2];
  unsigned long long rd_ticks = cur_array[3] - pre_array[3];
  ;
  unsigned long long wr_ios = cur_array[4] - pre_array[4];
  unsigned long long wr_merges = cur_array[5] - pre_array[5];
  unsigned long long wr_sectors = cur_array[6] - pre_array[6];
  unsigned long long wr_ticks = cur_array[7] - pre_array[7];
  unsigned long long ticks = cur_array[8] - pre_array[8];
  unsigned long long aveq = cur_array[9] - pre_array[9];
  double n_ios = rd_ios + wr_ios;
  double n_ticks = rd_ticks + wr_ticks;
  double n_kbytes = (rd_sectors + wr_sectors) / 2;
  st_array[0] = rd_merges / (inter * 1.0);
  st_array[1] = wr_merges / (inter * 1.0);
  st_array[2] = rd_ios / (inter * 1.0);
  st_array[3] = wr_ios / (inter * 1.0);
  st_array[4] = rd_sectors / (inter * 2.0);
  st_array[5] = wr_sectors / (inter * 2.0);
  st_array[6] = n_ios ? n_kbytes / n_ios : 0.0;
  st_array[7] = aveq / (inter * 1000);
  st_array[8] = n_ios ? n_ticks / n_ios : 0.0;
  st_array[9] = n_ios ? ticks / n_ios : 0.0;
  st_array[10] = ticks / (inter * 10.0);
  if (st_array[10] > 100.0)
    st_array[10] = 100.0;
}
```