private void populateDataSecondPass(String assemblyLine) throws AssemblerException {

		insNumber++;

		boolean legitIntDataLine = Pattern.matches(
				"[A-Za-z0-9]+\\s+[0-9]+MAU\\s+[^\\s]+", assemblyLine);

		boolean legitAsciiDataLine = Pattern.matches(
				"[A-Za-z0-9]+\\s+.ascii\\s+\".+\"", assemblyLine);

		boolean legitUninitializedDataLine = Pattern.matches(
				"[A-Za-z0-9]+\\s+[0-9]+MAU", assemblyLine);

		String binary = "";
		ArrayList<String> binaryArray = null;

		if (legitAsciiDataLine) {
			String[] splitByQuotation = assemblyLine.split("\"", 2);
			String asciiData = splitByQuotation[1].substring(0, splitByQuotation[1].length() - 1);
			binary = "";

			for (int i = 0; i < asciiData.length(); i++) {
				char character = asciiData.charAt(i);
				int ascii = (int) character;
				String asciiBinary = Integer.toBinaryString(ascii);
				binary += binaryFormatted(asciiBinary, 8);
			}

			binaryArray = splitToMinAdrUnits(binary);
		}

		else if (legitIntDataLine) {
			String[] splitDataLine = assemblyLine.split("\\s+");
			String integer = splitDataLine[2];

			try {
				binary = intToBinary(integer);
			} catch (NumberFormatException e) {
				throw new AssemblerException("\"" + integer
						+ "\" is not a valid integer.");
			}

			String minUnitTerm = splitDataLine[1];
			String[] splitMinUnitTerm = minUnitTerm.split("MAU");
			String noOfMinAdrUnitsStr = splitMinUnitTerm[0];
			int noOfMinAdrUnits = Integer.parseInt(noOfMinAdrUnitsStr);
			int minAdrUnit = data.getMinAdrUnit();
			int noOfBits = noOfMinAdrUnits * minAdrUnit;			
			binary = binaryFormatted(binary, noOfBits);
			binaryArray = splitToMinAdrUnits(binary);

			if (binaryArray.size() > noOfMinAdrUnits)
				throw new AssemblerException("\"" + integer
						+ "\" exceeds expected bits.");
		}

		else if (legitUninitializedDataLine) {
			String[] splitDataLine = assemblyLine.split("\\s+");
			String minUnitTerm = splitDataLine[1];
			String[] splitMinUnitTerm = minUnitTerm.split("MAU");
			String noOfMinAdrUnitsStr = splitMinUnitTerm[0];
			int noOfMinAdrUnits = Integer.parseInt(noOfMinAdrUnitsStr);
			int minAdrUnit = data.getMinAdrUnit();
			int numberOfzeros = minAdrUnit * noOfMinAdrUnits;
			binary = binaryFormatted(binary, numberOfzeros);
			binaryArray = splitToMinAdrUnits(binary);
		}

		int adr = insAdrTable.get(insNumber);
		String address = Integer.toHexString(adr) + ":";
		String hexObjCode = getHexObjCode(binaryArray);
		String objectCodeLine = String.format("%-10s %s", address, hexObjCode);
		objectCode.add(objectCodeLine);
		
		if(debug)
			System.out.println(objectCodeLine);
	}