user: What would the C source look like for the assembly code provided here?

```asm
<main>:
  endbr64
  push   %r15
  push   %r14
  push   %rbx
  mov    %rsi,%rbx
  sub    $0x50,%rsp
  cmp    $0x4,%edi
  je     L2
  lea    D89(%rip),%rdi
  call   <puts@plt>
  lea    D108(%rip),%rdi
  call   <puts@plt>
  lea    D139(%rip),%rdi
  call   <puts@plt>
  mov    $0x1,%edi
  call   <exit@plt>
L2:
  mov    0x8(%rbx),%rdi
  call   <atof@plt>
  mov    0x10(%rbx),%rdi
  movd   %xmm0,%r14d
  call   <atof@plt>
  mov    0x18(%rbx),%rdi
  movd   %xmm0,%r15d
  call   <atof@plt>
  movd   %r14d,%xmm1
  mov    $0x1,%eax
  lea    D56(%rip),%rdi
  movss  %xmm0,0x8(%rsp)
  pxor   %xmm0,%xmm0
  cvtss2sd %xmm1,%xmm0
  call   <printf@plt>
  movd   %r15d,%xmm6
  lea    D112(%rip),%rdi
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  cvtss2sd %xmm6,%xmm0
  call   <printf@plt>
  lea    D150(%rip),%rdi
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  cvtss2sd 0x8(%rsp),%xmm0
  call   <printf@plt>
  movd   %r14d,%xmm6
  movd   %r15d,%xmm2
  movss  D58(%rip),%xmm0
  mulss  %xmm0,%xmm2
  mulss  %xmm0,%xmm6
  mulss  0x8(%rsp),%xmm0
  movss  %xmm2,0x18(%rsp)
  movss  %xmm6,0x40(%rsp)
  movss  %xmm0,0x8(%rsp)
  movaps %xmm2,%xmm0
  call   <sin@plt>
  movsd  %xmm0,0x10(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <cos@plt>
  movss  0x40(%rsp),%xmm5
  movsd  0x10(%rsp),%xmm3
  mulsd  %xmm0,%xmm3
  movaps %xmm5,%xmm6
  addss  %xmm5,%xmm6
  movaps %xmm6,%xmm0
  movss  %xmm6,0x28(%rsp)
  movsd  %xmm3,0x10(%rsp)
  call   <sin@plt>
  movss  0x18(%rsp),%xmm2
  mulsd  0x10(%rsp),%xmm0
  movaps %xmm2,%xmm4
  movss  %xmm2,0x20(%rsp)
  addss  %xmm2,%xmm4
  movsd  %xmm0,0x10(%rsp)
  movaps %xmm4,%xmm0
  movss  %xmm4,0x38(%rsp)
  call   <sin@plt>
  movsd  %xmm0,0x18(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <sin@plt>
  movsd  0x18(%rsp),%xmm1
  mulsd  %xmm0,%xmm1
  movss  0x40(%rsp),%xmm0
  movsd  %xmm1,0x18(%rsp)
  call   <sin@plt>
  movsd  0x18(%rsp),%xmm7
  mulsd  %xmm0,%xmm7
  movss  0x40(%rsp),%xmm0
  movsd  %xmm7,0x18(%rsp)
  call   <sin@plt>
  movsd  0x18(%rsp),%xmm3
  movss  0x20(%rsp),%xmm2
  mulsd  %xmm0,%xmm3
  movaps %xmm2,%xmm0
  movss  %xmm2,0x30(%rsp)
  addsd  0x10(%rsp),%xmm3
  cvtsd2ss %xmm3,%xmm3
  movss  %xmm3,0x4c(%rsp)
  call   <sin@plt>
  movsd  %xmm0,0x10(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <cos@plt>
  movsd  0x10(%rsp),%xmm7
  movss  0x28(%rsp),%xmm6
  mulsd  %xmm0,%xmm7
  movaps %xmm6,%xmm0
  movsd  %xmm7,0x10(%rsp)
  call   <sin@plt>
  movsd  0x10(%rsp),%xmm1
  movss  0x38(%rsp),%xmm4
  mulsd  %xmm0,%xmm1
  movaps %xmm4,%xmm0
  movss  %xmm4,0x18(%rsp)
  movsd  %xmm1,0x20(%rsp)
  call   <sin@plt>
  movsd  %xmm0,0x10(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <sin@plt>
  movsd  0x10(%rsp),%xmm7
  mulsd  %xmm0,%xmm7
  movss  0x40(%rsp),%xmm0
  movsd  %xmm7,0x10(%rsp)
  call   <cos@plt>
  movsd  0x10(%rsp),%xmm6
  mulsd  %xmm0,%xmm6
  movss  0x40(%rsp),%xmm0
  movsd  %xmm6,0x10(%rsp)
  call   <cos@plt>
  mulsd  0x10(%rsp),%xmm0
  movsd  0x20(%rsp),%xmm1
  movss  0x30(%rsp),%xmm2
  subsd  %xmm0,%xmm1
  movaps %xmm2,%xmm0
  cvtsd2ss %xmm1,%xmm1
  movss  %xmm1,0x48(%rsp)
  call   <sin@plt>
  movsd  %xmm0,0x10(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <cos@plt>
  movsd  0x10(%rsp),%xmm3
  movss  0x28(%rsp),%xmm6
  mulsd  %xmm0,%xmm3
  movaps %xmm6,%xmm0
  movsd  %xmm3,0x10(%rsp)
  call   <cos@plt>
  movsd  0x10(%rsp),%xmm1
  movss  0x18(%rsp),%xmm4
  mulsd  %xmm0,%xmm1
  movaps %xmm4,%xmm0
  movss  %xmm4,0x20(%rsp)
  movsd  %xmm1,0x10(%rsp)
  call   <sin@plt>
  movsd  %xmm0,0x18(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <sin@plt>
  movsd  0x18(%rsp),%xmm5
  mulsd  D169(%rip),%xmm5
  movapd %xmm5,%xmm6
  mulsd  %xmm0,%xmm6
  movsd  %xmm6,0x18(%rsp)
  movss  0x28(%rsp),%xmm6
  movaps %xmm6,%xmm0
  call   <sin@plt>
  mulsd  0x18(%rsp),%xmm0
  movss  0x30(%rsp),%xmm2
  pxor   %xmm7,%xmm7
  addsd  0x10(%rsp),%xmm0
  cvtsd2ss %xmm0,%xmm7
  movaps %xmm2,%xmm0
  movss  %xmm7,0x10(%rsp)
  call   <cos@plt>
  movsd  %xmm0,0x18(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <cos@plt>
  movsd  0x18(%rsp),%xmm3
  mulsd  %xmm0,%xmm3
  movss  0x40(%rsp),%xmm0
  movsd  %xmm3,0x18(%rsp)
  call   <cos@plt>
  movsd  0x18(%rsp),%xmm1
  movss  0x20(%rsp),%xmm4
  mulsd  %xmm0,%xmm1
  movaps %xmm4,%xmm0
  movss  %xmm4,0x44(%rsp)
  movsd  %xmm1,0x18(%rsp)
  call   <cos@plt>
  movsd  %xmm0,0x20(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <sin@plt>
  movsd  0x20(%rsp),%xmm3
  mulsd  %xmm0,%xmm3
  movss  0x40(%rsp),%xmm0
  movsd  %xmm3,0x20(%rsp)
  call   <sin@plt>
  movss  0x30(%rsp),%xmm2
  movsd  %xmm0,0x28(%rsp)
  movaps %xmm2,%xmm0
  call   <cos@plt>
  movsd  %xmm0,0x30(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <cos@plt>
  movsd  0x30(%rsp),%xmm5
  mulsd  %xmm0,%xmm5
  movss  0x40(%rsp),%xmm0
  movsd  %xmm5,0x30(%rsp)
  call   <sin@plt>
  movsd  0x30(%rsp),%xmm2
  movss  0x44(%rsp),%xmm4
  mulsd  %xmm0,%xmm2
  movaps %xmm4,%xmm0
  movsd  %xmm2,0x38(%rsp)
  call   <cos@plt>
  movsd  %xmm0,0x30(%rsp)
  movss  0x8(%rsp),%xmm0
  call   <sin@plt>
  movsd  0x30(%rsp),%xmm5
  mulsd  %xmm0,%xmm5
  movss  0x40(%rsp),%xmm0
  movsd  %xmm5,0x8(%rsp)
  call   <cos@plt>
  mulsd  0x8(%rsp),%xmm0
  movsd  0x38(%rsp),%xmm2
  lea    D84(%rip),%rdi
  pxor   %xmm5,%xmm5
  subsd  %xmm0,%xmm2
  cvtsd2ss %xmm2,%xmm5
  movss  %xmm5,0x40(%rsp)
  call   <puts@plt>
  movss  0x48(%rsp),%xmm1
  movss  0x4c(%rsp),%xmm3
  movss  D90(%rip),%xmm7
  movsd  0x20(%rsp),%xmm4
  pxor   %xmm6,%xmm6
  movss  0x40(%rsp),%xmm5
  lea    D181(%rip),%rdi
  mulsd  0x28(%rsp),%xmm4
  movaps %xmm1,%xmm2
  mov    $0x6,%eax
  cvtss2sd %xmm1,%xmm1
  addsd  0x18(%rsp),%xmm4
  subss  %xmm3,%xmm2
  xorps  %xmm7,%xmm3
  movsd  %xmm1,0x18(%rsp)
  xorps  %xmm7,%xmm5
  cvtss2sd %xmm3,%xmm6
  pxor   %xmm3,%xmm3
  movapd %xmm6,%xmm0
  cvtss2sd 0x10(%rsp),%xmm3
  cvtss2sd %xmm5,%xmm5
  movsd  %xmm6,0x8(%rsp)
  xorps  %xmm7,%xmm2
  cvtsd2ss %xmm4,%xmm4
  xorps  %xmm7,%xmm4
  cvtss2sd %xmm4,%xmm4
  cvtss2sd %xmm2,%xmm2
  movsd  %xmm4,0x28(%rsp)
  movsd  %xmm2,0x20(%rsp)
  call   <printf@plt>
  lea    D151(%rip),%rdi
  call   <puts@plt>
  movsd  0x20(%rsp),%xmm2
  mov    $0x1,%eax
  lea    D143(%rip),%rdi
  movapd %xmm2,%xmm0
  call   <printf@plt>
  movsd  0x8(%rsp),%xmm6
  mov    $0x1,%eax
  lea    D130(%rip),%rdi
  movapd %xmm6,%xmm0
  call   <printf@plt>
  movsd  0x18(%rsp),%xmm1
  mov    $0x1,%eax
  lea    D154(%rip),%rdi
  movapd %xmm1,%xmm0
  call   <printf@plt>
  movsd  0x28(%rsp),%xmm4
  mov    $0x1,%eax
  lea    D6(%rip),%rdi
  movapd %xmm4,%xmm0
  call   <printf@plt>
  lea    D178(%rip),%rdi
  pxor   %xmm0,%xmm0
  mov    $0x1,%eax
  cvtss2sd 0x40(%rsp),%xmm0
  call   <printf@plt>
  mov    $0x1,%eax
  movss  0x10(%rsp),%xmm0
  movss  D90(%rip),%xmm7
  lea    D164(%rip),%rdi
  xorps  %xmm7,%xmm0
  cvtss2sd %xmm0,%xmm0
  call   <printf@plt>
  add    $0x50,%rsp
  xor    %eax,%eax
  pop    %rbx
  pop    %r14
  pop    %r15
  ret
```

