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