diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000000000000000000000000000000000000..994e25dd81388a76d94cdb09813a4bb354a6b632
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+Project1
\ No newline at end of file
diff --git a/.idea/Project1.iml b/.idea/Project1.iml
new file mode 100644
index 0000000000000000000000000000000000000000..f08604bb65b25149b195f9e9f282f9683a428592
--- /dev/null
+++ b/.idea/Project1.iml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<module classpath="CMake" type="CPP_MODULE" version="4" />
\ No newline at end of file
diff --git a/.idea/dictionaries/sherifsas.xml b/.idea/dictionaries/sherifsas.xml
new file mode 100644
index 0000000000000000000000000000000000000000..33220812fd14c73c5206c92fc8b35f27277d6699
--- /dev/null
+++ b/.idea/dictionaries/sherifsas.xml
@@ -0,0 +1,7 @@
+<component name="ProjectDictionaryState">
+  <dictionary name="sherifsas">
+    <words>
+      <w>inititalization</w>
+    </words>
+  </dictionary>
+</component>
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000000000000000000000000000000000000..79b3c94830bab93d40d0770f2765540fe24ed423
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CMakeWorkspace" PROJECT_DIR="$PROJECT_DIR$" />
+</project>
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000000000000000000000000000000000000..3db647aa02b73db81b98a595bedaeafad2e9731f
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="ProjectModuleManager">
+    <modules>
+      <module fileurl="file://$PROJECT_DIR$/.idea/Project1.iml" filepath="$PROJECT_DIR$/.idea/Project1.iml" />
+    </modules>
+  </component>
+</project>
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000000000000000000000000000000000000..ff042ca66669bf2aa3a1c767f586bdc1ae8bf7df
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,304 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="CMakeRunConfigurationManager" shouldGenerate="true" shouldDeleteObsolete="true" buildAllGenerated="true">
+    <generated>
+      <config projectName="Project1" targetName="Project1" />
+    </generated>
+  </component>
+  <component name="CMakeSettings">
+    <configurations>
+      <configuration CONFIG_NAME="Debug" />
+    </configurations>
+  </component>
+  <component name="ChangeListManager">
+    <list default="true" id="2d172ec0-e9f8-4c02-9403-25e0461dca57" name="Default" comment="" />
+    <ignored path="$PROJECT_DIR$/cmake-build-debug/" />
+    <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
+    <option name="TRACKING_ENABLED" value="true" />
+    <option name="SHOW_DIALOG" value="false" />
+    <option name="HIGHLIGHT_CONFLICTS" value="true" />
+    <option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
+    <option name="LAST_RESOLUTION" value="IGNORE" />
+  </component>
+  <component name="FileEditorManager">
+    <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
+      <file leaf-file-name="util.h" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/util.h">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="1037">
+              <caret line="61" column="14" lean-forward="false" selection-start-line="61" selection-start-column="14" selection-end-line="61" selection-end-column="14" />
+              <folding>
+                <element signature="e#899#918#0" expanded="true" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="run.h" pinned="false" current-in-tab="false">
+        <entry file="file://$PROJECT_DIR$/run.h">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="0">
+              <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+              <folding />
+            </state>
+          </provider>
+        </entry>
+      </file>
+      <file leaf-file-name="run.c" pinned="false" current-in-tab="true">
+        <entry file="file://$PROJECT_DIR$/run.c">
+          <provider selected="true" editor-type-id="text-editor">
+            <state relative-caret-position="0">
+              <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+              <folding>
+                <marker date="1511438946595" expanded="true" signature="1153:1208" ph="{...}" />
+                <marker date="1511438946595" expanded="true" signature="1251:1538" ph="{...}" />
+                <marker date="1511438946595" expanded="true" signature="1561:5282" ph="{...}" />
+                <marker date="1511438946595" expanded="true" signature="5306:8039" ph="{...}" />
+                <marker date="1511438946595" expanded="true" signature="8062:8519" ph="{...}" />
+                <marker date="1511438946595" expanded="true" signature="8543:8777" ph="{...}" />
+                <marker date="1511438946595" expanded="true" signature="9269:10693" ph="{...}" />
+              </folding>
+            </state>
+          </provider>
+        </entry>
+      </file>
+    </leaf>
+  </component>
+  <component name="FindInProjectRecents">
+    <findStrings>
+      <find>program_f</find>
+      <find>line</find>
+      <find>main</find>
+      <find>run</find>
+      <find>argc</find>
+      <find>INST_INFO</find>
+      <find>address</find>
+      <find>bi</find>
+      <find>value</find>
+    </findStrings>
+  </component>
+  <component name="IdeDocumentHistory">
+    <option name="CHANGED_PATHS">
+      <list>
+        <option value="$PROJECT_DIR$/cse561.c" />
+        <option value="$PROJECT_DIR$/util.c" />
+        <option value="$PROJECT_DIR$/README.md" />
+        <option value="$PROJECT_DIR$/util.h" />
+        <option value="$PROJECT_DIR$/parse.c" />
+        <option value="$PROJECT_DIR$/run.c" />
+      </list>
+    </option>
+  </component>
+  <component name="JsBuildToolGruntFileManager" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsBuildToolPackageJson" detection-done="true" sorting="DEFINITION_ORDER" />
+  <component name="JsGulpfileManager">
+    <detection-done>true</detection-done>
+    <sorting>DEFINITION_ORDER</sorting>
+  </component>
+  <component name="ProjectFrameBounds" extendedState="6">
+    <option name="x" value="1912" />
+    <option name="y" value="-8" />
+    <option name="width" value="1936" />
+    <option name="height" value="1056" />
+  </component>
+  <component name="ProjectView">
+    <navigator currentView="ProjectPane" proportions="" version="1">
+      <flattenPackages />
+      <showMembers />
+      <showModules />
+      <showLibraryContents />
+      <hideEmptyPackages />
+      <abbreviatePackageNames />
+      <autoscrollToSource />
+      <autoscrollFromSource />
+      <sortByType />
+      <manualOrder />
+      <foldersAlwaysOnTop value="true" />
+    </navigator>
+    <panes>
+      <pane id="ProjectPane">
+        <subPane>
+          <expand>
+            <path>
+              <item name="Project1" type="dad4c3:CidrFilesViewHelper$MyProjectTreeStructure$1" />
+              <item name="Project1" type="462c0819:PsiDirectoryNode" />
+            </path>
+          </expand>
+          <select />
+        </subPane>
+      </pane>
+    </panes>
+  </component>
+  <component name="PropertiesComponent">
+    <property name="WebServerToolWindowFactoryState" value="false" />
+  </component>
+  <component name="RunDashboard">
+    <option name="ruleStates">
+      <list>
+        <RuleState>
+          <option name="name" value="ConfigurationTypeDashboardGroupingRule" />
+        </RuleState>
+        <RuleState>
+          <option name="name" value="StatusDashboardGroupingRule" />
+        </RuleState>
+      </list>
+    </option>
+  </component>
+  <component name="RunManager" selected="Application.Project1">
+    <configuration name="Build All" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" CONFIG_NAME="Debug" EXPLICIT_BUILD_TARGET_NAME="all">
+      <envs />
+    </configuration>
+    <configuration name="Project1" type="CMakeRunConfiguration" factoryName="Application" PASS_PARENT_ENVS_2="true" PROJECT_NAME="Project1" TARGET_NAME="Project1" CONFIG_NAME="Debug" RUN_TARGET_PROJECT_NAME="Project1" RUN_TARGET_NAME="Project1">
+      <envs />
+    </configuration>
+    <list size="2">
+      <item index="0" class="java.lang.String" itemvalue="Application.Build All" />
+      <item index="1" class="java.lang.String" itemvalue="Application.Project1" />
+    </list>
+  </component>
+  <component name="ShelveChangesManager" show_recycled="false">
+    <option name="remove_strategy" value="false" />
+  </component>
+  <component name="TaskManager">
+    <task active="true" id="Default" summary="Default task">
+      <changelist id="2d172ec0-e9f8-4c02-9403-25e0461dca57" name="Default" comment="" />
+      <created>1508229970008</created>
+      <option name="number" value="Default" />
+      <option name="presentableId" value="Default" />
+      <updated>1508229970008</updated>
+      <workItem from="1508229971344" duration="6448000" />
+      <workItem from="1508237450109" duration="7363000" />
+      <workItem from="1511434361967" duration="599000" />
+      <workItem from="1511439517202" duration="33000" />
+    </task>
+    <servers />
+  </component>
+  <component name="TimeTrackingManager">
+    <option name="totallyTimeSpent" value="14443000" />
+  </component>
+  <component name="ToolWindowManager">
+    <frame x="1912" y="-8" width="1936" height="1056" extended-state="6" />
+    <layout>
+      <window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
+      <window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
+      <window_info id="CMake" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="true" content_ui="tabs" />
+      <window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32979852" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
+      <window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="true" content_ui="tabs" />
+      <window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
+      <window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
+      <window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.32979852" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
+      <window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
+      <window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
+      <window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
+      <window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+      <window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
+    </layout>
+  </component>
+  <component name="TypeScriptGeneratedFilesManager">
+    <option name="version" value="1" />
+  </component>
+  <component name="VcsContentAnnotationSettings">
+    <option name="myLimit" value="2678400000" />
+  </component>
+  <component name="XDebuggerManager">
+    <breakpoint-manager>
+      <option name="time" value="4" />
+    </breakpoint-manager>
+    <watches-manager />
+  </component>
+  <component name="editorHistoryManager">
+    <entry file="file://$PROJECT_DIR$/util.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1037">
+          <caret line="61" column="14" lean-forward="false" selection-start-line="61" selection-start-column="14" selection-end-line="61" selection-end-column="14" />
+          <folding>
+            <element signature="e#899#918#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/run.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/util.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding>
+            <element signature="e#899#918#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/parse.c" />
+    <entry file="file://$PROJECT_DIR$/util.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1734">
+          <caret line="102" column="29" lean-forward="true" selection-start-line="102" selection-start-column="29" selection-end-line="102" selection-end-column="29" />
+          <folding>
+            <element signature="e#899#918#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/util.c" />
+    <entry file="file://$PROJECT_DIR$/cse561.c" />
+    <entry file="file://$PROJECT_DIR$/sample_input/example01.s" />
+    <entry file="file://$PROJECT_DIR$/CMakeLists.txt">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/cse561.c" />
+    <entry file="file://$PROJECT_DIR$/util.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="1037">
+          <caret line="61" column="14" lean-forward="false" selection-start-line="61" selection-start-column="14" selection-end-line="61" selection-end-column="14" />
+          <folding>
+            <element signature="e#899#918#0" expanded="true" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/util.c" />
+    <entry file="file://$PROJECT_DIR$/parse.c" />
+    <entry file="file://$PROJECT_DIR$/README.md" />
+    <entry file="file://$PROJECT_DIR$/run.h">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding />
+        </state>
+      </provider>
+    </entry>
+    <entry file="file://$PROJECT_DIR$/run.c">
+      <provider selected="true" editor-type-id="text-editor">
+        <state relative-caret-position="0">
+          <caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
+          <folding>
+            <marker date="1511438946595" expanded="true" signature="1153:1208" ph="{...}" />
+            <marker date="1511438946595" expanded="true" signature="1251:1538" ph="{...}" />
+            <marker date="1511438946595" expanded="true" signature="1561:5282" ph="{...}" />
+            <marker date="1511438946595" expanded="true" signature="5306:8039" ph="{...}" />
+            <marker date="1511438946595" expanded="true" signature="8062:8519" ph="{...}" />
+            <marker date="1511438946595" expanded="true" signature="8543:8777" ph="{...}" />
+            <marker date="1511438946595" expanded="true" signature="9269:10693" ph="{...}" />
+          </folding>
+        </state>
+      </provider>
+    </entry>
+  </component>
+</project>
\ No newline at end of file
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e9f64782fac05624db75f52000d719825ccbe649
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,15 @@
+cmake_minimum_required(VERSION 3.8)
+project(Project1)
+
+set(CMAKE_CXX_STANDARD 11)
+
+set(SOURCE_FILES
+        cse561.c
+        parse.c
+        parse.h
+        run.c
+        run.h
+        util.c
+        util.h)
+
+add_executable(Project1 ${SOURCE_FILES})
\ No newline at end of file
diff --git a/Makefile b/Makefile
index f1000d5196795d180c6db1b42b06b79e67e70a75..aca19f25e52219de94df0717facb4517d8b049f6 100644
--- a/Makefile
+++ b/Makefile
@@ -1,61 +1,46 @@
 cse561sim: cse561.c util.c parse.c run.c
 	gcc -g -O2 $^ -o $@
 
-.PHONY: clean
+.PHONY: clean test help
 clean:
 	rm -rf *~ cse561sim
 
 help:
 	@echo "The following options are provided with Make\n\t-make:\t\tbuild simulator\n\t-make clean:\tclean the build\n\t-make test:\ttest your simulator"
 
-test: cse561sim test_1 test_2 test_3 test_4 test_5 test_leaf test_beq test_double_loop test_jal test_various_inst
+test: cse561sim test_1 test_2 test_3 test_4 test_5 test_fact test_leaf
 
 test_1:
 	@echo "Testing example01"; \
-	./cse561sim -p sample_input/example01.o | diff -Naur sample_output/example01 - ;\
+	./cse561sim -m 0x10000000:0x10000010 -n 50 sample_input/example01.o | diff -Naur sample_output/example01 - ;\
 	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
 
 test_2:
 	@echo "Testing example02"; \
-	./cse561sim -p sample_input/example02.o | diff -Naur sample_output/example02 - ;\
+	./cse561sim -n 50 sample_input/example02.o | diff -Naur sample_output/example02 - ;\
 	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
 
 test_3:
 	@echo "Testing example03"; \
-	./cse561sim -p sample_input/example03.o | diff -Naur sample_output/example03 - ;\
+	./cse561sim -n 100 sample_input/example03.o | diff -Naur sample_output/example03 - ;\
 	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
 
 test_4:
 	@echo "Testing example04"; \
-	./cse561sim -p sample_input/example04.o | diff -Naur sample_output/example04 - ;\
+	./cse561sim -n 100 sample_input/example04.o | diff -Naur sample_output/example04 - ;\
 	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
 
 test_5:
 	@echo "Testing example05"; \
-	./cse561sim -p sample_input/example05.o | diff -Naur sample_output/example05 - ;\
+	./cse561sim -n 100 sample_input/example05.o | diff -Naur sample_output/example05 - ;\
 	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
 
-test_leaf:
-	@echo "Testing leaf_example"; \
-	./cse561sim -p sample_input/leaf_example.o | diff -Naur sample_output/leaf_example - ;\
-	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
-
-test_beq:
-	@echo "Testing beq_test"; \
-	./cse561sim -p sample_input/beq_test.o | diff -Naur sample_output/beq_test - ;\
-	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
-
-test_double_loop:
-	@echo "Testing double_loop"; \
-	./cse561sim -p sample_input/double_loop.o | diff -Naur sample_output/double_loop - ;\
-	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
-
-test_jal:
-	@echo "Testing jal_test"; \
-	./cse561sim -p sample_input/jal_test.o | diff -Naur sample_output/jal_test - ;\
+test_fact:
+	@echo "Testing fact"; \
+	./cse561sim -n 100 sample_input/fact.o | diff -Naur sample_output/fact - ;\
 	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
 
-test_various_inst:
-	@echo "Testing various_inst"; \
-	./cse561sim -p sample_input/various_inst.o | diff -Naur sample_output/various_inst - ;\
+test_leaf:
+	@echo "Testing leaf_example"; \
+	./cse561sim -n 100 sample_input/leaf_example.o | diff -Naur sample_output/leaf_example - ;\
 	if [ $$? -eq 0 ]; then echo "\tTest seems correct\n"; else echo "\tResults not identical, check the diff output\n"; fi
diff --git a/README.md b/README.md
index 09cb6fc7dd7d61f539275e7f3936f3630794e676..5b097911c64eede2f2f06818ae078d2bd16d7377 100644
--- a/README.md
+++ b/README.md
@@ -1,29 +1,37 @@
-# Project 3. MIPS Pipelined Simulator
-Skeleton developed by CMU and KAIST,
-modified for Ajou Univeristy CSE561.
-
 ## Instructions
-There are three files you may modify: `util.h`, `run.h`, and `run.c`.
+There are three functions you need to implement, located in the following two files: `parse.c`, `run.c`
+
+### 1. parse.c
+
+**Implement** the following parsing functions.
+
+    instruction parsing_instr(const char* buffer, int index)
+    void parsing_data(const char* buffer, int index)
 
-### 1. util.h
+The `parsing_instr()` function is called for every instruction in the input file, and converts them into the `instruction` type.
+The `instruction` type is defined in util.h
 
-We have setup the basic CPU\_State that is sufficient to implement the project.
-However, you may decide to add more variables, and modify/remove any misleading variables.
+The `parsing_data()` function is called for every data field in the input file, and you need to fill the data into the `simulated memory`.
+Use the `mem_read_32` and `mem_write_32` as mentioned in the Hints section below.
 
-### 2. run.h
+There is a helper function you can use to convert binary strings to int (32bit) variables:
 
-You may add any additional functions that will be called by your implementation of `process_instruction()`.
-In fact, we encourage you to split your implementation of `process_instruction()` into many other helping functions.
-You may decide to have functions for each stages of the pipeline.
-Function(s) to handle flushes (adding bubbles into the pipeline), etc.
+    int fromBinary(char * s)
 
-### 3. run.c
+
+### 2. run.c
 
 **Implement** the following function:
 
     void process_instruction()
 
