diff options
Diffstat (limited to 'output/QuickSort.vapor')
-rw-r--r-- | output/QuickSort.vapor | 305 |
1 files changed, 305 insertions, 0 deletions
diff --git a/output/QuickSort.vapor b/output/QuickSort.vapor new file mode 100644 index 0000000..57389d6 --- /dev/null +++ b/output/QuickSort.vapor @@ -0,0 +1,305 @@ +func Main() + t.3 = HeapAllocZ(24) + [t.3+0] = :functable_QS + t.4 = t.3 + t.5 = [t.4+0] + t.6 = [t.5+0] + t.7 = 10 + t.2 = call t.6(t.4 t.7) + t.8 = t.2 + PrintIntS(t.8) + ret + +const functable_QS + :QS_Start + :QS_Sort + :QS_Print + :QS_Init + +func QS_Start(this t.0 ) + t.3 = [this] + t.4 = t.0 + t.3 = [t.3+12] + t.2 = call t.3(this t.4) + t.1 = t.2 + t.6 = [this] + t.6 = [t.6+8] + t.5 = call t.6(this ) + t.1 = t.5 + t.7 = 9999 + PrintIntS(t.7) + t.9 = [this+20] + t.10 = 1 + t.8 = Sub(t.9 t.10) + t.1 = t.8 + t.12 = [this] + t.13 = 0 + t.14 = t.1 + t.12 = [t.12+4] + t.11 = call t.12(this t.13 t.14) + t.1 = t.11 + t.16 = [this] + t.16 = [t.16+8] + t.15 = call t.16(this ) + t.1 = t.15 + t.17 = 0 + ret t.17 + +func QS_Sort(this t.0 t.1 ) + t.2 = 0 + t.4 = t.0 + t.5 = t.1 + t.3 = LtS(t.4 t.5) + t.6 = t.3 + if0 t.6 goto :if22_else +if22_body: + t.9 = [this+16] + t.10 = MulS(t.1 4) + t.10 = Add(t.10 4) + t.10 = Add(t.9 t.10) + t.8 = [t.10] + t.7 = t.8 + t.13 = t.0 + t.14 = 1 + t.12 = Sub(t.13 t.14) + t.11 = t.12 + t.15 = t.1 + t.16 = 1 +while32_test: + t.17 = t.16 + if0 t.17 goto :while32_end +while32_body: + t.18 = 1 +while34_test: + t.19 = t.18 + if0 t.19 goto :while34_end +while34_body: + t.21 = t.11 + t.22 = 1 + t.20 = Add(t.21 t.22) + t.11 = t.20 + t.25 = [this+16] + t.26 = MulS(t.11 4) + t.26 = Add(t.26 4) + t.26 = Add(t.25 t.26) + t.24 = [t.26] + t.23 = t.24 + t.29 = t.23 + t.30 = t.7 + t.28 = LtS(t.29 t.30) + t.27 = Eq(t.28 0) + t.31 = t.27 + if0 t.31 goto :if42_else +if42_body: + t.18 = 0 + goto :if42_end +if42_else: + t.18 = 1 +if42_end: + goto :while34_test +while34_end: + t.18 = 1 +while47_test: + t.32 = t.18 + if0 t.32 goto :while47_end +while47_body: + t.34 = t.15 + t.35 = 1 + t.33 = Sub(t.34 t.35) + t.15 = t.33 + t.37 = [this+16] + t.38 = MulS(t.15 4) + t.38 = Add(t.38 4) + t.38 = Add(t.37 t.38) + t.36 = [t.38] + t.23 = t.36 + t.41 = t.7 + t.42 = t.23 + t.40 = LtS(t.41 t.42) + t.39 = Eq(t.40 0) + t.43 = t.39 + if0 t.43 goto :if55_else +if55_body: + t.18 = 0 + goto :if55_end +if55_else: + t.18 = 1 +if55_end: + goto :while47_test +while47_end: + t.45 = [this+16] + t.46 = MulS(t.11 4) + t.46 = Add(t.46 4) + t.46 = Add(t.45 t.46) + t.44 = [t.46] + t.2 = t.44 + t.47 = [this+16] + t.48 = MulS(t.11 4) + t.48 = Add(t.48 4) + t.48 = Add(t.47 t.48) + t.50 = [this+16] + t.51 = MulS(t.15 4) + t.51 = Add(t.51 4) + t.51 = Add(t.50 t.51) + t.49 = [t.51] + [t.48] = t.49 + t.52 = [this+16] + t.53 = MulS(t.15 4) + t.53 = Add(t.53 4) + t.53 = Add(t.52 t.53) + [t.53] = t.2 + t.55 = t.15 + t.57 = t.11 + t.58 = 1 + t.56 = Add(t.57 t.58) + t.59 = t.56 + t.54 = LtS(t.55 t.59) + t.60 = t.54 + if0 t.60 goto :if70_else +if70_body: + t.16 = 0 + goto :if70_end +if70_else: + t.16 = 1 +if70_end: + goto :while32_test +while32_end: + t.61 = [this+16] + t.62 = MulS(t.15 4) + t.62 = Add(t.62 4) + t.62 = Add(t.61 t.62) + t.64 = [this+16] + t.65 = MulS(t.11 4) + t.65 = Add(t.65 4) + t.65 = Add(t.64 t.65) + t.63 = [t.65] + [t.62] = t.63 + t.66 = [this+16] + t.67 = MulS(t.11 4) + t.67 = Add(t.67 4) + t.67 = Add(t.66 t.67) + t.69 = [this+16] + t.70 = MulS(t.1 4) + t.70 = Add(t.70 4) + t.70 = Add(t.69 t.70) + t.68 = [t.70] + [t.67] = t.68 + t.71 = [this+16] + t.72 = MulS(t.1 4) + t.72 = Add(t.72 4) + t.72 = Add(t.71 t.72) + [t.72] = t.2 + t.75 = [this] + t.78 = t.11 + t.79 = 1 + t.77 = Sub(t.78 t.79) + t.76 = t.0 + t.80 = t.77 + t.75 = [t.75+4] + t.74 = call t.75(this t.79 t.80) + t.73 = t.74 + t.82 = [this] + t.84 = t.11 + t.85 = 1 + t.83 = Add(t.84 t.85) + t.86 = t.83 + t.87 = t.1 + t.82 = [t.82+4] + t.81 = call t.82(this t.86 t.87) + t.73 = t.81 + goto :if22_end +if22_else: + t.73 = 0 +if22_end: + t.88 = 0 + ret t.88 + +func QS_Print(this ) + t.0 = 0 +while104_test: + t.2 = t.0 + t.3 = [this+20] + t.1 = LtS(t.2 t.3) + t.4 = t.1 + if0 t.4 goto :while104_end +while104_body: + t.6 = [this+16] + t.7 = MulS(t.0 4) + t.7 = Add(t.7 4) + t.7 = Add(t.6 t.7) + t.5 = [t.7] + t.8 = t.5 + PrintIntS(t.8) + t.10 = t.0 + t.11 = 1 + t.9 = Add(t.10 t.11) + t.0 = t.9 + goto :while104_test +while104_end: + t.12 = 0 + ret t.12 + +func QS_Init(this t.0 ) + [this+20] = t.0 + t.1 = call :AllocArray(t.0) + [this+16] = t.1 + t.2 = [this+16] + t.3 = MulS(0 4) + t.3 = Add(t.3 4) + t.3 = Add(t.2 t.3) + [t.3] = 20 + t.4 = [this+16] + t.5 = MulS(1 4) + t.5 = Add(t.5 4) + t.5 = Add(t.4 t.5) + [t.5] = 7 + t.6 = [this+16] + t.7 = MulS(2 4) + t.7 = Add(t.7 4) + t.7 = Add(t.6 t.7) + [t.7] = 12 + t.8 = [this+16] + t.9 = MulS(3 4) + t.9 = Add(t.9 4) + t.9 = Add(t.8 t.9) + [t.9] = 18 + t.10 = [this+16] + t.11 = MulS(4 4) + t.11 = Add(t.11 4) + t.11 = Add(t.10 t.11) + [t.11] = 2 + t.12 = [this+16] + t.13 = MulS(5 4) + t.13 = Add(t.13 4) + t.13 = Add(t.12 t.13) + [t.13] = 11 + t.14 = [this+16] + t.15 = MulS(6 4) + t.15 = Add(t.15 4) + t.15 = Add(t.14 t.15) + [t.15] = 6 + t.16 = [this+16] + t.17 = MulS(7 4) + t.17 = Add(t.17 4) + t.17 = Add(t.16 t.17) + [t.17] = 9 + t.18 = [this+16] + t.19 = MulS(8 4) + t.19 = Add(t.19 4) + t.19 = Add(t.18 t.19) + [t.19] = 19 + t.20 = [this+16] + t.21 = MulS(9 4) + t.21 = Add(t.21 4) + t.21 = Add(t.20 t.21) + [t.21] = 5 + t.22 = 0 + ret t.22 + +func AllocArray(size) + bytes = MulS(size 4) + bytes = Add(bytes 4) + v = HeapAllocZ(bytes) + [v] = size + ret v + |