|
|
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.