-The `process_instruction()` function is used by the `cycle()` function to simulate a `cycle` of the pipelined simulator.
-Each `cycle()` the pipeline will advance to the next instruction (if there are no stalls/hazards, etc.).
-Your internal register, memory, and pipeline register state should be updated according to the instruction
-that is being executed at each stage.
+The `process_instruction()` function is used by the `cycle()` instruction to execute the instruction at the current PC.
+Your internal register/memory state should be changed according to the instruction that is pointed to by the current PC.
+
+## Hints
+
+* Always use the `mem_read_32()`, `mem_write32()` functions when trying to read or write from the `simulated memory`.
+This includes your implementation of the load/store functions, but also when you are loading `data` region to the `simulated memory`.
+* You may generate input files of very simple instructions to check the functionality of your simulator. For example, `add $1, $1, 5`.
+Then you can check if the R1 of your simulator has been incremented by 5, etc..
+* To compare your results to the reference simulator of the TAs that will be used to grade your simulator, execute `make test`.
diff --git a/Sim.exe b/Sim.exe
new file mode 100644
index 0000000000000000000000000000000000000000..f19245481536e9fc2671d5c65d70e2e8e9b2c55a
Binary files /dev/null and b/Sim.exe differ
diff --git a/Simulator.exe b/Simulator.exe
new file mode 100644
index 0000000000000000000000000000000000000000..0451df1f55564eaf36ad6fb248d52f92bf617359
Binary files /dev/null and b/Simulator.exe differ
diff --git a/Simulator_Result_01.JPG b/Simulator_Result_01.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..7dfe54cdb17aa5ec90790e45a91e933adfcd4317
Binary files /dev/null and b/Simulator_Result_01.JPG differ
diff --git a/Simulator_Result_02.JPG b/Simulator_Result_02.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..0e2a1250472e9c73d6870a5eef53f3318f978b21
Binary files /dev/null and b/Simulator_Result_02.JPG differ
diff --git a/Simulator_Result_03.JPG b/Simulator_Result_03.JPG
new file mode 100644
index 0000000000000000000000000000000000000000..b8f4375fb4b912929d1ddd50af32ec99cc8c7b26
Binary files /dev/null and b/Simulator_Result_03.JPG differ
diff --git a/cmake-build-debug/CMakeCache.txt b/cmake-build-debug/CMakeCache.txt
new file mode 100644
index 0000000000000000000000000000000000000000..e8db4711881ede6269747275d07f13f60edf05bb
--- /dev/null
+++ b/cmake-build-debug/CMakeCache.txt
@@ -0,0 +1,363 @@
+# This is the CMakeCache file.
+# For build in directory: c:/Users/sherifsas/Desktop/Project2/cmake-build-debug
+# It was generated by CMake: C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/bin/cmake.exe
+# You can edit this file to change values found and used by cmake.
+# If you do not want to change any of the values, simply exit the editor.
+# If you do want to change a value, simply edit, save, and exit the editor.
+# The syntax for the file is as follows:
+# KEY:TYPE=VALUE
+# KEY is the name of a variable in the cache.
+# TYPE is a hint to GUIs for the type of VALUE, DO NOT EDIT TYPE!.
+# VALUE is the current value for the KEY.
+
+########################
+# EXTERNAL cache entries
+########################
+
+//Path to a program.
+CMAKE_AR:FILEPATH=C:/MinGW/bin/ar.exe
+
+//Choose the type of build, options are: None(CMAKE_CXX_FLAGS or
+// CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.
+CMAKE_BUILD_TYPE:STRING=Debug
+
+//The CodeBlocks executable
+CMAKE_CODEBLOCKS_EXECUTABLE:FILEPATH=CMAKE_CODEBLOCKS_EXECUTABLE-NOTFOUND
+
+//Additional command line arguments when CodeBlocks invokes make.
+// Enter e.g. -j<some_number> to get parallel builds
+CMAKE_CODEBLOCKS_MAKE_ARGUMENTS:STRING=
+
+//Enable/Disable color output during build.
+CMAKE_COLOR_MAKEFILE:BOOL=ON
+
+//CXX compiler
+CMAKE_CXX_COMPILER:FILEPATH=C:/MinGW/bin/g++.exe
+
+//Flags used by the compiler during all build types.
+CMAKE_CXX_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_CXX_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release builds for minimum
+// size.
+CMAKE_CXX_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_CXX_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during release builds with debug info.
+CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C++ applications.
+CMAKE_CXX_STANDARD_LIBRARIES:STRING=-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
+
+//C compiler
+CMAKE_C_COMPILER:FILEPATH=C:/MinGW/bin/gcc.exe
+
+//Flags used by the compiler during all build types.
+CMAKE_C_FLAGS:STRING=
+
+//Flags used by the compiler during debug builds.
+CMAKE_C_FLAGS_DEBUG:STRING=-g
+
+//Flags used by the compiler during release builds for minimum
+// size.
+CMAKE_C_FLAGS_MINSIZEREL:STRING=-Os -DNDEBUG
+
+//Flags used by the compiler during release builds.
+CMAKE_C_FLAGS_RELEASE:STRING=-O3 -DNDEBUG
+
+//Flags used by the compiler during release builds with debug info.
+CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=-O2 -g -DNDEBUG
+
+//Libraries linked by default with all C applications.
+CMAKE_C_STANDARD_LIBRARIES:STRING=-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32
+
+//Flags used by the linker.
+CMAKE_EXE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Convert GNU import libraries to MS format (requires Visual Studio)
+CMAKE_GNUtoMS:BOOL=OFF
+
+//Install path prefix, prepended onto install directories.
+CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/Project1
+
+//Path to a program.
+CMAKE_LINKER:FILEPATH=C:/MinGW/bin/ld.exe
+
+//Path to a program.
+CMAKE_MAKE_PROGRAM:FILEPATH=C:/MinGW/bin/mingw32-make.exe
+
+//Flags used by the linker during the creation of modules.
+CMAKE_MODULE_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_NM:FILEPATH=C:/MinGW/bin/nm.exe
+
+//Path to a program.
+CMAKE_OBJCOPY:FILEPATH=C:/MinGW/bin/objcopy.exe
+
+//Path to a program.
+CMAKE_OBJDUMP:FILEPATH=C:/MinGW/bin/objdump.exe
+
+//Value Computed by CMake
+CMAKE_PROJECT_NAME:STATIC=Project1
+
+//Path to a program.
+CMAKE_RANLIB:FILEPATH=C:/MinGW/bin/ranlib.exe
+
+//RC compiler
+CMAKE_RC_COMPILER:FILEPATH=C:/MinGW/bin/windres.exe
+
+//Flags for Windows Resource Compiler.
+CMAKE_RC_FLAGS:STRING=
+
+//Flags for Windows Resource Compiler during debug builds.
+CMAKE_RC_FLAGS_DEBUG:STRING=
+
+//Flags for Windows Resource Compiler during release builds for
+// minimum size.
+CMAKE_RC_FLAGS_MINSIZEREL:STRING=
+
+//Flags for Windows Resource Compiler during release builds.
+CMAKE_RC_FLAGS_RELEASE:STRING=
+
+//Flags for Windows Resource Compiler during release builds with
+// debug info.
+CMAKE_RC_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_SH:FILEPATH=CMAKE_SH-NOTFOUND
+
+//Flags used by the linker during the creation of dll's.
+CMAKE_SHARED_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//If set, runtime paths are not added when installing shared libraries,
+// but are added when building.
+CMAKE_SKIP_INSTALL_RPATH:BOOL=NO
+
+//If set, runtime paths are not added when using shared libraries.
+CMAKE_SKIP_RPATH:BOOL=NO
+
+//Flags used by the linker during the creation of static libraries.
+CMAKE_STATIC_LINKER_FLAGS:STRING=
+
+//Flags used by the linker during debug builds.
+CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
+
+//Flags used by the linker during release minsize builds.
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
+
+//Flags used by the linker during release builds.
+CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
+
+//Flags used by the linker during Release with Debug Info builds.
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
+
+//Path to a program.
+CMAKE_STRIP:FILEPATH=C:/MinGW/bin/strip.exe
+
+//If this value is on, makefiles will be generated without the
+// .SILENT directive, and all commands will be echoed to the console
+// during the make.  This is useful for debugging only. With Visual
+// Studio IDE projects all commands are done without /nologo.
+CMAKE_VERBOSE_MAKEFILE:BOOL=FALSE
+
+//Value Computed by CMake
+Project1_BINARY_DIR:STATIC=C:/Users/sherifsas/Desktop/Project2/cmake-build-debug
+
+//Value Computed by CMake
+Project1_SOURCE_DIR:STATIC=C:/Users/sherifsas/Desktop/Project2
+
+
+########################
+# INTERNAL cache entries
+########################
+
+//ADVANCED property for variable: CMAKE_AR
+CMAKE_AR-ADVANCED:INTERNAL=1
+//This is the directory where this CMakeCache.txt was created
+CMAKE_CACHEFILE_DIR:INTERNAL=c:/Users/sherifsas/Desktop/Project2/cmake-build-debug
+//Major version of cmake used to create the current loaded cache
+CMAKE_CACHE_MAJOR_VERSION:INTERNAL=3
+//Minor version of cmake used to create the current loaded cache
+CMAKE_CACHE_MINOR_VERSION:INTERNAL=8
+//Patch version of cmake used to create the current loaded cache
+CMAKE_CACHE_PATCH_VERSION:INTERNAL=2
+//ADVANCED property for variable: CMAKE_COLOR_MAKEFILE
+CMAKE_COLOR_MAKEFILE-ADVANCED:INTERNAL=1
+//Path to CMake executable.
+CMAKE_COMMAND:INTERNAL=C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/bin/cmake.exe
+//Path to cpack program executable.
+CMAKE_CPACK_COMMAND:INTERNAL=C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/bin/cpack.exe
+//Path to ctest program executable.
+CMAKE_CTEST_COMMAND:INTERNAL=C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/bin/ctest.exe
+//ADVANCED property for variable: CMAKE_CXX_COMPILER
+CMAKE_CXX_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS
+CMAKE_CXX_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_DEBUG
+CMAKE_CXX_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_MINSIZEREL
+CMAKE_CXX_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELEASE
+CMAKE_CXX_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_FLAGS_RELWITHDEBINFO
+CMAKE_CXX_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_CXX_STANDARD_LIBRARIES
+CMAKE_CXX_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_COMPILER
+CMAKE_C_COMPILER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS
+CMAKE_C_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_DEBUG
+CMAKE_C_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_MINSIZEREL
+CMAKE_C_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELEASE
+CMAKE_C_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_FLAGS_RELWITHDEBINFO
+CMAKE_C_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_C_STANDARD_LIBRARIES
+CMAKE_C_STANDARD_LIBRARIES-ADVANCED:INTERNAL=1
+//Executable file format
+CMAKE_EXECUTABLE_FORMAT:INTERNAL=Unknown
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS
+CMAKE_EXE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_DEBUG
+CMAKE_EXE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_MINSIZEREL
+CMAKE_EXE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELEASE
+CMAKE_EXE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Name of external makefile project generator.
+CMAKE_EXTRA_GENERATOR:INTERNAL=CodeBlocks
+//CXX compiler system defined macros
+CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS:INTERNAL=__STDC__;1;__STDC_VERSION__;201112L;__STDC_UTF_16__;1;__STDC_UTF_32__;1;__STDC_HOSTED__;1;__GNUC__;6;__GNUC_MINOR__;3;__GNUC_PATCHLEVEL__; ;__VERSION__;"6.3.0";__ATOMIC_RELAXED; ;__ATOMIC_SEQ_CST;5;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_CONSUME;1;__pic__;1;__PIC__;1;__FINITE_MATH_ONLY__; ;__SIZEOF_INT__;4;__SIZEOF_LONG__;4;__SIZEOF_LONG_LONG__;8;__SIZEOF_SHORT__;2;__SIZEOF_FLOAT__;4;__SIZEOF_DOUBLE__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_SIZE_T__;8;__CHAR_BIT__;8;__BIGGEST_ALIGNMENT__;16;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__FLOAT_WORD_ORDER__;__ORDER_LITTLE_ENDIAN__;__SIZEOF_POINTER__;8;__SIZE_TYPE__;long long unsigned int;__PTRDIFF_TYPE__;long long int;__WCHAR_TYPE__;short unsigned int;__WINT_TYPE__;short unsigned int;__INTMAX_TYPE__;long long int;__UINTMAX_TYPE__;long long unsigned int;__CHAR16_TYPE__;short unsigned int;__CHAR32_TYPE__;unsigned int;__SIG_ATOMIC_TYPE__;int;__INT8_TYPE__;signed char;__INT16_TYPE__;short int;__INT32_TYPE__;int;__INT64_TYPE__;long long int;__UINT8_TYPE__;unsigned char;__UINT16_TYPE__;short unsigned int;__UINT32_TYPE__;unsigned int;__UINT64_TYPE__;long long unsigned int;__INT_LEAST8_TYPE__;signed char;__INT_LEAST16_TYPE__;short int;__INT_LEAST32_TYPE__;int;__INT_LEAST64_TYPE__;long long int;__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST16_TYPE__;short unsigned int;__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST64_TYPE__;long long unsigned int;__INT_FAST8_TYPE__;signed char;__INT_FAST16_TYPE__;short int;__INT_FAST32_TYPE__;int;__INT_FAST64_TYPE__;long long int;__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST16_TYPE__;short unsigned int;__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST64_TYPE__;long long unsigned int;__INTPTR_TYPE__;long long int;__UINTPTR_TYPE__;long long unsigned int;__has_include(STR);__has_include__(STR);__has_include_next(STR);__has_include_next__(STR);__GXX_ABI_VERSION;1010;__SCHAR_MAX__;0x7f;__SHRT_MAX__;0x7fff;__INT_MAX__;0x7fffffff;__LONG_MAX__;0x7fffffffL;__LONG_LONG_MAX__;0x7fffffffffffffffLL;__WCHAR_MAX__;0xffff;__WCHAR_MIN__; ;__WINT_MAX__;0xffff;__WINT_MIN__; ;__PTRDIFF_MAX__;0x7fffffffffffffffLL;__SIZE_MAX__;0xffffffffffffffffULL;__INTMAX_MAX__;0x7fffffffffffffffLL;__INTMAX_C(c);c ## LL;__UINTMAX_MAX__;0xffffffffffffffffULL;__UINTMAX_C(c);c ## ULL;__SIG_ATOMIC_MAX__;0x7fffffff;__SIG_ATOMIC_MIN__;(-__SIG_ATOMIC_MAX__ - 1);__INT8_MAX__;0x7f;__INT16_MAX__;0x7fff;__INT32_MAX__;0x7fffffff;__INT64_MAX__;0x7fffffffffffffffLL;__UINT8_MAX__;0xff;__UINT16_MAX__;0xffff;__UINT32_MAX__;0xffffffffU;__UINT64_MAX__;0xffffffffffffffffULL;__INT_LEAST8_MAX__;0x7f;__INT8_C(c);c;__INT_LEAST16_MAX__;0x7fff;__INT16_C(c);c;__INT_LEAST32_MAX__;0x7fffffff;__INT32_C(c);c;__INT_LEAST64_MAX__;0x7fffffffffffffffLL;__INT64_C(c);c ## LL;__UINT_LEAST8_MAX__;0xff;__UINT8_C(c);c;__UINT_LEAST16_MAX__;0xffff;__UINT16_C(c);c;__UINT_LEAST32_MAX__;0xffffffffU;__UINT32_C(c);c ## U;__UINT_LEAST64_MAX__;0xffffffffffffffffULL;__UINT64_C(c);c ## ULL;__INT_FAST8_MAX__;0x7f;__INT_FAST16_MAX__;0x7fff;__INT_FAST32_MAX__;0x7fffffff;__INT_FAST64_MAX__;0x7fffffffffffffffLL;__UINT_FAST8_MAX__;0xff;__UINT_FAST16_MAX__;0xffff;__UINT_FAST32_MAX__;0xffffffffU;__UINT_FAST64_MAX__;0xffffffffffffffffULL;__INTPTR_MAX__;0x7fffffffffffffffLL;__UINTPTR_MAX__;0xffffffffffffffffULL;__GCC_IEC_559;2;__GCC_IEC_559_COMPLEX;2;__FLT_EVAL_METHOD__; ;__DEC_EVAL_METHOD__;2;__FLT_RADIX__;2;__FLT_MANT_DIG__;24;__FLT_DIG__;6;__FLT_MIN_EXP__;(-125);__FLT_MIN_10_EXP__;(-37);__FLT_MAX_EXP__;128;__FLT_MAX_10_EXP__;38;__FLT_DECIMAL_DIG__;9;__FLT_MAX__;3.40282346638528859812e+38F;__FLT_MIN__;1.17549435082228750797e-38F;__FLT_EPSILON__;1.19209289550781250000e-7F;__FLT_DENORM_MIN__;1.40129846432481707092e-45F;__FLT_HAS_DENORM__;1;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_DIG__;15;__DBL_MIN_EXP__;(-1021);__DBL_MIN_10_EXP__;(-307);__DBL_MAX_EXP__;1024;__DBL_MAX_10_EXP__;308;__DBL_DECIMAL_DIG__;17;__DBL_MAX__;((double)1.79769313486231570815e+308L);__DBL_MIN__;((double)2.22507385850720138309e-308L);__DBL_EPSILON__;((double)2.22044604925031308085e-16L);__DBL_DENORM_MIN__;((double)4.94065645841246544177e-324L);__DBL_HAS_DENORM__;1;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_DIG__;18;__LDBL_MIN_EXP__;(-16381);__LDBL_MIN_10_EXP__;(-4931);__LDBL_MAX_EXP__;16384;__LDBL_MAX_10_EXP__;4932;__DECIMAL_DIG__;21;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN__;3.36210314311209350626e-4932L;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__DEC32_MANT_DIG__;7;__DEC32_MIN_EXP__;(-94);__DEC32_MAX_EXP__;97;__DEC32_MIN__;1E-95DF;__DEC32_MAX__;9.999999E96DF;__DEC32_EPSILON__;1E-6DF;__DEC32_SUBNORMAL_MIN__;0.000001E-95DF;__DEC64_MANT_DIG__;16;__DEC64_MIN_EXP__;(-382);__DEC64_MAX_EXP__;385;__DEC64_MIN__;1E-383DD;__DEC64_MAX__;9.999999999999999E384DD;__DEC64_EPSILON__;1E-15DD;__DEC64_SUBNORMAL_MIN__;0.000000000000001E-383DD;__DEC128_MANT_DIG__;34;__DEC128_MIN_EXP__;(-6142);__DEC128_MAX_EXP__;6145;__DEC128_MIN__;1E-6143DL;__DEC128_MAX__;9.999999999999999999999999999999999E6144DL;__DEC128_EPSILON__;1E-33DL;__DEC128_SUBNORMAL_MIN__;0.000000000000000000000000000000001E-6143DL;__REGISTER_PREFIX__; ;__USER_LABEL_PREFIX__; ;__GNUC_STDC_INLINE__;1;__NO_INLINE__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__PRAGMA_REDEFINE_EXTNAME;1;__SIZEOF_INT128__;16;__SIZEOF_WCHAR_T__;2;__SIZEOF_WINT_T__;2;__SIZEOF_PTRDIFF_T__;8;__amd64;1;__amd64__;1;__x86_64;1;__x86_64__;1;__SIZEOF_FLOAT80__;16;__SIZEOF_FLOAT128__;16;__ATOMIC_HLE_ACQUIRE;65536;__ATOMIC_HLE_RELEASE;131072;__GCC_ASM_FLAG_OUTPUTS__;1;__k8;1;__k8__;1;__code_model_medium__;1;__MMX__;1;__SSE__;1;__SSE2__;1;__FXSR__;1;__SSE_MATH__;1;__SSE2_MATH__;1;__SEG_FS;1;__SEG_GS;1;__SEH__;1;__stdcall;__attribute__((__stdcall__));__fastcall;__attribute__((__fastcall__));__thiscall;__attribute__((__thiscall__));__cdecl;__attribute__((__cdecl__));_stdcall;__attribute__((__stdcall__));_fastcall;__attribute__((__fastcall__));_thiscall;__attribute__((__thiscall__));_cdecl;__attribute__((__cdecl__));__GXX_MERGED_TYPEINFO_NAMES; ;__GXX_TYPEINFO_EQUALITY_INLINE; ;__MSVCRT__;1;__MINGW32__;1;_WIN32;1;__WIN32;1;__WIN32__;1;WIN32;1;__WINNT;1;__WINNT__;1;WINNT;1;_INTEGRAL_MAX_BITS;64;__MINGW64__;1;__WIN64;1;__WIN64__;1;WIN64;1;_WIN64;1;__declspec(x);__attribute__((x));__DECIMAL_BID_FORMAT__;1;__STDC__;1;__cplusplus;201402L;__STDC_UTF_16__;1;__STDC_UTF_32__;1;__STDC_HOSTED__;1;__GNUC__;6;__GNUC_MINOR__;3;__GNUC_PATCHLEVEL__; ;__VERSION__;"6.3.0";__ATOMIC_RELAXED; ;__ATOMIC_SEQ_CST;5;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_CONSUME;1;__pic__;1;__PIC__;1;__FINITE_MATH_ONLY__; ;__SIZEOF_INT__;4;__SIZEOF_LONG__;4;__SIZEOF_LONG_LONG__;8;__SIZEOF_SHORT__;2;__SIZEOF_FLOAT__;4;__SIZEOF_DOUBLE__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_SIZE_T__;8;__CHAR_BIT__;8;__BIGGEST_ALIGNMENT__;16;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__FLOAT_WORD_ORDER__;__ORDER_LITTLE_ENDIAN__;__SIZEOF_POINTER__;8;__GNUG__;6;__SIZE_TYPE__;long long unsigned int;__PTRDIFF_TYPE__;long long int;__WCHAR_TYPE__;short unsigned int;__WINT_TYPE__;short unsigned int;__INTMAX_TYPE__;long long int;__UINTMAX_TYPE__;long long unsigned int;__CHAR16_TYPE__;short unsigned int;__CHAR32_TYPE__;unsigned int;__SIG_ATOMIC_TYPE__;int;__INT8_TYPE__;signed char;__INT16_TYPE__;short int;__INT32_TYPE__;int;__INT64_TYPE__;long long int;__UINT8_TYPE__;unsigned char;__UINT16_TYPE__;short unsigned int;__UINT32_TYPE__;unsigned int;__UINT64_TYPE__;long long unsigned int;__INT_LEAST8_TYPE__;signed char;__INT_LEAST16_TYPE__;short int;__INT_LEAST32_TYPE__;int;__INT_LEAST64_TYPE__;long long int;__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST16_TYPE__;short unsigned int;__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST64_TYPE__;long long unsigned int;__INT_FAST8_TYPE__;signed char;__INT_FAST16_TYPE__;short int;__INT_FAST32_TYPE__;int;__INT_FAST64_TYPE__;long long int;__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST16_TYPE__;short unsigned int;__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST64_TYPE__;long long unsigned int;__INTPTR_TYPE__;long long int;__UINTPTR_TYPE__;long long unsigned int;__has_include(STR);__has_include__(STR);__has_include_next(STR);__has_include_next__(STR);__GXX_WEAK__;1;__DEPRECATED;1;__GXX_RTTI;1;__cpp_rtti;199711;__GXX_EXPERIMENTAL_CXX0X__;1;__cpp_binary_literals;201304;__cpp_hex_float;201603;__cpp_runtime_arrays;198712;__cpp_unicode_characters;200704;__cpp_raw_strings;200710;__cpp_unicode_literals;200710;__cpp_user_defined_literals;200809;__cpp_lambdas;200907;__cpp_range_based_for;200907;__cpp_static_assert;200410;__cpp_decltype;200707;__cpp_attributes;200809;__cpp_rvalue_reference;200610;__cpp_rvalue_references;200610;__cpp_variadic_templates;200704;__cpp_initializer_lists;200806;__cpp_delegating_constructors;200604;__cpp_nsdmi;200809;__cpp_inheriting_constructors;200802;__cpp_ref_qualifiers;200710;__cpp_alias_templates;200704;__cpp_return_type_deduction;201304;__cpp_init_captures;201304;__cpp_generic_lambdas;201304;__cpp_constexpr;201304;__cpp_decltype_auto;201304;__cpp_aggregate_nsdmi;201304;__cpp_variable_templates;201304;__cpp_digit_separators;201309;__cpp_sized_deallocation;201309;__EXCEPTIONS;1;__cpp_exceptions;199711;__GXX_ABI_VERSION;1010;__SCHAR_MAX__;0x7f;__SHRT_MAX__;0x7fff;__INT_MAX__;0x7fffffff;__LONG_MAX__;0x7fffffffL;__LONG_LONG_MAX__;0x7fffffffffffffffLL;__WCHAR_MAX__;0xffff;__WCHAR_MIN__; ;__WINT_MAX__;0xffff;__WINT_MIN__; ;__PTRDIFF_MAX__;0x7fffffffffffffffLL;__SIZE_MAX__;0xffffffffffffffffULL;__GLIBCXX_TYPE_INT_N_0;__int128;__GLIBCXX_BITSIZE_INT_N_0;128;__INTMAX_MAX__;0x7fffffffffffffffLL;__INTMAX_C(c);c ## LL;__UINTMAX_MAX__;0xffffffffffffffffULL;__UINTMAX_C(c);c ## ULL;__SIG_ATOMIC_MAX__;0x7fffffff;__SIG_ATOMIC_MIN__;(-__SIG_ATOMIC_MAX__ - 1);__INT8_MAX__;0x7f;__INT16_MAX__;0x7fff;__INT32_MAX__;0x7fffffff;__INT64_MAX__;0x7fffffffffffffffLL;__UINT8_MAX__;0xff;__UINT16_MAX__;0xffff;__UINT32_MAX__;0xffffffffU;__UINT64_MAX__;0xffffffffffffffffULL;__INT_LEAST8_MAX__;0x7f;__INT8_C(c);c;__INT_LEAST16_MAX__;0x7fff;__INT16_C(c);c;__INT_LEAST32_MAX__;0x7fffffff;__INT32_C(c);c;__INT_LEAST64_MAX__;0x7fffffffffffffffLL;__INT64_C(c);c ## LL;__UINT_LEAST8_MAX__;0xff;__UINT8_C(c);c;__UINT_LEAST16_MAX__;0xffff;__UINT16_C(c);c;__UINT_LEAST32_MAX__;0xffffffffU;__UINT32_C(c);c ## U;__UINT_LEAST64_MAX__;0xffffffffffffffffULL;__UINT64_C(c);c ## ULL;__INT_FAST8_MAX__;0x7f;__INT_FAST16_MAX__;0x7fff;__INT_FAST32_MAX__;0x7fffffff;__INT_FAST64_MAX__;0x7fffffffffffffffLL;__UINT_FAST8_MAX__;0xff;__UINT_FAST16_MAX__;0xffff;__UINT_FAST32_MAX__;0xffffffffU;__UINT_FAST64_MAX__;0xffffffffffffffffULL;__INTPTR_MAX__;0x7fffffffffffffffLL;__UINTPTR_MAX__;0xffffffffffffffffULL;__GCC_IEC_559;2;__GCC_IEC_559_COMPLEX;2;__FLT_EVAL_METHOD__; ;__DEC_EVAL_METHOD__;2;__FLT_RADIX__;2;__FLT_MANT_DIG__;24;__FLT_DIG__;6;__FLT_MIN_EXP__;(-125);__FLT_MIN_10_EXP__;(-37);__FLT_MAX_EXP__;128;__FLT_MAX_10_EXP__;38;__FLT_DECIMAL_DIG__;9;__FLT_MAX__;3.40282346638528859812e+38F;__FLT_MIN__;1.17549435082228750797e-38F;__FLT_EPSILON__;1.19209289550781250000e-7F;__FLT_DENORM_MIN__;1.40129846432481707092e-45F;__FLT_HAS_DENORM__;1;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_DIG__;15;__DBL_MIN_EXP__;(-1021);__DBL_MIN_10_EXP__;(-307);__DBL_MAX_EXP__;1024;__DBL_MAX_10_EXP__;308;__DBL_DECIMAL_DIG__;17;__DBL_MAX__;double(1.79769313486231570815e+308L);__DBL_MIN__;double(2.22507385850720138309e-308L);__DBL_EPSILON__;double(2.22044604925031308085e-16L);__DBL_DENORM_MIN__;double(4.94065645841246544177e-324L);__DBL_HAS_DENORM__;1;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_DIG__;18;__LDBL_MIN_EXP__;(-16381);__LDBL_MIN_10_EXP__;(-4931);__LDBL_MAX_EXP__;16384;__LDBL_MAX_10_EXP__;4932;__DECIMAL_DIG__;21;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN__;3.36210314311209350626e-4932L;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__DEC32_MANT_DIG__;7;__DEC32_MIN_EXP__;(-94);__DEC32_MAX_EXP__;97;__DEC32_MIN__;1E-95DF;__DEC32_MAX__;9.999999E96DF;__DEC32_EPSILON__;1E-6DF;__DEC32_SUBNORMAL_MIN__;0.000001E-95DF;__DEC64_MANT_DIG__;16;__DEC64_MIN_EXP__;(-382);__DEC64_MAX_EXP__;385;__DEC64_MIN__;1E-383DD;__DEC64_MAX__;9.999999999999999E384DD;__DEC64_EPSILON__;1E-15DD;__DEC64_SUBNORMAL_MIN__;0.000000000000001E-383DD;__DEC128_MANT_DIG__;34;__DEC128_MIN_EXP__;(-6142);__DEC128_MAX_EXP__;6145;__DEC128_MIN__;1E-6143DL;__DEC128_MAX__;9.999999999999999999999999999999999E6144DL;__DEC128_EPSILON__;1E-33DL;__DEC128_SUBNORMAL_MIN__;0.000000000000000000000000000000001E-6143DL;__REGISTER_PREFIX__; ;__USER_LABEL_PREFIX__; ;__GNUC_STDC_INLINE__;1;__NO_INLINE__;1;__WCHAR_UNSIGNED__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__PRAGMA_REDEFINE_EXTNAME;1;__SIZEOF_INT128__;16;__SIZEOF_WCHAR_T__;2;__SIZEOF_WINT_T__;2;__SIZEOF_PTRDIFF_T__;8;__amd64;1;__amd64__;1;__x86_64;1;__x86_64__;1;__SIZEOF_FLOAT80__;16;__SIZEOF_FLOAT128__;16;__ATOMIC_HLE_ACQUIRE;65536;__ATOMIC_HLE_RELEASE;131072;__GCC_ASM_FLAG_OUTPUTS__;1;__k8;1;__k8__;1;__code_model_medium__;1;__MMX__;1;__SSE__;1;__SSE2__;1;__FXSR__;1;__SSE_MATH__;1;__SSE2_MATH__;1;__SEG_FS;1;__SEG_GS;1;__SEH__;1;__stdcall;__attribute__((__stdcall__));__fastcall;__attribute__((__fastcall__));__thiscall;__attribute__((__thiscall__));__cdecl;__attribute__((__cdecl__));_stdcall;__attribute__((__stdcall__));_fastcall;__attribute__((__fastcall__));_thiscall;__attribute__((__thiscall__));_cdecl;__attribute__((__cdecl__));__GXX_MERGED_TYPEINFO_NAMES; ;__GXX_TYPEINFO_EQUALITY_INLINE; ;__MSVCRT__;1;__MINGW32__;1;_WIN32;1;__WIN32;1;__WIN32__;1;WIN32;1;__WINNT;1;__WINNT__;1;WINNT;1;_INTEGRAL_MAX_BITS;64;__MINGW64__;1;__WIN64;1;__WIN64__;1;WIN64;1;_WIN64;1;__declspec(x);__attribute__((x));__DECIMAL_BID_FORMAT__;1
+//CXX compiler system include directories
+CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS:INTERNAL=c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../include/c++/6.3.0;c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../include/c++/6.3.0/x86_64-w64-mingw32;c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../include/c++/6.3.0/backward;c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/include;c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/include-fixed;c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/include
+//C compiler system defined macros
+CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS:INTERNAL=__STDC__;1;__STDC_VERSION__;201112L;__STDC_UTF_16__;1;__STDC_UTF_32__;1;__STDC_HOSTED__;1;__GNUC__;6;__GNUC_MINOR__;3;__GNUC_PATCHLEVEL__; ;__VERSION__;"6.3.0";__ATOMIC_RELAXED; ;__ATOMIC_SEQ_CST;5;__ATOMIC_ACQUIRE;2;__ATOMIC_RELEASE;3;__ATOMIC_ACQ_REL;4;__ATOMIC_CONSUME;1;__pic__;1;__PIC__;1;__FINITE_MATH_ONLY__; ;__SIZEOF_INT__;4;__SIZEOF_LONG__;4;__SIZEOF_LONG_LONG__;8;__SIZEOF_SHORT__;2;__SIZEOF_FLOAT__;4;__SIZEOF_DOUBLE__;8;__SIZEOF_LONG_DOUBLE__;16;__SIZEOF_SIZE_T__;8;__CHAR_BIT__;8;__BIGGEST_ALIGNMENT__;16;__ORDER_LITTLE_ENDIAN__;1234;__ORDER_BIG_ENDIAN__;4321;__ORDER_PDP_ENDIAN__;3412;__BYTE_ORDER__;__ORDER_LITTLE_ENDIAN__;__FLOAT_WORD_ORDER__;__ORDER_LITTLE_ENDIAN__;__SIZEOF_POINTER__;8;__SIZE_TYPE__;long long unsigned int;__PTRDIFF_TYPE__;long long int;__WCHAR_TYPE__;short unsigned int;__WINT_TYPE__;short unsigned int;__INTMAX_TYPE__;long long int;__UINTMAX_TYPE__;long long unsigned int;__CHAR16_TYPE__;short unsigned int;__CHAR32_TYPE__;unsigned int;__SIG_ATOMIC_TYPE__;int;__INT8_TYPE__;signed char;__INT16_TYPE__;short int;__INT32_TYPE__;int;__INT64_TYPE__;long long int;__UINT8_TYPE__;unsigned char;__UINT16_TYPE__;short unsigned int;__UINT32_TYPE__;unsigned int;__UINT64_TYPE__;long long unsigned int;__INT_LEAST8_TYPE__;signed char;__INT_LEAST16_TYPE__;short int;__INT_LEAST32_TYPE__;int;__INT_LEAST64_TYPE__;long long int;__UINT_LEAST8_TYPE__;unsigned char;__UINT_LEAST16_TYPE__;short unsigned int;__UINT_LEAST32_TYPE__;unsigned int;__UINT_LEAST64_TYPE__;long long unsigned int;__INT_FAST8_TYPE__;signed char;__INT_FAST16_TYPE__;short int;__INT_FAST32_TYPE__;int;__INT_FAST64_TYPE__;long long int;__UINT_FAST8_TYPE__;unsigned char;__UINT_FAST16_TYPE__;short unsigned int;__UINT_FAST32_TYPE__;unsigned int;__UINT_FAST64_TYPE__;long long unsigned int;__INTPTR_TYPE__;long long int;__UINTPTR_TYPE__;long long unsigned int;__has_include(STR);__has_include__(STR);__has_include_next(STR);__has_include_next__(STR);__GXX_ABI_VERSION;1010;__SCHAR_MAX__;0x7f;__SHRT_MAX__;0x7fff;__INT_MAX__;0x7fffffff;__LONG_MAX__;0x7fffffffL;__LONG_LONG_MAX__;0x7fffffffffffffffLL;__WCHAR_MAX__;0xffff;__WCHAR_MIN__; ;__WINT_MAX__;0xffff;__WINT_MIN__; ;__PTRDIFF_MAX__;0x7fffffffffffffffLL;__SIZE_MAX__;0xffffffffffffffffULL;__INTMAX_MAX__;0x7fffffffffffffffLL;__INTMAX_C(c);c ## LL;__UINTMAX_MAX__;0xffffffffffffffffULL;__UINTMAX_C(c);c ## ULL;__SIG_ATOMIC_MAX__;0x7fffffff;__SIG_ATOMIC_MIN__;(-__SIG_ATOMIC_MAX__ - 1);__INT8_MAX__;0x7f;__INT16_MAX__;0x7fff;__INT32_MAX__;0x7fffffff;__INT64_MAX__;0x7fffffffffffffffLL;__UINT8_MAX__;0xff;__UINT16_MAX__;0xffff;__UINT32_MAX__;0xffffffffU;__UINT64_MAX__;0xffffffffffffffffULL;__INT_LEAST8_MAX__;0x7f;__INT8_C(c);c;__INT_LEAST16_MAX__;0x7fff;__INT16_C(c);c;__INT_LEAST32_MAX__;0x7fffffff;__INT32_C(c);c;__INT_LEAST64_MAX__;0x7fffffffffffffffLL;__INT64_C(c);c ## LL;__UINT_LEAST8_MAX__;0xff;__UINT8_C(c);c;__UINT_LEAST16_MAX__;0xffff;__UINT16_C(c);c;__UINT_LEAST32_MAX__;0xffffffffU;__UINT32_C(c);c ## U;__UINT_LEAST64_MAX__;0xffffffffffffffffULL;__UINT64_C(c);c ## ULL;__INT_FAST8_MAX__;0x7f;__INT_FAST16_MAX__;0x7fff;__INT_FAST32_MAX__;0x7fffffff;__INT_FAST64_MAX__;0x7fffffffffffffffLL;__UINT_FAST8_MAX__;0xff;__UINT_FAST16_MAX__;0xffff;__UINT_FAST32_MAX__;0xffffffffU;__UINT_FAST64_MAX__;0xffffffffffffffffULL;__INTPTR_MAX__;0x7fffffffffffffffLL;__UINTPTR_MAX__;0xffffffffffffffffULL;__GCC_IEC_559;2;__GCC_IEC_559_COMPLEX;2;__FLT_EVAL_METHOD__; ;__DEC_EVAL_METHOD__;2;__FLT_RADIX__;2;__FLT_MANT_DIG__;24;__FLT_DIG__;6;__FLT_MIN_EXP__;(-125);__FLT_MIN_10_EXP__;(-37);__FLT_MAX_EXP__;128;__FLT_MAX_10_EXP__;38;__FLT_DECIMAL_DIG__;9;__FLT_MAX__;3.40282346638528859812e+38F;__FLT_MIN__;1.17549435082228750797e-38F;__FLT_EPSILON__;1.19209289550781250000e-7F;__FLT_DENORM_MIN__;1.40129846432481707092e-45F;__FLT_HAS_DENORM__;1;__FLT_HAS_INFINITY__;1;__FLT_HAS_QUIET_NAN__;1;__DBL_MANT_DIG__;53;__DBL_DIG__;15;__DBL_MIN_EXP__;(-1021);__DBL_MIN_10_EXP__;(-307);__DBL_MAX_EXP__;1024;__DBL_MAX_10_EXP__;308;__DBL_DECIMAL_DIG__;17;__DBL_MAX__;((double)1.79769313486231570815e+308L);__DBL_MIN__;((double)2.22507385850720138309e-308L);__DBL_EPSILON__;((double)2.22044604925031308085e-16L);__DBL_DENORM_MIN__;((double)4.94065645841246544177e-324L);__DBL_HAS_DENORM__;1;__DBL_HAS_INFINITY__;1;__DBL_HAS_QUIET_NAN__;1;__LDBL_MANT_DIG__;64;__LDBL_DIG__;18;__LDBL_MIN_EXP__;(-16381);__LDBL_MIN_10_EXP__;(-4931);__LDBL_MAX_EXP__;16384;__LDBL_MAX_10_EXP__;4932;__DECIMAL_DIG__;21;__LDBL_MAX__;1.18973149535723176502e+4932L;__LDBL_MIN__;3.36210314311209350626e-4932L;__LDBL_EPSILON__;1.08420217248550443401e-19L;__LDBL_DENORM_MIN__;3.64519953188247460253e-4951L;__LDBL_HAS_DENORM__;1;__LDBL_HAS_INFINITY__;1;__LDBL_HAS_QUIET_NAN__;1;__DEC32_MANT_DIG__;7;__DEC32_MIN_EXP__;(-94);__DEC32_MAX_EXP__;97;__DEC32_MIN__;1E-95DF;__DEC32_MAX__;9.999999E96DF;__DEC32_EPSILON__;1E-6DF;__DEC32_SUBNORMAL_MIN__;0.000001E-95DF;__DEC64_MANT_DIG__;16;__DEC64_MIN_EXP__;(-382);__DEC64_MAX_EXP__;385;__DEC64_MIN__;1E-383DD;__DEC64_MAX__;9.999999999999999E384DD;__DEC64_EPSILON__;1E-15DD;__DEC64_SUBNORMAL_MIN__;0.000000000000001E-383DD;__DEC128_MANT_DIG__;34;__DEC128_MIN_EXP__;(-6142);__DEC128_MAX_EXP__;6145;__DEC128_MIN__;1E-6143DL;__DEC128_MAX__;9.999999999999999999999999999999999E6144DL;__DEC128_EPSILON__;1E-33DL;__DEC128_SUBNORMAL_MIN__;0.000000000000000000000000000000001E-6143DL;__REGISTER_PREFIX__; ;__USER_LABEL_PREFIX__; ;__GNUC_STDC_INLINE__;1;__NO_INLINE__;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_1;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4;1;__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8;1;__GCC_ATOMIC_BOOL_LOCK_FREE;2;__GCC_ATOMIC_CHAR_LOCK_FREE;2;__GCC_ATOMIC_CHAR16_T_LOCK_FREE;2;__GCC_ATOMIC_CHAR32_T_LOCK_FREE;2;__GCC_ATOMIC_WCHAR_T_LOCK_FREE;2;__GCC_ATOMIC_SHORT_LOCK_FREE;2;__GCC_ATOMIC_INT_LOCK_FREE;2;__GCC_ATOMIC_LONG_LOCK_FREE;2;__GCC_ATOMIC_LLONG_LOCK_FREE;2;__GCC_ATOMIC_TEST_AND_SET_TRUEVAL;1;__GCC_ATOMIC_POINTER_LOCK_FREE;2;__PRAGMA_REDEFINE_EXTNAME;1;__SIZEOF_INT128__;16;__SIZEOF_WCHAR_T__;2;__SIZEOF_WINT_T__;2;__SIZEOF_PTRDIFF_T__;8;__amd64;1;__amd64__;1;__x86_64;1;__x86_64__;1;__SIZEOF_FLOAT80__;16;__SIZEOF_FLOAT128__;16;__ATOMIC_HLE_ACQUIRE;65536;__ATOMIC_HLE_RELEASE;131072;__GCC_ASM_FLAG_OUTPUTS__;1;__k8;1;__k8__;1;__code_model_medium__;1;__MMX__;1;__SSE__;1;__SSE2__;1;__FXSR__;1;__SSE_MATH__;1;__SSE2_MATH__;1;__SEG_FS;1;__SEG_GS;1;__SEH__;1;__stdcall;__attribute__((__stdcall__));__fastcall;__attribute__((__fastcall__));__thiscall;__attribute__((__thiscall__));__cdecl;__attribute__((__cdecl__));_stdcall;__attribute__((__stdcall__));_fastcall;__attribute__((__fastcall__));_thiscall;__attribute__((__thiscall__));_cdecl;__attribute__((__cdecl__));__GXX_MERGED_TYPEINFO_NAMES; ;__GXX_TYPEINFO_EQUALITY_INLINE; ;__MSVCRT__;1;__MINGW32__;1;_WIN32;1;__WIN32;1;__WIN32__;1;WIN32;1;__WINNT;1;__WINNT__;1;WINNT;1;_INTEGRAL_MAX_BITS;64;__MINGW64__;1;__WIN64;1;__WIN64__;1;WIN64;1;_WIN64;1;__declspec(x);__attribute__((x));__DECIMAL_BID_FORMAT__;1
+//C compiler system include directories
+CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS:INTERNAL=c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/include;c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/include-fixed;c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/include
+//Name of generator.
+CMAKE_GENERATOR:INTERNAL=MinGW Makefiles
+//Name of generator platform.
+CMAKE_GENERATOR_PLATFORM:INTERNAL=
+//Name of generator toolset.
+CMAKE_GENERATOR_TOOLSET:INTERNAL=
+//Source directory with the top level CMakeLists.txt file for this
+// project
+CMAKE_HOME_DIRECTORY:INTERNAL=C:/Users/sherifsas/Desktop/Project2
+//ADVANCED property for variable: CMAKE_LINKER
+CMAKE_LINKER-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MAKE_PROGRAM
+CMAKE_MAKE_PROGRAM-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS
+CMAKE_MODULE_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_DEBUG
+CMAKE_MODULE_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL
+CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELEASE
+CMAKE_MODULE_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_NM
+CMAKE_NM-ADVANCED:INTERNAL=1
+//number of local generators
+CMAKE_NUMBER_OF_MAKEFILES:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJCOPY
+CMAKE_OBJCOPY-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_OBJDUMP
+CMAKE_OBJDUMP-ADVANCED:INTERNAL=1
+//Platform information initialized
+CMAKE_PLATFORM_INFO_INITIALIZED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RANLIB
+CMAKE_RANLIB-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RC_COMPILER
+CMAKE_RC_COMPILER-ADVANCED:INTERNAL=1
+CMAKE_RC_COMPILER_WORKS:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RC_FLAGS
+CMAKE_RC_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RC_FLAGS_DEBUG
+CMAKE_RC_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RC_FLAGS_MINSIZEREL
+CMAKE_RC_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RC_FLAGS_RELEASE
+CMAKE_RC_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_RC_FLAGS_RELWITHDEBINFO
+CMAKE_RC_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//Path to CMake installation.
+CMAKE_ROOT:INTERNAL=C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8
+//ADVANCED property for variable: CMAKE_SH
+CMAKE_SH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS
+CMAKE_SHARED_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_DEBUG
+CMAKE_SHARED_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL
+CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELEASE
+CMAKE_SHARED_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_INSTALL_RPATH
+CMAKE_SKIP_INSTALL_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_SKIP_RPATH
+CMAKE_SKIP_RPATH-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS
+CMAKE_STATIC_LINKER_FLAGS-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_DEBUG
+CMAKE_STATIC_LINKER_FLAGS_DEBUG-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL
+CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELEASE
+CMAKE_STATIC_LINKER_FLAGS_RELEASE-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO
+CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_STRIP
+CMAKE_STRIP-ADVANCED:INTERNAL=1
+//ADVANCED property for variable: CMAKE_VERBOSE_MAKEFILE
+CMAKE_VERBOSE_MAKEFILE-ADVANCED:INTERNAL=1
+
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CMakeCCompiler.cmake b/cmake-build-debug/CMakeFiles/3.8.2/CMakeCCompiler.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..a9456d2ec7f9d512d40663d91e9cd979352eb7ed
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/3.8.2/CMakeCCompiler.cmake
@@ -0,0 +1,68 @@
+set(CMAKE_C_COMPILER "C:/MinGW/bin/gcc.exe")
+set(CMAKE_C_COMPILER_ARG1 "")
+set(CMAKE_C_COMPILER_ID "GNU")
+set(CMAKE_C_COMPILER_VERSION "6.3.0")
+set(CMAKE_C_COMPILER_WRAPPER "")
+set(CMAKE_C_STANDARD_COMPUTED_DEFAULT "11")
+set(CMAKE_C_COMPILE_FEATURES "c_std_90;c_function_prototypes;c_std_99;c_restrict;c_variadic_macros;c_std_11;c_static_assert")
+set(CMAKE_C90_COMPILE_FEATURES "c_std_90;c_function_prototypes")
+set(CMAKE_C99_COMPILE_FEATURES "c_std_99;c_restrict;c_variadic_macros")
+set(CMAKE_C11_COMPILE_FEATURES "c_std_11;c_static_assert")
+
+set(CMAKE_C_PLATFORM_ID "MinGW")
+set(CMAKE_C_SIMULATE_ID "")
+set(CMAKE_C_SIMULATE_VERSION "")
+
+set(CMAKE_AR "C:/MinGW/bin/ar.exe")
+set(CMAKE_RANLIB "C:/MinGW/bin/ranlib.exe")
+set(CMAKE_LINKER "C:/MinGW/bin/ld.exe")
+set(CMAKE_COMPILER_IS_GNUCC 1)
+set(CMAKE_C_COMPILER_LOADED 1)
+set(CMAKE_C_COMPILER_WORKS TRUE)
+set(CMAKE_C_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW 1)
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_C_COMPILER_ENV_VAR "CC")
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_C_COMPILER_ID_RUN 1)
+set(CMAKE_C_SOURCE_FILE_EXTENSIONS c;m)
+set(CMAKE_C_IGNORE_EXTENSIONS h;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_C_LINKER_PREFERENCE 10)
+
+# Save compiler ABI information.
+set(CMAKE_C_SIZEOF_DATA_PTR "8")
+set(CMAKE_C_COMPILER_ABI "")
+set(CMAKE_C_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_C_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_C_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_C_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_C_COMPILER_ABI}")
+endif()
+
+if(CMAKE_C_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_C_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_C_CL_SHOWINCLUDES_PREFIX)
+  set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_C_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_C_IMPLICIT_LINK_LIBRARIES "mingw32;moldname;mingwex;msvcrt;advapi32;shell32;user32;kernel32;mingw32;moldname;mingwex;msvcrt")
+set(CMAKE_C_IMPLICIT_LINK_DIRECTORIES "C:/MinGW/lib/gcc/x86_64-w64-mingw32/6.3.0;C:/MinGW/lib/gcc;C:/MinGW/x86_64-w64-mingw32/lib;C:/MinGW/lib")
+set(CMAKE_C_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CMakeCXXCompiler.cmake b/cmake-build-debug/CMakeFiles/3.8.2/CMakeCXXCompiler.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..bea8fd4d6cacc5104012d69852ae8d1e6457bfd9
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/3.8.2/CMakeCXXCompiler.cmake
@@ -0,0 +1,70 @@
+set(CMAKE_CXX_COMPILER "C:/MinGW/bin/g++.exe")
+set(CMAKE_CXX_COMPILER_ARG1 "")
+set(CMAKE_CXX_COMPILER_ID "GNU")
+set(CMAKE_CXX_COMPILER_VERSION "6.3.0")
+set(CMAKE_CXX_COMPILER_WRAPPER "")
+set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT "14")
+set(CMAKE_CXX_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters;cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates;cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates;cxx_std_17")
+set(CMAKE_CXX98_COMPILE_FEATURES "cxx_std_98;cxx_template_template_parameters")
+set(CMAKE_CXX11_COMPILE_FEATURES "cxx_std_11;cxx_alias_templates;cxx_alignas;cxx_alignof;cxx_attributes;cxx_auto_type;cxx_constexpr;cxx_decltype;cxx_decltype_incomplete_return_types;cxx_default_function_template_args;cxx_defaulted_functions;cxx_defaulted_move_initializers;cxx_delegating_constructors;cxx_deleted_functions;cxx_enum_forward_declarations;cxx_explicit_conversions;cxx_extended_friend_declarations;cxx_extern_templates;cxx_final;cxx_func_identifier;cxx_generalized_initializers;cxx_inheriting_constructors;cxx_inline_namespaces;cxx_lambdas;cxx_local_type_template_args;cxx_long_long_type;cxx_noexcept;cxx_nonstatic_member_init;cxx_nullptr;cxx_override;cxx_range_for;cxx_raw_string_literals;cxx_reference_qualified_functions;cxx_right_angle_brackets;cxx_rvalue_references;cxx_sizeof_member;cxx_static_assert;cxx_strong_enums;cxx_thread_local;cxx_trailing_return_types;cxx_unicode_literals;cxx_uniform_initialization;cxx_unrestricted_unions;cxx_user_literals;cxx_variadic_macros;cxx_variadic_templates")
+set(CMAKE_CXX14_COMPILE_FEATURES "cxx_std_14;cxx_aggregate_default_initializers;cxx_attribute_deprecated;cxx_binary_literals;cxx_contextual_conversions;cxx_decltype_auto;cxx_digit_separators;cxx_generic_lambdas;cxx_lambda_init_captures;cxx_relaxed_constexpr;cxx_return_type_deduction;cxx_variable_templates")
+set(CMAKE_CXX17_COMPILE_FEATURES "cxx_std_17")
+
+set(CMAKE_CXX_PLATFORM_ID "MinGW")
+set(CMAKE_CXX_SIMULATE_ID "")
+set(CMAKE_CXX_SIMULATE_VERSION "")
+
+set(CMAKE_AR "C:/MinGW/bin/ar.exe")
+set(CMAKE_RANLIB "C:/MinGW/bin/ranlib.exe")
+set(CMAKE_LINKER "C:/MinGW/bin/ld.exe")
+set(CMAKE_COMPILER_IS_GNUCXX 1)
+set(CMAKE_CXX_COMPILER_LOADED 1)
+set(CMAKE_CXX_COMPILER_WORKS TRUE)
+set(CMAKE_CXX_ABI_COMPILED TRUE)
+set(CMAKE_COMPILER_IS_MINGW 1)
+set(CMAKE_COMPILER_IS_CYGWIN )
+if(CMAKE_COMPILER_IS_CYGWIN)
+  set(CYGWIN 1)
+  set(UNIX 1)
+endif()
+
+set(CMAKE_CXX_COMPILER_ENV_VAR "CXX")
+
+if(CMAKE_COMPILER_IS_MINGW)
+  set(MINGW 1)
+endif()
+set(CMAKE_CXX_COMPILER_ID_RUN 1)
+set(CMAKE_CXX_IGNORE_EXTENSIONS inl;h;hpp;HPP;H;o;O;obj;OBJ;def;DEF;rc;RC)
+set(CMAKE_CXX_SOURCE_FILE_EXTENSIONS C;M;c++;cc;cpp;cxx;mm;CPP)
+set(CMAKE_CXX_LINKER_PREFERENCE 30)
+set(CMAKE_CXX_LINKER_PREFERENCE_PROPAGATES 1)
+
+# Save compiler ABI information.
+set(CMAKE_CXX_SIZEOF_DATA_PTR "8")
+set(CMAKE_CXX_COMPILER_ABI "")
+set(CMAKE_CXX_LIBRARY_ARCHITECTURE "")
+
+if(CMAKE_CXX_SIZEOF_DATA_PTR)
+  set(CMAKE_SIZEOF_VOID_P "${CMAKE_CXX_SIZEOF_DATA_PTR}")
+endif()
+
+if(CMAKE_CXX_COMPILER_ABI)
+  set(CMAKE_INTERNAL_PLATFORM_ABI "${CMAKE_CXX_COMPILER_ABI}")
+endif()
+
+if(CMAKE_CXX_LIBRARY_ARCHITECTURE)
+  set(CMAKE_LIBRARY_ARCHITECTURE "")
+endif()
+
+set(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX "")
+if(CMAKE_CXX_CL_SHOWINCLUDES_PREFIX)
+  set(CMAKE_CL_SHOWINCLUDES_PREFIX "${CMAKE_CXX_CL_SHOWINCLUDES_PREFIX}")
+endif()
+
+
+
+
+
+set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;mingw32;moldname;mingwex;msvcrt;advapi32;shell32;user32;kernel32;mingw32;moldname;mingwex;msvcrt")
+set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "C:/MinGW/lib/gcc/x86_64-w64-mingw32/6.3.0;C:/MinGW/lib/gcc;C:/MinGW/x86_64-w64-mingw32/lib;C:/MinGW/lib")
+set(CMAKE_CXX_IMPLICIT_LINK_FRAMEWORK_DIRECTORIES "")
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CMakeDetermineCompilerABI_C.bin b/cmake-build-debug/CMakeFiles/3.8.2/CMakeDetermineCompilerABI_C.bin
new file mode 100644
index 0000000000000000000000000000000000000000..18da1cd7e2ad79c787b1ca6800dbe12ae467cf7b
Binary files /dev/null and b/cmake-build-debug/CMakeFiles/3.8.2/CMakeDetermineCompilerABI_C.bin differ
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CMakeDetermineCompilerABI_CXX.bin b/cmake-build-debug/CMakeFiles/3.8.2/CMakeDetermineCompilerABI_CXX.bin
new file mode 100644
index 0000000000000000000000000000000000000000..7a1a14279eaada933f3c5ffc888f25f3c06bb80c
Binary files /dev/null and b/cmake-build-debug/CMakeFiles/3.8.2/CMakeDetermineCompilerABI_CXX.bin differ
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CMakeRCCompiler.cmake b/cmake-build-debug/CMakeFiles/3.8.2/CMakeRCCompiler.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..124429e773866444907a8bda107cde74926dfb2f
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/3.8.2/CMakeRCCompiler.cmake
@@ -0,0 +1,6 @@
+set(CMAKE_RC_COMPILER "C:/MinGW/bin/windres.exe")
+set(CMAKE_RC_COMPILER_ARG1 "")
+set(CMAKE_RC_COMPILER_LOADED 1)
+set(CMAKE_RC_SOURCE_FILE_EXTENSIONS rc;RC)
+set(CMAKE_RC_OUTPUT_EXTENSION .obj)
+set(CMAKE_RC_COMPILER_ENV_VAR "RC")
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CMakeSystem.cmake b/cmake-build-debug/CMakeFiles/3.8.2/CMakeSystem.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..b4f51500ae9d4f131f9b88c95122bd5383e6f781
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/3.8.2/CMakeSystem.cmake
@@ -0,0 +1,15 @@
+set(CMAKE_HOST_SYSTEM "Windows-10.0.15063")
+set(CMAKE_HOST_SYSTEM_NAME "Windows")
+set(CMAKE_HOST_SYSTEM_VERSION "10.0.15063")
+set(CMAKE_HOST_SYSTEM_PROCESSOR "AMD64")
+
+
+
+set(CMAKE_SYSTEM "Windows-10.0.15063")
+set(CMAKE_SYSTEM_NAME "Windows")
+set(CMAKE_SYSTEM_VERSION "10.0.15063")
+set(CMAKE_SYSTEM_PROCESSOR "AMD64")
+
+set(CMAKE_CROSSCOMPILING "FALSE")
+
+set(CMAKE_SYSTEM_LOADED 1)
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdC/CMakeCCompilerId.c b/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdC/CMakeCCompilerId.c
new file mode 100644
index 0000000000000000000000000000000000000000..df91dafed5154594b27404de06cb3f51d680aee2
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdC/CMakeCCompilerId.c
@@ -0,0 +1,567 @@
+#ifdef __cplusplus
+# error "A C++ compiler has been selected for C."
+#endif
+
+#if defined(__18CXX)
+# define ID_VOID_MAIN
+#endif
+#if defined(__CLASSIC_C__)
+/* cv-qualifiers did not exist in K&R C */
+# define const
+# define volatile
+#endif
+
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+  /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# if defined(__INTEL_COMPILER_UPDATE)
+#  define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+# else
+#  define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER   % 10)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
+# define COMPILER_ID "Watcom"
+   /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "OpenWatcom"
+   /* __WATCOMC__ = VVRP + 1100 */
+# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__SUNPRO_C)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_C >= 0x5100
+   /* __SUNPRO_C = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# else
+   /* __SUNPRO_CC = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_C>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_C>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_C    & 0xF)
+# endif
+
+#elif defined(__HP_cc)
+# define COMPILER_ID "HP"
+  /* __HP_cc = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_cc/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_cc/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_cc     % 100)
+
+#elif defined(__DECC)
+# define COMPILER_ID "Compaq"
+  /* __DECC_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECC_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECC_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECC_VER         % 10000)
+
+#elif defined(__IBMC__) && defined(__COMPILER_VER__)
+# define COMPILER_ID "zOS"
+  /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+
+#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ >= 800
+# define COMPILER_ID "XL"
+  /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+
+#elif defined(__IBMC__) && !defined(__COMPILER_VER__) && __IBMC__ < 800
+# define COMPILER_ID "VisualAge"
+  /* __IBMC__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMC__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMC__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMC__    % 10)
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
+# define COMPILER_ID "Fujitsu"
+
+#elif defined(__TINYC__)
+# define COMPILER_ID "TinyCC"
+
+#elif defined(__BCC__)
+# define COMPILER_ID "Bruce"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__clang__) && defined(__apple_build_version__)
+# define COMPILER_ID "AppleClang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__GNUC__)
+# define COMPILER_ID "GNU"
+# define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# if defined(__GNUC_MINOR__)
+#  define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+#if defined(__VISUALDSPVERSION__)
+  /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+
+#elif defined(__ARMCC_VERSION)
+# define COMPILER_ID "ARMCC"
+#if __ARMCC_VERSION >= 1000000
+  /* __ARMCC_VERSION = VRRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION     % 10000)
+#else
+  /* __ARMCC_VERSION = VRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION    % 10000)
+#endif
+
+
+#elif defined(__SDCC_VERSION_MAJOR) || defined(SDCC)
+# define COMPILER_ID "SDCC"
+# if defined(__SDCC_VERSION_MAJOR)
+#  define COMPILER_VERSION_MAJOR DEC(__SDCC_VERSION_MAJOR)
+#  define COMPILER_VERSION_MINOR DEC(__SDCC_VERSION_MINOR)
+#  define COMPILER_VERSION_PATCH DEC(__SDCC_VERSION_PATCH)
+# else
+  /* SDCC = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(SDCC/100)
+#  define COMPILER_VERSION_MINOR DEC(SDCC/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(SDCC    % 10)
+# endif
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+  /* _SGI_COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)
+# else
+  /* _COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)
+# endif
+
+
+/* These compilers are either not known or too old to define an
+  identification macro.  Try to identify the platform and guess that
+  it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXE) || defined(__CRAYXC)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+# if defined(__LINUX__)
+#  define PLATFORM_ID "Linux"
+
+# elif defined(__DOS__)
+#  define PLATFORM_ID "DOS"
+
+# elif defined(__OS2__)
+#  define PLATFORM_ID "OS2"
+
+# elif defined(__WINDOWS__)
+#  define PLATFORM_ID "Windows3x"
+
+# else /* unknown platform */
+#  define PLATFORM_ID
+# endif
+
+#else /* unknown platform */
+# define PLATFORM_ID
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+#  if _M_ARM == 4
+#   define ARCHITECTURE_ID "ARMV4I"
+#  elif _M_ARM == 5
+#   define ARCHITECTURE_ID "ARMV5I"
+#  else
+#   define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+#  endif
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__WATCOMC__)
+# if defined(_M_I86)
+#  define ARCHITECTURE_ID "I86"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
+  SIMULATE_VERSION_MAJOR,
+# ifdef SIMULATE_VERSION_MINOR
+  '.', SIMULATE_VERSION_MINOR,
+#  ifdef SIMULATE_VERSION_PATCH
+   '.', SIMULATE_VERSION_PATCH,
+#   ifdef SIMULATE_VERSION_TWEAK
+    '.', SIMULATE_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+
+#if !defined(__STDC__)
+# if defined(_MSC_VER) && !defined(__clang__)
+#  define C_DIALECT "90"
+# else
+#  define C_DIALECT
+# endif
+#elif __STDC_VERSION__ >= 201000L
+# define C_DIALECT "11"
+#elif __STDC_VERSION__ >= 199901L
+# define C_DIALECT "99"
+#else
+# define C_DIALECT "90"
+#endif
+const char* info_language_dialect_default =
+  "INFO" ":" "dialect_default[" C_DIALECT "]";
+
+/*--------------------------------------------------------------------------*/
+
+#ifdef ID_VOID_MAIN
+void main() {}
+#else
+# if defined(__CLASSIC_C__)
+int main(argc, argv) int argc; char *argv[];
+# else
+int main(int argc, char* argv[])
+# endif
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+  require += info_arch[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXE) || defined(__CRAYXC)
+  require += info_cray[argc];
+#endif
+  require += info_language_dialect_default[argc];
+  (void)argv;
+  return require;
+}
+#endif
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdC/a.exe b/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdC/a.exe
new file mode 100644
index 0000000000000000000000000000000000000000..f0334a428dfd604946292b4dfbb06d169c72ee01
Binary files /dev/null and b/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdC/a.exe differ
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdCXX/CMakeCXXCompilerId.cpp b/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..e7037e5010c857ea7fc9d3479e88e0c07c2c69bd
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdCXX/CMakeCXXCompilerId.cpp
@@ -0,0 +1,539 @@
+/* This source file must have a .cpp extension so that all C++ compilers
+   recognize the extension without flags.  Borland does not know .cxx for
+   example.  */
+#ifndef __cplusplus
+# error "A C compiler has been selected for C++."
+#endif
+
+
+/* Version number components: V=Version, R=Revision, P=Patch
+   Version date components:   YYYY=Year, MM=Month,   DD=Day  */
+
+#if defined(__COMO__)
+# define COMPILER_ID "Comeau"
+  /* __COMO_VERSION__ = VRR */
+# define COMPILER_VERSION_MAJOR DEC(__COMO_VERSION__ / 100)
+# define COMPILER_VERSION_MINOR DEC(__COMO_VERSION__ % 100)
+
+#elif defined(__INTEL_COMPILER) || defined(__ICC)
+# define COMPILER_ID "Intel"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+  /* __INTEL_COMPILER = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__INTEL_COMPILER/100)
+# define COMPILER_VERSION_MINOR DEC(__INTEL_COMPILER/10 % 10)
+# if defined(__INTEL_COMPILER_UPDATE)
+#  define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER_UPDATE)
+# else
+#  define COMPILER_VERSION_PATCH DEC(__INTEL_COMPILER   % 10)
+# endif
+# if defined(__INTEL_COMPILER_BUILD_DATE)
+  /* __INTEL_COMPILER_BUILD_DATE = YYYYMMDD */
+#  define COMPILER_VERSION_TWEAK DEC(__INTEL_COMPILER_BUILD_DATE)
+# endif
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__PATHCC__)
+# define COMPILER_ID "PathScale"
+# define COMPILER_VERSION_MAJOR DEC(__PATHCC__)
+# define COMPILER_VERSION_MINOR DEC(__PATHCC_MINOR__)
+# if defined(__PATHCC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PATHCC_PATCHLEVEL__)
+# endif
+
+#elif defined(__BORLANDC__) && defined(__CODEGEARC_VERSION__)
+# define COMPILER_ID "Embarcadero"
+# define COMPILER_VERSION_MAJOR HEX(__CODEGEARC_VERSION__>>24 & 0x00FF)
+# define COMPILER_VERSION_MINOR HEX(__CODEGEARC_VERSION__>>16 & 0x00FF)
+# define COMPILER_VERSION_PATCH DEC(__CODEGEARC_VERSION__     & 0xFFFF)
+
+#elif defined(__BORLANDC__)
+# define COMPILER_ID "Borland"
+  /* __BORLANDC__ = 0xVRR */
+# define COMPILER_VERSION_MAJOR HEX(__BORLANDC__>>8)
+# define COMPILER_VERSION_MINOR HEX(__BORLANDC__ & 0xFF)
+
+#elif defined(__WATCOMC__) && __WATCOMC__ < 1200
+# define COMPILER_ID "Watcom"
+   /* __WATCOMC__ = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(__WATCOMC__ / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__WATCOMC__)
+# define COMPILER_ID "OpenWatcom"
+   /* __WATCOMC__ = VVRP + 1100 */
+# define COMPILER_VERSION_MAJOR DEC((__WATCOMC__ - 1100) / 100)
+# define COMPILER_VERSION_MINOR DEC((__WATCOMC__ / 10) % 10)
+# if (__WATCOMC__ % 10) > 0
+#  define COMPILER_VERSION_PATCH DEC(__WATCOMC__ % 10)
+# endif
+
+#elif defined(__SUNPRO_CC)
+# define COMPILER_ID "SunPro"
+# if __SUNPRO_CC >= 0x5100
+   /* __SUNPRO_CC = 0xVRRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>12)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xFF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# else
+   /* __SUNPRO_CC = 0xVRP */
+#  define COMPILER_VERSION_MAJOR HEX(__SUNPRO_CC>>8)
+#  define COMPILER_VERSION_MINOR HEX(__SUNPRO_CC>>4 & 0xF)
+#  define COMPILER_VERSION_PATCH HEX(__SUNPRO_CC    & 0xF)
+# endif
+
+#elif defined(__HP_aCC)
+# define COMPILER_ID "HP"
+  /* __HP_aCC = VVRRPP */
+# define COMPILER_VERSION_MAJOR DEC(__HP_aCC/10000)
+# define COMPILER_VERSION_MINOR DEC(__HP_aCC/100 % 100)
+# define COMPILER_VERSION_PATCH DEC(__HP_aCC     % 100)
+
+#elif defined(__DECCXX)
+# define COMPILER_ID "Compaq"
+  /* __DECCXX_VER = VVRRTPPPP */
+# define COMPILER_VERSION_MAJOR DEC(__DECCXX_VER/10000000)
+# define COMPILER_VERSION_MINOR DEC(__DECCXX_VER/100000  % 100)
+# define COMPILER_VERSION_PATCH DEC(__DECCXX_VER         % 10000)
+
+#elif defined(__IBMCPP__) && defined(__COMPILER_VER__)
+# define COMPILER_ID "zOS"
+  /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ >= 800
+# define COMPILER_ID "XL"
+  /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+
+#elif defined(__IBMCPP__) && !defined(__COMPILER_VER__) && __IBMCPP__ < 800
+# define COMPILER_ID "VisualAge"
+  /* __IBMCPP__ = VRP */
+# define COMPILER_VERSION_MAJOR DEC(__IBMCPP__/100)
+# define COMPILER_VERSION_MINOR DEC(__IBMCPP__/10 % 10)
+# define COMPILER_VERSION_PATCH DEC(__IBMCPP__    % 10)
+
+#elif defined(__PGI)
+# define COMPILER_ID "PGI"
+# define COMPILER_VERSION_MAJOR DEC(__PGIC__)
+# define COMPILER_VERSION_MINOR DEC(__PGIC_MINOR__)
+# if defined(__PGIC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__PGIC_PATCHLEVEL__)
+# endif
+
+#elif defined(_CRAYC)
+# define COMPILER_ID "Cray"
+# define COMPILER_VERSION_MAJOR DEC(_RELEASE_MAJOR)
+# define COMPILER_VERSION_MINOR DEC(_RELEASE_MINOR)
+
+#elif defined(__TI_COMPILER_VERSION__)
+# define COMPILER_ID "TI"
+  /* __TI_COMPILER_VERSION__ = VVVRRRPPP */
+# define COMPILER_VERSION_MAJOR DEC(__TI_COMPILER_VERSION__/1000000)
+# define COMPILER_VERSION_MINOR DEC(__TI_COMPILER_VERSION__/1000   % 1000)
+# define COMPILER_VERSION_PATCH DEC(__TI_COMPILER_VERSION__        % 1000)
+
+#elif defined(__FUJITSU) || defined(__FCC_VERSION) || defined(__fcc_version)
+# define COMPILER_ID "Fujitsu"
+
+#elif defined(__SCO_VERSION__)
+# define COMPILER_ID "SCO"
+
+#elif defined(__clang__) && defined(__apple_build_version__)
+# define COMPILER_ID "AppleClang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+# define COMPILER_VERSION_TWEAK DEC(__apple_build_version__)
+
+#elif defined(__clang__)
+# define COMPILER_ID "Clang"
+# if defined(_MSC_VER)
+#  define SIMULATE_ID "MSVC"
+# endif
+# define COMPILER_VERSION_MAJOR DEC(__clang_major__)
+# define COMPILER_VERSION_MINOR DEC(__clang_minor__)
+# define COMPILER_VERSION_PATCH DEC(__clang_patchlevel__)
+# if defined(_MSC_VER)
+   /* _MSC_VER = VVRR */
+#  define SIMULATE_VERSION_MAJOR DEC(_MSC_VER / 100)
+#  define SIMULATE_VERSION_MINOR DEC(_MSC_VER % 100)
+# endif
+
+#elif defined(__GNUC__) || defined(__GNUG__)
+# define COMPILER_ID "GNU"
+# if defined(__GNUC__)
+#  define COMPILER_VERSION_MAJOR DEC(__GNUC__)
+# else
+#  define COMPILER_VERSION_MAJOR DEC(__GNUG__)
+# endif
+# if defined(__GNUC_MINOR__)
+#  define COMPILER_VERSION_MINOR DEC(__GNUC_MINOR__)
+# endif
+# if defined(__GNUC_PATCHLEVEL__)
+#  define COMPILER_VERSION_PATCH DEC(__GNUC_PATCHLEVEL__)
+# endif
+
+#elif defined(_MSC_VER)
+# define COMPILER_ID "MSVC"
+  /* _MSC_VER = VVRR */
+# define COMPILER_VERSION_MAJOR DEC(_MSC_VER / 100)
+# define COMPILER_VERSION_MINOR DEC(_MSC_VER % 100)
+# if defined(_MSC_FULL_VER)
+#  if _MSC_VER >= 1400
+    /* _MSC_FULL_VER = VVRRPPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 100000)
+#  else
+    /* _MSC_FULL_VER = VVRRPPPP */
+#   define COMPILER_VERSION_PATCH DEC(_MSC_FULL_VER % 10000)
+#  endif
+# endif
+# if defined(_MSC_BUILD)
+#  define COMPILER_VERSION_TWEAK DEC(_MSC_BUILD)
+# endif
+
+#elif defined(__VISUALDSPVERSION__) || defined(__ADSPBLACKFIN__) || defined(__ADSPTS__) || defined(__ADSP21000__)
+# define COMPILER_ID "ADSP"
+#if defined(__VISUALDSPVERSION__)
+  /* __VISUALDSPVERSION__ = 0xVVRRPP00 */
+# define COMPILER_VERSION_MAJOR HEX(__VISUALDSPVERSION__>>24)
+# define COMPILER_VERSION_MINOR HEX(__VISUALDSPVERSION__>>16 & 0xFF)
+# define COMPILER_VERSION_PATCH HEX(__VISUALDSPVERSION__>>8  & 0xFF)
+#endif
+
+#elif defined(__IAR_SYSTEMS_ICC__ ) || defined(__IAR_SYSTEMS_ICC)
+# define COMPILER_ID "IAR"
+
+#elif defined(__ARMCC_VERSION)
+# define COMPILER_ID "ARMCC"
+#if __ARMCC_VERSION >= 1000000
+  /* __ARMCC_VERSION = VRRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/1000000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 100)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION     % 10000)
+#else
+  /* __ARMCC_VERSION = VRPPPP */
+  # define COMPILER_VERSION_MAJOR DEC(__ARMCC_VERSION/100000)
+  # define COMPILER_VERSION_MINOR DEC(__ARMCC_VERSION/10000 % 10)
+  # define COMPILER_VERSION_PATCH DEC(__ARMCC_VERSION    % 10000)
+#endif
+
+
+#elif defined(_SGI_COMPILER_VERSION) || defined(_COMPILER_VERSION)
+# define COMPILER_ID "MIPSpro"
+# if defined(_SGI_COMPILER_VERSION)
+  /* _SGI_COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_SGI_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_SGI_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_SGI_COMPILER_VERSION    % 10)
+# else
+  /* _COMPILER_VERSION = VRP */
+#  define COMPILER_VERSION_MAJOR DEC(_COMPILER_VERSION/100)
+#  define COMPILER_VERSION_MINOR DEC(_COMPILER_VERSION/10 % 10)
+#  define COMPILER_VERSION_PATCH DEC(_COMPILER_VERSION    % 10)
+# endif
+
+
+/* These compilers are either not known or too old to define an
+  identification macro.  Try to identify the platform and guess that
+  it is the native compiler.  */
+#elif defined(__sgi)
+# define COMPILER_ID "MIPSpro"
+
+#elif defined(__hpux) || defined(__hpua)
+# define COMPILER_ID "HP"
+
+#else /* unknown compiler */
+# define COMPILER_ID ""
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_compiler = "INFO" ":" "compiler[" COMPILER_ID "]";
+#ifdef SIMULATE_ID
+char const* info_simulate = "INFO" ":" "simulate[" SIMULATE_ID "]";
+#endif
+
+#ifdef __QNXNTO__
+char const* qnxnto = "INFO" ":" "qnxnto[]";
+#endif
+
+#if defined(__CRAYXE) || defined(__CRAYXC)
+char const *info_cray = "INFO" ":" "compiler_wrapper[CrayPrgEnv]";
+#endif
+
+#define STRINGIFY_HELPER(X) #X
+#define STRINGIFY(X) STRINGIFY_HELPER(X)
+
+/* Identify known platforms by name.  */
+#if defined(__linux) || defined(__linux__) || defined(linux)
+# define PLATFORM_ID "Linux"
+
+#elif defined(__CYGWIN__)
+# define PLATFORM_ID "Cygwin"
+
+#elif defined(__MINGW32__)
+# define PLATFORM_ID "MinGW"
+
+#elif defined(__APPLE__)
+# define PLATFORM_ID "Darwin"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+# define PLATFORM_ID "Windows"
+
+#elif defined(__FreeBSD__) || defined(__FreeBSD)
+# define PLATFORM_ID "FreeBSD"
+
+#elif defined(__NetBSD__) || defined(__NetBSD)
+# define PLATFORM_ID "NetBSD"
+
+#elif defined(__OpenBSD__) || defined(__OPENBSD)
+# define PLATFORM_ID "OpenBSD"
+
+#elif defined(__sun) || defined(sun)
+# define PLATFORM_ID "SunOS"
+
+#elif defined(_AIX) || defined(__AIX) || defined(__AIX__) || defined(__aix) || defined(__aix__)
+# define PLATFORM_ID "AIX"
+
+#elif defined(__sgi) || defined(__sgi__) || defined(_SGI)
+# define PLATFORM_ID "IRIX"
+
+#elif defined(__hpux) || defined(__hpux__)
+# define PLATFORM_ID "HP-UX"
+
+#elif defined(__HAIKU__)
+# define PLATFORM_ID "Haiku"
+
+#elif defined(__BeOS) || defined(__BEOS__) || defined(_BEOS)
+# define PLATFORM_ID "BeOS"
+
+#elif defined(__QNX__) || defined(__QNXNTO__)
+# define PLATFORM_ID "QNX"
+
+#elif defined(__tru64) || defined(_tru64) || defined(__TRU64__)
+# define PLATFORM_ID "Tru64"
+
+#elif defined(__riscos) || defined(__riscos__)
+# define PLATFORM_ID "RISCos"
+
+#elif defined(__sinix) || defined(__sinix__) || defined(__SINIX__)
+# define PLATFORM_ID "SINIX"
+
+#elif defined(__UNIX_SV__)
+# define PLATFORM_ID "UNIX_SV"
+
+#elif defined(__bsdos__)
+# define PLATFORM_ID "BSDOS"
+
+#elif defined(_MPRAS) || defined(MPRAS)
+# define PLATFORM_ID "MP-RAS"
+
+#elif defined(__osf) || defined(__osf__)
+# define PLATFORM_ID "OSF1"
+
+#elif defined(_SCO_SV) || defined(SCO_SV) || defined(sco_sv)
+# define PLATFORM_ID "SCO_SV"
+
+#elif defined(__ultrix) || defined(__ultrix__) || defined(_ULTRIX)
+# define PLATFORM_ID "ULTRIX"
+
+#elif defined(__XENIX__) || defined(_XENIX) || defined(XENIX)
+# define PLATFORM_ID "Xenix"
+
+#elif defined(__WATCOMC__)
+# if defined(__LINUX__)
+#  define PLATFORM_ID "Linux"
+
+# elif defined(__DOS__)
+#  define PLATFORM_ID "DOS"
+
+# elif defined(__OS2__)
+#  define PLATFORM_ID "OS2"
+
+# elif defined(__WINDOWS__)
+#  define PLATFORM_ID "Windows3x"
+
+# else /* unknown platform */
+#  define PLATFORM_ID
+# endif
+
+#else /* unknown platform */
+# define PLATFORM_ID
+
+#endif
+
+/* For windows compilers MSVC and Intel we can determine
+   the architecture of the compiler being used.  This is because
+   the compilers do not have flags that can change the architecture,
+   but rather depend on which compiler is being used
+*/
+#if defined(_WIN32) && defined(_MSC_VER)
+# if defined(_M_IA64)
+#  define ARCHITECTURE_ID "IA64"
+
+# elif defined(_M_X64) || defined(_M_AMD64)
+#  define ARCHITECTURE_ID "x64"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# elif defined(_M_ARM)
+#  if _M_ARM == 4
+#   define ARCHITECTURE_ID "ARMV4I"
+#  elif _M_ARM == 5
+#   define ARCHITECTURE_ID "ARMV5I"
+#  else
+#   define ARCHITECTURE_ID "ARMV" STRINGIFY(_M_ARM)
+#  endif
+
+# elif defined(_M_MIPS)
+#  define ARCHITECTURE_ID "MIPS"
+
+# elif defined(_M_SH)
+#  define ARCHITECTURE_ID "SHx"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#elif defined(__WATCOMC__)
+# if defined(_M_I86)
+#  define ARCHITECTURE_ID "I86"
+
+# elif defined(_M_IX86)
+#  define ARCHITECTURE_ID "X86"
+
+# else /* unknown architecture */
+#  define ARCHITECTURE_ID ""
+# endif
+
+#else
+#  define ARCHITECTURE_ID
+#endif
+
+/* Convert integer to decimal digit literals.  */
+#define DEC(n)                   \
+  ('0' + (((n) / 10000000)%10)), \
+  ('0' + (((n) / 1000000)%10)),  \
+  ('0' + (((n) / 100000)%10)),   \
+  ('0' + (((n) / 10000)%10)),    \
+  ('0' + (((n) / 1000)%10)),     \
+  ('0' + (((n) / 100)%10)),      \
+  ('0' + (((n) / 10)%10)),       \
+  ('0' +  ((n) % 10))
+
+/* Convert integer to hex digit literals.  */
+#define HEX(n)             \
+  ('0' + ((n)>>28 & 0xF)), \
+  ('0' + ((n)>>24 & 0xF)), \
+  ('0' + ((n)>>20 & 0xF)), \
+  ('0' + ((n)>>16 & 0xF)), \
+  ('0' + ((n)>>12 & 0xF)), \
+  ('0' + ((n)>>8  & 0xF)), \
+  ('0' + ((n)>>4  & 0xF)), \
+  ('0' + ((n)     & 0xF))
+
+/* Construct a string literal encoding the version number components. */
+#ifdef COMPILER_VERSION_MAJOR
+char const info_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  'c','o','m','p','i','l','e','r','_','v','e','r','s','i','o','n','[',
+  COMPILER_VERSION_MAJOR,
+# ifdef COMPILER_VERSION_MINOR
+  '.', COMPILER_VERSION_MINOR,
+#  ifdef COMPILER_VERSION_PATCH
+   '.', COMPILER_VERSION_PATCH,
+#   ifdef COMPILER_VERSION_TWEAK
+    '.', COMPILER_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct a string literal encoding the version number components. */
+#ifdef SIMULATE_VERSION_MAJOR
+char const info_simulate_version[] = {
+  'I', 'N', 'F', 'O', ':',
+  's','i','m','u','l','a','t','e','_','v','e','r','s','i','o','n','[',
+  SIMULATE_VERSION_MAJOR,
+# ifdef SIMULATE_VERSION_MINOR
+  '.', SIMULATE_VERSION_MINOR,
+#  ifdef SIMULATE_VERSION_PATCH
+   '.', SIMULATE_VERSION_PATCH,
+#   ifdef SIMULATE_VERSION_TWEAK
+    '.', SIMULATE_VERSION_TWEAK,
+#   endif
+#  endif
+# endif
+  ']','\0'};
+#endif
+
+/* Construct the string literal in pieces to prevent the source from
+   getting matched.  Store it in a pointer rather than an array
+   because some compilers will just produce instructions to fill the
+   array rather than assigning a pointer to a static array.  */
+char const* info_platform = "INFO" ":" "platform[" PLATFORM_ID "]";
+char const* info_arch = "INFO" ":" "arch[" ARCHITECTURE_ID "]";
+
+
+
+
+const char* info_language_dialect_default = "INFO" ":" "dialect_default["
+#if __cplusplus > 201402L
+  "17"
+#elif __cplusplus >= 201402L
+  "14"
+#elif __cplusplus >= 201103L
+  "11"
+#else
+  "98"
+#endif
+"]";
+
+/*--------------------------------------------------------------------------*/
+
+int main(int argc, char* argv[])
+{
+  int require = 0;
+  require += info_compiler[argc];
+  require += info_platform[argc];
+#ifdef COMPILER_VERSION_MAJOR
+  require += info_version[argc];
+#endif
+#ifdef SIMULATE_ID
+  require += info_simulate[argc];
+#endif
+#ifdef SIMULATE_VERSION_MAJOR
+  require += info_simulate_version[argc];
+#endif
+#if defined(__CRAYXE) || defined(__CRAYXC)
+  require += info_cray[argc];
+#endif
+  require += info_language_dialect_default[argc];
+  (void)argv;
+  return require;
+}
diff --git a/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdCXX/a.exe b/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdCXX/a.exe
new file mode 100644
index 0000000000000000000000000000000000000000..094103d5ceccb87f290589f1c19456d4a845540e
Binary files /dev/null and b/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdCXX/a.exe differ
diff --git a/cmake-build-debug/CMakeFiles/CMakeDirectoryInformation.cmake b/cmake-build-debug/CMakeFiles/CMakeDirectoryInformation.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..3bf746082f0a2ce9d20147a9cf6efa3ec9bf8bd2
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/CMakeDirectoryInformation.cmake
@@ -0,0 +1,16 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "MinGW Makefiles" Generator, CMake Version 3.8
+
+# Relative path conversion top directories.
+set(CMAKE_RELATIVE_PATH_TOP_SOURCE "C:/Users/sherifsas/Desktop/Project2")
+set(CMAKE_RELATIVE_PATH_TOP_BINARY "C:/Users/sherifsas/Desktop/Project2/cmake-build-debug")
+
+# Force unix paths in dependencies.
+set(CMAKE_FORCE_UNIX_PATHS 1)
+
+
+# The C and CXX include file regular expressions for this directory.
+set(CMAKE_C_INCLUDE_REGEX_SCAN "^.*$")
+set(CMAKE_C_INCLUDE_REGEX_COMPLAIN "^$")
+set(CMAKE_CXX_INCLUDE_REGEX_SCAN ${CMAKE_C_INCLUDE_REGEX_SCAN})
+set(CMAKE_CXX_INCLUDE_REGEX_COMPLAIN ${CMAKE_C_INCLUDE_REGEX_COMPLAIN})
diff --git a/cmake-build-debug/CMakeFiles/CMakeOutput.log b/cmake-build-debug/CMakeFiles/CMakeOutput.log
new file mode 100644
index 0000000000000000000000000000000000000000..9a67338eda000b110bef88f1dad5b6e7062e3758
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/CMakeOutput.log
@@ -0,0 +1,702 @@
+The system is: Windows - 10.0.15063 - AMD64
+Compiling the C compiler identification source file "CMakeCCompilerId.c" succeeded.
+Compiler: C:/MinGW/bin/gcc.exe 
+Build flags: 
+Id flags:  
+
+The output was:
+0
+
+
+Compilation of the C compiler identification source "CMakeCCompilerId.c" produced "a.exe"
+
+The C compiler identification is GNU, found in "C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdC/a.exe"
+
+Compiling the CXX compiler identification source file "CMakeCXXCompilerId.cpp" succeeded.
+Compiler: C:/MinGW/bin/g++.exe 
+Build flags: 
+Id flags:  
+
+The output was:
+0
+
+
+Compilation of the CXX compiler identification source "CMakeCXXCompilerId.cpp" produced "a.exe"
+
+The CXX compiler identification is GNU, found in "C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/3.8.2/CompilerIdCXX/a.exe"
+
+Determining if the C compiler works passed with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_c89c6/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_c89c6.dir\build.make CMakeFiles/cmTC_c89c6.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building C object CMakeFiles/cmTC_c89c6.dir/testCCompiler.c.obj

