// File: /workspace/github_c_makefile_star2_O0/josch[P]stride/asngener.c
// Function: Difference
int Difference(char *TestAsn, char *KnownAsn, int Length, char SecStrType, QUALITY *Qual)
{
  register int Res;

  Qual->TP = Qual->TN = Qual->FP = Qual->FN = 0;

  for( Res=0; Res<Length; Res++ ) {
    if( KnownAsn[Res] != 'X' ) { 

      if( KnownAsn[Res] == SecStrType && TestAsn[Res]  == SecStrType ) Qual->TP++;
      else 
      if( KnownAsn[Res] != SecStrType && TestAsn[Res]  != SecStrType ) Qual->TN++;
      else 
      if( KnownAsn[Res] != SecStrType && TestAsn[Res]  == SecStrType ) Qual->FP++;
      else 
      if( KnownAsn[Res] == SecStrType && TestAsn[Res]  != SecStrType ) Qual->FN++;
    }
  }

  if( Qual->TP == 0 && Qual->TN == 0 && Qual->FP == 0 && Qual->FN == 0 )  {
    Qual->Perc = 0.0;
    return(FAILURE);
  }

  Qual->Perc = 
    ((float)Qual->TP+(float)Qual->TN)/
      ((float)Qual->TP+(float)Qual->TN+(float)Qual->FP+(float)Qual->FN);

  return(SUCCESS);
}

// Assembly:
movb %cl, %al
movq %rdi, -0x10(%rsp)
movq %rsi, -0x18(%rsp)
movl %edx, -0x1c(%rsp)
movb %al, -0x1d(%rsp)
movq %r8, -0x28(%rsp)
movq -0x28(%rsp), %rax
movl $0x0, 0xc(%rax)
movq -0x28(%rsp), %rax
movl $0x0, 0x8(%rax)
movq -0x28(%rsp), %rax
movl $0x0, 0x4(%rax)
movq -0x28(%rsp), %rax
movl $0x0, (%rax)
movl $0x0, -0x2c(%rsp)
movl -0x2c(%rsp), %eax
cmpl -0x1c(%rsp), %eax
jge 0x29646
movq -0x18(%rsp), %rax
movslq -0x2c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x58, %eax
je 0x29634
movq -0x18(%rsp), %rax
movslq -0x2c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
movsbl -0x1d(%rsp), %ecx
cmpl %ecx, %eax
jne 0x29574
movq -0x10(%rsp), %rax
movslq -0x2c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
movsbl -0x1d(%rsp), %ecx
cmpl %ecx, %eax
jne 0x29574
movq -0x28(%rsp), %rax
movl (%rax), %ecx
addl $0x1, %ecx
movl %ecx, (%rax)
jmp 0x29632
movq -0x18(%rsp), %rax
movslq -0x2c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
movsbl -0x1d(%rsp), %ecx
cmpl %ecx, %eax
je 0x295b2
movq -0x10(%rsp), %rax
movslq -0x2c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
movsbl -0x1d(%rsp), %ecx
cmpl %ecx, %eax
je 0x295b2
movq -0x28(%rsp), %rax
movl 0x4(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x4(%rax)
jmp 0x29630
movq -0x18(%rsp), %rax
movslq -0x2c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
movsbl -0x1d(%rsp), %ecx
cmpl %ecx, %eax
je 0x295f0
movq -0x10(%rsp), %rax
movslq -0x2c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
movsbl -0x1d(%rsp), %ecx
cmpl %ecx, %eax
jne 0x295f0
movq -0x28(%rsp), %rax
movl 0x8(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x8(%rax)
jmp 0x2962e
movq -0x18(%rsp), %rax
movslq -0x2c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
movsbl -0x1d(%rsp), %ecx
cmpl %ecx, %eax
jne 0x2962c
movq -0x10(%rsp), %rax
movslq -0x2c(%rsp), %rcx
movsbl (%rax,%rcx), %eax
movsbl -0x1d(%rsp), %ecx
cmpl %ecx, %eax
je 0x2962c
movq -0x28(%rsp), %rax
movl 0xc(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0xc(%rax)
jmp 0x2962e
jmp 0x29630
jmp 0x29632
jmp 0x29634
jmp 0x29636
movl -0x2c(%rsp), %eax
addl $0x1, %eax
movl %eax, -0x2c(%rsp)
jmp 0x29510
movq -0x28(%rsp), %rax
cmpl $0x0, (%rax)
jne 0x29688
movq -0x28(%rsp), %rax
cmpl $0x0, 0x4(%rax)
jne 0x29688
movq -0x28(%rsp), %rax
cmpl $0x0, 0x8(%rax)
jne 0x29688
movq -0x28(%rsp), %rax
cmpl $0x0, 0xc(%rax)
jne 0x29688
movq -0x28(%rsp), %rax
xorps %xmm0, %xmm0
movss %xmm0, 0x14(%rax)
movl $0x0, -0x4(%rsp)
jmp 0x296e8
movq -0x28(%rsp), %rax
cvtsi2ssl (%rax), %xmm0
movq -0x28(%rsp), %rax
cvtsi2ssl 0x4(%rax), %xmm1
addss %xmm1, %xmm0
movq -0x28(%rsp), %rax
cvtsi2ssl (%rax), %xmm1
movq -0x28(%rsp), %rax
cvtsi2ssl 0x4(%rax), %xmm2
addss %xmm2, %xmm1
movq -0x28(%rsp), %rax
cvtsi2ssl 0x8(%rax), %xmm2
addss %xmm2, %xmm1
movq -0x28(%rsp), %rax
cvtsi2ssl 0xc(%rax), %xmm2
addss %xmm2, %xmm1
divss %xmm1, %xmm0
movq -0x28(%rsp), %rax
movss %xmm0, 0x14(%rax)
movl $0x1, -0x4(%rsp)
movl -0x4(%rsp), %eax
retq
nopl (%rax)