// File: datourat[P]IP-label-for-graph-reachability/Graph.cpp
// Function: Graph::PrintIndex(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
void Graph::PrintIndex(const string& filename){
	ofstream output(filename.c_str());

	if(output.is_open()==false){
		cout << "Fail to open " << filename << endl;
		quit();
	}

	output << hugenode << endl;

	for(int u=0; u<vsize; u++){
		output << u << ": ";
		for(int j=0; j<ProLabelOut[u].size(); j++){
			output << ProLabelOut[u][j] << ' ';
		}
		output << "# ";
		for(int j=0; j<ProLabelIn[u].size(); j++){
			output << ProLabelIn[u][j] << ' ';
		}
		output << "# ";
		for(int j=0; j<HugeNodeList[u].size(); j++){
			output << HugeNodeList[u][j] << ' ';
		}
		output << "# ";
		output << layerup[u] << ' ' << layerdown[u] << " #" << endl;
	}


	output.close();

}

// Assembly:
subq $0x2b8, %rsp            # imm = 0x2B8
movq %rdi, 0x2b0(%rsp)
movq %rsi, 0x2a8(%rsp)
movq 0x2b0(%rsp), %rax
movq %rax, 0x78(%rsp)
movq 0x2a8(%rsp), %rdi
callq 0x3120
movq %rax, %rsi
leaq 0xa8(%rsp), %rdi
movq %rdi, 0x80(%rsp)
movl $0x10, %edx
callq 0x3320
movq 0x80(%rsp), %rdi
callq 0x3220
movb %al, 0x8b(%rsp)
jmp 0xdc64
movb 0x8b(%rsp), %al
andb $0x1, %al
movzbl %al, %eax
cmpl $0x0, %eax
jne 0xdcea
movq 0x2735c(%rip), %rdi     # 0x34fd8
leaq 0x1a8ba(%rip), %rsi     # 0x2853d
callq 0x32c0
movq %rax, 0x70(%rsp)
jmp 0xdc8f
movq 0x70(%rsp), %rdi
movq 0x2a8(%rsp), %rsi
callq 0x3270
movq %rax, 0x68(%rsp)
jmp 0xdca8
movq 0x68(%rsp), %rdi
movq 0x27314(%rip), %rsi     # 0x34fc8
callq 0x3300
jmp 0xdcbb
callq 0x4da0
jmp 0xdcc2
jmp 0xdcea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0xa0(%rsp)
movl %eax, 0x9c(%rsp)
leaq 0xa8(%rsp), %rdi
callq 0x3420
jmp 0xe087
movq 0x78(%rsp), %rax
movl 0x8(%rax), %esi
leaq 0xa8(%rsp), %rdi
callq 0x34d0
movq %rax, 0x60(%rsp)
jmp 0xdd06
movq 0x60(%rsp), %rdi
movq 0x272b6(%rip), %rsi     # 0x34fc8
callq 0x3300
jmp 0xdd19
movl $0x0, 0x98(%rsp)
movq 0x78(%rsp), %rcx
movl 0x98(%rsp), %eax
cmpl 0xc(%rcx), %eax
jge 0xe063
movl 0x98(%rsp), %esi
leaq 0xa8(%rsp), %rdi
callq 0x34d0
movq %rax, 0x58(%rsp)
jmp 0xdd54
movq 0x58(%rsp), %rdi
leaq 0x1a64c(%rip), %rsi     # 0x283ac
callq 0x32c0
jmp 0xdd67
movl $0x0, 0x94(%rsp)
movq 0x78(%rsp), %rdi
movslq 0x94(%rsp), %rax
movq %rax, 0x50(%rsp)
addq $0x78, %rdi
movslq 0x98(%rsp), %rsi
callq 0x4bf0
movq %rax, %rdi
callq 0x4c10
movq %rax, %rcx
movq 0x50(%rsp), %rax
cmpq %rcx, %rax
jae 0xde0f
movq 0x78(%rsp), %rdi
addq $0x78, %rdi
movslq 0x98(%rsp), %rsi
callq 0x4bf0
movq %rax, %rdi
movslq 0x94(%rsp), %rsi
callq 0x12960
movl (%rax), %esi
leaq 0xa8(%rsp), %rdi
callq 0x34d0
movq %rax, 0x48(%rsp)
jmp 0xdde6
movq 0x48(%rsp), %rdi
movl $0x20, %esi
callq 0x3350
jmp 0xddf7
jmp 0xddf9
movl 0x94(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x94(%rsp)
jmp 0xdd72
leaq 0x1a735(%rip), %rsi     # 0x2854b
leaq 0xa8(%rsp), %rdi
callq 0x32c0
jmp 0xde25
movl $0x0, 0x90(%rsp)
movq 0x78(%rsp), %rdi
movslq 0x90(%rsp), %rax
movq %rax, 0x40(%rsp)
addq $0x90, %rdi
movslq 0x98(%rsp), %rsi
callq 0x4bf0
movq %rax, %rdi
callq 0x4c10
movq %rax, %rcx
movq 0x40(%rsp), %rax
cmpq %rcx, %rax
jae 0xded3
movq 0x78(%rsp), %rdi
addq $0x90, %rdi
movslq 0x98(%rsp), %rsi
callq 0x4bf0
movq %rax, %rdi
movslq 0x90(%rsp), %rsi
callq 0x12960
movl (%rax), %esi
leaq 0xa8(%rsp), %rdi
callq 0x34d0
movq %rax, 0x38(%rsp)
jmp 0xdeaa
movq 0x38(%rsp), %rdi
movl $0x20, %esi
callq 0x3350
jmp 0xdebb
jmp 0xdebd
movl 0x90(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x90(%rsp)
jmp 0xde30
leaq 0x1a671(%rip), %rsi     # 0x2854b
leaq 0xa8(%rsp), %rdi
callq 0x32c0
jmp 0xdee9
movl $0x0, 0x8c(%rsp)
movq 0x78(%rsp), %rdi
movslq 0x8c(%rsp), %rax
movq %rax, 0x30(%rsp)
addq $0xf0, %rdi
movslq 0x98(%rsp), %rsi
callq 0x4bf0
movq %rax, %rdi
callq 0x4c10
movq %rax, %rcx
movq 0x30(%rsp), %rax
cmpq %rcx, %rax
jae 0xdf97
movq 0x78(%rsp), %rdi
addq $0xf0, %rdi
movslq 0x98(%rsp), %rsi
callq 0x4bf0
movq %rax, %rdi
movslq 0x8c(%rsp), %rsi
callq 0x12960
movl (%rax), %esi
leaq 0xa8(%rsp), %rdi
callq 0x34d0
movq %rax, 0x28(%rsp)
jmp 0xdf6e
movq 0x28(%rsp), %rdi
movl $0x20, %esi
callq 0x3350
jmp 0xdf7f
jmp 0xdf81
movl 0x8c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x8c(%rsp)
jmp 0xdef4
leaq 0x1a5ad(%rip), %rsi     # 0x2854b
leaq 0xa8(%rsp), %rdi
callq 0x32c0
jmp 0xdfad
movq 0x78(%rsp), %rdi
addq $0xd8, %rdi
movslq 0x98(%rsp), %rsi
callq 0x12bd0
movzwl (%rax), %esi
leaq 0xa8(%rsp), %rdi
callq 0x34a0
movq %rax, 0x20(%rsp)
jmp 0xdfdd
movq 0x20(%rsp), %rdi
movl $0x20, %esi
callq 0x3350
movq %rax, 0x18(%rsp)
jmp 0xdff3
movq 0x78(%rsp), %rdi
addq $0xc0, %rdi
movslq 0x98(%rsp), %rsi
callq 0x12bd0
movq 0x18(%rsp), %rdi
movzwl (%rax), %esi
callq 0x34a0
movq %rax, 0x10(%rsp)
jmp 0xe020
movq 0x10(%rsp), %rdi
leaq 0x1a522(%rip), %rsi     # 0x2854e
callq 0x32c0
movq %rax, 0x8(%rsp)
jmp 0xe038
movq 0x8(%rsp), %rdi
movq 0x26f84(%rip), %rsi     # 0x34fc8
callq 0x3300
jmp 0xe04b
jmp 0xe04d
movl 0x98(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x98(%rsp)
jmp 0xdd24
leaq 0xa8(%rsp), %rdi
callq 0x3400
jmp 0xe072
leaq 0xa8(%rsp), %rdi
callq 0x3420
addq $0x2b8, %rsp            # imm = 0x2B8
retq
movq 0xa0(%rsp), %rdi
callq 0x34e0
nopw %cs:(%rax,%rax)