+C:\MinGW\bin\gcc.exe    -o CMakeFiles\cmTC_c89c6.dir\testCCompiler.c.obj   -c C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\CMakeTmp\testCCompiler.c

+Linking C executable cmTC_c89c6.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_c89c6.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_c89c6.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_c89c6.dir/objects.a @CMakeFiles\cmTC_c89c6.dir\objects1.rsp
+C:\MinGW\bin\gcc.exe      -Wl,--whole-archive CMakeFiles\cmTC_c89c6.dir/objects.a -Wl,--no-whole-archive  -o cmTC_c89c6.exe -Wl,--out-implib,libcmTC_c89c6.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\cmTC_c89c6.dir\linklibs.rsp
+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+Detecting C compiler ABI info compiled with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_8eef5/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_8eef5.dir\build.make CMakeFiles/cmTC_8eef5.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building C object CMakeFiles/cmTC_8eef5.dir/CMakeCCompilerABI.c.obj

+C:\MinGW\bin\gcc.exe    -o CMakeFiles\cmTC_8eef5.dir\CMakeCCompilerABI.c.obj   -c "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\share\cmake-3.8\Modules\CMakeCCompilerABI.c"

+Linking C executable cmTC_8eef5.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_8eef5.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_8eef5.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_8eef5.dir/objects.a @CMakeFiles\cmTC_8eef5.dir\objects1.rsp
+C:\MinGW\bin\gcc.exe     -v -Wl,--whole-archive CMakeFiles\cmTC_8eef5.dir/objects.a -Wl,--no-whole-archive  -o cmTC_8eef5.exe -Wl,--out-implib,libcmTC_8eef5.dll.a -Wl,--major-image-version,0,--minor-image-version,0 
+Built by Equation Solution <http://www.Equation.com>.

+Using built-in specs.

+COLLECT_GCC=C:\MinGW\bin\gcc.exe

+COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe

+Target: x86_64-w64-mingw32

+Configured with: ../gcc-6.3.0-mingw/configure --host=x86_64-w64-mingw32 --build=x86_64-unknown-linux-gnu --target=x86_64-w64-mingw32 --prefix=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gcc/6.3.0 --with-sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113 --with-gcc --with-gnu-ld --with-gnu-as --with-ld64=no --with-gmp=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gmp --with-mpfr=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpfr --with-mpc=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpc --with-cloog=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/cloog --with-diagnostics-color=auto-if-env --enable-cloog-backend=isl --enable-targets=i686-w64-mingw32,x86_64-w64-mingw32 --enable-lto --enable-languages=c,c++,fortran --enable-threads=win32 --enable-static --enable-shared=lto-plugin --enable-plugins --enable-ld=yes --enable-libquadmath --enable-libquadmath-support --enable-libgomp --disable-checking --disable-nls --disable-tls --disable-win32-registry

