// File: /workspace/github_c_makefile_star2_O0/ComplexNetworks-DCC-FCUP[P]gtrieScanner/GTrie.cpp
// Function: GTrieNode::goCondUndir()
void GTrieNode::goCondUndir() {  
  int i, j, ci, mylim, glaux;
  int ncand;
  int *p;

  mylim = INT_MAX;
  if (!cond_ok) {
    i = 1;
    list< list<iPair> >::const_iterator jj, jjend;
    list<iPair>::const_iterator kk, kkend;
    for (jj=cond.begin(), jjend=cond.end(); jj!=jjend; ++jj) {
      glaux = -1;
      for (kk=(*jj).begin(), kkend=(*jj).end(); kk!=kkend; ++kk)
	if (kk->second<glk && mymap[kk->first] > mymap[kk->second])
	  break;
	else if (kk->second==glk && mymap[kk->first]>glaux)
	  glaux = mymap[kk->first];
      if (kk==kkend) {
	i = 0;
	if (glaux < mylim) mylim=glaux;
      }
    }
    if (i) return;
  }
  if (mylim == INT_MAX) mylim = 0;
    
  ncand=0;
  j=ci=INT_MAX;
  for (i=0; i<nconn; i++) {
    glaux = numnei[mymap[conn[i]]];
    if (glaux<j) {
      ci = mymap[conn[i]];
      j = glaux;
    }
  }

  glaux = j;
  ncand = ci;
  for (p=&fastnei[ncand][j-1], ci= glaux-1; ci>=0; ci--, p--) {    
    i = *p;
    if (i<mylim) break;
    if (used[i]) continue;
    mymap[glk] = i;
    
    bool *b = &adjM[i][0];
    for (j=0; j<glk; j++)
      if (out[j] != *(b+mymap[j]))
	break;
    if (j<glk) continue;
    
    if (is_graph) {
      frequency++;
      if (Global::show_occ) {
	for (int k = 0; k<=glk; k++)
	  for (int l = 0; l<=glk; l++)
	    fputc(adjM[mymap[k]][mymap[l]]?'1':'0', Global::occ_file);
	fputc(':', Global::occ_file);
	for (int k = 0; k<=glk; k++)
	  fprintf(Global::occ_file, " %d", mymap[k]+1);
	fputc('\n', Global::occ_file);
      }
    }

    used[i]=true;
    glk++;
    list<GTrieNode *>::const_iterator ii, iiend;
    for(ii=child.begin(), iiend = child.end(); ii!=iiend; ++ii)
      (*ii)->goCondUndir();
    glk--;
    used[i]=false;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x100, %rsp            # imm = 0x100
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movl $0x7fffffff, -0x18(%rbp) # imm = 0x7FFFFFFF
testb $0x1, 0x48(%rax)
jne 0x119eb
movl $0x1, -0xc(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x15200
leaq -0x38(%rbp), %rdi
callq 0x15200
leaq -0x40(%rbp), %rdi
callq 0x15220
leaq -0x48(%rbp), %rdi
callq 0x15220
movq -0xc8(%rbp), %rdi
addq $0x18, %rdi
callq 0x154b0
movq %rax, -0x58(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x15c80
movq -0xc8(%rbp), %rdi
movq -0x50(%rbp), %rax
movq %rax, -0x30(%rbp)
addq $0x18, %rdi
callq 0x15510
movq %rax, -0x68(%rbp)
leaq -0x60(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x15c80
movq -0x60(%rbp), %rax
movq %rax, -0x38(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x15d30
testb $0x1, %al
jne 0x1185e
jmp 0x119de
movl $0xffffffff, -0x1c(%rbp) # imm = 0xFFFFFFFF
leaq -0x30(%rbp), %rdi
callq 0x15d60
movq %rax, %rdi
callq 0x15d90
movq %rax, -0x70(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x40(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x15d60
movq %rax, %rdi
callq 0x15dc0
movq %rax, -0x78(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x48(%rbp)
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x15df0
testb $0x1, %al
jne 0x118b5
jmp 0x119a4
leaq -0x40(%rbp), %rdi
callq 0x15e20
movl 0x4(%rax), %eax
cmpl 0x23d31(%rip), %eax     # 0x355f8
jge 0x11928
movq 0x23d00(%rip), %rax     # 0x355d0
movq %rax, -0xe0(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x15e20
movq %rax, %rcx
movq -0xe0(%rbp), %rax
movslq (%rcx), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0xcc(%rbp)
movq 0x23cd3(%rip), %rax     # 0x355d0
movq %rax, -0xd8(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x15e20
movq -0xd8(%rbp), %rcx
movq %rax, %rdx
movl -0xcc(%rbp), %eax
movslq 0x4(%rdx), %rdx
cmpl (%rcx,%rdx,4), %eax
jle 0x11928
jmp 0x119a4
leaq -0x40(%rbp), %rdi
callq 0x15e20
movl 0x4(%rax), %eax
cmpl 0x23cbe(%rip), %eax     # 0x355f8
jne 0x11992
movq 0x23c8d(%rip), %rax     # 0x355d0
movq %rax, -0xe8(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x15e20
movq %rax, %rcx
movq -0xe8(%rbp), %rax
movslq (%rcx), %rcx
movl (%rax,%rcx,4), %eax
cmpl -0x1c(%rbp), %eax
jle 0x11992
movq 0x23c61(%rip), %rax     # 0x355d0
movq %rax, -0xf0(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x15e20
movq %rax, %rcx
movq -0xf0(%rbp), %rax
movslq (%rcx), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x1c(%rbp)
jmp 0x11994
jmp 0x11996
leaq -0x40(%rbp), %rdi
callq 0x15e40
jmp 0x1189f
leaq -0x40(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x15e60
testb $0x1, %al
jne 0x119b7
jmp 0x119ce
movl $0x0, -0xc(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x18(%rbp), %eax
jge 0x119cc
movl -0x1c(%rbp), %eax
movl %eax, -0x18(%rbp)
jmp 0x119ce
jmp 0x119d0
leaq -0x30(%rbp), %rdi
callq 0x15e90
jmp 0x11848
cmpl $0x0, -0xc(%rbp)
je 0x119e9
jmp 0x11e1b
jmp 0x119eb
cmpl $0x7fffffff, -0x18(%rbp) # imm = 0x7FFFFFFF
jne 0x119fb
movl $0x0, -0x18(%rbp)
movl $0x0, -0x20(%rbp)
movl $0x7fffffff, -0x14(%rbp) # imm = 0x7FFFFFFF
movl $0x7fffffff, -0x10(%rbp) # imm = 0x7FFFFFFF
movl $0x0, -0xc(%rbp)
movq -0xc8(%rbp), %rcx
movl -0xc(%rbp), %eax
cmpl 0x74(%rcx), %eax
jge 0x11a8c
movq -0xc8(%rbp), %rdx
movq 0x23bbc(%rip), %rax     # 0x355f0
movq 0x23b95(%rip), %rcx     # 0x355d0
movq 0x78(%rdx), %rdx
movslq -0xc(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl -0x10(%rbp), %eax
jge 0x11a7f
movq -0xc8(%rbp), %rcx
movq 0x23b69(%rip), %rax     # 0x355d0
movq 0x78(%rcx), %rcx
movslq -0xc(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x14(%rbp)
movl -0x1c(%rbp), %eax
movl %eax, -0x10(%rbp)
jmp 0x11a81
movl -0xc(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xc(%rbp)
jmp 0x11a17
movl -0x10(%rbp), %eax
movl %eax, -0x1c(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x20(%rbp)
movq 0x23b49(%rip), %rax     # 0x355e8
movslq -0x20(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movl -0x10(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x28(%rbp)
movl -0x1c(%rbp), %eax
subl $0x1, %eax
movl %eax, -0x14(%rbp)
cmpl $0x0, -0x14(%rbp)
jl 0x11e1b
movq -0x28(%rbp), %rax
movl (%rax), %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
cmpl -0x18(%rbp), %eax
jge 0x11ae4
jmp 0x11e1b
movq 0x23aed(%rip), %rax     # 0x355d8
movslq -0xc(%rbp), %rcx
testb $0x1, (%rax,%rcx)
je 0x11afa
jmp 0x11e01
movl -0xc(%rbp), %edx
movq 0x23acc(%rip), %rax     # 0x355d0
movslq 0x23aed(%rip), %rcx     # 0x355f8
movl %edx, (%rax,%rcx,4)
movq 0x23acb(%rip), %rax     # 0x355e0
movslq -0xc(%rbp), %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x80(%rbp)
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
cmpl 0x23ac7(%rip), %eax     # 0x355f8
jge 0x11b79
movq -0xc8(%rbp), %rax
movq 0x60(%rax), %rax
movslq -0x10(%rbp), %rcx
movb (%rax,%rcx), %al
andb $0x1, %al
movzbl %al, %eax
movq -0x80(%rbp), %rcx
movq 0x23a7b(%rip), %rdx     # 0x355d0
movslq -0x10(%rbp), %rsi
movslq (%rdx,%rsi,4), %rdx
movb (%rcx,%rdx), %cl
andb $0x1, %cl
movzbl %cl, %ecx
cmpl %ecx, %eax
je 0x11b6c
jmp 0x11b79
jmp 0x11b6e
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0x11b28
movl -0x10(%rbp), %eax
cmpl 0x23a76(%rip), %eax     # 0x355f8
jge 0x11b89
jmp 0x11e01
movq -0xc8(%rbp), %rax
testb $0x1, 0x50(%rax)
je 0x11d02
movq -0xc8(%rbp), %rax
movl 0x54(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x54(%rax)
leaq 0x2b9c0(%rip), %rax     # 0x3d571
testb $0x1, (%rax)
je 0x11d00
movl $0x0, -0x84(%rbp)
movl -0x84(%rbp), %eax
cmpl 0x23a28(%rip), %eax     # 0x355f8
jg 0x11c83
movl $0x0, -0x88(%rbp)
movl -0x88(%rbp), %eax
cmpl 0x23a0c(%rip), %eax     # 0x355f8
jg 0x11c6d
movq 0x239eb(%rip), %rax     # 0x355e0
movq 0x239d4(%rip), %rcx     # 0x355d0
movslq -0x84(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movq (%rax,%rcx,8), %rax
movq 0x239be(%rip), %rcx     # 0x355d0
movslq -0x88(%rbp), %rdx
movslq (%rcx,%rdx,4), %rcx
movb (%rax,%rcx), %cl
movb $0x31, %al
movb $0x30, %dl
movb %dl, -0xf2(%rbp)
testb $0x1, %cl
movb %al, -0xf1(%rbp)
jne 0x11c41
movb -0xf2(%rbp), %al
movb %al, -0xf1(%rbp)
movb -0xf1(%rbp), %al
movsbl %al, %edi
leaq 0x2b927(%rip), %rax     # 0x3d578
movq (%rax), %rsi
callq 0x3350
movl -0x88(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x88(%rbp)
jmp 0x11be0
jmp 0x11c6f
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
jmp 0x11bc4
leaq 0x2b8ee(%rip), %rax     # 0x3d578
movq (%rax), %rsi
movl $0x3a, %edi
callq 0x3350
movl $0x0, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
cmpl 0x2394b(%rip), %eax     # 0x355f8
jg 0x11cec
leaq 0x2b8c2(%rip), %rax     # 0x3d578
movq (%rax), %rdi
movq 0x23910(%rip), %rax     # 0x355d0
movslq -0x8c(%rbp), %rcx
movl (%rax,%rcx,4), %edx
addl $0x1, %edx
leaq 0xee73(%rip), %rsi      # 0x20b47
movb $0x0, %al
callq 0x33a0
movl -0x8c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x8c(%rbp)
jmp 0x11ca1
leaq 0x2b885(%rip), %rax     # 0x3d578
movq (%rax), %rsi
movl $0xa, %edi
callq 0x3350
jmp 0x11d02
movq 0x238cf(%rip), %rax     # 0x355d8
movslq -0xc(%rbp), %rcx
movb $0x1, (%rax,%rcx)
movl 0x238e1(%rip), %eax     # 0x355f8
addl $0x1, %eax
movl %eax, 0x238d8(%rip)     # 0x355f8
leaq -0x98(%rbp), %rdi
callq 0x15eb0
leaq -0xa0(%rbp), %rdi
callq 0x15eb0
movq -0xc8(%rbp), %rdi
addq $0x30, %rdi
callq 0x153b0
movq %rax, -0xb0(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0x15ed0
movq -0xc8(%rbp), %rdi
movq -0xa8(%rbp), %rax
movq %rax, -0x98(%rbp)
addq $0x30, %rdi
callq 0x15410
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x15ed0
movq -0xb8(%rbp), %rax
movq %rax, -0xa0(%rbp)
leaq -0x98(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x15ef0
testb $0x1, %al
jne 0x11dc1
jmp 0x11de3
leaq -0x98(%rbp), %rdi
callq 0x15f20
movq (%rax), %rdi
callq 0x117a0
leaq -0x98(%rbp), %rdi
callq 0x15f50
jmp 0x11da8
movl 0x2380f(%rip), %eax     # 0x355f8
addl $-0x1, %eax
movl %eax, 0x23806(%rip)     # 0x355f8
movq 0x237df(%rip), %rax     # 0x355d8
movslq -0xc(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movl -0x14(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x14(%rbp)
movq -0x28(%rbp), %rax
addq $-0x4, %rax
movq %rax, -0x28(%rbp)
jmp 0x11ac4
addq $0x100, %rsp            # imm = 0x100
popq %rbp
retq
nopw %cs:(%rax,%rax)