diff --git a/27 b/27
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/Tema_1_BOSTANGIU_LUCA_311CB.zip b/Tema_1_BOSTANGIU_LUCA_311CB.zip
new file mode 100644
index 0000000000000000000000000000000000000000..43b547123ada93d49a05d0df4d56414ead524cf0
Binary files /dev/null and b/Tema_1_BOSTANGIU_LUCA_311CB.zip differ
diff --git a/Tema_1_Bostangiu_Luca_final.zip b/Tema_1_Bostangiu_Luca_final.zip
new file mode 100644
index 0000000000000000000000000000000000000000..bc84e95ff249e0d4c68d38596ed21cc9263b0fa2
Binary files /dev/null and b/Tema_1_Bostangiu_Luca_final.zip differ
diff --git a/check b/check
new file mode 120000
index 0000000000000000000000000000000000000000..94d2b330d158bc4204b12d110646f2023391ebbd
--- /dev/null
+++ b/check
@@ -0,0 +1 @@
+/home/student/.cargo/bin/hw_checker
\ No newline at end of file
diff --git a/checker/cs/checkpatch.pl b/checker/cs/checkpatch.pl
old mode 100644
new mode 100755
diff --git a/data.json b/data.json
index 953360b8ec3ceb35fa476814d0d60f824d6d5868..2cd4b26c39eb63d55d036ca38544a1d2c3651ce3 100644
--- a/data.json
+++ b/data.json
@@ -4,200 +4,200 @@
       {
         "id": 0,
         "name": "MOV 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "MOV edx, 77\nMOV ebx, 23\nMOV eax, 96\nMOV eax, 23\nMOV ecx, 58\n",
+        "time_normal": 0.000867495,
+        "time_valgrind": 0.525388626,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 1,
         "name": "MOV 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "MOV eax, ecx\nMOV edx, edx\nMOV edx, 59\nMOV ebx, ebx\nMOV ecx, ebx\nMOV eax, ecx\nMOV ebx, 76\nMOV ebx, 89\n",
+        "time_normal": 0.002170064,
+        "time_valgrind": 0.721041122,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 2,
         "name": "LOGICAL 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "AND edx, 42\nXOR ebx, 41\nXOR eax, 39\n",
+        "time_normal": 0.001612708,
+        "time_valgrind": 0.630460676,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 3,
         "name": "LOGICAL 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "AND ecx, 73\nAND edx, 45\nAND eax, 6\nAND edx, eax\nOR eax, 19\nXOR ebx, eax\nAND eax, 44\nXOR edx, 89\nAND edx, 20\nAND eax, 41\n",
+        "time_normal": 0.000975351,
+        "time_valgrind": 0.671858675,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 4,
         "name": "ADD 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "ADD eax, edx\nADD ecx, 26\nADD ebx, ebx\nADD ebx, 63\n",
+        "time_normal": 0.000952725,
+        "time_valgrind": 0.674587168,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 5,
         "name": "ADD 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "ADD ecx, 65\nADD ebx, edx\nADD ebx, 20\nADD edx, eax\nADD ebx, edx\nADD edx, 23\nADD ecx, ebx\nADD ecx, 52\nADD eax, 83\n",
+        "time_normal": 0.001028645,
+        "time_valgrind": 0.809004342,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 6,
         "name": "SUB 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "SUB eax, eax\nSUB edx, ebx\nSUB ecx, ebx\nSUB eax, 55\nSUB ebx, 16\n",
+        "time_normal": 0.001030277,
+        "time_valgrind": 0.570598408,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 7,
         "name": "SUB 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "SUB ebx, 55\nSUB ebx, 22\nSUB ebx, 70\nSUB ebx, 90\nSUB ebx, 50\nSUB edx, 82\nSUB eax, 67\nSUB edx, 83\nSUB ebx, 28\nSUB ebx, ebx\n",
+        "time_normal": 0.001350359,
+        "time_valgrind": 0.360528494,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 8,
         "name": "MUL 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "MOV eax, edx\nMUL 8\nMOV edx, eax\nMOV eax, ecx\nMUL ecx\nMOV ecx, eax\nMOV eax, ecx\nMUL ebx\nMOV ecx, eax\n",
+        "time_normal": 0.001418259,
+        "time_valgrind": 0.34538312,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 9,
         "name": "MUL 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "MOV eax, ebx\nMUL 4\nMOV ebx, eax\nMOV eax, edx\nMUL 7\nMOV edx, eax\nMOV eax, ecx\nMUL 8\nMOV ecx, eax\nMOV eax, ecx\nMUL edx\nMOV ecx, eax\nMOV eax, ebx\nMUL 0\nMOV ebx, eax\nMOV eax, ebx\nMUL 1\nMOV ebx, eax\nMOV eax, ebx\nMUL ecx\nMOV ebx, eax\nMOV eax, edx\nMUL ebx\nMOV edx, eax\nMOV eax, ebx\nMUL edx\nMOV ebx, eax\n",
+        "time_normal": 0.001637144,
+        "time_valgrind": 0.370333193,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 10,
         "name": "DIV 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "MOV eax, ebx\nDIV 8\nMOV ebx, eax\nMOV eax, ebx\nDIV 4\nMOV ebx, eax\nError\nMOV eax, ecx\nDIV 5\nMOV ecx, eax\nMOV eax, ecx\nDIV ecx\nMOV ecx, eax\n",
+        "time_normal": 0.001822196,
+        "time_valgrind": 0.42422839,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 11,
         "name": "DIV 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "MOV eax, ecx\nDIV 2\nMOV ecx, eax\nMOV eax, ecx\nDIV 9\nMOV ecx, eax\nMOV eax, ebx\nDIV 8\nMOV ebx, eax\nMOV eax, ebx\nDIV 6\nMOV ebx, eax\nMOV eax, ecx\nDIV ebx\nMOV ecx, eax\nMOV eax, ecx\nDIV ecx\nMOV ecx, eax\nMOV eax, ebx\nDIV ebx\nMOV ebx, eax\nMOV eax, ebx\nDIV 5\nMOV ebx, eax\nMOV eax, ebx\nDIV 2\nMOV ebx, eax\nMOV eax, ecx\nDIV ebx\nMOV ecx, eax\n",
+        "time_normal": 0.001187574,
+        "time_valgrind": 0.40874667,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 12,
         "name": "SHIFT 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "SHR edx, 20\nSHR eax, 24\nSHR ebx, 4\nSHR ebx, 7\nSHL edx, 2\n",
+        "time_normal": 0.001396248,
+        "time_valgrind": 0.387548622,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 13,
         "name": "SHIFT 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "SHR ecx, 17\nSHR eax, 2\nSHR ecx, 16\nSHR edx, 11\nSHR edx, 10\nSHL eax, 0\nSHL ebx, 29\nSHL edx, 8\nSHL ecx, 29\n",
+        "time_normal": 0.001186003,
+        "time_valgrind": 0.468562614,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 14,
         "name": "IF 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "CMP edx, 8\nJL end_label\nMOV eax, ebx\nMUL edx\nMOV ebx, eax\nend_label:\nCMP edx, 14\nJNE end_label\nOR ebx, ebx\nMOV eax, edx\nMUL ebx\nMOV edx, eax\nSHL edx, 1\nSUB eax, eax\nend_label:\nCMP edx, 67\nJG end_label\nError\nend_label:\nCMP eax, 96\nJG end_label\nSUB edx, ecx\nend_label:\nCMP edx, 82\nJNE end_label\nSUB eax, 10\nSUB ebx, 72\nend_label:\n",
+        "time_normal": 0.001163832,
+        "time_valgrind": 0.393855891,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 15,
         "name": "IF 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "CMP edx, 95\nJG end_label\nSUB ebx, 72\nMOV eax, edx\nMUL edx\nMOV edx, eax\nADD ebx, ecx\nXOR ebx, 65\nADD eax, ebx\nend_label:\nCMP edx, 87\nJL end_label\nSHL edx, 26\nMOV eax, ebx\nMUL 10\nMOV ebx, eax\nADD edx, edx\nMOV ecx, edx\nMOV eax, ebx\nMUL ecx\nMOV ebx, eax\nend_label:\nCMP eax, 82\nJNE end_label\nADD eax, 37\nSUB ecx, ebx\nMOV eax, ecx\nXOR edx, 51\nSUB ebx, 50\nend_label:\nCMP ebx, 14\nJGE end_label\nADD edx, 13\nSHR ebx, 27\nADD eax, 57\nSUB eax, 65\nend_label:\nCMP eax, 33\nJNE end_label\nADD edx, 61\nADD eax, 86\nMOV eax, ebx\nDIV 10\nMOV ebx, eax\nend_label:\nCMP ebx, 46\nJL end_label\nError\nSHR edx, 29\nSUB ecx, 2\nSHL eax, 6\nend_label:\nCMP edx, 99\nJLE end_label\nMOV eax, 40\nMOV eax, ecx\nMUL 4\nMOV ecx, eax\nSUB eax, 82\nSHR ebx, 27\nAND eax, 87\nend_label:\nCMP eax, 75\nJNE end_label\nSHR edx, 10\nend_label:\nCMP ecx, 97\nJNE end_label\nMOV eax, edx\nMUL 2\nMOV edx, eax\nend_label:\nCMP edx, 50\nJLE end_label\nSUB eax, 24\nend_label:\n",
+        "time_normal": 0.001903966,
+        "time_valgrind": 0.482758219,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 16,
         "name": "WHILE 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "start_loop:\nCMP ebx, 9\nJNE end_label\nSUB ecx, ebx\nJMP start_loop\nend_label:\nstart_loop:\nCMP ecx, 23\nJGE end_label\nOR ecx, 11\nAND edx, edx\nXOR ecx, 43\nJMP start_loop\nend_label:\nstart_loop:\nCMP edx, 50\nJNE end_label\nXOR edx, 69\nMOV ebx, ecx\nJMP start_loop\nend_label:\nstart_loop:\nCMP eax, 53\nJLE end_label\nMOV eax, ecx\nDIV 3\nMOV ecx, eax\nMOV ebx, edx\nSHR ecx, 20\nADD edx, edx\nMOV eax, 49\nJMP start_loop\nend_label:\n",
+        "time_normal": 0.000994634,
+        "time_valgrind": 0.506863811,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 17,
         "name": "WHILE 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "start_loop:\nCMP edx, 85\nJNE end_label\nMOV eax, ecx\nMUL 7\nMOV ecx, eax\nMUL 9\nSHR ebx, 27\nSUB edx, 5\nJMP start_loop\nend_label:\nstart_loop:\nCMP eax, 64\nJL end_label\nADD ebx, eax\nMOV eax, ecx\nDIV ecx\nMOV ecx, eax\nSHR ebx, 23\nADD eax, edx\nMOV edx, edx\nJMP start_loop\nend_label:\nstart_loop:\nCMP edx, 47\nJLE end_label\nAND ebx, 57\nJMP start_loop\nend_label:\nstart_loop:\nCMP ebx, 15\nJG end_label\nMOV eax, ecx\nDIV 8\nMOV ecx, eax\nMOV edx, 77\nOR ebx, edx\nADD edx, 4\nJMP start_loop\nend_label:\nstart_loop:\nCMP ecx, 29\nJNE end_label\nMOV eax, eax\nADD eax, 32\nMOV ebx, 30\nMOV eax, ebx\nDIV 7\nMOV ebx, eax\nSUB edx, 59\nJMP start_loop\nend_label:\nstart_loop:\nCMP ebx, 47\nJNE end_label\nSHR eax, 28\nMOV eax, ecx\nDIV 9\nMOV ecx, eax\nADD ebx, 34\nMOV eax, ebx\nMUL eax\nMOV ebx, eax\nJMP start_loop\nend_label:\nstart_loop:\nCMP ebx, 25\nJNE end_label\nADD ecx, 52\nMOV eax, ebx\nDIV 7\nMOV ebx, eax\nJMP start_loop\nend_label:\nstart_loop:\nCMP eax, 18\nJG end_label\nMOV ecx, ebx\nSUB eax, ebx\nJMP start_loop\nend_label:\nstart_loop:\nCMP ecx, 70\nJG end_label\nMOV eax, 22\nMOV eax, ecx\nDIV 5\nMOV ecx, eax\nMOV eax, ecx\nDIV ecx\nMOV ecx, eax\nSHR ebx, 23\nMOV eax, ebx\nMUL 0\nMOV ebx, eax\nJMP start_loop\nend_label:\n",
+        "time_normal": 0.001491765,
+        "time_valgrind": 0.509807919,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 18,
         "name": "FOR 1",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "MOV edx, 0\nstart_loop:\nCMP edx, 65\nJGE end_label\nSHL ecx, 13\nADD edx, 1\nJMP start_loop\nend_loop:\nMOV eax, 0\nstart_loop:\nCMP eax, 70\nJG end_label\nSUB edx, 23\nMOV eax, ecx\nDIV 5\nMOV ecx, eax\nMOV ebx, ebx\nOR ecx, 80\nMOV ecx, eax\nADD eax, 1\nJMP start_loop\nend_loop:\nMOV edx, 0\nstart_loop:\nCMP edx, 14\nJGE end_label\nSHR edx, 5\nSUB edx, eax\nADD edx, 1\nJMP start_loop\nend_loop:\nMOV ecx, 0\nstart_loop:\nCMP ecx, 23\nJG end_label\nMOV eax, ecx\nDIV 5\nMOV ecx, eax\nAND edx, 93\nADD ecx, 1\nJMP start_loop\nend_loop:\n",
+        "time_normal": 0.001398714,
+        "time_valgrind": 0.473573021,
         "timeout": 30000,
         "test_score": 5
       },
       {
         "id": 19,
         "name": "FOR 2",
-        "status": "0",
-        "log": "",
-        "time_normal": 0.0,
-        "time_valgrind": 0.0,
+        "status": "5",
+        "log": "MOV edx, 0\nstart_loop:\nCMP edx, 54\nJG end_label\nXOR eax, 24\nSHR edx, 10\nMOV eax, ebx\nMUL 6\nMOV ebx, eax\nADD edx, 1\nJMP start_loop\nend_loop:\nMOV ebx, 0\nstart_loop:\nCMP ebx, 75\nJGE end_label\nADD ecx, 11\nXOR ebx, 80\nSUB edx, ecx\nMOV edx, 69\nADD ebx, 1\nJMP start_loop\nend_loop:\nMOV ebx, 0\nstart_loop:\nCMP ebx, 86\nJG end_label\nMUL 2\nADD ebx, 1\nJMP start_loop\nend_loop:\nMOV eax, 0\nstart_loop:\nCMP eax, 66\nJGE end_label\nADD ebx, 28\nMOV eax, 92\nSHR ebx, 21\nADD eax, 1\nJMP start_loop\nend_loop:\nMOV edx, 0\nstart_loop:\nCMP edx, 79\nJGE end_label\nMOV eax, ebx\nMUL ebx\nMOV ebx, eax\nSUB eax, 25\nXOR ecx, eax\nMOV eax, edx\nMUL 5\nMOV edx, eax\nSHL ecx, 11\nADD edx, 1\nJMP start_loop\nend_loop:\nMOV edx, 0\nstart_loop:\nCMP edx, 47\nJGE end_label\nMOV eax, ecx\nMUL 10\nMOV ecx, eax\nADD edx, 1\nJMP start_loop\nend_loop:\nMOV ecx, 0\nstart_loop:\nCMP ecx, 29\nJGE end_label\nOR edx, eax\nADD ebx, 93\nSHL edx, 30\nMOV ecx, 9\nADD ecx, 1\nJMP start_loop\nend_loop:\nMOV ecx, 0\nstart_loop:\nCMP ecx, 94\nJGE end_label\nMOV eax, ecx\nDIV 7\nMOV ecx, eax\nADD ecx, 59\nMOV eax, ecx\nDIV ecx\nMOV ecx, eax\nMOV eax, edx\nMUL 8\nMOV edx, eax\nADD ecx, 1\nJMP start_loop\nend_loop:\n",
+        "time_normal": 0.00202391,
+        "time_valgrind": 0.777773846,
         "timeout": 30000,
         "test_score": 5
       }
