|
|
1.1 root 1: / module name ps
2: .comm fptr, 4
3: .comm lptr, 4
4: .comm aflag, 4
5: .comm dflag, 4
6: .comm dbflag, 4
7: .comm fflag, 4
8: .comm gflag, 4
9: .comm lflag, 4
10: .comm mflag, 4
11: .comm nflag, 4
12: .comm rflag, 4
13: .comm tflag, 4
14: .comm wflag, 4
15: .comm xflag, 4
16: .comm ttdev, 2
17: .comm nl, 108
18: .comm allp, 4
19: .comm kfile, 4
20: .comm nfile, 4
21: .comm mfile, 4
22: .comm dfile, 4
23: .comm argp, 512
24: .comm kfd, 4
25: .comm mfd, 4
26: .comm dfd, 4
27: .comm u, 536
28: .comm cutime, 4
29: .comm cprocq, 184
30: .comm callocp, 16
31: .comm sysmem, 312
32:
33: .text
34:
35: .globl main
36: main:
37: push %ebp
38: movl %ebp, %esp
39: push %esi
40: push %edi
41: push %ebx
42: call initialise
43: movl %ebx, $1
44: .L19:
45: cmpl %ebx, 8(%ebp)
46: jl .L20001
47: jmp .L17
48: .L20001:
49: movl %edi, %ebx
50: sall %edi, $2
51: addl %edi, 12(%ebp)
52: movl %esi, (%edi)
53: .L22:
54: cmpb (%esi), $0
55: jne .L20002
56: jmp .L20
57: .L20002:
58: movsxb %eax, (%esi)
59: movl %edx, $.L10002-4
60: movl %ecx, $15
61: .L10003:
62: addl %edx, $4
63: cmpl %eax, (%edx)
64: loopne .L10003
65: je .L20003
66: jmp .L41
67: .L20003:
68: ijmp 60(%edx)
69: .L10002:
70: .long 45
71: .long 68
72: .long 97
73: .long 99
74: .long 100
75: .long 102
76: .long 103
77: .long 107
78: .long 108
79: .long 109
80: .long 110
81: .long 114
82: .long 116
83: .long 119
84: .long 120
85: .long .L21
86: .long .L29
87: .long .L25
88: .long .L26
89: .long .L28
90: .long .L30
91: .long .L31
92: .long .L32
93: .long .L34
94: .long .L35
95: .long .L36
96: .long .L37
97: .long .L38
98: .long .L39
99: .long .L40
100: .L21:
101: incl %esi
102: jmp .L22
103: .L25:
104: incl aflag
105: jmp .L21
106: .L26:
107: incl %ebx
108: movl %eax, %ebx
109: cmpl %eax, 8(%ebp)
110: jl .L27
111: call usage
112: .L27:
113: movl %edi, %ebx
114: sall %edi, $2
115: addl %edi, 12(%ebp)
116: movl %eax, (%edi)
117: movl nfile, %eax
118: jmp .L21
119: .L28:
120: incl dflag
121: jmp .L21
122: .L29:
123: incl dbflag
124: jmp .L21
125: .L30:
126: incl fflag
127: jmp .L21
128: .L31:
129: incl gflag
130: jmp .L21
131: .L32:
132: incl %ebx
133: movl %eax, %ebx
134: cmpl %eax, 8(%ebp)
135: jl .L33
136: call usage
137: .L33:
138: movl %edi, %ebx
139: sall %edi, $2
140: addl %edi, 12(%ebp)
141: movl %eax, (%edi)
142: movl mfile, %eax
143: jmp .L21
144: .L34:
145: incl lflag
146: jmp .L21
147: .L35:
148: incl mflag
149: jmp .L21
150: .L36:
151: incl nflag
152: jmp .L21
153: .L37:
154: incl rflag
155: jmp .L21
156: .L38:
157: incl tflag
158: jmp .L21
159: .L39:
160: incl wflag
161: jmp .L21
162: .L40:
163: incl xflag
164: jmp .L21
165: .L41:
166: call usage
167: jmp .L21
168: .L20:
169: incl %ebx
170: jmp .L19
171: .L17:
172: call execute
173: push $0
174: call exit
175: pop %ecx
176: pop %ebx
177: pop %edi
178: pop %esi
179: leave
180: ret
181: .align 4
182: .globl initialise
183: initialise:
184:
185: .data
186:
187: .L43:
188: .byte 47
189: .byte 100
190: .byte 101
191: .byte 118
192: .byte 47
193: .byte 107
194: .byte 109
195: .byte 101
196: .byte 109
197: .byte 0
198:
199: .text
200:
201:
202: .data
203:
204: .L44:
205: .byte 47
206: .byte 100
207: .byte 101
208: .byte 118
209: .byte 47
210: .byte 109
211: .byte 101
212: .byte 109
213: .byte 0
214:
215: .text
216:
217:
218: .data
219:
220: .L45:
221: .byte 47
222: .byte 100
223: .byte 101
224: .byte 118
225: .byte 47
226: .byte 115
227: .byte 119
228: .byte 97
229: .byte 112
230: .byte 0
231:
232: .text
233:
234:
235: .data
236:
237: .L47:
238: .byte 112
239: .byte 114
240: .byte 111
241: .byte 99
242: .byte 113
243: .byte 0
244:
245: .text
246:
247:
248: .data
249:
250: .L48:
251: .byte 117
252: .byte 116
253: .byte 105
254: .byte 109
255: .byte 101
256: .byte 114
257: .byte 0
258:
259: .text
260:
261:
262: .data
263:
264: .L49:
265: .byte 115
266: .byte 116
267: .byte 105
268: .byte 109
269: .byte 101
270: .byte 114
271: .byte 0
272:
273: .text
274:
275:
276: .data
277:
278: .L50:
279: .byte 97
280: .byte 108
281: .byte 108
282: .byte 111
283: .byte 99
284: .byte 112
285: .byte 0
286:
287: .text
288:
289:
290: .data
291:
292: .L51:
293: .byte 101
294: .byte 110
295: .byte 100
296: .byte 0
297:
298: .text
299:
300:
301: .data
302:
303: .L52:
304: .byte 115
305: .byte 121
306: .byte 115
307: .byte 109
308: .byte 101
309: .byte 109
310: .byte 0
311:
312: .text
313:
314: push %ebp
315: movl %ebp, %esp
316: push %ebx
317: movl aflag, $0
318: movl gflag, $0
319: movl lflag, $0
320: movl mflag, $0
321: movl nflag, $0
322: movl xflag, $0
323: call pick_nfile
324: movl nfile, %eax
325: movl kfile, $.L43
326: movl mfile, $.L44
327: movl dfile, $.L45
328: push $512
329: call malloc
330: pop %ecx
331: movl %ebx, %eax
332: orl %eax, %eax
333: je .L46
334: push %ebx
335: push $_stdout
336: call setbuf
337: addl %esp, $8
338: .L46:
339: push $.L47
340: push $nl
341: call strcpy
342: addl %esp, $8
343: movw nl+14, $-1
344: push $.L48
345: push $nl+18
346: call strcpy
347: addl %esp, $8
348: movw nl+32, $-1
349: push $.L49
350: push $nl+36
351: call strcpy
352: addl %esp, $8
353: movw nl+50, $-1
354: push $.L50
355: push $nl+54
356: call strcpy
357: addl %esp, $8
358: movw nl+68, $-1
359: push $.L51
360: push $nl+72
361: call strcpy
362: addl %esp, $8
363: movw nl+86, $-1
364: push $.L52
365: push $nl+90
366: call strcpy
367: addl %esp, $8
368: movw nl+104, $-1
369: pop %ebx
370: leave
371: ret
372: .align 4
373: .globl usage
374: usage:
375:
376: .data
377:
378: .L54:
379: .byte 85
380: .byte 115
381: .byte 97
382: .byte 103
383: .byte 101
384: .byte 58
385: .byte 32
386: .byte 112
387: .byte 115
388: .byte 32
389: .byte 91
390: .byte 45
391: .byte 93
392: .byte 91
393: .byte 97
394: .byte 99
395: .byte 100
396: .byte 102
397: .byte 103
398: .byte 107
399: .byte 108
400: .byte 109
401: .byte 110
402: .byte 114
403: .byte 116
404: .byte 119
405: .byte 120
406: .byte 93
407: .byte 0
408:
409: .text
410:
411: push %ebp
412: movl %ebp, %esp
413: push $.L54
414: call panic
415: pop %ecx
416: leave
417: ret
418: .align 4
419: .globl pick_nfile
420: pick_nfile:
421:
422: .bss
423:
424: .align 1
425: .L57:
426: .blkb 0x10
427:
428: .text
429:
430:
431: .data
432:
433: .L58:
434: .byte 47
435: .byte 100
436: .byte 101
437: .byte 118
438: .byte 47
439: .byte 98
440: .byte 111
441: .byte 111
442: .byte 116
443: .byte 95
444: .byte 103
445: .byte 105
446: .byte 102
447: .byte 116
448: .byte 0
449:
450: .text
451:
452:
453: .data
454:
455: .L60:
456: .byte 47
457: .byte 99
458: .byte 111
459: .byte 104
460: .byte 101
461: .byte 114
462: .byte 101
463: .byte 110
464: .byte 116
465: .byte 0
466:
467: .text
468:
469:
470: .data
471:
472: .L62:
473: .byte 47
474: .byte 99
475: .byte 111
476: .byte 104
477: .byte 101
478: .byte 114
479: .byte 101
480: .byte 110
481: .byte 116
482: .byte 0
483:
484: .text
485:
486:
487: .data
488:
489: .L68:
490: .byte 47
491: .byte 97
492: .byte 117
493: .byte 116
494: .byte 111
495: .byte 98
496: .byte 111
497: .byte 111
498: .byte 116
499: .byte 0
500:
501: .text
502:
503:
504: .data
505:
506: .L70:
507: .byte 47
508: .byte 37
509: .byte 46
510: .byte 49
511: .byte 52
512: .byte 115
513: .byte 0
514:
515: .text
516:
517:
518: .data
519:
520: .L72:
521: .byte 47
522: .byte 97
523: .byte 117
524: .byte 116
525: .byte 111
526: .byte 98
527: .byte 111
528: .byte 111
529: .byte 116
530: .byte 0
531:
532: .text
533:
534: enter $528, $0
535: push %edi
536: movl -528(%ebp), $512
537: movw -524(%ebp), $257
538: push $0
539: push $.L58
540: call open
541: addl %esp, $8
542: movl -4(%ebp), %eax
543: cmpl %eax, $-1
544: jne .L59
545: push $.L60
546: jmp .L20014
547: .L59:
548: push $512
549: lea %eax, -528(%ebp)
550: push %eax
551: push -4(%ebp)
552: call read
553: addl %esp, $12
554: orl %eax, %eax
555: jne .L61
556: push -4(%ebp)
557: call close
558: pop %ecx
559: push $.L62
560: jmp .L20014
561: .L61:
562: push -4(%ebp)
563: call close
564: pop %ecx
565: movl -16(%ebp), $0
566: push $0
567: lea %eax, -528(%ebp)
568: push %eax
569: call fifo_open
570: addl %esp, $8
571: movl -8(%ebp), %eax
572: orl %eax, %eax
573: jne .L65
574: jmp .L63
575: .L65:
576: cmpl -16(%ebp), $0
577: jne .L64
578: push -8(%ebp)
579: call fifo_read
580: pop %ecx
581: movl -12(%ebp), %eax
582: orl %eax, %eax
583: je .L64
584: movl %edi, -12(%ebp)
585: cmpw 4(%edi), $771
586: jne .L65
587: movl -16(%ebp), $1
588: .L64:
589: push -8(%ebp)
590: call fifo_close
591: pop %ecx
592: cmpl -16(%ebp), $0
593: jne .L67
594: push $.L68
595: jmp .L20014
596: .L67:
597: movl %edi, -12(%ebp)
598: movw 4(%edi), $257
599: push $0
600: push %edi
601: call fifo_open
602: addl %esp, $8
603: movl -8(%ebp), %eax
604: push %eax
605: call fifo_read
606: pop %ecx
607: movl -12(%ebp), %eax
608: addl %eax, $6
609: push %eax
610: push $.L70
611: push $.L57
612: call sprintf
613: addl %esp, $12
614: push -8(%ebp)
615: call fifo_close
616: pop %ecx
617: jmp .L20005
618: .L63:
619: push $.L72
620: .L20014:
621: push $.L57
622: call strcpy
623: addl %esp, $8
624: .L20005:
625: movl %eax, $.L57
626: pop %edi
627: leave
628: ret
629: .align 4
630: .globl execute
631: execute:
632:
633: .data
634:
635: .L74:
636: .byte 0
637:
638: .text
639:
640:
641: .data
642:
643: .L76:
644: .byte 66
645: .byte 97
646: .byte 100
647: .byte 32
648: .byte 110
649: .byte 97
650: .byte 109
651: .byte 101
652: .byte 108
653: .byte 105
654: .byte 115
655: .byte 116
656: .byte 32
657: .byte 102
658: .byte 105
659: .byte 108
660: .byte 101
661: .byte 32
662: .byte 37
663: .byte 115
664: .byte 0
665:
666: .text
667:
668:
669: .data
670:
671: .L78:
672: .byte 67
673: .byte 97
674: .byte 110
675: .byte 110
676: .byte 111
677: .byte 116
678: .byte 32
679: .byte 111
680: .byte 112
681: .byte 101
682: .byte 110
683: .byte 32
684: .byte 37
685: .byte 115
686: .byte 0
687:
688: .text
689:
690:
691: .data
692:
693: .L80:
694: .byte 67
695: .byte 97
696: .byte 110
697: .byte 110
698: .byte 111
699: .byte 116
700: .byte 32
701: .byte 111
702: .byte 112
703: .byte 101
704: .byte 110
705: .byte 32
706: .byte 37
707: .byte 115
708: .byte 0
709:
710: .text
711:
712:
713: .data
714:
715: .L82:
716: .byte 79
717: .byte 117
718: .byte 116
719: .byte 32
720: .byte 111
721: .byte 102
722: .byte 32
723: .byte 99
724: .byte 111
725: .byte 114
726: .byte 101
727: .byte 32
728: .byte 111
729: .byte 114
730: .byte 32
731: .byte 105
732: .byte 110
733: .byte 118
734: .byte 97
735: .byte 108
736: .byte 105
737: .byte 100
738: .byte 32
739: .byte 107
740: .byte 101
741: .byte 114
742: .byte 110
743: .byte 101
744: .byte 108
745: .byte 32
746: .byte 115
747: .byte 112
748: .byte 101
749: .byte 99
750: .byte 105
751: .byte 102
752: .byte 105
753: .byte 101
754: .byte 100
755: .byte 0
756:
757: .text
758:
759:
760: .data
761:
762: .L83:
763: .byte 47
764: .byte 100
765: .byte 101
766: .byte 118
767: .byte 0
768:
769: .text
770:
771:
772: .data
773:
774: .L84:
775: .byte 84
776: .byte 84
777: .byte 89
778: .byte 32
779: .byte 32
780: .byte 32
781: .byte 32
782: .byte 32
783: .byte 32
784: .byte 32
785: .byte 80
786: .byte 73
787: .byte 68
788: .byte 0
789:
790: .text
791:
792:
793: .data
794:
795: .L86:
796: .byte 48
797: .byte 120
798: .byte 102
799: .byte 102
800: .byte 102
801: .byte 102
802: .byte 102
803: .byte 102
804: .byte 102
805: .byte 102
806: .byte 32
807: .byte 0
808:
809: .text
810:
811:
812: .data
813:
814: .L88:
815: .byte 32
816: .byte 71
817: .byte 82
818: .byte 79
819: .byte 85
820: .byte 80
821: .byte 0
822:
823: .text
824:
825:
826: .data
827:
828: .L90:
829: .byte 32
830: .byte 32
831: .byte 80
832: .byte 80
833: .byte 73
834: .byte 68
835: .byte 32
836: .byte 32
837: .byte 32
838: .byte 32
839: .byte 32
840: .byte 32
841: .byte 85
842: .byte 73
843: .byte 68
844: .byte 32
845: .byte 32
846: .byte 32
847: .byte 32
848: .byte 75
849: .byte 32
850: .byte 32
851: .byte 32
852: .byte 32
853: .byte 70
854: .byte 32
855: .byte 83
856: .byte 32
857: .byte 32
858: .byte 32
859: .byte 32
860: .byte 32
861: .byte 69
862: .byte 86
863: .byte 69
864: .byte 78
865: .byte 84
866: .byte 0
867:
868: .text
869:
870:
871: .data
872:
873: .L92:
874: .byte 32
875: .byte 32
876: .byte 32
877: .byte 32
878: .byte 32
879: .byte 32
880: .byte 67
881: .byte 86
882: .byte 65
883: .byte 76
884: .byte 32
885: .byte 32
886: .byte 32
887: .byte 32
888: .byte 32
889: .byte 32
890: .byte 83
891: .byte 86
892: .byte 65
893: .byte 76
894: .byte 32
895: .byte 32
896: .byte 32
897: .byte 32
898: .byte 32
899: .byte 32
900: .byte 32
901: .byte 73
902: .byte 86
903: .byte 65
904: .byte 76
905: .byte 32
906: .byte 32
907: .byte 32
908: .byte 32
909: .byte 32
910: .byte 32
911: .byte 32
912: .byte 82
913: .byte 86
914: .byte 65
915: .byte 76
916: .byte 0
917:
918: .text
919:
920:
921: .data
922:
923: .L94:
924: .byte 32
925: .byte 85
926: .byte 84
927: .byte 73
928: .byte 77
929: .byte 69
930: .byte 32
931: .byte 83
932: .byte 84
933: .byte 73
934: .byte 77
935: .byte 69
936: .byte 0
937:
938: .text
939:
940:
941: .data
942:
943: .L97:
944: .byte 32
945: .byte 32
946: .byte 32
947: .byte 32
948: .byte 32
949: .byte 32
950: .byte 32
951: .byte 32
952: .byte 32
953: .byte 32
954: .byte 32
955: .byte 0
956:
957: .text
958:
959:
960: .data
961:
962: .L98:
963: .byte 84
964: .byte 84
965: .byte 89
966: .byte 32
967: .byte 32
968: .byte 32
969: .byte 32
970: .byte 32
971: .byte 32
972: .byte 32
973: .byte 80
974: .byte 73
975: .byte 68
976: .byte 0
977:
978: .text
979:
980:
981: .data
982:
983: .L100:
984: .byte 32
985: .byte 71
986: .byte 82
987: .byte 79
988: .byte 85
989: .byte 80
990: .byte 0
991:
992: .text
993:
994:
995: .data
996:
997: .L102:
998: .byte 32
999: .byte 32
1000: .byte 80
1001: .byte 80
1002: .byte 73
1003: .byte 68
1004: .byte 32
1005: .byte 32
1006: .byte 32
1007: .byte 32
1008: .byte 32
1009: .byte 32
1010: .byte 85
1011: .byte 73
1012: .byte 68
1013: .byte 32
1014: .byte 32
1015: .byte 32
1016: .byte 32
1017: .byte 75
1018: .byte 32
1019: .byte 32
1020: .byte 32
1021: .byte 32
1022: .byte 70
1023: .byte 32
1024: .byte 83
1025: .byte 32
1026: .byte 32
1027: .byte 32
1028: .byte 32
1029: .byte 32
1030: .byte 32
1031: .byte 69
1032: .byte 86
1033: .byte 69
1034: .byte 78
1035: .byte 84
1036: .byte 0
1037:
1038: .text
1039:
1040:
1041: .data
1042:
1043: .L104:
1044: .byte 32
1045: .byte 32
1046: .byte 32
1047: .byte 32
1048: .byte 32
1049: .byte 32
1050: .byte 67
1051: .byte 86
1052: .byte 65
1053: .byte 76
1054: .byte 32
1055: .byte 32
1056: .byte 32
1057: .byte 32
1058: .byte 32
1059: .byte 32
1060: .byte 83
1061: .byte 86
1062: .byte 65
1063: .byte 76
1064: .byte 32
1065: .byte 32
1066: .byte 32
1067: .byte 32
1068: .byte 32
1069: .byte 32
1070: .byte 32
1071: .byte 73
1072: .byte 86
1073: .byte 65
1074: .byte 76
1075: .byte 32
1076: .byte 32
1077: .byte 32
1078: .byte 32
1079: .byte 32
1080: .byte 32
1081: .byte 32
1082: .byte 82
1083: .byte 86
1084: .byte 65
1085: .byte 76
1086: .byte 0
1087:
1088: .text
1089:
1090:
1091: .data
1092:
1093: .L106:
1094: .byte 32
1095: .byte 85
1096: .byte 84
1097: .byte 73
1098: .byte 77
1099: .byte 69
1100: .byte 32
1101: .byte 83
1102: .byte 84
1103: .byte 73
1104: .byte 77
1105: .byte 69
1106: .byte 0
1107:
1108: .text
1109:
1110:
1111: .data
1112:
1113: .L110:
1114: .byte 70
1115: .byte 114
1116: .byte 97
1117: .byte 103
1118: .byte 109
1119: .byte 101
1120: .byte 110
1121: .byte 116
1122: .byte 101
1123: .byte 100
1124: .byte 32
1125: .byte 108
1126: .byte 105
1127: .byte 115
1128: .byte 116
1129: .byte 0
1130:
1131: .text
1132:
1133:
1134: .data
1135:
1136: .L120:
1137: .byte 48
1138: .byte 120
1139: .byte 37
1140: .byte 56
1141: .byte 120
1142: .byte 32
1143: .byte 0
1144:
1145: .text
1146:
1147:
1148: .data
1149:
1150: .L121:
1151: .byte 32
1152: .byte 37
1153: .byte 53
1154: .byte 100
1155: .byte 0
1156:
1157: .text
1158:
1159:
1160: .data
1161:
1162: .L123:
1163: .byte 32
1164: .byte 37
1165: .byte 53
1166: .byte 100
1167: .byte 0
1168:
1169: .text
1170:
1171:
1172: .data
1173:
1174: .L125:
1175: .byte 32
1176: .byte 37
1177: .byte 53
1178: .byte 100
1179: .byte 0
1180:
1181: .text
1182:
1183:
1184: .data
1185:
1186: .L126:
1187: .byte 32
1188: .byte 37
1189: .byte 56
1190: .byte 46
1191: .byte 56
1192: .byte 115
1193: .byte 0
1194:
1195: .text
1196:
1197:
1198: .data
1199:
1200: .L127:
1201: .byte 32
1202: .byte 37
1203: .byte 52
1204: .byte 111
1205: .byte 0
1206:
1207: .text
1208:
1209:
1210: .data
1211:
1212: .L128:
1213: .byte 32
1214: .byte 37
1215: .byte 99
1216: .byte 0
1217:
1218: .text
1219:
1220:
1221: .data
1222:
1223: .L130:
1224: .byte 32
1225: .byte 48
1226: .byte 120
1227: .byte 37
1228: .byte 56
1229: .byte 120
1230: .byte 0
1231:
1232: .text
1233:
1234:
1235: .data
1236:
1237: .L133:
1238: .byte 32
1239: .byte 32
1240: .byte 32
1241: .byte 32
1242: .byte 32
1243: .byte 32
1244: .byte 32
1245: .byte 32
1246: .byte 32
1247: .byte 32
1248: .byte 45
1249: .byte 0
1250:
1251: .text
1252:
1253:
1254: .data
1255:
1256: .L135:
1257: .byte 32
1258: .byte 32
1259: .byte 32
1260: .byte 32
1261: .byte 32
1262: .byte 32
1263: .byte 32
1264: .byte 32
1265: .byte 32
1266: .byte 32
1267: .byte 32
1268: .byte 0
1269:
1270: .text
1271:
1272:
1273: .data
1274:
1275: .L137:
1276: .byte 32
1277: .byte 37
1278: .byte 57
1279: .byte 117
1280: .byte 0
1281:
1282: .text
1283:
1284:
1285: .data
1286:
1287: .L138:
1288: .byte 32
1289: .byte 37
1290: .byte 57
1291: .byte 117
1292: .byte 0
1293:
1294: .text
1295:
1296:
1297: .data
1298:
1299: .L139:
1300: .byte 32
1301: .byte 37
1302: .byte 49
1303: .byte 48
1304: .byte 100
1305: .byte 0
1306:
1307: .text
1308:
1309:
1310: .data
1311:
1312: .L140:
1313: .byte 32
1314: .byte 37
1315: .byte 49
1316: .byte 48
1317: .byte 100
1318: .byte 0
1319:
1320: .text
1321:
1322:
1323: .data
1324:
1325: .L142:
1326: .byte 32
1327: .byte 32
1328: .byte 0
1329:
1330: .text
1331:
1332: enter $8, $0
1333: push %esi
1334: push %edi
1335: push %ebx
1336: push $6
1337: push $.L74
1338: push $nl
1339: push nfile
1340: call coffnlist
1341: addl %esp, $16
1342: movzx %eax, nl+14
1343: cmpl %eax, $-1
1344: jne .L75
1345: push nfile
1346: push $.L76
1347: call panic
1348: addl %esp, $8
1349: .L75:
1350: push $0
1351: push mfile
1352: call open
1353: addl %esp, $8
1354: movl mfd, %eax
1355: orl %eax, %eax
1356: jge .L77
1357: push mfile
1358: push $.L78
1359: call panic
1360: addl %esp, $8
1361: .L77:
1362: push $0
1363: push kfile
1364: call open
1365: addl %esp, $8
1366: movl kfd, %eax
1367: orl %eax, %eax
1368: jge .L79
1369: push kfile
1370: push $.L80
1371: call panic
1372: addl %esp, $8
1373: .L79:
1374: push $0
1375: push dfile
1376: call open
1377: addl %esp, $8
1378: movl dfd, %eax
1379: push $184
1380: push $cprocq
1381: push nl+8
1382: call kread
1383: addl %esp, $12
1384: push $312
1385: push $sysmem
1386: push nl+98
1387: call kread
1388: addl %esp, $12
1389: push $16
1390: push $callocp
1391: push nl+62
1392: call kread
1393: addl %esp, $12
1394: push callocp+8
1395: call malloc
1396: pop %ecx
1397: movl allp, %eax
1398: orl %eax, %eax
1399: jne .L81
1400: push $.L82
1401: call panic
1402: pop %ecx
1403: .L81:
1404: push callocp+8
1405: push allp
1406: push callocp+4
1407: call kread
1408: addl %esp, $12
1409: push $4
1410: push $cutime
1411: push nl+26
1412: call kread
1413: addl %esp, $12
1414: call settdev
1415: push $.L83
1416: call fttys
1417: pop %ecx
1418: push $.L84
1419: call strlen
1420: pop %ecx
1421: movl -8(%ebp), %eax
1422: cmpl dbflag, $0
1423: je .L85
1424: push $.L86
1425: call strlen
1426: pop %ecx
1427: addl -8(%ebp), %eax
1428: .L85:
1429: cmpl gflag, $0
1430: je .L87
1431: push $.L88
1432: call strlen
1433: pop %ecx
1434: addl -8(%ebp), %eax
1435: .L87:
1436: cmpl lflag, $0
1437: je .L89
1438: push $.L90
1439: call strlen
1440: pop %ecx
1441: addl -8(%ebp), %eax
1442: .L89:
1443: cmpl mflag, $0
1444: je .L91
1445: push $.L92
1446: call strlen
1447: pop %ecx
1448: addl -8(%ebp), %eax
1449: .L91:
1450: cmpl tflag, $0
1451: je .L93
1452: push $.L94
1453: call strlen
1454: pop %ecx
1455: addl -8(%ebp), %eax
1456: .L93:
1457: cmpl nflag, $0
1458: je .L20020
1459: jmp .L95
1460: .L20020:
1461: cmpl dbflag, $0
1462: je .L96
1463: push $.L97
1464: call printf
1465: pop %ecx
1466: .L96:
1467: push $.L98
1468: call printf
1469: pop %ecx
1470: cmpl gflag, $0
1471: je .L99
1472: push $.L100
1473: call printf
1474: pop %ecx
1475: .L99:
1476: cmpl lflag, $0
1477: je .L101
1478: push $.L102
1479: call printf
1480: pop %ecx
1481: .L101:
1482: cmpl mflag, $0
1483: je .L103
1484: push $.L104
1485: call printf
1486: pop %ecx
1487: .L103:
1488: cmpl tflag, $0
1489: je .L105
1490: push $.L106
1491: call printf
1492: pop %ecx
1493: .L105:
1494: decl _stdout+12
1495: jge .L10004
1496: incl _stdout+12
1497: push $_stdout
1498: push $10
1499: icall _stdout+20
1500: addl %esp, $8
1501: jmp .L10005
1502: .L10004:
1503: movl %edi, _stdout
1504: incl _stdout
1505: movb (%edi), $10
1506: .L10005:
1507: push $_stdout
1508: call fflush
1509: pop %ecx
1510: .L95:
1511: movl %ebx, $cprocq
1512: .L108:
1513: movl %eax, 12(%ebx)
1514: movl %esi, %eax
1515: cmpl %eax, nl+8
1516: jne .L20021
1517: jmp .L107
1518: .L20021:
1519: push %esi
1520: call range
1521: pop %ecx
1522: orl %eax, %eax
1523: jne .L109
1524: push $.L110
1525: call panic
1526: pop %ecx
1527: .L109:
1528: movl %eax, %esi
1529: subl %eax, callocp+4
1530: addl %eax, allp
1531: movl %ebx, %eax
1532: testl 60(%ebx), $128
1533: je .L111
1534: cmpl dflag, $0
1535: .L20017:
1536: jne .L113
1537: jmp .L108
1538: .L111:
1539: movw %ax, 92(%ebx)
1540: cmpw %ax, $-1
1541: jne .L114
1542: cmpl xflag, $0
1543: jmp .L20017
1544: .L114:
1545: movw %ax, 92(%ebx)
1546: cmpw %ax, ttdev
1547: je .L113
1548: cmpl aflag, $0
1549: je .L108
1550: .L113:
1551: cmpl dbflag, $0
1552: je .L119
1553: push %esi
1554: push $.L120
1555: call printf
1556: addl %esp, $8
1557: .L119:
1558: push %ebx
1559: call ptty
1560: pop %ecx
1561: push 36(%ebx)
1562: push $.L121
1563: call printf
1564: addl %esp, $8
1565: cmpl gflag, $0
1566: je .L122
1567: push 88(%ebx)
1568: push $.L123
1569: call printf
1570: addl %esp, $8
1571: .L122:
1572: cmpl lflag, $0
1573: jne .L20022
1574: jmp .L124
1575: .L20022:
1576: push 40(%ebx)
1577: push $.L125
1578: call printf
1579: addl %esp, $8
1580: push $_stdout
1581: call fflush
1582: pop %ecx
1583: push %ebx
1584: call uname
1585: pop %ecx
1586: push %eax
1587: push $.L126
1588: call printf
1589: addl %esp, $8
1590: push $_stdout
1591: call fflush
1592: pop %ecx
1593: push %ebx
1594: call psize
1595: pop %ecx
1596: push $_stdout
1597: call fflush
1598: pop %ecx
1599: push 60(%ebx)
1600: push $.L127
1601: call printf
1602: addl %esp, $8
1603: push $_stdout
1604: call fflush
1605: pop %ecx
1606: push %esi
1607: push %ebx
1608: call state
1609: addl %esp, $8
1610: movl -4(%ebp), %eax
1611: push %eax
1612: push $.L128
1613: call printf
1614: addl %esp, $8
1615: push $_stdout
1616: call fflush
1617: pop %ecx
1618: movl %eax, -4(%ebp)
1619: cmpl %eax, $83
1620: jne .L129
1621: push 80(%ebx)
1622: push $.L130
1623: call printf
1624: addl %esp, $8
1625: push $_stdout
1626: call fflush
1627: jmp .L20016
1628: .L129:
1629: cmpl fflag, $0
1630: je .L132
1631: push $.L133
1632: jmp .L20019
1633: .L132:
1634: push $.L135
1635: .L20019:
1636: call printf
1637: .L20016:
1638: pop %ecx
1639: push $_stdout
1640: call fflush
1641: pop %ecx
1642: .L124:
1643: cmpl mflag, $0
1644: je .L136
1645: push %esi
1646: push %ebx
1647: call cval
1648: addl %esp, $8
1649: push %eax
1650: push $.L137
1651: call printf
1652: addl %esp, $8
1653: push 104(%ebx)
1654: push $.L138
1655: call printf
1656: addl %esp, $8
1657: push 108(%ebx)
1658: push $.L139
1659: call printf
1660: addl %esp, $8
1661: push 112(%ebx)
1662: push $.L140
1663: call printf
1664: addl %esp, $8
1665: .L136:
1666: cmpl tflag, $0
1667: je .L141
1668: push 120(%ebx)
1669: call ptime
1670: pop %ecx
1671: push 124(%ebx)
1672: call ptime
1673: pop %ecx
1674: .L141:
1675: push $.L142
1676: call printf
1677: pop %ecx
1678: cmpl wflag, $0
1679: je .L10006
1680: movl %eax, $132
1681: jmp .L10007
1682: .L10006:
1683: movl %eax, $80
1684: .L10007:
1685: subl %eax, -8(%ebp)
1686: decl %eax
1687: push %eax
1688: push %ebx
1689: call printl
1690: addl %esp, $8
1691: decl _stdout+12
1692: jge .L10008
1693: incl _stdout+12
1694: push $_stdout
1695: push $10
1696: icall _stdout+20
1697: addl %esp, $8
1698: jmp .L10009
1699: .L10008:
1700: movl %edi, _stdout
1701: incl _stdout
1702: movb (%edi), $10
1703: .L10009:
1704: push $_stdout
1705: call fflush
1706: pop %ecx
1707: jmp .L108
1708: .L107:
1709: call rttys
1710: pop %ebx
1711: pop %edi
1712: pop %esi
1713: leave
1714: ret
1715: .align 4
1716: .globl settdev
1717: settdev:
1718: push %ebp
1719: movl %ebp, %esp
1720: push %esi
1721: push %edi
1722: push %ebx
1723: call getpid
1724: movl %edi, %eax
1725: movl %ebx, $cprocq
1726: .L145:
1727: movl %eax, 8(%ebx)
1728: movl %esi, %eax
1729: cmpl %eax, nl+8
1730: je .L144
1731: push %esi
1732: call range
1733: pop %ecx
1734: orl %eax, %eax
1735: je .L144
1736: movl %eax, %esi
1737: subl %eax, callocp+4
1738: addl %eax, allp
1739: movl %ebx, %eax
1740: cmpl %edi, 36(%ebx)
1741: jne .L145
1742: movw %ax, 92(%ebx)
1743: movw ttdev, %ax
1744: jmp .L143
1745: .L144:
1746: movw ttdev, $-1
1747: .L143:
1748: pop %ebx
1749: pop %edi
1750: pop %esi
1751: leave
1752: ret
1753: .align 4
1754: .globl fttys
1755: fttys:
1756:
1757: .data
1758:
1759: .L149:
1760: .byte 46
1761: .byte 0
1762:
1763: .text
1764:
1765:
1766: .data
1767:
1768: .L151:
1769: .byte 67
1770: .byte 97
1771: .byte 110
1772: .byte 110
1773: .byte 111
1774: .byte 116
1775: .byte 32
1776: .byte 111
1777: .byte 112
1778: .byte 101
1779: .byte 110
1780: .byte 32
1781: .byte 39
1782: .byte 37
1783: .byte 115
1784: .byte 39
1785: .byte 32
1786: .byte 105
1787: .byte 110
1788: .byte 32
1789: .byte 47
1790: .byte 100
1791: .byte 101
1792: .byte 118
1793: .byte 10
1794: .byte 0
1795:
1796: .text
1797:
1798:
1799: .data
1800:
1801: .L158:
1802: .byte 46
1803: .byte 46
1804: .byte 0
1805:
1806: .text
1807:
1808: enter $52, $0
1809: push 8(%ebp)
1810: call chdir
1811: pop %ecx
1812: push $0
1813: push $.L149
1814: call open
1815: addl %esp, $8
1816: movl -4(%ebp), %eax
1817: orl %eax, %eax
1818: jge .L150
1819: push 8(%ebp)
1820: push $.L151
1821: push $_stderr
1822: call fprintf
1823: addl %esp, $12
1824: push $1
1825: call exit
1826: pop %ecx
1827: .L150:
1828: push $16
1829: lea %eax, -52(%ebp)
1830: push %eax
1831: push -4(%ebp)
1832: call read
1833: addl %esp, $12
1834: push $16
1835: lea %eax, -52(%ebp)
1836: push %eax
1837: push -4(%ebp)
1838: call read
1839: addl %esp, $12
1840: .L153:
1841: push $16
1842: lea %eax, -52(%ebp)
1843: push %eax
1844: push -4(%ebp)
1845: call read
1846: addl %esp, $12
1847: orl %eax, %eax
1848: je .L152
1849: lea %eax, -36(%ebp)
1850: push %eax
1851: lea %eax, -50(%ebp)
1852: push %eax
1853: call stat
1854: addl %esp, $8
1855: orl %eax, %eax
1856: jl .L153
1857: testw -32(%ebp), $8192
1858: je .L155
1859: movzx %eax, -24(%ebp)
1860: push %eax
1861: lea %eax, -50(%ebp)
1862: push %eax
1863: call addname
1864: addl %esp, $8
1865: jmp .L153
1866: .L155:
1867: testw -32(%ebp), $16384
1868: je .L153
1869: lea %eax, -50(%ebp)
1870: push %eax
1871: call fttys
1872: pop %ecx
1873: jmp .L153
1874: .L152:
1875: push -4(%ebp)
1876: call close
1877: pop %ecx
1878: push $.L158
1879: call chdir
1880: pop %ecx
1881: leave
1882: ret
1883: .align 4
1884: .globl addname
1885: addname:
1886:
1887: .data
1888:
1889: .L162:
1890: .byte 79
1891: .byte 117
1892: .byte 116
1893: .byte 32
1894: .byte 111
1895: .byte 102
1896: .byte 32
1897: .byte 109
1898: .byte 101
1899: .byte 109
1900: .byte 111
1901: .byte 114
1902: .byte 121
1903: .byte 10
1904: .byte 0
1905:
1906: .text
1907:
1908:
1909: .data
1910:
1911: .L168:
1912: .byte 79
1913: .byte 117
1914: .byte 116
1915: .byte 32
1916: .byte 111
1917: .byte 102
1918: .byte 32
1919: .byte 109
1920: .byte 101
1921: .byte 109
1922: .byte 111
1923: .byte 114
1924: .byte 121
1925: .byte 10
1926: .byte 0
1927:
1928: .text
1929:
1930: push %ebp
1931: movl %ebp, %esp
1932: push %edi
1933: cmpl fptr, $0
1934: jne .L160
1935: push $20
1936: call malloc
1937: pop %ecx
1938: movl fptr, %eax
1939: orl %eax, %eax
1940: jne .L161
1941: push $.L162
1942: push $_stderr
1943: call fprintf
1944: addl %esp, $8
1945: push $1
1946: call exit
1947: pop %ecx
1948: .L161:
1949: movl %edi, fptr
1950: movl 16(%edi), $0
1951: push 8(%ebp)
1952: movl %eax, fptr
1953: addl %eax, $2
1954: push %eax
1955: call strcpy
1956: addl %esp, $8
1957: movl %eax, 12(%ebp)
1958: movl %edi, fptr
1959: jmp .L20023
1960: .L160:
1961: movl %eax, fptr
1962: .L20024:
1963: movl lptr, %eax
1964: movl %edi, lptr
1965: cmpl 16(%edi), $0
1966: je .L164
1967: movzx %eax, (%edi)
1968: cmpl %eax, 12(%ebp)
1969: je .L164
1970: movl %eax, 16(%edi)
1971: jmp .L20024
1972: .L164:
1973: movl %edi, lptr
1974: movzx %eax, (%edi)
1975: cmpl %eax, 12(%ebp)
1976: je .L159
1977: push $20
1978: call malloc
1979: pop %ecx
1980: movl %edi, lptr
1981: movl 16(%edi), %eax
1982: orl %eax, %eax
1983: jne .L167
1984: push $.L168
1985: push $_stderr
1986: call fprintf
1987: addl %esp, $8
1988: push $1
1989: call exit
1990: pop %ecx
1991: .L167:
1992: movl %edi, lptr
1993: movl %eax, 16(%edi)
1994: movl lptr, %eax
1995: movl %edi, lptr
1996: movl 16(%edi), $0
1997: push 8(%ebp)
1998: addl %eax, $2
1999: push %eax
2000: call strcpy
2001: addl %esp, $8
2002: movl %eax, 12(%ebp)
2003: movl %edi, lptr
2004: .L20023:
2005: movw (%edi), %ax
2006: .L159:
2007: pop %edi
2008: leave
2009: ret
2010: .align 4
2011: .globl rttys
2012: rttys:
2013: push %ebp
2014: movl %ebp, %esp
2015: push %edi
2016: movl %eax, fptr
2017: movl lptr, %eax
2018: .L171:
2019: movl %edi, lptr
2020: cmpl 16(%edi), $0
2021: je .L170
2022: movl %eax, lptr
2023: movl fptr, %eax
2024: movl %edi, fptr
2025: movl %eax, 16(%edi)
2026: movl lptr, %eax
2027: push %edi
2028: call free
2029: pop %ecx
2030: jmp .L171
2031: .L170:
2032: push lptr
2033: call free
2034: pop %ecx
2035: pop %edi
2036: leave
2037: ret
2038: .align 4
2039: .globl ptty
2040: ptty:
2041:
2042: .data
2043:
2044: .L174:
2045: .byte 45
2046: .byte 45
2047: .byte 45
2048: .byte 45
2049: .byte 45
2050: .byte 45
2051: .byte 45
2052: .byte 0
2053:
2054: .text
2055:
2056:
2057: .data
2058:
2059: .L175:
2060: .byte 40
2061: .byte 100
2062: .byte 32
2063: .byte 61
2064: .byte 32
2065: .byte 112
2066: .byte 112
2067: .byte 45
2068: .byte 62
2069: .byte 112
2070: .byte 95
2071: .byte 116
2072: .byte 116
2073: .byte 100
2074: .byte 101
2075: .byte 118
2076: .byte 41
2077: .byte 58
2078: .byte 32
2079: .byte 37
2080: .byte 120
2081: .byte 44
2082: .byte 32
2083: .byte 100
2084: .byte 58
2085: .byte 32
2086: .byte 37
2087: .byte 120
2088: .byte 44
2089: .byte 32
2090: .byte 112
2091: .byte 112
2092: .byte 45
2093: .byte 62
2094: .byte 112
2095: .byte 95
2096: .byte 116
2097: .byte 116
2098: .byte 100
2099: .byte 101
2100: .byte 118
2101: .byte 58
2102: .byte 32
2103: .byte 37
2104: .byte 120
2105: .byte 44
2106: .byte 32
2107: .byte 78
2108: .byte 79
2109: .byte 68
2110: .byte 69
2111: .byte 86
2112: .byte 58
2113: .byte 32
2114: .byte 37
2115: .byte 120
2116: .byte 10
2117: .byte 0
2118:
2119: .text
2120:
2121:
2122: .text
2123:
2124: .L10010:
2125: .word -1
2126:
2127: .text
2128:
2129:
2130: .data
2131:
2132: .L179:
2133: .byte 37
2134: .byte 45
2135: .byte 55
2136: .byte 46
2137: .byte 55
2138: .byte 115
2139: .byte 0
2140:
2141: .text
2142:
2143:
2144: .data
2145:
2146: .L181:
2147: .byte 37
2148: .byte 45
2149: .byte 55
2150: .byte 46
2151: .byte 55
2152: .byte 115
2153: .byte 0
2154:
2155: .text
2156:
2157:
2158: .data
2159:
2160: .L182:
2161: .byte 37
2162: .byte 51
2163: .byte 100
2164: .byte 32
2165: .byte 37
2166: .byte 51
2167: .byte 100
2168: .byte 0
2169:
2170: .text
2171:
2172: enter $4, $0
2173: push %edi
2174: push %ebx
2175: movl %ebx, 8(%ebp)
2176: movw %ax, 92(%ebx)
2177: movzx %eax, %ax
2178: movw -4(%ebp), %ax
2179: cmpl %eax, $-1
2180: jne .L173
2181: push $.L174
2182: call printf
2183: pop %ecx
2184: jmp .L172
2185: .L173:
2186: movzx %eax, .L10010
2187: push %eax
2188: movzx %eax, 92(%ebx)
2189: push %eax
2190: movzx %eax, -4(%ebp)
2191: push %eax
2192: movw %ax, 92(%ebx)
2193: movzx %eax, %ax
2194: movw -4(%ebp), %ax
2195: push %eax
2196: push $.L175
2197: call printf
2198: addl %esp, $20
2199: movl %eax, fptr
2200: .L20025:
2201: movl lptr, %eax
2202: movl %edi, lptr
2203: cmpl 16(%edi), $0
2204: je .L176
2205: movw %ax, (%edi)
2206: cmpw %ax, -4(%ebp)
2207: jne .L178
2208: movl %eax, lptr
2209: addl %eax, $2
2210: push %eax
2211: push $.L179
2212: .L20027:
2213: call printf
2214: addl %esp, $8
2215: jmp .L172
2216: .L178:
2217: movl %edi, lptr
2218: movl %eax, 16(%edi)
2219: jmp .L20025
2220: .L176:
2221: movl %edi, lptr
2222: movw %ax, (%edi)
2223: cmpw %ax, -4(%ebp)
2224: jne .L180
2225: movl %eax, lptr
2226: addl %eax, $2
2227: push %eax
2228: push $.L181
2229: jmp .L20027
2230: .L180:
2231: movzx %eax, -4(%ebp)
2232: andl %eax, $255
2233: push %eax
2234: movzx %eax, -4(%ebp)
2235: shrl %eax, $8
2236: andl %eax, $255
2237: push %eax
2238: push $.L182
2239: call printf
2240: addl %esp, $12
2241: .L172:
2242: pop %ebx
2243: pop %edi
2244: leave
2245: ret
2246: .align 4
2247: .globl uname
2248: uname:
2249:
2250: .bss
2251:
2252: .align 1
2253: .L184:
2254: .blkb 0x8
2255:
2256: .text
2257:
2258:
2259: .data
2260:
2261: .L186:
2262: .byte 37
2263: .byte 100
2264: .byte 0
2265:
2266: .text
2267:
2268: push %ebp
2269: movl %ebp, %esp
2270: push %esi
2271: push %ebx
2272: movl %ebx, 8(%ebp)
2273: push 48(%ebx)
2274: call getpwuid
2275: pop %ecx
2276: movl %esi, %eax
2277: orl %eax, %eax
2278: je .L185
2279: movl %eax, (%esi)
2280: jmp .L183
2281: .L185:
2282: push 48(%ebx)
2283: push $.L186
2284: push $.L184
2285: call sprintf
2286: addl %esp, $12
2287: movl %eax, $.L184
2288: .L183:
2289: pop %ebx
2290: pop %esi
2291: leave
2292: ret
2293: .align 4
2294: .globl cval
2295: cval:
2296: enter $4, $0
2297: push %esi
2298: push %edi
2299: push %ebx
2300: movl %ebx, 8(%ebp)
2301: movl %eax, 56(%ebx)
2302: cmpl %eax, $1
2303: jne .L188
2304: movl %eax, cutime
2305: subl %eax, 116(%ebx)
2306: movl -4(%ebp), %eax
2307: movl %eax, 100(%ebx)
2308: addl %eax, -4(%ebp)
2309: cmpl %eax, 100(%ebx)
2310: jbe .L189
2311: movl %eax, -4(%ebp)
2312: addl %eax, 100(%ebx)
2313: jmp .L187
2314: .L189:
2315: movl %eax, $-1
2316: jmp .L187
2317: .L188:
2318: movl -4(%ebp), $0
2319: movl %esi, $cprocq
2320: .L191:
2321: movl %eax, (%esi)
2322: movl %edi, %eax
2323: cmpl %eax, nl+8
2324: je .L190
2325: push %edi
2326: call range
2327: pop %ecx
2328: orl %eax, %eax
2329: je .L190
2330: movl %eax, %edi
2331: subl %eax, callocp+4
2332: addl %eax, allp
2333: movl %esi, %eax
2334: movl %eax, 100(%esi)
2335: subl -4(%ebp), %eax
2336: cmpl %edi, 12(%ebp)
2337: jne .L191
2338: movl %eax, -4(%ebp)
2339: jmp .L187
2340: .L190:
2341: call getpid
2342: cmpl %eax, 36(%ebx)
2343: jne .L194
2344: movl %eax, 100(%ebx)
2345: jmp .L187
2346: .L194:
2347: subl %eax, %eax
2348: .L187:
2349: pop %ebx
2350: pop %edi
2351: pop %esi
2352: leave
2353: ret
2354: .align 4
2355: .globl psize
2356: psize:
2357:
2358: .data
2359:
2360: .L203:
2361: .byte 32
2362: .byte 32
2363: .byte 32
2364: .byte 63
2365: .byte 75
2366: .byte 0
2367:
2368: .text
2369:
2370:
2371: .data
2372:
2373: .L205:
2374: .byte 37
2375: .byte 52
2376: .byte 108
2377: .byte 100
2378: .byte 75
2379: .byte 0
2380:
2381: .text
2382:
2383:
2384: .text
2385:
2386: .L10012:
2387: .long 1024
2388:
2389: .text
2390:
2391:
2392: .data
2393:
2394: .L208:
2395: .byte 32
2396: .byte 32
2397: .byte 32
2398: .byte 32
2399: .byte 45
2400: .byte 0
2401:
2402: .text
2403:
2404:
2405: .data
2406:
2407: .L210:
2408: .byte 32
2409: .byte 32
2410: .byte 32
2411: .byte 32
2412: .byte 32
2413: .byte 0
2414:
2415: .text
2416:
2417: enter $4, $0
2418: push %esi
2419: push %edi
2420: push %ebx
2421: movl %ebx, 8(%ebp)
2422: movl -4(%ebp), $0
2423: subl %edi, %edi
2424: .L198:
2425: cmpl %edi, $5
2426: jge .L196
2427: cmpl rflag, $0
2428: jne .L199
2429: orl %edi, %edi
2430: je .L197
2431: cmpl %edi, $4
2432: jne .L199
2433: .L197:
2434: incl %edi
2435: jmp .L198
2436: .L199:
2437: movl %ecx, %edi
2438: sall %ecx, $2
2439: addl %ecx, %ebx
2440: movl %eax, 16(%ecx)
2441: movl %esi, %eax
2442: orl %eax, %eax
2443: je .L197
2444: push %esi
2445: call range
2446: pop %ecx
2447: orl %eax, %eax
2448: jne .L202
2449: push $.L203
2450: jmp .L20031
2451: .L202:
2452: movl %eax, %esi
2453: subl %eax, callocp+4
2454: addl %eax, allp
2455: movl %esi, %eax
2456: movl %eax, 20(%esi)
2457: addl -4(%ebp), %eax
2458: jmp .L197
2459: .L196:
2460: cmpl -4(%ebp), $0
2461: je .L204
2462: movl %eax, -4(%ebp)
2463: cdq
2464: idivl .L10012
2465: push %eax
2466: push $.L205
2467: call printf
2468: addl %esp, $8
2469: jmp .L195
2470: .L204:
2471: cmpl fflag, $0
2472: je .L207
2473: push $.L208
2474: jmp .L20031
2475: .L207:
2476: push $.L210
2477: .L20031:
2478: call printf
2479: pop %ecx
2480: .L195:
2481: pop %ebx
2482: pop %edi
2483: pop %esi
2484: leave
2485: ret
2486: .align 4
2487: .globl state
2488: state:
2489: push %ebp
2490: movl %ebp, %esp
2491: push %esi
2492: push %ebx
2493: movl %ebx, 8(%ebp)
2494: movl %esi, 56(%ebx)
2495: cmpl %esi, $1
2496: jne .L212
2497: movl %eax, 80(%ebx)
2498: cmpl %eax, 12(%ebp)
2499: jne .L213
2500: movl %eax, $87
2501: jmp .L211
2502: .L213:
2503: testl 60(%ebx), $32
2504: je .L214
2505: movl %eax, $84
2506: jmp .L211
2507: .L214:
2508: movl %eax, $83
2509: jmp .L211
2510: .L212:
2511: cmpl %esi, $2
2512: jne .L215
2513: movl %eax, $82
2514: jmp .L211
2515: .L215:
2516: cmpl %esi, $3
2517: jne .L216
2518: movl %eax, $90
2519: jmp .L211
2520: .L216:
2521: movl %eax, $63
2522: .L211:
2523: pop %ebx
2524: pop %esi
2525: leave
2526: ret
2527: .align 4
2528: .globl ptime
2529: ptime:
2530:
2531: .text
2532:
2533: .L10013:
2534: .long 100
2535:
2536: .text
2537:
2538:
2539: .data
2540:
2541: .L220:
2542: .byte 32
2543: .byte 32
2544: .byte 32
2545: .byte 32
2546: .byte 32
2547: .byte 45
2548: .byte 0
2549:
2550: .text
2551:
2552:
2553: .data
2554:
2555: .L222:
2556: .byte 32
2557: .byte 32
2558: .byte 32
2559: .byte 32
2560: .byte 32
2561: .byte 32
2562: .byte 0
2563:
2564: .text
2565:
2566:
2567: .text
2568:
2569: .L10014:
2570: .long 60
2571:
2572: .text
2573:
2574:
2575: .data
2576:
2577: .L224:
2578: .byte 37
2579: .byte 54
2580: .byte 100
2581: .byte 0
2582:
2583: .text
2584:
2585:
2586: .data
2587:
2588: .L225:
2589: .byte 32
2590: .byte 37
2591: .byte 50
2592: .byte 100
2593: .byte 58
2594: .byte 37
2595: .byte 48
2596: .byte 50
2597: .byte 100
2598: .byte 0
2599:
2600: .text
2601:
2602:
2603: .text
2604:
2605: .L10015:
2606: .long 60
2607:
2608: .text
2609:
2610: push %ebp
2611: movl %ebp, %esp
2612: push %ebx
2613: movl %eax, 8(%ebp)
2614: addl %eax, $50
2615: cdq
2616: idivl .L10013
2617: movl 8(%ebp), %eax
2618: orl %eax, %eax
2619: jne .L218
2620: cmpl fflag, $0
2621: je .L219
2622: push $.L220
2623: .L20033:
2624: call printf
2625: pop %ecx
2626: jmp .L217
2627: .L219:
2628: push $.L222
2629: jmp .L20033
2630: .L218:
2631: movl %eax, 8(%ebp)
2632: cdq
2633: idivl .L10014
2634: movl %ebx, %eax
2635: cmpl %eax, $100
2636: jb .L223
2637: push %ebx
2638: push $.L224
2639: call printf
2640: addl %esp, $8
2641: jmp .L217
2642: .L223:
2643: movl %eax, 8(%ebp)
2644: subl %edx, %edx
2645: divl .L10015
2646: push %edx
2647: push %ebx
2648: push $.L225
2649: call printf
2650: addl %esp, $12
2651: .L217:
2652: pop %ebx
2653: leave
2654: ret
2655: .align 4
2656: .globl printl
2657: printl:
2658:
2659: .bss
2660:
2661: .align 4
2662: .L227:
2663: .blkb 0x4
2664:
2665: .text
2666:
2667:
2668: .data
2669:
2670: .L230:
2671: .byte 60
2672: .byte 105
2673: .byte 100
2674: .byte 108
2675: .byte 101
2676: .byte 62
2677: .byte 0
2678:
2679: .text
2680:
2681:
2682: .data
2683:
2684: .L232:
2685: .byte 32
2686: .byte 37
2687: .byte 115
2688: .byte 32
2689: .byte 0
2690:
2691: .text
2692:
2693:
2694: .data
2695:
2696: .L234:
2697: .byte 60
2698: .byte 37
2699: .byte 46
2700: .byte 42
2701: .byte 115
2702: .byte 62
2703: .byte 0
2704:
2705: .text
2706:
2707:
2708: .data
2709:
2710: .L235:
2711: .byte 0
2712:
2713: .text
2714:
2715:
2716: .data
2717:
2718: .L237:
2719: .byte 115
2720: .byte 101
2721: .byte 103
2722: .byte 114
2723: .byte 101
2724: .byte 97
2725: .byte 100
2726: .byte 32
2727: .byte 50
2728: .byte 32
2729: .byte 105
2730: .byte 110
2731: .byte 32
2732: .byte 112
2733: .byte 114
2734: .byte 105
2735: .byte 110
2736: .byte 116
2737: .byte 108
2738: .byte 10
2739: .byte 0
2740:
2741: .text
2742:
2743:
2744: .data
2745:
2746: .L238:
2747: .byte 117
2748: .byte 46
2749: .byte 117
2750: .byte 95
2751: .byte 97
2752: .byte 114
2753: .byte 103
2754: .byte 112
2755: .byte 58
2756: .byte 32
2757: .byte 37
2758: .byte 120
2759: .byte 44
2760: .byte 32
2761: .byte 115
2762: .byte 114
2763: .byte 112
2764: .byte 45
2765: .byte 62
2766: .byte 115
2767: .byte 114
2768: .byte 95
2769: .byte 98
2770: .byte 97
2771: .byte 115
2772: .byte 101
2773: .byte 58
2774: .byte 32
2775: .byte 37
2776: .byte 120
2777: .byte 10
2778: .byte 0
2779:
2780: .text
2781:
2782:
2783: .data
2784:
2785: .L239:
2786: .byte 117
2787: .byte 46
2788: .byte 117
2789: .byte 95
2790: .byte 97
2791: .byte 114
2792: .byte 103
2793: .byte 99
2794: .byte 58
2795: .byte 32
2796: .byte 37
2797: .byte 120
2798: .byte 32
2799: .byte 115
2800: .byte 114
2801: .byte 112
2802: .byte 45
2803: .byte 62
2804: .byte 115
2805: .byte 114
2806: .byte 95
2807: .byte 115
2808: .byte 105
2809: .byte 122
2810: .byte 101
2811: .byte 58
2812: .byte 32
2813: .byte 37
2814: .byte 120
2815: .byte 10
2816: .byte 0
2817:
2818: .text
2819:
2820:
2821: .data
2822:
2823: .L241:
2824: .byte 66
2825: .byte 97
2826: .byte 100
2827: .byte 32
2828: .byte 115
2829: .byte 101
2830: .byte 103
2831: .byte 114
2832: .byte 101
2833: .byte 97
2834: .byte 100
2835: .byte 40
2836: .byte 41
2837: .byte 10
2838: .byte 0
2839:
2840: .text
2841:
2842: enter $8, $0
2843: push %esi
2844: push %edi
2845: push %ebx
2846: movl %ebx, 8(%ebp)
2847: movl %eax, 56(%ebx)
2848: cmpl %eax, $3
2849: jne .L20038
2850: jmp .L226
2851: .L20038:
2852: cmpl 36(%ebx), $0
2853: jne .L229
2854: push $.L230
2855: call printf
2856: pop %ecx
2857: jmp .L226
2858: .L229:
2859: push $u
2860: push 16(%ebx)
2861: call u_init
2862: addl %esp, $8
2863: orl %eax, %eax
2864: jne .L20039
2865: jmp .L226
2866: .L20039:
2867: push $u+468
2868: push $.L232
2869: call printf
2870: addl %esp, $8
2871: jmp .L226
2872: .L243:
2873: movl %eax, -4(%ebp)
2874: decl -4(%ebp)
2875: orl %eax, %eax
2876: jne .L245
2877: jmp .L226
2878: .L245:
2879: movl %ecx, %esi
2880: incl %esi
2881: movsxb %eax, (%ecx)
2882: movl %edi, %eax
2883: orl %eax, %eax
2884: je .L244
2885: testl %edi, $128
2886: jne .L10018
2887: testb _ctype+1(%edi), $87
2888: jne .L246
2889: .L10018:
2890: decl _stdout+12
2891: jge .L10019
2892: incl _stdout+12
2893: push $_stdout
2894: push $46
2895: .L20037:
2896: icall _stdout+20
2897: addl %esp, $8
2898: jmp .L245
2899: .L10019:
2900: movl %ecx, _stdout
2901: incl _stdout
2902: movb (%ecx), $46
2903: jmp .L245
2904: .L246:
2905: movl %eax, 12(%ebp)
2906: decl 12(%ebp)
2907: orl %eax, %eax
2908: je .L226
2909: decl _stdout+12
2910: jge .L10021
2911: incl _stdout+12
2912: push $_stdout
2913: push %edi
2914: jmp .L20037
2915: .L10021:
2916: movl %ecx, _stdout
2917: incl _stdout
2918: movl %eax, %edi
2919: movb (%ecx), %al
2920: jmp .L245
2921: .L244:
2922: push $_stdout
2923: call fflush
2924: pop %ecx
2925: cmpl -4(%ebp), $0
2926: jne .L20040
2927: jmp .L243
2928: .L20040:
2929: decl _stdout+12
2930: jge .L10023
2931: incl _stdout+12
2932: push $_stdout
2933: push $32
2934: icall _stdout+20
2935: addl %esp, $8
2936: jmp .L243
2937: .L10023:
2938: movl %ecx, _stdout
2939: incl _stdout
2940: movb (%ecx), $32
2941: jmp .L243
2942: .L226:
2943: pop %ebx
2944: pop %edi
2945: pop %esi
2946: leave
2947: ret
2948: .align 4
2949: .globl u_init
2950: u_init:
2951: push %ebp
2952: movl %ebp, %esp
2953: push %ebx
2954: push 8(%ebp)
2955: call range
2956: pop %ecx
2957: orl %eax, %eax
2958: je .L20042
2959: movl %eax, 8(%ebp)
2960: subl %eax, callocp+4
2961: addl %eax, allp
2962: movl %ebx, %eax
2963: testw 12(%ebx), $1
2964: je .L251
2965: push $536
2966: push 12(%ebp)
2967: push $0
2968: push 24(%ebx)
2969: call pt_mread
2970: addl %esp, $16
2971: orl %eax, %eax
2972: je .L20042
2973: .L253:
2974: movl %eax, $1
2975: jmp .L249
2976: .L251:
2977: push $536
2978: push 12(%ebp)
2979: movl %eax, 28(%ebx)
2980: sall %eax, $9
2981: push %eax
2982: call dread
2983: addl %esp, $12
2984: orl %eax, %eax
2985: jge .L253
2986: .L20042:
2987: subl %eax, %eax
2988: .L249:
2989: pop %ebx
2990: leave
2991: ret
2992: .align 4
2993: .globl segread
2994: segread:
2995: enter $4, $0
2996: push %esi
2997: push %edi
2998: push %ebx
2999: movl %edi, 8(%ebp)
3000: push 12(%edi)
3001: call range
3002: pop %ecx
3003: orl %eax, %eax
3004: je .L20045
3005: movl %edi, 8(%ebp)
3006: movl %eax, 12(%edi)
3007: subl %eax, callocp+4
3008: addl %eax, allp
3009: movl %ebx, %eax
3010: testw 12(%ebx), $2
3011: jne .L257
3012: movl %eax, 12(%ebp)
3013: subl %eax, 4(%edi)
3014: jmp .L20044
3015: .L257:
3016: movl %ecx, 8(%ebp)
3017: movl %esi, 8(%ebp)
3018: movl %edi, 4(%esi)
3019: subl %edi, 8(%ecx)
3020: movl %eax, 12(%ebp)
3021: subl %eax, %edi
3022: .L20044:
3023: movl -4(%ebp), %eax
3024: testw 12(%ebx), $1
3025: je .L259
3026: push 20(%ebp)
3027: push 16(%ebp)
3028: push %eax
3029: push 24(%ebx)
3030: call pt_mread
3031: addl %esp, $16
3032: orl %eax, %eax
3033: je .L20045
3034: .L261:
3035: movl %eax, $1
3036: jmp .L255
3037: .L259:
3038: push 20(%ebp)
3039: push 16(%ebp)
3040: movl %eax, 28(%ebx)
3041: sall %eax, $9
3042: addl %eax, 12(%ebp)
3043: push %eax
3044: call dread
3045: addl %esp, $12
3046: orl %eax, %eax
3047: jge .L261
3048: .L20045:
3049: subl %eax, %eax
3050: .L255:
3051: pop %ebx
3052: pop %edi
3053: pop %esi
3054: leave
3055: ret
3056: .align 4
3057: .globl kread
3058: kread:
3059:
3060: .data
3061:
3062: .L265:
3063: .byte 75
3064: .byte 101
3065: .byte 114
3066: .byte 110
3067: .byte 101
3068: .byte 108
3069: .byte 32
3070: .byte 109
3071: .byte 101
3072: .byte 109
3073: .byte 111
3074: .byte 114
3075: .byte 121
3076: .byte 32
3077: .byte 114
3078: .byte 101
3079: .byte 97
3080: .byte 100
3081: .byte 32
3082: .byte 101
3083: .byte 114
3084: .byte 114
3085: .byte 111
3086: .byte 114
3087: .byte 0
3088:
3089: .text
3090:
3091: push %ebp
3092: movl %ebp, %esp
3093: push $0
3094: push 8(%ebp)
3095: push kfd
3096: call lseek
3097: addl %esp, $12
3098: push 16(%ebp)
3099: push 12(%ebp)
3100: push kfd
3101: call read
3102: addl %esp, $12
3103: cmpl %eax, 16(%ebp)
3104: je .L263
3105: push $.L265
3106: call panic
3107: pop %ecx
3108: .L263:
3109: leave
3110: ret
3111: .align 4
3112: .globl mread
3113: mread:
3114:
3115: .data
3116:
3117: .L268:
3118: .byte 77
3119: .byte 101
3120: .byte 109
3121: .byte 111
3122: .byte 114
3123: .byte 121
3124: .byte 32
3125: .byte 114
3126: .byte 101
3127: .byte 97
3128: .byte 100
3129: .byte 32
3130: .byte 101
3131: .byte 114
3132: .byte 114
3133: .byte 111
3134: .byte 114
3135: .byte 0
3136:
3137: .text
3138:
3139: push %ebp
3140: movl %ebp, %esp
3141: push $0
3142: push 8(%ebp)
3143: push mfd
3144: call lseek
3145: addl %esp, $12
3146: push 16(%ebp)
3147: push 12(%ebp)
3148: push mfd
3149: call read
3150: addl %esp, $12
3151: cmpl %eax, 16(%ebp)
3152: je .L266
3153: push $.L268
3154: call panic
3155: pop %ecx
3156: .L266:
3157: leave
3158: ret
3159: .align 4
3160: .globl dread
3161: dread:
3162:
3163: .data
3164:
3165: .L272:
3166: .byte 83
3167: .byte 119
3168: .byte 97
3169: .byte 112
3170: .byte 32
3171: .byte 114
3172: .byte 101
3173: .byte 97
3174: .byte 100
3175: .byte 32
3176: .byte 101
3177: .byte 114
3178: .byte 114
3179: .byte 111
3180: .byte 114
3181: .byte 0
3182:
3183: .text
3184:
3185: push %ebp
3186: movl %ebp, %esp
3187: cmpl dfd, $0
3188: jle .L270
3189: push $0
3190: push 8(%ebp)
3191: push dfd
3192: call lseek
3193: addl %esp, $12
3194: push 16(%ebp)
3195: push 12(%ebp)
3196: push dfd
3197: call read
3198: addl %esp, $12
3199: cmpl %eax, 16(%ebp)
3200: je .L271
3201: push $.L272
3202: call panic
3203: pop %ecx
3204: .L271:
3205: movl %eax, $1
3206: jmp .L269
3207: .L270:
3208: subl %eax, %eax
3209: .L269:
3210: leave
3211: ret
3212: .align 4
3213: .globl panic
3214: panic:
3215:
3216: .data
3217:
3218: .L274:
3219: .byte 37
3220: .byte 114
3221: .byte 0
3222:
3223: .text
3224:
3225:
3226: .data
3227:
3228: .L275:
3229: .byte 10
3230: .byte 0
3231:
3232: .text
3233:
3234: push %ebp
3235: movl %ebp, %esp
3236: push $_stdout
3237: call fflush
3238: pop %ecx
3239: push $2
3240: call sleep
3241: pop %ecx
3242: lea %eax, 8(%ebp)
3243: push %eax
3244: push $.L274
3245: push $_stderr
3246: call fprintf
3247: addl %esp, $12
3248: push $.L275
3249: push $_stderr
3250: call fprintf
3251: addl %esp, $8
3252: push $_stderr
3253: call fflush
3254: pop %ecx
3255: push $1
3256: call exit
3257: pop %ecx
3258: leave
3259: ret
3260: .align 4
3261: .globl range
3262: range:
3263: push %ebp
3264: movl %ebp, %esp
3265: movl %eax, 8(%ebp)
3266: cmpl %eax, callocp+4
3267: jb .L10025
3268: movl %eax, callocp+8
3269: addl %eax, callocp+4
3270: cmpl %eax, 8(%ebp)
3271: jbe .L10025
3272: movl %eax, $1
3273: jmp .L276
3274: .L10025:
3275: subl %eax, %eax
3276: .L276:
3277: leave
3278: ret
3279: .align 4
3280: .globl pt_mread
3281: pt_mread:
3282: enter $12, $0
3283: movl %eax, 12(%ebp)
3284: shrl %eax, $12
3285: push %eax
3286: push 8(%ebp)
3287: call pt_index
3288: addl %esp, $8
3289: movl -12(%ebp), %eax
3290: andl %eax, $1
3291: cmpl %eax, $1
3292: je .L278
3293: .L20047:
3294: subl %eax, %eax
3295: jmp .L277
3296: .L278:
3297: andl -12(%ebp), $-4096
3298: movl %eax, 12(%ebp)
3299: andl %eax, $4095
3300: movl -8(%ebp), %eax
3301: movl %eax, $4096
3302: subl %eax, -8(%ebp)
3303: cmpl %eax, 20(%ebp)
3304: jbe .L10027
3305: movl %eax, 20(%ebp)
3306: jmp .L20046
3307: .L10027:
3308: movl %eax, $4096
3309: subl %eax, -8(%ebp)
3310: .L20046:
3311: movl -4(%ebp), %eax
3312: cmpl 20(%ebp), $0
3313: jle .L279
3314: push %eax
3315: push 16(%ebp)
3316: movl %eax, -8(%ebp)
3317: addl %eax, -12(%ebp)
3318: push %eax
3319: call mread
3320: addl %esp, $12
3321: movl %eax, -4(%ebp)
3322: subl 20(%ebp), %eax
3323: addl 12(%ebp), %eax
3324: addl 16(%ebp), %eax
3325: movl %eax, 12(%ebp)
3326: shrl %eax, $12
3327: push %eax
3328: push 8(%ebp)
3329: call pt_index
3330: addl %esp, $8
3331: movl -12(%ebp), %eax
3332: andl %eax, $1
3333: cmpl %eax, $1
3334: jne .L20047
3335: andl -12(%ebp), $-4096
3336: movl %eax, 12(%ebp)
3337: andl %eax, $4095
3338: movl -8(%ebp), %eax
3339: movl %eax, 20(%ebp)
3340: cmpl %eax, $4096
3341: jl .L20046
3342: movl %eax, $4096
3343: jmp .L20046
3344: .L279:
3345: movl %eax, $1
3346: .L277:
3347: leave
3348: ret
3349: .align 4
3350: .globl pt_index
3351: pt_index:
3352: enter $4, $0
3353: push $4
3354: lea %eax, -4(%ebp)
3355: push %eax
3356: movl %eax, 12(%ebp)
3357: sall %eax, $2
3358: addl %eax, 8(%ebp)
3359: push %eax
3360: call kread
3361: addl %esp, $12
3362: movl %eax, -4(%ebp)
3363: leave
3364: ret
3365: .align 4
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.