+Thread model: win32

+gcc version 6.3.0 (GCC) 

+COMPILER_PATH=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/;c:/mingw/bin/../libexec/gcc/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/

+EQ_LIBRARY_PATH=c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/;c:/mingw/bin/../lib/gcc/;C:/MinGW/x86_64-w64-mingw32/lib/../lib/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib/;C:/MinGW/x86_64-w64-mingw32/lib/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../

+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_8eef5.exe' '-mtune=generic' '-march=x86-64'

+ c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/collect2.exe -plugin c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/liblto_plugin-0.dll -plugin-opt=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\SHERIF~1\AppData\Local\Temp\ccUCkb8E.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt --sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113 -m i386pep -Bdynamic -o cmTC_8eef5.exe C:/MinGW/x86_64-w64-mingw32/lib/../lib/crt2.o c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtbegin.o -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0 -Lc:/mingw/bin/../lib/gcc -LC:/MinGW/x86_64-w64-mingw32/lib/../lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib -LC:/MinGW/x86_64-w64-mingw32/lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../.. --whole-archive CMakeFiles\cmTC_8eef5.dir/objects.a --no-whole-archive --out-implib libcmTC_8eef5.dll.a --major-image-version 0 --minor-image-version 0 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtend.o

+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_8eef5.exe' '-mtune=generic' '-march=x86-64'

+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+Parsed C implicit link information from above output:
+  link line regex: [^( *|.*[/\])(ld\.exe|([^/\]+-)?ld|collect2)[^/\]*( |$)]
+  ignore line: [Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp]
+  ignore line: []
+  ignore line: [Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_8eef5/fast"]
+  ignore line: [C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_8eef5.dir\build.make CMakeFiles/cmTC_8eef5.dir/build]
+  ignore line: [mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp']
+  ignore line: [Building C object CMakeFiles/cmTC_8eef5.dir/CMakeCCompilerABI.c.obj]
+  ignore line: [C:\MinGW\bin\gcc.exe    -o CMakeFiles\cmTC_8eef5.dir\CMakeCCompilerABI.c.obj   -c "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\share\cmake-3.8\Modules\CMakeCCompilerABI.c"]
+  ignore line: [Linking C executable cmTC_8eef5.exe]
+  ignore line: ["C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_8eef5.dir\link.txt --verbose=1]
+  ignore line: ["C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_8eef5.dir/objects.a]
+  ignore line: [C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_8eef5.dir/objects.a @CMakeFiles\cmTC_8eef5.dir\objects1.rsp]
+  ignore line: [C:\MinGW\bin\gcc.exe     -v -Wl,--whole-archive CMakeFiles\cmTC_8eef5.dir/objects.a -Wl,--no-whole-archive  -o cmTC_8eef5.exe -Wl,--out-implib,libcmTC_8eef5.dll.a -Wl,--major-image-version,0,--minor-image-version,0 ]
+  ignore line: [Built by Equation Solution <http://www.Equation.com>.]
+  ignore line: [Using built-in specs.]
+  ignore line: [COLLECT_GCC=C:\MinGW\bin\gcc.exe]
+  ignore line: [COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe]
+  ignore line: [Target: x86_64-w64-mingw32]
+  ignore line: [Configured with: ../gcc-6.3.0-mingw/configure --host=x86_64-w64-mingw32 --build=x86_64-unknown-linux-gnu --target=x86_64-w64-mingw32 --prefix=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gcc/6.3.0 --with-sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113 --with-gcc --with-gnu-ld --with-gnu-as --with-ld64=no --with-gmp=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gmp --with-mpfr=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpfr --with-mpc=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpc --with-cloog=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/cloog --with-diagnostics-color=auto-if-env --enable-cloog-backend=isl --enable-targets=i686-w64-mingw32,x86_64-w64-mingw32 --enable-lto --enable-languages=c,c++,fortran --enable-threads=win32 --enable-static --enable-shared=lto-plugin --enable-plugins --enable-ld=yes --enable-libquadmath --enable-libquadmath-support --enable-libgomp --disable-checking --disable-nls --disable-tls --disable-win32-registry]
+  ignore line: [Thread model: win32]
+  ignore line: [gcc version 6.3.0 (GCC) ]
+  ignore line: [COMPILER_PATH=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/]
+  ignore line: [c:/mingw/bin/../libexec/gcc/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/]
+  ignore line: [EQ_LIBRARY_PATH=c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/]
+  ignore line: [c:/mingw/bin/../lib/gcc/]
+  ignore line: [C:/MinGW/x86_64-w64-mingw32/lib/../lib/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib/]
+  ignore line: [C:/MinGW/x86_64-w64-mingw32/lib/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../]
+  ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_8eef5.exe' '-mtune=generic' '-march=x86-64']
+  link line: [ c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/collect2.exe -plugin c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/liblto_plugin-0.dll -plugin-opt=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\SHERIF~1\AppData\Local\Temp\ccUCkb8E.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt --sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113 -m i386pep -Bdynamic -o cmTC_8eef5.exe C:/MinGW/x86_64-w64-mingw32/lib/../lib/crt2.o c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtbegin.o -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0 -Lc:/mingw/bin/../lib/gcc -LC:/MinGW/x86_64-w64-mingw32/lib/../lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib -LC:/MinGW/x86_64-w64-mingw32/lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../.. --whole-archive CMakeFiles\cmTC_8eef5.dir/objects.a --no-whole-archive --out-implib libcmTC_8eef5.dll.a --major-image-version 0 --minor-image-version 0 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtend.o]
+    arg [c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/collect2.exe] ==> ignore
+    arg [-plugin] ==> ignore
+    arg [c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/liblto_plugin-0.dll] ==> ignore
+    arg [-plugin-opt=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe] ==> ignore
+    arg [-plugin-opt=-fresolution=C:\Users\SHERIF~1\AppData\Local\Temp\ccUCkb8E.res] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmingw32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmoldname] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmingwex] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmsvcrt] ==> ignore
+    arg [-plugin-opt=-pass-through=-ladvapi32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lshell32] ==> ignore
+    arg [-plugin-opt=-pass-through=-luser32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lkernel32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmingw32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmoldname] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmingwex] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmsvcrt] ==> ignore
+    arg [--sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113] ==> ignore
+    arg [-m] ==> ignore
+    arg [i386pep] ==> ignore
+    arg [-Bdynamic] ==> ignore
+    arg [-o] ==> ignore
+    arg [cmTC_8eef5.exe] ==> ignore
+    arg [C:/MinGW/x86_64-w64-mingw32/lib/../lib/crt2.o] ==> ignore
+    arg [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtbegin.o] ==> ignore
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0]
+    arg [-Lc:/mingw/bin/../lib/gcc] ==> dir [c:/mingw/bin/../lib/gcc]
+    arg [-LC:/MinGW/x86_64-w64-mingw32/lib/../lib] ==> dir [C:/MinGW/x86_64-w64-mingw32/lib/../lib]
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib]
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib]
+    arg [-LC:/MinGW/x86_64-w64-mingw32/lib] ==> dir [C:/MinGW/x86_64-w64-mingw32/lib]
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib]
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../..] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../..]
+    arg [--whole-archive] ==> ignore
+    arg [CMakeFiles\cmTC_8eef5.dir/objects.a] ==> ignore
+    arg [--no-whole-archive] ==> ignore
+    arg [--out-implib] ==> ignore
+    arg [libcmTC_8eef5.dll.a] ==> ignore
+    arg [--major-image-version] ==> ignore
+    arg [0] ==> ignore
+    arg [--minor-image-version] ==> ignore
+    arg [0] ==> ignore
+    arg [-lmingw32] ==> lib [mingw32]
+    arg [-lgcc] ==> lib [gcc]
+    arg [-lmoldname] ==> lib [moldname]
+    arg [-lmingwex] ==> lib [mingwex]
+    arg [-lmsvcrt] ==> lib [msvcrt]
+    arg [-ladvapi32] ==> lib [advapi32]
+    arg [-lshell32] ==> lib [shell32]
+    arg [-luser32] ==> lib [user32]
+    arg [-lkernel32] ==> lib [kernel32]
+    arg [-lmingw32] ==> lib [mingw32]
+    arg [-lgcc] ==> lib [gcc]
+    arg [-lmoldname] ==> lib [moldname]
+    arg [-lmingwex] ==> lib [mingwex]
+    arg [-lmsvcrt] ==> lib [msvcrt]
+    arg [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtend.o] ==> ignore
+  remove lib [gcc]
+  remove lib [gcc]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0] ==> [C:/MinGW/lib/gcc/x86_64-w64-mingw32/6.3.0]
+  collapse library dir [c:/mingw/bin/../lib/gcc] ==> [C:/MinGW/lib/gcc]
+  collapse library dir [C:/MinGW/x86_64-w64-mingw32/lib/../lib] ==> [C:/MinGW/x86_64-w64-mingw32/lib]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib] ==> [C:/MinGW/x86_64-w64-mingw32/lib]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib] ==> [C:/MinGW/lib]
+  collapse library dir [C:/MinGW/x86_64-w64-mingw32/lib] ==> [C:/MinGW/x86_64-w64-mingw32/lib]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib] ==> [C:/MinGW/x86_64-w64-mingw32/lib]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../..] ==> [C:/MinGW/lib]
+  implicit libs: [mingw32;moldname;mingwex;msvcrt;advapi32;shell32;user32;kernel32;mingw32;moldname;mingwex;msvcrt]
+  implicit dirs: [C:/MinGW/lib/gcc/x86_64-w64-mingw32/6.3.0;C:/MinGW/lib/gcc;C:/MinGW/x86_64-w64-mingw32/lib;C:/MinGW/lib]
+  implicit fwks: []
+
+
+
+
+Detecting C [-std=c11] compiler features compiled with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_fe40f/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_fe40f.dir\build.make CMakeFiles/cmTC_fe40f.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building C object CMakeFiles/cmTC_fe40f.dir/feature_tests.c.obj

+C:\MinGW\bin\gcc.exe   -std=c11 -o CMakeFiles\cmTC_fe40f.dir\feature_tests.c.obj   -c C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\feature_tests.c

+Linking C executable cmTC_fe40f.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_fe40f.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_fe40f.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_fe40f.dir/objects.a @CMakeFiles\cmTC_fe40f.dir\objects1.rsp
+C:\MinGW\bin\gcc.exe      -Wl,--whole-archive CMakeFiles\cmTC_fe40f.dir/objects.a -Wl,--no-whole-archive  -o cmTC_fe40f.exe -Wl,--out-implib,libcmTC_fe40f.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\cmTC_fe40f.dir\linklibs.rsp
+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+    Feature record: C_FEATURE:1c_function_prototypes
+    Feature record: C_FEATURE:1c_restrict
+    Feature record: C_FEATURE:1c_static_assert
+    Feature record: C_FEATURE:1c_variadic_macros
+
+
+Detecting C [-std=c99] compiler features compiled with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_d0e04/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_d0e04.dir\build.make CMakeFiles/cmTC_d0e04.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building C object CMakeFiles/cmTC_d0e04.dir/feature_tests.c.obj

+C:\MinGW\bin\gcc.exe   -std=c99 -o CMakeFiles\cmTC_d0e04.dir\feature_tests.c.obj   -c C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\feature_tests.c

+Linking C executable cmTC_d0e04.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_d0e04.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_d0e04.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_d0e04.dir/objects.a @CMakeFiles\cmTC_d0e04.dir\objects1.rsp
+C:\MinGW\bin\gcc.exe      -Wl,--whole-archive CMakeFiles\cmTC_d0e04.dir/objects.a -Wl,--no-whole-archive  -o cmTC_d0e04.exe -Wl,--out-implib,libcmTC_d0e04.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\cmTC_d0e04.dir\linklibs.rsp
+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+    Feature record: C_FEATURE:1c_function_prototypes
+    Feature record: C_FEATURE:1c_restrict
+    Feature record: C_FEATURE:0c_static_assert
+    Feature record: C_FEATURE:1c_variadic_macros
+
+
+Detecting C [-std=c90] compiler features compiled with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_e7c77/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_e7c77.dir\build.make CMakeFiles/cmTC_e7c77.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building C object CMakeFiles/cmTC_e7c77.dir/feature_tests.c.obj

+C:\MinGW\bin\gcc.exe   -std=c90 -o CMakeFiles\cmTC_e7c77.dir\feature_tests.c.obj   -c C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\feature_tests.c

+Linking C executable cmTC_e7c77.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_e7c77.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_e7c77.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_e7c77.dir/objects.a @CMakeFiles\cmTC_e7c77.dir\objects1.rsp
+C:\MinGW\bin\gcc.exe      -Wl,--whole-archive CMakeFiles\cmTC_e7c77.dir/objects.a -Wl,--no-whole-archive  -o cmTC_e7c77.exe -Wl,--out-implib,libcmTC_e7c77.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\cmTC_e7c77.dir\linklibs.rsp
+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+    Feature record: C_FEATURE:1c_function_prototypes
+    Feature record: C_FEATURE:0c_restrict
+    Feature record: C_FEATURE:0c_static_assert
+    Feature record: C_FEATURE:0c_variadic_macros
+Determining if the CXX compiler works passed with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_9242e/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_9242e.dir\build.make CMakeFiles/cmTC_9242e.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building CXX object CMakeFiles/cmTC_9242e.dir/testCXXCompiler.cxx.obj

+C:\MinGW\bin\g++.exe     -o CMakeFiles\cmTC_9242e.dir\testCXXCompiler.cxx.obj -c C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\CMakeTmp\testCXXCompiler.cxx

+Linking CXX executable cmTC_9242e.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_9242e.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_9242e.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_9242e.dir/objects.a @CMakeFiles\cmTC_9242e.dir\objects1.rsp
+C:\MinGW\bin\g++.exe      -Wl,--whole-archive CMakeFiles\cmTC_9242e.dir/objects.a -Wl,--no-whole-archive  -o cmTC_9242e.exe -Wl,--out-implib,libcmTC_9242e.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\cmTC_9242e.dir\linklibs.rsp
+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+Detecting CXX compiler ABI info compiled with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_1f637/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_1f637.dir\build.make CMakeFiles/cmTC_1f637.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building CXX object CMakeFiles/cmTC_1f637.dir/CMakeCXXCompilerABI.cpp.obj

+C:\MinGW\bin\g++.exe     -o CMakeFiles\cmTC_1f637.dir\CMakeCXXCompilerABI.cpp.obj -c "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\share\cmake-3.8\Modules\CMakeCXXCompilerABI.cpp"

+Linking CXX executable cmTC_1f637.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_1f637.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_1f637.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_1f637.dir/objects.a @CMakeFiles\cmTC_1f637.dir\objects1.rsp
+C:\MinGW\bin\g++.exe     -v -Wl,--whole-archive CMakeFiles\cmTC_1f637.dir/objects.a -Wl,--no-whole-archive  -o cmTC_1f637.exe -Wl,--out-implib,libcmTC_1f637.dll.a -Wl,--major-image-version,0,--minor-image-version,0 
+Built by Equation Solution <http://www.Equation.com>.

+Using built-in specs.

+COLLECT_GCC=C:\MinGW\bin\g++.exe

+COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe

+Target: x86_64-w64-mingw32

+Configured with: ../gcc-6.3.0-mingw/configure --host=x86_64-w64-mingw32 --build=x86_64-unknown-linux-gnu --target=x86_64-w64-mingw32 --prefix=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gcc/6.3.0 --with-sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113 --with-gcc --with-gnu-ld --with-gnu-as --with-ld64=no --with-gmp=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gmp --with-mpfr=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpfr --with-mpc=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpc --with-cloog=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/cloog --with-diagnostics-color=auto-if-env --enable-cloog-backend=isl --enable-targets=i686-w64-mingw32,x86_64-w64-mingw32 --enable-lto --enable-languages=c,c++,fortran --enable-threads=win32 --enable-static --enable-shared=lto-plugin --enable-plugins --enable-ld=yes --enable-libquadmath --enable-libquadmath-support --enable-libgomp --disable-checking --disable-nls --disable-tls --disable-win32-registry

+Thread model: win32

+gcc version 6.3.0 (GCC) 

+COMPILER_PATH=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/;c:/mingw/bin/../libexec/gcc/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/

+EQ_LIBRARY_PATH=c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/;c:/mingw/bin/../lib/gcc/;C:/MinGW/x86_64-w64-mingw32/lib/../lib/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib/;C:/MinGW/x86_64-w64-mingw32/lib/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/;c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../

+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_1f637.exe' '-mtune=generic' '-march=x86-64'

+ c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/collect2.exe -plugin c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/liblto_plugin-0.dll -plugin-opt=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\SHERIF~1\AppData\Local\Temp\ccKl6NBI.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt --sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113 -m i386pep -Bdynamic -o cmTC_1f637.exe C:/MinGW/x86_64-w64-mingw32/lib/../lib/crt2.o c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtbegin.o -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0 -Lc:/mingw/bin/../lib/gcc -LC:/MinGW/x86_64-w64-mingw32/lib/../lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib -LC:/MinGW/x86_64-w64-mingw32/lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../.. --whole-archive CMakeFiles\cmTC_1f637.dir/objects.a --no-whole-archive --out-implib libcmTC_1f637.dll.a --major-image-version 0 --minor-image-version 0 -lstdc++ -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtend.o

+COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_1f637.exe' '-mtune=generic' '-march=x86-64'

+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+Parsed CXX implicit link information from above output:
+  link line regex: [^( *|.*[/\])(ld\.exe|([^/\]+-)?ld|collect2)[^/\]*( |$)]
+  ignore line: [Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp]
+  ignore line: []
+  ignore line: [Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_1f637/fast"]
+  ignore line: [C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_1f637.dir\build.make CMakeFiles/cmTC_1f637.dir/build]
+  ignore line: [mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp']
+  ignore line: [Building CXX object CMakeFiles/cmTC_1f637.dir/CMakeCXXCompilerABI.cpp.obj]
+  ignore line: [C:\MinGW\bin\g++.exe     -o CMakeFiles\cmTC_1f637.dir\CMakeCXXCompilerABI.cpp.obj -c "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\share\cmake-3.8\Modules\CMakeCXXCompilerABI.cpp"]
+  ignore line: [Linking CXX executable cmTC_1f637.exe]
+  ignore line: ["C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_1f637.dir\link.txt --verbose=1]
+  ignore line: ["C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_1f637.dir/objects.a]
+  ignore line: [C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_1f637.dir/objects.a @CMakeFiles\cmTC_1f637.dir\objects1.rsp]
+  ignore line: [C:\MinGW\bin\g++.exe     -v -Wl,--whole-archive CMakeFiles\cmTC_1f637.dir/objects.a -Wl,--no-whole-archive  -o cmTC_1f637.exe -Wl,--out-implib,libcmTC_1f637.dll.a -Wl,--major-image-version,0,--minor-image-version,0 ]
+  ignore line: [Built by Equation Solution <http://www.Equation.com>.]
+  ignore line: [Using built-in specs.]
+  ignore line: [COLLECT_GCC=C:\MinGW\bin\g++.exe]
+  ignore line: [COLLECT_LTO_WRAPPER=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe]
+  ignore line: [Target: x86_64-w64-mingw32]
+  ignore line: [Configured with: ../gcc-6.3.0-mingw/configure --host=x86_64-w64-mingw32 --build=x86_64-unknown-linux-gnu --target=x86_64-w64-mingw32 --prefix=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gcc/6.3.0 --with-sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113 --with-gcc --with-gnu-ld --with-gnu-as --with-ld64=no --with-gmp=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/gmp --with-mpfr=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpfr --with-mpc=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/mpc --with-cloog=/home/gfortran/gcc-home/binary/mingw32/native/x86_64/cloog --with-diagnostics-color=auto-if-env --enable-cloog-backend=isl --enable-targets=i686-w64-mingw32,x86_64-w64-mingw32 --enable-lto --enable-languages=c,c++,fortran --enable-threads=win32 --enable-static --enable-shared=lto-plugin --enable-plugins --enable-ld=yes --enable-libquadmath --enable-libquadmath-support --enable-libgomp --disable-checking --disable-nls --disable-tls --disable-win32-registry]
+  ignore line: [Thread model: win32]
+  ignore line: [gcc version 6.3.0 (GCC) ]
+  ignore line: [COMPILER_PATH=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/]
+  ignore line: [c:/mingw/bin/../libexec/gcc/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/bin/]
+  ignore line: [EQ_LIBRARY_PATH=c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/]
+  ignore line: [c:/mingw/bin/../lib/gcc/]
+  ignore line: [C:/MinGW/x86_64-w64-mingw32/lib/../lib/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib/]
+  ignore line: [C:/MinGW/x86_64-w64-mingw32/lib/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/]
+  ignore line: [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../]
+  ignore line: [COLLECT_GCC_OPTIONS='-v' '-o' 'cmTC_1f637.exe' '-mtune=generic' '-march=x86-64']
+  link line: [ c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/collect2.exe -plugin c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/liblto_plugin-0.dll -plugin-opt=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe -plugin-opt=-fresolution=C:\Users\SHERIF~1\AppData\Local\Temp\ccKl6NBI.res -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt -plugin-opt=-pass-through=-ladvapi32 -plugin-opt=-pass-through=-lshell32 -plugin-opt=-pass-through=-luser32 -plugin-opt=-pass-through=-lkernel32 -plugin-opt=-pass-through=-lmingw32 -plugin-opt=-pass-through=-lgcc -plugin-opt=-pass-through=-lmoldname -plugin-opt=-pass-through=-lmingwex -plugin-opt=-pass-through=-lmsvcrt --sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113 -m i386pep -Bdynamic -o cmTC_1f637.exe C:/MinGW/x86_64-w64-mingw32/lib/../lib/crt2.o c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtbegin.o -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0 -Lc:/mingw/bin/../lib/gcc -LC:/MinGW/x86_64-w64-mingw32/lib/../lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib -LC:/MinGW/x86_64-w64-mingw32/lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib -Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../.. --whole-archive CMakeFiles\cmTC_1f637.dir/objects.a --no-whole-archive --out-implib libcmTC_1f637.dll.a --major-image-version 0 --minor-image-version 0 -lstdc++ -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt -ladvapi32 -lshell32 -luser32 -lkernel32 -lmingw32 -lgcc -lmoldname -lmingwex -lmsvcrt c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtend.o]
+    arg [c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/collect2.exe] ==> ignore
+    arg [-plugin] ==> ignore
+    arg [c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/liblto_plugin-0.dll] ==> ignore
+    arg [-plugin-opt=c:/mingw/bin/../libexec/gcc/x86_64-w64-mingw32/6.3.0/lto-wrapper.exe] ==> ignore
+    arg [-plugin-opt=-fresolution=C:\Users\SHERIF~1\AppData\Local\Temp\ccKl6NBI.res] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmingw32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmoldname] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmingwex] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmsvcrt] ==> ignore
+    arg [-plugin-opt=-pass-through=-ladvapi32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lshell32] ==> ignore
+    arg [-plugin-opt=-pass-through=-luser32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lkernel32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmingw32] ==> ignore
+    arg [-plugin-opt=-pass-through=-lgcc] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmoldname] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmingwex] ==> ignore
+    arg [-plugin-opt=-pass-through=-lmsvcrt] ==> ignore
+    arg [--sysroot=/home/gfortran/gcc-home/binary/mingw32/cross/x86_64/gcc/7-20161113] ==> ignore
+    arg [-m] ==> ignore
+    arg [i386pep] ==> ignore
+    arg [-Bdynamic] ==> ignore
+    arg [-o] ==> ignore
+    arg [cmTC_1f637.exe] ==> ignore
+    arg [C:/MinGW/x86_64-w64-mingw32/lib/../lib/crt2.o] ==> ignore
+    arg [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtbegin.o] ==> ignore
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0]
+    arg [-Lc:/mingw/bin/../lib/gcc] ==> dir [c:/mingw/bin/../lib/gcc]
+    arg [-LC:/MinGW/x86_64-w64-mingw32/lib/../lib] ==> dir [C:/MinGW/x86_64-w64-mingw32/lib/../lib]
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib]
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib]
+    arg [-LC:/MinGW/x86_64-w64-mingw32/lib] ==> dir [C:/MinGW/x86_64-w64-mingw32/lib]
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib]
+    arg [-Lc:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../..] ==> dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../..]
+    arg [--whole-archive] ==> ignore
+    arg [CMakeFiles\cmTC_1f637.dir/objects.a] ==> ignore
+    arg [--no-whole-archive] ==> ignore
+    arg [--out-implib] ==> ignore
+    arg [libcmTC_1f637.dll.a] ==> ignore
+    arg [--major-image-version] ==> ignore
+    arg [0] ==> ignore
+    arg [--minor-image-version] ==> ignore
+    arg [0] ==> ignore
+    arg [-lstdc++] ==> lib [stdc++]
+    arg [-lmingw32] ==> lib [mingw32]
+    arg [-lgcc] ==> lib [gcc]
+    arg [-lmoldname] ==> lib [moldname]
+    arg [-lmingwex] ==> lib [mingwex]
+    arg [-lmsvcrt] ==> lib [msvcrt]
+    arg [-ladvapi32] ==> lib [advapi32]
+    arg [-lshell32] ==> lib [shell32]
+    arg [-luser32] ==> lib [user32]
+    arg [-lkernel32] ==> lib [kernel32]
+    arg [-lmingw32] ==> lib [mingw32]
+    arg [-lgcc] ==> lib [gcc]
+    arg [-lmoldname] ==> lib [moldname]
+    arg [-lmingwex] ==> lib [mingwex]
+    arg [-lmsvcrt] ==> lib [msvcrt]
+    arg [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/crtend.o] ==> ignore
+  remove lib [gcc]
+  remove lib [gcc]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0] ==> [C:/MinGW/lib/gcc/x86_64-w64-mingw32/6.3.0]
+  collapse library dir [c:/mingw/bin/../lib/gcc] ==> [C:/MinGW/lib/gcc]
+  collapse library dir [C:/MinGW/x86_64-w64-mingw32/lib/../lib] ==> [C:/MinGW/x86_64-w64-mingw32/lib]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib/../lib] ==> [C:/MinGW/x86_64-w64-mingw32/lib]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../lib] ==> [C:/MinGW/lib]
+  collapse library dir [C:/MinGW/x86_64-w64-mingw32/lib] ==> [C:/MinGW/x86_64-w64-mingw32/lib]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/lib] ==> [C:/MinGW/x86_64-w64-mingw32/lib]
+  collapse library dir [c:/mingw/bin/../lib/gcc/x86_64-w64-mingw32/6.3.0/../../..] ==> [C:/MinGW/lib]
+  implicit libs: [stdc++;mingw32;moldname;mingwex;msvcrt;advapi32;shell32;user32;kernel32;mingw32;moldname;mingwex;msvcrt]
+  implicit dirs: [C:/MinGW/lib/gcc/x86_64-w64-mingw32/6.3.0;C:/MinGW/lib/gcc;C:/MinGW/x86_64-w64-mingw32/lib;C:/MinGW/lib]
+  implicit fwks: []
+
+
+
+
+Detecting CXX [-std=c++1z] compiler features compiled with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_1f864/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_1f864.dir\build.make CMakeFiles/cmTC_1f864.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building CXX object CMakeFiles/cmTC_1f864.dir/feature_tests.cxx.obj

+C:\MinGW\bin\g++.exe    -std=c++1z -o CMakeFiles\cmTC_1f864.dir\feature_tests.cxx.obj -c C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\feature_tests.cxx

+Linking CXX executable cmTC_1f864.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_1f864.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_1f864.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_1f864.dir/objects.a @CMakeFiles\cmTC_1f864.dir\objects1.rsp
+C:\MinGW\bin\g++.exe      -Wl,--whole-archive CMakeFiles\cmTC_1f864.dir/objects.a -Wl,--no-whole-archive  -o cmTC_1f864.exe -Wl,--out-implib,libcmTC_1f864.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\cmTC_1f864.dir\linklibs.rsp
+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+    Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
+    Feature record: CXX_FEATURE:1cxx_alias_templates
+    Feature record: CXX_FEATURE:1cxx_alignas
+    Feature record: CXX_FEATURE:1cxx_alignof
+    Feature record: CXX_FEATURE:1cxx_attributes
+    Feature record: CXX_FEATURE:1cxx_attribute_deprecated
+    Feature record: CXX_FEATURE:1cxx_auto_type
+    Feature record: CXX_FEATURE:1cxx_binary_literals
+    Feature record: CXX_FEATURE:1cxx_constexpr
+    Feature record: CXX_FEATURE:1cxx_contextual_conversions
+    Feature record: CXX_FEATURE:1cxx_decltype
+    Feature record: CXX_FEATURE:1cxx_decltype_auto
+    Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
+    Feature record: CXX_FEATURE:1cxx_default_function_template_args
+    Feature record: CXX_FEATURE:1cxx_defaulted_functions
+    Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
+    Feature record: CXX_FEATURE:1cxx_delegating_constructors
+    Feature record: CXX_FEATURE:1cxx_deleted_functions
+    Feature record: CXX_FEATURE:1cxx_digit_separators
+    Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
+    Feature record: CXX_FEATURE:1cxx_explicit_conversions
+    Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
+    Feature record: CXX_FEATURE:1cxx_extern_templates
+    Feature record: CXX_FEATURE:1cxx_final
+    Feature record: CXX_FEATURE:1cxx_func_identifier
+    Feature record: CXX_FEATURE:1cxx_generalized_initializers
+    Feature record: CXX_FEATURE:1cxx_generic_lambdas
+    Feature record: CXX_FEATURE:1cxx_inheriting_constructors
+    Feature record: CXX_FEATURE:1cxx_inline_namespaces
+    Feature record: CXX_FEATURE:1cxx_lambdas
+    Feature record: CXX_FEATURE:1cxx_lambda_init_captures
+    Feature record: CXX_FEATURE:1cxx_local_type_template_args
+    Feature record: CXX_FEATURE:1cxx_long_long_type
+    Feature record: CXX_FEATURE:1cxx_noexcept
+    Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
+    Feature record: CXX_FEATURE:1cxx_nullptr
+    Feature record: CXX_FEATURE:1cxx_override
+    Feature record: CXX_FEATURE:1cxx_range_for
+    Feature record: CXX_FEATURE:1cxx_raw_string_literals
+    Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
+    Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
+    Feature record: CXX_FEATURE:1cxx_return_type_deduction
+    Feature record: CXX_FEATURE:1cxx_right_angle_brackets
+    Feature record: CXX_FEATURE:1cxx_rvalue_references
+    Feature record: CXX_FEATURE:1cxx_sizeof_member
+    Feature record: CXX_FEATURE:1cxx_static_assert
+    Feature record: CXX_FEATURE:1cxx_strong_enums
+    Feature record: CXX_FEATURE:1cxx_template_template_parameters
+    Feature record: CXX_FEATURE:1cxx_thread_local
+    Feature record: CXX_FEATURE:1cxx_trailing_return_types
+    Feature record: CXX_FEATURE:1cxx_unicode_literals
+    Feature record: CXX_FEATURE:1cxx_uniform_initialization
+    Feature record: CXX_FEATURE:1cxx_unrestricted_unions
+    Feature record: CXX_FEATURE:1cxx_user_literals
+    Feature record: CXX_FEATURE:1cxx_variable_templates
+    Feature record: CXX_FEATURE:1cxx_variadic_macros
+    Feature record: CXX_FEATURE:1cxx_variadic_templates
+
+
+Detecting CXX [-std=c++14] compiler features compiled with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_2d1e8/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_2d1e8.dir\build.make CMakeFiles/cmTC_2d1e8.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building CXX object CMakeFiles/cmTC_2d1e8.dir/feature_tests.cxx.obj

+C:\MinGW\bin\g++.exe    -std=c++14 -o CMakeFiles\cmTC_2d1e8.dir\feature_tests.cxx.obj -c C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\feature_tests.cxx

+Linking CXX executable cmTC_2d1e8.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_2d1e8.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_2d1e8.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_2d1e8.dir/objects.a @CMakeFiles\cmTC_2d1e8.dir\objects1.rsp
+C:\MinGW\bin\g++.exe      -Wl,--whole-archive CMakeFiles\cmTC_2d1e8.dir/objects.a -Wl,--no-whole-archive  -o cmTC_2d1e8.exe -Wl,--out-implib,libcmTC_2d1e8.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\cmTC_2d1e8.dir\linklibs.rsp
+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+    Feature record: CXX_FEATURE:1cxx_aggregate_default_initializers
+    Feature record: CXX_FEATURE:1cxx_alias_templates
+    Feature record: CXX_FEATURE:1cxx_alignas
+    Feature record: CXX_FEATURE:1cxx_alignof
+    Feature record: CXX_FEATURE:1cxx_attributes
+    Feature record: CXX_FEATURE:1cxx_attribute_deprecated
+    Feature record: CXX_FEATURE:1cxx_auto_type
+    Feature record: CXX_FEATURE:1cxx_binary_literals
+    Feature record: CXX_FEATURE:1cxx_constexpr
+    Feature record: CXX_FEATURE:1cxx_contextual_conversions
+    Feature record: CXX_FEATURE:1cxx_decltype
+    Feature record: CXX_FEATURE:1cxx_decltype_auto
+    Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
+    Feature record: CXX_FEATURE:1cxx_default_function_template_args
+    Feature record: CXX_FEATURE:1cxx_defaulted_functions
+    Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
+    Feature record: CXX_FEATURE:1cxx_delegating_constructors
+    Feature record: CXX_FEATURE:1cxx_deleted_functions
+    Feature record: CXX_FEATURE:1cxx_digit_separators
+    Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
+    Feature record: CXX_FEATURE:1cxx_explicit_conversions
+    Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
+    Feature record: CXX_FEATURE:1cxx_extern_templates
+    Feature record: CXX_FEATURE:1cxx_final
+    Feature record: CXX_FEATURE:1cxx_func_identifier
+    Feature record: CXX_FEATURE:1cxx_generalized_initializers
+    Feature record: CXX_FEATURE:1cxx_generic_lambdas
+    Feature record: CXX_FEATURE:1cxx_inheriting_constructors
+    Feature record: CXX_FEATURE:1cxx_inline_namespaces
+    Feature record: CXX_FEATURE:1cxx_lambdas
+    Feature record: CXX_FEATURE:1cxx_lambda_init_captures
+    Feature record: CXX_FEATURE:1cxx_local_type_template_args
+    Feature record: CXX_FEATURE:1cxx_long_long_type
+    Feature record: CXX_FEATURE:1cxx_noexcept
+    Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
+    Feature record: CXX_FEATURE:1cxx_nullptr
+    Feature record: CXX_FEATURE:1cxx_override
+    Feature record: CXX_FEATURE:1cxx_range_for
+    Feature record: CXX_FEATURE:1cxx_raw_string_literals
+    Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
+    Feature record: CXX_FEATURE:1cxx_relaxed_constexpr
+    Feature record: CXX_FEATURE:1cxx_return_type_deduction
+    Feature record: CXX_FEATURE:1cxx_right_angle_brackets
+    Feature record: CXX_FEATURE:1cxx_rvalue_references
+    Feature record: CXX_FEATURE:1cxx_sizeof_member
+    Feature record: CXX_FEATURE:1cxx_static_assert
+    Feature record: CXX_FEATURE:1cxx_strong_enums
+    Feature record: CXX_FEATURE:1cxx_template_template_parameters
+    Feature record: CXX_FEATURE:1cxx_thread_local
+    Feature record: CXX_FEATURE:1cxx_trailing_return_types
+    Feature record: CXX_FEATURE:1cxx_unicode_literals
+    Feature record: CXX_FEATURE:1cxx_uniform_initialization
+    Feature record: CXX_FEATURE:1cxx_unrestricted_unions
+    Feature record: CXX_FEATURE:1cxx_user_literals
+    Feature record: CXX_FEATURE:1cxx_variable_templates
+    Feature record: CXX_FEATURE:1cxx_variadic_macros
+    Feature record: CXX_FEATURE:1cxx_variadic_templates
+
+
+Detecting CXX [-std=c++11] compiler features compiled with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_bae69/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_bae69.dir\build.make CMakeFiles/cmTC_bae69.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building CXX object CMakeFiles/cmTC_bae69.dir/feature_tests.cxx.obj

