1export
2function $bubble_sort(l %.1) {
3@start.1
4 %.2 =l alloc8 8
5 storel %.1, %.2
6 %.3 =l alloc4 1
7 %.9 =l alloc4 4
8 %.27 =l alloc4 4
9@body.2
10 %.4 =w cnew 0, 0
11 storeb %.4, %.3
12@while_cond.3
13 %.5 =w loadub %.3
14 %.6 =w extub %.5
15 %.7 =w ceqw %.6, 0
16 jnz %.7, @while_body.4, @while_join.5
17@while_body.4
18 %.8 =w cnew 1, 0
19 storeb %.8, %.3
20 storew 0, %.9
21@for_cond.6
22 %.10 =w loadw %.9
23 %.11 =w sub 4, 1
24 %.12 =w csltw %.10, %.11
25 jnz %.12, @for_body.7, @for_join.9
26@for_body.7
27 %.13 =l loadl %.2
28 %.14 =w loadw %.9
29 %.15 =l extsw %.14
30 %.16 =l mul %.15, 4
31 %.17 =l add %.13, %.16
32 %.18 =w loadw %.17
33 %.19 =l loadl %.2
34 %.20 =w loadw %.9
35 %.21 =w add %.20, 1
36 %.22 =l extsw %.21
37 %.23 =l mul %.22, 4
38 %.24 =l add %.19, %.23
39 %.25 =w loadw %.24
40 %.26 =w csgtw %.18, %.25
41 jnz %.26, @if_true.10, @if_false.11
42@if_true.10
43 %.28 =l loadl %.2
44 %.29 =w loadw %.9
45 %.30 =l extsw %.29
46 %.31 =l mul %.30, 4
47 %.32 =l add %.28, %.31
48 %.33 =w loadw %.32
49 storew %.33, %.27
50 %.34 =l loadl %.2
51 %.35 =w loadw %.9
52 %.36 =w add %.35, 1
53 %.37 =l extsw %.36
54 %.38 =l mul %.37, 4
55 %.39 =l add %.34, %.38
56 %.40 =w loadw %.39
57 %.41 =l loadl %.2
58 %.42 =w loadw %.9
59 %.43 =l extsw %.42
60 %.44 =l mul %.43, 4
61 %.45 =l add %.41, %.44
62 storew %.40, %.45
63 %.46 =w loadw %.27
64 %.47 =l loadl %.2
65 %.48 =w loadw %.9
66 %.49 =w add %.48, 1
67 %.50 =l extsw %.49
68 %.51 =l mul %.50, 4
69 %.52 =l add %.47, %.51
70 storew %.46, %.52
71 %.53 =w cnew 0, 0
72 storeb %.53, %.3
73@if_false.11
74@for_cont.8
75 %.54 =w loadw %.9
76 %.55 =w add %.54, 1
77 storew %.55, %.9
78 jmp @for_cond.6
79@for_join.9
80 jmp @while_cond.3
81@while_join.5
82 ret
83}
84export
85function w $entry(w %.1, w %.3, w %.5, w %.7) {
86@start.12
87 %.2 =l alloc4 4
88 storew %.1, %.2
89 %.4 =l alloc4 4
90 storew %.3, %.4
91 %.6 =l alloc4 4
92 storew %.5, %.6
93 %.8 =l alloc4 4
94 storew %.7, %.8
95 %.9 =l alloc4 16
96@body.13
97 %.10 =w loadw %.2
98 %.11 =l extsw 0
99 %.12 =l mul %.11, 4
100 %.13 =l add %.9, %.12
101 storew %.10, %.13
102 %.14 =w loadw %.4
103 %.15 =l extsw 1
104 %.16 =l mul %.15, 4
105 %.17 =l add %.9, %.16
106 storew %.14, %.17
107 %.18 =w loadw %.6
108 %.19 =l extsw 2
109 %.20 =l mul %.19, 4
110 %.21 =l add %.9, %.20
111 storew %.18, %.21
112 %.22 =w loadw %.8
113 %.23 =l extsw 3
114 %.24 =l mul %.23, 4
115 %.25 =l add %.9, %.24
116 storew %.22, %.25
117 call $bubble_sort(l %.9)
118 ret 0
119}