// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/distributions.c
// Function: studentized_range
double studentized_range(double q, double v, double r)
{
 double pj,ehj,hj,x,pz,w0,pk,gk,pk1,pk2,gstep,gmid,c,v2,h,r1,g,vw[30],qw[30],pcutj=0.00003,pcutk=0.0001,step=0.45,vmax=12000.0,fifth=0.2,cv1=0.193064705,cv2=0.293525326,cvmax=0.39894228,cv[4]={0.318309886,-0.00268132716,-0.00347222222,0.0833333333},result;
 int j,k,jmin=3,jmax=15,kmin=7,kmax=15,jump,jj,op,op2;
 result=0;
 if (q<=0)
   return result;
 g=step*pow(r,-fifth);
 gmid=0.5*log(r);
 r1=r-1;
 c=log(r*g*cvmax);
 if (c<vmax)
  {
   h=step*pow(v,-0.5);
   v2=v*0.5;
   if (v==1)
     c=cv1;
   else
     if (v==2)
       c=cv2;
     else
       c=sqrt(v2)*cv[0]/(1+((cv[1]/v2+cv[2])/v2+cv[3])/v2);
   c=log(c*g*r*h);
  }
 gstep=g;
 qw[0]=-1;
 qw[jmax]=-1;
 pk1=1;
 pk2=1;
 for (k=1;k<=kmax;k++)
  {
   gstep=gstep-g;
   op2=0;
   while ((gstep>0)||(op2==0))
    {
     gstep=-gstep;
     gk=gmid+gstep;
     pk=0;
     if ((pk2>pcutk)||(k<=kmin))
      {
       w0=c-0.5*gk*gk;
       pz=normal(gk,1);
       x=normal(gk-q,1)-pz;
       if (x>0)
         pk=exp(w0+r1*log(x));
       if (v<=vmax)
        {
         jump=-jmax;
         op=0;
         while ((h<0)||(op==0))
          {
           jump=jump+jmax;
           for (j=1;j<=jmax;j++)
            {
             jj=j+jump;
             if (qw[jj-1]<=0)
              {
               hj=h*j;
               if (j<jmax)
                 qw[jj]=-1;
               ehj=exp(hj);
               qw[jj-1]=q*ehj;
               vw[jj-1]=v*(hj+0.5-0.5*ehj*ehj);
              }
             pj=0;
             x=normal(gk-qw[jj-1],1)-pz;
             if (x>0)
               pj=exp(w0+vw[jj-1]+r1*log(x));
             pk=pk+pj;
             if (pj<=pcutj)
               if ((jj>jmin)||(k>kmin))
                 break;
            }
           h=-h;
           op++;
          }
        }
      }
     result=result+pk;
     if ((k>kmin)&&(pk<=pcutk)&&(pk1<=pcutk))
       return result;
     pk2=pk1;
     pk1=pk;
     op2++;
    }
  }
 return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x360, %rsp            # imm = 0x360
movsd %xmm0, -0x10(%rbp)
movsd %xmm1, -0x18(%rbp)
movsd %xmm2, -0x20(%rbp)
movsd 0xb6246(%rip), %xmm0    # 0xe4838
movsd %xmm0, -0x298(%rbp)
movsd 0xb5ef6(%rip), %xmm0    # 0xe44f8
movsd %xmm0, -0x2a0(%rbp)
movsd 0xb621e(%rip), %xmm0    # 0xe4830
movsd %xmm0, -0x2a8(%rbp)
movsd 0xb6206(%rip), %xmm0    # 0xe4828
movsd %xmm0, -0x2b0(%rbp)
movsd 0xb61ee(%rip), %xmm0    # 0xe4820
movsd %xmm0, -0x2b8(%rbp)
movsd 0xb61d6(%rip), %xmm0    # 0xe4818
movsd %xmm0, -0x2c0(%rbp)
movsd 0xb61be(%rip), %xmm0    # 0xe4810
movsd %xmm0, -0x2c8(%rbp)
movsd 0xb61a6(%rip), %xmm0    # 0xe4808
movsd %xmm0, -0x2d0(%rbp)
movq 0xb627f(%rip), %rax     # 0xe48f0
movq %rax, -0x2f0(%rbp)
movq 0xb6279(%rip), %rax     # 0xe48f8
movq %rax, -0x2e8(%rbp)
movq 0xb6273(%rip), %rax     # 0xe4900
movq %rax, -0x2e0(%rbp)
movq 0xb626d(%rip), %rax     # 0xe4908
movq %rax, -0x2d8(%rbp)
movl $0x3, -0x304(%rbp)
movl $0xf, -0x308(%rbp)
movl $0x7, -0x30c(%rbp)
movl $0xf, -0x310(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x2f8(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x10(%rbp), %xmm0
jb 0x2e6f1
movsd -0x2f8(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x2ee1f
movsd -0x2a8(%rbp), %xmm0
movsd %xmm0, -0x328(%rbp)
movsd -0x20(%rbp), %xmm0
movsd -0x2b8(%rbp), %xmm1
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
callq 0x4290
movaps %xmm0, %xmm1
movsd -0x328(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x4120
movaps %xmm0, %xmm1
movsd 0xb4262(%rip), %xmm0    # 0xe29b8
mulsd %xmm1, %xmm0
movsd %xmm0, -0x80(%rbp)
movsd -0x20(%rbp), %xmm0
movsd 0xb38ac(%rip), %xmm1    # 0xe2018
subsd %xmm1, %xmm0
movsd %xmm0, -0xa0(%rbp)
movsd -0x20(%rbp), %xmm0
mulsd -0xa8(%rbp), %xmm0
mulsd -0x2d0(%rbp), %xmm0
callq 0x4120
movsd %xmm0, -0x88(%rbp)
movsd -0x88(%rbp), %xmm1
movsd -0x2b0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jbe 0x2e8dc
movsd -0x2a8(%rbp), %xmm0
movsd %xmm0, -0x330(%rbp)
movsd -0x18(%rbp), %xmm0
movsd 0xb4297(%rip), %xmm1    # 0xe2a68
callq 0x4290
movaps %xmm0, %xmm1
movsd -0x330(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, -0x98(%rbp)
movsd 0xb41c3(%rip), %xmm0    # 0xe29b8
mulsd -0x18(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
movsd -0x18(%rbp), %xmm0
movsd 0xb3809(%rip), %xmm1    # 0xe2018
ucomisd %xmm1, %xmm0
jne 0x2e82c
jp 0x2e82c
movsd -0x2c0(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x2e8b2
movsd -0x18(%rbp), %xmm0
movsd 0xb4467(%rip), %xmm1    # 0xe2ca0
ucomisd %xmm1, %xmm0
jne 0x2e853
jp 0x2e853
movsd -0x2c8(%rbp), %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x2e8b0
movsd -0x90(%rbp), %xmm0
callq 0x42a0
mulsd -0x2f0(%rbp), %xmm0
movsd -0x2e8(%rbp), %xmm2
divsd -0x90(%rbp), %xmm2
addsd -0x2e0(%rbp), %xmm2
divsd -0x90(%rbp), %xmm2
addsd -0x2d8(%rbp), %xmm2
divsd -0x90(%rbp), %xmm2
movsd 0xb3778(%rip), %xmm1    # 0xe2018
addsd %xmm2, %xmm1
divsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
jmp 0x2e8b2
movsd -0x88(%rbp), %xmm0
mulsd -0xa8(%rbp), %xmm0
mulsd -0x20(%rbp), %xmm0
mulsd -0x98(%rbp), %xmm0
callq 0x4120
movsd %xmm0, -0x88(%rbp)
movsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movsd 0xb4157(%rip), %xmm0    # 0xe2a48
movsd %xmm0, -0x290(%rbp)
movslq -0x308(%rbp), %rax
movsd 0xb4140(%rip), %xmm0    # 0xe2a48
movsd %xmm0, -0x290(%rbp,%rax,8)
movsd 0xb36ff(%rip), %xmm0    # 0xe2018
movsd %xmm0, -0x68(%rbp)
movsd 0xb36f2(%rip), %xmm0    # 0xe2018
movsd %xmm0, -0x70(%rbp)
movl $0x1, -0x300(%rbp)
movl -0x300(%rbp), %eax
cmpl -0x310(%rbp), %eax
jg 0x2ee12
movsd -0x78(%rbp), %xmm0
subsd -0xa8(%rbp), %xmm0
movsd %xmm0, -0x78(%rbp)
movl $0x0, -0x320(%rbp)
movsd -0x78(%rbp), %xmm0
movb $0x1, %al
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
movb %al, -0x331(%rbp)
ja 0x2e989
cmpl $0x0, -0x320(%rbp)
sete %al
movb %al, -0x331(%rbp)
movb -0x331(%rbp), %al
testb $0x1, %al
jne 0x2e998
jmp 0x2edfc
movsd -0x78(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x78(%rbp)
movsd -0x80(%rbp), %xmm0
addsd -0x78(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
xorps %xmm0, %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x70(%rbp), %xmm0
ucomisd -0x2a0(%rbp), %xmm0
ja 0x2e9f1
movl -0x300(%rbp), %eax
cmpl -0x30c(%rbp), %eax
jg 0x2ed7c
movsd -0x88(%rbp), %xmm1
movsd 0xb3fb7(%rip), %xmm0    # 0xe29b8
mulsd -0x60(%rbp), %xmm0
movsd -0x60(%rbp), %xmm2
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0x50(%rbp)
movsd -0x60(%rbp), %xmm0
movl $0x1, %edi
callq 0x2e350
movsd %xmm0, -0x48(%rbp)
movsd -0x60(%rbp), %xmm0
subsd -0x10(%rbp), %xmm0
movl $0x1, %edi
callq 0x2e350
subsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x2eabb
movsd -0x50(%rbp), %xmm0
movsd %xmm0, -0x348(%rbp)
movsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0x340(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0x4120
movsd -0x348(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x340(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x4060
movsd %xmm0, -0x58(%rbp)
movsd -0x18(%rbp), %xmm1
movsd -0x2b0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x2ed7a
xorl %eax, %eax
subl -0x308(%rbp), %eax
movl %eax, -0x314(%rbp)
movl $0x0, -0x31c(%rbp)
movb $0x1, %al
xorps %xmm0, %xmm0
ucomisd -0x98(%rbp), %xmm0
movb %al, -0x349(%rbp)
ja 0x2eb0f
cmpl $0x0, -0x31c(%rbp)
sete %al
movb %al, -0x349(%rbp)
movb -0x349(%rbp), %al
testb $0x1, %al
jne 0x2eb1e
jmp 0x2ed78
movl -0x314(%rbp), %eax
addl -0x308(%rbp), %eax
movl %eax, -0x314(%rbp)
movl $0x1, -0x2fc(%rbp)
movl -0x2fc(%rbp), %eax
cmpl -0x308(%rbp), %eax
jg 0x2ed3d
movl -0x2fc(%rbp), %eax
addl -0x314(%rbp), %eax
movl %eax, -0x318(%rbp)
movl -0x318(%rbp), %eax
subl $0x1, %eax
cltq
xorps %xmm0, %xmm0
ucomisd -0x290(%rbp,%rax,8), %xmm0
jb 0x2ec42
movsd -0x98(%rbp), %xmm0
cvtsi2sdl -0x2fc(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0x38(%rbp)
movl -0x2fc(%rbp), %eax
cmpl -0x308(%rbp), %eax
jge 0x2ebba
movslq -0x318(%rbp), %rax
movsd 0xb3e97(%rip), %xmm0    # 0xe2a48
movsd %xmm0, -0x290(%rbp,%rax,8)
movsd -0x38(%rbp), %xmm0
callq 0x4060
movsd %xmm0, -0x30(%rbp)
movsd -0x10(%rbp), %xmm0
mulsd -0x30(%rbp), %xmm0
movl -0x318(%rbp), %eax
subl $0x1, %eax
cltq
movsd %xmm0, -0x290(%rbp,%rax,8)
movsd -0x18(%rbp), %xmm0
movsd 0xb3dc4(%rip), %xmm2    # 0xe29b8
addsd -0x38(%rbp), %xmm2
movsd 0xb3db7(%rip), %xmm1    # 0xe29b8
mulsd -0x30(%rbp), %xmm1
movsd -0x30(%rbp), %xmm3
movq %xmm1, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm1
mulsd %xmm3, %xmm1
addsd %xmm2, %xmm1
mulsd %xmm1, %xmm0
movl -0x318(%rbp), %eax
subl $0x1, %eax
cltq
movsd %xmm0, -0x1a0(%rbp,%rax,8)
xorps %xmm0, %xmm0
movsd %xmm0, -0x28(%rbp)
movsd -0x60(%rbp), %xmm0
movl -0x318(%rbp), %eax
subl $0x1, %eax
cltq
subsd -0x290(%rbp,%rax,8), %xmm0
movl $0x1, %edi
callq 0x2e350
subsd -0x48(%rbp), %xmm0
movsd %xmm0, -0x40(%rbp)
movsd -0x40(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jbe 0x2ece5
movsd -0x50(%rbp), %xmm0
movl -0x318(%rbp), %eax
subl $0x1, %eax
cltq
addsd -0x1a0(%rbp,%rax,8), %xmm0
movsd %xmm0, -0x360(%rbp)
movsd -0xa0(%rbp), %xmm0
movsd %xmm0, -0x358(%rbp)
movsd -0x40(%rbp), %xmm0
callq 0x4120
movsd -0x360(%rbp), %xmm1
movaps %xmm0, %xmm2
movsd -0x358(%rbp), %xmm0
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
callq 0x4060
movsd %xmm0, -0x28(%rbp)
movsd -0x58(%rbp), %xmm0
addsd -0x28(%rbp), %xmm0
movsd %xmm0, -0x58(%rbp)
movsd -0x28(%rbp), %xmm1
movsd -0x298(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x2ed27
movl -0x318(%rbp), %eax
cmpl -0x304(%rbp), %eax
jg 0x2ed23
movl -0x300(%rbp), %eax
cmpl -0x30c(%rbp), %eax
jle 0x2ed25
jmp 0x2ed3d
jmp 0x2ed27
jmp 0x2ed29
movl -0x2fc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x2fc(%rbp)
jmp 0x2eb3a
movsd -0x98(%rbp), %xmm0
movq %xmm0, %rax
movabsq $-0x8000000000000000, %rcx # imm = 0x8000000000000000
xorq %rcx, %rax
movq %rax, %xmm0
movsd %xmm0, -0x98(%rbp)
movl -0x31c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x31c(%rbp)
jmp 0x2eaea
jmp 0x2ed7a
jmp 0x2ed7c
movsd -0x2f8(%rbp), %xmm0
addsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x2f8(%rbp)
movl -0x300(%rbp), %eax
cmpl -0x30c(%rbp), %eax
jle 0x2edd4
movsd -0x58(%rbp), %xmm1
movsd -0x2a0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x2edd4
movsd -0x68(%rbp), %xmm1
movsd -0x2a0(%rbp), %xmm0
ucomisd %xmm1, %xmm0
jb 0x2edd4
movsd -0x2f8(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
jmp 0x2ee1f
movsd -0x68(%rbp), %xmm0
movsd %xmm0, -0x70(%rbp)
movsd -0x58(%rbp), %xmm0
movsd %xmm0, -0x68(%rbp)
movl -0x320(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x320(%rbp)
jmp 0x2e963
jmp 0x2edfe
movl -0x300(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x300(%rbp)
jmp 0x2e935
movsd -0x2f8(%rbp), %xmm0
movsd %xmm0, -0x8(%rbp)
movsd -0x8(%rbp), %xmm0
addq $0x360, %rsp            # imm = 0x360
popq %rbp
retq
nopl (%rax)