// File: JenTus[P]TCEM/src_TCEM/itemGraph.cc
// Function: Cide::itemGraph::BuildHypergraphNode(int, long long)
int itemGraph::BuildHypergraphNode(int uStart, int64 hyperiiid) {
        int n_visit_edge=1;
        
        hyperGT[hyperiiid].push_back(uStart);
        
        int n_visit_mark = 0;
        
        q.clear();
        q.push_back(uStart);
        visit_mark[n_visit_mark++] = uStart; // repeatedly use this, not not initialize again.
        visit[uStart] = true;
        
        while(!q.empty()) {
            int expand = q.front();
            q.pop_front();
            
            int i = expand;
            for(int j = 0; j < (int)graphT[i].size(); j++){
                int v = graphT[i][j]; //parent of u in the original graph G
                n_visit_edge++;
                double randDouble = sfmt_genrand_real1(&sfmtSeed);
                if(randDouble > probT[i][j])
                    continue;
                if(visit[v])
                    continue;
                if(!visit[v]) {
                    visit_mark[n_visit_mark++] = v;
                    visit[v]=true;
                }
                q.push_back(v);
                hyperGT[hyperiiid].push_back(v);
            }
        }
        
        for(int i = 0; i < n_visit_mark; i++)
            visit[visit_mark[i]]=false;
        
        return n_visit_edge; 
    }

