@Override
	public void run() {
		if(inputFile.length() < inputSize/BYTESIZE) {
			System.out.println("Input too short, check inputfile");
			return;
		}

		byte[] bytesRead = getBytesFromFile();

		BitString input = byteArrayToBitSet(bytesRead);
		if (mode.equals(Driver.EVAL_FAIRPLAY_IA32)) {
			input = input.getIA32BitString();
		} else if (mode.equals(Driver.EVAL_FAIRPLAY_MIRRORED)) {
			input = input.getMirroredBitString();
		} else if (mode.equals(Driver.EVAL_FAIRPLAY_REVERSED) ||
				mode.equals(Driver.EVAL_SPACL)) {
			input = input.getReverseOrder();
		}

		// The result returned is in big endian, the evaluator flips the
		// ouput before returning
		BitString output = evalCircuit(layersOfGates, input);

		writeCircuitOutput(output);

	}