// File: JenTus[P]TCEM/src_TCEM/allocator.cc
// Function: Cide::allocator::createhyperGTPairs(long long)
double allocator::createhyperGTPairs(int64 newSize) {
        // use to create reverse rr pairs
        //update hyperG and hyper_degree
        //cout << "newSize is " << newSize << endl;
        for (int z = prevSize; z < newSize; ++z) {
            hyperGTpairs.emplace_back(std::vector<int>()); // init
        }

        for (int rcID = prevSize; rcID < newSize; ++rcID) {
            for (int i = 0; i < rcList->at(0)->hyperGT[rcID].size(); ++i) {
                for (int j = 0; j < rcList->at(1)->hyperGT[rcID].size(); ++j) {
                    //cout << "r: " << rcList->at(0)->hyperGT[rcID].size() << " b: " << rcList->at(1)->hyperGT[rcID].size()<< endl;
                   int t = rcList->at(0)->hyperGT[rcID][i]*n + rcList->at(1)->hyperGT[rcID][j];
                   hyperGTpairs[rcID].push_back(t);
                }
            }
        }

        return hyperGTpairs.size();
    }

// Assembly:
subq $0x88, %rsp
movq %rdi, 0x80(%rsp)
movq %rsi, 0x78(%rsp)
movq 0x80(%rsp), %rax
movq %rax, 0x28(%rsp)
movq 0xb20(%rax), %rax
movl %eax, 0x74(%rsp)
movslq 0x74(%rsp), %rax
cmpq 0x78(%rsp), %rax
jge 0xd18d
movq 0x28(%rsp), %rax
addq $0xb28, %rax            # imm = 0xB28
movq %rax, 0x18(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x50(%rsp)
movq $0x0, 0x60(%rsp)
leaq 0x50(%rsp), %rdi
movq %rdi, 0x20(%rsp)
callq 0xd840
movq 0x18(%rsp), %rdi
movq 0x20(%rsp), %rsi
callq 0xdb70
jmp 0xd159
leaq 0x50(%rsp), %rdi
callq 0xdbe0
movl 0x74(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x74(%rsp)
jmp 0xd10c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x48(%rsp)
movl %eax, 0x44(%rsp)
leaq 0x50(%rsp), %rdi
callq 0xdbe0
jmp 0xd368
movq 0x28(%rsp), %rax
movq 0xb20(%rax), %rax
movl %eax, 0x40(%rsp)
movslq 0x40(%rsp), %rax
cmpq 0x78(%rsp), %rax
jge 0xd328
movl $0x0, 0x3c(%rsp)
movq 0x28(%rsp), %rax
movslq 0x3c(%rsp), %rcx
movq %rcx, 0x10(%rsp)
movq 0xae8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xe0d0
movq (%rax), %rdi
addq $0x18, %rdi
movslq 0x40(%rsp), %rsi
callq 0xe110
movq %rax, %rdi
callq 0xe130
movq %rax, %rcx
movq 0x10(%rsp), %rax
cmpq %rcx, %rax
jae 0xd316
movl $0x0, 0x38(%rsp)
movq 0x28(%rsp), %rax
movslq 0x38(%rsp), %rcx
movq %rcx, 0x8(%rsp)
movq 0xae8(%rax), %rdi
movl $0x1, %esi
callq 0xe0d0
movq (%rax), %rdi
addq $0x18, %rdi
movslq 0x40(%rsp), %rsi
callq 0xe110
movq %rax, %rdi
callq 0xe130
movq %rax, %rcx
movq 0x8(%rsp), %rax
cmpq %rcx, %rax
jae 0xd304
movq 0x28(%rsp), %rax
movq 0xae8(%rax), %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xe0d0
movq (%rax), %rdi
addq $0x18, %rdi
movslq 0x40(%rsp), %rsi
callq 0xe110
movq %rax, %rdi
movslq 0x3c(%rsp), %rsi
callq 0xe150
movq %rax, %rcx
movq 0x28(%rsp), %rax
movl (%rcx), %ecx
imull 0x68(%rax), %ecx
movl %ecx, 0x4(%rsp)
movq 0xae8(%rax), %rdi
movl $0x1, %esi
callq 0xe0d0
movq (%rax), %rdi
addq $0x18, %rdi
movslq 0x40(%rsp), %rsi
callq 0xe110
movq %rax, %rdi
movslq 0x38(%rsp), %rsi
callq 0xe150
movq 0x28(%rsp), %rdi
movq %rax, %rcx
movl 0x4(%rsp), %eax
addl (%rcx), %eax
movl %eax, 0x34(%rsp)
addq $0xb28, %rdi            # imm = 0xB28
movslq 0x40(%rsp), %rsi
callq 0xe110
movq %rax, %rdi
leaq 0x34(%rsp), %rsi
callq 0xe060
movl 0x38(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x38(%rsp)
jmp 0xd206
jmp 0xd306
movl 0x3c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x3c(%rsp)
jmp 0xd1b5
jmp 0xd318
movl 0x40(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x40(%rsp)
jmp 0xd19d
movq 0x28(%rsp), %rdi
addq $0xb28, %rdi            # imm = 0xB28
callq 0xe190
movq %rax, %xmm0
movaps 0x16deb(%rip), %xmm1    # 0x24130
punpckldq %xmm1, %xmm0    # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movapd 0x16def(%rip), %xmm1    # 0x24140
subpd %xmm1, %xmm0
movaps %xmm0, %xmm1
unpckhpd %xmm0, %xmm0            # xmm0 = xmm0[1,1]
addsd %xmm1, %xmm0
addq $0x88, %rsp
retq
movq 0x48(%rsp), %rdi
callq 0x4680
nopw %cs:(%rax,%rax)