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

```asm
<runmeltsNoCO2>:
  endbr64
  push   %r15
  push   %r14
  mov    %rcx,%r14
  push   %r13
  push   %r12
  mov    %rdi,%r12
  mov    %rcx,%rdi
  push   %rbp
  push   %rbx
  mov    %rsi,%rbx
  mov    $0x21,%esi
  sub    $0x1b8,%rsp
  mov    0x1f0(%rsp),%rax
  mov    %rdx,0x10(%rsp)
  xor    %edx,%edx
  mov    %r8,0x18(%rsp)
  mov    %rax,0x28(%rsp)
  mov    0x1f8(%rsp),%rax
  mov    %r9,0x20(%rsp)
  mov    %rax,0x30(%rsp)
  movsd  %xmm0,0x8(%rsp)
  movsd  %xmm1,0x38(%rsp)
  movsd  %xmm2,0x40(%rsp)
  movsd  %xmm3,0x48(%rsp)
  movsd  %xmm4,0x50(%rsp)
  movsd  %xmm5,0x58(%rsp)
  mov    %fs:0x28,%rax
  mov    %rax,0x1a8(%rsp)
  xor    %eax,%eax
  mov    %si,0x6e(%rsp)
  mov    $0x21,%eax
  lea    D7(%rip),%rsi
  mov    %ax,0x6a(%rsp)
  mov    %dx,0x6c(%rsp)
  call   <strcasecmp@plt>
  test   %rax,%rax
  jne    L53
  movb   $0x0,0x6e(%rsp)
L53:
  mov    %rbx,%rax
  lea    0x80(%rbx),%rcx
  pxor   %xmm1,%xmm1
  mov    %rbx,%rdx
  nopl   0x0(%rax,%rax,1)
L35:
  addsd  (%rdx),%xmm1
  add    $0x8,%rdx
  cmp    %rcx,%rdx
  jne    L35
  movsd  D132(%rip),%xmm2
  nopl   (%rax)
L44:
  movsd  (%rax),%xmm0
  add    $0x8,%rax
  mulsd  %xmm2,%xmm0
  divsd  %xmm1,%xmm0
  movsd  %xmm0,-0x8(%rax)
  cmp    %rcx,%rax
  jne    L44
  lea    0x70(%rsp),%rbp
  mov    %r12,%rdx
  lea    D62(%rip),%rsi
  mov    %rbp,%rdi
  lea    D114(%rip),%r13
  call   <sprintf@plt>
  mov    %r13,%rsi
  mov    %rbp,%rdi
  call   <fopen@plt>
  sub    $0x8,%rsp
  push   0x78(%rbx)
  movsd  0x38(%rbx),%xmm7
  push   0x68(%rbx)
  mov    %rax,%rdi
  mov    %rax,%r15
  lea    D0(%rip),%rsi
  movsd  0x30(%rbx),%xmm6
  push   0x60(%rbx)
  mov    $0x8,%eax
  movsd  0x28(%rbx),%xmm5
  push   0x58(%rbx)
  movsd  0x20(%rbx),%xmm4
  push   0x50(%rbx)
  movsd  0x18(%rbx),%xmm3
  push   0x48(%rbx)
  movsd  0x10(%rbx),%xmm2
  push   0x40(%rbx)
  movsd  0x8(%rbx),%xmm1
  movsd  (%rbx),%xmm0
  call   <fprintf@plt>
  mov    0x58(%rsp),%rdx
  add    $0x40,%rsp
  movsd  0x40(%rsp),%xmm1
  movsd  0x38(%rsp),%xmm0
  lea    D17(%rip),%rsi
  mov    %r15,%rdi
  mov    $0x2,%eax
  call   <fprintf@plt>
  movsd  0x8(%rsp),%xmm7
  pxor   %xmm6,%xmm6
  ucomisd %xmm6,%xmm7
  jp     L25
  jne    L25
L66:
  mov    %r15,%rdi
  call   <fclose@plt>
  mov    %r12,%rdx
  mov    %rbp,%rdi
  lea    D18(%rip),%rsi
  call   <sprintf@plt>
  mov    %rbp,%rdi
  mov    %r13,%rsi
  call   <fopen@plt>
  sub    $0x8,%rsp
  mov    %r14,%rcx
  movsd  D92(%rip),%xmm5
  mov    %rax,%r15
  lea    0x74(%rsp),%rax
  movsd  D87(%rip),%xmm4
  movsd  D49(%rip),%xmm3
  push   %rax
  movsd  D93(%rip),%xmm2
  lea    D39(%rip),%rsi
  mov    %r15,%rdi
  push   0x38(%rsp)
  lea    0x82(%rsp),%rax
  push   %rax
  push   %rax
  mov    0x58(%rsp),%r9
  mov    $0x7,%eax
  push   %r9
  movsd  0x78(%rsp),%xmm1
  movsd  0x88(%rsp),%xmm6
  mov    0x40(%rsp),%rdx
  movsd  0x80(%rsp),%xmm0
  lea    0x9e(%rsp),%r8
  call   <fprintf@plt>
  add    $0x30,%rsp
  mov    %r15,%rdi
  call   <fclose@plt>
  mov    %r12,%rdx
  mov    %rbp,%rdi
  lea    D121(%rip),%rsi
  call   <sprintf@plt>
  mov    %rbp,%rdi
  mov    %r13,%rsi
  call   <fopen@plt>
  mov    0x20(%rsp),%rdi
  mov    %rax,%rbp
  mov    %rax,%rsi
  call   <fputs@plt>
  mov    %rbp,%rdi
  lea    0xe0(%rsp),%rbp
  call   <fclose@plt>
  mov    %rbp,%rdi
  mov    %r12,%rdx
  lea    D124(%rip),%rsi
  call   <sprintf@plt>
  mov    %rbp,%rdi
  call   <system@plt>
  mov    0x1a8(%rsp),%rax
  sub    %fs:0x28,%rax
  jne    L19
  add    $0x1b8,%rsp
  pop    %rbx
  pop    %rbp
  pop    %r12
  pop    %r13
  pop    %r14
  pop    %r15
  ret
  nopl   0x0(%rax,%rax,1)
L25:
  movsd  0x8(%rsp),%xmm0
  lea    D2(%rip),%rsi
  mov    %r15,%rdi
  mov    $0x1,%eax
  call   <fprintf@plt>
  jmp    L66
L19:
  call   <__stack_chk_fail@plt>
```