// Assembly:
subq $0xb8, %rsp
movq %rdi, 0xb0(%rsp)
movl %esi, 0xac(%rsp)
movq %rdx, 0xa0(%rsp)
movq 0xb0(%rsp), %rdi
movq %rdi, 0x20(%rsp)
movl $0x1, 0x9c(%rsp)
addq $0x18, %rdi
movq 0xa0(%rsp), %rsi
callq 0xe110
movq %rax, %rdi
leaq 0xac(%rsp), %rsi
callq 0xe060
movq 0x20(%rsp), %rdi
movl $0x0, 0x98(%rsp)
addq $0xa38, %rdi            # imm = 0xA38
callq 0x1d670
movq 0x20(%rsp), %rdi
addq $0xa38, %rdi            # imm = 0xA38
leaq 0xac(%rsp), %rsi
callq 0x1d6b0
movq 0x20(%rsp), %rdi
movl 0xac(%rsp), %eax
movl %eax, 0x1c(%rsp)
addq $0xa20, %rdi            # imm = 0xA20
movl 0x98(%rsp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x98(%rsp)
movslq %eax, %rsi
callq 0xe150
movl 0x1c(%rsp), %ecx
movq 0x20(%rsp), %rdi
movl %ecx, (%rax)
addq $0x9f8, %rdi            # imm = 0x9F8
movslq 0xac(%rsp), %rsi
callq 0xe5e0
movq %rax, 0x88(%rsp)
movq %rdx, 0x90(%rsp)
leaq 0x88(%rsp), %rdi
movl $0x1, %esi
callq 0xe670
movq 0x20(%rsp), %rdi
addq $0xa38, %rdi            # imm = 0xA38
callq 0x1d710
xorb $-0x1, %al
testb $0x1, %al
jne 0x1d11b
jmp 0x1d330
movq 0x20(%rsp), %rdi
addq $0xa38, %rdi            # imm = 0xA38
callq 0x1d730
movq 0x20(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x84(%rsp)
addq $0xa38, %rdi            # imm = 0xA38
callq 0x1d760
movl 0x84(%rsp), %eax
movl %eax, 0x80(%rsp)
movl $0x0, 0x7c(%rsp)
movl 0x7c(%rsp), %eax
movl %eax, 0x18(%rsp)
movslq 0x80(%rsp), %rsi
leaq 0x1224d(%rip), %rdi     # 0x2f3c0
callq 0xe110
movq %rax, %rdi
callq 0xe130
movq %rax, %rcx
movl 0x18(%rsp), %eax
cmpl %ecx, %eax
jge 0x1d32b
movslq 0x80(%rsp), %rsi
leaq 0x12222(%rip), %rdi     # 0x2f3c0
callq 0xe110
movq %rax, %rdi
movslq 0x7c(%rsp), %rsi
callq 0xe150
movq 0x20(%rsp), %rdi
movl (%rax), %eax
movl %eax, 0x78(%rsp)
movl 0x9c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x9c(%rsp)
addq $0x30, %rdi
callq 0x1d450
movq 0x20(%rsp), %rdi
movsd %xmm0, 0x70(%rsp)
movsd 0x70(%rsp), %xmm0
movsd %xmm0, 0x10(%rsp)
movslq 0x80(%rsp), %rsi
callq 0xf3d0
movq %rax, %rdi
movslq 0x7c(%rsp), %rsi
callq 0xe170
movsd 0x10(%rsp), %xmm0
ucomisd (%rax), %xmm0
jbe 0x1d217
jmp 0x1d31b
movq 0x20(%rsp), %rdi
addq $0x9f8, %rdi            # imm = 0x9F8
movslq 0x78(%rsp), %rsi
callq 0xe5e0
movq %rax, 0x60(%rsp)
movq %rdx, 0x68(%rsp)
leaq 0x60(%rsp), %rdi
callq 0xe640
testb $0x1, %al
jne 0x1d247
jmp 0x1d24c
jmp 0x1d31b
movq 0x20(%rsp), %rdi
addq $0x9f8, %rdi            # imm = 0x9F8
movslq 0x78(%rsp), %rsi
callq 0xe5e0
movq %rax, 0x50(%rsp)
movq %rdx, 0x58(%rsp)
leaq 0x50(%rsp), %rdi
callq 0xe640
xorb $-0x1, %al
testb $0x1, %al
jne 0x1d27e
jmp 0x1d2e2
movq 0x20(%rsp), %rdi
movl 0x78(%rsp), %eax
movl %eax, 0xc(%rsp)
addq $0xa20, %rdi            # imm = 0xA20
movl 0x98(%rsp), %eax
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x98(%rsp)
movslq %eax, %rsi
callq 0xe150
movl 0xc(%rsp), %ecx
movq 0x20(%rsp), %rdi
movl %ecx, (%rax)
addq $0x9f8, %rdi            # imm = 0x9F8
movslq 0x78(%rsp), %rsi
callq 0xe5e0
movq %rax, 0x40(%rsp)
movq %rdx, 0x48(%rsp)
leaq 0x40(%rsp), %rdi
movl $0x1, %esi
callq 0xe670
movq 0x20(%rsp), %rdi
addq $0xa38, %rdi            # imm = 0xA38
leaq 0x78(%rsp), %rsi
callq 0x1d6b0
movq 0x20(%rsp), %rdi
addq $0x18, %rdi
movq 0xa0(%rsp), %rsi
callq 0xe110
movq %rax, %rdi
leaq 0x78(%rsp), %rsi
callq 0xe060
movl 0x7c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x7c(%rsp)
jmp 0x1d15c
jmp 0x1d0ff
movl $0x0, 0x3c(%rsp)
movl 0x3c(%rsp), %eax
cmpl 0x98(%rsp), %eax
jge 0x1d397
movq 0x20(%rsp), %rdi
movq %rdi, %rax
addq $0x9f8, %rax            # imm = 0x9F8
movq %rax, (%rsp)
addq $0xa20, %rdi            # imm = 0xA20
movslq 0x3c(%rsp), %rsi
callq 0xe150
movq (%rsp), %rdi
movslq (%rax), %rsi
callq 0xe5e0
movq %rax, 0x28(%rsp)
movq %rdx, 0x30(%rsp)
leaq 0x28(%rsp), %rdi
xorl %esi, %esi
callq 0xe670
movl 0x3c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x3c(%rsp)
jmp 0x1d338
movl 0x9c(%rsp), %eax
addq $0xb8, %rsp
retq
nopw %cs:(%rax,%rax)