From 6bafcf1afa767691846f5288af301943b8017362 Mon Sep 17 00:00:00 2001 From: Freya Murphy Date: Wed, 25 Sep 2024 15:07:47 -0400 Subject: [PATCH] remove obj dir --- obj/.deps | 21 - obj/.vars.INIT_CFLAGS | 1 - obj/.vars.KERN_CFLAGS | 1 - obj/.vars.KERN_LDFLAGS | 1 - obj/boot/boot | Bin 512 -> 0 bytes obj/boot/boot.asm | 325 ---- obj/boot/boot.o | Bin 1780 -> 0 bytes obj/boot/boot.out | Bin 6252 -> 0 bytes obj/boot/main.o | Bin 6276 -> 0 bytes obj/kern/console.o | Bin 14104 -> 0 bytes obj/kern/entry.o | Bin 38044 -> 0 bytes obj/kern/entrypgdir.o | Bin 16888 -> 0 bytes obj/kern/init.o | Bin 5172 -> 0 bytes obj/kern/kdebug.o | Bin 8272 -> 0 bytes obj/kern/kernel | Bin 83156 -> 0 bytes obj/kern/kernel.asm | 3349 ---------------------------------------- obj/kern/kernel.img | Bin 5120000 -> 0 bytes obj/kern/kernel.sym | 80 - obj/kern/monitor.o | Bin 8692 -> 0 bytes obj/kern/printf.o | Bin 3968 -> 0 bytes obj/kern/printfmt.o | Bin 10160 -> 0 bytes obj/kern/readline.o | Bin 3844 -> 0 bytes obj/kern/string.o | Bin 9712 -> 0 bytes 23 files changed, 3778 deletions(-) delete mode 100644 obj/.deps delete mode 100644 obj/.vars.INIT_CFLAGS delete mode 100644 obj/.vars.KERN_CFLAGS delete mode 100644 obj/.vars.KERN_LDFLAGS delete mode 100755 obj/boot/boot delete mode 100644 obj/boot/boot.asm delete mode 100644 obj/boot/boot.o delete mode 100755 obj/boot/boot.out delete mode 100644 obj/boot/main.o delete mode 100644 obj/kern/console.o delete mode 100644 obj/kern/entry.o delete mode 100644 obj/kern/entrypgdir.o delete mode 100644 obj/kern/init.o delete mode 100644 obj/kern/kdebug.o delete mode 100755 obj/kern/kernel delete mode 100644 obj/kern/kernel.asm delete mode 100644 obj/kern/kernel.img delete mode 100644 obj/kern/kernel.sym delete mode 100644 obj/kern/monitor.o delete mode 100644 obj/kern/printf.o delete mode 100644 obj/kern/printfmt.o delete mode 100644 obj/kern/readline.o delete mode 100644 obj/kern/string.o diff --git a/obj/.deps b/obj/.deps deleted file mode 100644 index 1f6e344..0000000 --- a/obj/.deps +++ /dev/null @@ -1,21 +0,0 @@ -obj/kern/init.o: kern/init.c inc/stdio.h inc/stdarg.h inc/string.h \ - inc/types.h inc/assert.h kern/monitor.h kern/console.h -obj/kern/entry.o: kern/entry.S inc/mmu.h inc/memlayout.h -obj/kern/readline.o: lib/readline.c inc/stdio.h inc/stdarg.h inc/error.h -obj/boot/main.o: boot/main.c inc/x86.h inc/types.h inc/elf.h -obj/kern/string.o: lib/string.c inc/string.h inc/types.h -obj/kern/printfmt.o: lib/printfmt.c inc/types.h inc/stdio.h inc/stdarg.h \ - inc/string.h inc/error.h -obj/boot/boot.o: boot/boot.S inc/mmu.h -obj/kern/console.o: kern/console.c inc/x86.h inc/types.h inc/memlayout.h \ - inc/mmu.h inc/kbdreg.h inc/string.h inc/assert.h inc/stdio.h \ - inc/stdarg.h kern/console.h -obj/kern/printf.o: kern/printf.c inc/types.h inc/stdio.h inc/stdarg.h -obj/kern/kdebug.o: kern/kdebug.c inc/stab.h inc/types.h inc/string.h \ - inc/memlayout.h inc/mmu.h inc/assert.h inc/stdio.h inc/stdarg.h \ - kern/kdebug.h -obj/kern/monitor.o: kern/monitor.c inc/stdio.h inc/stdarg.h inc/string.h \ - inc/types.h inc/memlayout.h inc/mmu.h inc/assert.h inc/x86.h \ - kern/console.h kern/monitor.h kern/kdebug.h -obj/kern/entrypgdir.o: kern/entrypgdir.c inc/mmu.h inc/types.h \ - inc/memlayout.h diff --git a/obj/.vars.INIT_CFLAGS b/obj/.vars.INIT_CFLAGS deleted file mode 100644 index 8b13789..0000000 --- a/obj/.vars.INIT_CFLAGS +++ /dev/null @@ -1 +0,0 @@ - diff --git a/obj/.vars.KERN_CFLAGS b/obj/.vars.KERN_CFLAGS deleted file mode 100644 index 49b052d..0000000 --- a/obj/.vars.KERN_CFLAGS +++ /dev/null @@ -1 +0,0 @@ - -O1 -fno-builtin -I. -MD -fno-omit-frame-pointer -std=gnu99 -static -Wall -Wno-format -Wno-unused -Werror -gstabs -m32 -fno-tree-ch -fno-pic -fno-pie -fno-stack-protector -DJOS_KERNEL -gstabs diff --git a/obj/.vars.KERN_LDFLAGS b/obj/.vars.KERN_LDFLAGS deleted file mode 100644 index 29bdd68..0000000 --- a/obj/.vars.KERN_LDFLAGS +++ /dev/null @@ -1 +0,0 @@ --m elf_i386 -T kern/kernel.ld -nostdlib diff --git a/obj/boot/boot b/obj/boot/boot deleted file mode 100755 index e76311afa3dbd63b0cf0fa8890f31847108813c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 512 zcmezM$M8VkjlKhY7oMc7U@HB!;o`FtDC_>S1b#-blp21818L1C82ObByfUicU`X2` zzyQ|qpzlTBg*^;43=A)BGcYi`{s$z$;QxOhHS0VBn4WZ=L7c${sOU4l-0xlA85tPf zG(R|C<52qJFi0e{^J#cMw=d6&yZ`_H-@v%*6HvjsU7vwu=ZSZnCw6@SvJSrB05QLU znF1i@H!xG8`NV^F8x+8XzI!nTXh3%@$Ib?z<-0xr75w>>8xOCFm(O@pZ0zSLm!AjgeN#qX+ngq0s!=e!U_NY diff --git a/obj/boot/boot.asm b/obj/boot/boot.asm deleted file mode 100644 index f834530..0000000 --- a/obj/boot/boot.asm +++ /dev/null @@ -1,325 +0,0 @@ - -obj/boot/boot.out: file format elf32-i386 - - -Disassembly of section .text: - -00007c00 : -.set CR0_PE_ON, 0x1 # protected mode enable flag - -.globl start -start: - .code16 # Assemble for 16-bit mode - cli # Disable interrupts - 7c00: fa cli - cld # String operations increment - 7c01: fc cld - - # Set up the important data segment registers (DS, ES, SS). - xorw %ax,%ax # Segment number zero - 7c02: 31 c0 xor %eax,%eax - movw %ax,%ds # -> Data Segment - 7c04: 8e d8 mov %eax,%ds - movw %ax,%es # -> Extra Segment - 7c06: 8e c0 mov %eax,%es - movw %ax,%ss # -> Stack Segment - 7c08: 8e d0 mov %eax,%ss - -00007c0a : - # Enable A20: - # For backwards compatibility with the earliest PCs, physical - # address line 20 is tied low, so that addresses higher than - # 1MB wrap around to zero by default. This code undoes this. -seta20.1: - inb $0x64,%al # Wait for not busy - 7c0a: e4 64 in $0x64,%al - testb $0x2,%al - 7c0c: a8 02 test $0x2,%al - jnz seta20.1 - 7c0e: 75 fa jne 7c0a - - movb $0xd1,%al # 0xd1 -> port 0x64 - 7c10: b0 d1 mov $0xd1,%al - outb %al,$0x64 - 7c12: e6 64 out %al,$0x64 - -00007c14 : - -seta20.2: - inb $0x64,%al # Wait for not busy - 7c14: e4 64 in $0x64,%al - testb $0x2,%al - 7c16: a8 02 test $0x2,%al - jnz seta20.2 - 7c18: 75 fa jne 7c14 - - movb $0xdf,%al # 0xdf -> port 0x60 - 7c1a: b0 df mov $0xdf,%al - outb %al,$0x60 - 7c1c: e6 60 out %al,$0x60 - - # Switch from real to protected mode, using a bootstrap GDT - # and segment translation that makes virtual addresses - # identical to their physical addresses, so that the - # effective memory map does not change during the switch. - lgdt gdtdesc - 7c1e: 0f 01 16 lgdtl (%esi) - 7c21: 64 7c 0f fs jl 7c33 - movl %cr0, %eax - 7c24: 20 c0 and %al,%al - orl $CR0_PE_ON, %eax - 7c26: 66 83 c8 01 or $0x1,%ax - movl %eax, %cr0 - 7c2a: 0f 22 c0 mov %eax,%cr0 - - # Jump to next instruction, but in 32-bit code segment. - # Switches processor into 32-bit mode. - ljmp $PROT_MODE_CSEG, $protcseg - 7c2d: ea .byte 0xea - 7c2e: 32 7c 08 00 xor 0x0(%eax,%ecx,1),%bh - -00007c32 : - - .code32 # Assemble for 32-bit mode -protcseg: - # Set up the protected-mode data segment registers - movw $PROT_MODE_DSEG, %ax # Our data segment selector - 7c32: 66 b8 10 00 mov $0x10,%ax - movw %ax, %ds # -> DS: Data Segment - 7c36: 8e d8 mov %eax,%ds - movw %ax, %es # -> ES: Extra Segment - 7c38: 8e c0 mov %eax,%es - movw %ax, %fs # -> FS - 7c3a: 8e e0 mov %eax,%fs - movw %ax, %gs # -> GS - 7c3c: 8e e8 mov %eax,%gs - movw %ax, %ss # -> SS: Stack Segment - 7c3e: 8e d0 mov %eax,%ss - - # Set up the stack pointer and call into C. - movl $start, %esp - 7c40: bc 00 7c 00 00 mov $0x7c00,%esp - call bootmain - 7c45: e8 db 00 00 00 call 7d25 - -00007c4a : - - # If bootmain returns (it shouldn't), loop. -spin: - jmp spin - 7c4a: eb fe jmp 7c4a - -00007c4c : - ... - 7c54: ff (bad) - 7c55: ff 00 incl (%eax) - 7c57: 00 00 add %al,(%eax) - 7c59: 9a cf 00 ff ff 00 00 lcall $0x0,$0xffff00cf - 7c60: 00 .byte 0x0 - 7c61: 92 xchg %eax,%edx - 7c62: cf iret - ... - -00007c64 : - 7c64: 17 pop %ss - 7c65: 00 4c 7c 00 add %cl,0x0(%esp,%edi,2) - ... - -00007c6a : - } -} - -void -waitdisk(void) -{ - 7c6a: f3 0f 1e fb endbr32 - -static inline uint8_t -inb(int port) -{ - uint8_t data; - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); - 7c6e: ba f7 01 00 00 mov $0x1f7,%edx - 7c73: ec in (%dx),%al - // wait for disk reaady - while ((inb(0x1F7) & 0xC0) != 0x40) - 7c74: 83 e0 c0 and $0xffffffc0,%eax - 7c77: 3c 40 cmp $0x40,%al - 7c79: 75 f8 jne 7c73 - /* do nothing */; -} - 7c7b: c3 ret - -00007c7c : - -void -readsect(void *dst, uint32_t offset) -{ - 7c7c: f3 0f 1e fb endbr32 - 7c80: 55 push %ebp - 7c81: 89 e5 mov %esp,%ebp - 7c83: 57 push %edi - 7c84: 50 push %eax - 7c85: 8b 4d 0c mov 0xc(%ebp),%ecx - // wait for disk to be ready - waitdisk(); - 7c88: e8 dd ff ff ff call 7c6a -} - -static inline void -outb(int port, uint8_t data) -{ - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); - 7c8d: b0 01 mov $0x1,%al - 7c8f: ba f2 01 00 00 mov $0x1f2,%edx - 7c94: ee out %al,(%dx) - 7c95: ba f3 01 00 00 mov $0x1f3,%edx - 7c9a: 89 c8 mov %ecx,%eax - 7c9c: ee out %al,(%dx) - - outb(0x1F2, 1); // count = 1 - outb(0x1F3, offset); - outb(0x1F4, offset >> 8); - 7c9d: 89 c8 mov %ecx,%eax - 7c9f: ba f4 01 00 00 mov $0x1f4,%edx - 7ca4: c1 e8 08 shr $0x8,%eax - 7ca7: ee out %al,(%dx) - outb(0x1F5, offset >> 16); - 7ca8: 89 c8 mov %ecx,%eax - 7caa: ba f5 01 00 00 mov $0x1f5,%edx - 7caf: c1 e8 10 shr $0x10,%eax - 7cb2: ee out %al,(%dx) - outb(0x1F6, (offset >> 24) | 0xE0); - 7cb3: 89 c8 mov %ecx,%eax - 7cb5: ba f6 01 00 00 mov $0x1f6,%edx - 7cba: c1 e8 18 shr $0x18,%eax - 7cbd: 83 c8 e0 or $0xffffffe0,%eax - 7cc0: ee out %al,(%dx) - 7cc1: b0 20 mov $0x20,%al - 7cc3: ba f7 01 00 00 mov $0x1f7,%edx - 7cc8: ee out %al,(%dx) - outb(0x1F7, 0x20); // cmd 0x20 - read sectors - - // wait for disk to be ready - waitdisk(); - 7cc9: e8 9c ff ff ff call 7c6a - asm volatile("cld\n\trepne\n\tinsl" - 7cce: 8b 7d 08 mov 0x8(%ebp),%edi - 7cd1: b9 80 00 00 00 mov $0x80,%ecx - 7cd6: ba f0 01 00 00 mov $0x1f0,%edx - 7cdb: fc cld - 7cdc: f2 6d repnz insl (%dx),%es:(%edi) - - // read a sector - insl(0x1F0, dst, SECTSIZE/4); -} - 7cde: 5a pop %edx - 7cdf: 5f pop %edi - 7ce0: 5d pop %ebp - 7ce1: c3 ret - -00007ce2 : -{ - 7ce2: f3 0f 1e fb endbr32 - 7ce6: 55 push %ebp - 7ce7: 89 e5 mov %esp,%ebp - 7ce9: 57 push %edi - 7cea: 56 push %esi - 7ceb: 53 push %ebx - 7cec: 83 ec 0c sub $0xc,%esp - offset = (offset / SECTSIZE) + 1; - 7cef: 8b 7d 10 mov 0x10(%ebp),%edi -{ - 7cf2: 8b 5d 08 mov 0x8(%ebp),%ebx - end_pa = pa + count; - 7cf5: 8b 75 0c mov 0xc(%ebp),%esi - offset = (offset / SECTSIZE) + 1; - 7cf8: c1 ef 09 shr $0x9,%edi - end_pa = pa + count; - 7cfb: 01 de add %ebx,%esi - offset = (offset / SECTSIZE) + 1; - 7cfd: 47 inc %edi - pa &= ~(SECTSIZE - 1); - 7cfe: 81 e3 00 fe ff ff and $0xfffffe00,%ebx - while (pa < end_pa) { - 7d04: 39 f3 cmp %esi,%ebx - 7d06: 73 15 jae 7d1d - readsect((uint8_t*) pa, offset); - 7d08: 50 push %eax - 7d09: 50 push %eax - 7d0a: 57 push %edi - offset++; - 7d0b: 47 inc %edi - readsect((uint8_t*) pa, offset); - 7d0c: 53 push %ebx - pa += SECTSIZE; - 7d0d: 81 c3 00 02 00 00 add $0x200,%ebx - readsect((uint8_t*) pa, offset); - 7d13: e8 64 ff ff ff call 7c7c - offset++; - 7d18: 83 c4 10 add $0x10,%esp - 7d1b: eb e7 jmp 7d04 -} - 7d1d: 8d 65 f4 lea -0xc(%ebp),%esp - 7d20: 5b pop %ebx - 7d21: 5e pop %esi - 7d22: 5f pop %edi - 7d23: 5d pop %ebp - 7d24: c3 ret - -00007d25 : -{ - 7d25: f3 0f 1e fb endbr32 - 7d29: 55 push %ebp - 7d2a: 89 e5 mov %esp,%ebp - 7d2c: 56 push %esi - 7d2d: 53 push %ebx - readseg((uint32_t) ELFHDR, SECTSIZE*8, 0); - 7d2e: 52 push %edx - 7d2f: 6a 00 push $0x0 - 7d31: 68 00 10 00 00 push $0x1000 - 7d36: 68 00 00 01 00 push $0x10000 - 7d3b: e8 a2 ff ff ff call 7ce2 - if (ELFHDR->e_magic != ELF_MAGIC) - 7d40: 83 c4 10 add $0x10,%esp - 7d43: 81 3d 00 00 01 00 7f cmpl $0x464c457f,0x10000 - 7d4a: 45 4c 46 - 7d4d: 75 38 jne 7d87 - ph = (struct Proghdr *) ((uint8_t *) ELFHDR + ELFHDR->e_phoff); - 7d4f: a1 1c 00 01 00 mov 0x1001c,%eax - eph = ph + ELFHDR->e_phnum; - 7d54: 0f b7 35 2c 00 01 00 movzwl 0x1002c,%esi - ph = (struct Proghdr *) ((uint8_t *) ELFHDR + ELFHDR->e_phoff); - 7d5b: 8d 98 00 00 01 00 lea 0x10000(%eax),%ebx - eph = ph + ELFHDR->e_phnum; - 7d61: c1 e6 05 shl $0x5,%esi - 7d64: 01 de add %ebx,%esi - for (; ph < eph; ph++) - 7d66: 39 f3 cmp %esi,%ebx - 7d68: 73 17 jae 7d81 - readseg(ph->p_pa, ph->p_memsz, ph->p_offset); - 7d6a: 50 push %eax - for (; ph < eph; ph++) - 7d6b: 83 c3 20 add $0x20,%ebx - readseg(ph->p_pa, ph->p_memsz, ph->p_offset); - 7d6e: ff 73 e4 pushl -0x1c(%ebx) - 7d71: ff 73 f4 pushl -0xc(%ebx) - 7d74: ff 73 ec pushl -0x14(%ebx) - 7d77: e8 66 ff ff ff call 7ce2 - for (; ph < eph; ph++) - 7d7c: 83 c4 10 add $0x10,%esp - 7d7f: eb e5 jmp 7d66 - ((void (*)(void)) (ELFHDR->e_entry))(); - 7d81: ff 15 18 00 01 00 call *0x10018 -} - -static inline void -outw(int port, uint16_t data) -{ - asm volatile("outw %0,%w1" : : "a" (data), "d" (port)); - 7d87: ba 00 8a 00 00 mov $0x8a00,%edx - 7d8c: b8 00 8a ff ff mov $0xffff8a00,%eax - 7d91: 66 ef out %ax,(%dx) - 7d93: b8 00 8e ff ff mov $0xffff8e00,%eax - 7d98: 66 ef out %ax,(%dx) - 7d9a: eb fe jmp 7d9a diff --git a/obj/boot/boot.o b/obj/boot/boot.o deleted file mode 100644 index 6c598b7040c1beeee5e31a3c0c8739e9b3a2d626..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcma)+J4_T&6o&t0QG5^=711cdf&l?>SXQD&5tr;NMuUQ&iHRiZEVDcekIl}IXw+z; zg$3Ed%2*f+3rk81i!JGZ#KKMrLx|eY5kg$gnK}2e#2CHF%=iE2p1JqVeLYR|_5=a} zs1iUBTMp>l;n#F{Xu@9X!Nz8LKKCV;&nDG zP7q&+W|#lRdN9YKxO?cV>fH4#Olj-Nq`*5`0q>rTq@i-}7(t92L7 zYke6Pw2q-u>uz*uZ6c<10tv0J;u`Bmj%!WXR@M%WPi1D@Cw~S~)6;Gnzl=fo_%GPL z%Rsv>xGghCE5&QC)&*EA@SLl8XJ1QxYp<>qn#rrR;~Jh5wI1v*l2`kOeVn|SH}<^a zy#FM!ze#U@7y6#xssteiLjpmR;kK$I@(#Sa&6DXL=)0A?-e)F~@xjEEB5SgZ4@8pv ziDcgmIBD04MvQhPq8PPZJM9c3lbv>lo%AT2%=i>XK}(W#!BakIQK*i(sia9Ugx$md z9gQAh2~FMzd#dMoVTOgRLf$VNH--JeA>o+N6+RQr3SSG~3+IG<=DFQ@;b-Bp@TYKH zSW3B^Um>g(HVHd~F=4Opj?flngpY+Ug)p3lldhE_x>=uNN@dd%hMRui!musZf{}6@ z7#yUz_CByulu85r&!YCJx^Ft@yZc4osypcz#dgyZle$GZ5>2G}4A8K>yNh*$cy(gl zk}oct%jFb3od2&p9*_ElB;L_8OMx;rRCs*l^hD?>9^X1QOnKY~p9aoj&G(GzlO$T{ z0_OW$71bA0-OXG#M26R!`{3K0+oLV(`Qr8_$k-HDMYXq|0>ydj)IeM%5mnxAk)f^5 diff --git a/obj/boot/boot.out b/obj/boot/boot.out deleted file mode 100755 index bcafbd5e3d5f0d79ebc31eb31a4d2d41fcf84030..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6252 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 W;~JS};^23Pt#=6P?l(%1M(^LJ!&mYE diff --git a/obj/kern/console.o b/obj/kern/console.o deleted file mode 100644 index 26c98a30f0c1caadd405f752ac00d324726bde4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14104 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 diff --git a/obj/kern/entry.o b/obj/kern/entry.o deleted file mode 100644 index 228ec896a35616613d8c09f97aadb8fff06a5598..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38044 zcmeIx&r1|x7{KvoT+PzTP5J>zv>1VrtwJU$C4$yLiX^Xr?7CYn*6uPpK@!m(I(8^e z9XoUlJb3U>;34Q==;*;i(7zCF&olGB<7OQ^b^5+A^E}Tx&%E=_XJ=pCzI!JK0`Vh| zjO>=YU6-_nU}-{AMY-1dn;f@a^~_ST5b zwRXN(?`J#x_|8Ad_jn zDASg|Xhel-sSuWOm1_N2^z!eC)pA%JDOaO#Ex+jQ{&&boBH*uPB;(UKW~4Lj@Ou-j zdi6@YkGSLD{apv{@0P62sG|iv1#&K_t&D4Lmee9wENR-wu4iOCNnI^6^GB`w4a-kz z%Y~?1l19B!l_li~BZ*%>IWN^8mnxwYYqdzPEw4tkx>T-Dj4xHHm1uuj*FCF8(39*T z&{w-*wZ8C_#twan(^l(z&c$IDCtRF!alyrhF0Qy3x!82^jf?MH{OIC_i;{1wJ&g)Q zjZv7y6`$#A=cDrTNb;pZRFHhJ(U81N>O00a6pGra3mtM?)IR$)kGOvO24`Guq0{99 z8jtBQB}duJiT``#Syp>^DuHsrja^H>%MO|166gep2JE_U&l2XV{vy gUe?v^>wSGEGOzP~`1MZdM0?){-QTQl(&+ns1BT;!zyJUM diff --git a/obj/kern/entrypgdir.o b/obj/kern/entrypgdir.o deleted file mode 100644 index ee5a872b3161b01392b14505cb631b49bbcb003f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16888 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 diff --git a/obj/kern/init.o b/obj/kern/init.o deleted file mode 100644 index 0320385d3e49d655f24dfa5b499c79f2fe9aea51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5172 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 diff --git a/obj/kern/kernel b/obj/kern/kernel deleted file mode 100755 index c9a8cd9894d0d562104993c1177f2787b4bcd64d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 83156 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 diff --git a/obj/kern/kernel.asm b/obj/kern/kernel.asm deleted file mode 100644 index fc152ad..0000000 --- a/obj/kern/kernel.asm +++ /dev/null @@ -1,3349 +0,0 @@ - -obj/kern/kernel: file format elf32-i386 - - -Disassembly of section .text: - -f0100000 <_start+0xeffffff4>: -.globl _start -_start = RELOC(entry) - -.globl entry -entry: - movw $0x1234,0x472 # warm boot -f0100000: 02 b0 ad 1b 00 00 add 0x1bad(%eax),%dh -f0100006: 00 00 add %al,(%eax) -f0100008: fe 4f 52 decb 0x52(%edi) -f010000b: e4 .byte 0xe4 - -f010000c : -f010000c: 66 c7 05 72 04 00 00 movw $0x1234,0x472 -f0100013: 34 12 - # sufficient until we set up our real page table in mem_init - # in lab 2. - - # Load the physical address of entry_pgdir into cr3. entry_pgdir - # is defined in entrypgdir.c. - movl $(RELOC(entry_pgdir)), %eax -f0100015: b8 00 00 11 00 mov $0x110000,%eax - movl %eax, %cr3 -f010001a: 0f 22 d8 mov %eax,%cr3 - # Turn on paging. - movl %cr0, %eax -f010001d: 0f 20 c0 mov %cr0,%eax - orl $(CR0_PE|CR0_PG|CR0_WP), %eax -f0100020: 0d 01 00 01 80 or $0x80010001,%eax - movl %eax, %cr0 -f0100025: 0f 22 c0 mov %eax,%cr0 - - # Now paging is enabled, but we're still running at a low EIP - # (why is this okay?). Jump up above KERNBASE before entering - # C code. - mov $relocated, %eax -f0100028: b8 2f 00 10 f0 mov $0xf010002f,%eax - jmp *%eax -f010002d: ff e0 jmp *%eax - -f010002f : -relocated: - - # Clear the frame pointer register (EBP) - # so that once we get into debugging C code, - # stack backtraces will be terminated properly. - movl $0x0,%ebp # nuke frame pointer -f010002f: bd 00 00 00 00 mov $0x0,%ebp - - # Set the stack pointer - movl $(bootstacktop),%esp -f0100034: bc 00 00 11 f0 mov $0xf0110000,%esp - - # now to C code - call i386_init -f0100039: e8 5a 00 00 00 call f0100098 - -f010003e : - - # Should never get here, but in case we do, just spin. -spin: jmp spin -f010003e: eb fe jmp f010003e - -f0100040 : -#include - -// Test the stack backtrace function (lab 1 only) -void -test_backtrace(int x) -{ -f0100040: f3 0f 1e fb endbr32 -f0100044: 55 push %ebp -f0100045: 89 e5 mov %esp,%ebp -f0100047: 53 push %ebx -f0100048: 83 ec 0c sub $0xc,%esp -f010004b: 8b 5d 08 mov 0x8(%ebp),%ebx - cprintf("entering test_backtrace %d\n", x); -f010004e: 53 push %ebx -f010004f: 68 a0 18 10 f0 push $0xf01018a0 -f0100054: e8 ce 08 00 00 call f0100927 - if (x > 0) -f0100059: 83 c4 10 add $0x10,%esp -f010005c: 85 db test %ebx,%ebx -f010005e: 7e 25 jle f0100085 - test_backtrace(x-1); -f0100060: 83 ec 0c sub $0xc,%esp -f0100063: 8d 43 ff lea -0x1(%ebx),%eax -f0100066: 50 push %eax -f0100067: e8 d4 ff ff ff call f0100040 -f010006c: 83 c4 10 add $0x10,%esp - else - mon_backtrace(0, 0, 0); - cprintf("leaving test_backtrace %d\n", x); -f010006f: 83 ec 08 sub $0x8,%esp -f0100072: 53 push %ebx -f0100073: 68 bc 18 10 f0 push $0xf01018bc -f0100078: e8 aa 08 00 00 call f0100927 -} -f010007d: 83 c4 10 add $0x10,%esp -f0100080: 8b 5d fc mov -0x4(%ebp),%ebx -f0100083: c9 leave -f0100084: c3 ret - mon_backtrace(0, 0, 0); -f0100085: 83 ec 04 sub $0x4,%esp -f0100088: 6a 00 push $0x0 -f010008a: 6a 00 push $0x0 -f010008c: 6a 00 push $0x0 -f010008e: e8 ff 06 00 00 call f0100792 -f0100093: 83 c4 10 add $0x10,%esp -f0100096: eb d7 jmp f010006f - -f0100098 : - -void -i386_init(void) -{ -f0100098: f3 0f 1e fb endbr32 -f010009c: 55 push %ebp -f010009d: 89 e5 mov %esp,%ebp -f010009f: 83 ec 0c sub $0xc,%esp - extern char edata[], end[]; - - // Before doing anything else, complete the ELF loading process. - // Clear the uninitialized global data (BSS) section of our program. - // This ensures that all static/global variables start out zero. - memset(edata, 0, end - edata); -f01000a2: b8 40 29 11 f0 mov $0xf0112940,%eax -f01000a7: 2d 00 23 11 f0 sub $0xf0112300,%eax -f01000ac: 50 push %eax -f01000ad: 6a 00 push $0x0 -f01000af: 68 00 23 11 f0 push $0xf0112300 -f01000b4: e8 62 13 00 00 call f010141b - - // Initialize the console. - // Can't call cprintf until after we do this! - cons_init(); -f01000b9: e8 af 04 00 00 call f010056d - - cprintf("6828 decimal is %o octal!\n", 6828); -f01000be: 83 c4 08 add $0x8,%esp -f01000c1: 68 ac 1a 00 00 push $0x1aac -f01000c6: 68 d7 18 10 f0 push $0xf01018d7 -f01000cb: e8 57 08 00 00 call f0100927 - - // Test the stack backtrace function (lab 1 only) - test_backtrace(5); -f01000d0: c7 04 24 05 00 00 00 movl $0x5,(%esp) -f01000d7: e8 64 ff ff ff call f0100040 -f01000dc: 83 c4 10 add $0x10,%esp - - // Drop into the kernel monitor. - while (1) - monitor(NULL); -f01000df: 83 ec 0c sub $0xc,%esp -f01000e2: 6a 00 push $0x0 -f01000e4: e8 b3 06 00 00 call f010079c -f01000e9: 83 c4 10 add $0x10,%esp -f01000ec: eb f1 jmp f01000df - -f01000ee <_panic>: - * Panic is called on unresolvable fatal errors. - * It prints "panic: mesg", and then enters the kernel monitor. - */ -void -_panic(const char *file, int line, const char *fmt,...) -{ -f01000ee: f3 0f 1e fb endbr32 -f01000f2: 55 push %ebp -f01000f3: 89 e5 mov %esp,%ebp -f01000f5: 56 push %esi -f01000f6: 53 push %ebx -f01000f7: 8b 75 10 mov 0x10(%ebp),%esi - va_list ap; - - if (panicstr) -f01000fa: 83 3d 44 29 11 f0 00 cmpl $0x0,0xf0112944 -f0100101: 74 0f je f0100112 <_panic+0x24> - va_end(ap); - -dead: - /* break into the kernel monitor */ - while (1) - monitor(NULL); -f0100103: 83 ec 0c sub $0xc,%esp -f0100106: 6a 00 push $0x0 -f0100108: e8 8f 06 00 00 call f010079c -f010010d: 83 c4 10 add $0x10,%esp -f0100110: eb f1 jmp f0100103 <_panic+0x15> - panicstr = fmt; -f0100112: 89 35 44 29 11 f0 mov %esi,0xf0112944 - asm volatile("cli; cld"); -f0100118: fa cli -f0100119: fc cld - va_start(ap, fmt); -f010011a: 8d 5d 14 lea 0x14(%ebp),%ebx - cprintf("kernel panic at %s:%d: ", file, line); -f010011d: 83 ec 04 sub $0x4,%esp -f0100120: ff 75 0c pushl 0xc(%ebp) -f0100123: ff 75 08 pushl 0x8(%ebp) -f0100126: 68 f2 18 10 f0 push $0xf01018f2 -f010012b: e8 f7 07 00 00 call f0100927 - vcprintf(fmt, ap); -f0100130: 83 c4 08 add $0x8,%esp -f0100133: 53 push %ebx -f0100134: 56 push %esi -f0100135: e8 c3 07 00 00 call f01008fd - cprintf("\n"); -f010013a: c7 04 24 2e 19 10 f0 movl $0xf010192e,(%esp) -f0100141: e8 e1 07 00 00 call f0100927 -f0100146: 83 c4 10 add $0x10,%esp -f0100149: eb b8 jmp f0100103 <_panic+0x15> - -f010014b <_warn>: -} - -/* like panic, but don't */ -void -_warn(const char *file, int line, const char *fmt,...) -{ -f010014b: f3 0f 1e fb endbr32 -f010014f: 55 push %ebp -f0100150: 89 e5 mov %esp,%ebp -f0100152: 53 push %ebx -f0100153: 83 ec 08 sub $0x8,%esp - va_list ap; - - va_start(ap, fmt); -f0100156: 8d 5d 14 lea 0x14(%ebp),%ebx - cprintf("kernel warning at %s:%d: ", file, line); -f0100159: ff 75 0c pushl 0xc(%ebp) -f010015c: ff 75 08 pushl 0x8(%ebp) -f010015f: 68 0a 19 10 f0 push $0xf010190a -f0100164: e8 be 07 00 00 call f0100927 - vcprintf(fmt, ap); -f0100169: 83 c4 08 add $0x8,%esp -f010016c: 53 push %ebx -f010016d: ff 75 10 pushl 0x10(%ebp) -f0100170: e8 88 07 00 00 call f01008fd - cprintf("\n"); -f0100175: c7 04 24 2e 19 10 f0 movl $0xf010192e,(%esp) -f010017c: e8 a6 07 00 00 call f0100927 - va_end(ap); -} -f0100181: 83 c4 10 add $0x10,%esp -f0100184: 8b 5d fc mov -0x4(%ebp),%ebx -f0100187: c9 leave -f0100188: c3 ret - -f0100189 : - -static bool serial_exists; - -static int -serial_proc_data(void) -{ -f0100189: f3 0f 1e fb endbr32 - -static inline uint8_t -inb(int port) -{ - uint8_t data; - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f010018d: ba fd 03 00 00 mov $0x3fd,%edx -f0100192: ec in (%dx),%al - if (!(inb(COM1+COM_LSR) & COM_LSR_DATA)) -f0100193: a8 01 test $0x1,%al -f0100195: 74 0a je f01001a1 -f0100197: ba f8 03 00 00 mov $0x3f8,%edx -f010019c: ec in (%dx),%al - return -1; - return inb(COM1+COM_RX); -f010019d: 0f b6 c0 movzbl %al,%eax -f01001a0: c3 ret - return -1; -f01001a1: b8 ff ff ff ff mov $0xffffffff,%eax -} -f01001a6: c3 ret - -f01001a7 : - -// called by device interrupt routines to feed input characters -// into the circular console input buffer. -static void -cons_intr(int (*proc)(void)) -{ -f01001a7: 55 push %ebp -f01001a8: 89 e5 mov %esp,%ebp -f01001aa: 53 push %ebx -f01001ab: 83 ec 04 sub $0x4,%esp -f01001ae: 89 c3 mov %eax,%ebx - int c; - - while ((c = (*proc)()) != -1) { -f01001b0: ff d3 call *%ebx -f01001b2: 83 f8 ff cmp $0xffffffff,%eax -f01001b5: 74 29 je f01001e0 - if (c == 0) -f01001b7: 85 c0 test %eax,%eax -f01001b9: 74 f5 je f01001b0 - continue; - cons.buf[cons.wpos++] = c; -f01001bb: 8b 0d 24 25 11 f0 mov 0xf0112524,%ecx -f01001c1: 8d 51 01 lea 0x1(%ecx),%edx -f01001c4: 88 81 20 23 11 f0 mov %al,-0xfeedce0(%ecx) - if (cons.wpos == CONSBUFSIZE) -f01001ca: 81 fa 00 02 00 00 cmp $0x200,%edx - cons.wpos = 0; -f01001d0: b8 00 00 00 00 mov $0x0,%eax -f01001d5: 0f 44 d0 cmove %eax,%edx -f01001d8: 89 15 24 25 11 f0 mov %edx,0xf0112524 -f01001de: eb d0 jmp f01001b0 - } -} -f01001e0: 83 c4 04 add $0x4,%esp -f01001e3: 5b pop %ebx -f01001e4: 5d pop %ebp -f01001e5: c3 ret - -f01001e6 : -{ -f01001e6: f3 0f 1e fb endbr32 -f01001ea: 55 push %ebp -f01001eb: 89 e5 mov %esp,%ebp -f01001ed: 53 push %ebx -f01001ee: 83 ec 04 sub $0x4,%esp -f01001f1: ba 64 00 00 00 mov $0x64,%edx -f01001f6: ec in (%dx),%al - if ((stat & KBS_DIB) == 0) -f01001f7: a8 01 test $0x1,%al -f01001f9: 0f 84 f2 00 00 00 je f01002f1 - if (stat & KBS_TERR) -f01001ff: a8 20 test $0x20,%al -f0100201: 0f 85 f1 00 00 00 jne f01002f8 -f0100207: ba 60 00 00 00 mov $0x60,%edx -f010020c: ec in (%dx),%al -f010020d: 89 c2 mov %eax,%edx - if (data == 0xE0) { -f010020f: 3c e0 cmp $0xe0,%al -f0100211: 74 61 je f0100274 - } else if (data & 0x80) { -f0100213: 84 c0 test %al,%al -f0100215: 78 70 js f0100287 - } else if (shift & E0ESC) { -f0100217: 8b 0d 00 23 11 f0 mov 0xf0112300,%ecx -f010021d: f6 c1 40 test $0x40,%cl -f0100220: 74 0e je f0100230 - data |= 0x80; -f0100222: 83 c8 80 or $0xffffff80,%eax -f0100225: 89 c2 mov %eax,%edx - shift &= ~E0ESC; -f0100227: 83 e1 bf and $0xffffffbf,%ecx -f010022a: 89 0d 00 23 11 f0 mov %ecx,0xf0112300 - shift |= shiftcode[data]; -f0100230: 0f b6 d2 movzbl %dl,%edx -f0100233: 0f b6 82 80 1a 10 f0 movzbl -0xfefe580(%edx),%eax -f010023a: 0b 05 00 23 11 f0 or 0xf0112300,%eax - shift ^= togglecode[data]; -f0100240: 0f b6 8a 80 19 10 f0 movzbl -0xfefe680(%edx),%ecx -f0100247: 31 c8 xor %ecx,%eax -f0100249: a3 00 23 11 f0 mov %eax,0xf0112300 - c = charcode[shift & (CTL | SHIFT)][data]; -f010024e: 89 c1 mov %eax,%ecx -f0100250: 83 e1 03 and $0x3,%ecx -f0100253: 8b 0c 8d 60 19 10 f0 mov -0xfefe6a0(,%ecx,4),%ecx -f010025a: 0f b6 14 11 movzbl (%ecx,%edx,1),%edx -f010025e: 0f b6 da movzbl %dl,%ebx - if (shift & CAPSLOCK) { -f0100261: a8 08 test $0x8,%al -f0100263: 74 61 je f01002c6 - if ('a' <= c && c <= 'z') -f0100265: 89 da mov %ebx,%edx -f0100267: 8d 4b 9f lea -0x61(%ebx),%ecx -f010026a: 83 f9 19 cmp $0x19,%ecx -f010026d: 77 4b ja f01002ba - c += 'A' - 'a'; -f010026f: 83 eb 20 sub $0x20,%ebx -f0100272: eb 0c jmp f0100280 - shift |= E0ESC; -f0100274: 83 0d 00 23 11 f0 40 orl $0x40,0xf0112300 - return 0; -f010027b: bb 00 00 00 00 mov $0x0,%ebx -} -f0100280: 89 d8 mov %ebx,%eax -f0100282: 8b 5d fc mov -0x4(%ebp),%ebx -f0100285: c9 leave -f0100286: c3 ret - data = (shift & E0ESC ? data : data & 0x7F); -f0100287: 8b 0d 00 23 11 f0 mov 0xf0112300,%ecx -f010028d: 89 cb mov %ecx,%ebx -f010028f: 83 e3 40 and $0x40,%ebx -f0100292: 83 e0 7f and $0x7f,%eax -f0100295: 85 db test %ebx,%ebx -f0100297: 0f 44 d0 cmove %eax,%edx - shift &= ~(shiftcode[data] | E0ESC); -f010029a: 0f b6 d2 movzbl %dl,%edx -f010029d: 0f b6 82 80 1a 10 f0 movzbl -0xfefe580(%edx),%eax -f01002a4: 83 c8 40 or $0x40,%eax -f01002a7: 0f b6 c0 movzbl %al,%eax -f01002aa: f7 d0 not %eax -f01002ac: 21 c8 and %ecx,%eax -f01002ae: a3 00 23 11 f0 mov %eax,0xf0112300 - return 0; -f01002b3: bb 00 00 00 00 mov $0x0,%ebx -f01002b8: eb c6 jmp f0100280 - else if ('A' <= c && c <= 'Z') -f01002ba: 83 ea 41 sub $0x41,%edx - c += 'a' - 'A'; -f01002bd: 8d 4b 20 lea 0x20(%ebx),%ecx -f01002c0: 83 fa 1a cmp $0x1a,%edx -f01002c3: 0f 42 d9 cmovb %ecx,%ebx - if (!(~shift & (CTL | ALT)) && c == KEY_DEL) { -f01002c6: f7 d0 not %eax -f01002c8: a8 06 test $0x6,%al -f01002ca: 75 b4 jne f0100280 -f01002cc: 81 fb e9 00 00 00 cmp $0xe9,%ebx -f01002d2: 75 ac jne f0100280 - cprintf("Rebooting!\n"); -f01002d4: 83 ec 0c sub $0xc,%esp -f01002d7: 68 24 19 10 f0 push $0xf0101924 -f01002dc: e8 46 06 00 00 call f0100927 -} - -static inline void -outb(int port, uint8_t data) -{ - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f01002e1: b8 03 00 00 00 mov $0x3,%eax -f01002e6: ba 92 00 00 00 mov $0x92,%edx -f01002eb: ee out %al,(%dx) -} -f01002ec: 83 c4 10 add $0x10,%esp -f01002ef: eb 8f jmp f0100280 - return -1; -f01002f1: bb ff ff ff ff mov $0xffffffff,%ebx -f01002f6: eb 88 jmp f0100280 - return -1; -f01002f8: bb ff ff ff ff mov $0xffffffff,%ebx -f01002fd: eb 81 jmp f0100280 - -f01002ff : -} - -// output a character to the console -static void -cons_putc(int c) -{ -f01002ff: 55 push %ebp -f0100300: 89 e5 mov %esp,%ebp -f0100302: 57 push %edi -f0100303: 56 push %esi -f0100304: 53 push %ebx -f0100305: 83 ec 1c sub $0x1c,%esp -f0100308: 89 c1 mov %eax,%ecx - for (i = 0; -f010030a: be 00 00 00 00 mov $0x0,%esi - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f010030f: bf fd 03 00 00 mov $0x3fd,%edi -f0100314: bb 84 00 00 00 mov $0x84,%ebx -f0100319: 89 fa mov %edi,%edx -f010031b: ec in (%dx),%al - !(inb(COM1 + COM_LSR) & COM_LSR_TXRDY) && i < 12800; -f010031c: a8 20 test $0x20,%al -f010031e: 75 13 jne f0100333 -f0100320: 81 fe ff 31 00 00 cmp $0x31ff,%esi -f0100326: 7f 0b jg f0100333 -f0100328: 89 da mov %ebx,%edx -f010032a: ec in (%dx),%al -f010032b: ec in (%dx),%al -f010032c: ec in (%dx),%al -f010032d: ec in (%dx),%al - i++) -f010032e: 83 c6 01 add $0x1,%esi -f0100331: eb e6 jmp f0100319 - outb(COM1 + COM_TX, c); -f0100333: 88 4d e7 mov %cl,-0x19(%ebp) - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f0100336: ba f8 03 00 00 mov $0x3f8,%edx -f010033b: 89 c8 mov %ecx,%eax -f010033d: ee out %al,(%dx) - for (i = 0; !(inb(0x378+1) & 0x80) && i < 12800; i++) -f010033e: be 00 00 00 00 mov $0x0,%esi - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f0100343: bf 79 03 00 00 mov $0x379,%edi -f0100348: bb 84 00 00 00 mov $0x84,%ebx -f010034d: 89 fa mov %edi,%edx -f010034f: ec in (%dx),%al -f0100350: 81 fe ff 31 00 00 cmp $0x31ff,%esi -f0100356: 7f 0f jg f0100367 -f0100358: 84 c0 test %al,%al -f010035a: 78 0b js f0100367 -f010035c: 89 da mov %ebx,%edx -f010035e: ec in (%dx),%al -f010035f: ec in (%dx),%al -f0100360: ec in (%dx),%al -f0100361: ec in (%dx),%al -f0100362: 83 c6 01 add $0x1,%esi -f0100365: eb e6 jmp f010034d - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f0100367: ba 78 03 00 00 mov $0x378,%edx -f010036c: 0f b6 45 e7 movzbl -0x19(%ebp),%eax -f0100370: ee out %al,(%dx) -f0100371: ba 7a 03 00 00 mov $0x37a,%edx -f0100376: b8 0d 00 00 00 mov $0xd,%eax -f010037b: ee out %al,(%dx) -f010037c: b8 08 00 00 00 mov $0x8,%eax -f0100381: ee out %al,(%dx) - c |= 0x0700; -f0100382: 89 c8 mov %ecx,%eax -f0100384: 80 cc 07 or $0x7,%ah -f0100387: f7 c1 00 ff ff ff test $0xffffff00,%ecx -f010038d: 0f 44 c8 cmove %eax,%ecx - switch (c & 0xff) { -f0100390: 0f b6 c1 movzbl %cl,%eax -f0100393: 80 f9 0a cmp $0xa,%cl -f0100396: 0f 84 dd 00 00 00 je f0100479 -f010039c: 83 f8 0a cmp $0xa,%eax -f010039f: 7f 46 jg f01003e7 -f01003a1: 83 f8 08 cmp $0x8,%eax -f01003a4: 0f 84 a7 00 00 00 je f0100451 -f01003aa: 83 f8 09 cmp $0x9,%eax -f01003ad: 0f 85 d3 00 00 00 jne f0100486 - cons_putc(' '); -f01003b3: b8 20 00 00 00 mov $0x20,%eax -f01003b8: e8 42 ff ff ff call f01002ff - cons_putc(' '); -f01003bd: b8 20 00 00 00 mov $0x20,%eax -f01003c2: e8 38 ff ff ff call f01002ff - cons_putc(' '); -f01003c7: b8 20 00 00 00 mov $0x20,%eax -f01003cc: e8 2e ff ff ff call f01002ff - cons_putc(' '); -f01003d1: b8 20 00 00 00 mov $0x20,%eax -f01003d6: e8 24 ff ff ff call f01002ff - cons_putc(' '); -f01003db: b8 20 00 00 00 mov $0x20,%eax -f01003e0: e8 1a ff ff ff call f01002ff - break; -f01003e5: eb 25 jmp f010040c - switch (c & 0xff) { -f01003e7: 83 f8 0d cmp $0xd,%eax -f01003ea: 0f 85 96 00 00 00 jne f0100486 - crt_pos -= (crt_pos % CRT_COLS); -f01003f0: 0f b7 05 28 25 11 f0 movzwl 0xf0112528,%eax -f01003f7: 69 c0 cd cc 00 00 imul $0xcccd,%eax,%eax -f01003fd: c1 e8 16 shr $0x16,%eax -f0100400: 8d 04 80 lea (%eax,%eax,4),%eax -f0100403: c1 e0 04 shl $0x4,%eax -f0100406: 66 a3 28 25 11 f0 mov %ax,0xf0112528 - if (crt_pos >= CRT_SIZE) { -f010040c: 66 81 3d 28 25 11 f0 cmpw $0x7cf,0xf0112528 -f0100413: cf 07 -f0100415: 0f 87 8e 00 00 00 ja f01004a9 - outb(addr_6845, 14); -f010041b: 8b 0d 30 25 11 f0 mov 0xf0112530,%ecx -f0100421: b8 0e 00 00 00 mov $0xe,%eax -f0100426: 89 ca mov %ecx,%edx -f0100428: ee out %al,(%dx) - outb(addr_6845 + 1, crt_pos >> 8); -f0100429: 0f b7 1d 28 25 11 f0 movzwl 0xf0112528,%ebx -f0100430: 8d 71 01 lea 0x1(%ecx),%esi -f0100433: 89 d8 mov %ebx,%eax -f0100435: 66 c1 e8 08 shr $0x8,%ax -f0100439: 89 f2 mov %esi,%edx -f010043b: ee out %al,(%dx) -f010043c: b8 0f 00 00 00 mov $0xf,%eax -f0100441: 89 ca mov %ecx,%edx -f0100443: ee out %al,(%dx) -f0100444: 89 d8 mov %ebx,%eax -f0100446: 89 f2 mov %esi,%edx -f0100448: ee out %al,(%dx) - serial_putc(c); - lpt_putc(c); - cga_putc(c); -} -f0100449: 8d 65 f4 lea -0xc(%ebp),%esp -f010044c: 5b pop %ebx -f010044d: 5e pop %esi -f010044e: 5f pop %edi -f010044f: 5d pop %ebp -f0100450: c3 ret - if (crt_pos > 0) { -f0100451: 0f b7 05 28 25 11 f0 movzwl 0xf0112528,%eax -f0100458: 66 85 c0 test %ax,%ax -f010045b: 74 be je f010041b - crt_pos--; -f010045d: 83 e8 01 sub $0x1,%eax -f0100460: 66 a3 28 25 11 f0 mov %ax,0xf0112528 - crt_buf[crt_pos] = (c & ~0xff) | ' '; -f0100466: 0f b7 d0 movzwl %ax,%edx -f0100469: b1 00 mov $0x0,%cl -f010046b: 83 c9 20 or $0x20,%ecx -f010046e: a1 2c 25 11 f0 mov 0xf011252c,%eax -f0100473: 66 89 0c 50 mov %cx,(%eax,%edx,2) -f0100477: eb 93 jmp f010040c - crt_pos += CRT_COLS; -f0100479: 66 83 05 28 25 11 f0 addw $0x50,0xf0112528 -f0100480: 50 -f0100481: e9 6a ff ff ff jmp f01003f0 - crt_buf[crt_pos++] = c; /* write the character */ -f0100486: 0f b7 05 28 25 11 f0 movzwl 0xf0112528,%eax -f010048d: 8d 50 01 lea 0x1(%eax),%edx -f0100490: 66 89 15 28 25 11 f0 mov %dx,0xf0112528 -f0100497: 0f b7 c0 movzwl %ax,%eax -f010049a: 8b 15 2c 25 11 f0 mov 0xf011252c,%edx -f01004a0: 66 89 0c 42 mov %cx,(%edx,%eax,2) - break; -f01004a4: e9 63 ff ff ff jmp f010040c - memmove(crt_buf, crt_buf + CRT_COLS, (CRT_SIZE - CRT_COLS) * sizeof(uint16_t)); -f01004a9: a1 2c 25 11 f0 mov 0xf011252c,%eax -f01004ae: 83 ec 04 sub $0x4,%esp -f01004b1: 68 00 0f 00 00 push $0xf00 -f01004b6: 8d 90 a0 00 00 00 lea 0xa0(%eax),%edx -f01004bc: 52 push %edx -f01004bd: 50 push %eax -f01004be: e8 a4 0f 00 00 call f0101467 - crt_buf[i] = 0x0700 | ' '; -f01004c3: 8b 15 2c 25 11 f0 mov 0xf011252c,%edx -f01004c9: 8d 82 00 0f 00 00 lea 0xf00(%edx),%eax -f01004cf: 81 c2 a0 0f 00 00 add $0xfa0,%edx -f01004d5: 83 c4 10 add $0x10,%esp -f01004d8: 66 c7 00 20 07 movw $0x720,(%eax) -f01004dd: 83 c0 02 add $0x2,%eax - for (i = CRT_SIZE - CRT_COLS; i < CRT_SIZE; i++) -f01004e0: 39 d0 cmp %edx,%eax -f01004e2: 75 f4 jne f01004d8 - crt_pos -= CRT_COLS; -f01004e4: 66 83 2d 28 25 11 f0 subw $0x50,0xf0112528 -f01004eb: 50 -f01004ec: e9 2a ff ff ff jmp f010041b - -f01004f1 : -{ -f01004f1: f3 0f 1e fb endbr32 - if (serial_exists) -f01004f5: 80 3d 34 25 11 f0 00 cmpb $0x0,0xf0112534 -f01004fc: 75 01 jne f01004ff -f01004fe: c3 ret -{ -f01004ff: 55 push %ebp -f0100500: 89 e5 mov %esp,%ebp -f0100502: 83 ec 08 sub $0x8,%esp - cons_intr(serial_proc_data); -f0100505: b8 89 01 10 f0 mov $0xf0100189,%eax -f010050a: e8 98 fc ff ff call f01001a7 -} -f010050f: c9 leave -f0100510: c3 ret - -f0100511 : -{ -f0100511: f3 0f 1e fb endbr32 -f0100515: 55 push %ebp -f0100516: 89 e5 mov %esp,%ebp -f0100518: 83 ec 08 sub $0x8,%esp - cons_intr(kbd_proc_data); -f010051b: b8 e6 01 10 f0 mov $0xf01001e6,%eax -f0100520: e8 82 fc ff ff call f01001a7 -} -f0100525: c9 leave -f0100526: c3 ret - -f0100527 : -{ -f0100527: f3 0f 1e fb endbr32 -f010052b: 55 push %ebp -f010052c: 89 e5 mov %esp,%ebp -f010052e: 83 ec 08 sub $0x8,%esp - serial_intr(); -f0100531: e8 bb ff ff ff call f01004f1 - kbd_intr(); -f0100536: e8 d6 ff ff ff call f0100511 - if (cons.rpos != cons.wpos) { -f010053b: a1 20 25 11 f0 mov 0xf0112520,%eax - return 0; -f0100540: ba 00 00 00 00 mov $0x0,%edx - if (cons.rpos != cons.wpos) { -f0100545: 3b 05 24 25 11 f0 cmp 0xf0112524,%eax -f010054b: 74 1c je f0100569 - c = cons.buf[cons.rpos++]; -f010054d: 8d 48 01 lea 0x1(%eax),%ecx -f0100550: 0f b6 90 20 23 11 f0 movzbl -0xfeedce0(%eax),%edx - cons.rpos = 0; -f0100557: 3d ff 01 00 00 cmp $0x1ff,%eax -f010055c: b8 00 00 00 00 mov $0x0,%eax -f0100561: 0f 45 c1 cmovne %ecx,%eax -f0100564: a3 20 25 11 f0 mov %eax,0xf0112520 -} -f0100569: 89 d0 mov %edx,%eax -f010056b: c9 leave -f010056c: c3 ret - -f010056d : - -// initialize the console devices -void -cons_init(void) -{ -f010056d: f3 0f 1e fb endbr32 -f0100571: 55 push %ebp -f0100572: 89 e5 mov %esp,%ebp -f0100574: 57 push %edi -f0100575: 56 push %esi -f0100576: 53 push %ebx -f0100577: 83 ec 0c sub $0xc,%esp - was = *cp; -f010057a: 0f b7 15 00 80 0b f0 movzwl 0xf00b8000,%edx - *cp = (uint16_t) 0xA55A; -f0100581: 66 c7 05 00 80 0b f0 movw $0xa55a,0xf00b8000 -f0100588: 5a a5 - if (*cp != 0xA55A) { -f010058a: 0f b7 05 00 80 0b f0 movzwl 0xf00b8000,%eax -f0100591: 66 3d 5a a5 cmp $0xa55a,%ax -f0100595: 0f 84 b7 00 00 00 je f0100652 - addr_6845 = MONO_BASE; -f010059b: c7 05 30 25 11 f0 b4 movl $0x3b4,0xf0112530 -f01005a2: 03 00 00 - cp = (uint16_t*) (KERNBASE + MONO_BUF); -f01005a5: be 00 00 0b f0 mov $0xf00b0000,%esi - outb(addr_6845, 14); -f01005aa: 8b 3d 30 25 11 f0 mov 0xf0112530,%edi -f01005b0: b8 0e 00 00 00 mov $0xe,%eax -f01005b5: 89 fa mov %edi,%edx -f01005b7: ee out %al,(%dx) - pos = inb(addr_6845 + 1) << 8; -f01005b8: 8d 4f 01 lea 0x1(%edi),%ecx - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f01005bb: 89 ca mov %ecx,%edx -f01005bd: ec in (%dx),%al -f01005be: 0f b6 c0 movzbl %al,%eax -f01005c1: c1 e0 08 shl $0x8,%eax -f01005c4: 89 c3 mov %eax,%ebx - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f01005c6: b8 0f 00 00 00 mov $0xf,%eax -f01005cb: 89 fa mov %edi,%edx -f01005cd: ee out %al,(%dx) - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f01005ce: 89 ca mov %ecx,%edx -f01005d0: ec in (%dx),%al - crt_buf = (uint16_t*) cp; -f01005d1: 89 35 2c 25 11 f0 mov %esi,0xf011252c - pos |= inb(addr_6845 + 1); -f01005d7: 0f b6 c0 movzbl %al,%eax -f01005da: 09 d8 or %ebx,%eax - crt_pos = pos; -f01005dc: 66 a3 28 25 11 f0 mov %ax,0xf0112528 - asm volatile("outb %0,%w1" : : "a" (data), "d" (port)); -f01005e2: bb 00 00 00 00 mov $0x0,%ebx -f01005e7: b9 fa 03 00 00 mov $0x3fa,%ecx -f01005ec: 89 d8 mov %ebx,%eax -f01005ee: 89 ca mov %ecx,%edx -f01005f0: ee out %al,(%dx) -f01005f1: bf fb 03 00 00 mov $0x3fb,%edi -f01005f6: b8 80 ff ff ff mov $0xffffff80,%eax -f01005fb: 89 fa mov %edi,%edx -f01005fd: ee out %al,(%dx) -f01005fe: b8 0c 00 00 00 mov $0xc,%eax -f0100603: ba f8 03 00 00 mov $0x3f8,%edx -f0100608: ee out %al,(%dx) -f0100609: be f9 03 00 00 mov $0x3f9,%esi -f010060e: 89 d8 mov %ebx,%eax -f0100610: 89 f2 mov %esi,%edx -f0100612: ee out %al,(%dx) -f0100613: b8 03 00 00 00 mov $0x3,%eax -f0100618: 89 fa mov %edi,%edx -f010061a: ee out %al,(%dx) -f010061b: ba fc 03 00 00 mov $0x3fc,%edx -f0100620: 89 d8 mov %ebx,%eax -f0100622: ee out %al,(%dx) -f0100623: b8 01 00 00 00 mov $0x1,%eax -f0100628: 89 f2 mov %esi,%edx -f010062a: ee out %al,(%dx) - asm volatile("inb %w1,%0" : "=a" (data) : "d" (port)); -f010062b: ba fd 03 00 00 mov $0x3fd,%edx -f0100630: ec in (%dx),%al -f0100631: 89 c3 mov %eax,%ebx - serial_exists = (inb(COM1+COM_LSR) != 0xFF); -f0100633: 3c ff cmp $0xff,%al -f0100635: 0f 95 05 34 25 11 f0 setne 0xf0112534 -f010063c: 89 ca mov %ecx,%edx -f010063e: ec in (%dx),%al -f010063f: ba f8 03 00 00 mov $0x3f8,%edx -f0100644: ec in (%dx),%al - cga_init(); - kbd_init(); - serial_init(); - - if (!serial_exists) -f0100645: 80 fb ff cmp $0xff,%bl -f0100648: 74 23 je f010066d - cprintf("Serial port does not exist!\n"); -} -f010064a: 8d 65 f4 lea -0xc(%ebp),%esp -f010064d: 5b pop %ebx -f010064e: 5e pop %esi -f010064f: 5f pop %edi -f0100650: 5d pop %ebp -f0100651: c3 ret - *cp = was; -f0100652: 66 89 15 00 80 0b f0 mov %dx,0xf00b8000 - addr_6845 = CGA_BASE; -f0100659: c7 05 30 25 11 f0 d4 movl $0x3d4,0xf0112530 -f0100660: 03 00 00 - cp = (uint16_t*) (KERNBASE + CGA_BUF); -f0100663: be 00 80 0b f0 mov $0xf00b8000,%esi -f0100668: e9 3d ff ff ff jmp f01005aa - cprintf("Serial port does not exist!\n"); -f010066d: 83 ec 0c sub $0xc,%esp -f0100670: 68 30 19 10 f0 push $0xf0101930 -f0100675: e8 ad 02 00 00 call f0100927 -f010067a: 83 c4 10 add $0x10,%esp -} -f010067d: eb cb jmp f010064a - -f010067f : - -// `High'-level console I/O. Used by readline and cprintf. - -void -cputchar(int c) -{ -f010067f: f3 0f 1e fb endbr32 -f0100683: 55 push %ebp -f0100684: 89 e5 mov %esp,%ebp -f0100686: 83 ec 08 sub $0x8,%esp - cons_putc(c); -f0100689: 8b 45 08 mov 0x8(%ebp),%eax -f010068c: e8 6e fc ff ff call f01002ff -} -f0100691: c9 leave -f0100692: c3 ret - -f0100693 : - -int -getchar(void) -{ -f0100693: f3 0f 1e fb endbr32 -f0100697: 55 push %ebp -f0100698: 89 e5 mov %esp,%ebp -f010069a: 83 ec 08 sub $0x8,%esp - int c; - - while ((c = cons_getc()) == 0) -f010069d: e8 85 fe ff ff call f0100527 -f01006a2: 85 c0 test %eax,%eax -f01006a4: 74 f7 je f010069d - /* do nothing */; - return c; -} -f01006a6: c9 leave -f01006a7: c3 ret - -f01006a8 : - -int -iscons(int fdnum) -{ -f01006a8: f3 0f 1e fb endbr32 - // used by readline - return 1; -} -f01006ac: b8 01 00 00 00 mov $0x1,%eax -f01006b1: c3 ret - -f01006b2 : - -/***** Implementations of basic kernel monitor commands *****/ - -int -mon_help(int argc, char **argv, struct Trapframe *tf) -{ -f01006b2: f3 0f 1e fb endbr32 -f01006b6: 55 push %ebp -f01006b7: 89 e5 mov %esp,%ebp -f01006b9: 83 ec 0c sub $0xc,%esp - int i; - - for (i = 0; i < ARRAY_SIZE(commands); i++) - cprintf("%s - %s\n", commands[i].name, commands[i].desc); -f01006bc: 68 80 1b 10 f0 push $0xf0101b80 -f01006c1: 68 9e 1b 10 f0 push $0xf0101b9e -f01006c6: 68 a3 1b 10 f0 push $0xf0101ba3 -f01006cb: e8 57 02 00 00 call f0100927 -f01006d0: 83 c4 0c add $0xc,%esp -f01006d3: 68 0c 1c 10 f0 push $0xf0101c0c -f01006d8: 68 ac 1b 10 f0 push $0xf0101bac -f01006dd: 68 a3 1b 10 f0 push $0xf0101ba3 -f01006e2: e8 40 02 00 00 call f0100927 - return 0; -} -f01006e7: b8 00 00 00 00 mov $0x0,%eax -f01006ec: c9 leave -f01006ed: c3 ret - -f01006ee : - -int -mon_kerninfo(int argc, char **argv, struct Trapframe *tf) -{ -f01006ee: f3 0f 1e fb endbr32 -f01006f2: 55 push %ebp -f01006f3: 89 e5 mov %esp,%ebp -f01006f5: 83 ec 14 sub $0x14,%esp - extern char _start[], entry[], etext[], edata[], end[]; - - cprintf("Special kernel symbols:\n"); -f01006f8: 68 b5 1b 10 f0 push $0xf0101bb5 -f01006fd: e8 25 02 00 00 call f0100927 - cprintf(" _start %08x (phys)\n", _start); -f0100702: 83 c4 08 add $0x8,%esp -f0100705: 68 0c 00 10 00 push $0x10000c -f010070a: 68 34 1c 10 f0 push $0xf0101c34 -f010070f: e8 13 02 00 00 call f0100927 - cprintf(" entry %08x (virt) %08x (phys)\n", entry, entry - KERNBASE); -f0100714: 83 c4 0c add $0xc,%esp -f0100717: 68 0c 00 10 00 push $0x10000c -f010071c: 68 0c 00 10 f0 push $0xf010000c -f0100721: 68 5c 1c 10 f0 push $0xf0101c5c -f0100726: e8 fc 01 00 00 call f0100927 - cprintf(" etext %08x (virt) %08x (phys)\n", etext, etext - KERNBASE); -f010072b: 83 c4 0c add $0xc,%esp -f010072e: 68 8d 18 10 00 push $0x10188d -f0100733: 68 8d 18 10 f0 push $0xf010188d -f0100738: 68 80 1c 10 f0 push $0xf0101c80 -f010073d: e8 e5 01 00 00 call f0100927 - cprintf(" edata %08x (virt) %08x (phys)\n", edata, edata - KERNBASE); -f0100742: 83 c4 0c add $0xc,%esp -f0100745: 68 00 23 11 00 push $0x112300 -f010074a: 68 00 23 11 f0 push $0xf0112300 -f010074f: 68 a4 1c 10 f0 push $0xf0101ca4 -f0100754: e8 ce 01 00 00 call f0100927 - cprintf(" end %08x (virt) %08x (phys)\n", end, end - KERNBASE); -f0100759: 83 c4 0c add $0xc,%esp -f010075c: 68 40 29 11 00 push $0x112940 -f0100761: 68 40 29 11 f0 push $0xf0112940 -f0100766: 68 c8 1c 10 f0 push $0xf0101cc8 -f010076b: e8 b7 01 00 00 call f0100927 - cprintf("Kernel executable memory footprint: %dKB\n", -f0100770: 83 c4 08 add $0x8,%esp - ROUNDUP(end - entry, 1024) / 1024); -f0100773: b8 40 29 11 f0 mov $0xf0112940,%eax -f0100778: 2d 0d fc 0f f0 sub $0xf00ffc0d,%eax - cprintf("Kernel executable memory footprint: %dKB\n", -f010077d: c1 f8 0a sar $0xa,%eax -f0100780: 50 push %eax -f0100781: 68 ec 1c 10 f0 push $0xf0101cec -f0100786: e8 9c 01 00 00 call f0100927 - return 0; -} -f010078b: b8 00 00 00 00 mov $0x0,%eax -f0100790: c9 leave -f0100791: c3 ret - -f0100792 : - -int -mon_backtrace(int argc, char **argv, struct Trapframe *tf) -{ -f0100792: f3 0f 1e fb endbr32 - // Your code here. - return 0; -} -f0100796: b8 00 00 00 00 mov $0x0,%eax -f010079b: c3 ret - -f010079c : - return 0; -} - -void -monitor(struct Trapframe *tf) -{ -f010079c: f3 0f 1e fb endbr32 -f01007a0: 55 push %ebp -f01007a1: 89 e5 mov %esp,%ebp -f01007a3: 57 push %edi -f01007a4: 56 push %esi -f01007a5: 53 push %ebx -f01007a6: 83 ec 58 sub $0x58,%esp - char *buf; - - cprintf("Welcome to the JOS kernel monitor!\n"); -f01007a9: 68 18 1d 10 f0 push $0xf0101d18 -f01007ae: e8 74 01 00 00 call f0100927 - cprintf("Type 'help' for a list of commands.\n"); -f01007b3: c7 04 24 3c 1d 10 f0 movl $0xf0101d3c,(%esp) -f01007ba: e8 68 01 00 00 call f0100927 -f01007bf: 83 c4 10 add $0x10,%esp -f01007c2: e9 cf 00 00 00 jmp f0100896 - while (*buf && strchr(WHITESPACE, *buf)) -f01007c7: 83 ec 08 sub $0x8,%esp -f01007ca: 0f be c0 movsbl %al,%eax -f01007cd: 50 push %eax -f01007ce: 68 d2 1b 10 f0 push $0xf0101bd2 -f01007d3: e8 fe 0b 00 00 call f01013d6 -f01007d8: 83 c4 10 add $0x10,%esp -f01007db: 85 c0 test %eax,%eax -f01007dd: 74 6c je f010084b - *buf++ = 0; -f01007df: c6 03 00 movb $0x0,(%ebx) -f01007e2: 89 f7 mov %esi,%edi -f01007e4: 8d 5b 01 lea 0x1(%ebx),%ebx -f01007e7: 89 fe mov %edi,%esi - while (*buf && strchr(WHITESPACE, *buf)) -f01007e9: 0f b6 03 movzbl (%ebx),%eax -f01007ec: 84 c0 test %al,%al -f01007ee: 75 d7 jne f01007c7 - argv[argc] = 0; -f01007f0: c7 44 b5 a8 00 00 00 movl $0x0,-0x58(%ebp,%esi,4) -f01007f7: 00 - if (argc == 0) -f01007f8: 85 f6 test %esi,%esi -f01007fa: 0f 84 96 00 00 00 je f0100896 - if (strcmp(argv[0], commands[i].name) == 0) -f0100800: 83 ec 08 sub $0x8,%esp -f0100803: 68 9e 1b 10 f0 push $0xf0101b9e -f0100808: ff 75 a8 pushl -0x58(%ebp) -f010080b: e8 60 0b 00 00 call f0101370 -f0100810: 83 c4 10 add $0x10,%esp -f0100813: 85 c0 test %eax,%eax -f0100815: 0f 84 a7 00 00 00 je f01008c2 -f010081b: 83 ec 08 sub $0x8,%esp -f010081e: 68 ac 1b 10 f0 push $0xf0101bac -f0100823: ff 75 a8 pushl -0x58(%ebp) -f0100826: e8 45 0b 00 00 call f0101370 -f010082b: 83 c4 10 add $0x10,%esp -f010082e: 85 c0 test %eax,%eax -f0100830: 0f 84 87 00 00 00 je f01008bd - cprintf("Unknown command '%s'\n", argv[0]); -f0100836: 83 ec 08 sub $0x8,%esp -f0100839: ff 75 a8 pushl -0x58(%ebp) -f010083c: 68 f4 1b 10 f0 push $0xf0101bf4 -f0100841: e8 e1 00 00 00 call f0100927 - return 0; -f0100846: 83 c4 10 add $0x10,%esp -f0100849: eb 4b jmp f0100896 - if (*buf == 0) -f010084b: 80 3b 00 cmpb $0x0,(%ebx) -f010084e: 74 a0 je f01007f0 - if (argc == MAXARGS-1) { -f0100850: 83 fe 0f cmp $0xf,%esi -f0100853: 74 2f je f0100884 - argv[argc++] = buf; -f0100855: 8d 7e 01 lea 0x1(%esi),%edi -f0100858: 89 5c b5 a8 mov %ebx,-0x58(%ebp,%esi,4) - while (*buf && !strchr(WHITESPACE, *buf)) -f010085c: 0f b6 03 movzbl (%ebx),%eax -f010085f: 84 c0 test %al,%al -f0100861: 74 84 je f01007e7 -f0100863: 83 ec 08 sub $0x8,%esp -f0100866: 0f be c0 movsbl %al,%eax -f0100869: 50 push %eax -f010086a: 68 d2 1b 10 f0 push $0xf0101bd2 -f010086f: e8 62 0b 00 00 call f01013d6 -f0100874: 83 c4 10 add $0x10,%esp -f0100877: 85 c0 test %eax,%eax -f0100879: 0f 85 68 ff ff ff jne f01007e7 - buf++; -f010087f: 83 c3 01 add $0x1,%ebx -f0100882: eb d8 jmp f010085c - cprintf("Too many arguments (max %d)\n", MAXARGS); -f0100884: 83 ec 08 sub $0x8,%esp -f0100887: 6a 10 push $0x10 -f0100889: 68 d7 1b 10 f0 push $0xf0101bd7 -f010088e: e8 94 00 00 00 call f0100927 - return 0; -f0100893: 83 c4 10 add $0x10,%esp - - - while (1) { - buf = readline("K> "); -f0100896: 83 ec 0c sub $0xc,%esp -f0100899: 68 ce 1b 10 f0 push $0xf0101bce -f010089e: e8 e5 08 00 00 call f0101188 -f01008a3: 89 c3 mov %eax,%ebx - if (buf != NULL) -f01008a5: 83 c4 10 add $0x10,%esp -f01008a8: 85 c0 test %eax,%eax -f01008aa: 74 ea je f0100896 - argv[argc] = 0; -f01008ac: c7 45 a8 00 00 00 00 movl $0x0,-0x58(%ebp) - argc = 0; -f01008b3: be 00 00 00 00 mov $0x0,%esi -f01008b8: e9 2c ff ff ff jmp f01007e9 - for (i = 0; i < ARRAY_SIZE(commands); i++) { -f01008bd: b8 01 00 00 00 mov $0x1,%eax - return commands[i].func(argc, argv, tf); -f01008c2: 83 ec 04 sub $0x4,%esp -f01008c5: 8d 04 40 lea (%eax,%eax,2),%eax -f01008c8: ff 75 08 pushl 0x8(%ebp) -f01008cb: 8d 55 a8 lea -0x58(%ebp),%edx -f01008ce: 52 push %edx -f01008cf: 56 push %esi -f01008d0: ff 14 85 6c 1d 10 f0 call *-0xfefe294(,%eax,4) - if (runcmd(buf, tf) < 0) -f01008d7: 83 c4 10 add $0x10,%esp -f01008da: 85 c0 test %eax,%eax -f01008dc: 79 b8 jns f0100896 - break; - } -} -f01008de: 8d 65 f4 lea -0xc(%ebp),%esp -f01008e1: 5b pop %ebx -f01008e2: 5e pop %esi -f01008e3: 5f pop %edi -f01008e4: 5d pop %ebp -f01008e5: c3 ret - -f01008e6 : -#include - - -static void -putch(int ch, int *cnt) -{ -f01008e6: f3 0f 1e fb endbr32 -f01008ea: 55 push %ebp -f01008eb: 89 e5 mov %esp,%ebp -f01008ed: 83 ec 14 sub $0x14,%esp - cputchar(ch); -f01008f0: ff 75 08 pushl 0x8(%ebp) -f01008f3: e8 87 fd ff ff call f010067f - *cnt++; -} -f01008f8: 83 c4 10 add $0x10,%esp -f01008fb: c9 leave -f01008fc: c3 ret - -f01008fd : - -int -vcprintf(const char *fmt, va_list ap) -{ -f01008fd: f3 0f 1e fb endbr32 -f0100901: 55 push %ebp -f0100902: 89 e5 mov %esp,%ebp -f0100904: 83 ec 18 sub $0x18,%esp - int cnt = 0; -f0100907: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - - vprintfmt((void*)putch, &cnt, fmt, ap); -f010090e: ff 75 0c pushl 0xc(%ebp) -f0100911: ff 75 08 pushl 0x8(%ebp) -f0100914: 8d 45 f4 lea -0xc(%ebp),%eax -f0100917: 50 push %eax -f0100918: 68 e6 08 10 f0 push $0xf01008e6 -f010091d: e8 d3 03 00 00 call f0100cf5 - return cnt; -} -f0100922: 8b 45 f4 mov -0xc(%ebp),%eax -f0100925: c9 leave -f0100926: c3 ret - -f0100927 : - -int -cprintf(const char *fmt, ...) -{ -f0100927: f3 0f 1e fb endbr32 -f010092b: 55 push %ebp -f010092c: 89 e5 mov %esp,%ebp -f010092e: 83 ec 10 sub $0x10,%esp - va_list ap; - int cnt; - - va_start(ap, fmt); -f0100931: 8d 45 0c lea 0xc(%ebp),%eax - cnt = vcprintf(fmt, ap); -f0100934: 50 push %eax -f0100935: ff 75 08 pushl 0x8(%ebp) -f0100938: e8 c0 ff ff ff call f01008fd - va_end(ap); - - return cnt; -} -f010093d: c9 leave -f010093e: c3 ret - -f010093f : -// will exit setting left = 118, right = 554. -// -static void -stab_binsearch(const struct Stab *stabs, int *region_left, int *region_right, - int type, uintptr_t addr) -{ -f010093f: 55 push %ebp -f0100940: 89 e5 mov %esp,%ebp -f0100942: 57 push %edi -f0100943: 56 push %esi -f0100944: 53 push %ebx -f0100945: 83 ec 14 sub $0x14,%esp -f0100948: 89 45 ec mov %eax,-0x14(%ebp) -f010094b: 89 55 e4 mov %edx,-0x1c(%ebp) -f010094e: 89 4d e0 mov %ecx,-0x20(%ebp) -f0100951: 8b 75 08 mov 0x8(%ebp),%esi - int l = *region_left, r = *region_right, any_matches = 0; -f0100954: 8b 1a mov (%edx),%ebx -f0100956: 8b 01 mov (%ecx),%eax -f0100958: 89 45 f0 mov %eax,-0x10(%ebp) -f010095b: c7 45 e8 00 00 00 00 movl $0x0,-0x18(%ebp) - - while (l <= r) { -f0100962: eb 23 jmp f0100987 - - // search for earliest stab with right type - while (m >= l && stabs[m].n_type != type) - m--; - if (m < l) { // no match in [l, m] - l = true_m + 1; -f0100964: 8d 5f 01 lea 0x1(%edi),%ebx - continue; -f0100967: eb 1e jmp f0100987 - } - - // actual binary search - any_matches = 1; - if (stabs[m].n_value < addr) { -f0100969: 8d 14 40 lea (%eax,%eax,2),%edx -f010096c: 8b 4d ec mov -0x14(%ebp),%ecx -f010096f: 8b 54 91 08 mov 0x8(%ecx,%edx,4),%edx -f0100973: 3b 55 0c cmp 0xc(%ebp),%edx -f0100976: 73 46 jae f01009be - *region_left = m; -f0100978: 8b 5d e4 mov -0x1c(%ebp),%ebx -f010097b: 89 03 mov %eax,(%ebx) - l = true_m + 1; -f010097d: 8d 5f 01 lea 0x1(%edi),%ebx - any_matches = 1; -f0100980: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) - while (l <= r) { -f0100987: 3b 5d f0 cmp -0x10(%ebp),%ebx -f010098a: 7f 5f jg f01009eb - int true_m = (l + r) / 2, m = true_m; -f010098c: 8b 45 f0 mov -0x10(%ebp),%eax -f010098f: 8d 14 03 lea (%ebx,%eax,1),%edx -f0100992: 89 d0 mov %edx,%eax -f0100994: c1 e8 1f shr $0x1f,%eax -f0100997: 01 d0 add %edx,%eax -f0100999: 89 c7 mov %eax,%edi -f010099b: d1 ff sar %edi -f010099d: 83 e0 fe and $0xfffffffe,%eax -f01009a0: 01 f8 add %edi,%eax -f01009a2: 8b 4d ec mov -0x14(%ebp),%ecx -f01009a5: 8d 54 81 04 lea 0x4(%ecx,%eax,4),%edx -f01009a9: 89 f8 mov %edi,%eax - while (m >= l && stabs[m].n_type != type) -f01009ab: 39 c3 cmp %eax,%ebx -f01009ad: 7f b5 jg f0100964 -f01009af: 0f b6 0a movzbl (%edx),%ecx -f01009b2: 83 ea 0c sub $0xc,%edx -f01009b5: 39 f1 cmp %esi,%ecx -f01009b7: 74 b0 je f0100969 - m--; -f01009b9: 83 e8 01 sub $0x1,%eax -f01009bc: eb ed jmp f01009ab - } else if (stabs[m].n_value > addr) { -f01009be: 3b 55 0c cmp 0xc(%ebp),%edx -f01009c1: 76 14 jbe f01009d7 - *region_right = m - 1; -f01009c3: 83 e8 01 sub $0x1,%eax -f01009c6: 89 45 f0 mov %eax,-0x10(%ebp) -f01009c9: 8b 7d e0 mov -0x20(%ebp),%edi -f01009cc: 89 07 mov %eax,(%edi) - any_matches = 1; -f01009ce: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) -f01009d5: eb b0 jmp f0100987 - r = m - 1; - } else { - // exact match for 'addr', but continue loop to find - // *region_right - *region_left = m; -f01009d7: 8b 7d e4 mov -0x1c(%ebp),%edi -f01009da: 89 07 mov %eax,(%edi) - l = m; - addr++; -f01009dc: 83 45 0c 01 addl $0x1,0xc(%ebp) -f01009e0: 89 c3 mov %eax,%ebx - any_matches = 1; -f01009e2: c7 45 e8 01 00 00 00 movl $0x1,-0x18(%ebp) -f01009e9: eb 9c jmp f0100987 - } - } - - if (!any_matches) -f01009eb: 83 7d e8 00 cmpl $0x0,-0x18(%ebp) -f01009ef: 75 15 jne f0100a06 - *region_right = *region_left - 1; -f01009f1: 8b 45 e4 mov -0x1c(%ebp),%eax -f01009f4: 8b 00 mov (%eax),%eax -f01009f6: 83 e8 01 sub $0x1,%eax -f01009f9: 8b 7d e0 mov -0x20(%ebp),%edi -f01009fc: 89 07 mov %eax,(%edi) - l > *region_left && stabs[l].n_type != type; - l--) - /* do nothing */; - *region_left = l; - } -} -f01009fe: 83 c4 14 add $0x14,%esp -f0100a01: 5b pop %ebx -f0100a02: 5e pop %esi -f0100a03: 5f pop %edi -f0100a04: 5d pop %ebp -f0100a05: c3 ret - for (l = *region_right; -f0100a06: 8b 45 e0 mov -0x20(%ebp),%eax -f0100a09: 8b 00 mov (%eax),%eax - l > *region_left && stabs[l].n_type != type; -f0100a0b: 8b 7d e4 mov -0x1c(%ebp),%edi -f0100a0e: 8b 0f mov (%edi),%ecx -f0100a10: 8d 14 40 lea (%eax,%eax,2),%edx -f0100a13: 8b 7d ec mov -0x14(%ebp),%edi -f0100a16: 8d 54 97 04 lea 0x4(%edi,%edx,4),%edx - for (l = *region_right; -f0100a1a: eb 03 jmp f0100a1f - l--) -f0100a1c: 83 e8 01 sub $0x1,%eax - for (l = *region_right; -f0100a1f: 39 c1 cmp %eax,%ecx -f0100a21: 7d 0a jge f0100a2d - l > *region_left && stabs[l].n_type != type; -f0100a23: 0f b6 1a movzbl (%edx),%ebx -f0100a26: 83 ea 0c sub $0xc,%edx -f0100a29: 39 f3 cmp %esi,%ebx -f0100a2b: 75 ef jne f0100a1c - *region_left = l; -f0100a2d: 8b 7d e4 mov -0x1c(%ebp),%edi -f0100a30: 89 07 mov %eax,(%edi) -} -f0100a32: eb ca jmp f01009fe - -f0100a34 : -// negative if not. But even if it returns negative it has stored some -// information into '*info'. -// -int -debuginfo_eip(uintptr_t addr, struct Eipdebuginfo *info) -{ -f0100a34: f3 0f 1e fb endbr32 -f0100a38: 55 push %ebp -f0100a39: 89 e5 mov %esp,%ebp -f0100a3b: 57 push %edi -f0100a3c: 56 push %esi -f0100a3d: 53 push %ebx -f0100a3e: 83 ec 1c sub $0x1c,%esp -f0100a41: 8b 7d 08 mov 0x8(%ebp),%edi -f0100a44: 8b 75 0c mov 0xc(%ebp),%esi - const struct Stab *stabs, *stab_end; - const char *stabstr, *stabstr_end; - int lfile, rfile, lfun, rfun, lline, rline; - - // Initialize *info - info->eip_file = ""; -f0100a47: c7 06 7c 1d 10 f0 movl $0xf0101d7c,(%esi) - info->eip_line = 0; -f0100a4d: c7 46 04 00 00 00 00 movl $0x0,0x4(%esi) - info->eip_fn_name = ""; -f0100a54: c7 46 08 7c 1d 10 f0 movl $0xf0101d7c,0x8(%esi) - info->eip_fn_namelen = 9; -f0100a5b: c7 46 0c 09 00 00 00 movl $0x9,0xc(%esi) - info->eip_fn_addr = addr; -f0100a62: 89 7e 10 mov %edi,0x10(%esi) - info->eip_fn_narg = 0; -f0100a65: c7 46 14 00 00 00 00 movl $0x0,0x14(%esi) - - // Find the relevant set of stabs - if (addr >= ULIM) { -f0100a6c: 81 ff ff ff 7f ef cmp $0xef7fffff,%edi -f0100a72: 0f 86 db 00 00 00 jbe f0100b53 - // Can't search for user-level addresses yet! - panic("User address"); - } - - // String table validity checks - if (stabstr_end <= stabstr || stabstr_end[-1] != 0) -f0100a78: b8 d7 7b 10 f0 mov $0xf0107bd7,%eax -f0100a7d: 3d 2d 62 10 f0 cmp $0xf010622d,%eax -f0100a82: 0f 86 5e 01 00 00 jbe f0100be6 -f0100a88: 80 3d d6 7b 10 f0 00 cmpb $0x0,0xf0107bd6 -f0100a8f: 0f 85 58 01 00 00 jne f0100bed - // 'eip'. First, we find the basic source file containing 'eip'. - // Then, we look in that source file for the function. Then we look - // for the line number. - - // Search the entire set of stabs for the source file (type N_SO). - lfile = 0; -f0100a95: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) - rfile = (stab_end - stabs) - 1; -f0100a9c: b8 2c 62 10 f0 mov $0xf010622c,%eax -f0100aa1: 2d b4 1f 10 f0 sub $0xf0101fb4,%eax -f0100aa6: c1 f8 02 sar $0x2,%eax -f0100aa9: 69 c0 ab aa aa aa imul $0xaaaaaaab,%eax,%eax -f0100aaf: 83 e8 01 sub $0x1,%eax -f0100ab2: 89 45 e0 mov %eax,-0x20(%ebp) - stab_binsearch(stabs, &lfile, &rfile, N_SO, addr); -f0100ab5: 83 ec 08 sub $0x8,%esp -f0100ab8: 57 push %edi -f0100ab9: 6a 64 push $0x64 -f0100abb: 8d 4d e0 lea -0x20(%ebp),%ecx -f0100abe: 8d 55 e4 lea -0x1c(%ebp),%edx -f0100ac1: b8 b4 1f 10 f0 mov $0xf0101fb4,%eax -f0100ac6: e8 74 fe ff ff call f010093f - if (lfile == 0) -f0100acb: 8b 45 e4 mov -0x1c(%ebp),%eax -f0100ace: 83 c4 10 add $0x10,%esp -f0100ad1: 85 c0 test %eax,%eax -f0100ad3: 0f 84 1b 01 00 00 je f0100bf4 - return -1; - - // Search within that file's stabs for the function definition - // (N_FUN). - lfun = lfile; -f0100ad9: 89 45 dc mov %eax,-0x24(%ebp) - rfun = rfile; -f0100adc: 8b 45 e0 mov -0x20(%ebp),%eax -f0100adf: 89 45 d8 mov %eax,-0x28(%ebp) - stab_binsearch(stabs, &lfun, &rfun, N_FUN, addr); -f0100ae2: 83 ec 08 sub $0x8,%esp -f0100ae5: 57 push %edi -f0100ae6: 6a 24 push $0x24 -f0100ae8: 8d 4d d8 lea -0x28(%ebp),%ecx -f0100aeb: 8d 55 dc lea -0x24(%ebp),%edx -f0100aee: b8 b4 1f 10 f0 mov $0xf0101fb4,%eax -f0100af3: e8 47 fe ff ff call f010093f - - if (lfun <= rfun) { -f0100af8: 8b 5d dc mov -0x24(%ebp),%ebx -f0100afb: 83 c4 10 add $0x10,%esp -f0100afe: 3b 5d d8 cmp -0x28(%ebp),%ebx -f0100b01: 7f 64 jg f0100b67 - // stabs[lfun] points to the function name - // in the string table, but check bounds just in case. - if (stabs[lfun].n_strx < stabstr_end - stabstr) -f0100b03: 8d 04 5b lea (%ebx,%ebx,2),%eax -f0100b06: c1 e0 02 shl $0x2,%eax -f0100b09: 8d 90 b4 1f 10 f0 lea -0xfefe04c(%eax),%edx -f0100b0f: 8b 88 b4 1f 10 f0 mov -0xfefe04c(%eax),%ecx -f0100b15: b8 d7 7b 10 f0 mov $0xf0107bd7,%eax -f0100b1a: 2d 2d 62 10 f0 sub $0xf010622d,%eax -f0100b1f: 39 c1 cmp %eax,%ecx -f0100b21: 73 09 jae f0100b2c - info->eip_fn_name = stabstr + stabs[lfun].n_strx; -f0100b23: 81 c1 2d 62 10 f0 add $0xf010622d,%ecx -f0100b29: 89 4e 08 mov %ecx,0x8(%esi) - info->eip_fn_addr = stabs[lfun].n_value; -f0100b2c: 8b 42 08 mov 0x8(%edx),%eax -f0100b2f: 89 46 10 mov %eax,0x10(%esi) - info->eip_fn_addr = addr; - lline = lfile; - rline = rfile; - } - // Ignore stuff after the colon. - info->eip_fn_namelen = strfind(info->eip_fn_name, ':') - info->eip_fn_name; -f0100b32: 83 ec 08 sub $0x8,%esp -f0100b35: 6a 3a push $0x3a -f0100b37: ff 76 08 pushl 0x8(%esi) -f0100b3a: e8 bc 08 00 00 call f01013fb -f0100b3f: 2b 46 08 sub 0x8(%esi),%eax -f0100b42: 89 46 0c mov %eax,0xc(%esi) - // Search backwards from the line number for the relevant filename - // stab. - // We can't just use the "lfile" stab because inlined functions - // can interpolate code from a different file! - // Such included source files use the N_SOL stab type. - while (lline >= lfile -f0100b45: 8b 4d e4 mov -0x1c(%ebp),%ecx -f0100b48: 8d 04 5b lea (%ebx,%ebx,2),%eax -f0100b4b: c1 e0 02 shl $0x2,%eax -f0100b4e: 83 c4 10 add $0x10,%esp -f0100b51: eb 22 jmp f0100b75 - panic("User address"); -f0100b53: 83 ec 04 sub $0x4,%esp -f0100b56: 68 86 1d 10 f0 push $0xf0101d86 -f0100b5b: 6a 7f push $0x7f -f0100b5d: 68 93 1d 10 f0 push $0xf0101d93 -f0100b62: e8 87 f5 ff ff call f01000ee <_panic> - info->eip_fn_addr = addr; -f0100b67: 89 7e 10 mov %edi,0x10(%esi) - lline = lfile; -f0100b6a: 8b 5d e4 mov -0x1c(%ebp),%ebx -f0100b6d: eb c3 jmp f0100b32 - && stabs[lline].n_type != N_SOL - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) - lline--; -f0100b6f: 83 eb 01 sub $0x1,%ebx -f0100b72: 83 e8 0c sub $0xc,%eax - while (lline >= lfile -f0100b75: 39 d9 cmp %ebx,%ecx -f0100b77: 7f 3a jg f0100bb3 - && stabs[lline].n_type != N_SOL -f0100b79: 0f b6 90 b8 1f 10 f0 movzbl -0xfefe048(%eax),%edx -f0100b80: 80 fa 84 cmp $0x84,%dl -f0100b83: 74 0e je f0100b93 - && (stabs[lline].n_type != N_SO || !stabs[lline].n_value)) -f0100b85: 80 fa 64 cmp $0x64,%dl -f0100b88: 75 e5 jne f0100b6f -f0100b8a: 83 b8 bc 1f 10 f0 00 cmpl $0x0,-0xfefe044(%eax) -f0100b91: 74 dc je f0100b6f - if (lline >= lfile && stabs[lline].n_strx < stabstr_end - stabstr) -f0100b93: 8d 04 5b lea (%ebx,%ebx,2),%eax -f0100b96: 8b 14 85 b4 1f 10 f0 mov -0xfefe04c(,%eax,4),%edx -f0100b9d: b8 d7 7b 10 f0 mov $0xf0107bd7,%eax -f0100ba2: 2d 2d 62 10 f0 sub $0xf010622d,%eax -f0100ba7: 39 c2 cmp %eax,%edx -f0100ba9: 73 08 jae f0100bb3 - info->eip_file = stabstr + stabs[lline].n_strx; -f0100bab: 81 c2 2d 62 10 f0 add $0xf010622d,%edx -f0100bb1: 89 16 mov %edx,(%esi) - - - // Set eip_fn_narg to the number of arguments taken by the function, - // or 0 if there was no containing function. - if (lfun < rfun) -f0100bb3: 8b 45 dc mov -0x24(%ebp),%eax -f0100bb6: 8b 4d d8 mov -0x28(%ebp),%ecx - for (lline = lfun + 1; - lline < rfun && stabs[lline].n_type == N_PSYM; - lline++) - info->eip_fn_narg++; - - return 0; -f0100bb9: ba 00 00 00 00 mov $0x0,%edx - if (lfun < rfun) -f0100bbe: 39 c8 cmp %ecx,%eax -f0100bc0: 7d 3e jge f0100c00 - for (lline = lfun + 1; -f0100bc2: 83 c0 01 add $0x1,%eax -f0100bc5: eb 07 jmp f0100bce - info->eip_fn_narg++; -f0100bc7: 83 46 14 01 addl $0x1,0x14(%esi) - lline++) -f0100bcb: 83 c0 01 add $0x1,%eax - for (lline = lfun + 1; -f0100bce: 39 c1 cmp %eax,%ecx -f0100bd0: 74 29 je f0100bfb - lline < rfun && stabs[lline].n_type == N_PSYM; -f0100bd2: 8d 14 40 lea (%eax,%eax,2),%edx -f0100bd5: 80 3c 95 b8 1f 10 f0 cmpb $0xa0,-0xfefe048(,%edx,4) -f0100bdc: a0 -f0100bdd: 74 e8 je f0100bc7 - return 0; -f0100bdf: ba 00 00 00 00 mov $0x0,%edx -f0100be4: eb 1a jmp f0100c00 - return -1; -f0100be6: ba ff ff ff ff mov $0xffffffff,%edx -f0100beb: eb 13 jmp f0100c00 -f0100bed: ba ff ff ff ff mov $0xffffffff,%edx -f0100bf2: eb 0c jmp f0100c00 - return -1; -f0100bf4: ba ff ff ff ff mov $0xffffffff,%edx -f0100bf9: eb 05 jmp f0100c00 - return 0; -f0100bfb: ba 00 00 00 00 mov $0x0,%edx -} -f0100c00: 89 d0 mov %edx,%eax -f0100c02: 8d 65 f4 lea -0xc(%ebp),%esp -f0100c05: 5b pop %ebx -f0100c06: 5e pop %esi -f0100c07: 5f pop %edi -f0100c08: 5d pop %ebp -f0100c09: c3 ret - -f0100c0a : - * using specified putch function and associated pointer putdat. - */ -static void -printnum(void (*putch)(int, void*), void *putdat, - unsigned long long num, unsigned base, int width, int padc) -{ -f0100c0a: 55 push %ebp -f0100c0b: 89 e5 mov %esp,%ebp -f0100c0d: 57 push %edi -f0100c0e: 56 push %esi -f0100c0f: 53 push %ebx -f0100c10: 83 ec 1c sub $0x1c,%esp -f0100c13: 89 c7 mov %eax,%edi -f0100c15: 89 d6 mov %edx,%esi -f0100c17: 8b 45 08 mov 0x8(%ebp),%eax -f0100c1a: 8b 55 0c mov 0xc(%ebp),%edx -f0100c1d: 89 d1 mov %edx,%ecx -f0100c1f: 89 c2 mov %eax,%edx -f0100c21: 89 45 d8 mov %eax,-0x28(%ebp) -f0100c24: 89 4d dc mov %ecx,-0x24(%ebp) -f0100c27: 8b 45 10 mov 0x10(%ebp),%eax -f0100c2a: 8b 5d 14 mov 0x14(%ebp),%ebx - // first recursively print all preceding (more significant) digits - if (num >= base) { -f0100c2d: 89 45 e0 mov %eax,-0x20(%ebp) -f0100c30: c7 45 e4 00 00 00 00 movl $0x0,-0x1c(%ebp) -f0100c37: 39 c2 cmp %eax,%edx -f0100c39: 1b 4d e4 sbb -0x1c(%ebp),%ecx -f0100c3c: 72 3e jb f0100c7c - printnum(putch, putdat, num / base, base, width - 1, padc); -f0100c3e: 83 ec 0c sub $0xc,%esp -f0100c41: ff 75 18 pushl 0x18(%ebp) -f0100c44: 83 eb 01 sub $0x1,%ebx -f0100c47: 53 push %ebx -f0100c48: 50 push %eax -f0100c49: 83 ec 08 sub $0x8,%esp -f0100c4c: ff 75 e4 pushl -0x1c(%ebp) -f0100c4f: ff 75 e0 pushl -0x20(%ebp) -f0100c52: ff 75 dc pushl -0x24(%ebp) -f0100c55: ff 75 d8 pushl -0x28(%ebp) -f0100c58: e8 d3 09 00 00 call f0101630 <__udivdi3> -f0100c5d: 83 c4 18 add $0x18,%esp -f0100c60: 52 push %edx -f0100c61: 50 push %eax -f0100c62: 89 f2 mov %esi,%edx -f0100c64: 89 f8 mov %edi,%eax -f0100c66: e8 9f ff ff ff call f0100c0a -f0100c6b: 83 c4 20 add $0x20,%esp -f0100c6e: eb 13 jmp f0100c83 - } else { - // print any needed pad characters before first digit - while (--width > 0) - putch(padc, putdat); -f0100c70: 83 ec 08 sub $0x8,%esp -f0100c73: 56 push %esi -f0100c74: ff 75 18 pushl 0x18(%ebp) -f0100c77: ff d7 call *%edi -f0100c79: 83 c4 10 add $0x10,%esp - while (--width > 0) -f0100c7c: 83 eb 01 sub $0x1,%ebx -f0100c7f: 85 db test %ebx,%ebx -f0100c81: 7f ed jg f0100c70 - } - - // then print this (the least significant) digit - putch("0123456789abcdef"[num % base], putdat); -f0100c83: 83 ec 08 sub $0x8,%esp -f0100c86: 56 push %esi -f0100c87: 83 ec 04 sub $0x4,%esp -f0100c8a: ff 75 e4 pushl -0x1c(%ebp) -f0100c8d: ff 75 e0 pushl -0x20(%ebp) -f0100c90: ff 75 dc pushl -0x24(%ebp) -f0100c93: ff 75 d8 pushl -0x28(%ebp) -f0100c96: e8 a5 0a 00 00 call f0101740 <__umoddi3> -f0100c9b: 83 c4 14 add $0x14,%esp -f0100c9e: 0f be 80 a1 1d 10 f0 movsbl -0xfefe25f(%eax),%eax -f0100ca5: 50 push %eax -f0100ca6: ff d7 call *%edi -} -f0100ca8: 83 c4 10 add $0x10,%esp -f0100cab: 8d 65 f4 lea -0xc(%ebp),%esp -f0100cae: 5b pop %ebx -f0100caf: 5e pop %esi -f0100cb0: 5f pop %edi -f0100cb1: 5d pop %ebp -f0100cb2: c3 ret - -f0100cb3 : - int cnt; -}; - -static void -sprintputch(int ch, struct sprintbuf *b) -{ -f0100cb3: f3 0f 1e fb endbr32 -f0100cb7: 55 push %ebp -f0100cb8: 89 e5 mov %esp,%ebp -f0100cba: 8b 45 0c mov 0xc(%ebp),%eax - b->cnt++; -f0100cbd: 83 40 08 01 addl $0x1,0x8(%eax) - if (b->buf < b->ebuf) -f0100cc1: 8b 10 mov (%eax),%edx -f0100cc3: 3b 50 04 cmp 0x4(%eax),%edx -f0100cc6: 73 0a jae f0100cd2 - *b->buf++ = ch; -f0100cc8: 8d 4a 01 lea 0x1(%edx),%ecx -f0100ccb: 89 08 mov %ecx,(%eax) -f0100ccd: 8b 45 08 mov 0x8(%ebp),%eax -f0100cd0: 88 02 mov %al,(%edx) -} -f0100cd2: 5d pop %ebp -f0100cd3: c3 ret - -f0100cd4 : -{ -f0100cd4: f3 0f 1e fb endbr32 -f0100cd8: 55 push %ebp -f0100cd9: 89 e5 mov %esp,%ebp -f0100cdb: 83 ec 08 sub $0x8,%esp - va_start(ap, fmt); -f0100cde: 8d 45 14 lea 0x14(%ebp),%eax - vprintfmt(putch, putdat, fmt, ap); -f0100ce1: 50 push %eax -f0100ce2: ff 75 10 pushl 0x10(%ebp) -f0100ce5: ff 75 0c pushl 0xc(%ebp) -f0100ce8: ff 75 08 pushl 0x8(%ebp) -f0100ceb: e8 05 00 00 00 call f0100cf5 -} -f0100cf0: 83 c4 10 add $0x10,%esp -f0100cf3: c9 leave -f0100cf4: c3 ret - -f0100cf5 : -{ -f0100cf5: f3 0f 1e fb endbr32 -f0100cf9: 55 push %ebp -f0100cfa: 89 e5 mov %esp,%ebp -f0100cfc: 57 push %edi -f0100cfd: 56 push %esi -f0100cfe: 53 push %ebx -f0100cff: 83 ec 3c sub $0x3c,%esp -f0100d02: 8b 75 08 mov 0x8(%ebp),%esi -f0100d05: 8b 5d 0c mov 0xc(%ebp),%ebx -f0100d08: 8b 7d 10 mov 0x10(%ebp),%edi -f0100d0b: e9 5d 03 00 00 jmp f010106d - padc = ' '; -f0100d10: c6 45 d3 20 movb $0x20,-0x2d(%ebp) - altflag = 0; -f0100d14: c7 45 e0 00 00 00 00 movl $0x0,-0x20(%ebp) - precision = -1; -f0100d1b: c7 45 d8 ff ff ff ff movl $0xffffffff,-0x28(%ebp) - width = -1; -f0100d22: c7 45 d4 ff ff ff ff movl $0xffffffff,-0x2c(%ebp) - lflag = 0; -f0100d29: b9 00 00 00 00 mov $0x0,%ecx - switch (ch = *(unsigned char *) fmt++) { -f0100d2e: 8d 47 01 lea 0x1(%edi),%eax -f0100d31: 89 45 e4 mov %eax,-0x1c(%ebp) -f0100d34: 0f b6 17 movzbl (%edi),%edx -f0100d37: 8d 42 dd lea -0x23(%edx),%eax -f0100d3a: 3c 55 cmp $0x55,%al -f0100d3c: 0f 87 ae 03 00 00 ja f01010f0 -f0100d42: 0f b6 c0 movzbl %al,%eax -f0100d45: 3e ff 24 85 30 1e 10 notrack jmp *-0xfefe1d0(,%eax,4) -f0100d4c: f0 -f0100d4d: 8b 7d e4 mov -0x1c(%ebp),%edi - padc = '-'; -f0100d50: c6 45 d3 2d movb $0x2d,-0x2d(%ebp) -f0100d54: eb d8 jmp f0100d2e - switch (ch = *(unsigned char *) fmt++) { -f0100d56: 8b 7d e4 mov -0x1c(%ebp),%edi -f0100d59: c6 45 d3 30 movb $0x30,-0x2d(%ebp) -f0100d5d: eb cf jmp f0100d2e -f0100d5f: 0f b6 d2 movzbl %dl,%edx -f0100d62: 8b 7d e4 mov -0x1c(%ebp),%edi - for (precision = 0; ; ++fmt) { -f0100d65: b8 00 00 00 00 mov $0x0,%eax -f0100d6a: 89 4d e4 mov %ecx,-0x1c(%ebp) - precision = precision * 10 + ch - '0'; -f0100d6d: 8d 04 80 lea (%eax,%eax,4),%eax -f0100d70: 8d 44 42 d0 lea -0x30(%edx,%eax,2),%eax - ch = *fmt; -f0100d74: 0f be 17 movsbl (%edi),%edx - if (ch < '0' || ch > '9') -f0100d77: 8d 4a d0 lea -0x30(%edx),%ecx -f0100d7a: 83 f9 09 cmp $0x9,%ecx -f0100d7d: 77 55 ja f0100dd4 - for (precision = 0; ; ++fmt) { -f0100d7f: 83 c7 01 add $0x1,%edi - precision = precision * 10 + ch - '0'; -f0100d82: eb e9 jmp f0100d6d - precision = va_arg(ap, int); -f0100d84: 8b 45 14 mov 0x14(%ebp),%eax -f0100d87: 8b 00 mov (%eax),%eax -f0100d89: 89 45 d8 mov %eax,-0x28(%ebp) -f0100d8c: 8b 45 14 mov 0x14(%ebp),%eax -f0100d8f: 8d 40 04 lea 0x4(%eax),%eax -f0100d92: 89 45 14 mov %eax,0x14(%ebp) - switch (ch = *(unsigned char *) fmt++) { -f0100d95: 8b 7d e4 mov -0x1c(%ebp),%edi - if (width < 0) -f0100d98: 83 7d d4 00 cmpl $0x0,-0x2c(%ebp) -f0100d9c: 79 90 jns f0100d2e - width = precision, precision = -1; -f0100d9e: 8b 45 d8 mov -0x28(%ebp),%eax -f0100da1: 89 45 d4 mov %eax,-0x2c(%ebp) -f0100da4: c7 45 d8 ff ff ff ff movl $0xffffffff,-0x28(%ebp) -f0100dab: eb 81 jmp f0100d2e -f0100dad: 8b 45 d4 mov -0x2c(%ebp),%eax -f0100db0: 85 c0 test %eax,%eax -f0100db2: ba 00 00 00 00 mov $0x0,%edx -f0100db7: 0f 49 d0 cmovns %eax,%edx -f0100dba: 89 55 d4 mov %edx,-0x2c(%ebp) - switch (ch = *(unsigned char *) fmt++) { -f0100dbd: 8b 7d e4 mov -0x1c(%ebp),%edi - goto reswitch; -f0100dc0: e9 69 ff ff ff jmp f0100d2e - switch (ch = *(unsigned char *) fmt++) { -f0100dc5: 8b 7d e4 mov -0x1c(%ebp),%edi - altflag = 1; -f0100dc8: c7 45 e0 01 00 00 00 movl $0x1,-0x20(%ebp) - goto reswitch; -f0100dcf: e9 5a ff ff ff jmp f0100d2e -f0100dd4: 8b 4d e4 mov -0x1c(%ebp),%ecx -f0100dd7: 89 45 d8 mov %eax,-0x28(%ebp) -f0100dda: eb bc jmp f0100d98 - lflag++; -f0100ddc: 83 c1 01 add $0x1,%ecx - switch (ch = *(unsigned char *) fmt++) { -f0100ddf: 8b 7d e4 mov -0x1c(%ebp),%edi - goto reswitch; -f0100de2: e9 47 ff ff ff jmp f0100d2e - putch(va_arg(ap, int), putdat); -f0100de7: 8b 45 14 mov 0x14(%ebp),%eax -f0100dea: 8d 78 04 lea 0x4(%eax),%edi -f0100ded: 83 ec 08 sub $0x8,%esp -f0100df0: 53 push %ebx -f0100df1: ff 30 pushl (%eax) -f0100df3: ff d6 call *%esi - break; -f0100df5: 83 c4 10 add $0x10,%esp - putch(va_arg(ap, int), putdat); -f0100df8: 89 7d 14 mov %edi,0x14(%ebp) - break; -f0100dfb: e9 6a 02 00 00 jmp f010106a - err = va_arg(ap, int); -f0100e00: 8b 45 14 mov 0x14(%ebp),%eax -f0100e03: 8d 78 04 lea 0x4(%eax),%edi -f0100e06: 8b 00 mov (%eax),%eax -f0100e08: 99 cltd -f0100e09: 31 d0 xor %edx,%eax -f0100e0b: 29 d0 sub %edx,%eax - if (err >= MAXERROR || (p = error_string[err]) == NULL) -f0100e0d: 83 f8 06 cmp $0x6,%eax -f0100e10: 7f 23 jg f0100e35 -f0100e12: 8b 14 85 88 1f 10 f0 mov -0xfefe078(,%eax,4),%edx -f0100e19: 85 d2 test %edx,%edx -f0100e1b: 74 18 je f0100e35 - printfmt(putch, putdat, "%s", p); -f0100e1d: 52 push %edx -f0100e1e: 68 c2 1d 10 f0 push $0xf0101dc2 -f0100e23: 53 push %ebx -f0100e24: 56 push %esi -f0100e25: e8 aa fe ff ff call f0100cd4 -f0100e2a: 83 c4 10 add $0x10,%esp - err = va_arg(ap, int); -f0100e2d: 89 7d 14 mov %edi,0x14(%ebp) -f0100e30: e9 35 02 00 00 jmp f010106a - printfmt(putch, putdat, "error %d", err); -f0100e35: 50 push %eax -f0100e36: 68 b9 1d 10 f0 push $0xf0101db9 -f0100e3b: 53 push %ebx -f0100e3c: 56 push %esi -f0100e3d: e8 92 fe ff ff call f0100cd4 -f0100e42: 83 c4 10 add $0x10,%esp - err = va_arg(ap, int); -f0100e45: 89 7d 14 mov %edi,0x14(%ebp) - printfmt(putch, putdat, "error %d", err); -f0100e48: e9 1d 02 00 00 jmp f010106a - if ((p = va_arg(ap, char *)) == NULL) -f0100e4d: 8b 45 14 mov 0x14(%ebp),%eax -f0100e50: 83 c0 04 add $0x4,%eax -f0100e53: 89 45 c8 mov %eax,-0x38(%ebp) -f0100e56: 8b 45 14 mov 0x14(%ebp),%eax -f0100e59: 8b 10 mov (%eax),%edx - p = "(null)"; -f0100e5b: 85 d2 test %edx,%edx -f0100e5d: b8 b2 1d 10 f0 mov $0xf0101db2,%eax -f0100e62: 0f 45 c2 cmovne %edx,%eax -f0100e65: 89 45 cc mov %eax,-0x34(%ebp) - if (width > 0 && padc != '-') -f0100e68: 83 7d d4 00 cmpl $0x0,-0x2c(%ebp) -f0100e6c: 7e 06 jle f0100e74 -f0100e6e: 80 7d d3 2d cmpb $0x2d,-0x2d(%ebp) -f0100e72: 75 0d jne f0100e81 - for (width -= strnlen(p, precision); width > 0; width--) -f0100e74: 8b 45 cc mov -0x34(%ebp),%eax -f0100e77: 89 c7 mov %eax,%edi -f0100e79: 03 45 d4 add -0x2c(%ebp),%eax -f0100e7c: 89 45 d4 mov %eax,-0x2c(%ebp) -f0100e7f: eb 55 jmp f0100ed6 -f0100e81: 83 ec 08 sub $0x8,%esp -f0100e84: ff 75 d8 pushl -0x28(%ebp) -f0100e87: ff 75 cc pushl -0x34(%ebp) -f0100e8a: e8 fb 03 00 00 call f010128a -f0100e8f: 8b 55 d4 mov -0x2c(%ebp),%edx -f0100e92: 29 c2 sub %eax,%edx -f0100e94: 89 55 c4 mov %edx,-0x3c(%ebp) -f0100e97: 83 c4 10 add $0x10,%esp -f0100e9a: 89 d7 mov %edx,%edi - putch(padc, putdat); -f0100e9c: 0f be 45 d3 movsbl -0x2d(%ebp),%eax -f0100ea0: 89 45 d4 mov %eax,-0x2c(%ebp) - for (width -= strnlen(p, precision); width > 0; width--) -f0100ea3: 85 ff test %edi,%edi -f0100ea5: 7e 11 jle f0100eb8 - putch(padc, putdat); -f0100ea7: 83 ec 08 sub $0x8,%esp -f0100eaa: 53 push %ebx -f0100eab: ff 75 d4 pushl -0x2c(%ebp) -f0100eae: ff d6 call *%esi - for (width -= strnlen(p, precision); width > 0; width--) -f0100eb0: 83 ef 01 sub $0x1,%edi -f0100eb3: 83 c4 10 add $0x10,%esp -f0100eb6: eb eb jmp f0100ea3 -f0100eb8: 8b 55 c4 mov -0x3c(%ebp),%edx -f0100ebb: 85 d2 test %edx,%edx -f0100ebd: b8 00 00 00 00 mov $0x0,%eax -f0100ec2: 0f 49 c2 cmovns %edx,%eax -f0100ec5: 29 c2 sub %eax,%edx -f0100ec7: 89 55 d4 mov %edx,-0x2c(%ebp) -f0100eca: eb a8 jmp f0100e74 - putch(ch, putdat); -f0100ecc: 83 ec 08 sub $0x8,%esp -f0100ecf: 53 push %ebx -f0100ed0: 52 push %edx -f0100ed1: ff d6 call *%esi -f0100ed3: 83 c4 10 add $0x10,%esp -f0100ed6: 8b 4d d4 mov -0x2c(%ebp),%ecx -f0100ed9: 29 f9 sub %edi,%ecx - for (; (ch = *p++) != '\0' && (precision < 0 || --precision >= 0); width--) -f0100edb: 83 c7 01 add $0x1,%edi -f0100ede: 0f b6 47 ff movzbl -0x1(%edi),%eax -f0100ee2: 0f be d0 movsbl %al,%edx -f0100ee5: 85 d2 test %edx,%edx -f0100ee7: 74 4b je f0100f34 -f0100ee9: 83 7d d8 00 cmpl $0x0,-0x28(%ebp) -f0100eed: 78 06 js f0100ef5 -f0100eef: 83 6d d8 01 subl $0x1,-0x28(%ebp) -f0100ef3: 78 1e js f0100f13 - if (altflag && (ch < ' ' || ch > '~')) -f0100ef5: 83 7d e0 00 cmpl $0x0,-0x20(%ebp) -f0100ef9: 74 d1 je f0100ecc -f0100efb: 0f be c0 movsbl %al,%eax -f0100efe: 83 e8 20 sub $0x20,%eax -f0100f01: 83 f8 5e cmp $0x5e,%eax -f0100f04: 76 c6 jbe f0100ecc - putch('?', putdat); -f0100f06: 83 ec 08 sub $0x8,%esp -f0100f09: 53 push %ebx -f0100f0a: 6a 3f push $0x3f -f0100f0c: ff d6 call *%esi -f0100f0e: 83 c4 10 add $0x10,%esp -f0100f11: eb c3 jmp f0100ed6 -f0100f13: 89 cf mov %ecx,%edi -f0100f15: eb 0e jmp f0100f25 - putch(' ', putdat); -f0100f17: 83 ec 08 sub $0x8,%esp -f0100f1a: 53 push %ebx -f0100f1b: 6a 20 push $0x20 -f0100f1d: ff d6 call *%esi - for (; width > 0; width--) -f0100f1f: 83 ef 01 sub $0x1,%edi -f0100f22: 83 c4 10 add $0x10,%esp -f0100f25: 85 ff test %edi,%edi -f0100f27: 7f ee jg f0100f17 - if ((p = va_arg(ap, char *)) == NULL) -f0100f29: 8b 45 c8 mov -0x38(%ebp),%eax -f0100f2c: 89 45 14 mov %eax,0x14(%ebp) -f0100f2f: e9 36 01 00 00 jmp f010106a -f0100f34: 89 cf mov %ecx,%edi -f0100f36: eb ed jmp f0100f25 - if (lflag >= 2) -f0100f38: 83 f9 01 cmp $0x1,%ecx -f0100f3b: 7f 1f jg f0100f5c - else if (lflag) -f0100f3d: 85 c9 test %ecx,%ecx -f0100f3f: 74 67 je f0100fa8 - return va_arg(*ap, long); -f0100f41: 8b 45 14 mov 0x14(%ebp),%eax -f0100f44: 8b 00 mov (%eax),%eax -f0100f46: 89 45 d8 mov %eax,-0x28(%ebp) -f0100f49: 89 c1 mov %eax,%ecx -f0100f4b: c1 f9 1f sar $0x1f,%ecx -f0100f4e: 89 4d dc mov %ecx,-0x24(%ebp) -f0100f51: 8b 45 14 mov 0x14(%ebp),%eax -f0100f54: 8d 40 04 lea 0x4(%eax),%eax -f0100f57: 89 45 14 mov %eax,0x14(%ebp) -f0100f5a: eb 17 jmp f0100f73 - return va_arg(*ap, long long); -f0100f5c: 8b 45 14 mov 0x14(%ebp),%eax -f0100f5f: 8b 50 04 mov 0x4(%eax),%edx -f0100f62: 8b 00 mov (%eax),%eax -f0100f64: 89 45 d8 mov %eax,-0x28(%ebp) -f0100f67: 89 55 dc mov %edx,-0x24(%ebp) -f0100f6a: 8b 45 14 mov 0x14(%ebp),%eax -f0100f6d: 8d 40 08 lea 0x8(%eax),%eax -f0100f70: 89 45 14 mov %eax,0x14(%ebp) - if ((long long) num < 0) { -f0100f73: 8b 55 d8 mov -0x28(%ebp),%edx -f0100f76: 8b 4d dc mov -0x24(%ebp),%ecx - base = 10; -f0100f79: b8 0a 00 00 00 mov $0xa,%eax - if ((long long) num < 0) { -f0100f7e: 85 c9 test %ecx,%ecx -f0100f80: 0f 89 ca 00 00 00 jns f0101050 - putch('-', putdat); -f0100f86: 83 ec 08 sub $0x8,%esp -f0100f89: 53 push %ebx -f0100f8a: 6a 2d push $0x2d -f0100f8c: ff d6 call *%esi - num = -(long long) num; -f0100f8e: 8b 55 d8 mov -0x28(%ebp),%edx -f0100f91: 8b 4d dc mov -0x24(%ebp),%ecx -f0100f94: f7 da neg %edx -f0100f96: 83 d1 00 adc $0x0,%ecx -f0100f99: f7 d9 neg %ecx -f0100f9b: 83 c4 10 add $0x10,%esp - base = 10; -f0100f9e: b8 0a 00 00 00 mov $0xa,%eax -f0100fa3: e9 a8 00 00 00 jmp f0101050 - return va_arg(*ap, int); -f0100fa8: 8b 45 14 mov 0x14(%ebp),%eax -f0100fab: 8b 00 mov (%eax),%eax -f0100fad: 89 45 d8 mov %eax,-0x28(%ebp) -f0100fb0: 99 cltd -f0100fb1: 89 55 dc mov %edx,-0x24(%ebp) -f0100fb4: 8b 45 14 mov 0x14(%ebp),%eax -f0100fb7: 8d 40 04 lea 0x4(%eax),%eax -f0100fba: 89 45 14 mov %eax,0x14(%ebp) -f0100fbd: eb b4 jmp f0100f73 - if (lflag >= 2) -f0100fbf: 83 f9 01 cmp $0x1,%ecx -f0100fc2: 7f 1b jg f0100fdf - else if (lflag) -f0100fc4: 85 c9 test %ecx,%ecx -f0100fc6: 74 2c je f0100ff4 - return va_arg(*ap, unsigned long); -f0100fc8: 8b 45 14 mov 0x14(%ebp),%eax -f0100fcb: 8b 10 mov (%eax),%edx -f0100fcd: b9 00 00 00 00 mov $0x0,%ecx -f0100fd2: 8d 40 04 lea 0x4(%eax),%eax -f0100fd5: 89 45 14 mov %eax,0x14(%ebp) - base = 10; -f0100fd8: b8 0a 00 00 00 mov $0xa,%eax - return va_arg(*ap, unsigned long); -f0100fdd: eb 71 jmp f0101050 - return va_arg(*ap, unsigned long long); -f0100fdf: 8b 45 14 mov 0x14(%ebp),%eax -f0100fe2: 8b 10 mov (%eax),%edx -f0100fe4: 8b 48 04 mov 0x4(%eax),%ecx -f0100fe7: 8d 40 08 lea 0x8(%eax),%eax -f0100fea: 89 45 14 mov %eax,0x14(%ebp) - base = 10; -f0100fed: b8 0a 00 00 00 mov $0xa,%eax - return va_arg(*ap, unsigned long long); -f0100ff2: eb 5c jmp f0101050 - return va_arg(*ap, unsigned int); -f0100ff4: 8b 45 14 mov 0x14(%ebp),%eax -f0100ff7: 8b 10 mov (%eax),%edx -f0100ff9: b9 00 00 00 00 mov $0x0,%ecx -f0100ffe: 8d 40 04 lea 0x4(%eax),%eax -f0101001: 89 45 14 mov %eax,0x14(%ebp) - base = 10; -f0101004: b8 0a 00 00 00 mov $0xa,%eax - return va_arg(*ap, unsigned int); -f0101009: eb 45 jmp f0101050 - putch('X', putdat); -f010100b: 83 ec 08 sub $0x8,%esp -f010100e: 53 push %ebx -f010100f: 6a 58 push $0x58 -f0101011: ff d6 call *%esi - putch('X', putdat); -f0101013: 83 c4 08 add $0x8,%esp -f0101016: 53 push %ebx -f0101017: 6a 58 push $0x58 -f0101019: ff d6 call *%esi - putch('X', putdat); -f010101b: 83 c4 08 add $0x8,%esp -f010101e: 53 push %ebx -f010101f: 6a 58 push $0x58 -f0101021: ff d6 call *%esi - break; -f0101023: 83 c4 10 add $0x10,%esp -f0101026: eb 42 jmp f010106a - putch('0', putdat); -f0101028: 83 ec 08 sub $0x8,%esp -f010102b: 53 push %ebx -f010102c: 6a 30 push $0x30 -f010102e: ff d6 call *%esi - putch('x', putdat); -f0101030: 83 c4 08 add $0x8,%esp -f0101033: 53 push %ebx -f0101034: 6a 78 push $0x78 -f0101036: ff d6 call *%esi - num = (unsigned long long) -f0101038: 8b 45 14 mov 0x14(%ebp),%eax -f010103b: 8b 10 mov (%eax),%edx -f010103d: b9 00 00 00 00 mov $0x0,%ecx - goto number; -f0101042: 83 c4 10 add $0x10,%esp - (uintptr_t) va_arg(ap, void *); -f0101045: 8d 40 04 lea 0x4(%eax),%eax -f0101048: 89 45 14 mov %eax,0x14(%ebp) - base = 16; -f010104b: b8 10 00 00 00 mov $0x10,%eax - printnum(putch, putdat, num, base, width, padc); -f0101050: 83 ec 0c sub $0xc,%esp -f0101053: 0f be 7d d3 movsbl -0x2d(%ebp),%edi -f0101057: 57 push %edi -f0101058: ff 75 d4 pushl -0x2c(%ebp) -f010105b: 50 push %eax -f010105c: 51 push %ecx -f010105d: 52 push %edx -f010105e: 89 da mov %ebx,%edx -f0101060: 89 f0 mov %esi,%eax -f0101062: e8 a3 fb ff ff call f0100c0a - break; -f0101067: 83 c4 20 add $0x20,%esp - if ((p = va_arg(ap, char *)) == NULL) -f010106a: 8b 7d e4 mov -0x1c(%ebp),%edi - while ((ch = *(unsigned char *) fmt++) != '%') { -f010106d: 83 c7 01 add $0x1,%edi -f0101070: 0f b6 47 ff movzbl -0x1(%edi),%eax -f0101074: 83 f8 25 cmp $0x25,%eax -f0101077: 0f 84 93 fc ff ff je f0100d10 - if (ch == '\0') -f010107d: 85 c0 test %eax,%eax -f010107f: 0f 84 8b 00 00 00 je f0101110 - putch(ch, putdat); -f0101085: 83 ec 08 sub $0x8,%esp -f0101088: 53 push %ebx -f0101089: 50 push %eax -f010108a: ff d6 call *%esi -f010108c: 83 c4 10 add $0x10,%esp -f010108f: eb dc jmp f010106d - if (lflag >= 2) -f0101091: 83 f9 01 cmp $0x1,%ecx -f0101094: 7f 1b jg f01010b1 - else if (lflag) -f0101096: 85 c9 test %ecx,%ecx -f0101098: 74 2c je f01010c6 - return va_arg(*ap, unsigned long); -f010109a: 8b 45 14 mov 0x14(%ebp),%eax -f010109d: 8b 10 mov (%eax),%edx -f010109f: b9 00 00 00 00 mov $0x0,%ecx -f01010a4: 8d 40 04 lea 0x4(%eax),%eax -f01010a7: 89 45 14 mov %eax,0x14(%ebp) - base = 16; -f01010aa: b8 10 00 00 00 mov $0x10,%eax - return va_arg(*ap, unsigned long); -f01010af: eb 9f jmp f0101050 - return va_arg(*ap, unsigned long long); -f01010b1: 8b 45 14 mov 0x14(%ebp),%eax -f01010b4: 8b 10 mov (%eax),%edx -f01010b6: 8b 48 04 mov 0x4(%eax),%ecx -f01010b9: 8d 40 08 lea 0x8(%eax),%eax -f01010bc: 89 45 14 mov %eax,0x14(%ebp) - base = 16; -f01010bf: b8 10 00 00 00 mov $0x10,%eax - return va_arg(*ap, unsigned long long); -f01010c4: eb 8a jmp f0101050 - return va_arg(*ap, unsigned int); -f01010c6: 8b 45 14 mov 0x14(%ebp),%eax -f01010c9: 8b 10 mov (%eax),%edx -f01010cb: b9 00 00 00 00 mov $0x0,%ecx -f01010d0: 8d 40 04 lea 0x4(%eax),%eax -f01010d3: 89 45 14 mov %eax,0x14(%ebp) - base = 16; -f01010d6: b8 10 00 00 00 mov $0x10,%eax - return va_arg(*ap, unsigned int); -f01010db: e9 70 ff ff ff jmp f0101050 - putch(ch, putdat); -f01010e0: 83 ec 08 sub $0x8,%esp -f01010e3: 53 push %ebx -f01010e4: 6a 25 push $0x25 -f01010e6: ff d6 call *%esi - break; -f01010e8: 83 c4 10 add $0x10,%esp -f01010eb: e9 7a ff ff ff jmp f010106a - putch('%', putdat); -f01010f0: 83 ec 08 sub $0x8,%esp -f01010f3: 53 push %ebx -f01010f4: 6a 25 push $0x25 -f01010f6: ff d6 call *%esi - for (fmt--; fmt[-1] != '%'; fmt--) -f01010f8: 83 c4 10 add $0x10,%esp -f01010fb: 89 f8 mov %edi,%eax -f01010fd: 80 78 ff 25 cmpb $0x25,-0x1(%eax) -f0101101: 74 05 je f0101108 -f0101103: 83 e8 01 sub $0x1,%eax -f0101106: eb f5 jmp f01010fd -f0101108: 89 45 e4 mov %eax,-0x1c(%ebp) -f010110b: e9 5a ff ff ff jmp f010106a -} -f0101110: 8d 65 f4 lea -0xc(%ebp),%esp -f0101113: 5b pop %ebx -f0101114: 5e pop %esi -f0101115: 5f pop %edi -f0101116: 5d pop %ebp -f0101117: c3 ret - -f0101118 : - -int -vsnprintf(char *buf, int n, const char *fmt, va_list ap) -{ -f0101118: f3 0f 1e fb endbr32 -f010111c: 55 push %ebp -f010111d: 89 e5 mov %esp,%ebp -f010111f: 83 ec 18 sub $0x18,%esp -f0101122: 8b 45 08 mov 0x8(%ebp),%eax -f0101125: 8b 55 0c mov 0xc(%ebp),%edx - struct sprintbuf b = {buf, buf+n-1, 0}; -f0101128: 89 45 ec mov %eax,-0x14(%ebp) -f010112b: 8d 4c 10 ff lea -0x1(%eax,%edx,1),%ecx -f010112f: 89 4d f0 mov %ecx,-0x10(%ebp) -f0101132: c7 45 f4 00 00 00 00 movl $0x0,-0xc(%ebp) - - if (buf == NULL || n < 1) -f0101139: 85 c0 test %eax,%eax -f010113b: 74 26 je f0101163 -f010113d: 85 d2 test %edx,%edx -f010113f: 7e 22 jle f0101163 - return -E_INVAL; - - // print the string to the buffer - vprintfmt((void*)sprintputch, &b, fmt, ap); -f0101141: ff 75 14 pushl 0x14(%ebp) -f0101144: ff 75 10 pushl 0x10(%ebp) -f0101147: 8d 45 ec lea -0x14(%ebp),%eax -f010114a: 50 push %eax -f010114b: 68 b3 0c 10 f0 push $0xf0100cb3 -f0101150: e8 a0 fb ff ff call f0100cf5 - - // null terminate the buffer - *b.buf = '\0'; -f0101155: 8b 45 ec mov -0x14(%ebp),%eax -f0101158: c6 00 00 movb $0x0,(%eax) - - return b.cnt; -f010115b: 8b 45 f4 mov -0xc(%ebp),%eax -f010115e: 83 c4 10 add $0x10,%esp -} -f0101161: c9 leave -f0101162: c3 ret - return -E_INVAL; -f0101163: b8 fd ff ff ff mov $0xfffffffd,%eax -f0101168: eb f7 jmp f0101161 - -f010116a : - -int -snprintf(char *buf, int n, const char *fmt, ...) -{ -f010116a: f3 0f 1e fb endbr32 -f010116e: 55 push %ebp -f010116f: 89 e5 mov %esp,%ebp -f0101171: 83 ec 08 sub $0x8,%esp - va_list ap; - int rc; - - va_start(ap, fmt); -f0101174: 8d 45 14 lea 0x14(%ebp),%eax - rc = vsnprintf(buf, n, fmt, ap); -f0101177: 50 push %eax -f0101178: ff 75 10 pushl 0x10(%ebp) -f010117b: ff 75 0c pushl 0xc(%ebp) -f010117e: ff 75 08 pushl 0x8(%ebp) -f0101181: e8 92 ff ff ff call f0101118 - va_end(ap); - - return rc; -} -f0101186: c9 leave -f0101187: c3 ret - -f0101188 : -#define BUFLEN 1024 -static char buf[BUFLEN]; - -char * -readline(const char *prompt) -{ -f0101188: f3 0f 1e fb endbr32 -f010118c: 55 push %ebp -f010118d: 89 e5 mov %esp,%ebp -f010118f: 57 push %edi -f0101190: 56 push %esi -f0101191: 53 push %ebx -f0101192: 83 ec 0c sub $0xc,%esp -f0101195: 8b 45 08 mov 0x8(%ebp),%eax - int i, c, echoing; - - if (prompt != NULL) -f0101198: 85 c0 test %eax,%eax -f010119a: 74 11 je f01011ad - cprintf("%s", prompt); -f010119c: 83 ec 08 sub $0x8,%esp -f010119f: 50 push %eax -f01011a0: 68 c2 1d 10 f0 push $0xf0101dc2 -f01011a5: e8 7d f7 ff ff call f0100927 -f01011aa: 83 c4 10 add $0x10,%esp - - i = 0; - echoing = iscons(0); -f01011ad: 83 ec 0c sub $0xc,%esp -f01011b0: 6a 00 push $0x0 -f01011b2: e8 f1 f4 ff ff call f01006a8 -f01011b7: 89 c7 mov %eax,%edi -f01011b9: 83 c4 10 add $0x10,%esp - i = 0; -f01011bc: be 00 00 00 00 mov $0x0,%esi -f01011c1: eb 4b jmp f010120e - while (1) { - c = getchar(); - if (c < 0) { - cprintf("read error: %e\n", c); -f01011c3: 83 ec 08 sub $0x8,%esp -f01011c6: 50 push %eax -f01011c7: 68 a4 1f 10 f0 push $0xf0101fa4 -f01011cc: e8 56 f7 ff ff call f0100927 - return NULL; -f01011d1: 83 c4 10 add $0x10,%esp -f01011d4: b8 00 00 00 00 mov $0x0,%eax - cputchar('\n'); - buf[i] = 0; - return buf; - } - } -} -f01011d9: 8d 65 f4 lea -0xc(%ebp),%esp -f01011dc: 5b pop %ebx -f01011dd: 5e pop %esi -f01011de: 5f pop %edi -f01011df: 5d pop %ebp -f01011e0: c3 ret - if (echoing) -f01011e1: 85 ff test %edi,%edi -f01011e3: 75 05 jne f01011ea - i--; -f01011e5: 83 ee 01 sub $0x1,%esi -f01011e8: eb 24 jmp f010120e - cputchar('\b'); -f01011ea: 83 ec 0c sub $0xc,%esp -f01011ed: 6a 08 push $0x8 -f01011ef: e8 8b f4 ff ff call f010067f -f01011f4: 83 c4 10 add $0x10,%esp -f01011f7: eb ec jmp f01011e5 - cputchar(c); -f01011f9: 83 ec 0c sub $0xc,%esp -f01011fc: 53 push %ebx -f01011fd: e8 7d f4 ff ff call f010067f -f0101202: 83 c4 10 add $0x10,%esp - buf[i++] = c; -f0101205: 88 9e 40 25 11 f0 mov %bl,-0xfeedac0(%esi) -f010120b: 8d 76 01 lea 0x1(%esi),%esi - c = getchar(); -f010120e: e8 80 f4 ff ff call f0100693 -f0101213: 89 c3 mov %eax,%ebx - if (c < 0) { -f0101215: 85 c0 test %eax,%eax -f0101217: 78 aa js f01011c3 - } else if ((c == '\b' || c == '\x7f') && i > 0) { -f0101219: 83 f8 08 cmp $0x8,%eax -f010121c: 0f 94 c2 sete %dl -f010121f: 83 f8 7f cmp $0x7f,%eax -f0101222: 0f 94 c0 sete %al -f0101225: 08 c2 or %al,%dl -f0101227: 74 04 je f010122d -f0101229: 85 f6 test %esi,%esi -f010122b: 7f b4 jg f01011e1 - } else if (c >= ' ' && i < BUFLEN-1) { -f010122d: 83 fb 1f cmp $0x1f,%ebx -f0101230: 7e 0e jle f0101240 -f0101232: 81 fe fe 03 00 00 cmp $0x3fe,%esi -f0101238: 7f 06 jg f0101240 - if (echoing) -f010123a: 85 ff test %edi,%edi -f010123c: 74 c7 je f0101205 -f010123e: eb b9 jmp f01011f9 - } else if (c == '\n' || c == '\r') { -f0101240: 83 fb 0a cmp $0xa,%ebx -f0101243: 74 05 je f010124a -f0101245: 83 fb 0d cmp $0xd,%ebx -f0101248: 75 c4 jne f010120e - if (echoing) -f010124a: 85 ff test %edi,%edi -f010124c: 75 11 jne f010125f - buf[i] = 0; -f010124e: c6 86 40 25 11 f0 00 movb $0x0,-0xfeedac0(%esi) - return buf; -f0101255: b8 40 25 11 f0 mov $0xf0112540,%eax -f010125a: e9 7a ff ff ff jmp f01011d9 - cputchar('\n'); -f010125f: 83 ec 0c sub $0xc,%esp -f0101262: 6a 0a push $0xa -f0101264: e8 16 f4 ff ff call f010067f -f0101269: 83 c4 10 add $0x10,%esp -f010126c: eb e0 jmp f010124e - -f010126e : -// Primespipe runs 3x faster this way. -#define ASM 1 - -int -strlen(const char *s) -{ -f010126e: f3 0f 1e fb endbr32 -f0101272: 55 push %ebp -f0101273: 89 e5 mov %esp,%ebp -f0101275: 8b 55 08 mov 0x8(%ebp),%edx - int n; - - for (n = 0; *s != '\0'; s++) -f0101278: b8 00 00 00 00 mov $0x0,%eax -f010127d: 80 3c 02 00 cmpb $0x0,(%edx,%eax,1) -f0101281: 74 05 je f0101288 - n++; -f0101283: 83 c0 01 add $0x1,%eax -f0101286: eb f5 jmp f010127d - return n; -} -f0101288: 5d pop %ebp -f0101289: c3 ret - -f010128a : - -int -strnlen(const char *s, size_t size) -{ -f010128a: f3 0f 1e fb endbr32 -f010128e: 55 push %ebp -f010128f: 89 e5 mov %esp,%ebp -f0101291: 8b 4d 08 mov 0x8(%ebp),%ecx -f0101294: 8b 55 0c mov 0xc(%ebp),%edx - int n; - - for (n = 0; size > 0 && *s != '\0'; s++, size--) -f0101297: b8 00 00 00 00 mov $0x0,%eax -f010129c: 39 d0 cmp %edx,%eax -f010129e: 74 0d je f01012ad -f01012a0: 80 3c 01 00 cmpb $0x0,(%ecx,%eax,1) -f01012a4: 74 05 je f01012ab - n++; -f01012a6: 83 c0 01 add $0x1,%eax -f01012a9: eb f1 jmp f010129c -f01012ab: 89 c2 mov %eax,%edx - return n; -} -f01012ad: 89 d0 mov %edx,%eax -f01012af: 5d pop %ebp -f01012b0: c3 ret - -f01012b1 : - -char * -strcpy(char *dst, const char *src) -{ -f01012b1: f3 0f 1e fb endbr32 -f01012b5: 55 push %ebp -f01012b6: 89 e5 mov %esp,%ebp -f01012b8: 53 push %ebx -f01012b9: 8b 4d 08 mov 0x8(%ebp),%ecx -f01012bc: 8b 5d 0c mov 0xc(%ebp),%ebx - char *ret; - - ret = dst; - while ((*dst++ = *src++) != '\0') -f01012bf: b8 00 00 00 00 mov $0x0,%eax -f01012c4: 0f b6 14 03 movzbl (%ebx,%eax,1),%edx -f01012c8: 88 14 01 mov %dl,(%ecx,%eax,1) -f01012cb: 83 c0 01 add $0x1,%eax -f01012ce: 84 d2 test %dl,%dl -f01012d0: 75 f2 jne f01012c4 - /* do nothing */; - return ret; -} -f01012d2: 89 c8 mov %ecx,%eax -f01012d4: 5b pop %ebx -f01012d5: 5d pop %ebp -f01012d6: c3 ret - -f01012d7 : - -char * -strcat(char *dst, const char *src) -{ -f01012d7: f3 0f 1e fb endbr32 -f01012db: 55 push %ebp -f01012dc: 89 e5 mov %esp,%ebp -f01012de: 53 push %ebx -f01012df: 83 ec 10 sub $0x10,%esp -f01012e2: 8b 5d 08 mov 0x8(%ebp),%ebx - int len = strlen(dst); -f01012e5: 53 push %ebx -f01012e6: e8 83 ff ff ff call f010126e -f01012eb: 83 c4 08 add $0x8,%esp - strcpy(dst + len, src); -f01012ee: ff 75 0c pushl 0xc(%ebp) -f01012f1: 01 d8 add %ebx,%eax -f01012f3: 50 push %eax -f01012f4: e8 b8 ff ff ff call f01012b1 - return dst; -} -f01012f9: 89 d8 mov %ebx,%eax -f01012fb: 8b 5d fc mov -0x4(%ebp),%ebx -f01012fe: c9 leave -f01012ff: c3 ret - -f0101300 : - -char * -strncpy(char *dst, const char *src, size_t size) { -f0101300: f3 0f 1e fb endbr32 -f0101304: 55 push %ebp -f0101305: 89 e5 mov %esp,%ebp -f0101307: 56 push %esi -f0101308: 53 push %ebx -f0101309: 8b 75 08 mov 0x8(%ebp),%esi -f010130c: 8b 55 0c mov 0xc(%ebp),%edx -f010130f: 89 f3 mov %esi,%ebx -f0101311: 03 5d 10 add 0x10(%ebp),%ebx - size_t i; - char *ret; - - ret = dst; - for (i = 0; i < size; i++) { -f0101314: 89 f0 mov %esi,%eax -f0101316: 39 d8 cmp %ebx,%eax -f0101318: 74 11 je f010132b - *dst++ = *src; -f010131a: 83 c0 01 add $0x1,%eax -f010131d: 0f b6 0a movzbl (%edx),%ecx -f0101320: 88 48 ff mov %cl,-0x1(%eax) - // If strlen(src) < size, null-pad 'dst' out to 'size' chars - if (*src != '\0') - src++; -f0101323: 80 f9 01 cmp $0x1,%cl -f0101326: 83 da ff sbb $0xffffffff,%edx -f0101329: eb eb jmp f0101316 - } - return ret; -} -f010132b: 89 f0 mov %esi,%eax -f010132d: 5b pop %ebx -f010132e: 5e pop %esi -f010132f: 5d pop %ebp -f0101330: c3 ret - -f0101331 : - -size_t -strlcpy(char *dst, const char *src, size_t size) -{ -f0101331: f3 0f 1e fb endbr32 -f0101335: 55 push %ebp -f0101336: 89 e5 mov %esp,%ebp -f0101338: 56 push %esi -f0101339: 53 push %ebx -f010133a: 8b 75 08 mov 0x8(%ebp),%esi -f010133d: 8b 4d 0c mov 0xc(%ebp),%ecx -f0101340: 8b 55 10 mov 0x10(%ebp),%edx -f0101343: 89 f0 mov %esi,%eax - char *dst_in; - - dst_in = dst; - if (size > 0) { -f0101345: 85 d2 test %edx,%edx -f0101347: 74 21 je f010136a -f0101349: 8d 44 16 ff lea -0x1(%esi,%edx,1),%eax -f010134d: 89 f2 mov %esi,%edx - while (--size > 0 && *src != '\0') -f010134f: 39 c2 cmp %eax,%edx -f0101351: 74 14 je f0101367 -f0101353: 0f b6 19 movzbl (%ecx),%ebx -f0101356: 84 db test %bl,%bl -f0101358: 74 0b je f0101365 - *dst++ = *src++; -f010135a: 83 c1 01 add $0x1,%ecx -f010135d: 83 c2 01 add $0x1,%edx -f0101360: 88 5a ff mov %bl,-0x1(%edx) -f0101363: eb ea jmp f010134f -f0101365: 89 d0 mov %edx,%eax - *dst = '\0'; -f0101367: c6 00 00 movb $0x0,(%eax) - } - return dst - dst_in; -f010136a: 29 f0 sub %esi,%eax -} -f010136c: 5b pop %ebx -f010136d: 5e pop %esi -f010136e: 5d pop %ebp -f010136f: c3 ret - -f0101370 : - -int -strcmp(const char *p, const char *q) -{ -f0101370: f3 0f 1e fb endbr32 -f0101374: 55 push %ebp -f0101375: 89 e5 mov %esp,%ebp -f0101377: 8b 4d 08 mov 0x8(%ebp),%ecx -f010137a: 8b 55 0c mov 0xc(%ebp),%edx - while (*p && *p == *q) -f010137d: 0f b6 01 movzbl (%ecx),%eax -f0101380: 84 c0 test %al,%al -f0101382: 74 0c je f0101390 -f0101384: 3a 02 cmp (%edx),%al -f0101386: 75 08 jne f0101390 - p++, q++; -f0101388: 83 c1 01 add $0x1,%ecx -f010138b: 83 c2 01 add $0x1,%edx -f010138e: eb ed jmp f010137d - return (int) ((unsigned char) *p - (unsigned char) *q); -f0101390: 0f b6 c0 movzbl %al,%eax -f0101393: 0f b6 12 movzbl (%edx),%edx -f0101396: 29 d0 sub %edx,%eax -} -f0101398: 5d pop %ebp -f0101399: c3 ret - -f010139a : - -int -strncmp(const char *p, const char *q, size_t n) -{ -f010139a: f3 0f 1e fb endbr32 -f010139e: 55 push %ebp -f010139f: 89 e5 mov %esp,%ebp -f01013a1: 53 push %ebx -f01013a2: 8b 45 08 mov 0x8(%ebp),%eax -f01013a5: 8b 55 0c mov 0xc(%ebp),%edx -f01013a8: 89 c3 mov %eax,%ebx -f01013aa: 03 5d 10 add 0x10(%ebp),%ebx - while (n > 0 && *p && *p == *q) -f01013ad: eb 06 jmp f01013b5 - n--, p++, q++; -f01013af: 83 c0 01 add $0x1,%eax -f01013b2: 83 c2 01 add $0x1,%edx - while (n > 0 && *p && *p == *q) -f01013b5: 39 d8 cmp %ebx,%eax -f01013b7: 74 16 je f01013cf -f01013b9: 0f b6 08 movzbl (%eax),%ecx -f01013bc: 84 c9 test %cl,%cl -f01013be: 74 04 je f01013c4 -f01013c0: 3a 0a cmp (%edx),%cl -f01013c2: 74 eb je f01013af - if (n == 0) - return 0; - else - return (int) ((unsigned char) *p - (unsigned char) *q); -f01013c4: 0f b6 00 movzbl (%eax),%eax -f01013c7: 0f b6 12 movzbl (%edx),%edx -f01013ca: 29 d0 sub %edx,%eax -} -f01013cc: 5b pop %ebx -f01013cd: 5d pop %ebp -f01013ce: c3 ret - return 0; -f01013cf: b8 00 00 00 00 mov $0x0,%eax -f01013d4: eb f6 jmp f01013cc - -f01013d6 : - -// Return a pointer to the first occurrence of 'c' in 's', -// or a null pointer if the string has no 'c'. -char * -strchr(const char *s, char c) -{ -f01013d6: f3 0f 1e fb endbr32 -f01013da: 55 push %ebp -f01013db: 89 e5 mov %esp,%ebp -f01013dd: 8b 45 08 mov 0x8(%ebp),%eax -f01013e0: 0f b6 4d 0c movzbl 0xc(%ebp),%ecx - for (; *s; s++) -f01013e4: 0f b6 10 movzbl (%eax),%edx -f01013e7: 84 d2 test %dl,%dl -f01013e9: 74 09 je f01013f4 - if (*s == c) -f01013eb: 38 ca cmp %cl,%dl -f01013ed: 74 0a je f01013f9 - for (; *s; s++) -f01013ef: 83 c0 01 add $0x1,%eax -f01013f2: eb f0 jmp f01013e4 - return (char *) s; - return 0; -f01013f4: b8 00 00 00 00 mov $0x0,%eax -} -f01013f9: 5d pop %ebp -f01013fa: c3 ret - -f01013fb : - -// Return a pointer to the first occurrence of 'c' in 's', -// or a pointer to the string-ending null character if the string has no 'c'. -char * -strfind(const char *s, char c) -{ -f01013fb: f3 0f 1e fb endbr32 -f01013ff: 55 push %ebp -f0101400: 89 e5 mov %esp,%ebp -f0101402: 8b 45 08 mov 0x8(%ebp),%eax -f0101405: 0f b6 4d 0c movzbl 0xc(%ebp),%ecx - for (; *s; s++) -f0101409: 0f b6 10 movzbl (%eax),%edx - if (*s == c) -f010140c: 38 ca cmp %cl,%dl -f010140e: 74 09 je f0101419 -f0101410: 84 d2 test %dl,%dl -f0101412: 74 05 je f0101419 - for (; *s; s++) -f0101414: 83 c0 01 add $0x1,%eax -f0101417: eb f0 jmp f0101409 - break; - return (char *) s; -} -f0101419: 5d pop %ebp -f010141a: c3 ret - -f010141b : - -#if ASM -void * -memset(void *v, int c, size_t n) -{ -f010141b: f3 0f 1e fb endbr32 -f010141f: 55 push %ebp -f0101420: 89 e5 mov %esp,%ebp -f0101422: 57 push %edi -f0101423: 56 push %esi -f0101424: 53 push %ebx -f0101425: 8b 7d 08 mov 0x8(%ebp),%edi -f0101428: 8b 4d 10 mov 0x10(%ebp),%ecx - char *p; - - if (n == 0) -f010142b: 85 c9 test %ecx,%ecx -f010142d: 74 31 je f0101460 - return v; - if ((int)v%4 == 0 && n%4 == 0) { -f010142f: 89 f8 mov %edi,%eax -f0101431: 09 c8 or %ecx,%eax -f0101433: a8 03 test $0x3,%al -f0101435: 75 23 jne f010145a - c &= 0xFF; -f0101437: 0f b6 55 0c movzbl 0xc(%ebp),%edx - c = (c<<24)|(c<<16)|(c<<8)|c; -f010143b: 89 d3 mov %edx,%ebx -f010143d: c1 e3 08 shl $0x8,%ebx -f0101440: 89 d0 mov %edx,%eax -f0101442: c1 e0 18 shl $0x18,%eax -f0101445: 89 d6 mov %edx,%esi -f0101447: c1 e6 10 shl $0x10,%esi -f010144a: 09 f0 or %esi,%eax -f010144c: 09 c2 or %eax,%edx -f010144e: 09 da or %ebx,%edx - asm volatile("cld; rep stosl\n" - :: "D" (v), "a" (c), "c" (n/4) -f0101450: c1 e9 02 shr $0x2,%ecx - asm volatile("cld; rep stosl\n" -f0101453: 89 d0 mov %edx,%eax -f0101455: fc cld -f0101456: f3 ab rep stos %eax,%es:(%edi) -f0101458: eb 06 jmp f0101460 - : "cc", "memory"); - } else - asm volatile("cld; rep stosb\n" -f010145a: 8b 45 0c mov 0xc(%ebp),%eax -f010145d: fc cld -f010145e: f3 aa rep stos %al,%es:(%edi) - :: "D" (v), "a" (c), "c" (n) - : "cc", "memory"); - return v; -} -f0101460: 89 f8 mov %edi,%eax -f0101462: 5b pop %ebx -f0101463: 5e pop %esi -f0101464: 5f pop %edi -f0101465: 5d pop %ebp -f0101466: c3 ret - -f0101467 : - -void * -memmove(void *dst, const void *src, size_t n) -{ -f0101467: f3 0f 1e fb endbr32 -f010146b: 55 push %ebp -f010146c: 89 e5 mov %esp,%ebp -f010146e: 57 push %edi -f010146f: 56 push %esi -f0101470: 8b 45 08 mov 0x8(%ebp),%eax -f0101473: 8b 75 0c mov 0xc(%ebp),%esi -f0101476: 8b 4d 10 mov 0x10(%ebp),%ecx - const char *s; - char *d; - - s = src; - d = dst; - if (s < d && s + n > d) { -f0101479: 39 c6 cmp %eax,%esi -f010147b: 73 32 jae f01014af -f010147d: 8d 14 0e lea (%esi,%ecx,1),%edx -f0101480: 39 c2 cmp %eax,%edx -f0101482: 76 2b jbe f01014af - s += n; - d += n; -f0101484: 8d 3c 08 lea (%eax,%ecx,1),%edi - if ((int)s%4 == 0 && (int)d%4 == 0 && n%4 == 0) -f0101487: 89 fe mov %edi,%esi -f0101489: 09 ce or %ecx,%esi -f010148b: 09 d6 or %edx,%esi -f010148d: f7 c6 03 00 00 00 test $0x3,%esi -f0101493: 75 0e jne f01014a3 - asm volatile("std; rep movsl\n" - :: "D" (d-4), "S" (s-4), "c" (n/4) : "cc", "memory"); -f0101495: 83 ef 04 sub $0x4,%edi -f0101498: 8d 72 fc lea -0x4(%edx),%esi -f010149b: c1 e9 02 shr $0x2,%ecx - asm volatile("std; rep movsl\n" -f010149e: fd std -f010149f: f3 a5 rep movsl %ds:(%esi),%es:(%edi) -f01014a1: eb 09 jmp f01014ac - else - asm volatile("std; rep movsb\n" - :: "D" (d-1), "S" (s-1), "c" (n) : "cc", "memory"); -f01014a3: 83 ef 01 sub $0x1,%edi -f01014a6: 8d 72 ff lea -0x1(%edx),%esi - asm volatile("std; rep movsb\n" -f01014a9: fd std -f01014aa: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - // Some versions of GCC rely on DF being clear - asm volatile("cld" ::: "cc"); -f01014ac: fc cld -f01014ad: eb 1a jmp f01014c9 - } else { - if ((int)s%4 == 0 && (int)d%4 == 0 && n%4 == 0) -f01014af: 89 c2 mov %eax,%edx -f01014b1: 09 ca or %ecx,%edx -f01014b3: 09 f2 or %esi,%edx -f01014b5: f6 c2 03 test $0x3,%dl -f01014b8: 75 0a jne f01014c4 - asm volatile("cld; rep movsl\n" - :: "D" (d), "S" (s), "c" (n/4) : "cc", "memory"); -f01014ba: c1 e9 02 shr $0x2,%ecx - asm volatile("cld; rep movsl\n" -f01014bd: 89 c7 mov %eax,%edi -f01014bf: fc cld -f01014c0: f3 a5 rep movsl %ds:(%esi),%es:(%edi) -f01014c2: eb 05 jmp f01014c9 - else - asm volatile("cld; rep movsb\n" -f01014c4: 89 c7 mov %eax,%edi -f01014c6: fc cld -f01014c7: f3 a4 rep movsb %ds:(%esi),%es:(%edi) - :: "D" (d), "S" (s), "c" (n) : "cc", "memory"); - } - return dst; -} -f01014c9: 5e pop %esi -f01014ca: 5f pop %edi -f01014cb: 5d pop %ebp -f01014cc: c3 ret - -f01014cd : -} -#endif - -void * -memcpy(void *dst, const void *src, size_t n) -{ -f01014cd: f3 0f 1e fb endbr32 -f01014d1: 55 push %ebp -f01014d2: 89 e5 mov %esp,%ebp -f01014d4: 83 ec 0c sub $0xc,%esp - return memmove(dst, src, n); -f01014d7: ff 75 10 pushl 0x10(%ebp) -f01014da: ff 75 0c pushl 0xc(%ebp) -f01014dd: ff 75 08 pushl 0x8(%ebp) -f01014e0: e8 82 ff ff ff call f0101467 -} -f01014e5: c9 leave -f01014e6: c3 ret - -f01014e7 : - -int -memcmp(const void *v1, const void *v2, size_t n) -{ -f01014e7: f3 0f 1e fb endbr32 -f01014eb: 55 push %ebp -f01014ec: 89 e5 mov %esp,%ebp -f01014ee: 56 push %esi -f01014ef: 53 push %ebx -f01014f0: 8b 45 08 mov 0x8(%ebp),%eax -f01014f3: 8b 55 0c mov 0xc(%ebp),%edx -f01014f6: 89 c6 mov %eax,%esi -f01014f8: 03 75 10 add 0x10(%ebp),%esi - const uint8_t *s1 = (const uint8_t *) v1; - const uint8_t *s2 = (const uint8_t *) v2; - - while (n-- > 0) { -f01014fb: 39 f0 cmp %esi,%eax -f01014fd: 74 1c je f010151b - if (*s1 != *s2) -f01014ff: 0f b6 08 movzbl (%eax),%ecx -f0101502: 0f b6 1a movzbl (%edx),%ebx -f0101505: 38 d9 cmp %bl,%cl -f0101507: 75 08 jne f0101511 - return (int) *s1 - (int) *s2; - s1++, s2++; -f0101509: 83 c0 01 add $0x1,%eax -f010150c: 83 c2 01 add $0x1,%edx -f010150f: eb ea jmp f01014fb - return (int) *s1 - (int) *s2; -f0101511: 0f b6 c1 movzbl %cl,%eax -f0101514: 0f b6 db movzbl %bl,%ebx -f0101517: 29 d8 sub %ebx,%eax -f0101519: eb 05 jmp f0101520 - } - - return 0; -f010151b: b8 00 00 00 00 mov $0x0,%eax -} -f0101520: 5b pop %ebx -f0101521: 5e pop %esi -f0101522: 5d pop %ebp -f0101523: c3 ret - -f0101524 : - -void * -memfind(const void *s, int c, size_t n) -{ -f0101524: f3 0f 1e fb endbr32 -f0101528: 55 push %ebp -f0101529: 89 e5 mov %esp,%ebp -f010152b: 8b 45 08 mov 0x8(%ebp),%eax -f010152e: 8b 4d 0c mov 0xc(%ebp),%ecx - const void *ends = (const char *) s + n; -f0101531: 89 c2 mov %eax,%edx -f0101533: 03 55 10 add 0x10(%ebp),%edx - for (; s < ends; s++) -f0101536: 39 d0 cmp %edx,%eax -f0101538: 73 09 jae f0101543 - if (*(const unsigned char *) s == (unsigned char) c) -f010153a: 38 08 cmp %cl,(%eax) -f010153c: 74 05 je f0101543 - for (; s < ends; s++) -f010153e: 83 c0 01 add $0x1,%eax -f0101541: eb f3 jmp f0101536 - break; - return (void *) s; -} -f0101543: 5d pop %ebp -f0101544: c3 ret - -f0101545 : - -long -strtol(const char *s, char **endptr, int base) -{ -f0101545: f3 0f 1e fb endbr32 -f0101549: 55 push %ebp -f010154a: 89 e5 mov %esp,%ebp -f010154c: 57 push %edi -f010154d: 56 push %esi -f010154e: 53 push %ebx -f010154f: 8b 4d 08 mov 0x8(%ebp),%ecx -f0101552: 8b 5d 10 mov 0x10(%ebp),%ebx - int neg = 0; - long val = 0; - - // gobble initial whitespace - while (*s == ' ' || *s == '\t') -f0101555: eb 03 jmp f010155a - s++; -f0101557: 83 c1 01 add $0x1,%ecx - while (*s == ' ' || *s == '\t') -f010155a: 0f b6 01 movzbl (%ecx),%eax -f010155d: 3c 20 cmp $0x20,%al -f010155f: 74 f6 je f0101557 -f0101561: 3c 09 cmp $0x9,%al -f0101563: 74 f2 je f0101557 - - // plus/minus sign - if (*s == '+') -f0101565: 3c 2b cmp $0x2b,%al -f0101567: 74 2a je f0101593 - int neg = 0; -f0101569: bf 00 00 00 00 mov $0x0,%edi - s++; - else if (*s == '-') -f010156e: 3c 2d cmp $0x2d,%al -f0101570: 74 2b je f010159d - s++, neg = 1; - - // hex or octal base prefix - if ((base == 0 || base == 16) && (s[0] == '0' && s[1] == 'x')) -f0101572: f7 c3 ef ff ff ff test $0xffffffef,%ebx -f0101578: 75 0f jne f0101589 -f010157a: 80 39 30 cmpb $0x30,(%ecx) -f010157d: 74 28 je f01015a7 - s += 2, base = 16; - else if (base == 0 && s[0] == '0') - s++, base = 8; - else if (base == 0) - base = 10; -f010157f: 85 db test %ebx,%ebx -f0101581: b8 0a 00 00 00 mov $0xa,%eax -f0101586: 0f 44 d8 cmove %eax,%ebx -f0101589: b8 00 00 00 00 mov $0x0,%eax -f010158e: 89 5d 10 mov %ebx,0x10(%ebp) -f0101591: eb 46 jmp f01015d9 - s++; -f0101593: 83 c1 01 add $0x1,%ecx - int neg = 0; -f0101596: bf 00 00 00 00 mov $0x0,%edi -f010159b: eb d5 jmp f0101572 - s++, neg = 1; -f010159d: 83 c1 01 add $0x1,%ecx -f01015a0: bf 01 00 00 00 mov $0x1,%edi -f01015a5: eb cb jmp f0101572 - if ((base == 0 || base == 16) && (s[0] == '0' && s[1] == 'x')) -f01015a7: 80 79 01 78 cmpb $0x78,0x1(%ecx) -f01015ab: 74 0e je f01015bb - else if (base == 0 && s[0] == '0') -f01015ad: 85 db test %ebx,%ebx -f01015af: 75 d8 jne f0101589 - s++, base = 8; -f01015b1: 83 c1 01 add $0x1,%ecx -f01015b4: bb 08 00 00 00 mov $0x8,%ebx -f01015b9: eb ce jmp f0101589 - s += 2, base = 16; -f01015bb: 83 c1 02 add $0x2,%ecx -f01015be: bb 10 00 00 00 mov $0x10,%ebx -f01015c3: eb c4 jmp f0101589 - // digits - while (1) { - int dig; - - if (*s >= '0' && *s <= '9') - dig = *s - '0'; -f01015c5: 0f be d2 movsbl %dl,%edx -f01015c8: 83 ea 30 sub $0x30,%edx - dig = *s - 'a' + 10; - else if (*s >= 'A' && *s <= 'Z') - dig = *s - 'A' + 10; - else - break; - if (dig >= base) -f01015cb: 3b 55 10 cmp 0x10(%ebp),%edx -f01015ce: 7d 3a jge f010160a - break; - s++, val = (val * base) + dig; -f01015d0: 83 c1 01 add $0x1,%ecx -f01015d3: 0f af 45 10 imul 0x10(%ebp),%eax -f01015d7: 01 d0 add %edx,%eax - if (*s >= '0' && *s <= '9') -f01015d9: 0f b6 11 movzbl (%ecx),%edx -f01015dc: 8d 72 d0 lea -0x30(%edx),%esi -f01015df: 89 f3 mov %esi,%ebx -f01015e1: 80 fb 09 cmp $0x9,%bl -f01015e4: 76 df jbe f01015c5 - else if (*s >= 'a' && *s <= 'z') -f01015e6: 8d 72 9f lea -0x61(%edx),%esi -f01015e9: 89 f3 mov %esi,%ebx -f01015eb: 80 fb 19 cmp $0x19,%bl -f01015ee: 77 08 ja f01015f8 - dig = *s - 'a' + 10; -f01015f0: 0f be d2 movsbl %dl,%edx -f01015f3: 83 ea 57 sub $0x57,%edx -f01015f6: eb d3 jmp f01015cb - else if (*s >= 'A' && *s <= 'Z') -f01015f8: 8d 72 bf lea -0x41(%edx),%esi -f01015fb: 89 f3 mov %esi,%ebx -f01015fd: 80 fb 19 cmp $0x19,%bl -f0101600: 77 08 ja f010160a - dig = *s - 'A' + 10; -f0101602: 0f be d2 movsbl %dl,%edx -f0101605: 83 ea 37 sub $0x37,%edx -f0101608: eb c1 jmp f01015cb - // we don't properly detect overflow! - } - - if (endptr) -f010160a: 83 7d 0c 00 cmpl $0x0,0xc(%ebp) -f010160e: 74 05 je f0101615 - *endptr = (char *) s; -f0101610: 8b 75 0c mov 0xc(%ebp),%esi -f0101613: 89 0e mov %ecx,(%esi) - return (neg ? -val : val); -f0101615: 89 c2 mov %eax,%edx -f0101617: f7 da neg %edx -f0101619: 85 ff test %edi,%edi -f010161b: 0f 45 c2 cmovne %edx,%eax -} -f010161e: 5b pop %ebx -f010161f: 5e pop %esi -f0101620: 5f pop %edi -f0101621: 5d pop %ebp -f0101622: c3 ret -f0101623: 66 90 xchg %ax,%ax -f0101625: 66 90 xchg %ax,%ax -f0101627: 66 90 xchg %ax,%ax -f0101629: 66 90 xchg %ax,%ax -f010162b: 66 90 xchg %ax,%ax -f010162d: 66 90 xchg %ax,%ax -f010162f: 90 nop - -f0101630 <__udivdi3>: -f0101630: f3 0f 1e fb endbr32 -f0101634: 55 push %ebp -f0101635: 57 push %edi -f0101636: 56 push %esi -f0101637: 53 push %ebx -f0101638: 83 ec 1c sub $0x1c,%esp -f010163b: 8b 54 24 3c mov 0x3c(%esp),%edx -f010163f: 8b 6c 24 30 mov 0x30(%esp),%ebp -f0101643: 8b 74 24 34 mov 0x34(%esp),%esi -f0101647: 8b 5c 24 38 mov 0x38(%esp),%ebx -f010164b: 85 d2 test %edx,%edx -f010164d: 75 19 jne f0101668 <__udivdi3+0x38> -f010164f: 39 f3 cmp %esi,%ebx -f0101651: 76 4d jbe f01016a0 <__udivdi3+0x70> -f0101653: 31 ff xor %edi,%edi -f0101655: 89 e8 mov %ebp,%eax -f0101657: 89 f2 mov %esi,%edx -f0101659: f7 f3 div %ebx -f010165b: 89 fa mov %edi,%edx -f010165d: 83 c4 1c add $0x1c,%esp -f0101660: 5b pop %ebx -f0101661: 5e pop %esi -f0101662: 5f pop %edi -f0101663: 5d pop %ebp -f0101664: c3 ret -f0101665: 8d 76 00 lea 0x0(%esi),%esi -f0101668: 39 f2 cmp %esi,%edx -f010166a: 76 14 jbe f0101680 <__udivdi3+0x50> -f010166c: 31 ff xor %edi,%edi -f010166e: 31 c0 xor %eax,%eax -f0101670: 89 fa mov %edi,%edx -f0101672: 83 c4 1c add $0x1c,%esp -f0101675: 5b pop %ebx -f0101676: 5e pop %esi -f0101677: 5f pop %edi -f0101678: 5d pop %ebp -f0101679: c3 ret -f010167a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi -f0101680: 0f bd fa bsr %edx,%edi -f0101683: 83 f7 1f xor $0x1f,%edi -f0101686: 75 48 jne f01016d0 <__udivdi3+0xa0> -f0101688: 39 f2 cmp %esi,%edx -f010168a: 72 06 jb f0101692 <__udivdi3+0x62> -f010168c: 31 c0 xor %eax,%eax -f010168e: 39 eb cmp %ebp,%ebx -f0101690: 77 de ja f0101670 <__udivdi3+0x40> -f0101692: b8 01 00 00 00 mov $0x1,%eax -f0101697: eb d7 jmp f0101670 <__udivdi3+0x40> -f0101699: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f01016a0: 89 d9 mov %ebx,%ecx -f01016a2: 85 db test %ebx,%ebx -f01016a4: 75 0b jne f01016b1 <__udivdi3+0x81> -f01016a6: b8 01 00 00 00 mov $0x1,%eax -f01016ab: 31 d2 xor %edx,%edx -f01016ad: f7 f3 div %ebx -f01016af: 89 c1 mov %eax,%ecx -f01016b1: 31 d2 xor %edx,%edx -f01016b3: 89 f0 mov %esi,%eax -f01016b5: f7 f1 div %ecx -f01016b7: 89 c6 mov %eax,%esi -f01016b9: 89 e8 mov %ebp,%eax -f01016bb: 89 f7 mov %esi,%edi -f01016bd: f7 f1 div %ecx -f01016bf: 89 fa mov %edi,%edx -f01016c1: 83 c4 1c add $0x1c,%esp -f01016c4: 5b pop %ebx -f01016c5: 5e pop %esi -f01016c6: 5f pop %edi -f01016c7: 5d pop %ebp -f01016c8: c3 ret -f01016c9: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f01016d0: 89 f9 mov %edi,%ecx -f01016d2: b8 20 00 00 00 mov $0x20,%eax -f01016d7: 29 f8 sub %edi,%eax -f01016d9: d3 e2 shl %cl,%edx -f01016db: 89 54 24 08 mov %edx,0x8(%esp) -f01016df: 89 c1 mov %eax,%ecx -f01016e1: 89 da mov %ebx,%edx -f01016e3: d3 ea shr %cl,%edx -f01016e5: 8b 4c 24 08 mov 0x8(%esp),%ecx -f01016e9: 09 d1 or %edx,%ecx -f01016eb: 89 f2 mov %esi,%edx -f01016ed: 89 4c 24 08 mov %ecx,0x8(%esp) -f01016f1: 89 f9 mov %edi,%ecx -f01016f3: d3 e3 shl %cl,%ebx -f01016f5: 89 c1 mov %eax,%ecx -f01016f7: d3 ea shr %cl,%edx -f01016f9: 89 f9 mov %edi,%ecx -f01016fb: 89 5c 24 0c mov %ebx,0xc(%esp) -f01016ff: 89 eb mov %ebp,%ebx -f0101701: d3 e6 shl %cl,%esi -f0101703: 89 c1 mov %eax,%ecx -f0101705: d3 eb shr %cl,%ebx -f0101707: 09 de or %ebx,%esi -f0101709: 89 f0 mov %esi,%eax -f010170b: f7 74 24 08 divl 0x8(%esp) -f010170f: 89 d6 mov %edx,%esi -f0101711: 89 c3 mov %eax,%ebx -f0101713: f7 64 24 0c mull 0xc(%esp) -f0101717: 39 d6 cmp %edx,%esi -f0101719: 72 15 jb f0101730 <__udivdi3+0x100> -f010171b: 89 f9 mov %edi,%ecx -f010171d: d3 e5 shl %cl,%ebp -f010171f: 39 c5 cmp %eax,%ebp -f0101721: 73 04 jae f0101727 <__udivdi3+0xf7> -f0101723: 39 d6 cmp %edx,%esi -f0101725: 74 09 je f0101730 <__udivdi3+0x100> -f0101727: 89 d8 mov %ebx,%eax -f0101729: 31 ff xor %edi,%edi -f010172b: e9 40 ff ff ff jmp f0101670 <__udivdi3+0x40> -f0101730: 8d 43 ff lea -0x1(%ebx),%eax -f0101733: 31 ff xor %edi,%edi -f0101735: e9 36 ff ff ff jmp f0101670 <__udivdi3+0x40> -f010173a: 66 90 xchg %ax,%ax -f010173c: 66 90 xchg %ax,%ax -f010173e: 66 90 xchg %ax,%ax - -f0101740 <__umoddi3>: -f0101740: f3 0f 1e fb endbr32 -f0101744: 55 push %ebp -f0101745: 57 push %edi -f0101746: 56 push %esi -f0101747: 53 push %ebx -f0101748: 83 ec 1c sub $0x1c,%esp -f010174b: 8b 44 24 3c mov 0x3c(%esp),%eax -f010174f: 8b 74 24 30 mov 0x30(%esp),%esi -f0101753: 8b 5c 24 34 mov 0x34(%esp),%ebx -f0101757: 8b 7c 24 38 mov 0x38(%esp),%edi -f010175b: 85 c0 test %eax,%eax -f010175d: 75 19 jne f0101778 <__umoddi3+0x38> -f010175f: 39 df cmp %ebx,%edi -f0101761: 76 5d jbe f01017c0 <__umoddi3+0x80> -f0101763: 89 f0 mov %esi,%eax -f0101765: 89 da mov %ebx,%edx -f0101767: f7 f7 div %edi -f0101769: 89 d0 mov %edx,%eax -f010176b: 31 d2 xor %edx,%edx -f010176d: 83 c4 1c add $0x1c,%esp -f0101770: 5b pop %ebx -f0101771: 5e pop %esi -f0101772: 5f pop %edi -f0101773: 5d pop %ebp -f0101774: c3 ret -f0101775: 8d 76 00 lea 0x0(%esi),%esi -f0101778: 89 f2 mov %esi,%edx -f010177a: 39 d8 cmp %ebx,%eax -f010177c: 76 12 jbe f0101790 <__umoddi3+0x50> -f010177e: 89 f0 mov %esi,%eax -f0101780: 89 da mov %ebx,%edx -f0101782: 83 c4 1c add $0x1c,%esp -f0101785: 5b pop %ebx -f0101786: 5e pop %esi -f0101787: 5f pop %edi -f0101788: 5d pop %ebp -f0101789: c3 ret -f010178a: 8d b6 00 00 00 00 lea 0x0(%esi),%esi -f0101790: 0f bd e8 bsr %eax,%ebp -f0101793: 83 f5 1f xor $0x1f,%ebp -f0101796: 75 50 jne f01017e8 <__umoddi3+0xa8> -f0101798: 39 d8 cmp %ebx,%eax -f010179a: 0f 82 e0 00 00 00 jb f0101880 <__umoddi3+0x140> -f01017a0: 89 d9 mov %ebx,%ecx -f01017a2: 39 f7 cmp %esi,%edi -f01017a4: 0f 86 d6 00 00 00 jbe f0101880 <__umoddi3+0x140> -f01017aa: 89 d0 mov %edx,%eax -f01017ac: 89 ca mov %ecx,%edx -f01017ae: 83 c4 1c add $0x1c,%esp -f01017b1: 5b pop %ebx -f01017b2: 5e pop %esi -f01017b3: 5f pop %edi -f01017b4: 5d pop %ebp -f01017b5: c3 ret -f01017b6: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f01017bd: 8d 76 00 lea 0x0(%esi),%esi -f01017c0: 89 fd mov %edi,%ebp -f01017c2: 85 ff test %edi,%edi -f01017c4: 75 0b jne f01017d1 <__umoddi3+0x91> -f01017c6: b8 01 00 00 00 mov $0x1,%eax -f01017cb: 31 d2 xor %edx,%edx -f01017cd: f7 f7 div %edi -f01017cf: 89 c5 mov %eax,%ebp -f01017d1: 89 d8 mov %ebx,%eax -f01017d3: 31 d2 xor %edx,%edx -f01017d5: f7 f5 div %ebp -f01017d7: 89 f0 mov %esi,%eax -f01017d9: f7 f5 div %ebp -f01017db: 89 d0 mov %edx,%eax -f01017dd: 31 d2 xor %edx,%edx -f01017df: eb 8c jmp f010176d <__umoddi3+0x2d> -f01017e1: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f01017e8: 89 e9 mov %ebp,%ecx -f01017ea: ba 20 00 00 00 mov $0x20,%edx -f01017ef: 29 ea sub %ebp,%edx -f01017f1: d3 e0 shl %cl,%eax -f01017f3: 89 44 24 08 mov %eax,0x8(%esp) -f01017f7: 89 d1 mov %edx,%ecx -f01017f9: 89 f8 mov %edi,%eax -f01017fb: d3 e8 shr %cl,%eax -f01017fd: 8b 4c 24 08 mov 0x8(%esp),%ecx -f0101801: 89 54 24 04 mov %edx,0x4(%esp) -f0101805: 8b 54 24 04 mov 0x4(%esp),%edx -f0101809: 09 c1 or %eax,%ecx -f010180b: 89 d8 mov %ebx,%eax -f010180d: 89 4c 24 08 mov %ecx,0x8(%esp) -f0101811: 89 e9 mov %ebp,%ecx -f0101813: d3 e7 shl %cl,%edi -f0101815: 89 d1 mov %edx,%ecx -f0101817: d3 e8 shr %cl,%eax -f0101819: 89 e9 mov %ebp,%ecx -f010181b: 89 7c 24 0c mov %edi,0xc(%esp) -f010181f: d3 e3 shl %cl,%ebx -f0101821: 89 c7 mov %eax,%edi -f0101823: 89 d1 mov %edx,%ecx -f0101825: 89 f0 mov %esi,%eax -f0101827: d3 e8 shr %cl,%eax -f0101829: 89 e9 mov %ebp,%ecx -f010182b: 89 fa mov %edi,%edx -f010182d: d3 e6 shl %cl,%esi -f010182f: 09 d8 or %ebx,%eax -f0101831: f7 74 24 08 divl 0x8(%esp) -f0101835: 89 d1 mov %edx,%ecx -f0101837: 89 f3 mov %esi,%ebx -f0101839: f7 64 24 0c mull 0xc(%esp) -f010183d: 89 c6 mov %eax,%esi -f010183f: 89 d7 mov %edx,%edi -f0101841: 39 d1 cmp %edx,%ecx -f0101843: 72 06 jb f010184b <__umoddi3+0x10b> -f0101845: 75 10 jne f0101857 <__umoddi3+0x117> -f0101847: 39 c3 cmp %eax,%ebx -f0101849: 73 0c jae f0101857 <__umoddi3+0x117> -f010184b: 2b 44 24 0c sub 0xc(%esp),%eax -f010184f: 1b 54 24 08 sbb 0x8(%esp),%edx -f0101853: 89 d7 mov %edx,%edi -f0101855: 89 c6 mov %eax,%esi -f0101857: 89 ca mov %ecx,%edx -f0101859: 0f b6 4c 24 04 movzbl 0x4(%esp),%ecx -f010185e: 29 f3 sub %esi,%ebx -f0101860: 19 fa sbb %edi,%edx -f0101862: 89 d0 mov %edx,%eax -f0101864: d3 e0 shl %cl,%eax -f0101866: 89 e9 mov %ebp,%ecx -f0101868: d3 eb shr %cl,%ebx -f010186a: d3 ea shr %cl,%edx -f010186c: 09 d8 or %ebx,%eax -f010186e: 83 c4 1c add $0x1c,%esp -f0101871: 5b pop %ebx -f0101872: 5e pop %esi -f0101873: 5f pop %edi -f0101874: 5d pop %ebp -f0101875: c3 ret -f0101876: 8d b4 26 00 00 00 00 lea 0x0(%esi,%eiz,1),%esi -f010187d: 8d 76 00 lea 0x0(%esi),%esi -f0101880: 29 fe sub %edi,%esi -f0101882: 19 c3 sbb %eax,%ebx -f0101884: 89 f2 mov %esi,%edx -f0101886: 89 d9 mov %ebx,%ecx -f0101888: e9 1d ff ff ff jmp f01017aa <__umoddi3+0x6a> diff --git a/obj/kern/kernel.img b/obj/kern/kernel.img deleted file mode 100644 index 8cfc54c0e2930dfd93e87fdc5f8bcdb5c177654b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5120000 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∨FexaMMlQZT)=bE7rTO9{q3DE^s~NdE*kd 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 z=J=G{GrZ1g=k@cG0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>s)|IH2^2mk;8008;FHbQ~}2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQq zIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n? z4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj! z0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^` zz<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!K zaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB) z95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c z2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*= zfddB)95`^`z<~n?4jede;J|?c2M!!KaNxj!0|yQqIB?*=fddB)95`^`z<~n?4jede z;DC1MfCK;l06@_H*X;;&f(8s2Fkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@ z0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VK zfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5 zV8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM z7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b* z1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd z0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwA zz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEj zFkrxd0RsjM7%*VKfB^#r3>YwAz<>b*1`HT5V8DO@0|pEjFkrxd0RsjM7%*VKfB^#r Q3>YwAz<>b*1`Heq0x(kq;Q#;t diff --git a/obj/kern/kernel.sym b/obj/kern/kernel.sym deleted file mode 100644 index 64b04ef..0000000 --- a/obj/kern/kernel.sym +++ /dev/null @@ -1,80 +0,0 @@ -0010000c T _start -f010000c T entry -f010002f t relocated -f010003e t spin -f0100040 T test_backtrace -f0100098 T i386_init -f01000ee T _panic -f010014b T _warn -f0100189 t serial_proc_data -f01001a7 t cons_intr -f01001e6 t kbd_proc_data -f01002ff t cons_putc -f01004f1 T serial_intr -f0100511 T kbd_intr -f0100527 T cons_getc -f010056d T cons_init -f010067f T cputchar -f0100693 T getchar -f01006a8 T iscons -f01006b2 T mon_help -f01006ee T mon_kerninfo -f0100792 T mon_backtrace -f010079c T monitor -f01008e6 t putch -f01008fd T vcprintf -f0100927 T cprintf -f010093f t stab_binsearch -f0100a34 T debuginfo_eip -f0100c0a t printnum -f0100cb3 t sprintputch -f0100cd4 T printfmt -f0100cf5 T vprintfmt -f0101118 T vsnprintf -f010116a T snprintf -f0101188 T readline -f010126e T strlen -f010128a T strnlen -f01012b1 T strcpy -f01012d7 T strcat -f0101300 T strncpy -f0101331 T strlcpy -f0101370 T strcmp -f010139a T strncmp -f01013d6 T strchr -f01013fb T strfind -f010141b T memset -f0101467 T memmove -f01014cd T memcpy -f01014e7 T memcmp -f0101524 T memfind -f0101545 T strtol -f0101630 T __udivdi3 -f0101740 T __umoddi3 -f010188d T etext -f0101960 r charcode -f0101980 r togglecode -f0101a80 r shiftcode -f0101d64 r commands -f0101f88 r error_string -f0101fb4 R __STAB_BEGIN__ -f010622c R __STAB_END__ -f010622d R __STABSTR_BEGIN__ -f0107bd7 R __STABSTR_END__ -f0108000 D bootstack -f0110000 D bootstacktop -f0110000 D entry_pgdir -f0111000 D entry_pgtable -f0112000 d ctlmap -f0112100 d shiftmap -f0112200 d normalmap -f0112300 B edata -f0112300 b shift.1385 -f0112320 b cons -f0112528 b crt_pos -f011252c b crt_buf -f0112530 b addr_6845 -f0112534 b serial_exists -f0112540 b buf -f0112940 B end -f0112944 B panicstr diff --git a/obj/kern/monitor.o b/obj/kern/monitor.o deleted file mode 100644 index d62b357e2f7a9bf094bfc1d1922e6ff2af7fdff8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8692 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 diff --git a/obj/kern/printf.o b/obj/kern/printf.o deleted file mode 100644 index a45b0f7dc38a6ad0689bde207e5cfb303b882aa9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3968 zcma)9U5pb|6h37aU3K{t1;t2XAnfAqFf*OD(^ivJx{D?#sE}x)mf3c?ZRlU7)6FhH z-9StvO7xi*iD=@R@rhR=8bhM-MSb>#ga;oa?2D0P{m%WFUf2*l$({S%bH01-IrrS@ z+z&8zi$H3cg4)oscH!!F4h03c0z0UDv1HXA6zBxArXRq>e7WfkI z7}_Tak1Jc59#M#>OylBgvZ73zX*>GQ4L{!)e!g4hhuKof^r+$IG1`{schWxKpD=d? z{VLutHeKb1l0VQNK>HmW9sdor7RS$0rri<EbfY-2I<_>UFHL9Me9kZN6D}ohojXTY&0&YR zY&L^kQ=6NV%Te`0kF9WhS+m5~kf$o=pmcW0&B9f^)eY3~P&L9r9;{UB4(3~-JUOZ$ zF!^i}nVWW13)mf(36(i^n{nlARRir<8grgBs_oaVrBT<|QM<{GbEe}ZG1=9-sp8U} zl~r$D5>+{@Hrqi<#pUWszmAHahR}nSXZW4n{fF33Kz?n z!rJ^QyOT69v~pckm-s!&DK3h`Tw8JzHLAjDN02kFBBLCvmE1&&GC=DIYR*$sKFiSh zk~>s$a`sd~kb7~Y*~k`wE4HCWs?dYpYb^JJS}mEtIZ8vXqn&VuLf3De4z-dKluA>} z`HA(q^}1$qc0woX(vNG+F6xquf@lH5#h}t^_IaZ-qEZ>I)B)s#?d}cYYNJ@^0m=*5 z1H^V!@gvL7MKDZ-YOyMRk&AP3TyHB1B2(Ui9wzZ3V!rZp-&ukrf5M3lA39V_Pn?(^ zbmBp}V0o53?F_`odEd1y+q2wBsi#qVD)<|U&kG%X^#tGMuCfkS4%&gnk~;l5rOu3{ zc8`yaeuR6~Q_yi^*~yRD&0`;KcyZIlqd$NlZG0DG8-D{6`~1-UHq+)_cMB;kR3yD5{Dsh>}x7i}D<_W87|#6AG9? zpF;6`9z*#C_xNwXHDvt~8uwSZhu+6FrM3`#$vt#w=A)lc{Yll6)n9JM!94mnl6^y? zC~R4AxD=CB3*vyR`F@`)R`%6|U>;PmaNTH!9nd=6IJ9uera`ElQsafr!0JWaUKqv8 za(dXP)T5vsB82}fd%)y#@_?Gb|A)jqNR8RX!Z$9i_zW6L8he*U&wrzs!)KrGXZzGx zpQZ~Ko1*{3{}!-<<74Tg@f^)N z1KtuFlxSWTV>90d^5x$I&X;fWI$zTl)U?X+LCNPIQv{FSHTGrh%PO4Qn=dHhE^qQy M;N(3vDAD=;3;NM`I{*Lx diff --git a/obj/kern/printfmt.o b/obj/kern/printfmt.o deleted file mode 100644 index d3239f57cc52741ed6c6efb36da46cb7da9731ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10160 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