// File: quancs[P]EAVC/./eavc.h
// Function: init_sol()
void init_sol() {
    //use dVDegree as vDegree
    int *dscoreTemp = new int[vNum];
    VerticeStatus *vInCTemp = new VerticeStatus[vNum];
    unsigned int cvSizeTemp = 0;

    memset(vTimestamp, 0, sizeof(unsigned int) * vNum);

    init_vertex_greedy_vc(dscoreTemp, vInCTemp, cvSizeTemp);
    check_solution(vInCTemp, cvSizeTemp + total_IN_ABS, dscoreTemp);
    std::swap(vInC, vInCTemp);
    std::swap(dscore, dscoreTemp);
    cvSize = cvSizeTemp;

    init_edge_greedy_vc(dscoreTemp, vInCTemp, cvSizeTemp);
    check_solution(vInCTemp, cvSizeTemp + total_IN_ABS, dscoreTemp);
    if (cvSizeTemp < cvSize) {
        std::swap(vInC, vInCTemp);
        std::swap(dscore, dscoreTemp);
        cvSize = cvSizeTemp;
    }

    init_match_vc(dscoreTemp, vInCTemp, cvSizeTemp);
    check_solution(vInCTemp, cvSizeTemp + total_IN_ABS, dscoreTemp);
    if (cvSizeTemp < cvSize) {
        std::swap(vInC, vInCTemp);
        std::swap(dscore, dscoreTemp);
        cvSize = cvSizeTemp;
    }

    //construct other structures
    update_best_sol();

    //cAllVertexes layout:IN_ABS vertices | IN vertices | unused area
    //cVertexes layout:IN vertices | unused area
    cAllVertexes = cVertexes;
    cVertexes = &(cAllVertexes[total_IN_ABS]);
    cAVSize = cvSize + total_IN_ABS;
    cvSize = 0;
    for (unsigned i = 0; i < uvSize; i++) {
        unsigned v = uvSet[i];
        if (in(vInC, v)) {
            cVertexes[cvSize] = v;
            cVertexIndexes[v] = cvSize;
            cvSize++;
        }
    }

    ueSize = 0;

    cout << "c init best = " << cAVSize << endl;
    delete [] dscoreTemp;
    delete [] vInCTemp;
}

