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

```asm
<main>:
  endbr64
  push   %rbp
  mov    %rsp,%rbp
  sub    $0xd0,%rsp
  mov    %fs:0x28,%rax
  mov    %rax,-0x8(%rbp)
  xor    %eax,%eax
  movl   $0x0,-0xb8(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  pxor   %xmm0,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
  lea    D51(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0xc4(%rbp),%rax
  mov    %rax,%rsi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D67(%rip),%rax
  mov    %rax,%rdi
  call   <puts@plt>
  movl   $0x0,-0xc0(%rbp)
  jmp    L85
L49:
  lea    D79(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x90(%rbp),%rdx
  mov    -0xc0(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    %rax,%rsi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  lea    D44(%rip),%rax
  mov    %rax,%rdi
  mov    $0x0,%eax
  call   <printf@plt>
  lea    -0x60(%rbp),%rdx
  mov    -0xc0(%rbp),%eax
  cltq
  shl    $0x2,%rax
  add    %rdx,%rax
  mov    %rax,%rsi
  lea    D77(%rip),%rax
  mov    %rax,%rdi
  call   <scanf@plt>
  mov    -0xc0(%rbp),%eax
  cltq
  mov    -0x60(%rbp,%rax,4),%edx
  mov    -0xc0(%rbp),%eax
  cltq
  mov    %edx,-0x30(%rbp,%rax,4)
  addl   $0x1,-0xc0(%rbp)
L85:
  mov    -0xc4(%rbp),%eax
  cmp    %eax,-0xc0(%rbp)
  jl     L49
  movl   $0x270f,-0x3c(%rbp)
  movl   $0x0,-0xb4(%rbp)
  jmp    L69
L103:
  movl   $0x9,-0xbc(%rbp)
  movl   $0x0,-0xc0(%rbp)
  jmp    L105
L68:
  mov    -0xc0(%rbp),%eax
  cltq
  mov    -0x90(%rbp,%rax,4),%eax
  cmp    %eax,-0xb4(%rbp)
  jl     L10
  mov    -0xc0(%rbp),%eax
  cltq
  mov    -0x60(%rbp,%rax,4),%edx
  mov    -0xbc(%rbp),%eax
  cltq
  mov    -0x60(%rbp,%rax,4),%eax
  cmp    %eax,%edx
  jge    L10
  mov    -0xc0(%rbp),%eax
  cltq
  mov    -0x60(%rbp,%rax,4),%eax
  test   %eax,%eax
  jle    L10
  mov    -0xc0(%rbp),%eax
  mov    %eax,-0xbc(%rbp)
L10:
  addl   $0x1,-0xc0(%rbp)
L105:
  mov    -0xc4(%rbp),%eax
  cmp    %eax,-0xc0(%rbp)
  jl     L68
  mov    -0xbc(%rbp),%eax
  cltq
  mov    -0x60(%rbp,%rax,4),%eax
  lea    -0x1(%rax),%edx
  mov    -0xbc(%rbp),%eax
  cltq
  mov    %edx,-0x60(%rbp,%rax,4)
  mov    -0xbc(%rbp),%eax
  cltq
  mov    -0x60(%rbp,%rax,4),%eax
  test   %eax,%eax
  jne    L78
  addl   $0x1,-0xb8(%rbp)
  mov    -0xb4(%rbp),%eax
  add    $0x1,%eax
  pxor   %xmm0,%xmm0
  cvtsi2sd %eax,%xmm0
  movsd  %xmm0,-0x98(%rbp)
  movsd  -0xa8(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  mov    -0xbc(%rbp),%eax
  cltq
  mov    -0x90(%rbp,%rax,4),%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  subsd  %xmm1,%xmm0
  mov    -0xbc(%rbp),%eax
  cltq
  mov    -0x30(%rbp,%rax,4),%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa8(%rbp)
  movsd  -0xa0(%rbp),%xmm0
  addsd  -0x98(%rbp),%xmm0
  mov    -0xbc(%rbp),%eax
  cltq
  mov    -0x90(%rbp,%rax,4),%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  subsd  %xmm1,%xmm0
  movsd  %xmm0,-0xa0(%rbp)
L78:
  addl   $0x1,-0xb4(%rbp)
L69:
  mov    -0xc4(%rbp),%eax
  cmp    %eax,-0xb8(%rbp)
  jne    L103
  mov    -0xc4(%rbp),%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  -0xa8(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0xb0(%rbp)
  mov    -0xc4(%rbp),%eax
  pxor   %xmm1,%xmm1
  cvtsi2sd %eax,%xmm1
  movsd  -0xa0(%rbp),%xmm0
  divsd  %xmm1,%xmm0
  cvtsd2ss %xmm0,%xmm0
  movss  %xmm0,-0xac(%rbp)
  pxor   %xmm2,%xmm2
  cvtss2sd -0xb0(%rbp),%xmm2
  movq   %xmm2,%rax
  movq   %rax,%xmm0
  lea    D37(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  pxor   %xmm3,%xmm3
  cvtss2sd -0xac(%rbp),%xmm3
  movq   %xmm3,%rax
  movq   %rax,%xmm0
  lea    D19(%rip),%rax
  mov    %rax,%rdi
  mov    $0x1,%eax
  call   <printf@plt>
  nop
  mov    -0x8(%rbp),%rax
  sub    %fs:0x28,%rax
  je     L36
  call   <__stack_chk_fail@plt>
L36:
  leave
  ret
```

tool_calls: name: parse_data
arguments: label: D51
datatype: string
name: parse_data
arguments: label: D77
datatype: string
name: parse_data
arguments: label: D67
datatype: string
name: parse_data
arguments: label: D79
datatype: string
name: parse_data
arguments: label: D44
datatype: string
name: parse_data
arguments: label: D37
datatype: string
name: parse_data
arguments: label: D19
datatype: string

tool: D51: 
Enter the Total Number of Processes:	

tool: D77: %d

tool: D67: 
Enter Details of 

tool: D79: 
Enter Arrival Time:	

tool: D44: Enter Burst Time:	

tool: D37: 

Average Waiting Time:	%lf


tool: D19: Average Turnaround Time:	%lf


assistant: ```c
void main() {
  int arrival_time[10], burst_time[10], temp[10];
  int i, smallest, count = 0, time, limit;
  double wait_time = 0, turnaround_time = 0, end;
  float average_waiting_time, average_turnaround_time;
  printf("\nEnter the Total Number of Processes:\t");
  scanf("%d", &limit);
  printf("\nEnter Details of \n");
  for (i = 0; i < limit; i++) {
    printf("\nEnter Arrival Time:\t");
    scanf("%d", &arrival_time[i]);
    printf("Enter Burst Time:\t");
    scanf("%d", &burst_time[i]);
    temp[i] = burst_time[i];
  }
  burst_time[9] = 9999;
  for (time = 0; count != limit; time++) {
    smallest = 9;
    for (i = 0; i < limit; i++) {
      if (arrival_time[i] <= time && burst_time[i] < burst_time[smallest] && burst_time[i] > 0) {
        smallest = i;
      }
    }
    burst_time[smallest]--;
    if (burst_time[smallest] == 0) {
      count++;
      end = time + 1;
      wait_time = wait_time + end - arrival_time[smallest] - temp[smallest];
      turnaround_time = turnaround_time + end - arrival_time[smallest];
    }
  }
  average_waiting_time = wait_time / limit;
  average_turnaround_time = turnaround_time / limit;
  printf("\n\nAverage Waiting Time:\t%lf\n", average_waiting_time);
  printf("Average Turnaround Time:\t%lf\n", average_turnaround_time);
}
```