tool_calls: name: extract_symbolic_data
arguments: tag: D89
type_infered: string
name: extract_symbolic_data
arguments: tag: D108
type_infered: string
name: extract_symbolic_data
arguments: tag: D139
type_infered: string
name: extract_symbolic_data
arguments: tag: D56
type_infered: string
name: extract_symbolic_data
arguments: tag: D112
type_infered: string
name: extract_symbolic_data
arguments: tag: D150
type_infered: string
name: extract_symbolic_data
arguments: tag: D58
type_infered: f32
name: extract_symbolic_data
arguments: tag: D169
type_infered: f64
name: extract_symbolic_data
arguments: tag: D84
type_infered: string
name: extract_symbolic_data
arguments: tag: D90
type_infered: byte[4]
name: extract_symbolic_data
arguments: tag: D181
type_infered: string
name: extract_symbolic_data
arguments: tag: D151
type_infered: string
name: extract_symbolic_data
arguments: tag: D143
type_infered: string
name: extract_symbolic_data
arguments: tag: D130
type_infered: string
name: extract_symbolic_data
arguments: tag: D154
type_infered: string
name: extract_symbolic_data
arguments: tag: D6
type_infered: string
name: extract_symbolic_data
arguments: tag: D178
type_infered: string
name: extract_symbolic_data
arguments: tag: D164
type_infered: string

