user: 请从给定的汇编指令推导出C源代码:

```asm
<set_proc_record>:
  endbr64
  mov    %rcx,%rax
  mov    0x10(%rcx),%rcx
  mov    0x10(%rdx),%rdi
  cmp    %rdi,%rcx
  jbe    L35
  sub    %rdi,%rcx
  js     L130
  pxor   %xmm1,%xmm1
  cvtsi2sd %rcx,%xmm1
L40:
  movsd  %xmm1,0x10(%rsi)
  mov    (%rax),%rcx
  mov    (%rdx),%rdi
  pxor   %xmm0,%xmm0
  cmp    %rdi,%rcx
  jb     L15
  sub    %rdi,%rcx
  js     L123
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L1:
  mulsd  D3(%rip),%xmm0
  divsd  %xmm1,%xmm0
L15:
  movsd  %xmm0,(%rsi)
  mov    0x8(%rax),%rcx
  mov    0x8(%rdx),%rdi
  pxor   %xmm0,%xmm0
  cmp    %rdi,%rcx
  jb     L11
  sub    %rdi,%rcx
  js     L186
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L126:
  mulsd  D3(%rip),%xmm0
  divsd  %xmm1,%xmm0
L11:
  movsd  %xmm0,0x8(%rsi)
  mov    0x20(%rax),%rcx
  test   %rcx,%rcx
  js     L31
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L152:
  mulsd  D3(%rip),%xmm0
  mov    0x18(%rax),%rcx
  test   %rcx,%rcx
  js     L207
  pxor   %xmm1,%xmm1
  cvtsi2sd %rcx,%xmm1
L201:
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x18(%rsi)
  mov    0x20(%rax),%rcx
  test   %rcx,%rcx
  js     L163
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L78:
  movsd  %xmm0,0x20(%rsi)
  mov    0x28(%rax),%rcx
  mov    0x28(%rdx),%rdi
  pxor   %xmm0,%xmm0
  cmp    %rdi,%rcx
  jb     L28
  sub    %rdi,%rcx
  js     L0
  pxor   %xmm0,%xmm0
  cvtsi2sd %rcx,%xmm0
L105:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
L28:
  movsd  %xmm0,0x28(%rsi)
  mov    0x30(%rax),%rax
  mov    0x30(%rdx),%rdx
  cmp    %rdx,%rax
  jb     L169
  sub    %rdx,%rax
  js     L178
  pxor   %xmm0,%xmm0
  cvtsi2sd %rax,%xmm0
L149:
  pxor   %xmm1,%xmm1
  cvtsi2sd %r8d,%xmm1
  divsd  %xmm1,%xmm0
  movsd  %xmm0,0x30(%rsi)
  ret
L130:
  mov    %rcx,%rdi
  shr    %rdi
  and    $0x1,%ecx
  or     %rcx,%rdi
  pxor   %xmm1,%xmm1
  cvtsi2sd %rdi,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L40
L35:
  movq   $0x0,0x10(%rsi)
  ret
L123:
  mov    %rcx,%rdi
  shr    %rdi
  and    $0x1,%ecx
  or     %rcx,%rdi
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L1
L186:
  mov    %rcx,%rdi
  shr    %rdi
  and    $0x1,%ecx
  or     %rcx,%rdi
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L126
L31:
  mov    %rcx,%rdi
  shr    %rdi
  and    $0x1,%ecx
  or     %rcx,%rdi
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L152
L207:
  mov    %rcx,%rdi
  shr    %rdi
  and    $0x1,%ecx
  or     %rcx,%rdi
  pxor   %xmm1,%xmm1
  cvtsi2sd %rdi,%xmm1
  addsd  %xmm1,%xmm1
  jmp    L201
L163:
  mov    %rcx,%rdi
  shr    %rdi
  and    $0x1,%ecx
  or     %rcx,%rdi
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L78
L0:
  mov    %rcx,%rdi
  shr    %rdi
  and    $0x1,%ecx
  or     %rcx,%rdi
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdi,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L105
L178:
  mov    %rax,%rdx
  shr    %rdx
  and    $0x1,%eax
  or     %rax,%rdx
  pxor   %xmm0,%xmm0
  cvtsi2sd %rdx,%xmm0
  addsd  %xmm0,%xmm0
  jmp    L149
L169:
  movq   $0x0,0x28(%rsi)
  ret
```

tool_calls: name: parse_data
arguments: tag: D3
data_type: f64

tool: D3: 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;
  }
}
```