const vmt_QS :QS.Start :QS.Sort :QS.Print :QS.Init func Main() t.0 = HeapAllocZ(12) [t.0] = :vmt_QS if t.0 goto :null1 Error("null pointer") null1: t.1 = [t.0] t.1 = [t.1+0] t.2 = call t.1(t.0 10) PrintIntS(t.2) ret func QS.Start(this sz) t.0 = [this] t.0 = [t.0+12] aux01 = call t.0(this sz) t.1 = [this] t.1 = [t.1+8] aux01 = call t.1(this) PrintIntS(9999) t.2 = [this+8] aux01 = Sub(t.2 1) t.3 = [this] t.3 = [t.3+4] aux01 = call t.3(this 0 aux01) t.4 = [this] t.4 = [t.4+8] aux01 = call t.4(this) ret 0 func QS.Sort(this left right) t = 0 t.0 = LtS(left right) if0 t.0 goto :if1_else t.1 = [this+4] if t.1 goto :null2 Error("null pointer") null2: t.2 = [t.1] t.2 = Lt(right t.2) if t.2 goto :bounds1 Error("array index out of bounds") bounds1: t.2 = MulS(right 4) t.2 = Add(t.2 t.1) v = [t.2+4] i = Sub(left 1) j = right cont01 = 1 while1_top: if0 cont01 goto :while1_end cont02 = 1 while2_top: if0 cont02 goto :while2_end i = Add(i 1) t.3 = [this+4] if t.3 goto :null3 Error("null pointer") null3: t.4 = [t.3] t.4 = Lt(i t.4) if t.4 goto :bounds2 Error("array index out of bounds") bounds2: t.4 = MulS(i 4) t.4 = Add(t.4 t.3) aux03 = [t.4+4] t.5 = LtS(aux03 v) t.6 = Sub(1 t.5) if0 t.6 goto :if2_else cont02 = 0 goto :if2_end if2_else: cont02 = 1 if2_end: goto :while2_top while2_end: cont02 = 1 while3_top: if0 cont02 goto :while3_end j = Sub(j 1) t.7 = [this+4] if t.7 goto :null4 Error("null pointer") null4: t.8 = [t.7] t.8 = Lt(j t.8) if t.8 goto :bounds3 Error("array index out of bounds") bounds3: t.8 = MulS(j 4) t.8 = Add(t.8 t.7) aux03 = [t.8+4] t.9 = LtS(v aux03) t.10 = Sub(1 t.9) if0 t.10 goto :if3_else cont02 = 0 goto :if3_end if3_else: cont02 = 1 if3_end: goto :while3_top while3_end: t.11 = [this+4] if t.11 goto :null5 Error("null pointer") null5: t.12 = [t.11] t.12 = Lt(i t.12) if t.12 goto :bounds4 Error("array index out of bounds") bounds4: t.12 = MulS(i 4) t.12 = Add(t.12 t.11) t = [t.12+4] t.13 = [this+4] if t.13 goto :null6 Error("null pointer") null6: t.14 = [t.13] t.14 = Lt(i t.14) if t.14 goto :bounds5 Error("array index out of bounds") bounds5: t.14 = MulS(i 4) t.14 = Add(t.14 t.13) t.15 = [this+4] if t.15 goto :null7 Error("null pointer") null7: t.16 = [t.15] t.16 = Lt(j t.16) if t.16 goto :bounds6 Error("array index out of bounds") bounds6: t.16 = MulS(j 4) t.16 = Add(t.16 t.15) t.17 = [t.16+4] [t.14+4] = t.17 t.18 = [this+4] if t.18 goto :null8 Error("null pointer") null8: t.19 = [t.18] t.19 = Lt(j t.19) if t.19 goto :bounds7 Error("array index out of bounds") bounds7: t.19 = MulS(j 4) t.19 = Add(t.19 t.18) [t.19+4] = t t.20 = Add(i 1) t.21 = LtS(j t.20) if0 t.21 goto :if4_else cont01 = 0 goto :if4_end if4_else: cont01 = 1 if4_end: goto :while1_top while1_end: t.22 = [this+4] if t.22 goto :null9 Error("null pointer") null9: t.23 = [t.22] t.23 = Lt(j t.23) if t.23 goto :bounds8 Error("array index out of bounds") bounds8: t.23 = MulS(j 4) t.23 = Add(t.23 t.22) t.24 = [this+4] if t.24 goto :null10 Error("null pointer") null10: t.25 = [t.24] t.25 = Lt(i t.25) if t.25 goto :bounds9 Error("array index out of bounds") bounds9: t.25 = MulS(i 4) t.25 = Add(t.25 t.24) t.26 = [t.25+4] [t.23+4] = t.26 t.27 = [this+4] if t.27 goto :null11 Error("null pointer") null11: t.28 = [t.27] t.28 = Lt(i t.28) if t.28 goto :bounds10 Error("array index out of bounds") bounds10: t.28 = MulS(i 4) t.28 = Add(t.28 t.27) t.29 = [this+4] if t.29 goto :null12 Error("null pointer") null12: t.30 = [t.29] t.30 = Lt(right t.30) if t.30 goto :bounds11 Error("array index out of bounds") bounds11: t.30 = MulS(right 4) t.30 = Add(t.30 t.29) t.31 = [t.30+4] [t.28+4] = t.31 t.32 = [this+4] if t.32 goto :null13 Error("null pointer") null13: t.33 = [t.32] t.33 = Lt(right t.33) if t.33 goto :bounds12 Error("array index out of bounds") bounds12: t.33 = MulS(right 4) t.33 = Add(t.33 t.32) [t.33+4] = t t.34 = [this] t.34 = [t.34+4] t.35 = Sub(i 1) nt = call t.34(this left t.35) t.36 = [this] t.36 = [t.36+4] t.37 = Add(i 1) nt = call t.36(this t.37 right) goto :if1_end if1_else: nt = 0 if1_end: ret 0 func QS.Print(this) j = 0 while4_top: t.0 = [this+8] t.1 = LtS(j t.0) if0 t.1 goto :while4_end t.2 = [this+4] if t.2 goto :null14 Error("null pointer") null14: t.3 = [t.2] t.3 = Lt(j t.3) if t.3 goto :bounds13 Error("array index out of bounds") bounds13: t.3 = MulS(j 4) t.3 = Add(t.3 t.2) t.4 = [t.3+4] PrintIntS(t.4) j = Add(j 1) goto :while4_top while4_end: ret 0 func QS.Init(this sz) [this+8] = sz t.0 = call :AllocArray(sz) [this+4] = t.0 t.1 = [this+4] if t.1 goto :null15 Error("null pointer") null15: t.2 = [t.1] t.2 = Lt(0 t.2) if t.2 goto :bounds14 Error("array index out of bounds") bounds14: t.2 = MulS(0 4) t.2 = Add(t.2 t.1) [t.2+4] = 20 t.3 = [this+4] if t.3 goto :null16 Error("null pointer") null16: t.4 = [t.3] t.4 = Lt(1 t.4) if t.4 goto :bounds15 Error("array index out of bounds") bounds15: t.4 = MulS(1 4) t.4 = Add(t.4 t.3) [t.4+4] = 7 t.5 = [this+4] if t.5 goto :null17 Error("null pointer") null17: t.6 = [t.5] t.6 = Lt(2 t.6) if t.6 goto :bounds16 Error("array index out of bounds") bounds16: t.6 = MulS(2 4) t.6 = Add(t.6 t.5) [t.6+4] = 12 t.7 = [this+4] if t.7 goto :null18 Error("null pointer") null18: t.8 = [t.7] t.8 = Lt(3 t.8) if t.8 goto :bounds17 Error("array index out of bounds") bounds17: t.8 = MulS(3 4) t.8 = Add(t.8 t.7) [t.8+4] = 18 t.9 = [this+4] if t.9 goto :null19 Error("null pointer") null19: t.10 = [t.9] t.10 = Lt(4 t.10) if t.10 goto :bounds18 Error("array index out of bounds") bounds18: t.10 = MulS(4 4) t.10 = Add(t.10 t.9) [t.10+4] = 2 t.11 = [this+4] if t.11 goto :null20 Error("null pointer") null20: t.12 = [t.11] t.12 = Lt(5 t.12) if t.12 goto :bounds19 Error("array index out of bounds") bounds19: t.12 = MulS(5 4) t.12 = Add(t.12 t.11) [t.12+4] = 11 t.13 = [this+4] if t.13 goto :null21 Error("null pointer") null21: t.14 = [t.13] t.14 = Lt(6 t.14) if t.14 goto :bounds20 Error("array index out of bounds") bounds20: t.14 = MulS(6 4) t.14 = Add(t.14 t.13) [t.14+4] = 6 t.15 = [this+4] if t.15 goto :null22 Error("null pointer") null22: t.16 = [t.15] t.16 = Lt(7 t.16) if t.16 goto :bounds21 Error("array index out of bounds") bounds21: t.16 = MulS(7 4) t.16 = Add(t.16 t.15) [t.16+4] = 9 t.17 = [this+4] if t.17 goto :null23 Error("null pointer") null23: t.18 = [t.17] t.18 = Lt(8 t.18) if t.18 goto :bounds22 Error("array index out of bounds") bounds22: t.18 = MulS(8 4) t.18 = Add(t.18 t.17) [t.18+4] = 19 t.19 = [this+4] if t.19 goto :null24 Error("null pointer") null24: t.20 = [t.19] t.20 = Lt(9 t.20) if t.20 goto :bounds23 Error("array index out of bounds") bounds23: t.20 = MulS(9 4) t.20 = Add(t.20 t.19) [t.20+4] = 5 ret 0 func AllocArray(size) bytes = MulS(size 4) bytes = Add(bytes 4) v = HeapAllocZ(bytes) [v] = size ret v