// File: Dts0[P]addCopyright/addCopyright.cpp
// Function: addCopyright(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::ostream&)
int addCopyright(string fileName,string copyrightFile,ostream& os){
	ifstream rfile(fileName.c_str());
	if(!rfile.is_open()){
		os<<"错误: 文件 "<<fileName<<" 无法被读取。"<<endl;
		return -1;
	}

	ifstream header(copyrightFile.c_str());
	stringstream buf;
	if(!header.is_open()){
		os<<"错误: 没有选择版权信息文件或版权信息文件无法被读取。所以未添加。"<<endl;
		//buf<<"/*这是默认的版权信息\n"
		//   <<"* copyright (c) 2018 DTS\n"
		//   <<"*/\n";
		 return -3;
	} else{
		buf<<header.rdbuf();
	}

	string charbuf1,charbuf2;
	header.seekg(header.beg);
	header>>charbuf1;
	header.close();

	rfile>>charbuf2;
	rfile.seekg(rfile.beg);

	if(charbuf1==charbuf2){
		os<<"警告: 这个版权信息文件已被添加到文件 "<<fileName<<" 过，因此没有继续执行。"<<endl;
		return 1;
	}

	buf<<rfile.rdbuf();
	rfile.close();

	ofstream wfile(fileName.c_str(), ios::out|ios::trunc);
	if(!wfile.is_open()){
		os<<"错误: 文件 "<<fileName<<" 无法被写入。"<<endl;
		return -2;
	}
	wfile<<buf.rdbuf();
	wfile.close();

	os<<"信息: 版权信息被成功添加到文件 "<<fileName<<" 。"<<endl;
	return 1;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x900, %rsp            # imm = 0x900
movq %rdi, -0x848(%rbp)
movq %rsi, -0x840(%rbp)
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
callq 0x20b0
movq %rax, %rsi
leaq -0x228(%rbp), %rdi
movq %rdi, -0x838(%rbp)
movl $0x8, %edx
callq 0x2390
movq -0x838(%rbp), %rdi
callq 0x2320
movb %al, -0x829(%rbp)
jmp 0x2599
movb -0x829(%rbp), %al
testb $0x1, %al
jne 0x263c
jmp 0x25a9
movq -0x20(%rbp), %rdi
leaq 0x2a50(%rip), %rsi      # 0x5004
callq 0x21e0
movq %rax, -0x850(%rbp)
jmp 0x25c2
movq -0x848(%rbp), %rsi
movq -0x850(%rbp), %rdi
callq 0x21d0
movq %rax, -0x858(%rbp)
jmp 0x25de
movq -0x858(%rbp), %rdi
leaq 0x2a28(%rip), %rsi      # 0x5014
callq 0x21e0
movq %rax, -0x860(%rbp)
jmp 0x25fa
movq -0x860(%rbp), %rdi
movq 0x59c0(%rip), %rsi      # 0x7fc8
callq 0x2210
jmp 0x260f
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
movl $0x1, -0x238(%rbp)
jmp 0x2b04
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x230(%rbp)
movl %eax, -0x234(%rbp)
jmp 0x2b1c
movq -0x840(%rbp), %rdi
callq 0x20b0
movq %rax, %rsi
leaq -0x440(%rbp), %rdi
movl $0x8, %edx
callq 0x2390
jmp 0x265e
leaq -0x5c8(%rbp), %rdi
callq 0x2150
jmp 0x266c
leaq -0x440(%rbp), %rdi
callq 0x2320
movb %al, -0x861(%rbp)
jmp 0x2680
movb -0x861(%rbp), %al
testb $0x1, %al
jne 0x26fe
jmp 0x268c
movq -0x20(%rbp), %rdi
leaq 0x2991(%rip), %rsi      # 0x5028
callq 0x21e0
movq %rax, -0x870(%rbp)
jmp 0x26a5
movq -0x870(%rbp), %rdi
movq 0x5915(%rip), %rsi      # 0x7fc8
callq 0x2210
jmp 0x26ba
movl $0xfffffffd, -0x4(%rbp) # imm = 0xFFFFFFFD
movl $0x1, -0x238(%rbp)
jmp 0x2ad0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x230(%rbp)
movl %eax, -0x234(%rbp)
jmp 0x2af6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x230(%rbp)
movl %eax, -0x234(%rbp)
jmp 0x2aea
leaq -0x5b8(%rbp), %rax
movq %rax, -0x880(%rbp)
leaq -0x440(%rbp), %rdi
callq 0x2310
movq %rax, -0x878(%rbp)
jmp 0x2721
movq -0x878(%rbp), %rsi
movq -0x880(%rbp), %rdi
callq 0x2050
jmp 0x2736
jmp 0x2738
leaq -0x5e8(%rbp), %rdi
callq 0x22c0
leaq -0x608(%rbp), %rdi
callq 0x22c0
xorl %eax, %eax
movl %eax, %esi
leaq -0x618(%rbp), %rdi
callq 0x2b40
jmp 0x2762
movq -0x618(%rbp), %rsi
movq -0x610(%rbp), %rdx
leaq -0x440(%rbp), %rdi
callq 0x2280
jmp 0x277e
leaq -0x440(%rbp), %rdi
leaq -0x5e8(%rbp), %rsi
callq 0x2290
jmp 0x2793
leaq -0x440(%rbp), %rdi
callq 0x2040
jmp 0x27a1
leaq -0x228(%rbp), %rdi
leaq -0x608(%rbp), %rsi
callq 0x2290
jmp 0x27b6
xorl %eax, %eax
movl %eax, %esi
leaq -0x628(%rbp), %rdi
callq 0x2b40
jmp 0x27c8
movq -0x628(%rbp), %rsi
movq -0x620(%rbp), %rdx
leaq -0x228(%rbp), %rdi
callq 0x2280
jmp 0x27e4
leaq -0x5e8(%rbp), %rdi
leaq -0x608(%rbp), %rsi
callq 0x2b80
testb $0x1, %al
jne 0x2800
jmp 0x2893
movq -0x20(%rbp), %rdi
leaq 0x287d(%rip), %rsi      # 0x5088
callq 0x21e0
movq %rax, -0x888(%rbp)
jmp 0x2819
movq -0x848(%rbp), %rsi
movq -0x888(%rbp), %rdi
callq 0x21d0
movq %rax, -0x890(%rbp)
jmp 0x2835
movq -0x890(%rbp), %rdi
leaq 0x287c(%rip), %rsi      # 0x50bf
callq 0x21e0
movq %rax, -0x898(%rbp)
jmp 0x2851
movq -0x898(%rbp), %rdi
movq 0x5769(%rip), %rsi      # 0x7fc8
callq 0x2210
jmp 0x2866
movl $0x1, -0x4(%rbp)
movl $0x1, -0x238(%rbp)
jmp 0x2a9c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x230(%rbp)
movl %eax, -0x234(%rbp)
jmp 0x2ab6
leaq -0x5b8(%rbp), %rax
movq %rax, -0x8a8(%rbp)
leaq -0x228(%rbp), %rdi
callq 0x2310
movq %rax, -0x8a0(%rbp)
jmp 0x28b6
movq -0x8a0(%rbp), %rsi
movq -0x8a8(%rbp), %rdi
callq 0x2050
jmp 0x28cb
leaq -0x228(%rbp), %rdi
callq 0x2040
jmp 0x28d9
movq -0x848(%rbp), %rdi
callq 0x20b0
movq %rax, -0x8b8(%rbp)
movl $0x10, %edi
movl $0x20, %esi
callq 0x2c10
movl %eax, -0x8ac(%rbp)
jmp 0x2903
movl -0x8ac(%rbp), %edx
movq -0x8b8(%rbp), %rsi
leaq -0x828(%rbp), %rdi
callq 0x2240
jmp 0x291e
leaq -0x828(%rbp), %rdi
callq 0x2180
movb %al, -0x8b9(%rbp)
jmp 0x2932
movb -0x8b9(%rbp), %al
testb $0x1, %al
jne 0x29e1
jmp 0x2942
movq -0x20(%rbp), %rdi
leaq 0x26b7(%rip), %rsi      # 0x5004
callq 0x21e0
movq %rax, -0x8c8(%rbp)
jmp 0x295b
movq -0x848(%rbp), %rsi
movq -0x8c8(%rbp), %rdi
callq 0x21d0
movq %rax, -0x8d0(%rbp)
jmp 0x2977
movq -0x8d0(%rbp), %rdi
leaq 0x275d(%rip), %rsi      # 0x50e2
callq 0x21e0
movq %rax, -0x8d8(%rbp)
jmp 0x2993
movq -0x8d8(%rbp), %rdi
movq 0x5627(%rip), %rsi      # 0x7fc8
callq 0x2210
jmp 0x29a8
movl $0xfffffffe, -0x4(%rbp) # imm = 0xFFFFFFFE
movl $0x1, -0x238(%rbp)
jmp 0x2a90
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x230(%rbp)
movl %eax, -0x234(%rbp)
leaq -0x828(%rbp), %rdi
callq 0x22f0
jmp 0x2ab6
leaq -0x5c8(%rbp), %rdi
callq 0x2350
movq %rax, -0x8e0(%rbp)
jmp 0x29f6
movq -0x8e0(%rbp), %rsi
leaq -0x828(%rbp), %rdi
callq 0x2050
jmp 0x2a0b
leaq -0x828(%rbp), %rdi
callq 0x22d0
jmp 0x2a19
movq -0x20(%rbp), %rdi
leaq 0x26d2(%rip), %rsi      # 0x50f6
callq 0x21e0
movq %rax, -0x8e8(%rbp)
jmp 0x2a32
movq -0x848(%rbp), %rsi
movq -0x8e8(%rbp), %rdi
callq 0x21d0
movq %rax, -0x8f0(%rbp)
jmp 0x2a4e
movq -0x8f0(%rbp), %rdi
leaq 0x26c8(%rip), %rsi      # 0x5124
callq 0x21e0
movq %rax, -0x8f8(%rbp)
jmp 0x2a6a
movq -0x8f8(%rbp), %rdi
movq 0x5550(%rip), %rsi      # 0x7fc8
callq 0x2210
jmp 0x2a7f
movl $0x1, -0x4(%rbp)
movl $0x1, -0x238(%rbp)
leaq -0x828(%rbp), %rdi
callq 0x22f0
leaq -0x608(%rbp), %rdi
callq 0x2120
leaq -0x5e8(%rbp), %rdi
callq 0x2120
jmp 0x2ad0
leaq -0x608(%rbp), %rdi
callq 0x2120
leaq -0x5e8(%rbp), %rdi
callq 0x2120
jmp 0x2aea
leaq -0x5c8(%rbp), %rdi
callq 0x2170
leaq -0x440(%rbp), %rdi
callq 0x2060
jmp 0x2b04
leaq -0x5c8(%rbp), %rdi
callq 0x2170
leaq -0x440(%rbp), %rdi
callq 0x2060
jmp 0x2b1c
leaq -0x228(%rbp), %rdi
callq 0x2060
movl -0x4(%rbp), %eax
addq $0x900, %rsp            # imm = 0x900
popq %rbp
retq
leaq -0x228(%rbp), %rdi
callq 0x2060
movq -0x230(%rbp), %rdi
callq 0x2360
nopw %cs:(%rax,%rax)
nop