diff --git a/checker/ref/00-transpiler.ref b/checker/ref/00-transpiler.ref
index 7a83f3b9efde9022cd477b39047792252ab4c186..11d423777e7db7f64dd8338e31e48c060e75a6cd 100644
--- a/checker/ref/00-transpiler.ref
+++ b/checker/ref/00-transpiler.ref
@@ -1,5 +1,5 @@
-d = 77;
-b = 23;
-a = 96;
-a = 23;
-c = 58;
+MOV edx, 77
+MOV ebx, 23
+MOV eax, 96
+MOV eax, 23
+MOV ecx, 58
diff --git a/checker/ref/01-transpiler.ref b/checker/ref/01-transpiler.ref
index 5853bf917f82834798212d847bae8a4e76ef92d8..ad51ed33bdc0fb3acb1c075d0a0f06fb88377efd 100644
--- a/checker/ref/01-transpiler.ref
+++ b/checker/ref/01-transpiler.ref
@@ -1,8 +1,8 @@
-a = c;
-d = d;
-d = 59;
-b = b;
-c = b;
-a = c;
-b = 76;
-b = 89;
+MOV eax, ecx
+MOV edx, edx
+MOV edx, 59
+MOV ebx, ebx
+MOV ecx, ebx
+MOV eax, ecx
+MOV ebx, 76
+MOV ebx, 89
diff --git a/checker/ref/02-transpiler.ref b/checker/ref/02-transpiler.ref
index cd7257bb74681e47cd768af669f87bf5a719b561..63c9a7965153106bcf96034c0b5bf52ec2cc9116 100644
--- a/checker/ref/02-transpiler.ref
+++ b/checker/ref/02-transpiler.ref
@@ -1,3 +1,3 @@
-d = d & 42;
-b = b ^ 41;
-a = a ^ 39;
+AND edx, 42
+XOR ebx, 41
+XOR eax, 39
diff --git a/checker/ref/03-transpiler.ref b/checker/ref/03-transpiler.ref
index 7b6461b1c4b8750083e986040c1f7fd4758e58bf..4423f23b91a809440192b7c9f8feeea9c67b5743 100644
--- a/checker/ref/03-transpiler.ref
+++ b/checker/ref/03-transpiler.ref
@@ -1,10 +1,10 @@
-c = c & 73;
-d = d & 45;
-a = a & 6;
-d = d & a;
-a = a | 19;
-b = b ^ a;
-a = a & 44;
-d = d ^ 89;
-d = d & 20;
-a = a & 41;
+AND ecx, 73
+AND edx, 45
+AND eax, 6
+AND edx, eax
+OR eax, 19
+XOR ebx, eax
+AND eax, 44
+XOR edx, 89
+AND edx, 20
+AND eax, 41
diff --git a/checker/ref/04-transpiler.ref b/checker/ref/04-transpiler.ref
index 6ceb215a30c5785d4c471bfb7d3c7878940d4038..3a34427fd53240462d47faa4681ae96d00d83e6f 100644
--- a/checker/ref/04-transpiler.ref
+++ b/checker/ref/04-transpiler.ref
@@ -1,4 +1,4 @@
-a = a + d;
-c = c + 26;
-b = b + b;
-b = b + 63;
+ADD eax, edx
+ADD ecx, 26
+ADD ebx, ebx
+ADD ebx, 63
diff --git a/checker/ref/05-transpiler.ref b/checker/ref/05-transpiler.ref
index 20e9efddcd44908afc8daedc56f9c996b8816aa2..f43f18aac477c2820ded18d5ec43f46c109ad7f0 100644
--- a/checker/ref/05-transpiler.ref
+++ b/checker/ref/05-transpiler.ref
@@ -1,9 +1,9 @@
-c = c + 65;
-b = b + d;
-b = b + 20;
-d = d + a;
-b = b + d;
-d = d + 23;
-c = c + b;
-c = c + 52;
-a = a + 83;
+ADD ecx, 65
+ADD ebx, edx
+ADD ebx, 20
+ADD edx, eax
+ADD ebx, edx
+ADD edx, 23
+ADD ecx, ebx
+ADD ecx, 52
+ADD eax, 83
diff --git a/checker/ref/06-transpiler.ref b/checker/ref/06-transpiler.ref
index c7b8a3d0d3592d5248883dd66c5313d154bb6ac6..ccb9dc8f8d14ce8321b574b9f9236d46b7ec4806 100644
--- a/checker/ref/06-transpiler.ref
+++ b/checker/ref/06-transpiler.ref
@@ -1,5 +1,5 @@
-a = a - a;
-d = d - b;
-c = c - b;
-a = a - 55;
-b = b - 16;
+SUB eax, eax
+SUB edx, ebx
+SUB ecx, ebx
+SUB eax, 55
+SUB ebx, 16
diff --git a/checker/ref/07-transpiler.ref b/checker/ref/07-transpiler.ref
index 64403ffa1d77a7dac043ba4ea72acf1c1e45d881..e6d0c079823d6eb84decaaf437d9e2fd2c5ac87b 100644
--- a/checker/ref/07-transpiler.ref
+++ b/checker/ref/07-transpiler.ref
@@ -1,10 +1,10 @@
-b = b - 55;
-b = b - 22;
-b = b - 70;
-b = b - 90;
-b = b - 50;
-d = d - 82;
-a = a - 67;
-d = d - 83;
-b = b - 28;
-b = b - b;
+SUB ebx, 55
+SUB ebx, 22
+SUB ebx, 70
+SUB ebx, 90
+SUB ebx, 50
+SUB edx, 82
+SUB eax, 67
+SUB edx, 83
+SUB ebx, 28
+SUB ebx, ebx
diff --git a/checker/ref/08-transpiler.ref b/checker/ref/08-transpiler.ref
index ebe47d2f870d2aaea1313341dd1293d6c878dfd4..ebced9531d00629d321405695824fff9434e4111 100644
--- a/checker/ref/08-transpiler.ref
+++ b/checker/ref/08-transpiler.ref
@@ -1,3 +1,9 @@
-c = c * 8;
-c = c * 1;
-c = c * 6;
+MOV eax, edx
+MUL 8
+MOV edx, eax
+MOV eax, ecx
+MUL ecx
+MOV ecx, eax
+MOV eax, ecx
+MUL ebx
+MOV ecx, eax
diff --git a/checker/ref/09-transpiler.ref b/checker/ref/09-transpiler.ref
index 65f02da1f5187d982eb597688ec283d44d2bb9f8..3a415e29b609362e031e7fc275423b9c6fecf8f9 100644
--- a/checker/ref/09-transpiler.ref
+++ b/checker/ref/09-transpiler.ref
@@ -1,8 +1,27 @@
-b = b * 10;
-b = b * 4;
-b = b * 9;
-c = c * c;
-c = c * 6;
-c = c * a;
-c = c * 7;
-b = b * 0;
+MOV eax, ebx
+MUL 4
+MOV ebx, eax
+MOV eax, edx
+MUL 7
+MOV edx, eax
+MOV eax, ecx
+MUL 8
+MOV ecx, eax
+MOV eax, ecx
+MUL edx
+MOV ecx, eax
+MOV eax, ebx
+MUL 0
+MOV ebx, eax
+MOV eax, ebx
+MUL 1
+MOV ebx, eax
+MOV eax, ebx
+MUL ecx
+MOV ebx, eax
+MOV eax, edx
+MUL ebx
+MOV edx, eax
+MOV eax, ebx
+MUL edx
+MOV ebx, eax
diff --git a/checker/ref/10-transpiler.ref b/checker/ref/10-transpiler.ref
index 51a8e03154c40b0d8ad7dad91f1dafb020890c3b..8357161f082005b8fa29b3cbd8cb86cad1909252 100644
--- a/checker/ref/10-transpiler.ref
+++ b/checker/ref/10-transpiler.ref
@@ -1,4 +1,13 @@
-d = d / d;
-b = b / c;
-d = d / b;
-c = c / a;
+MOV eax, ebx
+DIV 8
+MOV ebx, eax
+MOV eax, ebx
+DIV 4
+MOV ebx, eax
+Error
+MOV eax, ecx
+DIV 5
+MOV ecx, eax
+MOV eax, ecx
+DIV ecx
+MOV ecx, eax
diff --git a/checker/ref/11-transpiler.ref b/checker/ref/11-transpiler.ref
index c15b1a1de3d913120313a15960c7e1ecd7cbeb73..527c0a37f5ce0096866b3bf985721fb3101ba124 100644
--- a/checker/ref/11-transpiler.ref
+++ b/checker/ref/11-transpiler.ref
@@ -1,9 +1,30 @@
-d = d / b;
-d = d / c;
-c = c / 7;
-d = d / d;
-c = c / 5;
-b = b / 5;
-c = c / c;
-d = d / 8;
-d = d / 4;
+MOV eax, ecx
+DIV 2
+MOV ecx, eax
+MOV eax, ecx
+DIV 9
+MOV ecx, eax
+MOV eax, ebx
+DIV 8
+MOV ebx, eax
+MOV eax, ebx
+DIV 6
+MOV ebx, eax
+MOV eax, ecx
+DIV ebx
+MOV ecx, eax
+MOV eax, ecx
+DIV ecx
+MOV ecx, eax
+MOV eax, ebx
+DIV ebx
+MOV ebx, eax
+MOV eax, ebx
+DIV 5
+MOV ebx, eax
+MOV eax, ebx
+DIV 2
+MOV ebx, eax
+MOV eax, ecx
+DIV ebx
+MOV ecx, eax
diff --git a/checker/ref/12-transpiler.ref b/checker/ref/12-transpiler.ref
index 301c032c89e09cf3b27c288dcd6bbc44635e719d..8d906ea0180e154b4670d64f2ccbffbe4bc58a1a 100644
--- a/checker/ref/12-transpiler.ref
+++ b/checker/ref/12-transpiler.ref
@@ -1,5 +1,5 @@
-a = a >> 23;
-a = a << 28;
-a = a >> 2;
-a = a << 14;
-d = d >> 14;
+SHR edx, 20
+SHR eax, 24
+SHR ebx, 4
+SHR ebx, 7
+SHL edx, 2
diff --git a/checker/ref/13-transpiler.ref b/checker/ref/13-transpiler.ref
index 3c14a393e2ffcc6103bcb790e388cc75cf1bb5eb..14b8b545cc5b3788d268476d4a7c3c5e5aac54fe 100644
--- a/checker/ref/13-transpiler.ref
+++ b/checker/ref/13-transpiler.ref
@@ -1,10 +1,9 @@
-b = b >> 1;
-b = b >> 31;
-c = c << 21;
-d = d << 26;
-a = a << 31;
-a = a >> 10;
-a = a >> 21;
-d = d >> 3;
-d = d << 19;
-d = d >> 25;
+SHR ecx, 17
+SHR eax, 2
+SHR ecx, 16
+SHR edx, 11
+SHR edx, 10
+SHL eax, 0
+SHL ebx, 29
+SHL edx, 8
+SHL ecx, 29
diff --git a/checker/ref/14-transpiler.ref b/checker/ref/14-transpiler.ref
index aac4e3372c3c6067fe7e17991d7cba7822413201..c8f7be9a8ac81a3e5ad12aee12f1e7b5f59b709e 100644
--- a/checker/ref/14-transpiler.ref
+++ b/checker/ref/14-transpiler.ref
@@ -1,5 +1,28 @@
-if (c >= 23)
-if (d == 20)
-if (a < 0)
-if (b > 58)
-if (d < 17)
+CMP edx, 8
+JL end_label
+MOV eax, ebx
+MUL edx
+MOV ebx, eax
+end_label:
+CMP edx, 14
+JNE end_label
+OR ebx, ebx
+MOV eax, edx
+MUL ebx
+MOV edx, eax
+SHL edx, 1
+SUB eax, eax
+end_label:
+CMP edx, 67
+JG end_label
+Error
+end_label:
+CMP eax, 96
+JG end_label
+SUB edx, ecx
+end_label:
+CMP edx, 82
+JNE end_label
+SUB eax, 10
+SUB ebx, 72
+end_label:
diff --git a/checker/ref/15-transpiler.ref b/checker/ref/15-transpiler.ref
index 929f796caa811874f3efa7b6867e2e2bb91b1411..391a150b5a731914f182a346da00cd2d03886d9c 100644
--- a/checker/ref/15-transpiler.ref
+++ b/checker/ref/15-transpiler.ref
@@ -1,9 +1,76 @@
-if (a <= 88)
-if (d >= 8)
-if (a >= 76)
-if (a > 75)
-if (d >= 73)
-if (d == 14)
-if (d > 20)
-if (d > 98)
-if (b >= 7)
+CMP edx, 95
+JG end_label
+SUB ebx, 72
+MOV eax, edx
+MUL edx
+MOV edx, eax
+ADD ebx, ecx
+XOR ebx, 65
+ADD eax, ebx
+end_label:
+CMP edx, 87
+JL end_label
+SHL edx, 26
+MOV eax, ebx
+MUL 10
+MOV ebx, eax
+ADD edx, edx
+MOV ecx, edx
+MOV eax, ebx
+MUL ecx
+MOV ebx, eax
+end_label:
+CMP eax, 82
+JNE end_label
+ADD eax, 37
+SUB ecx, ebx
+MOV eax, ecx
+XOR edx, 51
+SUB ebx, 50
+end_label:
+CMP ebx, 14
+JGE end_label
+ADD edx, 13
+SHR ebx, 27
+ADD eax, 57
+SUB eax, 65
+end_label:
+CMP eax, 33
+JNE end_label
+ADD edx, 61
+ADD eax, 86
+MOV eax, ebx
+DIV 10
+MOV ebx, eax
+end_label:
+CMP ebx, 46
+JL end_label
+Error
+SHR edx, 29
+SUB ecx, 2
+SHL eax, 6
+end_label:
+CMP edx, 99
+JLE end_label
+MOV eax, 40
+MOV eax, ecx
+MUL 4
+MOV ecx, eax
+SUB eax, 82
+SHR ebx, 27
+AND eax, 87
+end_label:
+CMP eax, 75
+JNE end_label
+SHR edx, 10
+end_label:
+CMP ecx, 97
+JNE end_label
+MOV eax, edx
+MUL 2
+MOV edx, eax
+end_label:
+CMP edx, 50
+JLE end_label
+SUB eax, 24
+end_label:
diff --git a/checker/ref/16-transpiler.ref b/checker/ref/16-transpiler.ref
index 6c36c0f43c5316f1b1605d130a9fe758aa4181f9..77b2cfccbca90ad95853d544588e4db48f62d52e 100644
--- a/checker/ref/16-transpiler.ref
+++ b/checker/ref/16-transpiler.ref
@@ -1,5 +1,33 @@
-while (a > 99)
-while (d > 74)
-while (a <= 15)
-while (a < 59)
-while (d >= 11)
+start_loop:
+CMP ebx, 9
+JNE end_label
+SUB ecx, ebx
+JMP start_loop
+end_label:
+start_loop:
+CMP ecx, 23
+JGE end_label
+OR ecx, 11
+AND edx, edx
+XOR ecx, 43
+JMP start_loop
+end_label:
+start_loop:
+CMP edx, 50
+JNE end_label
+XOR edx, 69
+MOV ebx, ecx
+JMP start_loop
+end_label:
+start_loop:
+CMP eax, 53
+JLE end_label
+MOV eax, ecx
+DIV 3
+MOV ecx, eax
+MOV ebx, edx
+SHR ecx, 20
+ADD edx, edx
+MOV eax, 49
+JMP start_loop
+end_label:
diff --git a/checker/ref/17-transpiler.ref b/checker/ref/17-transpiler.ref
index 2150b3d86c9bbb2a0d4b49f49b09eadeb0baf401..81809ac8809dc73c11a903186a1aba9335586028 100644
--- a/checker/ref/17-transpiler.ref
+++ b/checker/ref/17-transpiler.ref
@@ -1,12 +1,97 @@
-while (b <= 3) {
-    a = a + 23;
-}
-while (a <= 96)
-while (a <= 56)
-while (b == 58)
-while (c > 49)
-while (a <= 10)
-while (d > 76)
-while (d <= 95)
-while (d > 95)
-while (d >= 69)
+start_loop:
+CMP edx, 85
+JNE end_label
+MOV eax, ecx
+MUL 7
+MOV ecx, eax
+MUL 9
+SHR ebx, 27
+SUB edx, 5
+JMP start_loop
+end_label:
+start_loop:
+CMP eax, 64
+JL end_label
+ADD ebx, eax
+MOV eax, ecx
+DIV ecx
+MOV ecx, eax
+SHR ebx, 23
+ADD eax, edx
+MOV edx, edx
+JMP start_loop
+end_label:
+start_loop:
+CMP edx, 47
+JLE end_label
+AND ebx, 57
+JMP start_loop
+end_label:
+start_loop:
+CMP ebx, 15
+JG end_label
+MOV eax, ecx
+DIV 8
+MOV ecx, eax
+MOV edx, 77
+OR ebx, edx
+ADD edx, 4
+JMP start_loop
+end_label:
+start_loop:
+CMP ecx, 29
+JNE end_label
+MOV eax, eax
+ADD eax, 32
+MOV ebx, 30
+MOV eax, ebx
+DIV 7
+MOV ebx, eax
+SUB edx, 59
+JMP start_loop
+end_label:
+start_loop:
+CMP ebx, 47
+JNE end_label
+SHR eax, 28
+MOV eax, ecx
+DIV 9
+MOV ecx, eax
+ADD ebx, 34
+MOV eax, ebx
+MUL eax
+MOV ebx, eax
+JMP start_loop
+end_label:
+start_loop:
+CMP ebx, 25
+JNE end_label
+ADD ecx, 52
+MOV eax, ebx
+DIV 7
+MOV ebx, eax
+JMP start_loop
+end_label:
+start_loop:
+CMP eax, 18
+JG end_label
+MOV ecx, ebx
+SUB eax, ebx
+JMP start_loop
+end_label:
+start_loop:
+CMP ecx, 70
+JG end_label
+MOV eax, 22
+MOV eax, ecx
+DIV 5
+MOV ecx, eax
+MOV eax, ecx
+DIV ecx
+MOV ecx, eax
+SHR ebx, 23
+MOV eax, ebx
+MUL 0
+MOV ebx, eax
+JMP start_loop
+end_label:
diff --git a/checker/ref/18-transpiler.ref b/checker/ref/18-transpiler.ref
index ad629ca6ac2a54d98763d525cb197f9403534061..8c4b0bf85f96a4a1059b5fe9ff23a57313770f67 100644
--- a/checker/ref/18-transpiler.ref
+++ b/checker/ref/18-transpiler.ref
@@ -1,3 +1,38 @@
-while (a <= 32)
-while (b < 99)
-while (c > 28)
+MOV edx, 0
+start_loop:
+CMP edx, 65
+SHL ecx, 13
+ADD edx, 1
+JMP start_loop
+end_loop:
+MOV eax, 0
+start_loop:
+CMP eax, = 70
+SUB edx, 23
+MOV eax, ecx
+DIV 5
+MOV ecx, eax
+MOV ebx, ebx
+OR ecx, 80
+MOV ecx, eax
+ADD eax, 1
+JMP start_loop
+end_loop:
+MOV edx, 0
+start_loop:
+CMP edx, 14
+SHR edx, 5
+SUB edx, eax
+ADD edx, 1
+JMP start_loop
+end_loop:
+MOV ecx, 0
+start_loop:
+CMP ecx, = 23
+MOV eax, ecx
+DIV 5
+MOV ecx, eax
+AND edx, 93
+ADD ecx, 1
+JMP start_loop
+end_loop:
diff --git a/checker/ref/19-transpiler.ref b/checker/ref/19-transpiler.ref
index 330994d347141a892ab1497df8d154707d892028..dc32ac48ae44b262fdb85bc57b933ff85ed91cf3 100644
--- a/checker/ref/19-transpiler.ref
+++ b/checker/ref/19-transpiler.ref
@@ -1,8 +1,87 @@
-while (c >= 47)
-while (a > 25)
-while (d >= 87)
-while (d < 52)
-while (d > 61)
-while (c >= 67)
-while (d < 70)
-while (d < 39)
+MOV edx, 0
+start_loop:
+CMP edx, = 54
+XOR eax, 24
+SHR edx, 10
+MOV eax, ebx
+MUL 6
+MOV ebx, eax
+ADD edx, 1
+JMP start_loop
+end_loop:
+MOV ebx, 0
+start_loop:
+CMP ebx, 75
+ADD ecx, 11
+XOR ebx, 80
+SUB edx, ecx
+MOV edx, 69
+ADD ebx, 1
+JMP start_loop
+end_loop:
+MOV ebx, 0
+start_loop:
+CMP ebx, = 86
+MUL 2
+ADD ebx, 1
+JMP start_loop
+end_loop:
+MOV eax, 0
+start_loop:
+CMP eax, 66
+ADD ebx, 28
+MOV eax, 92
+SHR ebx, 21
+ADD eax, 1
+JMP start_loop
+end_loop:
+MOV edx, 0
+start_loop:
+CMP edx, 79
+MOV eax, ebx
+MUL ebx
+MOV ebx, eax
+SUB eax, 25
+XOR ecx, eax
+MOV eax, edx
+MUL 5
+MOV edx, eax
+SHL ecx, 11
+ADD edx, 1
+JMP start_loop
+end_loop:
+MOV edx, 0
+start_loop:
+CMP edx, 47
+MOV eax, ecx
+MUL 10
+MOV ecx, eax
+ADD edx, 1
+JMP start_loop
+end_loop:
+MOV ecx, 0
+start_loop:
+CMP ecx, 29
+OR edx, eax
+ADD ebx, 93
+SHL edx, 30
+MOV ecx, 9
+ADD ecx, 1
+JMP start_loop
+end_loop:
+MOV ecx, 0
+start_loop:
+CMP ecx, 94
+MOV eax, ecx
+DIV 7
+MOV ecx, eax
+ADD ecx, 59
+MOV eax, ecx
+DIV ecx
+MOV ecx, eax
+MOV eax, edx
+MUL 8
+MOV edx, eax
+ADD ecx, 1
+JMP start_loop
+end_loop: