user: 请显示与下面列出的汇编代码相匹配的C语言实现：

```asm
<set_proc_record>:
  endbr64
  mov    %rsi,%rax
  mov    %rdx,%rsi
  mov    %rcx,%rdx
  mov    0x10(%rcx),%rcx
  mov    0x10(%rsi),%rdi
  cmp    %rdi,%rcx
  jbe    L113
  sub    %rdi,%rcx
  js     L111
  pxor   %xmm2,%xmm2
  mov    (%rsi),%rdi
  cvtsi2sd %rcx,%xmm2
  mov    (%rdx),%rcx
  movsd  %xmm2,0x10(%rax)
  cmp    %rdi,%rcx
  jae    L71
L157:
  movsd  D5(%rip),%xmm0
  pxor   %xmm1,%xmm1
L181:
  mov    0x8(%rdx),%rcx
  mov    0x8(%rsi),%rdi
  movsd  %xmm1,(%rax)
  pxor   %xmm1,%xmm1
  cmp    %rdi,%rcx
  jb     L95
  sub    %rdi,%rcx
  js     L171
  pxor   %xmm1,%xmm1
  cvtsi2sd %rcx,%xmm1
L131:
  mulsd  %xmm0,%xmm1
  divsd  %xmm2,%xmm1
L95:
  mov    0x20(%rdx),%rcx
  movsd  %xmm1,0x8(%rax)
  test   %rcx,%rcx
  js     L45
  pxor   %xmm1,%xmm1
  cvtsi2sd %rcx,%xmm1
L42:
  mov    0x18(%rdx),%rcx
  mulsd  %xmm1,%xmm0
  test   %rcx,%rcx
  js     L9
  pxor   %xmm2,%xmm2
  cvtsi2sd %rcx,%xmm2
L68:
  mov    0x28(%rdx),%rcx
  mov    0x28(%rsi),%rdi
  movsd  %xmm1,0x20(%rax)
  divsd  %xmm2,%xmm0
  movsd  %xmm0,0x18(%rax)
  pxor   %xmm0,%xmm0
  cmp    %rdi,%rcx
  jb     L28
  sub    %rdi,%rcx
  js     L179
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L143:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
L28:
  mov    0x30(%rdx),%rdx
  mov    0x30(%rsi),%rcx
  movsd  %xmm0,0x28(%rax)
  cmp    %rcx,%rdx
  jb     L83
  sub    %rcx,%rdx
  js     L40
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  cvtsi2sd %rdx,%xmm0
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x30(%rax)
  ret
  nopl   (%rax)
L111:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm2,%xmm2
  shr    %rdi
  or     %rcx,%rdi
  mov    (%rdx),%rcx
  cvtsi2sd %rdi,%xmm2
  mov    (%rsi),%rdi
  addsd  %xmm2,%xmm2
  movsd  %xmm2,0x10(%rax)
  cmp    %rdi,%rcx
  jb     L157
L71:
  sub    %rdi,%rcx
  js     L110
  pxor   %xmm1,%xmm1
  cvtsi2sd %rcx,%xmm1
L184:
  movsd  D5(%rip),%xmm0
  mulsd  %xmm0,%xmm1
  divsd  %xmm2,%xmm1
  jmp    L181
  nopl   0x0(%rax)
L113:
  movq   $0x0,0x10(%rax)
  ret
  nopl   0x0(%rax)
L83:
  movq   $0x0,0x28(%rax)
  ret
  nopl   0x0(%rax)
L9:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm2,%xmm2
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm2
  addsd  %xmm2,%xmm2
  jmp    L68
  cs nopw 0x0(%rax,%rax,1)
L45:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm1,%xmm1
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L42
  xchg   %ax,%ax
L179:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm0,%xmm0
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L143
  xchg   %ax,%ax
L171:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm1,%xmm1
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L131
  xchg   %ax,%ax
L110:
  mov    %rcx,%rdi
  and    $0x1,%ecx
  pxor   %xmm1,%xmm1
  shr    %rdi
  or     %rcx,%rdi
  cvtsi2sd %rdi,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L184
  xchg   %ax,%ax
L40:
  mov    %rdx,%rcx
  pxor   %xmm0,%xmm0
  pxor   %xmm1,%xmm1
  and    $0x1,%edx
  shr    %rcx
  cvtsi2sd %r8d,%xmm1
  or     %rdx,%rcx
  cvtsi2sd %rcx,%xmm0
  addsd  %xmm0,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x30(%rax)
  ret
```

tool_calls: name: unpack_data
arguments: data_tag: D5
data_type: f64

tool: D5: 100

assistant: ```c
void set_proc_record(struct module *mod, double st_array[], unsigned long long pre_array[], unsigned long long cur_array[], int inter) {
  if (cur_array[2] > pre_array[2]) {
    st_array[2] = cur_array[2] - pre_array[2];
  } else {
    st_array[2] = 0;
    return;
  }
  if (cur_array[0] >= pre_array[0]) {
    st_array[0] = (cur_array[0] - pre_array[0]) * 100.0 / st_array[2];
  } else {
    st_array[0] = 0;
  }
  if (cur_array[1] >= pre_array[1]) {
    st_array[1] = (cur_array[1] - pre_array[1]) * 100.0 / st_array[2];
  } else {
    st_array[1] = 0;
  }
  st_array[3] = cur_array[4] * 100.0 / cur_array[3];
  st_array[4] = cur_array[4];
  if (cur_array[5] >= pre_array[5]) {
    st_array[5] = (cur_array[5] - pre_array[5]) * 1.0 / inter;
  } else {
    st_array[5] = 0;
  }
  if (cur_array[6] >= pre_array[6]) {
    st_array[6] = (cur_array[6] - pre_array[6]) * 1.0 / inter;
  } else {
    st_array[5] = 0;
  }
}
```