diff --git a/src/main.c b/src/main.c
index 27729cd9a8c6be96bc049d457d0bafdd6344e517..16479bc2da973522bc2781509e565cdba048d300 100644
--- a/src/main.c
+++ b/src/main.c
@@ -2,9 +2,258 @@
 #include <stdlib.h>
 #include <string.h>
 
-/**
- * Starting point of the program, write anything here
- */
-int main() {
-    return 0;
-}
\ No newline at end of file
+void mov(char *x, char *y)
+{
+	if (strlen(y) == 1 && *y > '9')
+		printf("MOV e%cx, e%cx\n", *x, *y);
+	else
+		printf("MOV e%cx, %s\n", *x, y);
+}
+
+void and(char *x, char *y)
+{
+	if (strlen(y) == 1 && *y > '9')
+		printf("AND e%cx, e%cx\n", *x, *y);
+	else
+		printf("AND e%cx, %s\n", *x, y);
+}
+
+void or(char *x, char *y)
+{
+	if (strlen(y) == 1 && *y > '9')
+		printf("OR e%cx, e%cx\n", *x, *y);
+	else
+		printf("OR e%cx, %s\n", *x, y);
+}
+
+void xor(char *x, char *y) {
+	if (strlen(y) == 1 && *y > '9')
+		printf("XOR e%cx, e%cx\n", *x, *y);
+	else
+		printf("XOR e%cx, %s\n", *x, y);
+}
+
+void add(char *x, char *y)
+{
+	if (strlen(y) == 1 && *y > '9')
+		printf("ADD e%cx, e%cx\n", *x, *y);
+	else
+		printf("ADD e%cx, %s\n", *x, y);
+}
+
+void sub(char *x, char *y)
+{
+	if (strlen(y) == 1 && *y > '9')
+		printf("SUB e%cx, e%cx\n", *x, *y);
+	else
+		printf("SUB e%cx, %s\n", *x, y);
+}
+
+void mul(char *x, char *y)
+{
+	if (x[0] != 'a')
+		printf("MOV eax, e%cx\n", *x);
+	if (strlen(y) == 1 && *y > '9')
+		printf("MUL e%cx\n", *y);
+	else
+		printf("MUL %s\n", y);
+	if (x[0] != 'a')
+		printf("MOV e%cx, eax\n", *x);
+}
+
+void DIV(char *x, char *y)
+{
+	if (y[0] == '0') {
+		printf("Error\n");
+	} else {
+		printf("MOV eax, e%cx\n", *x);
+		if (strlen(y) == 1 && *y > '9')
+			printf("DIV e%cx\n", *y);
+		else
+			printf("DIV %s\n", y);
+		printf("MOV e%cx, eax\n", *x);
+	}
+}
+
+void shl(char *x, char *y)
+{
+	printf("SHL e%cx, %s\n", *x, y);
+}
+
+void shr(char *x, char *y)
+{
+	printf("SHR e%cx, %s\n", *x, y);
+}
+
+void cmp(char *x, char *y)
+{
+	if (strlen(y) == 1 && *y > '9')
+		printf("CMP e%cx, e%cx\n", *x, *y);
+	else
+		printf("CMP e%cx, %s\n", *x, y);
+}
+
+void jmp(char *label)
+{
+	printf("JMP %s\n", label);
+}
+
+void jne(char *label)
+{
+	printf("JNE %s\n", label);
+}
+
+void jg(char *label)
+{
+	printf("JG %s\n", label);
+}
+
+void jge(char *label)
+{
+	printf("JGE %s\n", label);
+}
+
+void jl(char *label)
+{
+	printf("JL %s\n", label);
+}
+
+void jle(char *label)
+{
+	printf("JLE %s\n", label);
+}
+
+void operatie(char *buffer)
+{
+	char *x, *y;
+	if (strchr(buffer, '&')) {
+		x = strchr(buffer, '=') + 2;
+		y = strchr(buffer, '&') + 2;
+		and(x, y);
+	} else if (strchr(buffer, '|')) {
+		x = strchr(buffer, '=') + 2;
+		y = strchr(buffer, '|') + 2;
+		or(x, y);
+	} else if (strchr(buffer, '^')) {
+		x = strchr(buffer, '=') + 2;
+		y = strchr(buffer, '^') + 2;
+		xor(x, y);
+	} else if (strchr(buffer, '+')) {
+		x = strchr(buffer, '=') + 2;
+		y = strchr(buffer, '+') + 2;
+		add(x, y);
+	} else if (strchr(buffer, '-')) {
+		x = strchr(buffer, '=') + 2;
+		y = strchr(buffer, '-') + 2;
+		sub(x, y);
+	} else if (strchr(buffer, '*')) {
+		x = strchr(buffer, '=') + 2;
+		y = strchr(buffer, '*') + 2;
+		mul(x, y);
+	} else if (strchr(buffer, '/')) {
+		x = strchr(buffer, '=') + 2;
+		y = strchr(buffer, '/') + 2;
+		DIV(x, y);
+	} else if (strchr(buffer, '<')) {
+		x = strchr(buffer, '=') + 2;
+		y = strchr(buffer, '<') + 3;
+		shl(x, y);
+	} else if (strchr(buffer, '>')) {
+		x = strchr(buffer, '=') + 2;
+		y = strchr(buffer, '>') + 3;
+		shr(x, y);
+	} else {
+		x = buffer;
+		while (*x == ' ')
+			x++;
+		while (*x == '	')
+			x++;
+		y = strchr(buffer, '=') + 2;
+		mov(x, y);
+	}
+}
+
+void IF(char *buffer)
+{
+	char *x1, *y1;
+	char *p = strchr(buffer, ')');
+	(*p) = '\0';
+	x1 = strchr(buffer, '(') + 1;
+	if (strchr(buffer, '=')) {
+		y1 = strstr(buffer, "= ") + 2;
+		cmp(x1, y1);
+	}
+	if (strstr(buffer, "==")) {
+		jne("end_label");
+	} else if (strstr(buffer, "<=")) {
+		jg("end_label");
+	} else if (strstr(buffer, ">=")) {
+		jl("end_label");
+	} else if (strchr(buffer, '>')) {
+		y1 = strchr(buffer, '>') + 2;
+		cmp(x1, y1);
+		jle("end_label");
+	} else if (strchr(buffer, '<')) {
+		y1 = strchr(buffer, '<') + 2;
+		cmp(x1, y1);
+		jge("end_label");
+	}
+}
+
+int main(void)
+{
+	char *buffer = malloc(100 * sizeof(char));
+	int a = 0, b = 0, c = 0;
+	char aux;					// pt for
+	while (fgets(buffer, 100, stdin)) {
+		char *p = strchr(buffer, '\n');	// buffer read + newline remove
+		if (strchr(buffer, '\n')) {
+			char *p = strchr(buffer, '\n');
+			(*p) = '\0';
+		}
+
+		if (strchr(buffer, ';') && !strstr(buffer, "for")) {	// operation
+			p = strchr(buffer, ';');
+			(*p) = '\0';
+			operatie(buffer);
+		}
+
+		if (strstr(buffer, "if")) {	// if
+			IF(buffer);
+			a = 1;
+		} else if (strchr(buffer, '}') && a == 1) {	// end if
+			printf("end_label:\n");
+			a = 0;
+		}
+
+		if (strstr(buffer, "while")) {
+			printf("start_loop:\n");
+			IF(buffer + 6);
+			b = 1;
+		} else if (strchr(buffer, '}') && b == 1) {	// end while
+			printf("JMP start_loop\n");
+			printf("end_label:\n");
+			b = 0;
+		}
+
+		if (strstr(buffer, "for")) {
+			aux = buffer[5];
+			printf("MOV e%cx, 0\n", aux);
+			p = strchr(buffer + 12, ';');
+			(*p) = ')';
+			p++;
+			(*p) = '\0';
+			printf("start_loop:\n");
+			buffer[11] = '(';
+			IF(buffer + 11);
+			c = 1;
+		} else if (strchr(buffer, '}') && c == 1) {	// end for
+			printf("ADD e%cx, 1\n", aux);
+			jmp("start_loop");
+			printf("end_loop:\n");
+			c = 0;
+		}
+	}
+	free(buffer);
+	return 0;
+}