user: 下面的汇编指令对应的C源代码是什么：

```asm
<par_monitor>:
  endbr64
  push   %rbp
  movslq %edi,%r10
  lea    0x2(%rdi),%eax
  mov    %rdx,%r11
  push   %rbx
  imul   $0xcccccccd,%eax,%eax
  mov    %rcx,%rdx
  movslq %esi,%rsi
  lea    0x0(,%r10,4),%rcx
  pxor   %xmm1,%xmm1
  lea    (%r11,%rcx,1),%rbp
  lea    (%r8,%rcx,1),%rbx
  sub    $0x8,%rsp
  add    $0x19999998,%eax
  cvtss2sd 0x0(%rbp),%xmm1
  addsd  (%r9,%rsi,8),%xmm1
  ror    %eax
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,(%rbx)
  cmp    $0x19999998,%eax
  jbe    L140
  lea    0x7(%rdi),%eax
  imul   $0xcccccccd,%eax,%eax
  add    $0x19999998,%eax
  ror    %eax
  cmp    $0x19999998,%eax
  jbe    L355
  lea    0x6(%rdi),%eax
  imul   $0xcccccccd,%eax,%eax
  add    $0x19999998,%eax
  ror    %eax
  cmp    $0x19999998,%eax
  jbe    L183
  lea    0x5(%rdi),%eax
  imul   $0xcccccccd,%eax,%eax
  add    $0x19999998,%eax
  ror    %eax
  cmp    $0x19999998,%eax
  jbe    L342
  lea    0x9(%rdi),%eax
  imul   $0xcccccccd,%eax,%eax
  add    $0x19999998,%eax
  ror    %eax
  cmp    $0x19999998,%eax
  jbe    L223
  lea    0x8(%rdi),%eax
  imul   $0xcccccccd,%eax,%eax
  add    $0x19999998,%eax
  ror    %eax
  cmp    $0x19999998,%eax
  jbe    L223
  lea    0x1(%rdi),%eax
  imul   $0xcccccccd,%eax,%eax
  add    $0x19999998,%eax
  ror    %eax
  cmp    $0x19999998,%eax
  jbe    L355
  imul   $0xcccccccd,%edi,%eax
  add    $0x19999998,%eax
  ror    %eax
  cmp    $0x19999998,%eax
  jbe    L126
  lea    0x3(%rdi),%eax
  imul   $0xcccccccd,%eax,%eax
  add    $0x19999998,%eax
  ror    %eax
  cmp    $0x19999998,%eax
  jbe    L258
  lea    0x4(%rdi),%eax
  imul   $0xcccccccd,%eax,%eax
  add    $0x19999998,%eax
  ror    %eax
  cmp    $0x19999998,%eax
  ja     L355
L258:
  pxor   %xmm0,%xmm0
  comiss %xmm1,%xmm0
  jbe    L355
  movl   $0x0,(%rbx)
L355:
  add    $0x8,%rsp
  pop    %rbx
  pop    %rbp
  ret
  nopw   0x0(%rax,%rax,1)
L140:
  movss  D81(%rip),%xmm0
  comiss %xmm0,%xmm1
  jbe    L23
  cmpl   $0x1,0x4(%rdx,%rcx,1)
  lea    0x4(%rcx),%rax
  je     L150
L105:
  cmpl   $0x1,(%rdx,%r10,4)
  je     L29
L23:
  movss  0x0(%rbp),%xmm0
  divss  %xmm1,%xmm0
  call   <fabs@plt>
  cmp    $0x63,%eax
  jg     L193
  movss  (%rbx),%xmm0
L244:
  pxor   %xmm1,%xmm1
  comiss %xmm0,%xmm1
  jbe    L355
  call   <fabs@plt>
  pxor   %xmm0,%xmm0
  cvtsi2ss %eax,%xmm0
  movss  %xmm0,(%rbx)
  jmp    L355
  xchg   %ax,%ax
L193:
  movss  0x0(%rbp),%xmm0
  divss  D59(%rip),%xmm0
  movss  %xmm0,(%rbx)
  jmp    L244
  nopl   0x0(%rax,%rax,1)
L223:
  movss  0x0(%rbp),%xmm0
  movaps %xmm1,%xmm2
  subss  %xmm0,%xmm2
  comiss D90(%rip),%xmm2
  jb     L35
  addss  D90(%rip),%xmm0
  movss  %xmm0,(%rbx)
  jmp    L355
  nopw   0x0(%rax,%rax,1)
L29:
  divss  %xmm1,%xmm0
  movaps %xmm0,%xmm1
  movss  %xmm0,(%rbx)
  jmp    L23
  nopl   0x0(%rax,%rax,1)
L150:
  add    %rax,%r8
  movss  D158(%rip),%xmm1
  addss  (%r8),%xmm1
  movss  %xmm1,(%r8)
  movss  (%rbx),%xmm1
  jmp    L105
  xchg   %ax,%ax
L183:
  movss  0x0(%rbp),%xmm0
  movaps %xmm1,%xmm2
  divss  %xmm0,%xmm2
  comiss D136(%rip),%xmm2
  jb     L208
  mulss  D136(%rip),%xmm0
  movaps %xmm0,%xmm1
  movss  %xmm0,(%rbx)
  movss  0x0(%rbp),%xmm0
L134:
  pxor   %xmm2,%xmm2
  comiss %xmm0,%xmm2
  jb     L340
  movl   $0x76453719,0x0(%rbp)
  movss  (%rbx),%xmm1
L340:
  comiss %xmm1,%xmm2
  jb     L355
  movl   $0x76453719,(%rbx)
  jmp    L355
  nopl   0x0(%rax)
L208:
  movaps %xmm0,%xmm2
  divss  %xmm1,%xmm2
  comiss D136(%rip),%xmm2
  jb     L134
  divss  D136(%rip),%xmm0
  movaps %xmm0,%xmm1
  movss  %xmm0,(%rbx)
  movss  0x0(%rbp),%xmm0
  jmp    L134
  xchg   %ax,%ax
L35:
  movaps %xmm0,%xmm2
  subss  %xmm1,%xmm2
  comiss D90(%rip),%xmm2
  jb     L355
  subss  D90(%rip),%xmm0
  movss  %xmm0,(%rbx)
  jmp    L355
  nopl   (%rax)
L342:
  movaps %xmm1,%xmm0
  divss  0x0(%rbp),%xmm0
  call   <fabs@plt>
  cmp    $0x9,%eax
  jg     L0
  movss  0x0(%rbp),%xmm1
  movss  (%rbx),%xmm0
  movaps %xmm1,%xmm2
  divss  %xmm0,%xmm2
  comiss D136(%rip),%xmm2
  jb     L389
  movaps %xmm1,%xmm0
  divss  D136(%rip),%xmm0
  movss  %xmm0,(%rbx)
L389:
  comiss D136(%rip),%xmm0
  jbe    L311
  movl   $0x41200000,(%rbx)
  jmp    L355
  cs nopw 0x0(%rax,%rax,1)
L0:
  movss  D136(%rip),%xmm0
  mulss  0x0(%rbp),%xmm0
  movss  %xmm0,(%rbx)
  jmp    L389
  nopl   0x0(%rax,%rax,1)
L126:
  movss  D40(%rip),%xmm0
  comiss %xmm1,%xmm0
  jb     L355
  movss  %xmm0,(%rbx)
  jmp    L355
  nopw   0x0(%rax,%rax,1)
L311:
  pxor   %xmm1,%xmm1
  comiss %xmm0,%xmm1
  jbe    L355
  movl   $0x3dcccccd,(%rbx)
  jmp    L355
```