+C:\MinGW\bin\g++.exe    -std=c++11 -o CMakeFiles\cmTC_bae69.dir\feature_tests.cxx.obj -c C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\feature_tests.cxx

+Linking CXX executable cmTC_bae69.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_bae69.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_bae69.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_bae69.dir/objects.a @CMakeFiles\cmTC_bae69.dir\objects1.rsp
+C:\MinGW\bin\g++.exe      -Wl,--whole-archive CMakeFiles\cmTC_bae69.dir/objects.a -Wl,--no-whole-archive  -o cmTC_bae69.exe -Wl,--out-implib,libcmTC_bae69.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\cmTC_bae69.dir\linklibs.rsp
+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+    Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
+    Feature record: CXX_FEATURE:1cxx_alias_templates
+    Feature record: CXX_FEATURE:1cxx_alignas
+    Feature record: CXX_FEATURE:1cxx_alignof
+    Feature record: CXX_FEATURE:1cxx_attributes
+    Feature record: CXX_FEATURE:0cxx_attribute_deprecated
+    Feature record: CXX_FEATURE:1cxx_auto_type
+    Feature record: CXX_FEATURE:0cxx_binary_literals
+    Feature record: CXX_FEATURE:1cxx_constexpr
+    Feature record: CXX_FEATURE:0cxx_contextual_conversions
+    Feature record: CXX_FEATURE:1cxx_decltype
+    Feature record: CXX_FEATURE:0cxx_decltype_auto
+    Feature record: CXX_FEATURE:1cxx_decltype_incomplete_return_types
+    Feature record: CXX_FEATURE:1cxx_default_function_template_args
+    Feature record: CXX_FEATURE:1cxx_defaulted_functions
+    Feature record: CXX_FEATURE:1cxx_defaulted_move_initializers
+    Feature record: CXX_FEATURE:1cxx_delegating_constructors
+    Feature record: CXX_FEATURE:1cxx_deleted_functions
+    Feature record: CXX_FEATURE:0cxx_digit_separators
+    Feature record: CXX_FEATURE:1cxx_enum_forward_declarations
+    Feature record: CXX_FEATURE:1cxx_explicit_conversions
+    Feature record: CXX_FEATURE:1cxx_extended_friend_declarations
+    Feature record: CXX_FEATURE:1cxx_extern_templates
+    Feature record: CXX_FEATURE:1cxx_final
+    Feature record: CXX_FEATURE:1cxx_func_identifier
+    Feature record: CXX_FEATURE:1cxx_generalized_initializers
+    Feature record: CXX_FEATURE:0cxx_generic_lambdas
+    Feature record: CXX_FEATURE:1cxx_inheriting_constructors
+    Feature record: CXX_FEATURE:1cxx_inline_namespaces
+    Feature record: CXX_FEATURE:1cxx_lambdas
+    Feature record: CXX_FEATURE:0cxx_lambda_init_captures
+    Feature record: CXX_FEATURE:1cxx_local_type_template_args
+    Feature record: CXX_FEATURE:1cxx_long_long_type
+    Feature record: CXX_FEATURE:1cxx_noexcept
+    Feature record: CXX_FEATURE:1cxx_nonstatic_member_init
+    Feature record: CXX_FEATURE:1cxx_nullptr
+    Feature record: CXX_FEATURE:1cxx_override
+    Feature record: CXX_FEATURE:1cxx_range_for
+    Feature record: CXX_FEATURE:1cxx_raw_string_literals
+    Feature record: CXX_FEATURE:1cxx_reference_qualified_functions
+    Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
+    Feature record: CXX_FEATURE:0cxx_return_type_deduction
+    Feature record: CXX_FEATURE:1cxx_right_angle_brackets
+    Feature record: CXX_FEATURE:1cxx_rvalue_references
+    Feature record: CXX_FEATURE:1cxx_sizeof_member
+    Feature record: CXX_FEATURE:1cxx_static_assert
+    Feature record: CXX_FEATURE:1cxx_strong_enums
+    Feature record: CXX_FEATURE:1cxx_template_template_parameters
+    Feature record: CXX_FEATURE:1cxx_thread_local
+    Feature record: CXX_FEATURE:1cxx_trailing_return_types
+    Feature record: CXX_FEATURE:1cxx_unicode_literals
+    Feature record: CXX_FEATURE:1cxx_uniform_initialization
+    Feature record: CXX_FEATURE:1cxx_unrestricted_unions
+    Feature record: CXX_FEATURE:1cxx_user_literals
+    Feature record: CXX_FEATURE:0cxx_variable_templates
+    Feature record: CXX_FEATURE:1cxx_variadic_macros
+    Feature record: CXX_FEATURE:1cxx_variadic_templates
+
+
+Detecting CXX [-std=c++98] compiler features compiled with the following output:
+Change Dir: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp
+
+Run Build Command:"C:/MinGW/bin/mingw32-make.exe" "cmTC_4d4ba/fast"
+C:/MinGW/bin/mingw32-make.exe -f CMakeFiles\cmTC_4d4ba.dir\build.make CMakeFiles/cmTC_4d4ba.dir/build

+mingw32-make.exe[1]: Entering directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+Building CXX object CMakeFiles/cmTC_4d4ba.dir/feature_tests.cxx.obj

+C:\MinGW\bin\g++.exe    -std=c++98 -o CMakeFiles\cmTC_4d4ba.dir\feature_tests.cxx.obj -c C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\feature_tests.cxx

+Linking CXX executable cmTC_4d4ba.exe

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E cmake_link_script CMakeFiles\cmTC_4d4ba.dir\link.txt --verbose=1

+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\cmTC_4d4ba.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\cmTC_4d4ba.dir/objects.a @CMakeFiles\cmTC_4d4ba.dir\objects1.rsp
+C:\MinGW\bin\g++.exe      -Wl,--whole-archive CMakeFiles\cmTC_4d4ba.dir/objects.a -Wl,--no-whole-archive  -o cmTC_4d4ba.exe -Wl,--out-implib,libcmTC_4d4ba.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\cmTC_4d4ba.dir\linklibs.rsp
+mingw32-make.exe[1]: Leaving directory 'C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/CMakeTmp'

+
+
+    Feature record: CXX_FEATURE:0cxx_aggregate_default_initializers
+    Feature record: CXX_FEATURE:0cxx_alias_templates
+    Feature record: CXX_FEATURE:0cxx_alignas
+    Feature record: CXX_FEATURE:0cxx_alignof
+    Feature record: CXX_FEATURE:0cxx_attributes
+    Feature record: CXX_FEATURE:0cxx_attribute_deprecated
+    Feature record: CXX_FEATURE:0cxx_auto_type
+    Feature record: CXX_FEATURE:0cxx_binary_literals
+    Feature record: CXX_FEATURE:0cxx_constexpr
+    Feature record: CXX_FEATURE:0cxx_contextual_conversions
+    Feature record: CXX_FEATURE:0cxx_decltype
+    Feature record: CXX_FEATURE:0cxx_decltype_auto
+    Feature record: CXX_FEATURE:0cxx_decltype_incomplete_return_types
+    Feature record: CXX_FEATURE:0cxx_default_function_template_args
+    Feature record: CXX_FEATURE:0cxx_defaulted_functions
+    Feature record: CXX_FEATURE:0cxx_defaulted_move_initializers
+    Feature record: CXX_FEATURE:0cxx_delegating_constructors
+    Feature record: CXX_FEATURE:0cxx_deleted_functions
+    Feature record: CXX_FEATURE:0cxx_digit_separators
+    Feature record: CXX_FEATURE:0cxx_enum_forward_declarations
+    Feature record: CXX_FEATURE:0cxx_explicit_conversions
+    Feature record: CXX_FEATURE:0cxx_extended_friend_declarations
+    Feature record: CXX_FEATURE:0cxx_extern_templates
+    Feature record: CXX_FEATURE:0cxx_final
+    Feature record: CXX_FEATURE:0cxx_func_identifier
+    Feature record: CXX_FEATURE:0cxx_generalized_initializers
+    Feature record: CXX_FEATURE:0cxx_generic_lambdas
+    Feature record: CXX_FEATURE:0cxx_inheriting_constructors
+    Feature record: CXX_FEATURE:0cxx_inline_namespaces
+    Feature record: CXX_FEATURE:0cxx_lambdas
+    Feature record: CXX_FEATURE:0cxx_lambda_init_captures
+    Feature record: CXX_FEATURE:0cxx_local_type_template_args
+    Feature record: CXX_FEATURE:0cxx_long_long_type
+    Feature record: CXX_FEATURE:0cxx_noexcept
+    Feature record: CXX_FEATURE:0cxx_nonstatic_member_init
+    Feature record: CXX_FEATURE:0cxx_nullptr
+    Feature record: CXX_FEATURE:0cxx_override
+    Feature record: CXX_FEATURE:0cxx_range_for
+    Feature record: CXX_FEATURE:0cxx_raw_string_literals
+    Feature record: CXX_FEATURE:0cxx_reference_qualified_functions
+    Feature record: CXX_FEATURE:0cxx_relaxed_constexpr
+    Feature record: CXX_FEATURE:0cxx_return_type_deduction
+    Feature record: CXX_FEATURE:0cxx_right_angle_brackets
+    Feature record: CXX_FEATURE:0cxx_rvalue_references
+    Feature record: CXX_FEATURE:0cxx_sizeof_member
+    Feature record: CXX_FEATURE:0cxx_static_assert
+    Feature record: CXX_FEATURE:0cxx_strong_enums
+    Feature record: CXX_FEATURE:1cxx_template_template_parameters
+    Feature record: CXX_FEATURE:0cxx_thread_local
+    Feature record: CXX_FEATURE:0cxx_trailing_return_types
+    Feature record: CXX_FEATURE:0cxx_unicode_literals
+    Feature record: CXX_FEATURE:0cxx_uniform_initialization
+    Feature record: CXX_FEATURE:0cxx_unrestricted_unions
+    Feature record: CXX_FEATURE:0cxx_user_literals
+    Feature record: CXX_FEATURE:0cxx_variable_templates
+    Feature record: CXX_FEATURE:0cxx_variadic_macros
+    Feature record: CXX_FEATURE:0cxx_variadic_templates
diff --git a/cmake-build-debug/CMakeFiles/Makefile.cmake b/cmake-build-debug/CMakeFiles/Makefile.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..1f62c22142664755941b7e0328267608eb33ed9f
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Makefile.cmake
@@ -0,0 +1,128 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "MinGW Makefiles" Generator, CMake Version 3.8
+
+# The generator used is:
+set(CMAKE_DEPENDS_GENERATOR "MinGW Makefiles")
+
+# The top level Makefile was generated from the following files:
+set(CMAKE_MAKEFILE_DEPENDS
+  "CMakeCache.txt"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeCCompiler.cmake.in"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeCCompilerABI.c"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeCInformation.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeCXXCompiler.cmake.in"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeCXXCompilerABI.cpp"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeCXXInformation.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeCommonLanguageInclude.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeCompilerIdDetection.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeDetermineCCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeDetermineCXXCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeDetermineCompileFeatures.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeDetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeDetermineCompilerABI.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeDetermineCompilerId.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeDetermineRCCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeDetermineSystem.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeFindBinUtils.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeFindCodeBlocks.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeGenericSystem.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeLanguageInformation.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeMinGWFindMake.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeParseImplicitLinkInfo.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeRCCompiler.cmake.in"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeRCInformation.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeSystem.cmake.in"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeSystemSpecificInformation.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeSystemSpecificInitialize.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeTestCCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeTestCXXCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeTestCompilerCommon.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/CMakeTestRCCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/ADSP-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/ARMCC-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/AppleClang-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Borland-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Bruce-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Clang-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Clang-DetermineCompilerInternal.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Comeau-CXX-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Compaq-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Compaq-CXX-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Cray-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Embarcadero-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Fujitsu-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/GHS-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/GNU-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/GNU-C-FeatureTests.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/GNU-C.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/GNU-CXX-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/GNU-CXX-FeatureTests.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/GNU-CXX.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/GNU.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/HP-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/HP-CXX-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/IAR-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/IBMCPP-C-DetermineVersionInternal.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/IBMCPP-CXX-DetermineVersionInternal.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Intel-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/MIPSpro-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/MSVC-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/NVIDIA-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/OpenWatcom-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/PGI-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/PathScale-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/SCO-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/SDCC-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/SunPro-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/SunPro-CXX-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/TI-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/TinyCC-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/VisualAge-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/VisualAge-CXX-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/Watcom-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/XL-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/XL-CXX-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/zOS-C-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Compiler/zOS-CXX-DetermineCompiler.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Internal/FeatureTesting.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Platform/Windows-Determine-CXX.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Platform/Windows-GNU-C-ABI.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Platform/Windows-GNU-C.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Platform/Windows-GNU-CXX-ABI.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Platform/Windows-GNU-CXX.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Platform/Windows-GNU.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Platform/Windows-windres.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Platform/Windows.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/Platform/WindowsPaths.cmake"
+  "C:/Program Files/JetBrains/CLion 2017.2.3/bin/cmake/share/cmake-3.8/Modules/ProcessorCount.cmake"
+  "../CMakeLists.txt"
+  "CMakeFiles/3.8.2/CMakeCCompiler.cmake"
+  "CMakeFiles/3.8.2/CMakeCXXCompiler.cmake"
+  "CMakeFiles/3.8.2/CMakeRCCompiler.cmake"
+  "CMakeFiles/3.8.2/CMakeSystem.cmake"
+  "CMakeFiles/feature_tests.c"
+  "CMakeFiles/feature_tests.cxx"
+  )
+
+# The corresponding makefile is:
+set(CMAKE_MAKEFILE_OUTPUTS
+  "Makefile"
+  "CMakeFiles/cmake.check_cache"
+  )
+
+# Byproducts of CMake generate step:
+set(CMAKE_MAKEFILE_PRODUCTS
+  "CMakeFiles/3.8.2/CMakeSystem.cmake"
+  "CMakeFiles/3.8.2/CMakeCCompiler.cmake"
+  "CMakeFiles/3.8.2/CMakeCXXCompiler.cmake"
+  "CMakeFiles/3.8.2/CMakeRCCompiler.cmake"
+  "CMakeFiles/3.8.2/CMakeCCompiler.cmake"
+  "CMakeFiles/3.8.2/CMakeCXXCompiler.cmake"
+  "CMakeFiles/CMakeDirectoryInformation.cmake"
+  )
+
+# Dependency information for all targets:
+set(CMAKE_DEPEND_INFO_FILES
+  "CMakeFiles/Project1.dir/DependInfo.cmake"
+  )
diff --git a/cmake-build-debug/CMakeFiles/Makefile2 b/cmake-build-debug/CMakeFiles/Makefile2
new file mode 100644
index 0000000000000000000000000000000000000000..e6e6b03ad3f6688a54c933adee1084f6fbf43a7c
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Makefile2
@@ -0,0 +1,107 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "MinGW Makefiles" Generator, CMake Version 3.8
+
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# The main recursive all target
+all:
+
+.PHONY : all
+
+# The main recursive preinstall target
+preinstall:
+
+.PHONY : preinstall
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+SHELL = cmd.exe
+
+# The CMake executable.
+CMAKE_COMMAND = "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe"
+
+# The command to remove a file.
+RM = "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = C:\Users\sherifsas\Desktop\Project2
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = C:\Users\sherifsas\Desktop\Project2\cmake-build-debug
+
+#=============================================================================
+# Target rules for target CMakeFiles/Project1.dir
+
+# All Build rule for target.
+CMakeFiles/Project1.dir/all:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/depend
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/build
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --progress-dir=C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles --progress-num=1,2,3,4,5 "Built target Project1"
+.PHONY : CMakeFiles/Project1.dir/all
+
+# Include target in all.
+all: CMakeFiles/Project1.dir/all
+
+.PHONY : all
+
+# Build rule for subdir invocation for target.
+CMakeFiles/Project1.dir/rule: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles 5
+	$(MAKE) -f CMakeFiles\Makefile2 CMakeFiles/Project1.dir/all
+	$(CMAKE_COMMAND) -E cmake_progress_start C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles 0
+.PHONY : CMakeFiles/Project1.dir/rule
+
+# Convenience name for target.
+Project1: CMakeFiles/Project1.dir/rule
+
+.PHONY : Project1
+
+# clean rule for target.
+CMakeFiles/Project1.dir/clean:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/clean
+.PHONY : CMakeFiles/Project1.dir/clean
+
+# clean rule for target.
+clean: CMakeFiles/Project1.dir/clean
+
+.PHONY : clean
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/cmake-build-debug/CMakeFiles/Project1.dir/DependInfo.cmake b/cmake-build-debug/CMakeFiles/Project1.dir/DependInfo.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..7d028df0aeebfb81729c615379f0100d8471d482
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Project1.dir/DependInfo.cmake
@@ -0,0 +1,23 @@
+# The set of languages for which implicit dependencies are needed:
+set(CMAKE_DEPENDS_LANGUAGES
+  "C"
+  )
+# The set of files for implicit dependencies of each language:
+set(CMAKE_DEPENDS_CHECK_C
+  "C:/Users/sherifsas/Desktop/Project2/cse561.c" "C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/Project1.dir/cse561.c.obj"
+  "C:/Users/sherifsas/Desktop/Project2/parse.c" "C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/Project1.dir/parse.c.obj"
+  "C:/Users/sherifsas/Desktop/Project2/run.c" "C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/Project1.dir/run.c.obj"
+  "C:/Users/sherifsas/Desktop/Project2/util.c" "C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/Project1.dir/util.c.obj"
+  )
+set(CMAKE_C_COMPILER_ID "GNU")
+
+# The include file search paths:
+set(CMAKE_C_TARGET_INCLUDE_PATH
+  )
+
+# Targets to which this target links.
+set(CMAKE_TARGET_LINKED_INFO_FILES
+  )
+
+# Fortran module output directory.
+set(CMAKE_Fortran_TARGET_MODULE_DIR "")
diff --git a/cmake-build-debug/CMakeFiles/Project1.dir/build.make b/cmake-build-debug/CMakeFiles/Project1.dir/build.make
new file mode 100644
index 0000000000000000000000000000000000000000..65daf79aa1cdf95363de9b573a5d4c31eb71b822
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Project1.dir/build.make
@@ -0,0 +1,195 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "MinGW Makefiles" Generator, CMake Version 3.8
+
+# Delete rule output on recipe failure.
+.DELETE_ON_ERROR:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+SHELL = cmd.exe
+
+# The CMake executable.
+CMAKE_COMMAND = "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe"
+
+# The command to remove a file.
+RM = "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = C:\Users\sherifsas\Desktop\Project2
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = C:\Users\sherifsas\Desktop\Project2\cmake-build-debug
+
+# Include any dependencies generated for this target.
+include CMakeFiles/Project1.dir/depend.make
+
+# Include the progress variables for this target.
+include CMakeFiles/Project1.dir/progress.make
+
+# Include the compile flags for this target's objects.
+include CMakeFiles/Project1.dir/flags.make
+
+CMakeFiles/Project1.dir/cse561.c.obj: CMakeFiles/Project1.dir/flags.make
+CMakeFiles/Project1.dir/cse561.c.obj: ../cse561.c
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles --progress-num=$(CMAKE_PROGRESS_1) "Building C object CMakeFiles/Project1.dir/cse561.c.obj"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles\Project1.dir\cse561.c.obj   -c C:\Users\sherifsas\Desktop\Project2\cse561.c
+
+CMakeFiles/Project1.dir/cse561.c.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/Project1.dir/cse561.c.i"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E C:\Users\sherifsas\Desktop\Project2\cse561.c > CMakeFiles\Project1.dir\cse561.c.i
+
+CMakeFiles/Project1.dir/cse561.c.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/Project1.dir/cse561.c.s"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S C:\Users\sherifsas\Desktop\Project2\cse561.c -o CMakeFiles\Project1.dir\cse561.c.s
+
+CMakeFiles/Project1.dir/cse561.c.obj.requires:
+
+.PHONY : CMakeFiles/Project1.dir/cse561.c.obj.requires
+
+CMakeFiles/Project1.dir/cse561.c.obj.provides: CMakeFiles/Project1.dir/cse561.c.obj.requires
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/cse561.c.obj.provides.build
+.PHONY : CMakeFiles/Project1.dir/cse561.c.obj.provides
+
+CMakeFiles/Project1.dir/cse561.c.obj.provides.build: CMakeFiles/Project1.dir/cse561.c.obj
+
+
+CMakeFiles/Project1.dir/parse.c.obj: CMakeFiles/Project1.dir/flags.make
+CMakeFiles/Project1.dir/parse.c.obj: ../parse.c
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles --progress-num=$(CMAKE_PROGRESS_2) "Building C object CMakeFiles/Project1.dir/parse.c.obj"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles\Project1.dir\parse.c.obj   -c C:\Users\sherifsas\Desktop\Project2\parse.c
+
+CMakeFiles/Project1.dir/parse.c.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/Project1.dir/parse.c.i"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E C:\Users\sherifsas\Desktop\Project2\parse.c > CMakeFiles\Project1.dir\parse.c.i
+
+CMakeFiles/Project1.dir/parse.c.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/Project1.dir/parse.c.s"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S C:\Users\sherifsas\Desktop\Project2\parse.c -o CMakeFiles\Project1.dir\parse.c.s
+
+CMakeFiles/Project1.dir/parse.c.obj.requires:
+
+.PHONY : CMakeFiles/Project1.dir/parse.c.obj.requires
+
+CMakeFiles/Project1.dir/parse.c.obj.provides: CMakeFiles/Project1.dir/parse.c.obj.requires
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/parse.c.obj.provides.build
+.PHONY : CMakeFiles/Project1.dir/parse.c.obj.provides
+
+CMakeFiles/Project1.dir/parse.c.obj.provides.build: CMakeFiles/Project1.dir/parse.c.obj
+
+
+CMakeFiles/Project1.dir/run.c.obj: CMakeFiles/Project1.dir/flags.make
+CMakeFiles/Project1.dir/run.c.obj: ../run.c
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles --progress-num=$(CMAKE_PROGRESS_3) "Building C object CMakeFiles/Project1.dir/run.c.obj"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles\Project1.dir\run.c.obj   -c C:\Users\sherifsas\Desktop\Project2\run.c
+
+CMakeFiles/Project1.dir/run.c.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/Project1.dir/run.c.i"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E C:\Users\sherifsas\Desktop\Project2\run.c > CMakeFiles\Project1.dir\run.c.i
+
+CMakeFiles/Project1.dir/run.c.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/Project1.dir/run.c.s"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S C:\Users\sherifsas\Desktop\Project2\run.c -o CMakeFiles\Project1.dir\run.c.s
+
+CMakeFiles/Project1.dir/run.c.obj.requires:
+
+.PHONY : CMakeFiles/Project1.dir/run.c.obj.requires
+
+CMakeFiles/Project1.dir/run.c.obj.provides: CMakeFiles/Project1.dir/run.c.obj.requires
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/run.c.obj.provides.build
+.PHONY : CMakeFiles/Project1.dir/run.c.obj.provides
+
+CMakeFiles/Project1.dir/run.c.obj.provides.build: CMakeFiles/Project1.dir/run.c.obj
+
+
+CMakeFiles/Project1.dir/util.c.obj: CMakeFiles/Project1.dir/flags.make
+CMakeFiles/Project1.dir/util.c.obj: ../util.c
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --progress-dir=C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles --progress-num=$(CMAKE_PROGRESS_4) "Building C object CMakeFiles/Project1.dir/util.c.obj"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -o CMakeFiles\Project1.dir\util.c.obj   -c C:\Users\sherifsas\Desktop\Project2\util.c
+
+CMakeFiles/Project1.dir/util.c.i: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Preprocessing C source to CMakeFiles/Project1.dir/util.c.i"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -E C:\Users\sherifsas\Desktop\Project2\util.c > CMakeFiles\Project1.dir\util.c.i
+
+CMakeFiles/Project1.dir/util.c.s: cmake_force
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green "Compiling C source to assembly CMakeFiles/Project1.dir/util.c.s"
+	C:\MinGW\bin\gcc.exe $(C_DEFINES) $(C_INCLUDES) $(C_FLAGS) -S C:\Users\sherifsas\Desktop\Project2\util.c -o CMakeFiles\Project1.dir\util.c.s
+
+CMakeFiles/Project1.dir/util.c.obj.requires:
+
+.PHONY : CMakeFiles/Project1.dir/util.c.obj.requires
+
+CMakeFiles/Project1.dir/util.c.obj.provides: CMakeFiles/Project1.dir/util.c.obj.requires
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/util.c.obj.provides.build
+.PHONY : CMakeFiles/Project1.dir/util.c.obj.provides
+
+CMakeFiles/Project1.dir/util.c.obj.provides.build: CMakeFiles/Project1.dir/util.c.obj
+
+
+# Object files for target Project1
+Project1_OBJECTS = \
+"CMakeFiles/Project1.dir/cse561.c.obj" \
+"CMakeFiles/Project1.dir/parse.c.obj" \
+"CMakeFiles/Project1.dir/run.c.obj" \
+"CMakeFiles/Project1.dir/util.c.obj"
+
+# External object files for target Project1
+Project1_EXTERNAL_OBJECTS =
+
+Project1.exe: CMakeFiles/Project1.dir/cse561.c.obj
+Project1.exe: CMakeFiles/Project1.dir/parse.c.obj
+Project1.exe: CMakeFiles/Project1.dir/run.c.obj
+Project1.exe: CMakeFiles/Project1.dir/util.c.obj
+Project1.exe: CMakeFiles/Project1.dir/build.make
+Project1.exe: CMakeFiles/Project1.dir/linklibs.rsp
+Project1.exe: CMakeFiles/Project1.dir/objects1.rsp
+Project1.exe: CMakeFiles/Project1.dir/link.txt
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --green --bold --progress-dir=C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles --progress-num=$(CMAKE_PROGRESS_5) "Linking C executable Project1.exe"
+	$(CMAKE_COMMAND) -E cmake_link_script CMakeFiles\Project1.dir\link.txt --verbose=$(VERBOSE)
+
+# Rule to build all files generated by this target.
+CMakeFiles/Project1.dir/build: Project1.exe
+
+.PHONY : CMakeFiles/Project1.dir/build
+
+CMakeFiles/Project1.dir/requires: CMakeFiles/Project1.dir/cse561.c.obj.requires
+CMakeFiles/Project1.dir/requires: CMakeFiles/Project1.dir/parse.c.obj.requires
+CMakeFiles/Project1.dir/requires: CMakeFiles/Project1.dir/run.c.obj.requires
+CMakeFiles/Project1.dir/requires: CMakeFiles/Project1.dir/util.c.obj.requires
+
+.PHONY : CMakeFiles/Project1.dir/requires
+
+CMakeFiles/Project1.dir/clean:
+	$(CMAKE_COMMAND) -P CMakeFiles\Project1.dir\cmake_clean.cmake
+.PHONY : CMakeFiles/Project1.dir/clean
+
+CMakeFiles/Project1.dir/depend:
+	$(CMAKE_COMMAND) -E cmake_depends "MinGW Makefiles" C:\Users\sherifsas\Desktop\Project2 C:\Users\sherifsas\Desktop\Project2 C:\Users\sherifsas\Desktop\Project2\cmake-build-debug C:\Users\sherifsas\Desktop\Project2\cmake-build-debug C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\Project1.dir\DependInfo.cmake --color=$(COLOR)
+.PHONY : CMakeFiles/Project1.dir/depend
+
diff --git a/cmake-build-debug/CMakeFiles/Project1.dir/cmake_clean.cmake b/cmake-build-debug/CMakeFiles/Project1.dir/cmake_clean.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..2e0d89b4a356c0dd52b6fc11cbdb391ac9815481
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Project1.dir/cmake_clean.cmake
@@ -0,0 +1,15 @@
+file(REMOVE_RECURSE
+  "CMakeFiles/Project1.dir/cse561.c.obj"
+  "CMakeFiles/Project1.dir/parse.c.obj"
+  "CMakeFiles/Project1.dir/run.c.obj"
+  "CMakeFiles/Project1.dir/util.c.obj"
+  "Project1.pdb"
+  "Project1.exe"
+  "Project1.exe.manifest"
+  "libProject1.dll.a"
+)
+
+# Per-language clean rules from dependency scanning.
+foreach(lang C)
+  include(CMakeFiles/Project1.dir/cmake_clean_${lang}.cmake OPTIONAL)
+endforeach()
diff --git a/cmake-build-debug/CMakeFiles/Project1.dir/depend.make b/cmake-build-debug/CMakeFiles/Project1.dir/depend.make
new file mode 100644
index 0000000000000000000000000000000000000000..a086e064bcb9b536f537628c5e5965e86e9c0a10
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Project1.dir/depend.make
@@ -0,0 +1,2 @@
+# Empty dependencies file for Project1.
+# This may be replaced when dependencies are built.
diff --git a/cmake-build-debug/CMakeFiles/Project1.dir/flags.make b/cmake-build-debug/CMakeFiles/Project1.dir/flags.make
new file mode 100644
index 0000000000000000000000000000000000000000..4ec45a0412fb37c07563cf11e1285a8b743584fc
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Project1.dir/flags.make
@@ -0,0 +1,10 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "MinGW Makefiles" Generator, CMake Version 3.8
+
+# compile C with C:/MinGW/bin/gcc.exe
+C_FLAGS = -g  
+
+C_DEFINES = 
+
+C_INCLUDES = 
+
diff --git a/cmake-build-debug/CMakeFiles/Project1.dir/link.txt b/cmake-build-debug/CMakeFiles/Project1.dir/link.txt
new file mode 100644
index 0000000000000000000000000000000000000000..0037f819372417bed79afd9beace2d578d92e11d
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Project1.dir/link.txt
@@ -0,0 +1,3 @@
+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f CMakeFiles\Project1.dir/objects.a
+C:\MinGW\bin\ar.exe cr CMakeFiles\Project1.dir/objects.a @CMakeFiles\Project1.dir\objects1.rsp
+C:\MinGW\bin\gcc.exe -g   -Wl,--whole-archive CMakeFiles\Project1.dir/objects.a -Wl,--no-whole-archive  -o Project1.exe -Wl,--out-implib,libProject1.dll.a -Wl,--major-image-version,0,--minor-image-version,0 @CMakeFiles\Project1.dir\linklibs.rsp
diff --git a/cmake-build-debug/CMakeFiles/Project1.dir/linklibs.rsp b/cmake-build-debug/CMakeFiles/Project1.dir/linklibs.rsp
new file mode 100644
index 0000000000000000000000000000000000000000..a5e94317048009ac733d1670b2f6b26a301c75a4
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Project1.dir/linklibs.rsp
@@ -0,0 +1 @@
+-lkernel32 -luser32 -lgdi32 -lwinspool -lshell32 -lole32 -loleaut32 -luuid -lcomdlg32 -ladvapi32 
diff --git a/cmake-build-debug/CMakeFiles/Project1.dir/objects1.rsp b/cmake-build-debug/CMakeFiles/Project1.dir/objects1.rsp
new file mode 100644
index 0000000000000000000000000000000000000000..fab62273d64d12e415075ee4c117d4d215b4d218
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Project1.dir/objects1.rsp
@@ -0,0 +1 @@
+CMakeFiles/Project1.dir/cse561.c.obj CMakeFiles/Project1.dir/parse.c.obj CMakeFiles/Project1.dir/run.c.obj CMakeFiles/Project1.dir/util.c.obj
diff --git a/cmake-build-debug/CMakeFiles/Project1.dir/progress.make b/cmake-build-debug/CMakeFiles/Project1.dir/progress.make
new file mode 100644
index 0000000000000000000000000000000000000000..33e6bffba3730113ad4bec358b7c8a00b5a67431
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/Project1.dir/progress.make
@@ -0,0 +1,6 @@
+CMAKE_PROGRESS_1 = 1
+CMAKE_PROGRESS_2 = 2
+CMAKE_PROGRESS_3 = 3
+CMAKE_PROGRESS_4 = 4
+CMAKE_PROGRESS_5 = 5
+
diff --git a/cmake-build-debug/CMakeFiles/TargetDirectories.txt b/cmake-build-debug/CMakeFiles/TargetDirectories.txt
new file mode 100644
index 0000000000000000000000000000000000000000..6854edce5203f8508fcea4a92435f4c54bbed167
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/TargetDirectories.txt
@@ -0,0 +1,3 @@
+C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/rebuild_cache.dir
+C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/Project1.dir
+C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/CMakeFiles/edit_cache.dir
diff --git a/cmake-build-debug/CMakeFiles/clion-environment.txt b/cmake-build-debug/CMakeFiles/clion-environment.txt
new file mode 100644
index 0000000000000000000000000000000000000000..85141ed1cdff34690d2fb2c3ab6937ee37fb251d
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/clion-environment.txt
@@ -0,0 +1,3 @@
+ToolSet: w64 5.0@C:\MinGW
+Options: 
+CMake: 3.8.2@C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe
diff --git a/cmake-build-debug/CMakeFiles/clion-log.txt b/cmake-build-debug/CMakeFiles/clion-log.txt
new file mode 100644
index 0000000000000000000000000000000000000000..384ab09be61c0a20e99f60eb3f97684227e78848
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/clion-log.txt
@@ -0,0 +1,18 @@
+"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug -G "CodeBlocks - MinGW Makefiles" C:\Users\sherifsas\Desktop\Project2
+-- The C compiler identification is GNU 6.3.0
+-- The CXX compiler identification is GNU 6.3.0
+-- Check for working C compiler: C:/MinGW/bin/gcc.exe
+-- Check for working C compiler: C:/MinGW/bin/gcc.exe -- works
+-- Detecting C compiler ABI info
+-- Detecting C compiler ABI info - done
+-- Detecting C compile features
+-- Detecting C compile features - done
+-- Check for working CXX compiler: C:/MinGW/bin/g++.exe
+-- Check for working CXX compiler: C:/MinGW/bin/g++.exe -- works
+-- Detecting CXX compiler ABI info
+-- Detecting CXX compiler ABI info - done
+-- Detecting CXX compile features
+-- Detecting CXX compile features - done
+-- Configuring done
+-- Generating done
+-- Build files have been written to: C:/Users/sherifsas/Desktop/Project2/cmake-build-debug
diff --git a/cmake-build-debug/CMakeFiles/cmake.check_cache b/cmake-build-debug/CMakeFiles/cmake.check_cache
new file mode 100644
index 0000000000000000000000000000000000000000..3dccd731726d7faa8b29d8d7dba3b981a53ca497
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/cmake.check_cache
@@ -0,0 +1 @@
+# This file is generated by cmake for dependency checking of the CMakeCache.txt file
diff --git a/cmake-build-debug/CMakeFiles/feature_tests.bin b/cmake-build-debug/CMakeFiles/feature_tests.bin
new file mode 100644
index 0000000000000000000000000000000000000000..480c20546af3e314aecf305b19d6a5feb0b3bf92
Binary files /dev/null and b/cmake-build-debug/CMakeFiles/feature_tests.bin differ
diff --git a/cmake-build-debug/CMakeFiles/feature_tests.c b/cmake-build-debug/CMakeFiles/feature_tests.c
new file mode 100644
index 0000000000000000000000000000000000000000..83e86dd8cd85f9f7554f51122b8cd08412ec01f2
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/feature_tests.c
@@ -0,0 +1,34 @@
+
+  const char features[] = {"\n"
+"C_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 304
+"1"
+#else
+"0"
+#endif
+"c_function_prototypes\n"
+"C_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 304 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+"1"
+#else
+"0"
+#endif
+"c_restrict\n"
+"C_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 201000L
+"1"
+#else
+"0"
+#endif
+"c_static_assert\n"
+"C_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 304 && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
+"1"
+#else
+"0"
+#endif
+"c_variadic_macros\n"
+
+};
+
+int main(int argc, char** argv) { (void)argv; return features[argc]; }
diff --git a/cmake-build-debug/CMakeFiles/feature_tests.cxx b/cmake-build-debug/CMakeFiles/feature_tests.cxx
new file mode 100644
index 0000000000000000000000000000000000000000..b93418c6ed69feaf1b5c2feb9592bbdb5a5f042c
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/feature_tests.cxx
@@ -0,0 +1,405 @@
+
+  const char features[] = {"\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
+"1"
+#else
+"0"
+#endif
+"cxx_aggregate_default_initializers\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_alias_templates\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_alignas\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_alignof\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_attributes\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_attribute_deprecated\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_auto_type\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_binary_literals\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_constexpr\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_contextual_conversions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_decltype\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_decltype_auto\n"
+"CXX_FEATURE:"
+#if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_decltype_incomplete_return_types\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_default_function_template_args\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_defaulted_functions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_defaulted_move_initializers\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_delegating_constructors\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_deleted_functions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_digit_separators\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_enum_forward_declarations\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_explicit_conversions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_extended_friend_declarations\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_extern_templates\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_final\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_func_identifier\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_generalized_initializers\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_generic_lambdas\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_inheriting_constructors\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_inline_namespaces\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_lambdas\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_lambda_init_captures\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_local_type_template_args\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_long_long_type\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_noexcept\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_nonstatic_member_init\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_nullptr\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_override\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_range_for\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 405 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_raw_string_literals\n"
+"CXX_FEATURE:"
+#if ((__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) >= 40801) && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_reference_qualified_functions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
+"1"
+#else
+"0"
+#endif
+"cxx_relaxed_constexpr\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409 && __cplusplus > 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_return_type_deduction\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_right_angle_brackets\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_rvalue_references\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_sizeof_member\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_static_assert\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_strong_enums\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && __cplusplus
+"1"
+#else
+"0"
+#endif
+"cxx_template_template_parameters\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 408 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_thread_local\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_trailing_return_types\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_unicode_literals\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_uniform_initialization\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 406 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_unrestricted_unions\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 407 && __cplusplus >= 201103L
+"1"
+#else
+"0"
+#endif
+"cxx_user_literals\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 500 && __cplusplus >= 201402L
+"1"
+#else
+"0"
+#endif
+"cxx_variable_templates\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_variadic_macros\n"
+"CXX_FEATURE:"
+#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 404 && (__cplusplus >= 201103L || (defined(__GXX_EXPERIMENTAL_CXX0X__) && __GXX_EXPERIMENTAL_CXX0X__))
+"1"
+#else
+"0"
+#endif
+"cxx_variadic_templates\n"
+
+};
+
+int main(int argc, char** argv) { (void)argv; return features[argc]; }
diff --git a/cmake-build-debug/CMakeFiles/progress.marks b/cmake-build-debug/CMakeFiles/progress.marks
new file mode 100644
index 0000000000000000000000000000000000000000..7ed6ff82de6bcc2a78243fc9c54d3ef5ac14da69
--- /dev/null
+++ b/cmake-build-debug/CMakeFiles/progress.marks
@@ -0,0 +1 @@
+5
diff --git a/cmake-build-debug/Makefile b/cmake-build-debug/Makefile
new file mode 100644
index 0000000000000000000000000000000000000000..ddf7983098b11605dd823ace8f87e4f5eecf74cb
--- /dev/null
+++ b/cmake-build-debug/Makefile
@@ -0,0 +1,267 @@
+# CMAKE generated file: DO NOT EDIT!
+# Generated by "MinGW Makefiles" Generator, CMake Version 3.8
+
+# Default target executed when no arguments are given to make.
+default_target: all
+
+.PHONY : default_target
+
+# Allow only one "make -f Makefile2" at a time, but pass parallelism.
+.NOTPARALLEL:
+
+
+#=============================================================================
+# Special targets provided by cmake.
+
+# Disable implicit rules so canonical targets will work.
+.SUFFIXES:
+
+
+# Remove some rules from gmake that .SUFFIXES does not remove.
+SUFFIXES =
+
+.SUFFIXES: .hpux_make_needs_suffix_list
+
+
+# Suppress display of executed commands.
+$(VERBOSE).SILENT:
+
+
+# A target that is always out of date.
+cmake_force:
+
+.PHONY : cmake_force
+
+#=============================================================================
+# Set environment variables for the build.
+
+SHELL = cmd.exe
+
+# The CMake executable.
+CMAKE_COMMAND = "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe"
+
+# The command to remove a file.
+RM = "C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E remove -f
+
+# Escaping for special characters.
+EQUALS = =
+
+# The top-level source directory on which CMake was run.
+CMAKE_SOURCE_DIR = C:\Users\sherifsas\Desktop\Project2
+
+# The top-level build directory on which CMake was run.
+CMAKE_BINARY_DIR = C:\Users\sherifsas\Desktop\Project2\cmake-build-debug
+
+#=============================================================================
+# Targets provided globally by CMake.
+
+# Special rule for the target rebuild_cache
+rebuild_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "Running CMake to regenerate build system..."
+	"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR)
+.PHONY : rebuild_cache
+
+# Special rule for the target rebuild_cache
+rebuild_cache/fast: rebuild_cache
+
+.PHONY : rebuild_cache/fast
+
+# Special rule for the target edit_cache
+edit_cache:
+	@$(CMAKE_COMMAND) -E cmake_echo_color --switch=$(COLOR) --cyan "No interactive CMake dialog available..."
+	"C:\Program Files\JetBrains\CLion 2017.2.3\bin\cmake\bin\cmake.exe" -E echo "No interactive CMake dialog available."
+.PHONY : edit_cache
+
+# Special rule for the target edit_cache
+edit_cache/fast: edit_cache
+
+.PHONY : edit_cache/fast
+
+# The main all target
+all: cmake_check_build_system
+	$(CMAKE_COMMAND) -E cmake_progress_start C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles\progress.marks
+	$(MAKE) -f CMakeFiles\Makefile2 all
+	$(CMAKE_COMMAND) -E cmake_progress_start C:\Users\sherifsas\Desktop\Project2\cmake-build-debug\CMakeFiles 0
+.PHONY : all
+
+# The main clean target
+clean:
+	$(MAKE) -f CMakeFiles\Makefile2 clean
+.PHONY : clean
+
+# The main clean target
+clean/fast: clean
+
+.PHONY : clean/fast
+
+# Prepare targets for installation.
+preinstall: all
+	$(MAKE) -f CMakeFiles\Makefile2 preinstall
+.PHONY : preinstall
+
+# Prepare targets for installation.
+preinstall/fast:
+	$(MAKE) -f CMakeFiles\Makefile2 preinstall
+.PHONY : preinstall/fast
+
+# clear depends
+depend:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 1
+.PHONY : depend
+
+#=============================================================================
+# Target rules for targets named Project1
+
+# Build rule for target.
+Project1: cmake_check_build_system
+	$(MAKE) -f CMakeFiles\Makefile2 Project1
+.PHONY : Project1
+
+# fast build rule for target.
+Project1/fast:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/build
+.PHONY : Project1/fast
+
+cse561.obj: cse561.c.obj
+
+.PHONY : cse561.obj
+
+# target to build an object file
+cse561.c.obj:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/cse561.c.obj
+.PHONY : cse561.c.obj
+
+cse561.i: cse561.c.i
+
+.PHONY : cse561.i
+
+# target to preprocess a source file
+cse561.c.i:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/cse561.c.i
+.PHONY : cse561.c.i
+
+cse561.s: cse561.c.s
+
+.PHONY : cse561.s
+
+# target to generate assembly for a file
+cse561.c.s:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/cse561.c.s
+.PHONY : cse561.c.s
+
+parse.obj: parse.c.obj
+
+.PHONY : parse.obj
+
+# target to build an object file
+parse.c.obj:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/parse.c.obj
+.PHONY : parse.c.obj
+
+parse.i: parse.c.i
+
+.PHONY : parse.i
+
+# target to preprocess a source file
+parse.c.i:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/parse.c.i
+.PHONY : parse.c.i
+
+parse.s: parse.c.s
+
+.PHONY : parse.s
+
+# target to generate assembly for a file
+parse.c.s:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/parse.c.s
+.PHONY : parse.c.s
+
+run.obj: run.c.obj
+
+.PHONY : run.obj
+
+# target to build an object file
+run.c.obj:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/run.c.obj
+.PHONY : run.c.obj
+
+run.i: run.c.i
+
+.PHONY : run.i
+
+# target to preprocess a source file
+run.c.i:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/run.c.i
+.PHONY : run.c.i
+
+run.s: run.c.s
+
+.PHONY : run.s
+
+# target to generate assembly for a file
+run.c.s:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/run.c.s
+.PHONY : run.c.s
+
+util.obj: util.c.obj
+
+.PHONY : util.obj
+
+# target to build an object file
+util.c.obj:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/util.c.obj
+.PHONY : util.c.obj
+
+util.i: util.c.i
+
+.PHONY : util.i
+
+# target to preprocess a source file
+util.c.i:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/util.c.i
+.PHONY : util.c.i
+
+util.s: util.c.s
+
+.PHONY : util.s
+
+# target to generate assembly for a file
+util.c.s:
+	$(MAKE) -f CMakeFiles\Project1.dir\build.make CMakeFiles/Project1.dir/util.c.s
+.PHONY : util.c.s
+
+# Help Target
+help:
+	@echo The following are some of the valid targets for this Makefile:
+	@echo ... all (the default if no target is provided)
+	@echo ... clean
+	@echo ... depend
+	@echo ... rebuild_cache
+	@echo ... Project1
+	@echo ... edit_cache
+	@echo ... cse561.obj
+	@echo ... cse561.i
+	@echo ... cse561.s
+	@echo ... parse.obj
+	@echo ... parse.i
+	@echo ... parse.s
+	@echo ... run.obj
+	@echo ... run.i
+	@echo ... run.s
+	@echo ... util.obj
+	@echo ... util.i
+	@echo ... util.s
+.PHONY : help
+
+
+
+#=============================================================================
+# Special targets to cleanup operation of make.
+
+# Special rule to run CMake to check the build system integrity.
+# No rule that depends on this can have commands that come from listfiles
+# because they might be regenerated.
+cmake_check_build_system:
+	$(CMAKE_COMMAND) -H$(CMAKE_SOURCE_DIR) -B$(CMAKE_BINARY_DIR) --check-build-system CMakeFiles\Makefile.cmake 0
+.PHONY : cmake_check_build_system
+
diff --git a/cmake-build-debug/Project1.cbp b/cmake-build-debug/Project1.cbp
new file mode 100644
index 0000000000000000000000000000000000000000..50a6807cb35e0ba1b5cc934a15b25411eaa7b87d
--- /dev/null
+++ b/cmake-build-debug/Project1.cbp
@@ -0,0 +1,108 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<CodeBlocks_project_file>
+	<FileVersion major="1" minor="6"/>
+	<Project>
+		<Option title="Project1"/>
+		<Option makefile_is_custom="1"/>
+		<Option compiler="gcc"/>
+		<Option virtualFolders="CMake Files\;"/>
+		<Build>
+			<Target title="all">
+				<Option working_dir="C:/Users/sherifsas/Desktop/Project2/cmake-build-debug"/>
+				<Option type="4"/>
+				<MakeCommands>
+					<Build command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 all"/>
+					<CompileFile command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
+					<Clean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+					<DistClean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+				</MakeCommands>
+			</Target>
+			<Target title="rebuild_cache">
+				<Option working_dir="C:/Users/sherifsas/Desktop/Project2/cmake-build-debug"/>
+				<Option type="4"/>
+				<MakeCommands>
+					<Build command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 rebuild_cache"/>
+					<CompileFile command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
+					<Clean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+					<DistClean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+				</MakeCommands>
+			</Target>
+			<Target title="Project1">
+				<Option output="C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Project1.exe" prefix_auto="0" extension_auto="0"/>
+				<Option working_dir="C:/Users/sherifsas/Desktop/Project2/cmake-build-debug"/>
+				<Option object_output="./"/>
+				<Option type="1"/>
+				<Option compiler="gcc"/>
+				<Compiler>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../include/c++/6.3.0"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../include/c++/6.3.0/x86_64-w64-mingw32"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../include/c++/6.3.0/backward"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/include"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/include-fixed"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/include"/>
+				</Compiler>
+				<MakeCommands>
+					<Build command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 Project1"/>
+					<CompileFile command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
+					<Clean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+					<DistClean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+				</MakeCommands>
+			</Target>
+			<Target title="Project1/fast">
+				<Option output="C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Project1.exe" prefix_auto="0" extension_auto="0"/>
+				<Option working_dir="C:/Users/sherifsas/Desktop/Project2/cmake-build-debug"/>
+				<Option object_output="./"/>
+				<Option type="1"/>
+				<Option compiler="gcc"/>
+				<Compiler>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../include/c++/6.3.0"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../include/c++/6.3.0/x86_64-w64-mingw32"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../include/c++/6.3.0/backward"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/include"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/include-fixed"/>
+					<Add directory="c:\mingw\bin\../lib/gcc/x86_64-w64-mingw32/6.3.0/../../../../x86_64-w64-mingw32/include"/>
+				</Compiler>
+				<MakeCommands>
+					<Build command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 Project1/fast"/>
+					<CompileFile command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
+					<Clean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+					<DistClean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+				</MakeCommands>
+			</Target>
+			<Target title="edit_cache">
+				<Option working_dir="C:/Users/sherifsas/Desktop/Project2/cmake-build-debug"/>
+				<Option type="4"/>
+				<MakeCommands>
+					<Build command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 edit_cache"/>
+					<CompileFile command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 &quot;$file&quot;"/>
+					<Clean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+					<DistClean command="C:/MinGW/bin/mingw32-make.exe -f &quot;C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/Makefile&quot;  VERBOSE=1 clean"/>
+				</MakeCommands>
+			</Target>
+		</Build>
+		<Unit filename="C:/Users/sherifsas/Desktop/Project2/cse561.c">
+			<Option target="Project1"/>
+		</Unit>
+		<Unit filename="C:/Users/sherifsas/Desktop/Project2/parse.c">
+			<Option target="Project1"/>
+		</Unit>
+		<Unit filename="C:/Users/sherifsas/Desktop/Project2/parse.h">
+			<Option target="Project1"/>
+		</Unit>
+		<Unit filename="C:/Users/sherifsas/Desktop/Project2/run.c">
+			<Option target="Project1"/>
+		</Unit>
+		<Unit filename="C:/Users/sherifsas/Desktop/Project2/run.h">
+			<Option target="Project1"/>
+		</Unit>
+		<Unit filename="C:/Users/sherifsas/Desktop/Project2/util.c">
+			<Option target="Project1"/>
+		</Unit>
+		<Unit filename="C:/Users/sherifsas/Desktop/Project2/util.h">
+			<Option target="Project1"/>
+		</Unit>
+		<Unit filename="C:/Users/sherifsas/Desktop/Project2/CMakeLists.txt">
+			<Option virtualFolder="CMake Files\"/>
+		</Unit>
+	</Project>
+</CodeBlocks_project_file>
diff --git a/cmake-build-debug/Project1.exe b/cmake-build-debug/Project1.exe
new file mode 100644
index 0000000000000000000000000000000000000000..89205a484e8ee140c34462cc5b599d42cb00ae2c
Binary files /dev/null and b/cmake-build-debug/Project1.exe differ
diff --git a/cmake-build-debug/cmake_install.cmake b/cmake-build-debug/cmake_install.cmake
new file mode 100644
index 0000000000000000000000000000000000000000..4b0221be8657f0ff68e98e79332c2e7e524fd555
--- /dev/null
+++ b/cmake-build-debug/cmake_install.cmake
@@ -0,0 +1,39 @@
+# Install script for directory: C:/Users/sherifsas/Desktop/Project2
+
+# Set the install prefix
+if(NOT DEFINED CMAKE_INSTALL_PREFIX)
+  set(CMAKE_INSTALL_PREFIX "C:/Program Files (x86)/Project1")
+endif()
+string(REGEX REPLACE "/$" "" CMAKE_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}")
+
+# Set the install configuration name.
+if(NOT DEFINED CMAKE_INSTALL_CONFIG_NAME)
+  if(BUILD_TYPE)
+    string(REGEX REPLACE "^[^A-Za-z0-9_]+" ""
+           CMAKE_INSTALL_CONFIG_NAME "${BUILD_TYPE}")
+  else()
+    set(CMAKE_INSTALL_CONFIG_NAME "Debug")
+  endif()
+  message(STATUS "Install configuration: \"${CMAKE_INSTALL_CONFIG_NAME}\"")
+endif()
+
+# Set the component getting installed.
+if(NOT CMAKE_INSTALL_COMPONENT)
+  if(COMPONENT)
+    message(STATUS "Install component: \"${COMPONENT}\"")
+    set(CMAKE_INSTALL_COMPONENT "${COMPONENT}")
+  else()
+    set(CMAKE_INSTALL_COMPONENT)
+  endif()
+endif()
+
+if(CMAKE_INSTALL_COMPONENT)
+  set(CMAKE_INSTALL_MANIFEST "install_manifest_${CMAKE_INSTALL_COMPONENT}.txt")
+else()
+  set(CMAKE_INSTALL_MANIFEST "install_manifest.txt")
+endif()
+
+string(REPLACE ";" "\n" CMAKE_INSTALL_MANIFEST_CONTENT
+       "${CMAKE_INSTALL_MANIFEST_FILES}")
+file(WRITE "C:/Users/sherifsas/Desktop/Project2/cmake-build-debug/${CMAKE_INSTALL_MANIFEST}"
+     "${CMAKE_INSTALL_MANIFEST_CONTENT}")
diff --git a/cmake-build-debug/example01.o b/cmake-build-debug/example01.o
new file mode 100644
index 0000000000000000000000000000000000000000..4a47d1fdffc0d9a8b0da054006508b5b315403cc
--- /dev/null
+++ b/cmake-build-debug/example01.o
@@ -0,0 +1 @@
+000000000000000000000000010110000000000000000000000000000000110000000010001000001000100000100100000000100100000010010000001001000011110000001000000100000000000000111100000010010001000000000000001101010010100100000000000001000000000101000000010100000010010000000001011000000101100000100100001001100011000100000000000000010010010101101011000000000000000100000001001000000100100000100101000101010110100011111111111111000010011001010010000000000000001000100101011010110000000000000001000000000001000110010000010000000000000000010010100010000100001000000010001100101001100000100100000101010110100111111111111110100000000010111111001010000010000100000010001100101000000000100111000100010100100000000000000000010000100000010000000000000000011000110110000100001111000011110000000000000000000000000000011001000000000000000000000000001100100000010010001101000101011001111000
diff --git a/cse561.c b/cse561.c
index 3e2d59b94f824d70287ad7188657dca015af1280..4c19f901a5bcffab933db44103a72beaa58dcb39 100644
--- a/cse561.c
+++ b/cse561.c
@@ -9,8 +9,8 @@
 /***************************************************************/
 
 /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-/*    DO NOT MODIFY THIS FILE!                                  */
