public static void main(String[] args) {
		
		System.out.println(args[0]);
		System.out.println(args.length);
		
		// Generation mode
		if (args.length ==1) {
			 String printHash = generateHash(args[0]);
			 System.out.println(printHash);
			 System.out.println("\n");
		}else {
			try {
				hashCode = args[0];
				hashBytes = hexToArray(hashCode);
				passMaxLength = Integer.parseInt(args[1]);
				numThreads = Integer.parseInt(args[2]);
				latch = new CountDownLatch(numThreads);
			} catch (ArrayIndexOutOfBoundsException e) {
				System.out.println("Incorrect input");
			}
			
			// divide the char string up between threads and initialize them
			divideLabor();
			
			// start the threads
			startThreads();
			
			if (latch.getCount() == 0) {
				printResults();
			}
			System.out.println("\n");
		}
	}