// File: /workspace/github_c_makefile_star2_O0/ugobas[P]tnm/nma.c
// Function: Tors_fraction
float Tors_fraction(struct Tors *Diff, float *mass)
{
  double MRR=0, MRT=0, MRW=0, mtot=0; int i;
  // Torsional part / Total
  if(Diff->RMSD==0){
    for(i=0; i<Diff->N_Cart; i++){
      MRR+=mass[i]*Diff->Cart[i]*Diff->Cart[i]; mtot+=mass[i];
    }
    Diff->RMSD=sqrt(MRR/mtot);
    Diff->M=mtot;
  }else{
    mtot=Diff->M; MRR=Diff->M*Diff->RMSD*Diff->RMSD;
  }
  for(i=0; i<Diff->N_axes; i++){
    MRW += Diff->MW_Tors[i]*Diff->MW_Tors[i];
    MRT += Diff->Tors[i]*Diff->Tors[i];
  }
  Diff->RMSD_W=sqrt(MRW/mtot);
  Diff->RMSD_Tors=sqrt(MRT/Diff->N_axes);
  Diff->RMSD_NoTors=sqrt((MRR-MRW)/mtot);
  return(MRW/MRR);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x18(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x20(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x28(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movq -0x8(%rbp), %rax
movss 0x30(%rax), %xmm0
xorps %xmm1, %xmm1
ucomiss %xmm1, %xmm0
jne 0x36761
jp 0x36761
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x4(%rcx), %eax
jge 0x36731
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x34(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rax
movslq -0x34(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x18(%rbp)
movq -0x10(%rbp), %rax
movslq -0x34(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x30(%rbp), %xmm0
movsd %xmm0, -0x30(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x366c2
movsd -0x18(%rbp), %xmm0
divsd -0x30(%rbp), %xmm0
callq 0x1220
cvtsd2ss %xmm0, %xmm0
movq -0x8(%rbp), %rax
movss %xmm0, 0x30(%rax)
movsd -0x30(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
movq -0x8(%rbp), %rax
movss %xmm0, 0x3c(%rax)
jmp 0x36797
movq -0x8(%rbp), %rax
movss 0x3c(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x30(%rbp)
movq -0x8(%rbp), %rax
movss 0x3c(%rax), %xmm0
movq -0x8(%rbp), %rax
mulss 0x30(%rax), %xmm0
movq -0x8(%rbp), %rax
mulss 0x30(%rax), %xmm0
cvtss2sd %xmm0, %xmm0
movsd %xmm0, -0x18(%rbp)
movl $0x0, -0x34(%rbp)
movl -0x34(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl (%rcx), %eax
jge 0x36814
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x34(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x34(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x28(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x34(%rbp), %rcx
movss (%rax,%rcx,4), %xmm0
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x34(%rbp), %rcx
mulss (%rax,%rcx,4), %xmm0
cvtss2sd %xmm0, %xmm0
addsd -0x20(%rbp), %xmm0
movsd %xmm0, -0x20(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x3679e
movsd -0x28(%rbp), %xmm0
divsd -0x30(%rbp), %xmm0
callq 0x1220
cvtsd2ss %xmm0, %xmm0
movq -0x8(%rbp), %rax
movss %xmm0, 0x34(%rax)
movsd -0x20(%rbp), %xmm0
movq -0x8(%rbp), %rax
cvtsi2sdl (%rax), %xmm1
divsd %xmm1, %xmm0
callq 0x1220
cvtsd2ss %xmm0, %xmm0
movq -0x8(%rbp), %rax
movss %xmm0, 0x38(%rax)
movsd -0x18(%rbp), %xmm0
subsd -0x28(%rbp), %xmm0
divsd -0x30(%rbp), %xmm0
callq 0x1220
cvtsd2ss %xmm0, %xmm0
movq -0x8(%rbp), %rax
movss %xmm0, 0x2c(%rax)
movsd -0x28(%rbp), %xmm0
divsd -0x18(%rbp), %xmm0
cvtsd2ss %xmm0, %xmm0
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)