// File: /workspace/github_c_makefile_star2_O3/josch[P]stride/phipsi.c
// Function: DiscrPhiPsi
void DiscrPhiPsi(CHAIN **Chain, int NChain, COMMAND *Cmd)
{

  register int i, Res, Cn;
  RESIDUE *r;

  for( Cn=0; Cn<NChain; Cn++ ) {
    
    for( Res=0; Res<Chain[Cn]->NRes; Res++ ) {
      
      r = Chain[Cn]->Rsd[Res];
      
      r->Prop->PhiZn = ERR;
      r->Prop->PsiZn = ERR;
      
      if( Res != 0 ) {
	for( i=0; i<Cmd->NPixel; i++ )
	  if( r->Prop->Phi  >  MINPHIPSI+(float)(i)*Cmd->PhiPsiStep && 
	      r->Prop->Phi <=  MINPHIPSI+(float)(i+1)*Cmd->PhiPsiStep ) {
	    r->Prop->PhiZn = i;
	    break;
	  }
      }
      
      if( Res != Chain[Cn]->NRes-1 ) {
	for( i=0; i<Cmd->NPixel; i++ )
	  if( r->Prop->Psi  >  MINPHIPSI+(float)(i)*Cmd->PhiPsiStep && 
	      r->Prop->Psi <=  MINPHIPSI+(float)(i+1)*Cmd->PhiPsiStep ) {
	    r->Prop->PsiZn = i;
	    break;
	  }
      }
      
    }
    
    for(Res=0; Res<Chain[Cn]->NRes; Res++ )  {
      r = Chain[Cn]->Rsd[Res];
      if( Res != 0 && r->Prop->PsiZn == ERR )
	r->Prop->PsiZn = Chain[Cn]->Rsd[Res-1]->Prop->PsiZn;
      if( Res != Chain[Cn]->NRes-1 && r->Prop->PhiZn == ERR )
	r->Prop->PhiZn = Chain[Cn]->Rsd[Res+1]->Prop->PhiZn;
    }

  }
}

// Assembly:
testl %esi, %esi
jle 0x8271
pushq %rbp
pushq %r15
pushq %r14
pushq %rbx
movl %esi, %eax
xorl %ecx, %ecx
movsd 0x11c9c(%rip), %xmm0    # 0x19d90
movq (%rdi,%rcx,8), %r9
movslq (%r9), %rsi
testq %rsi, %rsi
jle 0x825f
movq 0x68(%r9), %r10
leal -0x1(%rsi), %r8d
xorl %r11d, %r11d
movq (%r10,%r11,8), %rbx
movq 0x768(%rbx), %rbx
movq $-0x1, 0xc(%rbx)
testq %r11, %r11
je 0x8189
movl 0x1cf4(%rdx), %ebp
testl %ebp, %ebp
jle 0x8189
xorps %xmm1, %xmm1
cvtss2sd (%rbx), %xmm1
movss 0x1d08(%rdx), %xmm2
xorl %r14d, %r14d
xorps %xmm3, %xmm3
cvtsi2ss %r14d, %xmm3
mulss %xmm2, %xmm3
cvtss2sd %xmm3, %xmm3
addsd %xmm0, %xmm3
leal 0x1(%r14), %r15d
ucomisd %xmm3, %xmm1
jbe 0x817b
xorps %xmm3, %xmm3
cvtsi2ss %r15d, %xmm3
mulss %xmm2, %xmm3
cvtss2sd %xmm3, %xmm3
addsd %xmm0, %xmm3
ucomisd %xmm1, %xmm3
jae 0x8185
movl %r15d, %r14d
cmpl %r15d, %ebp
jne 0x8143
jmp 0x8189
movl %r14d, 0xc(%rbx)
cmpq %r8, %r11
je 0x81f1
movl 0x1cf4(%rdx), %ebp
testl %ebp, %ebp
jle 0x81f1
xorps %xmm1, %xmm1
cvtss2sd 0x4(%rbx), %xmm1
movss 0x1d08(%rdx), %xmm2
xorl %r14d, %r14d
xorps %xmm3, %xmm3
cvtsi2ss %r14d, %xmm3
mulss %xmm2, %xmm3
cvtss2sd %xmm3, %xmm3
addsd %xmm0, %xmm3
leal 0x1(%r14), %r15d
ucomisd %xmm3, %xmm1
jbe 0x81e3
xorps %xmm3, %xmm3
cvtsi2ss %r15d, %xmm3
mulss %xmm2, %xmm3
cvtss2sd %xmm3, %xmm3
addsd %xmm0, %xmm3
ucomisd %xmm1, %xmm3
jae 0x81ed
movl %r15d, %r14d
cmpl %r15d, %ebp
jne 0x81ab
jmp 0x81f1
movl %r14d, 0x10(%rbx)
incq %r11
cmpq %rsi, %r11
jne 0x810f
testl %esi, %esi
jle 0x825f
movq 0x68(%r9), %r9
xorl %r10d, %r10d
movq (%r9,%r10,8), %r11
testq %r10, %r10
je 0x8231
movq 0x768(%r11), %rbx
cmpl $-0x1, 0x10(%rbx)
jne 0x8231
movq -0x8(%r9,%r10,8), %r14
movq 0x768(%r14), %r14
movl 0x10(%r14), %ebp
movl %ebp, 0x10(%rbx)
cmpq %r10, %r8
je 0x8257
movq 0x768(%r11), %r11
cmpl $-0x1, 0xc(%r11)
jne 0x8257
movq 0x8(%r9,%r10,8), %rbx
movq 0x768(%rbx), %rbx
movl 0xc(%rbx), %ebx
movl %ebx, 0xc(%r11)
incq %r10
cmpq %r10, %rsi
jne 0x8208
incq %rcx
cmpq %rax, %rcx
jne 0x80f4
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
nop