tool_calls: name: retrieve_data
arguments: data_label: D7
type_guessed: string
name: retrieve_data
arguments: data_label: D132
type_guessed: f32[2]
name: retrieve_data
arguments: data_label: D62
type_guessed: string
name: retrieve_data
arguments: data_label: D114
type_guessed: string
name: retrieve_data
arguments: data_label: D0
type_guessed: string
name: retrieve_data
arguments: data_label: D17
type_guessed: string
name: retrieve_data
arguments: data_label: D18
type_guessed: string
name: retrieve_data
arguments: data_label: D92
type_guessed: f64
name: retrieve_data
arguments: data_label: D87
type_guessed: f64
name: retrieve_data
arguments: data_label: D49
type_guessed: f64
name: retrieve_data
arguments: data_label: D93
type_guessed: f64
name: retrieve_data
arguments: data_label: D39
type_guessed: string
name: retrieve_data
arguments: data_label: D121
type_guessed: string
name: retrieve_data
arguments: data_label: D124
type_guessed: string
name: retrieve_data
arguments: data_label: D2
type_guessed: string

tool: D7: ptpath

tool: {"D132": [0.0,3.390625]}

tool: D62: %ssc.melts

tool: D114: w

tool: D0: Title: dummy			
Initial Composition: SiO2 %.4f			
Initial Composition: TiO2 %.4f			
Initial Composition: Al2O3 %.4f			
Initial Composition: Fe2O3 %.4f			
Initial Composition: Cr2O3 %.4f			
Initial Composition: FeO %.4f			
Initial Composition: MnO %.4f			
Initial Composition: MgO %.4f			
Initial Composition: NiO %.4f			
Initial Composition: CoO %.4f			
Initial Composition: CaO %.4f			
Initial Composition: Na2O %.4f			
Initial Composition: K2O %.4f			
Initial Composition: P2O5 %.4f			
Initial Composition: H2O %.4f


tool: D17: Initial Temperature: %.2f			
Initial Pressure: %.2f			
log fo2 Path: %s


tool: D18: %smelts_env

tool: D92: 600

tool: D87: 3000

tool: D49: 1

tool: D93: 90000

tool: D39: 
ALPHAMELTS_VERSION		%s			
ALPHAMELTS_MODE			%s			
%sALPHAMELTS_PTPATH_FILE		ptpath			
ALPHAMELTS_DELTAP		%.0f			
ALPHAMELTS_DELTAT		%.0f			
ALPHAMELTS_MAXP			%.0f			
ALPHAMELTS_MINP			%.0f			
ALPHAMELTS_MAXT			%.0f			
ALPHAMELTS_MINT			%.0f			
%sALPHAMELTS_FRACTIONATE_SOLIDS	true			
%sALPHAMELTS_MASSIN		%g			
%sALPHAMELTS_FRACTIONATE_WATER	true			
%sALPHAMELTS_MINW			0.005			
%sALPHAMELTS_SAVE_ALL		true			
%sALPHAMELTS_CELSIUS_OUTPUT	true