// Assembly:
subq $0x38, %rsp
movl 0x76a2(%rip), %eax      # 0xb13c
movl $0x4, %ecx
mulq %rcx
movq %rax, %rdi
seto %cl
movq $-0x1, %rax
testb $0x1, %cl
cmovneq %rax, %rdi
callq 0x2030
movq %rax, 0x30(%rsp)
movl 0x7676(%rip), %eax      # 0xb13c
movl %eax, %edi
callq 0x2030
movq %rax, 0x28(%rsp)
movl $0x0, 0x24(%rsp)
movq 0x768f(%rip), %rdi      # 0xb170
movl 0x7655(%rip), %eax      # 0xb13c
movl %eax, %edx
shlq $0x2, %rdx
xorl %esi, %esi
callq 0x20c0
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
leaq 0x24(%rsp), %rdx
callq 0x3d60
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %esi
addl 0x76dd(%rip), %esi      # 0xb1f4
movq 0x30(%rsp), %rdx
callq 0x4870
leaq 0x7668(%rip), %rdi      # 0xb190
leaq 0x28(%rsp), %rsi
callq 0x71c0
leaq 0x762f(%rip), %rdi      # 0xb168
leaq 0x30(%rsp), %rsi
callq 0x7200
movl 0x24(%rsp), %eax
movl %eax, 0x76a3(%rip)      # 0xb1f0
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
leaq 0x24(%rsp), %rdx
callq 0x4c90
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %esi
addl 0x7684(%rip), %esi      # 0xb1f4
movq 0x30(%rsp), %rdx
callq 0x4870
movl 0x24(%rsp), %eax
cmpl 0x766c(%rip), %eax      # 0xb1f0
jae 0x3bb2
leaq 0x7603(%rip), %rdi      # 0xb190
leaq 0x28(%rsp), %rsi
callq 0x71c0
leaq 0x75ca(%rip), %rdi      # 0xb168
leaq 0x30(%rsp), %rsi
callq 0x7200
movl 0x24(%rsp), %eax
movl %eax, 0x763e(%rip)      # 0xb1f0
movq 0x30(%rsp), %rdi
movq 0x28(%rsp), %rsi
leaq 0x24(%rsp), %rdx
callq 0x50c0
movq 0x28(%rsp), %rdi
movl 0x24(%rsp), %esi
addl 0x761f(%rip), %esi      # 0xb1f4
movq 0x30(%rsp), %rdx
callq 0x4870
movl 0x24(%rsp), %eax
cmpl 0x7607(%rip), %eax      # 0xb1f0
jae 0x3c17
leaq 0x759e(%rip), %rdi      # 0xb190
leaq 0x28(%rsp), %rsi
callq 0x71c0
leaq 0x7565(%rip), %rdi      # 0xb168
leaq 0x30(%rsp), %rsi
callq 0x7200
movl 0x24(%rsp), %eax
movl %eax, 0x75d9(%rip)      # 0xb1f0
callq 0x7240
movq 0x7575(%rip), %rax      # 0xb198
movq %rax, 0x75fe(%rip)      # 0xb228
movq 0x75f7(%rip), %rax      # 0xb228
movl 0x75bd(%rip), %ecx      # 0xb1f4
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, 0x7553(%rip)      # 0xb198
movl 0x75a5(%rip), %eax      # 0xb1f0
addl 0x75a3(%rip), %eax      # 0xb1f4
movl %eax, 0x75d9(%rip)      # 0xb230
movl $0x0, 0x758f(%rip)      # 0xb1f0
movl $0x0, 0x20(%rsp)
movl 0x20(%rsp), %eax
cmpl 0x7575(%rip), %eax      # 0xb1e8
jae 0x3ce3
movq 0x7564(%rip), %rax      # 0xb1e0
movl 0x20(%rsp), %ecx
movl (%rax,%rcx,4), %eax
movl %eax, 0x1c(%rsp)
movq 0x7502(%rip), %rdi      # 0xb190
movl 0x1c(%rsp), %esi
callq 0x72c0
testb $0x1, %al
jne 0x3c9d
jmp 0x3cd4
movl 0x1c(%rsp), %edx
movq 0x74f0(%rip), %rax      # 0xb198
movl 0x7542(%rip), %ecx      # 0xb1f0
movl %edx, (%rax,%rcx,4)
movl 0x7539(%rip), %edx      # 0xb1f0
movq 0x74e2(%rip), %rax      # 0xb1a0
movl 0x1c(%rsp), %ecx
movl %edx, (%rax,%rcx,4)
movl 0x7525(%rip), %eax      # 0xb1f0
addl $0x1, %eax
movl %eax, 0x751c(%rip)      # 0xb1f0
jmp 0x3cd6
movl 0x20(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x20(%rsp)
jmp 0x3c69
movl $0x0, 0x74ff(%rip)      # 0xb1ec
movq 0x72e4(%rip), %rdi      # 0xafd8
leaq 0x43b6(%rip), %rsi      # 0x80b1
callq 0x2130
movq %rax, %rdi
movl 0x7527(%rip), %esi      # 0xb230
callq 0x2180
movq %rax, %rdi
movq 0x72b0(%rip), %rsi      # 0xafc8
callq 0x2140
movq 0x30(%rsp), %rax
movq %rax, 0x10(%rsp)
cmpq $0x0, %rax
je 0x3d37
movq 0x10(%rsp), %rdi
callq 0x2160
movq 0x28(%rsp), %rax
movq %rax, 0x8(%rsp)
cmpq $0x0, %rax
je 0x3d51
movq 0x8(%rsp), %rdi
callq 0x2160
addq $0x38, %rsp
retq
nopw %cs:(%rax,%rax)