// File: /workspace/github_cpp_makefile_star2_O2/Laakeri[P]maxpre/src/main.cpp
// Function: printHelp(std::ostream&)
void printHelp(ostream& out) {
	out<<endl;
	out<<"The first argument is the instance file, the second is preprocess, reconstruct or solve."<<endl;
	out<<endl;
	
	out<<"An example of using the preprocessor:"<<endl;
	out<<"\t./preprocessor test.wcnf preprocess -techniques=[bu]#[buvsrg] -mapfile=test.map > preprocessed.wcnf"<<endl;
	out<<"\t./solver < preprocessed.wcnf > sol0.sol"<<endl;
	out<<"\t./preprocessor sol0.sol reconstruct -mapfile=test.map > solution.sol"<<endl;
	out<<endl;
	out<<"Another way to do the same thing:"<<endl;
	out<<"\t./preprocessor test.wcnf solve -solver=./solver -techniques=[bu]#[buvsrg] > solution.sol"<<endl;
	out<<endl;
	
	out<<"-techniques (default: [bu]#[buvsrgc])"<<endl;
	out<<"\tstring:"<<endl;
	out<<"\tThis string defines the preprocessing techniques to use and the order of them."<<endl;
	out<<"\tEach letter corresponds to a preprocessing technique. Each preprocessing technique is applied until its fixpoint."<<endl;
	out<<"\tTechniques inside brackets are applied until all of them are in fixpoint. The brackets work recursively. "<<endl;
	out<<"\tIf # character is given, all techniques before it are applied before group detection and adding labels (techniques available before labeling are BCE, UP and SE)."<<endl;
	out<<"\tTechniques:"<<endl;
	out<<"\tb = blocked clause elimintation"<<endl;
	out<<"\tu = unit propagation"<<endl;
	out<<"\tv = bounded variable elimination"<<endl;
	out<<"\ts = subsumption elimination"<<endl;
	out<<"\tr = self subsuming resolution"<<endl;
	out<<"\tl = subsumed label elimintion"<<endl;
	out<<"\tc = binary core removal"<<endl;
	out<<"\ta = bounded variable addition"<<endl;
	out<<"\tg = generalized subsumed label elimination"<<endl;
	out<<"\te = equivalence elimination"<<endl;
	out<<"\th = unhiding techniques (failed literals, hidden tautology elimination, hidden literal elimination)"<<endl;
	out<<"\tt = structure labeling"<<endl;
	out<<"\tp = failed label probing"<<endl;
	out<<endl;
	
	out<<"-solver (default: disabled)"<<endl;
	out<<"\tstring:"<<endl;
	out<<"\tThe solver to use to solve the preprocessed instance"<<endl;
	out<<endl;
	
	out<<"-solverflags (default: disabled)"<<endl;
	out<<"\tstring:"<<endl;
	out<<"\tThe flags to use with the solver"<<endl;
	out<<"\tFor example -solver=./LMHS -solverflags=\"--infile-assumps --no-preprocess\" results in using the command ./LMHS preprocessed.wcnf --infile-assumps --no-preprocess > sol0.sol"<<endl;
	out<<endl;
	
	out<<"-mapfile (default: disabled)"<<endl;
	out<<"\tstring:"<<endl;
	out<<"\tThe file to write the solution reconstruction map"<<endl;
	out<<endl;
	
	out<<"-problemtype (default: maxsat)"<<endl;
	out<<"\tstring: {maxsat, sat}"<<endl;
	out<<"\tShould the problem be preprocessed as a MaxSAT or SAT instance"<<endl;
	out<<endl;
	
	out<<"-outputformat (default: wpms)"<<endl;
	out<<"\tstring: {original}"<<endl;
	out<<"\tBy default the preprocessor always gives the output in weighted partial MaxSAT format"<<endl;
	out<<"\tOutput in SAT format by setting this to original when preprocessing SAT instances"<<endl;
	out<<endl;
	
	out<<"-timelimit (default: inf)"<<endl;
	out<<"\tdouble: [0, 500000000]"<<endl;
	out<<"\tLimit for preprocessing time in seconds"<<endl;
	out<<endl;
	
	out<<"-skiptechnique (default: disabled)"<<endl;
	out<<"\tint: [1, 1000000000]"<<endl;
	out<<"\tSkip a preprocessing technique if it seems to be not effective in x tries (x is given in this flag)"<<endl;
	out<<"\tRecommended values for this could be something between 10 and 1000"<<endl;
	out<<endl;
	
	out<<"-matchlabels (default: 0)"<<endl;
	out<<"\tbool: {0, 1}"<<endl;
	out<<"\tUse label matching technique to reduce the number of labels"<<endl;
	out<<endl;
	
	out<<"-bvegate (default: 0)"<<endl;
	out<<"\tbool: {0, 1}"<<endl;
	out<<"\tUse BVE gate extraction to extend BVE"<<endl;
	out<<"\tNote: applying BCE will destroy all recognizable gate structures"<<endl;
	out<<endl;
	
	out<<"-verb (default: 1)"<<endl;
	out<<"\tint: [0, 1]"<<endl;
	out<<"\tIf verb is 0 the preprocessor will output less stuff to the standard error"<<endl;
	out<<endl;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0x3140
leaq 0x29967(%rip), %rsi     # 0x2e485
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x299a1(%rip), %rsi     # 0x2e4de
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x299b0(%rip), %rsi     # 0x2e504
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x299fe(%rip), %rsi     # 0x2e569
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29a10(%rip), %rsi     # 0x2e592
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29a37(%rip), %rsi     # 0x2e5d8
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29a42(%rip), %rsi     # 0x2e5fa
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29a7d(%rip), %rsi     # 0x2e654
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29a8c(%rip), %r14     # 0x2e67a
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29a7b(%rip), %rsi     # 0x2e683
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29ab4(%rip), %rsi     # 0x2e6d3
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29b10(%rip), %rsi     # 0x2e746
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29b64(%rip), %rsi     # 0x2e7b1
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29bf0(%rip), %rsi     # 0x2e854
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29be6(%rip), %rsi     # 0x2e861
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29bf0(%rip), %rsi     # 0x2e882
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29bef(%rip), %rsi     # 0x2e898
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29bfa(%rip), %rsi     # 0x2e8ba
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c00(%rip), %rsi     # 0x2e8d7
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c08(%rip), %rsi     # 0x2e8f6
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c10(%rip), %rsi     # 0x2e915
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c12(%rip), %rsi     # 0x2e92e
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c1a(%rip), %rsi     # 0x2e94d
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c2f(%rip), %rsi     # 0x2e979
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c35(%rip), %rsi     # 0x2e996
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c83(%rip), %rsi     # 0x2e9fb
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c84(%rip), %rsi     # 0x2ea13
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29c7f(%rip), %rsi     # 0x2ea2d
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c71(%rip), %rsi     # 0x2ea49
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29c88(%rip), %rsi     # 0x2ea7f
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c7f(%rip), %rsi     # 0x2eaa0
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29c8a(%rip), %rsi     # 0x2eac2
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29d19(%rip), %rsi     # 0x2eb70
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29d0c(%rip), %rsi     # 0x2eb8d
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29d20(%rip), %rsi     # 0x2ebc0
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29d28(%rip), %rsi     # 0x2ebdf
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29d28(%rip), %rsi     # 0x2ebf6
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29d49(%rip), %rsi     # 0x2ec36
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29d50(%rip), %rsi     # 0x2ec54
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29d4d(%rip), %rsi     # 0x2ec68
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29d8d(%rip), %rsi     # 0x2ecbf
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29dc1(%rip), %rsi     # 0x2ed12
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29dc4(%rip), %rsi     # 0x2ed2c
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29dc5(%rip), %rsi     # 0x2ed44
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29dcf(%rip), %rsi     # 0x2ed6d
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29ddb(%rip), %rsi     # 0x2ed90
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29dda(%rip), %rsi     # 0x2eda6
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29e28(%rip), %rsi     # 0x2ee0b
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29e4d(%rip), %rsi     # 0x2ee4f
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29e50(%rip), %r14     # 0x2ee69
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29e44(%rip), %rsi     # 0x2ee77
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29e62(%rip), %rsi     # 0x2eeb4
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
movq %r14, %rsi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29e4e(%rip), %rsi     # 0x2eeca
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29e5e(%rip), %rsi     # 0x2eef1
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
callq 0x3140
leaq 0x29e81(%rip), %rsi     # 0x2ef33
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29e7d(%rip), %rsi     # 0x2ef46
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
leaq 0x29e73(%rip), %rsi     # 0x2ef53
movq %rbx, %rdi
callq 0x32a0
movq %rax, %rdi
callq 0x3140
movq %rbx, %rdi
addq $0x8, %rsp
popq %rbx
popq %r14
jmp 0x3140