tool: D121: %sbatch

tool: D124: cd %s; run_alphamelts_v1.41.pl -f melts_env -b batch > /dev/null

tool: D2: log fo2 Delta: %.2f


assistant: ```c
void runmeltsNoCO2(const char prefix[], double sc[], const char version[], const char mode[], const char fo2Path[], double fo2Delta, char batchString[], const char saveAll[], const char fractionateSolids[], double Ti, double Pi, double dT, double dP, double massin) {
  char fractionateWater[2] = "!", celciusOutput[2] = "", ptpath[2] = "!";
  if (strcasecmp(mode, "ptpath") == 0)
    ptpath[0] = '\0';
  double Pmax = 90000, Pmin = 1, Tmax = 3000, Tmin = 600;
  FILE *fp;
  char path_string[100];
  double normconst = 0;
  int i;
  for (i = 0; i < 16; i++) {
    normconst = normconst + sc[i];
  }
  for (i = 0; i < 16; i++) {
    sc[i] = sc[i] * 100 / normconst;
  }
  sprintf(path_string, "%ssc.melts", prefix);
  fp = fopen(path_string, "w");
  fprintf(fp, "Title: dummy			\nInitial Composition: SiO2 %.4f			\nInitial Composition: TiO2 %.4f			\nInitial Composition: Al2O3 %.4f			\nInitial Composition: Fe2O3 %.4f			\nInitial Composition: Cr2O3 %.4f			\nInitial Composition: FeO %.4f			\nInitial Composition: MnO %.4f			\nInitial Composition: MgO %.4f			\nInitial Composition: NiO %.4f			\nInitial Composition: CoO %.4f			\nInitial Composition: CaO %.4f			\nInitial Composition: Na2O %.4f			\nInitial Composition: K2O %.4f			\nInitial Composition: P2O5 %.4f			\nInitial Composition: H2O %.4f\n", sc[0], sc[1], sc[2], sc[3], sc[4], sc[5], sc[6], sc[7], sc[8], sc[9], sc[10], sc[11], sc[12], sc[13], sc[15]);
  fprintf(fp, "Initial Temperature: %.2f			\nInitial Pressure: %.2f			\nlog fo2 Path: %s\n", Ti, Pi, fo2Path);
  if (fo2Delta != 0) {
    fprintf(fp, "log fo2 Delta: %.2f\n", fo2Delta);
  }
  fclose(fp);
  sprintf(path_string, "%smelts_env", prefix);
  fp = fopen(path_string, "w");
  fprintf(fp, "\nALPHAMELTS_VERSION\t\t%s			\nALPHAMELTS_MODE\t\t\t%s			\n%sALPHAMELTS_PTPATH_FILE\t\tptpath			\nALPHAMELTS_DELTAP\t\t%.0f			\nALPHAMELTS_DELTAT\t\t%.0f			\nALPHAMELTS_MAXP\t\t\t%.0f			\nALPHAMELTS_MINP\t\t\t%.0f			\nALPHAMELTS_MAXT\t\t\t%.0f			\nALPHAMELTS_MINT\t\t\t%.0f			\n%sALPHAMELTS_FRACTIONATE_SOLIDS\ttrue			\n%sALPHAMELTS_MASSIN\t\t%g			\n%sALPHAMELTS_FRACTIONATE_WATER\ttrue			\n%sALPHAMELTS_MINW\t\t\t0.005			\n%sALPHAMELTS_SAVE_ALL\t\ttrue			\n%sALPHAMELTS_CELSIUS_OUTPUT\ttrue\n", version, mode, ptpath, dP, dT, Pmax, Pmin, Tmax, Tmin, fractionateSolids, fractionateSolids, massin, fractionateWater, fractionateWater, saveAll, celciusOutput);
  fclose(fp);
  sprintf(path_string, "%sbatch", prefix);
  fp = fopen(path_string, "w");
  fputs(batchString, fp);
  fclose(fp);
  char cmd_string[200];
  sprintf(cmd_string, "cd %s; run_alphamelts_v1.41.pl -f melts_env -b batch > /dev/null", prefix);
  system(cmd_string);
}
```