bootstrap: Update necessary M1 sources.
[mes.git] / mlibc / libc-mes.M1
1
2
3 :exit
4         push___%ebp
5         mov____%esp,%ebp
6         sub____%esp,$i32 %0x1054
7         mov____0x8(%ebp),%ebx !8
8         mov____$i32,%eax SYS_exit
9         int____$0x80
10         leave
11         ret
12
13
14 :read
15         push___%ebp
16         mov____%esp,%ebp
17         sub____%esp,$i32 %0x1054
18         mov____0x8(%ebp),%ebx !8
19         mov____0x8(%ebp),%ecx !12
20         mov____0x8(%ebp),%edx !16
21         mov____$i32,%eax SYS_read
22         int____$0x80
23         leave
24         ret
25
26
27 :write
28         push___%ebp
29         mov____%esp,%ebp
30         sub____%esp,$i32 %0x1054
31         mov____0x8(%ebp),%ebx !8
32         mov____0x8(%ebp),%ecx !12
33         mov____0x8(%ebp),%edx !16
34         mov____$i32,%eax SYS_write
35         int____$0x80
36         leave
37         ret
38
39
40 :open
41         push___%ebp
42         mov____%esp,%ebp
43         sub____%esp,$i32 %0x1054
44         mov____0x8(%ebp),%ebx !8
45         mov____0x8(%ebp),%ecx !12
46         mov____0x8(%ebp),%edx !16
47         mov____$i32,%eax SYS_open
48         int____$0x80
49         leave
50         ret
51
52
53 :access
54         push___%ebp
55         mov____%esp,%ebp
56         sub____%esp,$i32 %0x1054
57         mov____0x8(%ebp),%ebx !8
58         mov____0x8(%ebp),%ecx !12
59         mov____$i32,%eax SYS_access
60         int____$0x80
61         leave
62         ret
63
64
65 :brk
66         push___%ebp
67         mov____%esp,%ebp
68         sub____%esp,$i32 %0x1054
69         mov____0x8(%ebp),%ebx !8
70         mov____$i32,%eax SYS_brk
71         int____$0x80
72         leave
73         ret
74
75
76 :fsync
77         push___%ebp
78         mov____%esp,%ebp
79         sub____%esp,$i32 %0x1054
80         mov____0x8(%ebp),%ebx !8
81         mov____$i32,%eax SYS_fsync
82         int____$0x80
83         leave
84         ret
85
86
87 :strlen
88         push___%ebp
89         mov____%esp,%ebp
90         sub____%esp,$i32 %0x1054
91                                         # int i = 0; 
92         mov____$i32,%eax %0x0
93         mov____%eax,0x8(%ebp) !0x-4
94                                         # while (s[i]) ...
95         jmp32  %strlen_4_continue
96 :strlen_4_loop
97         mov____0x8(%ebp),%eax !0x-4
98         push___%eax
99         mov____%ebp,%eax
100         add____$i8,%eax !0x-4
101         add____$i8,(%eax) !0x1
102         pop____%eax
103         test___%eax,%eax
104 :strlen_4_continue
105         mov____0x8(%ebp),%eax !0x-4
106         mov____%eax,%edx
107         push___%eax
108         mov____0x8(%ebp),%eax !0x8
109         mov____%eax,%edx
110         pop____%eax
111         add____%edx,%eax
112         movzbl_(%eax),%eax
113         test___%eax,%eax
114                                         # jmp test LABEL
115         test___%eax,%eax
116         test___%al,%al
117         je32   %strlen_4_break
118         jmp32  %strlen_4_loop
119 :strlen_4_break
120         mov____0x8(%ebp),%eax !0x-4
121         leave
122         ret
123
124
125 :eputc
126         push___%ebp
127         mov____%esp,%ebp
128         sub____%esp,$i32 %0x1054
129         mov____$i32,%eax %0x2
130         push___%eax
131         push___0x8(%ebp) !0x8
132         call32 %fputc
133         add____$i8,%esp !0x8
134         leave
135         ret
136
137
138 :eputs
139         push___%ebp
140         mov____%esp,%ebp
141         sub____%esp,$i32 %0x1054
142                                         # int i = strlen(s); 
143         push___0x8(%ebp) !0x8
144         call32 %strlen
145         add____$i8,%esp !0x4
146         mov____%eax,0x8(%ebp) !0x-4
147                                         # write(2, s, i); 
148         push___0x8(%ebp) !0x-4
149         push___0x8(%ebp) !0x8
150         mov____$i32,%eax %0x2
151         push___%eax
152         call32 %write
153         add____$i8,%esp !0xc
154         test___%eax,%eax
155         mov____$i32,%eax %0x0
156         leave
157         ret
158
159
160 :fputs
161         push___%ebp
162         mov____%esp,%ebp
163         sub____%esp,$i32 %0x1054
164                                         # int i = strlen(s); 
165         push___0x8(%ebp) !0x8
166         call32 %strlen
167         add____$i8,%esp !0x4
168         mov____%eax,0x8(%ebp) !0x-4
169                                         # write(fd, s, i); 
170         push___0x8(%ebp) !0x-4
171         push___0x8(%ebp) !0x8
172         push___0x8(%ebp) !0xc
173         call32 %write
174         add____$i8,%esp !0xc
175         test___%eax,%eax
176         mov____$i32,%eax %0x0
177         leave
178         ret
179
180
181 :puts
182         push___%ebp
183         mov____%esp,%ebp
184         sub____%esp,$i32 %0x1054
185                                         # int i = strlen(s); 
186         push___0x8(%ebp) !0x8
187         call32 %strlen
188         add____$i8,%esp !0x4
189         mov____%eax,0x8(%ebp) !0x-4
190                                         # write(1, s, i); 
191         push___0x8(%ebp) !0x-4
192         push___0x8(%ebp) !0x8
193         mov____$i32,%eax %0x1
194         push___%eax
195         call32 %write
196         add____$i8,%esp !0xc
197         test___%eax,%eax
198         mov____$i32,%eax %0x0
199         leave
200         ret
201
202
203 :putchar
204         push___%ebp
205         mov____%esp,%ebp
206         sub____%esp,$i32 %0x1054
207                                         # write(1, (char*)&c, 1); 
208         mov____$i32,%eax %0x1
209         push___%eax
210         lea____0x8(%ebp),%eax !0x8
211         push___%eax
212         mov____$i32,%eax %0x1
213         push___%eax
214         call32 %write
215         add____$i8,%esp !0xc
216         test___%eax,%eax
217         mov____$i32,%eax %0x0
218         leave
219         ret
220
221
222 :fputc
223         push___%ebp
224         mov____%esp,%ebp
225         sub____%esp,$i32 %0x1054
226                                         # write(fd, (char*)&c, 1); 
227         mov____$i32,%eax %0x1
228         push___%eax
229         lea____0x8(%ebp),%eax !0x8
230         push___%eax
231         push___0x8(%ebp) !0xc
232         call32 %write
233         add____$i8,%esp !0xc
234         test___%eax,%eax
235         mov____$i32,%eax %0x0
236         leave
237         ret
238
239
240 :assert_fail
241         push___%ebp
242         mov____%esp,%ebp
243         sub____%esp,$i32 %0x1054
244                                         # eputs("assert fail: "); 
245         push___$i32 &string__env_0
246         call32 %eputs
247         add____$i8,%esp !0x4
248         test___%eax,%eax
249                                         # eputs(s); 
250         push___0x8(%ebp) !0x8
251         call32 %eputs
252         add____$i8,%esp !0x4
253         test___%eax,%eax
254                                         # eputs("\n"); 
255         push___$i32 &string__env_1
256         call32 %eputs
257         add____$i8,%esp !0x4
258         test___%eax,%eax
259                                         # char *fail = s; 
260         mov____0x8(%ebp),%eax !0x8
261         mov____%eax,0x8(%ebp) !0x-4
262                                         # fail = 0
263         mov____$i32,%eax %0x0
264         mov____%eax,0x8(%ebp) !0x-4
265         test___%eax,%eax
266                                         # *fail = 0
267         mov____$i32,%eax %0x0
268         push___%eax
269         mov____0x8(%ebp),%eax !0x-4
270         mov____%eax,%edx
271         pop____%eax
272         mov____%al,(%edx)
273         test___%eax,%eax
274         leave
275         ret
276
277
278 :getchar
279         push___%ebp
280         mov____%esp,%ebp
281         sub____%esp,$i32 %0x1054
282                                         # char c; 
283                                         # int i; 
284                                         # if (ungetc_char == -1) ...else ...
285         mov____0x32,%eax &ungetc_char
286         push___%eax
287         push___%eax
288         mov____$i32,%eax %0x1
289         mov____%eax,%edx
290         pop____%eax
291         mov____$i32,%eax %0x0
292         sub____%edx,%eax
293         mov____%eax,%edx
294         pop____%eax
295         sub____%edx,%eax
296         sete___%al
297         movzbl_%al,%eax
298                                         # jmp test LABEL
299         jne32  %getchar_3_else
300                                         # int r = read(g_stdin, &c, 1); 
301         mov____$i32,%eax %0x1
302         push___%eax
303         lea____0x8(%ebp),%eax !0x-4
304         push___%eax
305         mov____0x32,%eax &g_stdin
306         push___%eax
307         call32 %read
308         add____$i8,%esp !0xc
309         mov____%eax,0x8(%ebp) !0x-c
310                                         # if (r < 1) ...
311         mov____0x8(%ebp),%eax !0x-c
312         push___%eax
313         mov____$i32,%eax %0x1
314         mov____%eax,%edx
315         pop____%eax
316         sub____%edx,%eax
317         setl___%al
318         movzbl_%al,%eax
319                                         # jmp test LABEL
320         jge32  %getchar_22_break
321         push___%eax
322         mov____$i32,%eax %0x1
323         mov____%eax,%edx
324         pop____%eax
325         mov____$i32,%eax %0x0
326         sub____%edx,%eax
327         leave
328         ret
329         jmp32  %getchar_22_break
330 :getchar_22_break
331                                         # i = c
332         movzbl_0x8(%ebp),%eax !0x-4
333         mov____%eax,0x8(%ebp) !0x-8
334         test___%eax,%eax
335         jmp32  %getchar_3_break
336 :getchar_3_else
337                                         # i = ungetc_buf[ungetc_char]
338         mov____0x32,%eax &ungetc_char
339         mov____%eax,%edx
340         push___%eax
341         mov____$i32,%eax &ungetc_buf
342         mov____%eax,%edx
343         pop____%eax
344         add____%edx,%eax
345         movzbl_(%eax),%eax
346         mov____%eax,0x8(%ebp) !0x-8
347         test___%eax,%eax
348                                         # ungetc_char = ungetc_char - 1
349         mov____0x32,%eax &ungetc_char
350         add____$i8,%eax !0x-1
351         mov____%eax,0x32 &ungetc_char
352         test___%eax,%eax
353 :getchar_3_break
354                                         # if (i < 0) ...
355         mov____0x8(%ebp),%eax !0x-8
356         push___%eax
357         mov____$i32,%eax %0x0
358         mov____%eax,%edx
359         pop____%eax
360         sub____%edx,%eax
361         setl___%al
362         movzbl_%al,%eax
363                                         # jmp test LABEL
364         jge32  %getchar_60_break
365                                         # i += 256
366         mov____$i32,%eax %0x100
367         push___%eax
368         mov____0x8(%ebp),%eax !0x-8
369         pop____%edx
370         add____%edx,%eax
371         mov____%eax,0x8(%ebp) !0x-8
372         test___%eax,%eax
373         jmp32  %getchar_60_break
374 :getchar_60_break
375         mov____0x8(%ebp),%eax !0x-8
376         leave
377         ret
378
379
380 :fgetc
381         push___%ebp
382         mov____%esp,%ebp
383         sub____%esp,$i32 %0x1054
384                                         # char c; 
385                                         # int r = read(fd, &c, 1); 
386         mov____$i32,%eax %0x1
387         push___%eax
388         lea____0x8(%ebp),%eax !0x-4
389         push___%eax
390         push___0x8(%ebp) !0x8
391         call32 %read
392         add____$i8,%esp !0xc
393         mov____%eax,0x8(%ebp) !0x-8
394                                         # c == 1? ...: ...
395         movzbl_0x8(%ebp),%eax !0x-4
396         push___%eax
397         mov____$i32,%eax %0x1
398         mov____%eax,%edx
399         pop____%eax
400         sub____%edx,%eax
401         sete___%al
402         movzbl_%al,%eax
403                                         # jmp test LABEL
404         jne32  %fgetc_9_else
405         movzbl_0x8(%ebp),%eax !0x-4
406         test___%eax,%eax
407         jmp32  %fgetc_9_break
408 :fgetc_9_else
409         push___%eax
410         mov____$i32,%eax %0x1
411         mov____%eax,%edx
412         pop____%eax
413         mov____$i32,%eax %0x0
414         sub____%edx,%eax
415         test___%eax,%eax
416 :fgetc_9_break
417         leave
418         ret
419
420
421 :free
422         push___%ebp
423         mov____%esp,%ebp
424         sub____%esp,$i32 %0x1054
425         leave
426         ret
427
428
429 :ungetc
430         push___%ebp
431         mov____%esp,%ebp
432         sub____%esp,$i32 %0x1054
433         mov____0x32,%eax &ungetc_char
434         push___%eax
435         mov____$i32,%eax &ungetc_char
436         add____$i8,(%eax) !0x1
437         pop____%eax
438         test___%eax,%eax
439                                         # ungetc_buf[ungetc_char] = c
440         mov____0x8(%ebp),%eax !0x8
441         push___%eax
442         mov____0x32,%eax &ungetc_char
443         mov____%eax,%edx
444         push___%eax
445         mov____$i32,%eax &ungetc_buf
446         mov____%eax,%edx
447         pop____%eax
448         add____%edx,%eax
449         mov____%eax,%edx
450         pop____%eax
451         mov____%al,(%edx)
452         test___%eax,%eax
453         mov____0x8(%ebp),%eax !0x8
454         leave
455         ret
456
457
458 :strcmp
459         push___%ebp
460         mov____%esp,%ebp
461         sub____%esp,$i32 %0x1054
462                                         # while (*a && *b && *a == *b) ...
463         jmp32  %strcmp_1_continue
464 :strcmp_1_loop
465         mov____0x8(%ebp),%eax !0x8
466         push___%eax
467         mov____%ebp,%eax
468         add____$i8,%eax !0x8
469         add____$i8,(%eax) !0x1
470         pop____%eax
471         test___%eax,%eax
472         mov____0x8(%ebp),%eax !0xc
473         push___%eax
474         mov____%ebp,%eax
475         add____$i8,%eax !0xc
476         add____$i8,(%eax) !0x1
477         pop____%eax
478         test___%eax,%eax
479 :strcmp_1_continue
480         mov____0x8(%ebp),%eax !0x8
481         movzbl_(%eax),%eax
482         test___%eax,%eax
483                                         # jmp test LABEL
484         test___%eax,%eax
485         test___%al,%al
486         je32   %strcmp_1_break
487         mov____0x8(%ebp),%eax !0xc
488         movzbl_(%eax),%eax
489         test___%eax,%eax
490                                         # jmp test LABEL
491         test___%eax,%eax
492         test___%al,%al
493         je32   %strcmp_1_break
494         mov____0x8(%ebp),%eax !0x8
495         movzbl_(%eax),%eax
496         push___%eax
497         mov____0x8(%ebp),%eax !0xc
498         movzbl_(%eax),%eax
499         mov____%eax,%edx
500         pop____%eax
501         sub____%edx,%eax
502         sete___%al
503         movzbl_%al,%eax
504                                         # jmp test LABEL
505         jne32  %strcmp_1_break
506         jmp32  %strcmp_1_loop
507 :strcmp_1_break
508         mov____0x8(%ebp),%eax !0x8
509         movzbl_(%eax),%eax
510         push___%eax
511         mov____0x8(%ebp),%eax !0xc
512         movzbl_(%eax),%eax
513         mov____%eax,%edx
514         pop____%eax
515         sub____%edx,%eax
516         leave
517         ret
518
519
520 :strcpy
521         push___%ebp
522         mov____%esp,%ebp
523         sub____%esp,$i32 %0x1054
524                                         # char *p = dest; 
525         mov____0x8(%ebp),%eax !0x8
526         mov____%eax,0x8(%ebp) !0x-4
527                                         # while (*src) ...
528         jmp32  %strcpy_4_continue
529 :strcpy_4_loop
530                                         # *p = *src++
531         mov____0x8(%ebp),%eax !0xc
532         push___%eax
533         mov____%ebp,%eax
534         add____$i8,%eax !0xc
535         add____$i8,(%eax) !0x1
536         pop____%eax
537         movzbl_(%eax),%eax
538         push___%eax
539         mov____0x8(%ebp),%eax !0x-4
540         mov____%eax,%edx
541         pop____%eax
542         mov____%al,(%edx)
543         add____$i8,0x8(%ebp) !0x-4 !0x1
544         test___%eax,%eax
545 :strcpy_4_continue
546         mov____0x8(%ebp),%eax !0xc
547         movzbl_(%eax),%eax
548         test___%eax,%eax
549                                         # jmp test LABEL
550         test___%eax,%eax
551         test___%al,%al
552         je32   %strcpy_4_break
553         jmp32  %strcpy_4_loop
554 :strcpy_4_break
555                                         # *p = 0
556         mov____$i32,%eax %0x0
557         push___%eax
558         mov____0x8(%ebp),%eax !0x-4
559         mov____%eax,%edx
560         pop____%eax
561         mov____%al,(%edx)
562         test___%eax,%eax
563         mov____0x8(%ebp),%eax !0x8
564         leave
565         ret
566
567
568 :itoa
569         push___%ebp
570         mov____%esp,%ebp
571         sub____%esp,$i32 %0x1054
572                                         # char *p = itoa_buf; 
573         mov____$i32,%eax &itoa_buf
574         mov____%eax,0x8(%ebp) !0x-4
575                                         # p += 9
576         mov____$i32,%eax %0x9
577         push___%eax
578         mov____0x8(%ebp),%eax !0x-4
579         pop____%edx
580         add____%edx,%eax
581         mov____%eax,0x8(%ebp) !0x-4
582         test___%eax,%eax
583                                         # *p = 0
584         mov____$i32,%eax %0x0
585         push___%eax
586         mov____0x8(%ebp),%eax !0x-4
587         mov____%eax,%edx
588         pop____%eax
589         mov____%al,(%edx)
590         add____$i8,0x8(%ebp) !0x-4 !0x-1
591         test___%eax,%eax
592                                         # int sign = 0; 
593         mov____$i32,%eax %0x0
594         mov____%eax,0x8(%ebp) !0x-8
595                                         # if (x < 0) ...
596         mov____0x8(%ebp),%eax !0x8
597         push___%eax
598         mov____$i32,%eax %0x0
599         mov____%eax,%edx
600         pop____%eax
601         sub____%edx,%eax
602         setl___%al
603         movzbl_%al,%eax
604                                         # jmp test LABEL
605         jge32  %itoa_24_break
606                                         # sign = 1
607         mov____$i32,%eax %0x1
608         mov____%eax,0x8(%ebp) !0x-8
609         test___%eax,%eax
610         jmp32  %itoa_24_break
611 :itoa_24_break
612                                         # if (sign) ...
613         mov____0x8(%ebp),%eax !0x-8
614         test___%eax,%eax
615                                         # jmp test LABEL
616         test___%eax,%eax
617         je32   %itoa_38_break
618                                         # x = -x
619         push___%eax
620         mov____0x8(%ebp),%eax !0x8
621         mov____%eax,%edx
622         pop____%eax
623         mov____$i32,%eax %0x0
624         sub____%edx,%eax
625         mov____%eax,0x8(%ebp) !0x8
626         test___%eax,%eax
627         jmp32  %itoa_38_break
628 :itoa_38_break
629                                         # do xwhile (...); 
630 :itoa_54_loop
631                                         # *p = '0' + x%10
632         mov____$i32,%eax %0x30
633         push___%eax
634         mov____0x8(%ebp),%eax !0x8
635         push___%eax
636         mov____$i32,%eax %0xa
637         mov____%eax,%edx
638         pop____%eax
639         mov____%edx,%ebx
640         xor____%edx,%edx
641         idiv___%ebx
642         mov____%edx,%eax
643         mov____%eax,%edx
644         pop____%eax
645         add____%edx,%eax
646         push___%eax
647         mov____0x8(%ebp),%eax !0x-4
648         mov____%eax,%edx
649         pop____%eax
650         mov____%al,(%edx)
651         add____$i8,0x8(%ebp) !0x-4 !0x-1
652         test___%eax,%eax
653                                         # x = x/10
654         mov____0x8(%ebp),%eax !0x8
655         push___%eax
656         mov____$i32,%eax %0xa
657         mov____%eax,%edx
658         pop____%eax
659         mov____%edx,%ebx
660         xor____%edx,%edx
661         idiv___%ebx
662         mov____%eax,0x8(%ebp) !0x8
663         test___%eax,%eax
664 :itoa_54_continue
665         mov____0x8(%ebp),%eax !0x8
666         test___%eax,%eax
667                                         # jmp test LABEL
668         test___%eax,%eax
669         je32   %itoa_54_break
670         jmp32  %itoa_54_loop
671 :itoa_54_break
672                                         # if (sign && *(p + 1) != '0') ...
673         mov____0x8(%ebp),%eax !0x-8
674         test___%eax,%eax
675                                         # jmp test LABEL
676         test___%eax,%eax
677         je32   %itoa_89_break
678         mov____0x8(%ebp),%eax !0x-4
679         add____$i8,%eax !0x1
680         movzbl_(%eax),%eax
681         push___%eax
682         mov____$i32,%eax %0x30
683         mov____%eax,%edx
684         pop____%eax
685         push___%eax
686         sub____%edx,%eax
687         setne__%al
688         movzbl_%al,%eax
689         xchg___%eax,(%esp)
690         sub____%edx,%eax
691         lahf
692         xor____$i8,%ah !0x40
693         sahf
694         pop____%eax
695                                         # jmp test LABEL
696         jne32  %itoa_89_break
697                                         # *p = '-'
698         mov____$i32,%eax %0x2d
699         push___%eax
700         mov____0x8(%ebp),%eax !0x-4
701         mov____%eax,%edx
702         pop____%eax
703         mov____%al,(%edx)
704         add____$i8,0x8(%ebp) !0x-4 !0x-1
705         test___%eax,%eax
706         jmp32  %itoa_89_break
707 :itoa_89_break
708         mov____0x8(%ebp),%eax !0x-4
709         add____$i8,%eax !0x1
710         leave
711         ret
712
713
714 :isdigit
715         push___%ebp
716         mov____%esp,%ebp
717         sub____%esp,$i32 %0x1054
718         mov____0x8(%ebp),%eax !0x8
719         push___%eax
720         mov____$i32,%eax %0x30
721         mov____%eax,%edx
722         pop____%eax
723         sub____%edx,%eax
724         setge__%al
725         movzbl_%al,%eax
726         test___%eax,%eax
727         je32   %isdigit_6_and_skip_b
728         test___%eax,%eax
729         mov____0x8(%ebp),%eax !0x8
730         push___%eax
731         mov____$i32,%eax %0x39
732         mov____%eax,%edx
733         pop____%eax
734         sub____%edx,%eax
735         setle__%al
736         movzbl_%al,%eax
737         test___%eax,%eax
738 :isdigit_6_and_skip_b
739         leave
740         ret
741
742
743 :isxdigit
744         push___%ebp
745         mov____%esp,%ebp
746         sub____%esp,$i32 %0x1054
747         push___0x8(%ebp) !0x8
748         call32 %isdigit
749         add____$i8,%esp !0x4
750         test___%eax,%eax
751         jne32  %isxdigit_3_or_skip_b
752         test___%eax,%eax
753         mov____0x8(%ebp),%eax !0x8
754         push___%eax
755         mov____$i32,%eax %0x61
756         mov____%eax,%edx
757         pop____%eax
758         sub____%edx,%eax
759         setge__%al
760         movzbl_%al,%eax
761         test___%eax,%eax
762         je32   %isxdigit_11_and_skip_b
763         test___%eax,%eax
764         mov____0x8(%ebp),%eax !0x8
765         push___%eax
766         mov____$i32,%eax %0x66
767         mov____%eax,%edx
768         pop____%eax
769         sub____%edx,%eax
770         setle__%al
771         movzbl_%al,%eax
772         test___%eax,%eax
773 :isxdigit_11_and_skip_b
774         test___%eax,%eax
775 :isxdigit_3_or_skip_b
776         leave
777         ret
778
779
780 :isnumber
781         push___%ebp
782         mov____%esp,%ebp
783         sub____%esp,$i32 %0x1054
784                                         # if (base == 2) ...
785         mov____0x8(%ebp),%eax !0xc
786         push___%eax
787         mov____$i32,%eax %0x2
788         mov____%eax,%edx
789         pop____%eax
790         sub____%edx,%eax
791         sete___%al
792         movzbl_%al,%eax
793                                         # jmp test LABEL
794         jne32  %isnumber_1_break
795         mov____0x8(%ebp),%eax !0x8
796         push___%eax
797         mov____$i32,%eax %0x30
798         mov____%eax,%edx
799         pop____%eax
800         sub____%edx,%eax
801         setge__%al
802         movzbl_%al,%eax
803         test___%eax,%eax
804         je32   %isnumber_14_and_skip_b
805         test___%eax,%eax
806         mov____0x8(%ebp),%eax !0x8
807         push___%eax
808         mov____$i32,%eax %0x31
809         mov____%eax,%edx
810         pop____%eax
811         sub____%edx,%eax
812         setle__%al
813         movzbl_%al,%eax
814         test___%eax,%eax
815 :isnumber_14_and_skip_b
816         leave
817         ret
818         jmp32  %isnumber_1_break
819 :isnumber_1_break
820                                         # if (base == 8) ...
821         mov____0x8(%ebp),%eax !0xc
822         push___%eax
823         mov____$i32,%eax %0x8
824         mov____%eax,%edx
825         pop____%eax
826         sub____%edx,%eax
827         sete___%al
828         movzbl_%al,%eax
829                                         # jmp test LABEL
830         jne32  %isnumber_27_break
831         mov____0x8(%ebp),%eax !0x8
832         push___%eax
833         mov____$i32,%eax %0x30
834         mov____%eax,%edx
835         pop____%eax
836         sub____%edx,%eax
837         setge__%al
838         movzbl_%al,%eax
839         test___%eax,%eax
840         je32   %isnumber_40_and_skip_b
841         test___%eax,%eax
842         mov____0x8(%ebp),%eax !0x8
843         push___%eax
844         mov____$i32,%eax %0x37
845         mov____%eax,%edx
846         pop____%eax
847         sub____%edx,%eax
848         setle__%al
849         movzbl_%al,%eax
850         test___%eax,%eax
851 :isnumber_40_and_skip_b
852         leave
853         ret
854         jmp32  %isnumber_27_break
855 :isnumber_27_break
856                                         # if (base == 10) ...
857         mov____0x8(%ebp),%eax !0xc
858         push___%eax
859         mov____$i32,%eax %0xa
860         mov____%eax,%edx
861         pop____%eax
862         sub____%edx,%eax
863         sete___%al
864         movzbl_%al,%eax
865                                         # jmp test LABEL
866         jne32  %isnumber_53_break
867         push___0x8(%ebp) !0x8
868         call32 %isdigit
869         add____$i8,%esp !0x4
870         leave
871         ret
872         jmp32  %isnumber_53_break
873 :isnumber_53_break
874                                         # if (base == 16) ...
875         mov____0x8(%ebp),%eax !0xc
876         push___%eax
877         mov____$i32,%eax %0x10
878         mov____%eax,%edx
879         pop____%eax
880         sub____%edx,%eax
881         sete___%al
882         movzbl_%al,%eax
883                                         # jmp test LABEL
884         jne32  %isnumber_66_break
885         push___0x8(%ebp) !0x8
886         call32 %isxdigit
887         add____$i8,%esp !0x4
888         leave
889         ret
890         jmp32  %isnumber_66_break
891 :isnumber_66_break
892         leave
893         ret
894
895
896 :_atoi
897         push___%ebp
898         mov____%esp,%ebp
899         sub____%esp,$i32 %0x1054
900                                         # char *s = *p; 
901         mov____0x8(%ebp),%eax !0x8
902         mov____(%eax),%eax
903         mov____%eax,0x8(%ebp) !0x-4
904                                         # int i = 0; 
905         mov____$i32,%eax %0x0
906         mov____%eax,0x8(%ebp) !0x-8
907                                         # int sign = 1; 
908         mov____$i32,%eax %0x1
909         mov____%eax,0x8(%ebp) !0x-c
910                                         # if (!base) ...
911         mov____0x8(%ebp),%eax !0xc
912         test___%eax,%eax
913         sete___%al
914         movzbl_%al,%eax
915         test___%eax,%eax
916                                         # jmp test LABEL
917         je32   %_atoi_11_break
918                                         # base = 10
919         mov____$i32,%eax %0xa
920         mov____%eax,0x8(%ebp) !0xc
921         test___%eax,%eax
922         jmp32  %_atoi_11_break
923 :_atoi_11_break
924                                         # if (*s && *s == '-') ...
925         mov____0x8(%ebp),%eax !0x-4
926         movzbl_(%eax),%eax
927         test___%eax,%eax
928                                         # jmp test LABEL
929         test___%eax,%eax
930         test___%al,%al
931         je32   %_atoi_24_break
932         mov____0x8(%ebp),%eax !0x-4
933         movzbl_(%eax),%eax
934         push___%eax
935         mov____$i32,%eax %0x2d
936         mov____%eax,%edx
937         pop____%eax
938         sub____%edx,%eax
939         sete___%al
940         movzbl_%al,%eax
941                                         # jmp test LABEL
942         jne32  %_atoi_24_break
943                                         # sign = -1
944         push___%eax
945         mov____$i32,%eax %0x1
946         mov____%eax,%edx
947         pop____%eax
948         mov____$i32,%eax %0x0
949         sub____%edx,%eax
950         mov____%eax,0x8(%ebp) !0x-c
951         test___%eax,%eax
952         mov____0x8(%ebp),%eax !0x-4
953         push___%eax
954         mov____%ebp,%eax
955         add____$i8,%eax !0x-4
956         add____$i8,(%eax) !0x1
957         pop____%eax
958         test___%eax,%eax
959         jmp32  %_atoi_24_break
960 :_atoi_24_break
961                                         # while (isnumber(*s, base)) ...
962         jmp32  %_atoi_55_continue
963 :_atoi_55_loop
964                                         # i *= base
965         mov____0x8(%ebp),%eax !0xc
966         push___%eax
967         mov____0x8(%ebp),%eax !0x-8
968         pop____%edx
969         mul____%edx
970         mov____%eax,0x8(%ebp) !0x-8
971         test___%eax,%eax
972                                         # int m = *s > '9'? 'a' - 10: '0'; 
973                                         # *s > '9'? ...: ...
974         mov____0x8(%ebp),%eax !0x-4
975         movzbl_(%eax),%eax
976         push___%eax
977         mov____$i32,%eax %0x39
978         mov____%eax,%edx
979         pop____%eax
980         sub____%edx,%eax
981         setg___%al
982         movzbl_%al,%eax
983         test___%eax,%eax
984                                         # jmp test LABEL
985         jle32  %_atoi_67_else
986         mov____$i32,%eax %0x61
987         add____$i8,%eax !0x-a
988         test___%eax,%eax
989         jmp32  %_atoi_67_break
990 :_atoi_67_else
991         mov____$i32,%eax %0x30
992         test___%eax,%eax
993 :_atoi_67_break
994         mov____%eax,0x8(%ebp) !0x-10
995                                         # i += *s - m
996         mov____0x8(%ebp),%eax !0x-4
997         movzbl_(%eax),%eax
998         push___%eax
999         mov____0x8(%ebp),%eax !0x-10
1000         mov____%eax,%edx
1001         pop____%eax
1002         sub____%edx,%eax
1003         push___%eax
1004         mov____0x8(%ebp),%eax !0x-8
1005         pop____%edx
1006         add____%edx,%eax
1007         mov____%eax,0x8(%ebp) !0x-8
1008         test___%eax,%eax
1009         mov____0x8(%ebp),%eax !0x-4
1010         push___%eax
1011         mov____%ebp,%eax
1012         add____$i8,%eax !0x-4
1013         add____$i8,(%eax) !0x1
1014         pop____%eax
1015         test___%eax,%eax
1016 :_atoi_55_continue
1017         push___0x8(%ebp) !0xc
1018         mov____0x8(%ebp),%eax !0x-4
1019         movzbl_(%eax),%eax
1020         push___%eax
1021         call32 %isnumber
1022         add____$i8,%esp !0x8
1023         test___%eax,%eax
1024                                         # jmp test LABEL
1025         test___%eax,%eax
1026         je32   %_atoi_55_break
1027         jmp32  %_atoi_55_loop
1028 :_atoi_55_break
1029                                         # *p = s
1030         mov____0x8(%ebp),%eax !0x-4
1031         push___%eax
1032         mov____0x8(%ebp),%eax !0x8
1033         mov____%eax,%edx
1034         pop____%eax
1035         mov____%eax,(%edx)
1036         test___%eax,%eax
1037         mov____0x8(%ebp),%eax !0x-8
1038         push___%eax
1039         mov____0x8(%ebp),%eax !0x-c
1040         mov____%eax,%edx
1041         pop____%eax
1042         mul____%edx
1043         leave
1044         ret
1045
1046
1047 :atoi
1048         push___%ebp
1049         mov____%esp,%ebp
1050         sub____%esp,$i32 %0x1054
1051                                         # char *p = s; 
1052         mov____0x8(%ebp),%eax !0x8
1053         mov____%eax,0x8(%ebp) !0x-4
1054         mov____$i32,%eax %0x0
1055         push___%eax
1056         lea____0x8(%ebp),%eax !0x-4
1057         push___%eax
1058         call32 %_atoi
1059         add____$i8,%esp !0x8
1060         leave
1061         ret
1062
1063
1064 :malloc
1065         push___%ebp
1066         mov____%esp,%ebp
1067         sub____%esp,$i32 %0x1054
1068                                         # if (!g_brk) ...
1069         mov____0x32,%eax &g_brk
1070         test___%eax,%eax
1071         sete___%al
1072         movzbl_%al,%eax
1073         test___%eax,%eax
1074                                         # jmp test LABEL
1075         je32   %malloc_1_break
1076                                         # g_brk = brk(0)
1077         mov____$i32,%eax %0x0
1078         push___%eax
1079         call32 %brk
1080         add____$i8,%esp !0x4
1081         mov____%eax,0x32 &g_brk
1082         test___%eax,%eax
1083         jmp32  %malloc_1_break
1084 :malloc_1_break
1085                                         # if (brk(g_brk + size) == -1) ...
1086         mov____0x32,%eax &g_brk
1087         push___%eax
1088         mov____0x8(%ebp),%eax !0x8
1089         mov____%eax,%edx
1090         pop____%eax
1091         add____%edx,%eax
1092         push___%eax
1093         call32 %brk
1094         add____$i8,%esp !0x4
1095         push___%eax
1096         push___%eax
1097         mov____$i32,%eax %0x1
1098         mov____%eax,%edx
1099         pop____%eax
1100         mov____$i32,%eax %0x0
1101         sub____%edx,%eax
1102         mov____%eax,%edx
1103         pop____%eax
1104         sub____%edx,%eax
1105         sete___%al
1106         movzbl_%al,%eax
1107                                         # jmp test LABEL
1108         jne32  %malloc_16_break
1109         mov____$i32,%eax %0x0
1110         leave
1111         ret
1112         jmp32  %malloc_16_break
1113 :malloc_16_break
1114                                         # char *p = g_brk; 
1115         mov____0x32,%eax &g_brk
1116         mov____%eax,0x8(%ebp) !0x-4
1117                                         # g_brk += size
1118         mov____0x8(%ebp),%eax !0x8
1119         push___%eax
1120         mov____0x32,%eax &g_brk
1121         pop____%edx
1122         add____%edx,%eax
1123         mov____%eax,0x32 &g_brk
1124         test___%eax,%eax
1125         mov____0x8(%ebp),%eax !0x-4
1126         leave
1127         ret
1128
1129
1130 :memcpy
1131         push___%ebp
1132         mov____%esp,%ebp
1133         sub____%esp,$i32 %0x1054
1134                                         # char *p = dest; 
1135         mov____0x8(%ebp),%eax !0x8
1136         mov____%eax,0x8(%ebp) !0x-4
1137                                         # char *q = src; 
1138         mov____0x8(%ebp),%eax !0xc
1139         mov____%eax,0x8(%ebp) !0x-8
1140                                         # while (n--) ...
1141         jmp32  %memcpy_7_continue
1142 :memcpy_7_loop
1143                                         # *p = *q++
1144         mov____0x8(%ebp),%eax !0x-8
1145         push___%eax
1146         mov____%ebp,%eax
1147         add____$i8,%eax !0x-8
1148         add____$i8,(%eax) !0x1
1149         pop____%eax
1150         movzbl_(%eax),%eax
1151         push___%eax
1152         mov____0x8(%ebp),%eax !0x-4
1153         mov____%eax,%edx
1154         pop____%eax
1155         mov____%al,(%edx)
1156         add____$i8,0x8(%ebp) !0x-4 !0x1
1157         test___%eax,%eax
1158 :memcpy_7_continue
1159         mov____0x8(%ebp),%eax !0x10
1160         push___%eax
1161         mov____%ebp,%eax
1162         add____$i8,%eax !0x10
1163         add____$i8,(%eax) !0x-1
1164         pop____%eax
1165         test___%eax,%eax
1166                                         # jmp test LABEL
1167         test___%eax,%eax
1168         je32   %memcpy_7_break
1169         jmp32  %memcpy_7_loop
1170 :memcpy_7_break
1171         mov____0x8(%ebp),%eax !0x8
1172         leave
1173         ret
1174
1175
1176 :realloc
1177         push___%ebp
1178         mov____%esp,%ebp
1179         sub____%esp,$i32 %0x1054
1180                                         # void *new = malloc(size); 
1181         push___0x8(%ebp) !0xc
1182         call32 %malloc
1183         add____$i8,%esp !0x4
1184         mov____%eax,0x8(%ebp) !0x-4
1185                                         # if (ptr && new) ...
1186         mov____0x8(%ebp),%eax !0x8
1187         test___%eax,%eax
1188                                         # jmp test LABEL
1189         test___%eax,%eax
1190         je32   %realloc_5_break
1191         mov____0x8(%ebp),%eax !0x-4
1192         test___%eax,%eax
1193                                         # jmp test LABEL
1194         test___%eax,%eax
1195         je32   %realloc_5_break
1196                                         # memcpy(new, ptr, size); 
1197         push___0x8(%ebp) !0xc
1198         push___0x8(%ebp) !0x8
1199         push___0x8(%ebp) !0x-4
1200         call32 %memcpy
1201         add____$i8,%esp !0xc
1202         test___%eax,%eax
1203                                         # free(ptr); 
1204         push___0x8(%ebp) !0x8
1205         call32 %free
1206         add____$i8,%esp !0x4
1207         test___%eax,%eax
1208         jmp32  %realloc_5_break
1209 :realloc_5_break
1210         mov____0x8(%ebp),%eax !0x-4
1211         leave
1212         ret
1213
1214
1215 :strncmp
1216         push___%ebp
1217         mov____%esp,%ebp
1218         sub____%esp,$i32 %0x1054
1219                                         # while (*a && *b && *a == *b && --length) ...
1220         jmp32  %strncmp_1_continue
1221 :strncmp_1_loop
1222         mov____0x8(%ebp),%eax !0x8
1223         push___%eax
1224         mov____%ebp,%eax
1225         add____$i8,%eax !0x8
1226         add____$i8,(%eax) !0x1
1227         pop____%eax
1228         test___%eax,%eax
1229         mov____0x8(%ebp),%eax !0xc
1230         push___%eax
1231         mov____%ebp,%eax
1232         add____$i8,%eax !0xc
1233         add____$i8,(%eax) !0x1
1234         pop____%eax
1235         test___%eax,%eax
1236 :strncmp_1_continue
1237         mov____0x8(%ebp),%eax !0x8
1238         movzbl_(%eax),%eax
1239         test___%eax,%eax
1240                                         # jmp test LABEL
1241         test___%eax,%eax
1242         test___%al,%al
1243         je32   %strncmp_1_break
1244         mov____0x8(%ebp),%eax !0xc
1245         movzbl_(%eax),%eax
1246         test___%eax,%eax
1247                                         # jmp test LABEL
1248         test___%eax,%eax
1249         test___%al,%al
1250         je32   %strncmp_1_break
1251         mov____0x8(%ebp),%eax !0x8
1252         movzbl_(%eax),%eax
1253         push___%eax
1254         mov____0x8(%ebp),%eax !0xc
1255         movzbl_(%eax),%eax
1256         mov____%eax,%edx
1257         pop____%eax
1258         sub____%edx,%eax
1259         sete___%al
1260         movzbl_%al,%eax
1261                                         # jmp test LABEL
1262         jne32  %strncmp_1_break
1263         mov____%ebp,%eax
1264         add____$i8,%eax !0x10
1265         add____$i8,(%eax) !0x-1
1266         mov____0x8(%ebp),%eax !0x10
1267         test___%eax,%eax
1268                                         # jmp test LABEL
1269         test___%eax,%eax
1270         je32   %strncmp_1_break
1271         jmp32  %strncmp_1_loop
1272 :strncmp_1_break
1273         mov____0x8(%ebp),%eax !0x8
1274         movzbl_(%eax),%eax
1275         push___%eax
1276         mov____0x8(%ebp),%eax !0xc
1277         movzbl_(%eax),%eax
1278         mov____%eax,%edx
1279         pop____%eax
1280         sub____%edx,%eax
1281         leave
1282         ret
1283
1284
1285 :getenv
1286         push___%ebp
1287         mov____%esp,%ebp
1288         sub____%esp,$i32 %0x1054
1289                                         # char **p = g_environment; 
1290         mov____0x32,%eax &g_environment
1291         mov____%eax,0x8(%ebp) !0x-4
1292                                         # int length = strlen(s); 
1293         push___0x8(%ebp) !0x8
1294         call32 %strlen
1295         add____$i8,%esp !0x4
1296         mov____%eax,0x8(%ebp) !0x-8
1297                                         # while (*p) ...
1298         jmp32  %getenv_8_continue
1299 :getenv_8_loop
1300                                         # if (!strncmp(s, *p, length) && *(*p + length) == '=') ...
1301         push___0x8(%ebp) !0x-8
1302         mov____0x8(%ebp),%eax !0x-4
1303         mov____(%eax),%eax
1304         push___%eax
1305         push___0x8(%ebp) !0x8
1306         call32 %strncmp
1307         add____$i8,%esp !0xc
1308         test___%eax,%eax
1309         sete___%al
1310         movzbl_%al,%eax
1311         test___%eax,%eax
1312                                         # jmp test LABEL
1313         je32   %getenv_11_break
1314         mov____0x8(%ebp),%eax !0x-4
1315         mov____(%eax),%eax
1316         push___%eax
1317         mov____0x8(%ebp),%eax !0x-8
1318         mov____%eax,%edx
1319         pop____%eax
1320         add____%edx,%eax
1321         movzbl_(%eax),%eax
1322         push___%eax
1323         mov____$i32,%eax %0x3d
1324         mov____%eax,%edx
1325         pop____%eax
1326         sub____%edx,%eax
1327         sete___%al
1328         movzbl_%al,%eax
1329                                         # jmp test LABEL
1330         jne32  %getenv_11_break
1331         mov____0x8(%ebp),%eax !0x-4
1332         mov____(%eax),%eax
1333         push___%eax
1334         mov____0x8(%ebp),%eax !0x-8
1335         mov____%eax,%edx
1336         pop____%eax
1337         add____%edx,%eax
1338         add____$i8,%eax !0x1
1339         leave
1340         ret
1341         jmp32  %getenv_11_break
1342 :getenv_11_break
1343         mov____0x8(%ebp),%eax !0x-4
1344         push___%eax
1345         mov____%ebp,%eax
1346         add____$i8,%eax !0x-4
1347         add____$i8,(%eax) !0x4
1348         pop____%eax
1349         test___%eax,%eax
1350 :getenv_8_continue
1351         mov____0x8(%ebp),%eax !0x-4
1352         mov____(%eax),%eax
1353         test___%eax,%eax
1354                                         # jmp test LABEL
1355         test___%eax,%eax
1356         je32   %getenv_8_break
1357         jmp32  %getenv_8_loop
1358 :getenv_8_break
1359         mov____$i32,%eax %0x0
1360         leave
1361         ret
1362
1363
1364 :vprintf
1365         push___%ebp
1366         mov____%esp,%ebp
1367         sub____%esp,$i32 %0x1054
1368                                         # char *p = format; 
1369         mov____0x8(%ebp),%eax !0x8
1370         mov____%eax,0x8(%ebp) !0x-4
1371                                         # while (*p) ...
1372         jmp32  %vprintf_4_continue
1373 :vprintf_4_loop
1374                                         # if (*p != '%') ...else ...
1375         mov____0x8(%ebp),%eax !0x-4
1376         movzbl_(%eax),%eax
1377         push___%eax
1378         mov____$i32,%eax %0x25
1379         mov____%eax,%edx
1380         pop____%eax
1381         push___%eax
1382         sub____%edx,%eax
1383         setne__%al
1384         movzbl_%al,%eax
1385         xchg___%eax,(%esp)
1386         sub____%edx,%eax
1387         lahf
1388         xor____$i8,%ah !0x40
1389         sahf
1390         pop____%eax
1391                                         # jmp test LABEL
1392         jne32  %vprintf_7_else
1393                                         # putchar(*p++); 
1394         mov____0x8(%ebp),%eax !0x-4
1395         push___%eax
1396         mov____%ebp,%eax
1397         add____$i8,%eax !0x-4
1398         add____$i8,(%eax) !0x1
1399         pop____%eax
1400         movzbl_(%eax),%eax
1401         push___%eax
1402         call32 %putchar
1403         add____$i8,%esp !0x4
1404         test___%eax,%eax
1405         jmp32  %vprintf_7_break
1406 :vprintf_7_else
1407         mov____0x8(%ebp),%eax !0x-4
1408         push___%eax
1409         mov____%ebp,%eax
1410         add____$i8,%eax !0x-4
1411         add____$i8,(%eax) !0x1
1412         pop____%eax
1413         test___%eax,%eax
1414                                         # char c = *p; 
1415         mov____0x8(%ebp),%eax !0x-4
1416         movzbl_(%eax),%eax
1417         mov____%eax,0x8(%ebp) !0x-8
1418                                         # switch (c) {   ...} 
1419         movzbl_0x8(%ebp),%eax !0x-8
1420 :vprintf_38_clause0
1421         cmp____$i8,%eax !0x25
1422         je32   %vprintf_38_body0
1423         jmp32  %vprintf_38_clause1
1424 :vprintf_38_body0
1425                                         # putchar(*p); 
1426         mov____0x8(%ebp),%eax !0x-4
1427         movzbl_(%eax),%eax
1428         push___%eax
1429         call32 %putchar
1430         add____$i8,%esp !0x4
1431         test___%eax,%eax
1432         jmp32  %vprintf_38_break
1433         jmp32  %vprintf_38_body1
1434 :vprintf_38_clause1
1435         cmp____$i8,%eax !0x63
1436         je32   %vprintf_38_body1
1437         jmp32  %vprintf_38_clause2
1438 :vprintf_38_body1
1439                                         # char c; 
1440                                         # c = (char)(int*)(ap = ap + 4)[-1]
1441         push___%eax
1442         mov____$i32,%eax %0x1
1443         mov____%eax,%edx
1444         pop____%eax
1445         mov____$i32,%eax %0x0
1446         sub____%edx,%eax
1447         shl____$i8,%eax !0x2
1448         push___%eax
1449                                         # ap = ap + 4
1450         mov____0x8(%ebp),%eax !0xc
1451         add____$i8,%eax !0x4
1452         mov____%eax,0x8(%ebp) !0xc
1453         mov____%eax,%edx
1454         pop____%eax
1455         add____%edx,%eax
1456         mov____(%eax),%eax
1457         mov____%eax,0x8(%ebp) !0x-c
1458         test___%eax,%eax
1459                                         # putchar(c); 
1460         push___0x8(%ebp) !0x-c
1461         call32 %putchar
1462         add____$i8,%esp !0x4
1463         test___%eax,%eax
1464         jmp32  %vprintf_38_break
1465         jmp32  %vprintf_38_body2
1466 :vprintf_38_clause2
1467         cmp____$i8,%eax !0x64
1468         je32   %vprintf_38_body2
1469         jmp32  %vprintf_38_clause3
1470 :vprintf_38_body2
1471                                         # int d; 
1472                                         # d = (int)(int*)(ap = ap + 4)[-1]
1473         push___%eax
1474         mov____$i32,%eax %0x1
1475         mov____%eax,%edx
1476         pop____%eax
1477         mov____$i32,%eax %0x0
1478         sub____%edx,%eax
1479         shl____$i8,%eax !0x2
1480         push___%eax
1481                                         # ap = ap + 4
1482         mov____0x8(%ebp),%eax !0xc
1483         add____$i8,%eax !0x4
1484         mov____%eax,0x8(%ebp) !0xc
1485         mov____%eax,%edx
1486         pop____%eax
1487         add____%edx,%eax
1488         mov____(%eax),%eax
1489         mov____%eax,0x8(%ebp) !0x-10
1490         test___%eax,%eax
1491                                         # puts(itoa(d)); 
1492         push___0x8(%ebp) !0x-10
1493         call32 %itoa
1494         add____$i8,%esp !0x4
1495         push___%eax
1496         call32 %puts
1497         add____$i8,%esp !0x4
1498         test___%eax,%eax
1499         jmp32  %vprintf_38_break
1500         jmp32  %vprintf_38_body3
1501 :vprintf_38_clause3
1502         cmp____$i8,%eax !0x73
1503         je32   %vprintf_38_body3
1504         jmp32  %vprintf_38_clause4
1505 :vprintf_38_body3
1506                                         # char *s; 
1507                                         # s = (char*)(int*)(ap = ap + 4)[-1]
1508         push___%eax
1509         mov____$i32,%eax %0x1
1510         mov____%eax,%edx
1511         pop____%eax
1512         mov____$i32,%eax %0x0
1513         sub____%edx,%eax
1514         shl____$i8,%eax !0x2
1515         push___%eax
1516                                         # ap = ap + 4
1517         mov____0x8(%ebp),%eax !0xc
1518         add____$i8,%eax !0x4
1519         mov____%eax,0x8(%ebp) !0xc
1520         mov____%eax,%edx
1521         pop____%eax
1522         add____%edx,%eax
1523         mov____(%eax),%eax
1524         mov____%eax,0x8(%ebp) !0x-14
1525         test___%eax,%eax
1526                                         # puts(s); 
1527         push___0x8(%ebp) !0x-14
1528         call32 %puts
1529         add____$i8,%esp !0x4
1530         test___%eax,%eax
1531         jmp32  %vprintf_38_break
1532         jmp32  %vprintf_38_body4
1533 :vprintf_38_clause4
1534 :vprintf_38_body4
1535                                         # putchar(*p); 
1536         mov____0x8(%ebp),%eax !0x-4
1537         movzbl_(%eax),%eax
1538         push___%eax
1539         call32 %putchar
1540         add____$i8,%esp !0x4
1541         test___%eax,%eax
1542         jmp32  %vprintf_38_break
1543 :vprintf_38_break
1544         mov____0x8(%ebp),%eax !0x-4
1545         push___%eax
1546         mov____%ebp,%eax
1547         add____$i8,%eax !0x-4
1548         add____$i8,(%eax) !0x1
1549         pop____%eax
1550         test___%eax,%eax
1551 :vprintf_7_break
1552 :vprintf_4_continue
1553         mov____0x8(%ebp),%eax !0x-4
1554         movzbl_(%eax),%eax
1555         test___%eax,%eax
1556                                         # jmp test LABEL
1557         test___%eax,%eax
1558         test___%al,%al
1559         je32   %vprintf_4_break
1560         jmp32  %vprintf_4_loop
1561 :vprintf_4_break
1562                                         # ap = 0
1563         mov____$i32,%eax %0x0
1564         mov____%eax,0x8(%ebp) !0xc
1565         test___%eax,%eax
1566         mov____$i32,%eax %0x0
1567         leave
1568         ret
1569
1570
1571 :printf
1572         push___%ebp
1573         mov____%esp,%ebp
1574         sub____%esp,$i32 %0x1054
1575                                         # va_list ap; 
1576                                         # ap = (char*)(&format + 1)
1577         mov____%ebp,%eax
1578         add____$i8,%eax !0x8
1579         add____$i8,%eax !0x4
1580         mov____%eax,0x8(%ebp) !0x-4
1581         test___%eax,%eax
1582                                         # int r = vprintf(format, ap); 
1583         push___0x8(%ebp) !0x-4
1584         push___0x8(%ebp) !0x8
1585         call32 %vprintf
1586         add____$i8,%esp !0x8
1587         mov____%eax,0x8(%ebp) !0x-8
1588                                         # ap = 0
1589         mov____$i32,%eax %0x0
1590         mov____%eax,0x8(%ebp) !0x-4
1591         test___%eax,%eax
1592         mov____0x8(%ebp),%eax !0x-8
1593         leave
1594         ret
1595
1596
1597 :vsprintf
1598         push___%ebp
1599         mov____%esp,%ebp
1600         sub____%esp,$i32 %0x1054
1601                                         # char *p = format; 
1602         mov____0x8(%ebp),%eax !0xc
1603         mov____%eax,0x8(%ebp) !0x-4
1604                                         # while (*p) ...
1605         jmp32  %vsprintf_4_continue
1606 :vsprintf_4_loop
1607                                         # if (*p != '%') ...else ...
1608         mov____0x8(%ebp),%eax !0x-4
1609         movzbl_(%eax),%eax
1610         push___%eax
1611         mov____$i32,%eax %0x25
1612         mov____%eax,%edx
1613         pop____%eax
1614         push___%eax
1615         sub____%edx,%eax
1616         setne__%al
1617         movzbl_%al,%eax
1618         xchg___%eax,(%esp)
1619         sub____%edx,%eax
1620         lahf
1621         xor____$i8,%ah !0x40
1622         sahf
1623         pop____%eax
1624                                         # jmp test LABEL
1625         jne32  %vsprintf_7_else
1626                                         # *str = *p++
1627         mov____0x8(%ebp),%eax !0x-4
1628         push___%eax
1629         mov____%ebp,%eax
1630         add____$i8,%eax !0x-4
1631         add____$i8,(%eax) !0x1
1632         pop____%eax
1633         movzbl_(%eax),%eax
1634         push___%eax
1635         mov____0x8(%ebp),%eax !0x8
1636         mov____%eax,%edx
1637         pop____%eax
1638         mov____%al,(%edx)
1639         add____$i8,0x8(%ebp) !0x8 !0x1
1640         test___%eax,%eax
1641         jmp32  %vsprintf_7_break
1642 :vsprintf_7_else
1643         mov____0x8(%ebp),%eax !0x-4
1644         push___%eax
1645         mov____%ebp,%eax
1646         add____$i8,%eax !0x-4
1647         add____$i8,(%eax) !0x1
1648         pop____%eax
1649         test___%eax,%eax
1650                                         # char c = *p; 
1651         mov____0x8(%ebp),%eax !0x-4
1652         movzbl_(%eax),%eax
1653         mov____%eax,0x8(%ebp) !0x-8
1654                                         # switch (c) {   ...} 
1655         movzbl_0x8(%ebp),%eax !0x-8
1656 :vsprintf_42_clause0
1657         cmp____$i8,%eax !0x25
1658         je32   %vsprintf_42_body0
1659         jmp32  %vsprintf_42_clause1
1660 :vsprintf_42_body0
1661                                         # *str = *p
1662         mov____0x8(%ebp),%eax !0x-4
1663         movzbl_(%eax),%eax
1664         push___%eax
1665         mov____0x8(%ebp),%eax !0x8
1666         mov____%eax,%edx
1667         pop____%eax
1668         mov____%al,(%edx)
1669         add____$i8,0x8(%ebp) !0x8 !0x1
1670         test___%eax,%eax
1671         jmp32  %vsprintf_42_break
1672         jmp32  %vsprintf_42_body1
1673 :vsprintf_42_clause1
1674         cmp____$i8,%eax !0x63
1675         je32   %vsprintf_42_body1
1676         jmp32  %vsprintf_42_clause2
1677 :vsprintf_42_body1
1678                                         # char c; 
1679                                         # c = (char)(int*)(ap = ap + 4)[-1]
1680         push___%eax
1681         mov____$i32,%eax %0x1
1682         mov____%eax,%edx
1683         pop____%eax
1684         mov____$i32,%eax %0x0
1685         sub____%edx,%eax
1686         shl____$i8,%eax !0x2
1687         push___%eax
1688                                         # ap = ap + 4
1689         mov____0x8(%ebp),%eax !0x10
1690         add____$i8,%eax !0x4
1691         mov____%eax,0x8(%ebp) !0x10
1692         mov____%eax,%edx
1693         pop____%eax
1694         add____%edx,%eax
1695         mov____(%eax),%eax
1696         mov____%eax,0x8(%ebp) !0x-c
1697         test___%eax,%eax
1698                                         # *str = c
1699         movzbl_0x8(%ebp),%eax !0x-c
1700         push___%eax
1701         mov____0x8(%ebp),%eax !0x8
1702         mov____%eax,%edx
1703         pop____%eax
1704         mov____%al,(%edx)
1705         add____$i8,0x8(%ebp) !0x8 !0x1
1706         test___%eax,%eax
1707         jmp32  %vsprintf_42_break
1708         jmp32  %vsprintf_42_body2
1709 :vsprintf_42_clause2
1710         cmp____$i8,%eax !0x64
1711         je32   %vsprintf_42_body2
1712         jmp32  %vsprintf_42_clause3
1713 :vsprintf_42_body2
1714                                         # int d; 
1715                                         # d = (int)(int*)(ap = ap + 4)[-1]
1716         push___%eax
1717         mov____$i32,%eax %0x1
1718         mov____%eax,%edx
1719         pop____%eax
1720         mov____$i32,%eax %0x0
1721         sub____%edx,%eax
1722         shl____$i8,%eax !0x2
1723         push___%eax
1724                                         # ap = ap + 4
1725         mov____0x8(%ebp),%eax !0x10
1726         add____$i8,%eax !0x4
1727         mov____%eax,0x8(%ebp) !0x10
1728         mov____%eax,%edx
1729         pop____%eax
1730         add____%edx,%eax
1731         mov____(%eax),%eax
1732         mov____%eax,0x8(%ebp) !0x-10
1733         test___%eax,%eax
1734                                         # char *s; 
1735                                         # s = itoa(d)
1736         push___0x8(%ebp) !0x-10
1737         call32 %itoa
1738         add____$i8,%esp !0x4
1739         mov____%eax,0x8(%ebp) !0x-14
1740         test___%eax,%eax
1741                                         # while (*s) ...
1742         jmp32  %vsprintf_124_continue
1743 :vsprintf_124_loop
1744                                         # *str = *s++
1745         mov____0x8(%ebp),%eax !0x-14
1746         push___%eax
1747         mov____%ebp,%eax
1748         add____$i8,%eax !0x-14
1749         add____$i8,(%eax) !0x1
1750         pop____%eax
1751         movzbl_(%eax),%eax
1752         push___%eax
1753         mov____0x8(%ebp),%eax !0x8
1754         mov____%eax,%edx
1755         pop____%eax
1756         mov____%al,(%edx)
1757         add____$i8,0x8(%ebp) !0x8 !0x1
1758         test___%eax,%eax
1759 :vsprintf_124_continue
1760         mov____0x8(%ebp),%eax !0x-14
1761         movzbl_(%eax),%eax
1762         test___%eax,%eax
1763                                         # jmp test LABEL
1764         test___%eax,%eax
1765         test___%al,%al
1766         je32   %vsprintf_124_break
1767         jmp32  %vsprintf_124_loop
1768 :vsprintf_124_break
1769         jmp32  %vsprintf_42_break
1770         jmp32  %vsprintf_42_body3
1771 :vsprintf_42_clause3
1772         cmp____$i8,%eax !0x73
1773         je32   %vsprintf_42_body3
1774         jmp32  %vsprintf_42_clause4
1775 :vsprintf_42_body3
1776                                         # char *s; 
1777                                         # s = (char*)(int*)(ap = ap + 4)[-1]
1778         push___%eax
1779         mov____$i32,%eax %0x1
1780         mov____%eax,%edx
1781         pop____%eax
1782         mov____$i32,%eax %0x0
1783         sub____%edx,%eax
1784         shl____$i8,%eax !0x2
1785         push___%eax
1786                                         # ap = ap + 4
1787         mov____0x8(%ebp),%eax !0x10
1788         add____$i8,%eax !0x4
1789         mov____%eax,0x8(%ebp) !0x10
1790         mov____%eax,%edx
1791         pop____%eax
1792         add____%edx,%eax
1793         mov____(%eax),%eax
1794         mov____%eax,0x8(%ebp) !0x-18
1795         test___%eax,%eax
1796                                         # while (*s) ...
1797         jmp32  %vsprintf_175_continue
1798 :vsprintf_175_loop
1799                                         # *str = *s++
1800         mov____0x8(%ebp),%eax !0x-18
1801         push___%eax
1802         mov____%ebp,%eax
1803         add____$i8,%eax !0x-18
1804         add____$i8,(%eax) !0x1
1805         pop____%eax
1806         movzbl_(%eax),%eax
1807         push___%eax
1808         mov____0x8(%ebp),%eax !0x8
1809         mov____%eax,%edx
1810         pop____%eax
1811         mov____%al,(%edx)
1812         add____$i8,0x8(%ebp) !0x8 !0x1
1813         test___%eax,%eax
1814 :vsprintf_175_continue
1815         mov____0x8(%ebp),%eax !0x-18
1816         movzbl_(%eax),%eax
1817         test___%eax,%eax
1818                                         # jmp test LABEL
1819         test___%eax,%eax
1820         test___%al,%al
1821         je32   %vsprintf_175_break
1822         jmp32  %vsprintf_175_loop
1823 :vsprintf_175_break
1824         jmp32  %vsprintf_42_break
1825         jmp32  %vsprintf_42_body4
1826 :vsprintf_42_clause4
1827 :vsprintf_42_body4
1828                                         # *str = *p
1829         mov____0x8(%ebp),%eax !0x-4
1830         movzbl_(%eax),%eax
1831         push___%eax
1832         mov____0x8(%ebp),%eax !0x8
1833         mov____%eax,%edx
1834         pop____%eax
1835         mov____%al,(%edx)
1836         add____$i8,0x8(%ebp) !0x8 !0x1
1837         test___%eax,%eax
1838         jmp32  %vsprintf_42_break
1839 :vsprintf_42_break
1840         mov____0x8(%ebp),%eax !0x-4
1841         push___%eax
1842         mov____%ebp,%eax
1843         add____$i8,%eax !0x-4
1844         add____$i8,(%eax) !0x1
1845         pop____%eax
1846         test___%eax,%eax
1847 :vsprintf_7_break
1848 :vsprintf_4_continue
1849         mov____0x8(%ebp),%eax !0x-4
1850         movzbl_(%eax),%eax
1851         test___%eax,%eax
1852                                         # jmp test LABEL
1853         test___%eax,%eax
1854         test___%al,%al
1855         je32   %vsprintf_4_break
1856         jmp32  %vsprintf_4_loop
1857 :vsprintf_4_break
1858                                         # ap = 0
1859         mov____$i32,%eax %0x0
1860         mov____%eax,0x8(%ebp) !0x10
1861         test___%eax,%eax
1862                                         # *str = 0
1863         mov____$i32,%eax %0x0
1864         push___%eax
1865         mov____0x8(%ebp),%eax !0x8
1866         mov____%eax,%edx
1867         pop____%eax
1868         mov____%al,(%edx)
1869         test___%eax,%eax
1870         push___0x8(%ebp) !0x8
1871         call32 %strlen
1872         add____$i8,%esp !0x4
1873         leave
1874         ret
1875
1876
1877 :sprintf
1878         push___%ebp
1879         mov____%esp,%ebp
1880         sub____%esp,$i32 %0x1054
1881                                         # va_list ap; 
1882                                         # ap = (char*)(&format + 1)
1883         mov____%ebp,%eax
1884         add____$i8,%eax !0xc
1885         add____$i8,%eax !0x4
1886         mov____%eax,0x8(%ebp) !0x-4
1887         test___%eax,%eax
1888                                         # int r = vsprintf(str, format, ap); 
1889         push___0x8(%ebp) !0x-4
1890         push___0x8(%ebp) !0xc
1891         push___0x8(%ebp) !0x8
1892         call32 %vsprintf
1893         add____$i8,%esp !0xc
1894         mov____%eax,0x8(%ebp) !0x-8
1895                                         # ap = 0
1896         mov____$i32,%eax %0x0
1897         mov____%eax,0x8(%ebp) !0x-4
1898         test___%eax,%eax
1899         mov____0x8(%ebp),%eax !0x-8
1900         leave
1901         ret
1902
1903 :g_environment
1904 !0x00 !0x00 !0x00 !0x00
1905
1906 :g_stdin
1907 !0x00 !0x00 !0x00 !0x00
1908
1909 :string__env_0
1910 "assert fail: "
1911
1912 :string__env_1
1913 "
1914 "
1915
1916 :ungetc_char
1917 !0x-1 !0x-1 !0x-1 !0x-1
1918
1919 :ungetc_buf
1920 !0x00 !0x00
1921
1922 :itoa_buf
1923 !0x00 !0x00 !0x00 !0x00 !0x00 !0x00 !0x00 !0x00 !0x00 !0x00
1924
1925 :g_brk
1926 !0x00 !0x00 !0x00 !0x00