tool: D89: 
Double Couple - Moment Tensor Converter (by Onur TAN)

tool: D108: Usage : dc2mt Strike Dip Rake (in degrees)

tool: D139: Output Aki&Richards1980:  Mxx  Myy  Mzz  Mxy  Mxz  Myz 


tool: D56: 
Strike = %9.5f degrees


tool: D112: Dip = %9.5f degrees


tool: D150: Rake/Slip = %9.5f degrees


tool: D58: 0.017453293

tool: D169: 0.5

tool: D84: 
Output Aki&Richards1980:  Mxx  Myy  Mzz  Mxy  Mxz  Myz 

tool: {"D90": [0x00,0x00,0x00,0x80]}

tool: D181: %9.5f %9.5f %9.5f %9.5f %9.5f %9.5f


tool: D151: 
Output Harvard CMTSOLUTION:  Mrr Mtt Mpp Mrt Mrp Mtp

tool: D143: Mrr: %9.5f


tool: D130: Mtt: %9.5f


tool: D154: Mpp: %9.5f


tool: D6: Mrt: %9.5f


tool: D178: Mrp: %9.5f


tool: D164: Mtp: %9.5f



assistant: ```c
int main(int argc, char *argv[]) {
  float S, D, R, d2r;
  float Mxx, Myy, Mzz, Mxy, Mxz, Myz;
  float Mrr, Mtt, Mpp, Mrt, Mrp, Mtp;
  if (argc != 4) {
    printf("\nDouble Couple - Moment Tensor Converter (by Onur TAN)\n");
    printf("Usage : dc2mt Strike Dip Rake (in degrees)\n");
    printf("Output Aki&Richards1980:  Mxx  Myy  Mzz  Mxy  Mxz  Myz \n\n");
    exit(1);
  }
  d2r = 0.017453293;
  S = atof(argv[1]);
  D = atof(argv[2]);
  R = atof(argv[3]);
  printf("\nStrike = %9.5f degrees\n", S);
  printf("Dip = %9.5f degrees\n", D);
  printf("Rake/Slip = %9.5f degrees\n", R);
  S *= d2r;
  D *= d2r;
  R *= d2r;
  Mxx = -1.0 * (sin(D) * cos(R) * sin(2 * S) + sin(2 * D) * sin(R) * sin(S) * sin(S));
  Myy = (sin(D) * cos(R) * sin(2 * S) - sin(2 * D) * sin(R) * cos(S) * cos(S));
  Mzz = -1.0 * (Mxx + Myy);
  Mxy = (sin(D) * cos(R) * cos(2 * S) + 0.5 * sin(2 * D) * sin(R) * sin(2 * S));
  Mxz = -1.0 * (cos(D) * cos(R) * cos(S) + cos(2 * D) * sin(R) * sin(S));
  Myz = -1.0 * (cos(D) * cos(R) * sin(S) - cos(2 * D) * sin(R) * cos(S));
  printf("\nOutput Aki&Richards1980:  Mxx  Myy  Mzz  Mxy  Mxz  Myz \n");
  printf("%9.5f %9.5f %9.5f %9.5f %9.5f %9.5f\n", Mxx, Myy, Mzz, Mxy, Mxz, Myz);
  Mtt = Mxx;
  Mpp = Myy;
  Mrr = Mzz;
  Mtp = Mxy * -1.;
  Mrt = Mxz;
  Mrp = Myz * -1.;
  printf("\nOutput Harvard CMTSOLUTION:  Mrr Mtt Mpp Mrt Mrp Mtp\n");
  printf("Mrr: %9.5f\n", Mrr);
  printf("Mtt: %9.5f\n", Mtt);
  printf("Mpp: %9.5f\n", Mpp);
  printf("Mrt: %9.5f\n", Mrt);
  printf("Mrp: %9.5f\n", Mrp);
  printf("Mtp: %9.5f\n\n", Mtp);
}
```