// File: /workspace/github_c_makefile_star2_O3/olcaytaner[P]Isell/statistics.c
// Function: all_pairwise_comparisons
Comparisonptr all_pairwise_comparisons(char** files, int filecount, int correctiontype, TEST_TYPE testtype)
{
 int i, j, compcount = 0, which;
 double confidence = get_parameter_f("confidencelevel"), conf;
 char **two_file;
 Comparisonptr comparisons;
 two_file = safemalloc(2 * sizeof(char *), "all_pairwise_comparisons", 3);
 comparisons = safemalloc(((filecount * (filecount - 1)) / 2) * sizeof(Comparison), "all_pairwise_comparisons", 5);
 for (i = 0; i < filecount; i++)
   for (j = i + 1; j < filecount; j++)
    {
     two_file[0] = strcopy(two_file[0], files[i]);
     two_file[1] = strcopy(two_file[1], files[j]);
     compare_two_files_using_test(testtype, two_file, &which, 1 - confidence, &conf);
     safe_free(two_file[0]);
     safe_free(two_file[1]);
     comparisons[compcount].alg1 = i;
     comparisons[compcount].alg2 = j;
     comparisons[compcount].confidence = 1 - conf;
     comparisons[compcount].accepted = 1;
     compcount++;
    }
 switch (correctiontype)
  {
   case BONFERRONI_CORRECTION:bonferroni_correction(comparisons, compcount, confidence);
                              break;
   case HOLM_CORRECTION      :holm_correction(comparisons, compcount, confidence);
                              break;
   case NO_CORRECTION        :no_correction(comparisons, compcount, confidence);
                              break;
  }
 safe_free(two_file);
 return comparisons;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movl %ecx, %ebp
movl %edx, 0x8(%rsp)
movl %esi, %r14d
movq %rdi, %r15
leaq 0x1720f(%rip), %rdi     # 0xa5928
callq 0x549ba
movsd %xmm0, (%rsp)
leaq 0x23040(%rip), %r13     # 0xb176a
movl $0x10, %edi
movq %r13, %rsi
movl $0x3, %edx
callq 0x3a0e1
movq %rax, %rbx
leal -0x1(%r14), %eax
imull %r14d, %eax
movl %eax, %ecx
shrl $0x1f, %ecx
addl %eax, %ecx
sarl %ecx
movslq %ecx, %rax
shlq $0x3, %rax
leaq (%rax,%rax,2), %rdi
movq %r13, %rsi
movl $0x5, %edx
callq 0x3a0e1
testl %r14d, %r14d
movq %rax, 0x10(%rsp)
jle 0x8e87b
movq %r15, 0x40(%rsp)
movl %ebp, 0xc(%rsp)
movsd 0x16d99(%rip), %xmm0    # 0xa5520
subsd (%rsp), %xmm0
movsd %xmm0, 0x38(%rsp)
movl %r14d, %ecx
addq $0x10, %rax
movq %rax, 0x18(%rsp)
xorl %r12d, %r12d
movl $0x1, %ebp
xorl %r13d, %r13d
movq %rcx, 0x30(%rsp)
movq 0x40(%rsp), %r14
leaq 0x1(%r12), %rax
movq %rax, 0x28(%rsp)
cmpq %rcx, %rax
movq %rbp, 0x20(%rsp)
jae 0x8e863
movslq %r13d, %rax
leaq (%rax,%rax,2), %rax
movq 0x18(%rsp), %rdx
leaq (%rdx,%rax,8), %r15
movq (%rbx), %rdi
movq (%r14,%r12,8), %rsi
callq 0x3b494
movq %rax, (%rbx)
movq 0x8(%rbx), %rdi
movq (%r14,%rbp,8), %rsi
callq 0x3b494
movq %rax, 0x8(%rbx)
movl 0xc(%rsp), %edi
movq %rbx, %rsi
leaq 0x54(%rsp), %rdx
movsd 0x38(%rsp), %xmm0
leaq 0x48(%rsp), %rcx
callq 0x8dee7
movq (%rbx), %rdi
callq 0x3a180
movq 0x8(%rbx), %rdi
callq 0x3a180
movq 0x30(%rsp), %rcx
movsd 0x16ceb(%rip), %xmm0    # 0xa5520
movl %r12d, -0x10(%r15)
movl %ebp, -0xc(%r15)
subsd 0x48(%rsp), %xmm0
movsd %xmm0, -0x8(%r15)
movl $0x1, (%r15)
incq %rbp
addq $0x18, %r15
incl %r13d
cmpq %rbp, %rcx
jne 0x8e7db
movq 0x20(%rsp), %rbp
incq %rbp
movq 0x28(%rsp), %r12
cmpq %rcx, %r12
jne 0x8e7b3
jmp 0x8e87e
xorl %r13d, %r13d
movl 0x8(%rsp), %eax
cmpl $0x2, %eax
je 0x8e8df
cmpl $0x1, %eax
movsd (%rsp), %xmm0
movq 0x10(%rsp), %r14
je 0x8e8d2
testl %eax, %eax
jne 0x8e916
testl %r13d, %r13d
jle 0x8e916
cvtsi2sd %r13d, %xmm1
divsd %xmm1, %xmm0
movl %r13d, %eax
shlq $0x3, %rax
leaq (%rax,%rax,2), %rax
xorl %ecx, %ecx
ucomisd 0x8(%r14,%rcx), %xmm0
jbe 0x8e8c7
movl $0x0, 0x10(%r14,%rcx)
addq $0x18, %rcx
cmpq %rcx, %rax
jne 0x8e8b5
jmp 0x8e916
movq %r14, %rdi
movl %r13d, %esi
callq 0x8e4fd
jmp 0x8e916
testl %r13d, %r13d
movsd (%rsp), %xmm0
movq 0x10(%rsp), %r14
jle 0x8e916
movl %r13d, %eax
shlq $0x3, %rax
leaq (%rax,%rax,2), %rax
xorl %ecx, %ecx
ucomisd 0x8(%r14,%rcx), %xmm0
jbe 0x8e90d
movl $0x0, 0x10(%r14,%rcx)
addq $0x18, %rcx
cmpq %rcx, %rax
jne 0x8e8fb
movq %rbx, %rdi
callq 0x3a180
movq %r14, %rax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq