// File: /workspace/github_cpp_makefile_star2_O2/rishabh-battulwar[P]imageprocessing/./src/Main.cpp
// Function: usage(char const*)
void usage(const char *exename)
{
	std::cout << "\n General Usage: " << exename << " -prob {method_name} infile outfile [type] [-w width] [-h height] [-tw target_width] [-th target_height] [-ws window_size]" << std::endl;
	std::cout << " [Specific Usage]: \n" << std::endl;
	
	std::cout << " Problem 1.a1. Usage: " << exename << " -prob sobel -i <input file path> -o <output file path> [-w 'width'] [-h 'height']  [-perc 'percentage']" << std::endl;
	std::cout << "     -----> Example: " << exename << " -prob sobel -i ../images/elaine.raw -o ../output_images/elaine_edge_map.raw -w 256 -h 256 -perc 10" << "\n" << std::endl;
	
	std::cout << " Problem 1.a2. Usage: " << exename << "  -prob LoG -i <input file path> -o <output file path> [-w 'width'] [-h 'height']" << std::endl;
	std::cout << "     -----> Example: " << exename << " -prob LoG -i ../images/elaine.raw -o ../output_images/elaine_LoG_edge_map.raw -w 256 -h 256" << "\n" << std::endl;
	
	std::cout << " Problem 1.b. Usage: " << exename << " -prob art_effect -i <input file path> -o <output file path> [-w 'width'] [-h 'height']" << std::endl;
	std::cout << "     -----> Example: " << exename << " -prob art_effect -i ../images/Scarlett.raw -o ../output_images/Scarlett_out.raw -w 400 -h 300" << "\n" <<std::endl;
	
	std::cout << " Problem 2.1. Usage: " << exename << " -prob binary -i <input file path> -o <output file path> [-w 'width'] [-h 'height']" << std::endl;
	std::cout << "     -----> Example: " << exename << " -prob binary -i ../images/fingerprint_good.raw -o ../output_images/fingerprint_good_binary.raw -w 388 -h 374 " << "\n" << std::endl;
	
	std::cout << " Problem 2.2. Usage: " << exename << " -prob fingerprint -i <input file path> -o <output file path> [-w 'width'] [-h 'height']" << std::endl;
	std::cout << "     -----> Example: " << exename << " -prob fingerprint -i ../images/fingerprint_good.raw -o ../output_images/fingerprint_good_processed.raw -w 388 -h 374" << "\n" << std::endl;
	
	std::cout << " Problem 2.3. Usage: " << exename << " -prob minutiae -i <input file path> -o <output file path> [-w 'width'] [-h 'height'] " << std::endl;
	std::cout << "     -----> Example: " << exename << " -prob minutiae -i ../images/fingerprint_good.raw -o ../output_images/fingerprint_good_extraction.raw -w 388 -h 374" << "\n" << std::endl;
	
	std::cout << " Problem 3.1. Usage: " << exename << " -prob halftone -i <input file path> [-w 'width'] [-h 'height']" << std::endl;
	std::cout << "     -----> Example: " << exename << " -prob halftone -i ../images/boat.raw -w 512 -h 512" << "\n" << std::endl;
	
	std::cout << " Problem 3.2. Usage: " << exename << " -prob color_halftone -i <input file path> [-w 'width'] [-h 'height']" << std::endl;
	std::cout << "     -----> Example: " << exename << " -prob color_halftone -i ../images/trees.raw -o ../output_images/color_halftone_trees.raw -w 350 -h 258" << "\n" << std::endl;
	
	// std::cout << " Problem 1.a. Usage: " << exename << " -prob color_to_bw -i <input file path> -o <output file path> [-w 'width'] [-h 'height']" << std::endl;
	// std::cout << "     -----> Example: " << exename << " -prob color_to_bw -i ../images/mandril.raw -o ../images/mandril_bw.raw -w 512 -h 512" << "\n" << std::endl;
	
	// std::cout << " Problem 1.b. Usage: " << exename << " -prob image_resize -i <input file path> -o <output file path> [-w 'width'] [-h 'height'] [-tw 'target_width'] [-th 'target_height]" << std::endl;
	// std::cout << "     -----> Example: " << exename << " -prob image_resize -i ../images/pepper.raw -o ../images/pepper_scale.raw -w 512 -h 512 -tw 700 -th 700" << "\n" << std::endl;
	
	// std::cout << " Problem 2.a1 Usage: " << exename << " -prob hist_eq_cum -i <input file path> -o <output file path> [-w 'width'] [-h 'height']" << std::endl;
	// std::cout << "     -----> Example: " << exename << " -prob hist_eq_cum -i ../images/Girl.raw -o ../images/Girl_hist_eq_cum.raw -w 256 -h 256" << "\n" <<std::endl;
	
	// std::cout << " Problem 2.a2 Usage: " << exename << " -prob hist_equal -i <input file path> -o <output file path> [-w 'width'] [-h 'height']" << std::endl;
	// std::cout << "     -----> Example: " << exename << " -prob hist_equal -i ../images/Girl.raw -o ../images/Girl_hist_eq.raw -w 256 -h 256" << "\n" << std::endl;
	
	// std::cout << " Problem 2.b. Usage: " << exename << " -prob oil_paint_effect -i <input file path> -o <output file path> [-w 'width'] [-h 'height'] [-ws 'window_size']" << std::endl;
	// std::cout << "     -----> Example: " << exename << " -prob oil_paint_effect -i ../images/Trojan_256.raw -o ../images/Trojan_256_oil.raw -w 384 -h 384 -ws 3" << "\n" << std::endl;
	
	// std::cout << " Problem 2.c. Usage: " << exename << " -prob special_effect -i <input file path> -o <output file path> [-w 'width'] [-h 'height']" << std::endl;
	// std::cout << "     -----> Example: " << exename << " -prob special_effect -i ../images/chat.raw -o ../images/chat_effect.raw -w 481 -h 321" << "\n" << std::endl;
	
	// std::cout << " Problem 3.a. Usage: " << exename << " -prob denoising -i <input file path> -o <output file path> [-w 'width'] [-h 'height'] [-sigma 'value'] [-thresh 'threshold_value']" << std::endl;
	// std::cout << "     -----> Example: " << exename << " -prob denoising -i ../images/Lena_mixed.raw -o ../images/Lena_clean.raw -w 512 -h 512 -sigma 3 -thresh 20.0" << "\n" << std::endl;
	
	// std::cout << " Problem 3.b. Usage: " << exename << " -prob bilateral_filter -i <input file path> -o <output file path> [-w 'width'] [-h 'height'] [-tw 'target_width'] [-th 'target_height] [-sigma 'value'] [-sigma_sim 'sigma_similarity'] [-iter '#iterations']" << std::endl;
	// std::cout << "     -----> Example: " << exename << " -prob bilateral_filter -i ../images/pepper.raw -o ../images/pepper_scale.raw -w 512 -h 512 -ws 3 -sigma 2 -sigma_sim 20 -iter 5" << "\n" << std::endl;
	
	// std::cout << " Problem 3.c. Usage: " << exename << " -prob non_local_mean -i <input file path> -o <output file path> [-w 'width'] [-h 'height'] [-tw 'target_width'] [-th 'target_height] [-rs 'region_size'] [-sigma 'value'] [-h 'h_value']" << std::endl;
	// std::cout << "     -----> Example: " << exename << " -prob non_local_mean -i ../images/pepper.raw -o ../images/pepper_scale.raw -w 512 -h 512 -rs 5 -sigma 3 -h 5" << "\n" << std::endl;

	std::cout << "\t type :'bw'||'color' ; default: 'color'" << std::endl;
	std::cout << "\t -w width : (default) 512" 				<< std::endl;
	std::cout << "\t -h height : (default) 512" 			<< std::endl;
	std::cout << "\t -tw target_width : (default) 700" 		<< std::endl;
	std::cout << "\t -th target_height : (default) 700\n" 	<< std::endl;
	std::cout << "\t -th target_height : (default) 700\n" 	<< std::endl;
	exit(1);
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r14
movq 0x6b94(%rip), %rbx      # 0x14fd0
leaq 0x2aa4(%rip), %rsi      # 0x10ee7
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2a9c(%rip), %rsi      # 0x10ef9
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2b00(%rip), %rsi      # 0x10f74
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2afe(%rip), %rsi      # 0x10f89
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2afb(%rip), %rsi      # 0x10fa0
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2b4d(%rip), %r15      # 0x11009
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2b46(%rip), %rsi      # 0x1101f
movq %rax, %rdi
callq 0x2170
leaq 0x2a9f(%rip), %r12      # 0x10f87
movq %rax, %rdi
movq %r12, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2b81(%rip), %rsi      # 0x11083
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2b7e(%rip), %rsi      # 0x1109a
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2ba3(%rip), %rsi      # 0x110ec
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
movq %r12, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2bde(%rip), %rsi      # 0x11149
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2bda(%rip), %rsi      # 0x1115f
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2c05(%rip), %rsi      # 0x111b7
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
movq %r12, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2c42(%rip), %rsi      # 0x11216
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2c3e(%rip), %rsi      # 0x1122c
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2c65(%rip), %rsi      # 0x11280
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
movq %r12, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2cb2(%rip), %rsi      # 0x112ef
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2cae(%rip), %rsi      # 0x11305
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2cda(%rip), %rsi      # 0x1135e
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
movq %r12, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2d2e(%rip), %rsi      # 0x113d4
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2d2a(%rip), %rsi      # 0x113ea
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2d54(%rip), %rsi      # 0x11441
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
movq %r12, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2da6(%rip), %rsi      # 0x114b5
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2da2(%rip), %rsi      # 0x114cb
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2db5(%rip), %rsi      # 0x1150b
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
movq %r12, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2dc7(%rip), %rsi      # 0x1153f
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2dc3(%rip), %rsi      # 0x11555
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
movq %rbx, %rdi
movq %r15, %rsi
callq 0x2170
movq %rax, %rdi
movq %r14, %rsi
callq 0x2170
leaq 0x2ddc(%rip), %rsi      # 0x1159b
movq %rax, %rdi
callq 0x2170
movq %rax, %rdi
movq %r12, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2e22(%rip), %rsi      # 0x11603
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2e34(%rip), %rsi      # 0x1162c
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2e38(%rip), %rsi      # 0x11647
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2e3d(%rip), %rsi      # 0x11663
movq %rbx, %rdi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
leaq 0x2e49(%rip), %r14      # 0x11686
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x2170
movq %rax, %rdi
callq 0x20c0
pushq $0x1
popq %rdi
callq 0x21a0