-/*    You should only modify the run.c, run.h and util.h file!  */
+/*          DO NOT MODIFY THIS FILE!                            */
+/*          You should only the parse.c and run.c files!        */
 /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
 
 #include <assert.h>
@@ -41,51 +41,51 @@ void load_program(char *program_filename) {
 
     /* Open program file. */
     prog = fopen(program_filename, "r");
+
     if (prog == NULL) {
-	printf("Error: Can't open program file %s\n", program_filename);
-	exit(-1);
+        printf("Error: Can't open program file %s\n", program_filename);
+        exit(-1);
     }
 
     /* Read in the program. */
     ii = 0;
 
     //read 32bits + '\0' = 33
-    while (fgets(buffer,33,prog) != NULL)
-    {
-	if(flag == 0)
-	{
-	    //check text segment size
-	    text_size = fromBinary(buffer);
-	    NUM_INST = text_size/4;
-	    //initial memory allocation of text segment
-	    INST_INFO = malloc(sizeof(instruction)*NUM_INST);
-	    init_inst_info(NUM_INST);
-	}
-
-	else if(flag == 1)
-	{
-	    //check data segment size
-	    data_size = fromBinary(buffer);
-	}
-
-	else
-	{
-	    if(ii < text_size){
-		INST_INFO[text_index++] = parsing_instr(buffer, ii);
-	    }
-	    else if(ii < text_size + data_size){
-		parsing_data(buffer, ii-text_size);
-	    }
-	    else
-	    {
-		//Do not enter this case
-		//assert(0);
-		//However, there is a newline in the input file
-	    }
-	    ii += 4;
-	}
-	flag++;
+    while (fgets(buffer,33,prog) != NULL) {
+ 
+        if (flag == 0) {
+
+            //check text segment size
+            text_size = fromBinary(buffer);
+            NUM_INST = text_size/4;
+            //initial memory allocation of text segment
+            INST_INFO = malloc(sizeof(instruction)*(text_size/4));
+            init_inst_info(text_size/4);
+
+        } else if (flag == 1) {
+
+            //check data segment size
+            data_size = fromBinary(buffer);
+            //initial memory allocation of data segment
+            //if you would like to add data, you can re-allocate memory.
+            /* data_seg = malloc(sizeof(uint32_t)*(data_size/4)); */
+
+        } else {
+            
+            if(ii < text_size) {
+                INST_INFO[text_index++] = parsing_instr(buffer, ii);
+            } else if(ii < text_size + data_size) {
+                parsing_data(buffer, ii-text_size);
+            } else {
+                //Do not enter this case
+                //assert(0);
+                //However, there is a newline in the input file
+            }
+            ii += 4;
+        }
+        flag++;
     }
+
     CURRENT_STATE.PC = MEM_TEXT_START;
     //printf("Read %d words from program into memory.\n\n", ii/4);
 }
@@ -98,34 +98,12 @@ void load_program(char *program_filename) {
 /*             and set up initial state of the machine.     */
 /*                                                          */
 /************************************************************/
-void initialize(char *program_filename) { 
+void initialize(char *program_filename) {
     int i;
 
     init_memory();
-    load_program(program_filename);
-
-    INSTRUCTION_COUNT = 0;
-    CYCLE_COUNT = 0;
-    BR_BIT = TRUE;
-    FORWARDING_BIT = TRUE;
-
-    for (i = 0; i < PIPE_STAGE; i++){
-	CURRENT_STATE.PIPE[i] = 0;
-	CURRENT_STATE.PIPE_STALL[i] = FALSE;
-    }
-
-    CURRENT_STATE.IF_ID_INST = 0;
-    CURRENT_STATE.IF_ID_NPC = 0;
-    CURRENT_STATE.ID_EX_NPC = 0;
-    CURRENT_STATE.ID_EX_REG1 = 0;
-    CURRENT_STATE.ID_EX_REG2 = 0;
-    CURRENT_STATE.ID_EX_IMM = 0;
-    CURRENT_STATE.EX_MEM_ALU_OUT = 0;
-    CURRENT_STATE.EX_MEM_BR_TARGET = 0;
-    CURRENT_STATE.MEM_WB_ALU_OUT = 0;
-
+    load_program("example01.o");
     RUN_BIT = TRUE;
-    FETCH_BIT = TRUE;
 }
 
 /***************************************************************/
@@ -133,7 +111,7 @@ void initialize(char *program_filename) {
 /* Procedure : main                                            */
 /*                                                             */
 /***************************************************************/
-int main(int argc, char *argv[]) {                              
+int main(int argc, char *argv[]) {
     char** tokens;
     int count = 1;
     int addr1 = 0;
@@ -144,72 +122,64 @@ int main(int argc, char *argv[]) {
     int mem_dump_set = 0;
     int debug_set = 0;
     int num_inst_set = 0;
-    int pipe_dump_set = 0;
 
     /* Error Checking */
-    if (argc < 2)
-    {
-	printf("Usage: %s [-nobp] [-nof] [-m addr1:addr2] [-d] [-p] [-n num_instr] inputBinary\n", argv[0]);
-	exit(1);
+    if (argc < 2) {
+        printf("Error: usage: %s [-m addr1:addr2] [-d] [-n num_instr] inputBinary\n", argv[0]);
+        exit(1);
     }
 
     initialize(argv[argc-1]);
 
     //for checking parse result
+    print_parse_result();
 
-    while(count != argc-1){
-	if(strcmp(argv[count], "-m") == 0){
-	    tokens = str_split(argv[++count],':');
-
-	    addr1 = (int)strtol(*(tokens), NULL, 16);
-	    addr2 = (int)strtol(*(tokens+1), NULL, 16);
-	    mem_dump_set = 1;
-	}
-	else if(strcmp(argv[count], "-d") == 0)
-	    debug_set = 1;
-	else if(strcmp(argv[count], "-n") == 0){
-	    num_inst = (int)strtol(argv[++count], NULL, 10);
-	    num_inst_set = 1;
-	}
-	else if(strcmp(argv[count], "-p") == 0)
-	    pipe_dump_set = 1;
-	else if(strcmp(argv[count], "-nobp") == 0)
-	    BR_BIT = FALSE;
-	else if(strcmp(argv[count], "-nof") == 0)
-	    FORWARDING_BIT = FALSE;
-	else {
-	    printf("Usage: %s [-m addr1:addr2] [-d] [-p] [-n num_instr] inputBinary\n", argv[0]);
-	    exit(1);
-	}
-	count++;
-    }
+    while (count != argc-1) {
 
-    if(num_inst_set)	MAX_INSTRUCTION_NUM = num_inst;
-    else		MAX_INSTRUCTION_NUM = i;
+        if (strcmp(argv[count], "-m") == 0) {
+            tokens = str_split(argv[++count],':');
 
-    if(num_inst_set && num_inst <= 0){
-	printf("Error: The number of instructions should be positive integer\n");
-	return -1;
-    }
+            addr1 = (int)strtol(*(tokens), NULL, 16);
+            addr2 = (int)strtol(*(tokens+1), NULL, 16);
+            mem_dump_set = 1;
+
+        } else if(strcmp(argv[count], "-d") == 0) {
+            debug_set = 1;
 
-    if(debug_set || pipe_dump_set){
-	printf("Simulating for %lu instructions...\n\n", MAX_INSTRUCTION_NUM);
+        } else if(strcmp(argv[count], "-n") == 0) {
+            num_inst = (int)strtol(argv[++count], NULL, 10);
+            num_inst_set = 1;
 
-	while(RUN_BIT){
-	    cycle();
+        } else{
+            printf("Error: usage: %s [-m addr1:addr2] [-d] [-n num_instr] inputBinary\n", argv[0]);
+            exit(1);
+        }
+        count++;
+    }
 
-	    if(pipe_dump_set)	pdump();
-	    if(debug_set)	rdump();	
-	}
-	if(!debug_set)		rdump();
-	if(mem_dump_set)	mdump(addr1, addr2);
-        printf("Simulator halted after %lu cycles\n\n", CYCLE_COUNT);
+    if (num_inst_set) {
+        i = num_inst;
     }
-    else{
-	run();
 
-	rdump();
-	if(mem_dump_set) mdump(addr1, addr2);
+    if (debug_set) {
+        printf("Simulating for %d cycles...\n\n", i);
+
+        for(; i > 0; i--){
+            cycle();
+            rdump();
+
+            if (mem_dump_set) {
+                mdump(addr1, addr2);
+            }
+        }
+
+    } else {
+        run(i);
+        rdump();
+
+        if (mem_dump_set) {
+            mdump(addr1, addr2);
+        }
     }
 
     return 0;
diff --git a/my_output/example01 b/my_output/example01
new file mode 100644
index 0000000000000000000000000000000000000000..eba2dbb41d1f9fc672c6f54c7cddb21217fbd742
--- /dev/null
+++ b/my_output/example01
@@ -0,0 +1 @@
+Error: Can't open program file example01.o
diff --git a/my_output/example02 b/my_output/example02
new file mode 100644
index 0000000000000000000000000000000000000000..eba2dbb41d1f9fc672c6f54c7cddb21217fbd742
--- /dev/null
+++ b/my_output/example02
@@ -0,0 +1 @@
+Error: Can't open program file example01.o
diff --git a/my_output/example03 b/my_output/example03
new file mode 100644
index 0000000000000000000000000000000000000000..eba2dbb41d1f9fc672c6f54c7cddb21217fbd742
--- /dev/null
+++ b/my_output/example03
@@ -0,0 +1 @@
+Error: Can't open program file example01.o
diff --git a/my_output/example04 b/my_output/example04
new file mode 100644
index 0000000000000000000000000000000000000000..eba2dbb41d1f9fc672c6f54c7cddb21217fbd742
--- /dev/null
+++ b/my_output/example04
@@ -0,0 +1 @@
+Error: Can't open program file example01.o
diff --git a/my_output/example05 b/my_output/example05
new file mode 100644
index 0000000000000000000000000000000000000000..eba2dbb41d1f9fc672c6f54c7cddb21217fbd742
--- /dev/null
+++ b/my_output/example05
@@ -0,0 +1 @@
+Error: Can't open program file example01.o
diff --git a/my_output/fact b/my_output/fact
new file mode 100644
index 0000000000000000000000000000000000000000..eba2dbb41d1f9fc672c6f54c7cddb21217fbd742
--- /dev/null
+++ b/my_output/fact
@@ -0,0 +1 @@
+Error: Can't open program file example01.o
diff --git a/my_output/leaf_example b/my_output/leaf_example
new file mode 100644
index 0000000000000000000000000000000000000000..eba2dbb41d1f9fc672c6f54c7cddb21217fbd742
--- /dev/null
+++ b/my_output/leaf_example
@@ -0,0 +1 @@
+Error: Can't open program file example01.o
diff --git a/parse.c b/parse.c
index ce96a71c5121e7f5206665e745d62f7b18e5fa6c..22bb8959f70ed34cd18c67a893e71e1d8079e1ee 100644
--- a/parse.c
+++ b/parse.c
@@ -8,13 +8,8 @@
 /*                                                             */
 /***************************************************************/
 
-/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-/*    DO NOT MODIFY THIS FILE!                                  */
-/*    You should only modify the run.c, run.h and util.h file!  */
-/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-
-
 #include <stdio.h>
+#include <stdint.h>
 
 #include "util.h"
 #include "parse.h"
@@ -22,13 +17,18 @@
 int text_size;
 int data_size;
 
-instruction parsing_instr(const char *buffer, const int index)
-{
+instruction parsing_instr(const char *buffer, const int index) {
     instruction instr;
-    char opcode[7],rs[6],rt[6],rd[6],shamt[6],imm[17],target[27],func_code[7] = {0};
+    /*init var*/
+
+    /*R format [opcode(6), rs(5), rt(5), rd(5), shamt(5), funct(6)]
+      I format [opcode(6), rs(5), rt(5), imm(16)]
+      J format [opcode(6), address(26)] */
+
+    char opcode[7],rs[6],rt[6],rd[6],shamt[6],imm[17],target[27],func[7] = {0};
     int word;
     word = fromBinary(buffer);
-    mem_write_32(MEM_TEXT_START + index, word);
+    mem_write_32(MEM_TEXT_START + index, word); //write on memory in Text segment
     sscanf(buffer, "%6s", opcode);
 
     instr.value = word;
@@ -36,113 +36,112 @@ instruction parsing_instr(const char *buffer, const int index)
 
     switch(instr.opcode)
     {
-	//Type I
-	case 0x9:		//(0x001001)ADDIU
-	case 0xc:		//(0x001100)ANDI
-	case 0xf:		//(0x001111)LUI	
-	case 0xd:		//(0x001101)ORI
-	case 0xb:		//(0x001011)SLTIU
-	case 0x23:		//(0x100011)LW	
-	case 0x2b:		//(0x101011)SW
-	case 0x4:		//(0x000100)BEQ
-	case 0x5:		//(0x000101)BNE
-	    sscanf(buffer,"%6s%5s%5s%16s",opcode,rs,rt,imm);
-	    instr.r_t.r_i.rs = (unsigned char)fromBinary(rs);
-	    instr.r_t.r_i.rt = (unsigned char)fromBinary(rt);
-	    instr.r_t.r_i.r_i.imm = (short)fromBinary(imm);
-	    break;
-
-	    //TYPE R
-	case 0x0:		//(0x000000)ADDU, AND, NOR, OR, SLTU, SLL, SRL, SUBU  if JR
-	    sscanf(buffer,"%6s%5s%5s%5s%5s%6s",opcode,rs,rt,rd,shamt,func_code);
-	    instr.func_code = (short)fromBinary(func_code);
-
-	    //JR exception
-	    if(instr.func_code == 0x8)
-		instr.r_t.r_i.rs = (unsigned char)fromBinary(rs);
-	    else
-	    {
-		instr.r_t.r_i.rs = (unsigned char)fromBinary(rs);
-		instr.r_t.r_i.rt = (unsigned char)fromBinary(rt);
-		instr.r_t.r_i.r_i.r.rd = (unsigned char)fromBinary(rd);
-		instr.r_t.r_i.r_i.r.shamt = (unsigned char)fromBinary(shamt);
-	    }
-	    break;
-
-	    //TYPE J
-	case 0x2:		//(0x000010)J
-	case 0x3:		//(0x000011)JAL
-	    sscanf(buffer,"%6s%26s",opcode,target);
-	    instr.r_t.target = fromBinary(target);
-	    break;
-
-	default:
-	    printf("Not available instruction\n");
-	    assert(0);
+        //R-Type
+        case 0x0:               // All R-Type Starts with 0x0 ....(ADDU, AND, NOR, OR, SLTU, SLL, SRL, SUBU  if JR
+            sscanf(buffer,"%6s%5s%5s%5s%5s%6s",opcode,rs,rt,rd,shamt,func);
+            instr.func_code = (short)fromBinary(func);
+
+            //exception Jumping Register (JR) opcode = 0x0, However, func = 0x8
+            if(instr.func_code == 0x8)
+                instr.r_t.r_i.rs = (unsigned char)fromBinary(rs);
+            else
+            {
+                instr.r_t.r_i.rs = (unsigned char)fromBinary(rs);
+                instr.r_t.r_i.rt = (unsigned char)fromBinary(rt);
+                instr.r_t.r_i.r_i.r.rd = (unsigned char)fromBinary(rd);
+                instr.r_t.r_i.r_i.r.shamt = (unsigned char)fromBinary(shamt);
+            }
+            break;
+
+        //I-Type
+        case 0x9:               //(0x001001)ADDIU
+        case 0xc:               //(0x001100)ANDI
+        case 0xf:               //(0x001111)LUI
+        case 0xd:               //(0x001101)ORI
+        case 0xb:               //(0x001011)SLTIU
+        case 0x23:              //(0x100011)LW
+        case 0x2b:              //(0x101011)SW
+        case 0x4:               //(0x000100)BEQ
+        case 0x5:               //(0x000101)BNE
+            sscanf(buffer,"%6s%5s%5s%16s",opcode,rs,rt,imm);
+            instr.r_t.r_i.rs = (unsigned char)fromBinary(rs);
+            instr.r_t.r_i.rt = (unsigned char)fromBinary(rt);
+            instr.r_t.r_i.r_i.imm = (short)fromBinary(imm);
+            break;
+
+        //TYPE J
+        case 0x2:               //(0x000010)J
+        case 0x3:               //(0x000011)JAL
+            sscanf(buffer,"%6s%26s",opcode,target);
+            instr.r_t.target = (uint32_t)fromBinary(target);
+            break;
+
+        default:
+            printf("There's no available instruction\n");
+            assert(0);
     }
 
+
     return instr;
 }
 
-void parsing_data(const char *buffer, const int index)
-{
-    uint32_t word;
+void parsing_data(const char *buffer, const int index) {
+    int word;
     word = fromBinary(buffer);
-    mem_write_32(MEM_DATA_START + index, word);
+    mem_write_32(MEM_DATA_START + index, word); //write on memory in Data segment
 }
 
-void print_parse_result()
-{
+void print_parse_result() {
     int i;
     printf("Instruction Information\n");
 
     for(i = 0; i < text_size/4; i++)
     {
-	printf("INST_INFO[%d].value : %x\n",i, INST_INFO[i].value);
-	printf("INST_INFO[%d].opcode : %d\n",i, INST_INFO[i].opcode);
-
-	switch(INST_INFO[i].opcode)
-	{
-	    //Type I
-	    case 0x9:		//(0x001001)ADDIU
-	    case 0xc:		//(0x001100)ANDI
-	    case 0xf:		//(0x001111)LUI	
-	    case 0xd:		//(0x001101)ORI
-	    case 0xb:		//(0x001011)SLTIU
-	    case 0x23:		//(0x100011)LW	
-	    case 0x2b:		//(0x101011)SW
-	    case 0x4:		//(0x000100)BEQ
-	    case 0x5:		//(0x000101)BNE
-		printf("INST_INFO[%d].rs : %d\n",i, INST_INFO[i].r_t.r_i.rs);
-		printf("INST_INFO[%d].rt : %d\n",i, INST_INFO[i].r_t.r_i.rt);
-		printf("INST_INFO[%d].imm : %d\n",i, INST_INFO[i].r_t.r_i.r_i.imm);
-		break;
-
-    	    //TYPE R
-	    case 0x0:		//(0x000000)ADDU, AND, NOR, OR, SLTU, SLL, SRL, SUBU  if JR
-		printf("INST_INFO[%d].func_code : %d\n",i, INST_INFO[i].func_code);
-		printf("INST_INFO[%d].rs : %d\n",i, INST_INFO[i].r_t.r_i.rs);
-		printf("INST_INFO[%d].rt : %d\n",i, INST_INFO[i].r_t.r_i.rt);
-		printf("INST_INFO[%d].rd : %d\n",i, INST_INFO[i].r_t.r_i.r_i.r.rd);
-		printf("INST_INFO[%d].shamt : %d\n",i, INST_INFO[i].r_t.r_i.r_i.r.shamt);
-		break;
-
-    	    //TYPE J
-	    case 0x2:		//(0x000010)J
-	    case 0x3:		//(0x000011)JAL
-		printf("INST_INFO[%d].target : %d\n",i, INST_INFO[i].r_t.target);
-		break;
-
-	    default:
-		printf("Not available instruction\n");
-		assert(0);
-	}
+        printf("INST_INFO[%d].value : %x\n",i, INST_INFO[i].value);
+        printf("INST_INFO[%d].opcode : %d\n",i, INST_INFO[i].opcode);
+
+        switch(INST_INFO[i].opcode)
+        {
+            //Type I
+            case 0x9:		//(0x001001)ADDIU
+            case 0xc:		//(0x001100)ANDI
+            case 0xf:		//(0x001111)LUI	
+            case 0xd:		//(0x001101)ORI
+            case 0xb:		//(0x001011)SLTIU
+            case 0x23:		//(0x100011)LW	
+            case 0x2b:		//(0x101011)SW
+            case 0x4:		//(0x000100)BEQ
+            case 0x5:		//(0x000101)BNE
+                printf("INST_INFO[%d].rs : %d\n",i, INST_INFO[i].r_t.r_i.rs);
+                printf("INST_INFO[%d].rt : %d\n",i, INST_INFO[i].r_t.r_i.rt);
+                printf("INST_INFO[%d].imm : %d\n",i, INST_INFO[i].r_t.r_i.r_i.imm);
+                break;
+
+                //TYPE R
+            case 0x0:		//(0x000000)ADDU, AND, NOR, OR, SLTU, SLL, SRL, SUBU  if JR
+                printf("INST_INFO[%d].func_code : %d\n",i, INST_INFO[i].func_code);
+                printf("INST_INFO[%d].rs : %d\n",i, INST_INFO[i].r_t.r_i.rs);
+                printf("INST_INFO[%d].rt : %d\n",i, INST_INFO[i].r_t.r_i.rt);
+                printf("INST_INFO[%d].rd : %d\n",i, INST_INFO[i].r_t.r_i.r_i.r.rd);
+                printf("INST_INFO[%d].shamt : %d\n",i, INST_INFO[i].r_t.r_i.r_i.r.shamt);
+                break;
+
+                //TYPE J
+            case 0x2:		//(0x000010)J
+            case 0x3:		//(0x000011)JAL
+                printf("INST_INFO[%d].target : %d\n",i, INST_INFO[i].r_t.target);
+                break;
+
+            default:
+                printf("Not available instruction\n");
+                assert(0);
+        }
     }
 
     printf("Memory Dump - Text Segment\n");
     for(i = 0; i < text_size; i+=4)
-	printf("text_seg[%d] : %x\n", i, mem_read_32(MEM_TEXT_START + i));
+        printf("text_seg[%d] : %x\n", i, mem_read_32(MEM_TEXT_START + i));
     for(i = 0; i < data_size; i+=4)
-	printf("data_seg[%d] : %x\n", i, mem_read_32(MEM_DATA_START + i));
+        printf("data_seg[%d] : %x\n", i, mem_read_32(MEM_DATA_START + i));
     printf("Current PC: %x\n", CURRENT_STATE.PC);
 }
diff --git a/parse.h b/parse.h
index 8c89f75f2d9e81ca30bdfebdb60df8a0f6d9c3f2..a51c65235704986bf3356c947059051dac04f869 100644
--- a/parse.h
+++ b/parse.h
@@ -9,8 +9,8 @@
 /***************************************************************/
 
 /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-/*    DO NOT MODIFY THIS FILE!                                  */
-/*    You should only modify the run.c, run.h and util.h file!  */
+/*          DO NOT MODIFY THIS FILE!                            */
+/*          You should only the parse.c and run.c files!        */
 /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
 
 #ifndef _PARSE_H_
@@ -24,6 +24,7 @@ extern int text_size;
 extern int data_size;
 
 /* functions */
+/** Implement the two parsing_* functions in parse.c */
 instruction	parsing_instr(const char *buffer, const int index);
 void		parsing_data(const char *buffer, const int index);
 void		print_parse_result();
diff --git a/run.c b/run.c
index f42981e4bcf3071bb25c3a7195d05624e248196a..7e2424ecb1ead3095cac9d32dd963615e45b5c0a 100644
--- a/run.c
+++ b/run.c
@@ -25,6 +25,293 @@ instruction* get_inst_info(uint32_t pc) {
 }
 
 
+// Pipleline stage
+
+IF_ID Fetch_Stage() {
+    IF_ID next_latch;
+    if (!CURRENT_STATE.PC) { // Stall
+        memset(&next_latch, 0, sizeof(next_latch));
+        return next_latch;
+    }
+
+    next_latch.NPC = CURRENT_STATE.PC;
+    next_latch.INSTR = INST_INFO[(CURRENT_STATE.PC - MEM_TEXT_START) >> 2];
+    return next_latch;
+}
+
+ID_EX Decode_Stage() {
+    IF_ID latch = CURRENT_STATE.if_id;
+    ID_EX next_latch;
+
+    next_latch.NPC = latch.NPC;
+
+    instruction *inst = &latch.INSTR;
+    short op = OPCODE (inst);
+    short func = FUNC (inst);
+
+    next_latch.REG1 = CURRENT_STATE.REGS[RS (inst)];
+    next_latch.REG2 = CURRENT_STATE.REGS[RT (inst)];
+
+    next_latch.RS = RS (inst);
+    next_latch.RT = RT (inst);
+    next_latch.RD = RD (inst);
+    next_latch.IMM = IMM (inst);
+    next_latch.SHAMT = SHAMT (inst);
+
+    if (op == 0x0 || op == 0x3) {
+      next_latch.DEST = RD (inst);
+    }
+    else {
+      next_latch.DEST = RT (inst);
+    }
+
+    next_latch.ALUSrc = (op == 0x4 || op == 0x5 || op == 0x9 || op == 0xb ||
+        op == 0xc || op == 0xd || op == 0xf || op == 0x23 || op == 0x2b);
+    next_latch.ALUNeg = (op == 0x27 || op == 0x5);
+
+    next_latch.Branch = (op == 0x4 || op == 0x5);
+    next_latch.MemRead = (op == 0x23);
+    next_latch.MemWrite = (op == 0x2b);
+
+    next_latch.RegWrite = !(op == 0x2b || op == 0x4 || op == 0x05 ||
+        op == 0x2 || (op == 0x0 && func == 0x8));
+    next_latch.MemtoReg = (op == 0x23);
+
+    switch (op) {
+        case 0x0:
+            switch(func) {
+                case 0x21:  //ADDU
+                    next_latch.ALUOp = 1;
+                    break;
+                case 0x24:  //AND
+                    next_latch.ALUOp = 3;
+                    break;
+                case 0x27:  //NOR
+                    next_latch.ALUOp = 4;
+                    next_latch.ALUNeg = 1;
+                    break;
+                case 0x25:  //OR
+                    next_latch.ALUOp = 4;
+                    break;
+                case 0x2B:  //SLTU
+                    next_latch.ALUOp = 7;
+                    break;
+                case 0x0:   //SLL
+                    next_latch.ALUOp = 5;
+                    break;
+                case 0x2:   //SRL
+                    next_latch.ALUOp = 6;
+                    break;
+                case 0x23:  //SUBU
+                    next_latch.ALUOp = 2;
+                    break;
+
+                case 0x8:   //JR
+                    next_latch.ALUOp = 0;
+                    CURRENT_STATE.PC = CURRENT_STATE.REGS[next_latch.RS];
+                    break;
+
+                default:
+                    printf("Unknown function code type: %d\n", FUNC(inst));
+                    break;
+            }
+            break;
+
+        case 0x9:               //(0x001001)ADDIU
+            next_latch.ALUOp = 1;
+            break;
+
+        case 0xc:               //(0x001100)ANDI
+            next_latch.ALUOp = 3;
+            break;
+
+        case 0xf:               //(0x001111)LUI
+            next_latch.ALUOp = 8;
+            break;
+        case 0xd:               //(0x001101)ORI
+            next_latch.ALUOp = 4;
+            break;
+        case 0xb:               //(0x001011)SLTIU
+            next_latch.ALUOp = 7;
+            break;
+        case 0x23:              //(0x100011)LW
+            next_latch.ALUOp = 1;
+            break;
+        case 0x4:               //(0x000100)BEQ
+        case 0x5:               //(0x000101)BNE
+            next_latch.ALUOp = 2;
+
+            break;
+
+        case 0x2:               //(0x000010)J
+            next_latch.ALUOp = 0;
+            CURRENT_STATE.PC = ((next_latch.NPC & 0xf0000000) | (next_latch.IMM << 2));
+            break;
+
+        case 0x3:               //(0x000011)JAL
+            next_latch.ALUOp = 9;
+            CURRENT_STATE.REGS[31] = next_latch.NPC + 4; // TODO: 이거 여기서하는지 EX에서 하는지
+            CURRENT_STATE.PC = ((next_latch.NPC & 0xf0000000) | (next_latch.IMM << 2));
+            break;
+
+        default:
+            printf("Unknown instruction type: %d\n", OPCODE(inst));
+            break;
+
+    }
+    return next_latch;
+}
+
+EX_MEM Execute_Stage(){
+    ID_EX latch = CURRENT_STATE.id_ex;
+    EX_MEM next_latch;
+
+    // load-use
+
+    EX_MEM ex_mem = CURRENT_STATE.ex_mem;
+
+    if (ex_mem.MemRead) {
+        if (latch.DEST == latch.RT) {
+            if (latch.RS == ex_mem.DEST) {
+                CURRENT_STATE.LoadUse = 1;
+                return ex_mem;
+            }
+        }
+        else {
+            if ((latch.RS == ex_mem.DEST) || (latch.RT == ex_mem.DEST)) {
+                CURRENT_STATE.LoadUse = 1;
+                return ex_mem;
+            }
+        }
+    }
+
+    next_latch.DEST = latch.DEST;
+
+    next_latch.Branch = latch.Branch;
+    next_latch.MemRead = latch.MemRead;
+    next_latch.MemWrite = latch.MemWrite;
+
+    next_latch.RegWrite = latch.RegWrite;
+    next_latch.MemtoReg = latch.MemtoReg;
+
+    switch (latch.ALUOp) {
+        case 1: // add
+          if (latch.ALUSrc) {
+              next_latch.ALU_OUT = latch.REG1 + latch.IMM;
+          }
+          else {
+              next_latch.ALU_OUT = latch.REG1 + latch.REG2;
+          }
+          break;
+
+        case 2: // sub
+          next_latch.ALU_OUT = latch.REG1 - latch.REG2;
+          if (latch.ALUNeg) {
+              next_latch.ALU_OUT = !(next_latch.ALU_OUT); // bne
+          }
+          break;
+
+        case 3: // and
+          if (latch.ALUSrc) {
+              next_latch.ALU_OUT = latch.REG1 & latch.IMM;
+          }
+          else {
+              next_latch.ALU_OUT = latch.REG1 & latch.REG2;
+          }
+          break;
+
+        case 4: // or
+          if (latch.ALUSrc) {
+              next_latch.ALU_OUT = latch.REG1 | latch.IMM;
+          }
+          else {
+              next_latch.ALU_OUT = latch.REG1 | latch.REG2;
+          }
+
+          if (latch.ALUNeg) {
+              next_latch.ALU_OUT = !(next_latch.ALU_OUT);
+          }
+          break;
+
+        case 5: // shift left
+          next_latch.ALU_OUT = latch.REG2 << latch.SHAMT;
+          break;
+
+        case 6: // shift right
+          next_latch.ALU_OUT = latch.REG2 >> latch.SHAMT;
+          break;
+
+        case 7: // set less than
+          if (latch.ALUSrc) {
+              if (latch.REG1 < latch.IMM) {
+                  next_latch.ALU_OUT = 1;
+              }
+              else {
+                  next_latch.ALU_OUT = 0;
+              }
+          }
+          else {
+              if (latch.REG1 < latch.REG2) {
+                  next_latch.ALU_OUT = 1;
+              }
+              else {
+                  next_latch.ALU_OUT = 0;
+              }
+          }
+          break;
+
+        case 8: // lui
+          next_latch.ALU_OUT = latch.IMM << 16;
+
+          break;
+
+        case 9: // jal
+          break;
+
+        default:
+          break;
+    }
+    if (latch.MemWrite) {
+        next_latch.MemValue = latch.REG2;
+    }
+}
+
+MEM_WB Memory_Stage(){
+    EX_MEM latch = CURRENT_STATE.ex_mem;
+    MEM_WB next_latch;
+
+    next_latch.RegWrite = latch.RegWrite;
+    next_latch.MemtoReg = latch.MemtoReg;
+    next_latch.DEST = latch.DEST;
+    next_latch.ALU_OUT = latch.ALU_OUT;
+
+    if (latch.MemWrite)
+    {
+        mem_write_32(latch.ALU_OUT, latch.MemValue);
+    }
+    else if (latch.MemRead)
+    {
+        next_latch.MEM_OUT = mem_read_32(latch.ALU_OUT);// Read from memory
+    }
+
+    return next_latch;
+
+}
+
+void WriteBack_Stage(){
+    MEM_WB latch = CURRENT_STATE.mem_wb;
+
+    if (latch.RegWrite)
+    {
+        CURRENT_STATE.REGS[latch.DEST] = latch.ALU_OUT;
+    }
+    else if (latch.MemtoReg)
+    {
+        CURRENT_STATE.REGS[latch.DEST] = latch.MEM_OUT;
+    }
+}
+
+
 /***************************************************************/
 /*                                                             */
 /* Procedure: process_instruction                              */
@@ -32,6 +319,58 @@ instruction* get_inst_info(uint32_t pc) {
 /* Purpose: Process one instrction                             */
 /*                                                             */
 /***************************************************************/
-void process_instruction(){
-	/** Your implementation here */
+void process_instruction() {
+	
+    instruction *inst;
+    int i;              // for loop
+    uint32_t dest;
+
+    /* pipeline */
+    for ( i = PIPE_STAGE - 1; i > 0; i--)
+        CURRENT_STATE.PIPE[i] = CURRENT_STATE.PIPE[i-1];
+    CURRENT_STATE.PIPE[0] = CURRENT_STATE.PC;
+
+    inst = get_inst_info(CURRENT_STATE.PC);
+    CURRENT_STATE.PC += BYTES_PER_WORD; // PC = nPC
+
+    // WB Stage
+    WriteBack_Stage();
+
+    // MEM Stage
+    CURRENT_STATE.mem_wb = Memory_Stage();
+
+    if (!CURRENT_STATE.LoadUse) {
+        CURRENT_STATE.LoadUse = 0;
+        // EX Stage
+        CURRENT_STATE.ex_mem = Execute_Stage();
+
+        // ID Stage
+        CURRENT_STATE.id_ex = Decode_Stage();
+
+        // IF Stage
+        CURRENT_STATE.if_id = Fetch_Stage();
+    }
+
+
+    // Fetch Stall caused by Control Hazard
+    if (CURRENT_STATE.STALL) {
+        CURRENT_STATE.PC -= BYTES_PER_WORD; // PC = nPC 취소
+        CURRENT_STATE.STALL -= 1;
+    }
+
+    // Flush
+    if (CURRENT_STATE.FLUSH) {
+        for (i=0; i<CURRENT_STATE.FLUSH; i++) {
+            CURRENT_STATE.PIPE[i] = 0;
+            switch (i) {
+              case 1:
+                memset(&CURRENT_STATE.if_id, 0, sizeof(CURRENT_STATE.if_id));
+              case 2:
+                memset(&CURRENT_STATE.id_ex, 0, sizeof(CURRENT_STATE.id_ex));
+            }
+        }
+    }
+
+    if (CURRENT_STATE.PC < MEM_REGIONS[0].start || CURRENT_STATE.PC >= (MEM_REGIONS[0].start + (NUM_INST * 4)))
+        RUN_BIT = FALSE;
 }
diff --git a/run.h b/run.h
index 56ab55acf0b799994c1f2770701b0407b020c064..b7ecd719d5771c151657775e7a1a6acd15318a92 100644
--- a/run.h
+++ b/run.h
@@ -8,6 +8,10 @@
 /*                                                             */
 /***************************************************************/
 
+/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
+/*          DO NOT MODIFY THIS FILE!                            */
+/*          You should only the parse.c and run.c files!        */
+/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
 
 #ifndef _RUN_H_
 #define _RUN_H_
@@ -115,11 +119,4 @@
 instruction*	get_inst_info(uint32_t pc);
 void		process_instruction();
 
-/* Add any functions declarations that you require */
-/* Suggestions for some possible functions */
-//void		IF_Stage();
-//void		ID_Stage();
-//void		EX_Stage();
-//void		MEM_Stage();
-//void		WB_Stage();
 #endif
diff --git a/sample_input/example01.o b/sample_input/example01.o
index 4988f01c45881d666ed9f8f763e1208a7a0d1cf6..4a47d1fdffc0d9a8b0da054006508b5b315403cc 100644
--- a/sample_input/example01.o
+++ b/sample_input/example01.o
@@ -1 +1 @@
-000000000000000000000000010110000000000000000000000000000000110000000010001000001000100000100100000000100100000010010000001001000011110000001000000100000000000000111100000010010001000000000000001101010010100100000000000001000000000101000000010100000010010000000001011000000101100000100100001001100011000100000000000000010010010101101011000000000000000100000001001000000100100000100101000101010110100011111111111111000010011001010010000000000000001000100101011010110000000000000001000000000001000110010000010000000000000000010010100010000100001000000010001100101001100000100100000101010110100111111111111110100000000010111111001010000010000100000010001100101000000000100111000100010100100000000000000000010000100000010000000000000000011000110110000100001111000011110000000000000000000000000000011001000000000000000000000000001100100000010010001101000101011001111000
\ No newline at end of file
+000000000000000000000000010110000000000000000000000000000000110000000010001000001000100000100100000000100100000010010000001001000011110000001000000100000000000000111100000010010001000000000000001101010010100100000000000001000000000101000000010100000010010000000001011000000101100000100100001001100011000100000000000000010010010101101011000000000000000100000001001000000100100000100101000101010110100011111111111111000010011001010010000000000000001000100101011010110000000000000001000000000001000110010000010000000000000000010010100010000100001000000010001100101001100000100100000101010110100111111111111110100000000010111111001010000010000100000010001100101000000000100111000100010100100000000000000000010000100000010000000000000000011000110110000100001111000011110000000000000000000000000000011001000000000000000000000000001100100000010010001101000101011001111000
diff --git a/sample_input/example02.o b/sample_input/example02.o
index 4b6799324b6a3da2c0f4db1e3b9003f2115f10f7..7b2f8c10e1c8906a93f3202b714daf425f037211 100644
--- a/sample_input/example02.o
+++ b/sample_input/example02.o
@@ -1 +1 @@
-000000000000000000000000001111000000000000000000000000000001000000100100000000100000010000000000000000000100001000011000001000010000000001100010001000000010010100000000000001010011010000000000001001001100011100100111000011110000000011100010010000000010001100000000100000110100100000100111001101000100101000000000111111110000000000000110010110010100001000111100000001000001000000000000001101001000010000000000000011000000000101100101011010000010010000110000100011100000000001100100001111000001000100000000011001000010010000000010000000000000101000000000000000000000000000000011000000000000000000000000011110110000000000000000000100001111101000010001000100010001000100010001
\ No newline at end of file
+000000000000000000000000001111000000000000000000000000000001000000100100000000100000010000000000000000000100001000011000001000010000000001100010001000000010010100000000000001010011010000000000001001001100011100100111000011110000000011100010010000000010001100000000100000110100100000100111001101000100101000000000111111110000000000000110010110010100001000111100000001000001000000000000001101001000010000000000000011000000000101100101011010000010010000110000100011100000000001100100001111000001000100000000011001000010010000000010000000000000101000000000000000000000000000000011000000000000000000000000011110110000000000000000000100001111101000010001000100010001000100010001
diff --git a/sample_input/example02.s b/sample_input/example02.s
index 08b4665bc7fb09ec86521cfe950339ec523d1cff..063b66bee490304f846ed4bbd1b41460bd4a3f8b 100644
--- a/sample_input/example02.s
+++ b/sample_input/example02.s
@@ -5,17 +5,17 @@ array:	.word	3
 array2:	.word	0x11111111
 	.text
 main:
-	addiu	$2, $0, 1024	//00
-	addu	$3, $2, $2	//04
-	or	$4, $3, $2	//08
-	sll	$6, $5, 16	//0c
-	addiu	$7, $6, 9999	//10
-	subu	$8, $7, $2	//14
-	nor	$9, $4, $3	//18
-	ori	$10, $2, 255	//1c
-	srl	$11, $6, 5	//20
-	la	$4, array2	//24: lui $4, $4, 0x1000 / 28: ori $4, $4, 0x000c
-	and	$13, $11, $5	//2c
-	andi	$14, $4, 100	//30
-	lui	$17, 100	//34
-	addiu	$2, $0, 0xa	//38
+	addiu	$2, $0, 1024
+	addu	$3, $2, $2
+	or	$4, $3, $2
+	sll	$6, $5, 16
+	addiu	$7, $6, 9999
+	subu	$8, $7, $2
+	nor	$9, $4, $3
+	ori	$10, $2, 255
+	srl	$11, $6, 5
+	la	$4, array2
+	and	$13, $11, $5
+	andi	$14, $4, 100
+	lui	$17, 100
+	addiu	$2, $0, 0xa
diff --git a/sample_input/example03.s b/sample_input/example03.s
index 6423f798f043341e559be2b9bfd45a91929e2aed..c9957eab1b859e32cf407dbdb9c4b64a22813f73 100644
--- a/sample_input/example03.s
+++ b/sample_input/example03.s
@@ -5,18 +5,18 @@ data3:	.word	0x12345678
 	.word	0x12341
 	.text
 main:
-	lui	$3, 0x1000	//00
-	lw	$5, 0($3)	//04
-	lw	$8, 4($3)	//08
-	lw	$9, 8($3)	//0c
-	lw	$10, 12($3)	//10
-	addiu	$5, $5, 24	//14
-	addiu	$6, $0, 124	//18
-	addu	$7, $5, $6	//1c
-	sw	$5, 16($3)	//20
-	sw	$6, 20($3)	//24
-	sw	$7, 24($3)	//28
-	addiu	$3, $3, 12	//2c
-	lw	$12, -4($3)	//30
-	lw	$13, -8($3)	//34
-	lw	$14, -12($3)	//38
+	lui	$3, 0x1000
+	lw	$5, 0($3)
+	lw	$8, 4($3)
+	lw	$9, 8($3)
+	lw	$10, 12($3)
+	addiu	$5, $5, 24
+	addiu	$6, $0, 124
+	addu	$7, $5, $6
+	sw	$5, 16($3)
+	sw	$6, 20($3)
+	sw	$7, 24($3)
+	addiu	$3, $3, 12
+	lw	$12, -4($3)
+	lw	$13, -8($3)
+	lw	$14, -12($3)
diff --git a/sample_input/example04.o b/sample_input/example04.o
index 396fe82cc49f4b49c2cc2493897ad388c36859d9..b17849148f253271410406368ece1febf4aa2638 100644
--- a/sample_input/example04.o
+++ b/sample_input/example04.o
@@ -1 +1 @@
-00000000000000000000000001000100000000000000000000000000000000000000000010000101000100000010000100000000110001110001000000100001000000000110001001001000001000110000000101100000010110000010010000100101010010100000000000000001000000001100000000110000001001010000110000010000000000000000100000000000000000000000000000100001000000000000011000111000100000000000000000000100001010001000001000101101010010010000000001100100000100010010000000000000000000010000001111100000000000000000100000000000010000110010000000101011000101001000000000000000000000010000100000010000000000000000001100110110000100001111000011110000
\ No newline at end of file
+000000000000000000000000010000000000000000000000000000000000000000000000100001010001000000100001000000001100011100010000001000010000000001100010010010000010001100000001011000000101100000100100001001010100101000000000000000010000000011000000001100000010010100001100000100000000000000000111000000000000011000111000100000000000000000000100001010001000001000101101010010010000000001100100000100010010000000000000000000010000001111100000000000000000100000000000010000110010000000101011000101001000000000000000000000010000100000010000000000000000001100110110000100001111000011110000
\ No newline at end of file
diff --git a/sample_input/example04.s b/sample_input/example04.s
index fef866a45e85543eafa1ceb144221b4ee4f35985..46c70849bfc143cba6d31218bf65540d28a2eed7 100644
--- a/sample_input/example04.s
+++ b/sample_input/example04.s
@@ -8,8 +8,7 @@ lab1:
 	and	$11, $11, $0
 	addiu	$10, $10, 0x1
 	or	$6, $6, $0
-	jal	lab3
-	addu	$0, $0, $0
+	jal	 lab3
 lab3:
 	sll	$7, $6, 2
 	srl	$5, $4, 2
diff --git a/sample_input/example05.o b/sample_input/example05.o
index e860d9e4f7c724c6196071c2332197cae2c857e6..deae504c8a39ce3a3463fc0cc2437e014349c284 100644
--- a/sample_input/example05.o
+++ b/sample_input/example05.o
@@ -1 +1 @@
-00000000000000000000000001101100000000000000000000000000000101000011110000001111000100000000000000110101111011110000000000001100001001011000110011111111100111000010010111001110111111111111111100100101101011011111111111111111000000001000010100010000001000010000000011000111000100000010000100000000011000100100100000100011000000010110000001011000001001000010010101001010000000000000000100000000110000000011000000100101000011000001000000000000000011010000000000000000000000000010000110001101111001100000000000000100000000000000011000111000100000001010110111100111000000000000100000000000000001000010100010000010000000001010000000101000001001110010110101001001111111111111110000010001001000000000000000000001000000111110000000000000000010000011110000010001000100000000000010001110001100100000000000010101000000000100001100100000001010110001010010000000000000000000000100001000000100000000000000001000001101100001000011110000111100000000000000000000000000000000001100000000000000000001000000000000000000000000111101001100001010100111111111111111111111111111111001111111111111111111111111111111
\ No newline at end of file
+000000000000000000000000011010000000000000000000000000000001010000111100000011110001000000000000001101011110111100000000000011000010010110001100111111111001110000100101110011101111111111111111001001011010110111111111111111110000000010000101000100000010000100000000110001110001000000100001000000000110001001001000001000110000000101100000010110000010010000100101010010100000000000000001000000001100000000110000001001010000110000010000000000000000110010001101111001100000000000000100000000000000011000111000100000001010110111100111000000000000100000000000000001000010100010000010000000001010000000101000001001110010110101001001111111111111110000010001001000000000000000000001000000111110000000000000000010000011110000010001000100000000000010001110001100100000000000000000000000000100001100100000001010110001010010000000000000000000000100001000000100000000000000001000001101100001000011110000111100000000000000000000000000000000001100000000000000000001000000000000000000000000111101001100001010100111111111111111111111111111111001111111111111111111111111111111
\ No newline at end of file
diff --git a/sample_input/example05.s b/sample_input/example05.s
index a43ea04f53afbf832a42b916e438d9c0b45da35a..1a81c736c9f87e4fbfb981b701ebea9d9012a36b 100644
--- a/sample_input/example05.s
+++ b/sample_input/example05.s
@@ -13,26 +13,25 @@ main:
 	addu	$2, $4, $5
 	addu	$2, $6, $7
 	subu	$9, $3, $2
-cse561:
+cs311:
 	and	$11, $11, $0
 	addiu	$10, $10, 0x1
 	or	$6, $6, $0
-	jal	cse562
-	addu	$0, $0, $0
-cse562:
+	jal	cs312
+cs312:
 	lw	$6, 4($15)
 	sll	$7, $6, 2
 	sw	$7, 8($15)
 	srl	$5, $4, 2
 	nor	$5, $5, $0
 	sltiu	$9, $10, -4
-	beq	$9, $0, cse563
+	beq	$9, $0, cs313
 	jr	$31
-cse563:
+cs313:
 	lui	$17, 0x1000
 	lw	$18, 0($17)
 	sltu	$4, $2, $3
-	bne	$4, $0, cse564
-	j	cse561
-cse564:
+	bne	$4, $0, cs314
+	j	cs311
+cs314:
 	ori	$16, $16, 0xf0f0
diff --git a/sample_input/fact.o b/sample_input/fact.o
new file mode 100644
index 0000000000000000000000000000000000000000..b59d6b6da8a26b0e9fa2772d6c68c79f5ba985a3
--- /dev/null
+++ b/sample_input/fact.o
@@ -0,0 +1 @@
+0000000000000000000000000010010000000000000000000000000000000000101011111010010000000000000000000010110010001000000000000000000100010001000000000000000000000001001001000000001000000000000000010010010010000100111111111111111100001100000100000000000000000000100011111010010000000000000000001000111110111111000000000000010000000000100000100001000000100001
\ No newline at end of file
diff --git a/sample_input/fact.s b/sample_input/fact.s
new file mode 100644
index 0000000000000000000000000000000000000000..86651661c28882c22ccdff339f145b243fc5103f
--- /dev/null
+++ b/sample_input/fact.s
@@ -0,0 +1,13 @@
+	.data
+	.text
+main:
+	sw	$a0, 0($sp)
+	sltiu	$t0, $a0, 1
+	beq	$t0, $zero, L1
+	addiu	$v0, $zero, 1
+L1:
+	addiu	$a0, $a0, -1
+	jal	main
+	lw	$a0, 0($sp)
+	lw	$ra, 4($sp)
+	addu	$v0, $a0, $v0
diff --git a/sample_input/leaf_example.o b/sample_input/leaf_example.o
index 22ae6e0c6e238bcce19654b3efaf2eba221e721e..552ecf3d3e0ec586bf514762acaf79922e564de3 100644
--- a/sample_input/leaf_example.o
+++ b/sample_input/leaf_example.o
@@ -1 +1 @@
-000000000000000000000000001001000000000000000000000000000001000000111100000001000001000000000000100011001000010100000000000001001000110010000110000000000000100010001100100001110000000000001100100011001000010000000000000000000000000010000101010000000010000100000000110001110100100000100001000000010010100010000000001000110000001000000000000100000010000100000000000000000000000000000001000000000000000000000000000000100000000000000000000000000000001100000000000000000000000000000100
\ No newline at end of file
+000000000000000000000000000100000000000000000000000000000000000000000000100001010100000000100001000000001100011101001000001000010000000100001001100000000010001100000010000000000001000000100001
\ No newline at end of file
diff --git a/sample_input/leaf_example.s b/sample_input/leaf_example.s
index 730ae70732999a342010af6678aa84d0a8b3d6ca..f1f2d88c1619da09157f8506d14317fc8806997e 100644
--- a/sample_input/leaf_example.s
+++ b/sample_input/leaf_example.s
@@ -1,17 +1,7 @@
 	.data
-data1:	.word	1
-data2:	.word	2
-data3:	.word	3
-data4:	.word	4
 	.text
 main:
-	la	$4, data1	# 00
-	lw	$5, 4($4)	# 04
-	lw	$6, 8($4)	# 08
-	lw	$7, 12($4)	# 0c
-	lw	$4, 0($4)	# 10
-
-	addu	$8, $4, $5	# 14
-	addu	$9, $6, $7	# 18
-	subu	$16, $9, $8	# 1c
-	addu	$2, $16, $0	# 20
+	addu	$t0, $a0, $a1
+	addu	$t1, $a2, $a3
+	subu	$s0, $t0, $t1
+	addu	$v0, $s0, $zero
diff --git a/sample_output/example01 b/sample_output/example01
index 00e0e56427d1842937b3f3f85c6f0eea96094de9..9dc3766350ce008ef9bd7bffe9659d77d016cff5 100644
--- a/sample_output/example01
+++ b/sample_output/example01
@@ -1,700 +1,8 @@
-Simulating for 100 instructions...
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 1:0x00400000|          |          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 2:0x00400004|0x00400000|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 3:0x00400008|0x00400004|0x00400000|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 4:0x0040000c|0x00400008|0x00400004|0x00400000|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 5:0x00400010|0x0040000c|0x00400008|0x00400004|0x00400000
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 6:0x00400014|0x00400010|0x0040000c|0x00400008|0x00400004
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 7:0x00400018|0x00400014|0x00400010|0x0040000c|0x00400008
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 8:0x0040001c|0x00400018|0x00400014|0x00400010|0x0040000c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 9:0x00400020|0x0040001c|0x00400018|0x00400014|0x00400010
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 10:0x00400024|0x00400020|0x0040001c|0x00400018|0x00400014
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 11:0x00400028|0x00400024|0x00400020|0x0040001c|0x00400018
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 12:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 13:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 14:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 15:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 16:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 17:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 18:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 19:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 20:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 21:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 22:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 23:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 24:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 25:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 26:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 27:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 28:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 29:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 30:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 31:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 32:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 33:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 34:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 35:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 36:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 37:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 38:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 39:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 40:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 41:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 42:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 43:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 44:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 45:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 46:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 47:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 48:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 49:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 50:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 51:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 52:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 53:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 54:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 55:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 56:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 57:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 58:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 59:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 60:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 61:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 62:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 63:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 64:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 65:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 66:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 67:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 68:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 69:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 70:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 71:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 72:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 73:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 74:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 75:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 76:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 77:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 78:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 79:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 80:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 81:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 82:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 83:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 84:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 85:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 86:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 87:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 88:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 89:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 90:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 91:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 92:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 93:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 94:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 95:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 96:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 97:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 98:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 99:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 100:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 101:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 102:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 103:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 104:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 105:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 106:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 107:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 108:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 109:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 110:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 111:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 112:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 113:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 114:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 115:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 116:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 117:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 118:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 119:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 120:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 121:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 122:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 123:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 124:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 125:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 126:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 127:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 128:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 129:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 130:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 131:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 132:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 133:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 134:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 135:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 136:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 137:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 138:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 139:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 140:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 141:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 142:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 143:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 144:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 145:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 146:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 147:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 148:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 149:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 150:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 151:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 152:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 153:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 154:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 155:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 156:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 157:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 158:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 159:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 160:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 161:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 162:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 163:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 164:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 165:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 166:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 167:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 168:          |          |          |0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 169:0x0040001c|          |          |          |0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 170:0x00400020|0x0040001c|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 171:0x00400024|0x00400020|0x0040001c|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 172:0x00400028|0x00400024|0x00400020|0x0040001c|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 173:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
+Simulating for 50 cycles...
 
 Current register values :
 -------------------------------------
-PC: 0x00400030
+PC: 0x00400028
 Registers:
 R0: 0x00000000
 R1: 0x00000000
@@ -707,13 +15,13 @@ R7: 0x00000000
 R8: 0x10000000
 R9: 0x10000004
 R10: 0x00000000
-R11: 0x00000017
+R11: 0x0000000b
 R12: 0x00000000
 R13: 0x00000000
 R14: 0x00000000
 R15: 0x00000000
 R16: 0x00000000
-R17: 0x00000018
+R17: 0x0000000b
 R18: 0x00000000
 R19: 0x00000000
 R20: 0x00000000
@@ -729,5 +37,11 @@ R29: 0x00000000
 R30: 0x00000000
 R31: 0x00000000
 
-Simulator halted after 173 cycles
+Memory content [0x10000000..0x10000010] :
+-------------------------------------
+0x10000000: 0x00000064
+0x10000004: 0x000000c8
+0x10000008: 0x12345678
+0x1000000c: 0x00000000
+0x10000010: 0x00000000
 
diff --git a/sample_output/example02 b/sample_output/example02
index aaa50c2001deeb06f10cf4b5a99809788d7e4d56..373da2c6a290bb641f9d3250718064615b3734c5 100644
--- a/sample_output/example02
+++ b/sample_output/example02
@@ -1,80 +1,7 @@
-Simulating for 100 instructions...
+Simulating for 50 cycles...
 
-Current pipeline PC state :
--------------------------------------
-CYCLE 1:0x00400000|          |          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 2:0x00400004|0x00400000|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 3:0x00400008|0x00400004|0x00400000|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 4:0x0040000c|0x00400008|0x00400004|0x00400000|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 5:0x00400010|0x0040000c|0x00400008|0x00400004|0x00400000
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 6:0x00400014|0x00400010|0x0040000c|0x00400008|0x00400004
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 7:0x00400018|0x00400014|0x00400010|0x0040000c|0x00400008
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 8:0x0040001c|0x00400018|0x00400014|0x00400010|0x0040000c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 9:0x00400020|0x0040001c|0x00400018|0x00400014|0x00400010
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 10:0x00400024|0x00400020|0x0040001c|0x00400018|0x00400014
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 11:0x00400028|0x00400024|0x00400020|0x0040001c|0x00400018
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 12:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 13:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 14:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 15:0x00400038|0x00400034|0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 16:          |0x00400038|0x00400034|0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 17:          |          |0x00400038|0x00400034|0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 18:          |          |          |0x00400038|0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 19:          |          |          |          |0x00400038
+Run bit unset pc: 40003c
+Simulator halted
 
 Current register values :
 -------------------------------------
@@ -113,5 +40,3 @@ R29: 0x00000000
 R30: 0x00000000
 R31: 0x00000000
 
-Simulator halted after 19 cycles
-
diff --git a/sample_output/example03 b/sample_output/example03
index cb975499650e44a6530437bb71c5886d39a75d04..a64e2bf490028aae408feac2f71fc307f557bbac 100644
--- a/sample_output/example03
+++ b/sample_output/example03
@@ -1,80 +1,7 @@
-Simulating for 100 instructions...
+Simulating for 100 cycles...
 
-Current pipeline PC state :
--------------------------------------
-CYCLE 1:0x00400000|          |          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 2:0x00400004|0x00400000|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 3:0x00400008|0x00400004|0x00400000|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 4:0x0040000c|0x00400008|0x00400004|0x00400000|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 5:0x00400010|0x0040000c|0x00400008|0x00400004|0x00400000
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 6:0x00400014|0x00400010|0x0040000c|0x00400008|0x00400004
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 7:0x00400018|0x00400014|0x00400010|0x0040000c|0x00400008
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 8:0x0040001c|0x00400018|0x00400014|0x00400010|0x0040000c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 9:0x00400020|0x0040001c|0x00400018|0x00400014|0x00400010
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 10:0x00400024|0x00400020|0x0040001c|0x00400018|0x00400014
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 11:0x00400028|0x00400024|0x00400020|0x0040001c|0x00400018
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 12:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 13:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 14:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 15:0x00400038|0x00400034|0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 16:          |0x00400038|0x00400034|0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 17:          |          |0x00400038|0x00400034|0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 18:          |          |          |0x00400038|0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 19:          |          |          |          |0x00400038
+Run bit unset pc: 40003c
+Simulator halted
 
 Current register values :
 -------------------------------------
@@ -113,5 +40,3 @@ R29: 0x00000000
 R30: 0x00000000
 R31: 0x00000000
 
-Simulator halted after 19 cycles
-
diff --git a/sample_output/example04 b/sample_output/example04
index 6afa5b94855466aed34ab405bf8ec0321ee0f8ec..f96e7a8b5a760a50d9766a7098327ec2c7d408af 100644
--- a/sample_output/example04
+++ b/sample_output/example04
@@ -1,500 +1,16 @@
-Simulating for 100 instructions...
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 1:0x00400000|          |          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 2:0x00400004|0x00400000|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 3:0x00400008|0x00400004|0x00400000|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 4:0x0040000c|0x00400008|0x00400004|0x00400000|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 5:0x00400010|0x0040000c|0x00400008|0x00400004|0x00400000
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 6:0x00400014|0x00400010|0x0040000c|0x00400008|0x00400004
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 7:0x00400018|0x00400014|0x00400010|0x0040000c|0x00400008
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 8:0x0040001c|0x00400018|0x00400014|0x00400010|0x0040000c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 9:0x00400020|          |0x00400018|0x00400014|0x00400010
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 10:0x00400024|0x00400020|          |0x00400018|0x00400014
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 11:0x00400028|0x00400024|0x00400020|          |0x00400018
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 12:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 13:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 14:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 15:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 16:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 17:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 18:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 19:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 20:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 21:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 22:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 23:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 24:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 25:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 26:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 27:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 28:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 29:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 30:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 31:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 32:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 33:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 34:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 35:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 36:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 37:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 38:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 39:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 40:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 41:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 42:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 43:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 44:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 45:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 46:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 47:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 48:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 49:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 50:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 51:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 52:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 53:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 54:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 55:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 56:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 57:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 58:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 59:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 60:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 61:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 62:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 63:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 64:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 65:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 66:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 67:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 68:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 69:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 70:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 71:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 72:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 73:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 74:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 75:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 76:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 77:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 78:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 79:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 80:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 81:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 82:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 83:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 84:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 85:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 86:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 87:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 88:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 89:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 90:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 91:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 92:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 93:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 94:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 95:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 96:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 97:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 98:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 99:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 100:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 101:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 102:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 103:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 104:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 105:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 106:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 107:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 108:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 109:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 110:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 111:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 112:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 113:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 114:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 115:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 116:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 117:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 118:0x00400024|0x00400020|          |0x00400030|0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 119:0x00400028|0x00400024|0x00400020|          |0x00400030
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 120:0x0040002c|0x00400028|0x00400024|0x00400020|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 121:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 122:0x00400034|0x00400030|0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 123:0x00400020|          |0x00400030|0x0040002c|0x00400028
-
+Simulating for 100 cycles...
+
+Unknown function code type: 8
+Unknown function code type: 8
+Unknown function code type: 8
+Unknown function code type: 8
+Unknown function code type: 8
+Unknown function code type: 8
+Unknown function code type: 8
+Unknown function code type: 8
 Current register values :
 -------------------------------------
-PC: 0x00400024
+PC: 0x00400010
 Registers:
 R0: 0x00000000
 R1: 0x00000000
@@ -506,7 +22,7 @@ R6: 0x00000000
 R7: 0x00000000
 R8: 0x00000000
 R9: 0x00000001
-R10: 0x00000001
+R10: 0x00000008
 R11: 0x00000000
 R12: 0x00000000
 R13: 0x00000000
@@ -529,5 +45,3 @@ R29: 0x00000000
 R30: 0x00000000
 R31: 0x00400020
 
-Simulator halted after 123 cycles
-
diff --git a/sample_output/example05 b/sample_output/example05
index 4eb106a0eef3c3d712df7d52e258240970e4012a..cadfe68874ab49516c219ea960cedcc255e6832c 100644
--- a/sample_output/example05
+++ b/sample_output/example05
@@ -1,512 +1,13 @@
-Simulating for 100 instructions...
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 1:0x00400000|          |          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 2:0x00400004|0x00400000|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 3:0x00400008|0x00400004|0x00400000|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 4:0x0040000c|0x00400008|0x00400004|0x00400000|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 5:0x00400010|0x0040000c|0x00400008|0x00400004|0x00400000
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 6:0x00400014|0x00400010|0x0040000c|0x00400008|0x00400004
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 7:0x00400018|0x00400014|0x00400010|0x0040000c|0x00400008
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 8:0x0040001c|0x00400018|0x00400014|0x00400010|0x0040000c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 9:0x00400020|0x0040001c|0x00400018|0x00400014|0x00400010
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 10:0x00400024|0x00400020|0x0040001c|0x00400018|0x00400014
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 11:0x00400028|0x00400024|0x00400020|0x0040001c|0x00400018
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 12:0x0040002c|0x00400028|0x00400024|0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 13:0x00400030|0x0040002c|0x00400028|0x00400024|0x00400020
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 14:0x00400034|          |0x0040002c|0x00400028|0x00400024
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 15:0x00400038|0x00400034|          |0x0040002c|0x00400028
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 16:0x0040003c|0x00400038|0x00400034|          |0x0040002c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 17:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 18:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 19:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 20:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 21:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 22:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 23:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 24:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 25:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 26:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 27:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 28:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 29:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 30:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 31:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 32:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 33:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 34:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 35:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 36:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 37:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 38:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 39:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 40:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 41:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 42:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 43:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 44:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 45:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 46:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 47:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 48:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 49:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 50:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 51:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 52:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 53:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 54:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 55:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 56:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 57:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 58:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 59:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 60:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 61:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 62:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 63:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 64:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 65:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 66:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 67:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 68:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 69:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 70:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 71:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 72:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 73:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 74:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 75:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 76:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 77:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 78:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 79:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 80:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 81:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 82:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 83:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 84:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 85:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 86:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 87:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 88:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 89:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 90:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 91:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 92:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 93:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 94:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 95:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 96:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 97:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 98:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 99:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 100:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 101:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 102:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 103:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 104:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 105:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 106:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 107:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 108:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 109:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 110:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 111:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 112:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 113:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 114:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 115:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 116:0x0040003c|0x00400038|0x00400034|          |0x00400050
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 117:0x0040003c|0x00400038|          |0x00400034|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 118:0x00400040|0x0040003c|0x00400038|          |0x00400034
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 119:0x00400044|0x00400040|0x0040003c|0x00400038|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 120:0x00400048|0x00400044|0x00400040|0x0040003c|0x00400038
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 121:0x0040004c|0x00400048|0x00400044|0x00400040|0x0040003c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 122:0x00400050|0x0040004c|0x00400048|0x00400044|0x00400040
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 123:0x00400054|0x00400050|0x0040004c|0x00400048|0x00400044
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 124:0x00400034|          |0x00400050|0x0040004c|0x00400048
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 125:0x00400038|0x00400034|          |0x00400050|0x0040004c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 126:0x0040003c|0x00400038|0x00400034|          |0x00400050
+Simulating for 100 cycles...
 
+Unknown function code type: 8
+Unknown function code type: 8
+Unknown function code type: 8
+Unknown function code type: 8
+Unknown function code type: 8
 Current register values :
 -------------------------------------
-PC: 0x00400040
+PC: 0x0040003c
 Registers:
 R0: 0x00000000
 R1: 0x00000000
@@ -518,15 +19,15 @@ R6: 0x7fffffff
 R7: 0xfffffffc
 R8: 0x00000000
 R9: 0x00000001
-R10: 0x00000001
+R10: 0x00000006
 R11: 0x00000000
 R12: 0xffffff9c
 R13: 0xffffffff
 R14: 0xffffffff
 R15: 0x1000000c
 R16: 0x00000000
-R17: 0x00000000
-R18: 0x00000000
+R17: 0x10000000
+R18: 0x00000003
 R19: 0x00000000
 R20: 0x00000000
 R21: 0x00000000
@@ -541,5 +42,3 @@ R29: 0x00000000
 R30: 0x00000000
 R31: 0x00400034
 
-Simulator halted after 126 cycles
-
diff --git a/sample_output/fact b/sample_output/fact
new file mode 100644
index 0000000000000000000000000000000000000000..4c21247ce4f24b119e7bae088b64211309f217f7
--- /dev/null
+++ b/sample_output/fact
@@ -0,0 +1,39 @@
+Simulating for 100 cycles...
+
+Current register values :
+-------------------------------------
+PC: 0x00400014
+Registers:
+R0: 0x00000000
+R1: 0x00000000
+R2: 0x00000001
+R3: 0x00000000
+R4: 0xffffffec
+R5: 0x00000000
+R6: 0x00000000
+R7: 0x00000000
+R8: 0x00000000
+R9: 0x00000000
+R10: 0x00000000
+R11: 0x00000000
+R12: 0x00000000
+R13: 0x00000000
+R14: 0x00000000
+R15: 0x00000000
+R16: 0x00000000
+R17: 0x00000000
+R18: 0x00000000
+R19: 0x00000000
+R20: 0x00000000
+R21: 0x00000000
+R22: 0x00000000
+R23: 0x00000000
+R24: 0x00000000
+R25: 0x00000000
+R26: 0x00000000
+R27: 0x00000000
+R28: 0x00000000
+R29: 0x00000000
+R30: 0x00000000
+R31: 0x0040001c
+
diff --git a/sample_output/leaf_example b/sample_output/leaf_example
index 91abf4ae112793d893e10bc096f1c6de12a13360..6a20083a6545bcddbf823514469a0cb836b93b0f 100644
--- a/sample_output/leaf_example
+++ b/sample_output/leaf_example
@@ -1,82 +1,29 @@
-Simulating for 100 instructions...
+Simulating for 100 cycles...
 
-Current pipeline PC state :
--------------------------------------
-CYCLE 1:0x00400000|          |          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 2:0x00400004|0x00400000|          |          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 3:0x00400008|0x00400004|0x00400000|          |          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 4:0x0040000c|0x00400008|0x00400004|0x00400000|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 5:0x00400010|0x0040000c|0x00400008|0x00400004|0x00400000
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 6:0x00400014|0x00400010|0x0040000c|0x00400008|0x00400004
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 7:0x00400018|0x00400014|0x00400010|0x0040000c|0x00400008
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 8:0x00400018|0x00400014|          |0x00400010|0x0040000c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 9:0x0040001c|0x00400018|0x00400014|          |0x00400010
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 10:0x00400020|0x0040001c|0x00400018|0x00400014|          
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 11:          |0x00400020|0x0040001c|0x00400018|0x00400014
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 12:          |          |0x00400020|0x0040001c|0x00400018
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 13:          |          |          |0x00400020|0x0040001c
-
-Current pipeline PC state :
--------------------------------------
-CYCLE 14:          |          |          |          |0x00400020
+Run bit unset pc: 400010
+Simulator halted
 
 Current register values :
 -------------------------------------
-PC: 0x00400024
+PC: 0x00400010
 Registers:
 R0: 0x00000000
 R1: 0x00000000
-R2: 0x00000004
+R2: 0x00000000
 R3: 0x00000000
-R4: 0x00000001
-R5: 0x00000002
-R6: 0x00000003
-R7: 0x00000004
-R8: 0x00000003
-R9: 0x00000007
+R4: 0x00000000
+R5: 0x00000000
+R6: 0x00000000
+R7: 0x00000000
+R8: 0x00000000
+R9: 0x00000000
 R10: 0x00000000
 R11: 0x00000000
 R12: 0x00000000
 R13: 0x00000000
 R14: 0x00000000
 R15: 0x00000000
-R16: 0x00000004
+R16: 0x00000000
 R17: 0x00000000
 R18: 0x00000000
 R19: 0x00000000
@@ -93,5 +40,3 @@ R29: 0x00000000
 R30: 0x00000000
 R31: 0x00000000
 
-Simulator halted after 14 cycles
-
diff --git a/util.c b/util.c
index 84a8e6396f264f96c04cb085493dae73d9b9d061..61a436d818c6afbfa9b58956f7667dc80a0599e2 100644
--- a/util.c
+++ b/util.c
@@ -9,8 +9,8 @@
 /***************************************************************/
 
 /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-/*    DO NOT MODIFY THIS FILE!                                  */
-/*    You should only modify the run.c, run.h and util.h file!  */
+/*          DO NOT MODIFY THIS FILE!                            */
+/*          You should only the parse.c and run.c files!        */
 /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
 
 #include "util.h"
@@ -32,14 +32,8 @@ mem_region_t MEM_REGIONS[] = {
 /***************************************************************/
 CPU_State CURRENT_STATE;
 int RUN_BIT;		/* run bit */
-int FETCH_BIT;		/* instruction fetch bit */
 int INSTRUCTION_COUNT;
 
-uint64_t MAX_INSTRUCTION_NUM;
-uint64_t CYCLE_COUNT;
-int BR_BIT;
-int FORWARDING_BIT;
-
 /***************************************************************/
 /* CPU State info.                                             */
 /***************************************************************/
@@ -53,7 +47,7 @@ int NUM_INST;
 /* Purpose: To parse main function argument                    */
 /*                                                             */
 /***************************************************************/
-char** str_split(char *a_str, const char a_delim){
+char** str_split(char *a_str, const char a_delim) {
     char** result    = 0;
     size_t count     = 0;
     char* tmp        = a_str;
@@ -63,12 +57,12 @@ char** str_split(char *a_str, const char a_delim){
     delim[1] = 0;
 
     /* Count how many elements will be extracted. */
-    while (*tmp){
-	if (a_delim == *tmp){
-	    count++;
-	    last_comma = tmp;
-	}
-	tmp++;
+    while (*tmp) {
+        if (a_delim == *tmp) {
+            count++;
+            last_comma = tmp;
+        }
+        tmp++;
     }
 
     /* Add space for trailing token. */
@@ -80,17 +74,17 @@ char** str_split(char *a_str, const char a_delim){
 
     result = malloc(sizeof(char*) * count);
 
-    if (result){
-	size_t idx  = 0;
-	char* token = strtok(a_str, delim);
-
-	while (token){
-	    assert(idx < count);
-	    *(result + idx++) = strdup(token);
-	    token = strtok(0, delim);
-	}
-	assert(idx == count - 1);
-	*(result + idx) = 0;
+    if (result) {
+        size_t idx  = 0;
+        char* token = strtok(a_str, delim);
+
+        while (token) {
+            assert(idx < count);
+            *(result + idx++) = strdup(token);
+            token = strtok(0, delim);
+        }
+        assert(idx == count - 1);
+        *(result + idx) = 0;
     }
 
     return result;
@@ -103,7 +97,7 @@ char** str_split(char *a_str, const char a_delim){
 /* Purpose: From binary to integer                             */
 /*                                                             */
 /***************************************************************/
-int fromBinary(const char *s){
+int fromBinary(const char *s) {
     return (int) strtol(s, NULL, 2);
 }
 
@@ -114,31 +108,22 @@ int fromBinary(const char *s){
 /* Purpose: Read a 32-bit word from memory                     */
 /*                                                             */
 /***************************************************************/
-uint32_t mem_read_32(uint32_t address){
+uint32_t mem_read_32(uint32_t address)
+{
     int i;
-    int valid_flag = 0;
-
     for (i = 0; i < MEM_NREGIONS; i++) {
-	if (address >= MEM_REGIONS[i].start &&
-		address < (MEM_REGIONS[i].start + MEM_REGIONS[i].size)) {
-	    uint32_t offset = address - MEM_REGIONS[i].start;
-
-	    valid_flag = 1;
-
-	    return
-		(MEM_REGIONS[i].mem[offset+3] << 24) |
-		(MEM_REGIONS[i].mem[offset+2] << 16) |
-		(MEM_REGIONS[i].mem[offset+1] <<  8) |
-		(MEM_REGIONS[i].mem[offset+0] <<  0);
-	}
-    }
-
-    if (!valid_flag){
-	printf("Memory Read Error: Exceed memory boundary 0x%x\n", address);
-	exit(1);
+        if (address >= MEM_REGIONS[i].start &&
+                address < (MEM_REGIONS[i].start + MEM_REGIONS[i].size)) {
+            uint32_t offset = address - MEM_REGIONS[i].start;
+
+            return
+                (MEM_REGIONS[i].mem[offset+3] << 24) |
+                (MEM_REGIONS[i].mem[offset+2] << 16) |
+                (MEM_REGIONS[i].mem[offset+1] <<  8) |
+                (MEM_REGIONS[i].mem[offset+0] <<  0);
+        }
     }
 
-
     return 0;
 }
 
@@ -149,27 +134,20 @@ uint32_t mem_read_32(uint32_t address){
 /* Purpose: Write a 32-bit word to memory                      */
 /*                                                             */
 /***************************************************************/
-void mem_write_32(uint32_t address, uint32_t value){
+void mem_write_32(uint32_t address, uint32_t value)
+{
     int i;
-    int valid_flag = 0;
-
     for (i = 0; i < MEM_NREGIONS; i++) {
-	if (address >= MEM_REGIONS[i].start &&
-		address < (MEM_REGIONS[i].start + MEM_REGIONS[i].size)) {
-	    uint32_t offset = address - MEM_REGIONS[i].start;
-
-	    valid_flag = 1;
-
-	    MEM_REGIONS[i].mem[offset+3] = (value >> 24) & 0xFF;
-	    MEM_REGIONS[i].mem[offset+2] = (value >> 16) & 0xFF;
-	    MEM_REGIONS[i].mem[offset+1] = (value >>  8) & 0xFF;
-	    MEM_REGIONS[i].mem[offset+0] = (value >>  0) & 0xFF;
-	    return;
-	}
-    }
-    if(!valid_flag){
-	printf("Memory Write Error: Exceed memory boundary 0x%x\n", address);
-	exit(1);
+        if (address >= MEM_REGIONS[i].start &&
+                address < (MEM_REGIONS[i].start + MEM_REGIONS[i].size)) {
+            uint32_t offset = address - MEM_REGIONS[i].start;
+
+            MEM_REGIONS[i].mem[offset+3] = (value >> 24) & 0xFF;
+            MEM_REGIONS[i].mem[offset+2] = (value >> 16) & 0xFF;
+            MEM_REGIONS[i].mem[offset+1] = (value >>  8) & 0xFF;
+            MEM_REGIONS[i].mem[offset+0] = (value >>  0) & 0xFF;
+            return;
+        }
     }
 }
 
@@ -180,53 +158,38 @@ void mem_write_32(uint32_t address, uint32_t value){
 /* Purpose   : Execute a cycle                                 */
 /*                                                             */
 /***************************************************************/
-void cycle(){
+void cycle() {
 
     process_instruction();
-    if(INSTRUCTION_COUNT >= MAX_INSTRUCTION_NUM)
-	RUN_BIT = FALSE;
-    CYCLE_COUNT++;
+    INSTRUCTION_COUNT++;
+
+    //for debug
+    //printf("%2d - Current PC: %x\n", INSTRUCTION_COUNT, CURRENT_STATE.PC);
 }
 
 /***************************************************************/
 /*                                                             */
 /* Procedure : run n                                           */
 /*                                                             */
-/* Purpose   : Simulate MIPS for n instructions                */
+/* Purpose   : Simulate MIPS for n cycles                      */
 /*                                                             */
 /***************************************************************/
-void run() {
+void run(int num_cycles) {
     int i;
 
     if (RUN_BIT == FALSE) {
-	printf("Can't simulate, Simulator is halted\n\n");
-	return;
+        printf("Can't simulate, Simulator is halted\n\n");
+        return;
     }
 
-    printf("Simulating for %lu instructions...\n\n", MAX_INSTRUCTION_NUM);
-
-    while (RUN_BIT)
-	cycle();
-    printf("Simulator halted after %lu cycles\n\n", CYCLE_COUNT);
-}
-
-/***************************************************************/
-/*                                                             */
-/* Procedure : go                                              */
-/*                                                             */
-/* Purpose   : Simulate MIPS until HALTed                      */
-/*                                                             */
-/***************************************************************/
-void go() {
-    if (RUN_BIT == FALSE) {
-	printf("Can't simulate, Simulator is halted\n\n");
-	return;
+    printf("Simulating for %d cycles...\n\n", num_cycles);
+    for (i = 0; i < num_cycles; i++) {
+        if (RUN_BIT == FALSE) {
+            printf("Simulator halted\n\n");
+            break;
+        }
+        cycle();
     }
-
-    printf("Simulating...\n\n");
-    while (RUN_BIT)
-	cycle();
-    printf("Simulator halted after %lu cycles\n\n", CYCLE_COUNT);
 }
 
 /***************************************************************/
@@ -238,12 +201,12 @@ void go() {
 /*                                                             */
 /***************************************************************/
 void mdump(int start, int stop) {
-    int address;
+    uint32_t address;
 
     printf("Memory content [0x%08x..0x%08x] :\n", start, stop);
     printf("-------------------------------------\n");
     for (address = start; address <= stop; address += 4)
-	printf("0x%08x: 0x%08x\n", address, mem_read_32(address));
+        printf("0x%08x: 0x%08x\n", address, mem_read_32(address));
     printf("\n");
 }
 
@@ -263,36 +226,10 @@ void rdump() {
     printf("PC: 0x%08x\n", CURRENT_STATE.PC);
     printf("Registers:\n");
     for (k = 0; k < MIPS_REGS; k++)
-	printf("R%d: 0x%08x\n", k, CURRENT_STATE.REGS[k]);
+        printf("R%d: 0x%08x\n", k, CURRENT_STATE.REGS[k]);
     printf("\n");
 }
 
-/***************************************************************/
-/*                                                             */
-/* Procedure : pdump                                           */
-/*                                                             */
-/* Purpose   : Dump current pipeline PC state                  */
-/*                                                             */
-/***************************************************************/
-void pdump() {
-    int k;
-
-    printf("Current pipeline PC state :\n");
-    printf("-------------------------------------\n");
-    printf("CYCLE %lu:", CYCLE_COUNT );
-    for(k = 0; k < 5; k++)
-    {
-	if(CURRENT_STATE.PIPE[k])
-	    printf("0x%08x", CURRENT_STATE.PIPE[k]);
-	else
-	    printf("          ");
-
-	if( k != PIPE_STAGE - 1 )
-	    printf("|");
-    }
-    printf("\n\n");
-}
-
 /***************************************************************/
 /*                                                             */
 /* Procedure : init_memory                                     */
@@ -303,8 +240,8 @@ void pdump() {
 void init_memory() {
     int i;
     for (i = 0; i < MEM_NREGIONS; i++) {
-	MEM_REGIONS[i].mem = malloc(MEM_REGIONS[i].size);
-	memset(MEM_REGIONS[i].mem, 0, MEM_REGIONS[i].size);
+        MEM_REGIONS[i].mem = malloc(MEM_REGIONS[i].size);
+        memset(MEM_REGIONS[i].mem, 0, MEM_REGIONS[i].size);
     }
 }
 
@@ -315,20 +252,18 @@ void init_memory() {
 /* Purpose   : Initialize instruction info                     */
 /*                                                             */
 /***************************************************************/
-void init_inst_info()
-{
+void init_inst_info() {
     int i;
 
-    for(i = 0; i < NUM_INST; i++)
-    {
-	INST_INFO[i].value = 0;
-	INST_INFO[i].opcode = 0;
-	INST_INFO[i].func_code = 0;
-	INST_INFO[i].r_t.r_i.rs = 0;
-	INST_INFO[i].r_t.r_i.rt = 0;
-	INST_INFO[i].r_t.r_i.r_i.r.rd = 0;
-	INST_INFO[i].r_t.r_i.r_i.imm = 0;
-	INST_INFO[i].r_t.r_i.r_i.r.shamt = 0;
-	INST_INFO[i].r_t.target = 0;
+    for(i = 0; i < NUM_INST; i++) {
+        INST_INFO[i].value = 0;
+        INST_INFO[i].opcode = 0;
+        INST_INFO[i].func_code = 0;
+        INST_INFO[i].r_t.r_i.rs = 0;
+        INST_INFO[i].r_t.r_i.rt = 0;
+        INST_INFO[i].r_t.r_i.r_i.r.rd = 0;
+        INST_INFO[i].r_t.r_i.r_i.imm = 0;
+        INST_INFO[i].r_t.r_i.r_i.r.shamt = 0;
+        INST_INFO[i].r_t.target = 0;
     }
 }
diff --git a/util.h b/util.h
index 25718d1fc8fd981a24affd61ddf5011e599dd336..adadc1464875a278e25fc7aa1231b3109fd6dfd2 100644
--- a/util.h
+++ b/util.h
@@ -8,6 +8,11 @@
 /*                                                             */
 /***************************************************************/
 
+/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
+/*          DO NOT MODIFY THIS FILE!                            */
+/*          You should only the parse.c and run.c files!        */
+/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
+
 #ifndef _UTIL_H_
 #define _UTIL_H_
 
@@ -27,65 +32,15 @@
 #define MEM_DATA_SIZE	0x00100000
 #define MIPS_REGS	32
 #define BYTES_PER_WORD	4
-#define PIPE_STAGE	5
+#define PIPE_STAGE      5  // 5 piple stages
 
-#define IF_STAGE 	0
-#define ID_STAGE	1
-#define EX_STAGE	2
-#define MEM_STAGE	3
-#define WB_STAGE	4
 
-/* You may add pipeline registers that you require */
-typedef struct CPU_State_Struct {
-	uint32_t PC;			/* program counter for the IF stage*/
-	uint32_t REGS[MIPS_REGS];	/* register file */
-	uint32_t REGS_LOCK[MIPS_REGS];	/* register lock to support stalls 
-					   Lock registers when data is not ready*/
-	
-	uint32_t PIPE[PIPE_STAGE];	/* PC being executed at each stage*/
-	uint32_t PIPE_STALL[PIPE_STAGE];
-	
-	//IF_ID_latch
-	uint32_t IF_ID_INST;
-	uint32_t IF_ID_NPC;
-
-	//ID_EX_latch
-	uint32_t ID_EX_NPC;
-	uint32_t ID_EX_REG1;
-	uint32_t ID_EX_REG2;
-	short ID_EX_IMM;
-	unsigned char ID_EX_DEST;
-
-	//EX_MEM_latch
-	uint32_t EX_MEM_NPC;
-	uint32_t EX_MEM_ALU_OUT;
-	uint32_t EX_MEM_W_VALUE;
-	uint32_t EX_MEM_BR_TARGET;
-	uint32_t EX_MEM_BR_TAKE;
-	unsigned char EX_MEM_DEST;
-
-	//MEM_WB_latch
-	uint32_t MEM_WB_NPC;
-	uint32_t MEM_WB_ALU_OUT;
-	uint32_t MEM_WB_MEM_OUT;
-	uint32_t MEM_WB_BR_TAKE;
-	unsigned char MEM_WB_DEST;
-
-	//Forwarding
-	unsigned char EX_MEM_FORWARD_REG;
-	unsigned char MEM_WB_FORWARD_REG;
-	uint32_t EX_MEM_FORWARD_VALUE;
-	uint32_t MEM_WB_FORWARD_VALUE;
-
-	//To choose right PC
-	uint32_t IF_PC;
-	uint32_t JUMP_PC;
-	uint32_t BRANCH_PC;
-} CPU_State;
 
+/* You should decode your instructions from the
+ * ASCII-binary format to this structured format */
 typedef struct inst_s {
     short opcode;
-    
+
     /*R-type*/
     short func_code;
 
@@ -108,19 +63,105 @@ typedef struct inst_s {
         uint32_t target;
     } r_t;
 
-    uint32_t value;
-    
-    //int32 encoding;
-    //imm_expr *expr;
-    //char *source_line;
+    int value;
 } instruction;
 
+typedef struct IF_ID_Struct {
+    instruction INSTR;
+
+    uint32_t NPC;
+} IF_ID;
+
+typedef struct ID_EX_Struct {
+  uint32_t NPC;
+
+  uint32_t REG1;    // Register value 1
+  uint32_t REG2;    // Register value 2
+
+  char RS;
+  char RD;
+  char RT;
+  uint32_t IMM;     // Immediate Field
+  char SHAMT;
+  char DEST;
+
+  char ALUOp;
+  // 1: add (ADDIU, ADDU, LW, SW)
+  // 2: sub (SUBU, BEQ, BNE)
+  // 3: AND (AND, ANDI)
+  // 4: OR (OR, ORI, NOR)
+  // 5: Shift Left (SLL)
+  // 6: Shift Right (SRL)
+  // 7: Set Less Than (SLTIU, SLTU)
+  // 8: Shift Left 16 (LUI)
+  // 9: JAL (JAL)
+  char ALUSrc; // Second Operand from Immediate -> 1
+  char ALUNeg; // NOR or BNE -> 1
+
+  char Branch; // branch -> 1
+  char MemRead;
+  char MemWrite;
+
+  char RegWrite;
+  char MemtoReg;
+  char LoadUse;
+} ID_EX;
+
+
+typedef struct EX_MEM_Struct {
+  uint32_t MemValue;
+  uint32_t DEST;
+  uint32_t ALU_OUT;
+  uint32_t BR_TARGET;
+
+  char Branch;
+  char MemRead;
+  char MemWrite;
+
+  char RegWrite;
+  char MemtoReg;
+} EX_MEM;
+
+typedef struct MEM_WB_Struct {
+  uint32_t PC;
+  uint32_t DEST;
+  uint32_t MEM_OUT;
+  uint32_t ALU_OUT;
+
+  char RegWrite;
+  char MemtoReg;
+} MEM_WB;
+
+
+typedef struct CPU_State_Struct {
+    uint32_t PC;		/* program counter */
+    uint32_t REGS[MIPS_REGS];	/* register file. */
+	   uint32_t PIPE[PIPE_STAGE];  /* pipeline stage */
+
+    IF_ID if_id;
+    ID_EX id_ex;
+    EX_MEM ex_mem;
+    MEM_WB mem_wb;
+
+    uint32_t STALL;       /* The number of needed stalls. Fetch when 0 */
+    uint32_t FLUSH;
+    char LoadUse;
+} CPU_State;
 
+
+
+/* All simulated memory will be managed by this structure
+ * use the mem_write_32() and mem_read_32() functions to
+ * access/modify the simulated memory */
 typedef struct {
     uint32_t start, size;
     uint8_t *mem;
 } mem_region_t;
 
+
+
+
+
 /* For PC * Registers */
 extern CPU_State CURRENT_STATE;
 
@@ -133,29 +174,21 @@ extern mem_region_t MEM_REGIONS[2];
 
 /* For Execution */
 extern int RUN_BIT;	/* run bit */
-extern int FETCH_BIT;	/* instruction fetch bit */
 extern int INSTRUCTION_COUNT;
 
-extern int BR_BIT;	/* Branch predictor enabled */
-extern int FORWARDING_BIT;
-extern uint64_t MAX_INSTRUCTION_NUM;
-extern uint64_t CYCLE_COUNT;
-
 /* Functions */
 char**		str_split(char *a_str, const char a_delim);
-int		fromBinary(const char *s);
+int			fromBinary(const char *s);
 uint32_t	mem_read_32(uint32_t address);
 void		mem_write_32(uint32_t address, uint32_t value);
 void		cycle();
-void		run();
-void		go();
+void		run(int num_cycles);
 void		mdump(int start, int stop);
 void		rdump();
-void		pdump();
 void		init_memory();
 void		init_inst_info();
 
-/* YOU IMPLEMENT THIS FUNCTION in the run.c file */
+/* YOU IMPLEMENT THIS FUNCTION */
 void	process_instruction();
 
 #endif