tool_calls: name: disassemble_data
arguments: label: D81
type_infered: f32
name: disassemble_data
arguments: label: D59
type_infered: f32
name: disassemble_data
arguments: label: D90
type_infered: f32
name: disassemble_data
arguments: label: D158
type_infered: f32
name: disassemble_data
arguments: label: D136
type_infered: f32
name: disassemble_data
arguments: label: D40
type_infered: byte[4]

tool: D81: 1

tool: D59: 100

tool: D90: 100000

tool: D158: 90

tool: D136: 10

tool: {"D40": [0x00,0x00,0x00,0xc0]}

assistant: ```c
void par_monitor(int l, int j, float a[], int ia[], float atry[], double da[]) {
  extern int (*pfunc)(const char *, ...);
  extern char device[];
  int hitwall = 0;
  atry[l] = a[l] + da[j];
  if ((l + 2) % 10 == 0) {
    if (atry[l] > 1.) {
      if (ia[l + 1] == 1)
        atry[l + 1] = atry[l + 1] + 90.;
      if (ia[l] == 1)
        atry[l] = 1. / atry[l];
    }
    if (fabs(a[l] / atry[l]) >= 100.) {
      atry[l] = a[l] / 100.;
    };
    if (atry[l] < 0.) {
      atry[l] = fabs(atry[l]);
    };
    return;
  };
  if ((l + 7) % 10 == 0) {
    return;
  };
  if ((l + 6) % 10 == 0) {
    if (atry[l] / a[l] >= 10.) {
      atry[l] = a[l] * 10.;
    } else if (a[l] / atry[l] >= 10.) {
      atry[l] = a[l] / 10.;
    };
    if (a[l] <= 0.00) {
      a[l] = 1e33;
      hitwall = 1;
    };
    if (atry[l] <= 0.00) {
      atry[l] = 1e33;
      hitwall = 1;
    };
    return;
  };
  if ((l + 5) % 10 == 0) {
    if (fabs(atry[l] / a[l]) >= 10.) {
      atry[l] = a[l] * 10.;
    } else if (a[l] / atry[l] >= 10.) {
      atry[l] = a[l] / 10.;
    }
    if (atry[l] > 10.) {
      atry[l] = 10.;
    } else if (atry[l] < 0.0) {
      atry[l] = 0.1;
    };
    return;
  };
  if ((l + 9) % 10 == 0 || (l + 8) % 10 == 0) {
    if (atry[l] - a[l] >= 100000.) {
      atry[l] = a[l] + 100000.;
    } else if (a[l] - atry[l] >= 100000.) {
      atry[l] = a[l] - 100000.;
    };
    return;
  };
  if ((l + 1) % 10 == 0) {
    return;
  };
  if (l % 10 == 0) {
    if (atry[l] <= -2.0) {
      atry[l] = -2.0;
    };
    return;
  };
  if ((l + 3) % 10 == 0 || (l + 4) % 10 == 0) {
    if (atry[l] < 0.)
      atry[l] = 0.0;
    hitwall = 1;
  }
  return;
}
```