]> git.somenet.org - pub/jan/ctf-seminar.git/blob - writeups/ilm0/hxp36c3/hxp2019__check__h578f31d490e10a31.c
Add hxp 36c3 writeup
[pub/jan/ctf-seminar.git] / writeups / ilm0 / hxp36c3 / hxp2019__check__h578f31d490e10a31.c
1 static u32 hxp2019__check__h578f31d490e10a31(u32 p0, u32 p1) {
2   u32 l2 = 0, l3 = 0, l4 = 0, l5 = 0, l6 = 0, l7 = 0, l8 = 0, l9 = 0, 
3       l10 = 0;
4   FUNC_PROLOGUE;
5   u32 i0, i1, i2;
6   i0 = g0;
7   i1 = 32u;
8   i0 -= i1;
9   l2 = i0;
10   g0 = i0;
11   i0 = 0u;
12   l3 = i0;
13   i0 = p1;
14   i1 = 50u;
15   i0 = i0 != i1;
16   if (i0) {goto B0;}
17   i0 = l2;
18   i1 = 50u;
19   i32_store((&memory), (u64)(i0 + 4), i1);
20   i0 = l2;
21   i1 = p0;
22   i32_store((&memory), (u64)(i0), i1);
23   i0 = l2;
24   i1 = 0u;
25   i32_store((&memory), (u64)(i0 + 8), i1);
26   i0 = l2;
27   i1 = 4u;
28   i32_store((&memory), (u64)(i0 + 12), i1);
29   i0 = p0;
30   i0 = i32_load8_s((&memory), (u64)(i0 + 4));
31   i1 = 4294967231u;
32   i0 = (u32)((s32)i0 <= (s32)i1);
33   if (i0) {goto B2;}
34   i0 = p0;
35   i1 = 1049664u;
36   i0 = i0 == i1;
37   if (i0) {goto B1;}
38   i0 = 0u;
39   l3 = i0;
40   i0 = p0;
41   i0 = i32_load((&memory), (u64)(i0));
42   i1 = 2070968424u;
43   i0 = i0 == i1;
44   if (i0) {goto B1;}
45   goto B0;
46   B2:;
47   i0 = l2;
48   i1 = l2;
49   i2 = 12u;
50   i1 += i2;
51   i32_store((&memory), (u64)(i0 + 24), i1);
52   i0 = l2;
53   i1 = l2;
54   i2 = 8u;
55   i1 += i2;
56   i32_store((&memory), (u64)(i0 + 20), i1);
57   i0 = l2;
58   i1 = l2;
59   i32_store((&memory), (u64)(i0 + 16), i1);
60   i0 = l2;
61   i1 = 16u;
62   i0 += i1;
63   core__str__traits___impl_core__slice__SliceIndex_str__for_core__ops__range__Range_usize____index____closure____h81e1d06525c0564b(i0);
64   UNREACHABLE;
65   B1:;
66   i0 = l2;
67   i1 = 50u;
68   i32_store((&memory), (u64)(i0 + 4), i1);
69   i0 = l2;
70   i1 = p0;
71   i32_store((&memory), (u64)(i0), i1);
72   i0 = l2;
73   i1 = 49u;
74   i32_store((&memory), (u64)(i0 + 8), i1);
75   i0 = l2;
76   i1 = 50u;
77   i32_store((&memory), (u64)(i0 + 12), i1);
78   i0 = p0;
79   i0 = i32_load8_s((&memory), (u64)(i0 + 49));
80   p1 = i0;
81   i1 = 4294967231u;
82   i0 = (u32)((s32)i0 <= (s32)i1);
83   if (i0) {goto B3;}
84   i0 = p0;
85   i1 = 49u;
86   i0 += i1;
87   l4 = i0;
88   i1 = 1049668u;
89   i0 = i0 == i1;
90   if (i0) {goto B4;}
91   i0 = 0u;
92   l3 = i0;
93   i0 = p1;
94   i1 = 125u;
95   i0 = i0 != i1;
96   if (i0) {goto B0;}
97   B4:;
98   i0 = p0;
99   i1 = 4u;
100   i0 += i1;
101   p0 = i0;
102   i0 = 0u;
103   p1 = i0;
104   i0 = 1u;
105   l3 = i0;
106   L7: 
107     i0 = l4;
108     i1 = p0;
109     i0 = i0 == i1;
110     if (i0) {goto B0;}
111     i0 = p0;
112     i1 = 1u;
113     i0 += i1;
114     l5 = i0;
115     i0 = p0;
116     i0 = i32_load8_s((&memory), (u64)(i0));
117     l6 = i0;
118     i1 = 4294967295u;
119     i0 = (u32)((s32)i0 > (s32)i1);
120     if (i0) {goto B9;}
121     i0 = l5;
122     i1 = l4;
123     i0 = i0 != i1;
124     if (i0) {goto B11;}
125     i0 = 0u;
126     l7 = i0;
127     i0 = l4;
128     l8 = i0;
129     goto B10;
130     B11:;
131     i0 = p0;
132     i0 = i32_load8_u((&memory), (u64)(i0 + 1));
133     i1 = 63u;
134     i0 &= i1;
135     l7 = i0;
136     i0 = p0;
137     i1 = 2u;
138     i0 += i1;
139     l5 = i0;
140     l8 = i0;
141     B10:;
142     i0 = l6;
143     i1 = 31u;
144     i0 &= i1;
145     l9 = i0;
146     i0 = l6;
147     i1 = 255u;
148     i0 &= i1;
149     l6 = i0;
150     i1 = 223u;
151     i0 = i0 > i1;
152     if (i0) {goto B12;}
153     i0 = l7;
154     i1 = l9;
155     i2 = 6u;
156     i1 <<= (i2 & 31);
157     i0 |= i1;
158     l6 = i0;
159     goto B8;
160     B12:;
161     i0 = l8;
162     i1 = l4;
163     i0 = i0 != i1;
164     if (i0) {goto B14;}
165     i0 = 0u;
166     l10 = i0;
167     i0 = l4;
168     l8 = i0;
169     goto B13;
170     B14:;
171     i0 = l8;
172     i0 = i32_load8_u((&memory), (u64)(i0));
173     i1 = 63u;
174     i0 &= i1;
175     l10 = i0;
176     i0 = l8;
177     i1 = 1u;
178     i0 += i1;
179     l5 = i0;
180     l8 = i0;
181     B13:;
182     i0 = l10;
183     i1 = l7;
184     i2 = 6u;
185     i1 <<= (i2 & 31);
186     i0 |= i1;
187     l7 = i0;
188     i0 = l6;
189     i1 = 240u;
190     i0 = i0 >= i1;
191     if (i0) {goto B15;}
192     i0 = l7;
193     i1 = l9;
194     i2 = 12u;
195     i1 <<= (i2 & 31);
196     i0 |= i1;
197     l6 = i0;
198     goto B8;
199     B15:;
200     i0 = l8;
201     i1 = l4;
202     i0 = i0 != i1;
203     if (i0) {goto B17;}
204     i0 = 0u;
205     l6 = i0;
206     goto B16;
207     B17:;
208     i0 = l8;
209     i1 = 1u;
210     i0 += i1;
211     l5 = i0;
212     i0 = l8;
213     i0 = i32_load8_u((&memory), (u64)(i0));
214     i1 = 63u;
215     i0 &= i1;
216     l6 = i0;
217     B16:;
218     i0 = l7;
219     i1 = 6u;
220     i0 <<= (i1 & 31);
221     i1 = l9;
222     i2 = 18u;
223     i1 <<= (i2 & 31);
224     i2 = 1835008u;
225     i1 &= i2;
226     i0 |= i1;
227     i1 = l6;
228     i0 |= i1;
229     l6 = i0;
230     i1 = 1114112u;
231     i0 = i0 == i1;
232     if (i0) {goto B0;}
233     goto B8;
234     B9:;
235     i0 = l6;
236     i1 = 255u;
237     i0 &= i1;
238     l6 = i0;
239     B8:;
240     i0 = p1;
241     i1 = 44u;
242     i0 = i0 > i1;
243     if (i0) {goto B6;}
244     i0 = p1;
245     i1 = 2u;
246     i0 <<= (i1 & 31);
247     i1 = 1049716u;
248     i0 += i1;
249     i0 = i32_load((&memory), (u64)(i0));
250     i1 = p1;
251     i2 = 1337u;
252     i1 *= i2;
253     i0 ^= i1;
254     l8 = i0;
255     i1 = 44u;
256     i0 = i0 > i1;
257     if (i0) {goto B5;}
258     i0 = p1;
259     i1 = p0;
260     i0 -= i1;
261     i1 = l5;
262     i0 += i1;
263     p1 = i0;
264     i0 = l5;
265     p0 = i0;
266     i0 = l8;
267     i1 = 1049669u;
268     i0 += i1;
269     i0 = i32_load8_u((&memory), (u64)(i0));
270     i1 = l6;
271     i2 = 255u;
272     i1 &= i2;
273     i0 = i0 == i1;
274     if (i0) {goto L7;}
275   i0 = 0u;
276   l3 = i0;
277   goto B0;
278   B6:;
279   i0 = 1049908u;
280   i1 = p1;
281   i2 = 45u;
282   core__panicking__panic_bounds_check__h1fae5a314994f748(i0, i1, i2);
283   UNREACHABLE;
284   B5:;
285   i0 = 1049924u;
286   i1 = l8;
287   i2 = 45u;
288   core__panicking__panic_bounds_check__h1fae5a314994f748(i0, i1, i2);
289   UNREACHABLE;
290   B3:;
291   i0 = l2;
292   i1 = l2;
293   i2 = 12u;
294   i1 += i2;
295   i32_store((&memory), (u64)(i0 + 24), i1);
296   i0 = l2;
297   i1 = l2;
298   i2 = 8u;
299   i1 += i2;
300   i32_store((&memory), (u64)(i0 + 20), i1);
301   i0 = l2;
302   i1 = l2;
303   i32_store((&memory), (u64)(i0 + 16), i1);
304   i0 = l2;
305   i1 = 16u;
306   i0 += i1;
307   core__str__traits___impl_core__slice__SliceIndex_str__for_core__ops__range__Range_usize____index____closure____h81e1d06525c0564b(i0);
308   UNREACHABLE;
309   B0:;
310   i0 = l2;
311   i1 = 32u;
312   i0 += i1;
313   g0 = i0;
314   i0 = l3;
315   FUNC_EPILOGUE;
316   return i0;
317 }