// File: /workspace/github_c_makefile_star2_O0/olcaytaner[P]Isell/statistics.c
// Function: find_cliques
void find_cliques(char** files, int filecount)
{
 BOOLEAN isclique, subset;
 char clique[MAXLENGTH];
 int *counts, **subsets, res, i, j, k, t, index, cliquecount = 0, *cliques = NULL, count = 0;
 Comparisonptr comparisons;
 comparisons = all_pairwise_comparisons(files, filecount, get_parameter_l("correctiontype"), get_parameter_l("testtype"));
 subsets = generate_subsets(filecount, &res, &counts);
 for (i = 0; i < res; i++)
   if (counts[i] > 1)
    {
     isclique = BOOLEAN_TRUE;
     for (j = 0; j < counts[i]; j++)
       for (k = j + 1; k < counts[i]; k++)
        {
         index = -1;
         for (t = 0; t < (filecount * (filecount - 1)) / 2; t++)
           if (comparisons[t].alg1 == subsets[i][j] && comparisons[t].alg2 == subsets[i][k])
            {
             index = t;
             break;
            }
         if (index == -1)
          {
           printf("Error in indexing\n");
           isclique = BOOLEAN_FALSE;
           break;           
          }
         if (!comparisons[index].accepted)
          {
           isclique = BOOLEAN_FALSE;
           break;
          }
        }
     if (isclique)
      {
       cliques = alloc(cliques, (cliquecount + 1) * sizeof(int), cliquecount + 1);
       cliques[cliquecount] = i;
       cliquecount++;
      }   
    }
 for (i = 0; i < cliquecount; i++)
  {
   subset = BOOLEAN_FALSE;
   for (j = 0; j < cliquecount; j++)
     if (i != j && is_subset(subsets[cliques[i]], subsets[cliques[j]], counts[cliques[i]], counts[cliques[j]]))
      {
       subset = BOOLEAN_TRUE;
       break;
      }
   if (!subset)
    {
     count++;
     sprintf(clique, "(");
     for (j = 0; j < counts[cliques[i]] - 1; j++)
       sprintf(clique, "%s%d ", clique, subsets[cliques[i]][j] + 1);
     sprintf(clique, "%s%d)", clique, subsets[cliques[i]][j] + 1);  
     write_array_variables("aout", count, 1, "s", clique);
    }
  }
 set_default_variable("out1", count + 0.0);
 for (i = 0; i < res; i++)
   if (counts[i] > 0)
     safe_free(subsets[i]);
 safe_free(subsets);
 safe_free(counts); 
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x7a1a0, %rsp          # imm = 0x7A1A0
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movl $0x0, -0x7a16c(%rbp)
movq $0x0, -0x7a178(%rbp)
movl $0x0, -0x7a17c(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x7a198(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x7a190(%rbp)
leaq 0x1efc1(%rip), %rdi     # 0xe26ad
callq 0x792b0
movl %eax, -0x7a18c(%rbp)
leaq 0x238c3(%rip), %rdi     # 0xe6fc1
callq 0x792b0
movq -0x7a198(%rbp), %rdi
movl -0x7a190(%rbp), %esi
movl -0x7a18c(%rbp), %edx
movl %eax, %ecx
callq 0xc3490
movq %rax, -0x7a188(%rbp)
movl -0xc(%rbp), %edi
leaq -0x7a154(%rbp), %rsi
leaq -0x7a148(%rbp), %rdx
callq 0x52000
movq %rax, -0x7a150(%rbp)
movl $0x0, -0x7a158(%rbp)
movl -0x7a158(%rbp), %eax
cmpl -0x7a154(%rbp), %eax
jge 0xc3982
movq -0x7a148(%rbp), %rax
movslq -0x7a158(%rbp), %rcx
cmpl $0x1, (%rax,%rcx,4)
jle 0xc396c
movl $0x1, -0x10(%rbp)
movl $0x0, -0x7a15c(%rbp)
movl -0x7a15c(%rbp), %eax
movq -0x7a148(%rbp), %rcx
movslq -0x7a158(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0xc3912
movl -0x7a15c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a160(%rbp)
movl -0x7a160(%rbp), %eax
movq -0x7a148(%rbp), %rcx
movslq -0x7a158(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jge 0xc38fc
movl $0xffffffff, -0x7a168(%rbp) # imm = 0xFFFFFFFF
movl $0x0, -0x7a164(%rbp)
movl -0x7a164(%rbp), %eax
movl %eax, -0x7a19c(%rbp)
movl -0xc(%rbp), %eax
movl -0xc(%rbp), %ecx
subl $0x1, %ecx
imull %ecx, %eax
movl $0x2, %ecx
cltd
idivl %ecx
movl %eax, %ecx
movl -0x7a19c(%rbp), %eax
cmpl %ecx, %eax
jge 0xc38a2
movq -0x7a188(%rbp), %rax
movslq -0x7a164(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl (%rax), %eax
movq -0x7a150(%rbp), %rcx
movslq -0x7a158(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x7a15c(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jne 0xc388c
movq -0x7a188(%rbp), %rax
movslq -0x7a164(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
movl 0x4(%rax), %eax
movq -0x7a150(%rbp), %rcx
movslq -0x7a158(%rbp), %rdx
movq (%rcx,%rdx,8), %rcx
movslq -0x7a160(%rbp), %rdx
cmpl (%rcx,%rdx,4), %eax
jne 0xc388c
movl -0x7a164(%rbp), %eax
movl %eax, -0x7a168(%rbp)
jmp 0xc38a2
jmp 0xc388e
movl -0x7a164(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a164(%rbp)
jmp 0xc37e3
cmpl $-0x1, -0x7a168(%rbp)
jne 0xc38c2
leaq 0x2a552(%rip), %rdi     # 0xede04
movb $0x0, %al
callq 0x4030
movl $0x0, -0x10(%rbp)
jmp 0xc38fc
movq -0x7a188(%rbp), %rax
movslq -0x7a168(%rbp), %rcx
imulq $0x18, %rcx, %rcx
addq %rcx, %rax
cmpl $0x0, 0x10(%rax)
jne 0xc38e6
movl $0x0, -0x10(%rbp)
jmp 0xc38fc
jmp 0xc38e8
movl -0x7a160(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a160(%rbp)
jmp 0xc37b2
jmp 0xc38fe
movl -0x7a15c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a15c(%rbp)
jmp 0xc3786
cmpl $0x0, -0x10(%rbp)
je 0xc396a
movq -0x7a178(%rbp), %rdi
movl -0x7a16c(%rbp), %eax
addl $0x1, %eax
movslq %eax, %rsi
shlq $0x2, %rsi
movl -0x7a16c(%rbp), %edx
addl $0x1, %edx
callq 0x52d10
movq %rax, -0x7a178(%rbp)
movl -0x7a158(%rbp), %edx
movq -0x7a178(%rbp), %rax
movslq -0x7a16c(%rbp), %rcx
movl %edx, (%rax,%rcx,4)
movl -0x7a16c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a16c(%rbp)
jmp 0xc396c
jmp 0xc396e
movl -0x7a158(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a158(%rbp)
jmp 0xc374b
movl $0x0, -0x7a158(%rbp)
movl -0x7a158(%rbp), %eax
cmpl -0x7a16c(%rbp), %eax
jge 0xc3ba9
movl $0x0, -0x14(%rbp)
movl $0x0, -0x7a15c(%rbp)
movl -0x7a15c(%rbp), %eax
cmpl -0x7a16c(%rbp), %eax
jge 0xc3a6e
movl -0x7a158(%rbp), %eax
cmpl -0x7a15c(%rbp), %eax
je 0xc3a58
movq -0x7a150(%rbp), %rax
movq -0x7a178(%rbp), %rcx
movslq -0x7a158(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movq (%rax,%rcx,8), %rdi
movq -0x7a150(%rbp), %rax
movq -0x7a178(%rbp), %rcx
movslq -0x7a15c(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movq (%rax,%rcx,8), %rsi
movq -0x7a148(%rbp), %rax
movq -0x7a178(%rbp), %rcx
movslq -0x7a158(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %edx
movq -0x7a148(%rbp), %rax
movq -0x7a178(%rbp), %rcx
movslq -0x7a15c(%rbp), %r8
movslq (%rcx,%r8,4), %rcx
movl (%rax,%rcx,4), %ecx
callq 0x51f70
cmpl $0x0, %eax
je 0xc3a58
movl $0x1, -0x14(%rbp)
jmp 0xc3a6e
jmp 0xc3a5a
movl -0x7a15c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a15c(%rbp)
jmp 0xc39af
cmpl $0x0, -0x14(%rbp)
jne 0xc3b93
movl -0x7a17c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a17c(%rbp)
leaq -0x7a140(%rbp), %rdi
leaq 0x2945d(%rip), %rsi     # 0xecef2
movb $0x0, %al
callq 0x4170
movl $0x0, -0x7a15c(%rbp)
movl -0x7a15c(%rbp), %eax
movq -0x7a148(%rbp), %rcx
movq -0x7a178(%rbp), %rdx
movslq -0x7a158(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movl (%rcx,%rdx,4), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0xc3b26
leaq -0x7a140(%rbp), %rdi
leaq -0x7a140(%rbp), %rdx
movq -0x7a150(%rbp), %rax
movq -0x7a178(%rbp), %rcx
movslq -0x7a158(%rbp), %rsi
movslq (%rcx,%rsi,4), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x7a15c(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
addl $0x1, %ecx
leaq 0x2a309(%rip), %rsi     # 0xede17
movb $0x0, %al
callq 0x4170
movl -0x7a15c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a15c(%rbp)
jmp 0xc3aa6
leaq -0x7a140(%rbp), %rdi
leaq -0x7a140(%rbp), %rdx
movq -0x7a150(%rbp), %rax
movq -0x7a178(%rbp), %rcx
movslq -0x7a158(%rbp), %rsi
movslq (%rcx,%rsi,4), %rcx
movq (%rax,%rcx,8), %rax
movslq -0x7a15c(%rbp), %rcx
movl (%rax,%rcx,4), %ecx
addl $0x1, %ecx
leaq 0x2a2b8(%rip), %rsi     # 0xede1d
movb $0x0, %al
callq 0x4170
movl -0x7a17c(%rbp), %esi
leaq -0x7a140(%rbp), %r8
leaq 0x1e935(%rip), %rdi     # 0xe24b5
movl $0x1, %edx
leaq 0x20f0d(%rip), %rcx     # 0xe4a99
movb $0x0, %al
callq 0x490c0
jmp 0xc3b95
movl -0x7a158(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a158(%rbp)
jmp 0xc398c
cvtsi2sdl -0x7a17c(%rbp), %xmm0
xorps %xmm1, %xmm1
addsd %xmm1, %xmm0
leaq 0x21fc9(%rip), %rdi     # 0xe5b88
callq 0x4b070
movl $0x0, -0x7a158(%rbp)
movl -0x7a158(%rbp), %eax
cmpl -0x7a154(%rbp), %eax
jge 0xc3c1a
movq -0x7a148(%rbp), %rax
movslq -0x7a158(%rbp), %rcx
cmpl $0x0, (%rax,%rcx,4)
jle 0xc3c07
movq -0x7a150(%rbp), %rax
movslq -0x7a158(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x52e80
jmp 0xc3c09
movl -0x7a158(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x7a158(%rbp)
jmp 0xc3bce
movq -0x7a150(%rbp), %rdi
callq 0x52e80
movq -0x7a148(%rbp), %rdi
callq 0x52e80
addq $0x7a1a0, %rsp          # imm = 0x7A1A0
popq %rbp
retq
nopl (%rax,%rax)