../../boot/kernel.bin: file format elf32-i386-freebsd Disassembly of section .text: 00100000 <klog>: #include "_krnl.h" #include "bootlog.h" void klog(char *proc, char *entry, KLOGRESULT result, console_t *vtty0) { 100000: 55 push %ebp 100001: 89 e5 mov %esp,%ebp 100003: 57 push %edi 100004: 56 push %esi 100005: 53 push %ebx 100006: 83 ec 0c sub $0xc,%esp 100009: 8b 45 10 mov 0x10(%ebp),%eax 10000c: 8b 5d 14 mov 0x14(%ebp),%ebx unsigned oldattrib; int i = 0; 10000f: 31 f6 xor %esi,%esi int offset = 69; /* -4 for the "[ ]" part, -2 for the ": " part, -1 for space at end, and -4 for the status */ char status[4]; va_list args; args = args; status[0] = '\0'; /** * Save our old color attributes */ oldattrib = vtty0->attrib; if(result == K_KLOG_SUCCESS) 100011: 85 c0 test %eax,%eax 100013: c7 45 f0 45 00 00 00 movl $0x45,0xfffffff0(%ebp) 10001a: 8b 7b 18 mov 0x18(%ebx),%edi 10001d: 0f 84 d5 00 00 00 je 1000f8 <LS_Phys+0xf8> { /** * Successfull initialization of something. * Write "..Ok" then leave */ vtty0->attrib = 8; printf("\b\b\b\b.."); vtty0->attrib = 2; printf("Ok\n"); vtty0->attrib = oldattrib; return; } else if(result == K_KLOG_FAILURE) 100023: 83 f8 02 cmp $0x2,%eax 100026: 0f 84 b8 00 00 00 je 1000e4 <LS_Phys+0xe4> { /** * Unsuccessfull initialization of something. * Write "Fail" then leave */ vtty0->attrib = 4; printf("\b\b\b\bFail\n"); vtty0->attrib = oldattrib; return; } /** * FIXME * * Should "wrap" the line instead */ if(strlen(entry) + 8 > 80) 10002c: 83 ec 0c sub $0xc,%esp 10002f: ff 75 0c pushl 0xc(%ebp) 100032: e8 21 51 00 00 call 105158 <strlen> 100037: 83 c0 08 add $0x8,%eax 10003a: 83 c4 10 add $0x10,%esp 10003d: 83 f8 50 cmp $0x50,%eax 100040: 76 0a jbe 10004c <LS_Phys+0x4c> return; vtty0->attrib = 8; printf("[ "); vtty0->attrib = 15; printf("%s: %s", proc, entry); vtty0->attrib = 8; printf(" ]"); offset -= strlen(proc); offset -= strlen(entry); for(i = 0; i < offset; i++) printf("."); vtty0->attrib = 8; printf("Wait"); vtty0->attrib = oldattrib; } 100042: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 100045: 5b pop %ebx 100046: 5e pop %esi 100047: 5f pop %edi 100048: c9 leave 100049: c3 ret 10004a: 89 f6 mov %esi,%esi 10004c: 83 ec 0c sub $0xc,%esp 10004f: c7 43 18 08 00 00 00 movl $0x8,0x18(%ebx) 100056: 68 b6 51 10 00 push $0x1051b6 10005b: e8 74 50 00 00 call 1050d4 <printf> 100060: 83 c4 0c add $0xc,%esp 100063: c7 43 18 0f 00 00 00 movl $0xf,0x18(%ebx) 10006a: ff 75 0c pushl 0xc(%ebp) 10006d: ff 75 08 pushl 0x8(%ebp) 100070: 68 b9 51 10 00 push $0x1051b9 100075: e8 5a 50 00 00 call 1050d4 <printf> 10007a: c7 43 18 08 00 00 00 movl $0x8,0x18(%ebx) 100081: c7 04 24 c0 51 10 00 movl $0x1051c0,(%esp,1) 100088: e8 47 50 00 00 call 1050d4 <printf> 10008d: 5a pop %edx 10008e: ff 75 08 pushl 0x8(%ebp) 100091: e8 c2 50 00 00 call 105158 <strlen> 100096: 29 45 f0 sub %eax,0xfffffff0(%ebp) 100099: 58 pop %eax 10009a: ff 75 0c pushl 0xc(%ebp) 10009d: e8 b6 50 00 00 call 105158 <strlen> 1000a2: 29 45 f0 sub %eax,0xfffffff0(%ebp) 1000a5: 83 c4 10 add $0x10,%esp 1000a8: 3b 75 f0 cmp 0xfffffff0(%ebp),%esi 1000ab: 7d 16 jge 1000c3 <LS_Phys+0xc3> 1000ad: 8b 75 f0 mov 0xfffffff0(%ebp),%esi 1000b0: 83 ec 0c sub $0xc,%esp 1000b3: 68 1a 63 10 00 push $0x10631a 1000b8: e8 17 50 00 00 call 1050d4 <printf> 1000bd: 83 c4 10 add $0x10,%esp 1000c0: 4e dec %esi 1000c1: 75 ed jne 1000b0 <LS_Phys+0xb0> 1000c3: 83 ec 0c sub $0xc,%esp 1000c6: c7 43 18 08 00 00 00 movl $0x8,0x18(%ebx) 1000cd: 68 c3 51 10 00 push $0x1051c3 1000d2: 89 f6 mov %esi,%esi 1000d4: e8 fb 4f 00 00 call 1050d4 <printf> 1000d9: 89 7b 18 mov %edi,0x18(%ebx) 1000dc: e9 61 ff ff ff jmp 100042 <LS_Phys+0x42> 1000e1: 8d 76 00 lea 0x0(%esi),%esi 1000e4: 83 ec 0c sub $0xc,%esp 1000e7: c7 43 18 04 00 00 00 movl $0x4,0x18(%ebx) 1000ee: 68 c8 51 10 00 push $0x1051c8 1000f3: eb df jmp 1000d4 <LS_Phys+0xd4> 1000f5: 8d 76 00 lea 0x0(%esi),%esi 1000f8: 83 ec 0c sub $0xc,%esp 1000fb: c7 43 18 08 00 00 00 movl $0x8,0x18(%ebx) 100102: 68 d2 51 10 00 push $0x1051d2 100107: e8 c8 4f 00 00 call 1050d4 <printf> 10010c: c7 43 18 02 00 00 00 movl $0x2,0x18(%ebx) 100113: c7 04 24 d9 51 10 00 movl $0x1051d9,(%esp,1) 10011a: eb b8 jmp 1000d4 <LS_Phys+0xd4> 0010011c <dump>: *****************************************************************************/ #define BPERL 16 /* byte/line for dump */ void dump(unsigned char *data, unsigned count) { 10011c: 55 push %ebp 10011d: 89 e5 mov %esp,%ebp 10011f: 57 push %edi 100120: 56 push %esi 100121: 53 push %ebx 100122: 83 ec 0c sub $0xc,%esp 100125: 8b 75 0c mov 0xc(%ebp),%esi unsigned char byte1, byte2; while(count != 0) 100128: 85 f6 test %esi,%esi 10012a: 0f 84 86 00 00 00 je 1001b6 <dump+0x9a> { for(byte1 = 0; byte1 < BPERL; byte1++) 100130: 31 ff xor %edi,%edi 100132: 8b 5d 08 mov 0x8(%ebp),%ebx 100135: 8d 76 00 lea 0x0(%esi),%esi { if(count == 0) 100138: 85 f6 test %esi,%esi 10013a: 74 1d je 100159 <dump+0x3d> break; printf("%02X ", data[byte1]); 10013c: 83 ec 08 sub $0x8,%esp 10013f: 0f b6 03 movzbl (%ebx),%eax 100142: 50 push %eax 100143: 68 dd 51 10 00 push $0x1051dd 100148: 47 inc %edi 100149: e8 86 4f 00 00 call 1050d4 <printf> 10014e: 89 f8 mov %edi,%eax count--; 100150: 4e dec %esi 100151: 83 c4 10 add $0x10,%esp 100154: 43 inc %ebx 100155: 3c 0f cmp $0xf,%al 100157: 76 df jbe 100138 <dump+0x1c> } printf("\t"); 100159: 83 ec 0c sub $0xc,%esp 10015c: 68 e3 51 10 00 push $0x1051e3 100161: e8 6e 4f 00 00 call 1050d4 <printf> for(byte2 = 0; byte2 < byte1; byte2++) 100166: 31 db xor %ebx,%ebx 100168: 89 fa mov %edi,%edx 10016a: 83 c4 10 add $0x10,%esp 10016d: 38 d3 cmp %dl,%bl 10016f: 73 29 jae 10019a <dump+0x7e> 100171: 8d 76 00 lea 0x0(%esi),%esi { if(data[byte2] < ' ') 100174: 0f b6 c3 movzbl %bl,%eax 100177: 8b 55 08 mov 0x8(%ebp),%edx 10017a: 8a 04 10 mov (%eax,%edx,1),%al 10017d: 3c 1f cmp $0x1f,%al 10017f: 77 3f ja 1001c0 <dump+0xa4> printf("%c", '.'); 100181: 83 ec 08 sub $0x8,%esp 100184: 6a 2e push $0x2e 100186: 68 e5 51 10 00 push $0x1051e5 10018b: e8 44 4f 00 00 call 1050d4 <printf> 100190: 43 inc %ebx 100191: 89 f8 mov %edi,%eax else printf("%c", data[byte2]); 100193: 83 c4 10 add $0x10,%esp 100196: 38 c3 cmp %al,%bl 100198: 72 da jb 100174 <dump+0x58> } printf("\n"); 10019a: 83 ec 0c sub $0xc,%esp 10019d: 68 f8 5a 10 00 push $0x105af8 1001a2: e8 2d 4f 00 00 call 1050d4 <printf> data += BPERL; 1001a7: 83 45 08 10 addl $0x10,0x8(%ebp) 1001ab: 83 c4 10 add $0x10,%esp 1001ae: 85 f6 test %esi,%esi 1001b0: 0f 85 7a ff ff ff jne 100130 <dump+0x14> } } 1001b6: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 1001b9: 5b pop %ebx 1001ba: 5e pop %esi 1001bb: 5f pop %edi 1001bc: c9 leave 1001bd: c3 ret 1001be: 89 f6 mov %esi,%esi 1001c0: 83 ec 08 sub $0x8,%esp 1001c3: 0f b6 c0 movzbl %al,%eax 1001c6: 50 push %eax 1001c7: eb bd jmp 100186 <dump+0x6a> 1001c9: 8d 76 00 lea 0x0(%esi),%esi 001001cc <dump_regs>: /***************************************************************************** *****************************************************************************/ void dump_regs(regs_t *regs) { 1001cc: 55 push %ebp 1001cd: 89 e5 mov %esp,%ebp 1001cf: 53 push %ebx 1001d0: 83 ec 10 sub $0x10,%esp 1001d3: 8b 5d 08 mov 0x8(%ebp),%ebx printf("EDI=%08X ESI=%08X EBP=%08X ESP=%08X\n", 1001d6: ff 73 0c pushl 0xc(%ebx) 1001d9: ff 73 08 pushl 0x8(%ebx) 1001dc: ff 73 04 pushl 0x4(%ebx) 1001df: ff 33 pushl (%ebx) 1001e1: 68 00 52 10 00 push $0x105200 1001e6: e8 e9 4e 00 00 call 1050d4 <printf> regs->edi, regs->esi, regs->ebp, regs->esp); printf("EBX=%08X EDX=%08X ECX=%08X EAX=%08X\n", 1001eb: 83 c4 14 add $0x14,%esp 1001ee: ff 73 1c pushl 0x1c(%ebx) 1001f1: ff 73 18 pushl 0x18(%ebx) 1001f4: ff 73 14 pushl 0x14(%ebx) 1001f7: ff 73 10 pushl 0x10(%ebx) 1001fa: 68 40 52 10 00 push $0x105240 1001ff: e8 d0 4e 00 00 call 1050d4 <printf> regs->ebx, regs->edx, regs->ecx, regs->eax); printf(" DS=%08X ES=%08X FS=%08X GS=%08X\n", 100204: 83 c4 14 add $0x14,%esp 100207: ff 73 2c pushl 0x2c(%ebx) 10020a: ff 73 28 pushl 0x28(%ebx) 10020d: ff 73 24 pushl 0x24(%ebx) 100210: ff 73 20 pushl 0x20(%ebx) 100213: 68 80 52 10 00 push $0x105280 100218: e8 b7 4e 00 00 call 1050d4 <printf> regs->ds, regs->es, regs->fs, regs->gs); printf("int=%08X err=%08X EIP=%08X CS=%08X\n", 10021d: 83 c4 14 add $0x14,%esp 100220: ff 73 3c pushl 0x3c(%ebx) 100223: ff 73 38 pushl 0x38(%ebx) 100226: ff 73 34 pushl 0x34(%ebx) 100229: ff 73 30 pushl 0x30(%ebx) 10022c: 68 c0 52 10 00 push $0x1052c0 100231: e8 9e 4e 00 00 call 1050d4 <printf> regs->which_int, regs->err_code, regs->eip, regs->cs); printf("uSP=%08X uSS=%08X\n", regs->user_esp, regs->user_ss); 100236: 83 c4 1c add $0x1c,%esp 100239: ff 73 48 pushl 0x48(%ebx) 10023c: ff 73 44 pushl 0x44(%ebx) 10023f: 68 e8 51 10 00 push $0x1051e8 100244: e8 8b 4e 00 00 call 1050d4 <printf> } 100249: 8b 5d fc mov 0xfffffffc(%ebp),%ebx 10024c: c9 leave 10024d: c3 ret ... 00100250 <keyDown>: * * @return void */ void keyDown(unsigned key) { 100250: 55 push %ebp 100251: 89 e5 mov %esp,%ebp key = key; /* to shut gcc up */ } 100253: c9 leave 100254: c3 ret 100255: 8d 76 00 lea 0x0(%esi),%esi 00100258 <keyUp>: /** * keyUp() * * This function is called when a key is released. * * @param unsigned Which key was released. See keyboard.h * * @return void */ void keyUp(unsigned key) { 100258: 55 push %ebp 100259: 89 e5 mov %esp,%ebp key = key; /* to shut gcc up */ } 10025b: c9 leave 10025c: c3 ret 10025d: 8d 76 00 lea 0x0(%esi),%esi 00100260 <initCommands>: void initCommands(void) { 100260: 55 push %ebp 100261: 89 e5 mov %esp,%ebp 100263: 83 ec 10 sub $0x10,%esp eshCommands[0].minparams = 0; eshCommands[0].maxparams = 0; strcpy(eshCommands[0].command, "dumpheap\0"); 100266: 68 00 53 10 00 push $0x105300 10026b: 68 48 3a 18 00 push $0x183a48 100270: c7 05 40 3a 18 00 00 movl $0x0,0x183a40 100277: 00 00 00 10027a: c7 05 44 3a 18 00 00 movl $0x0,0x183a44 100281: 00 00 00 100284: e8 b3 4e 00 00 call 10513c <strcpy> strcpy(eshCommands[0].params[0], "-h\0"); 100289: 58 pop %eax 10028a: 5a pop %edx 10028b: 68 0a 53 10 00 push $0x10530a 100290: 68 48 3c 18 00 push $0x183c48 100295: e8 a2 4e 00 00 call 10513c <strcpy> strcpy(eshCommands[0].description, "Print listing of heap usage and status.\0"); 10029a: 59 pop %ecx 10029b: 58 pop %eax 10029c: 68 20 53 10 00 push $0x105320 1002a1: 68 48 64 18 00 push $0x186448 1002a6: e8 91 4e 00 00 call 10513c <strcpy> eshCommands[1].minparams = 1; eshCommands[1].maxparams = MAX_PARAMS; strcpy(eshCommands[1].params[0], "-h\0"); 1002ab: 58 pop %eax 1002ac: 5a pop %edx 1002ad: 68 0a 53 10 00 push $0x10530a 1002b2: 68 50 68 18 00 push $0x186850 1002b7: c7 05 48 66 18 00 01 movl $0x1,0x186648 1002be: 00 00 00 1002c1: c7 05 4c 66 18 00 14 movl $0x14,0x18664c 1002c8: 00 00 00 1002cb: e8 6c 4e 00 00 call 10513c <strcpy> strcpy(eshCommands[1].command, "echo\0"); 1002d0: 59 pop %ecx 1002d1: 58 pop %eax 1002d2: 68 49 53 10 00 push $0x105349 1002d7: 68 50 66 18 00 push $0x186650 1002dc: e8 5b 4e 00 00 call 10513c <strcpy> strcpy(eshCommands[1].description, "Echo a line of text to the terminal.\0"); 1002e1: 58 pop %eax 1002e2: 5a pop %edx 1002e3: 68 60 53 10 00 push $0x105360 1002e8: 68 50 90 18 00 push $0x189050 1002ed: e8 4a 4e 00 00 call 10513c <strcpy> /*this will be called with either "help" or "help command" */ eshCommands[2].minparams = 0; eshCommands[2].maxparams = 1; strcpy(eshCommands[2].params[0], "-h\0"); 1002f2: 59 pop %ecx 1002f3: 58 pop %eax 1002f4: 68 0a 53 10 00 push $0x10530a 1002f9: 68 58 94 18 00 push $0x189458 1002fe: c7 05 50 92 18 00 00 movl $0x0,0x189250 100305: 00 00 00 100308: c7 05 54 92 18 00 01 movl $0x1,0x189254 10030f: 00 00 00 100312: e8 25 4e 00 00 call 10513c <strcpy> strcpy(eshCommands[2].command, "help\0"); 100317: 58 pop %eax 100318: 5a pop %edx 100319: 68 86 53 10 00 push $0x105386 10031e: 68 58 92 18 00 push $0x189258 100323: e8 14 4e 00 00 call 10513c <strcpy> strcpy(eshCommands[2].description, "Displays general help menu or help on specific command.\0"); 100328: 59 pop %ecx 100329: 58 pop %eax 10032a: 68 a0 53 10 00 push $0x1053a0 10032f: 68 58 bc 18 00 push $0x18bc58 100334: e8 03 4e 00 00 call 10513c <strcpy> /* -r|-h [time] */ eshCommands[3].minparams = 1; eshCommands[3].maxparams = 2; strcpy(eshCommands[3].command, "shutdown\0"); 100339: 58 pop %eax 10033a: 5a pop %edx 10033b: 68 d9 53 10 00 push $0x1053d9 100340: 68 60 be 18 00 push $0x18be60 100345: c7 05 58 be 18 00 01 movl $0x1,0x18be58 10034c: 00 00 00 10034f: c7 05 5c be 18 00 02 movl $0x2,0x18be5c 100356: 00 00 00 100359: e8 de 4d 00 00 call 10513c <strcpy> strcpy(eshCommands[3].params[0], "-r\0"); 10035e: 59 pop %ecx 10035f: 58 pop %eax 100360: 68 e3 53 10 00 push $0x1053e3 100365: 68 60 c0 18 00 push $0x18c060 10036a: e8 cd 4d 00 00 call 10513c <strcpy> strcpy(eshCommands[3].params[1], "-h\0"); 10036f: 58 pop %eax 100370: 5a pop %edx 100371: 68 0a 53 10 00 push $0x10530a 100376: 68 60 c2 18 00 push $0x18c260 10037b: e8 bc 4d 00 00 call 10513c <strcpy> strcpy(eshCommands[3].params[2], "NOW\0"); 100380: 59 pop %ecx 100381: 58 pop %eax 100382: 68 e7 53 10 00 push $0x1053e7 100387: 68 60 c4 18 00 push $0x18c460 10038c: e8 ab 4d 00 00 call 10513c <strcpy> strcpy(eshCommands[3].description, "Halt or restart the system.\0"); 100391: 58 pop %eax 100392: 5a pop %edx 100393: 68 ec 53 10 00 push $0x1053ec 100398: 68 60 e8 18 00 push $0x18e860 10039d: e8 9a 4d 00 00 call 10513c <strcpy> /* clear screen */ eshCommands[4].minparams = 0; eshCommands[4].maxparams = 0; strcpy(eshCommands[4].params[0], "-h\0"); 1003a2: 59 pop %ecx 1003a3: 58 pop %eax 1003a4: 68 0a 53 10 00 push $0x10530a 1003a9: 68 68 ec 18 00 push $0x18ec68 1003ae: c7 05 60 ea 18 00 00 movl $0x0,0x18ea60 1003b5: 00 00 00 1003b8: c7 05 64 ea 18 00 00 movl $0x0,0x18ea64 1003bf: 00 00 00 1003c2: e8 75 4d 00 00 call 10513c <strcpy> strcpy(eshCommands[4].command, "cls\0"); 1003c7: 58 pop %eax 1003c8: 5a pop %edx 1003c9: 68 09 54 10 00 push $0x105409 1003ce: 68 68 ea 18 00 push $0x18ea68 1003d3: e8 64 4d 00 00 call 10513c <strcpy> strcpy(eshCommands[4].description, "Clears the terminal of all output.\0"); 1003d8: 59 pop %ecx 1003d9: 58 pop %eax 1003da: 68 20 54 10 00 push $0x105420 1003df: 68 68 14 19 00 push $0x191468 1003e4: e8 53 4d 00 00 call 10513c <strcpy> /* print working directory */ eshCommands[5].minparams = 0; eshCommands[5].maxparams = 0; strcpy(eshCommands[5].params[0], "-h\0"); 1003e9: 58 pop %eax 1003ea: 5a pop %edx 1003eb: 68 0a 53 10 00 push $0x10530a 1003f0: 68 70 18 19 00 push $0x191870 1003f5: c7 05 68 16 19 00 00 movl $0x0,0x191668 1003fc: 00 00 00 1003ff: c7 05 6c 16 19 00 00 movl $0x0,0x19166c 100406: 00 00 00 100409: e8 2e 4d 00 00 call 10513c <strcpy> strcpy(eshCommands[5].command, "pwd\0"); 10040e: 59 pop %ecx 10040f: 58 pop %eax 100410: 68 44 54 10 00 push $0x105444 100415: 68 70 16 19 00 push $0x191670 10041a: e8 1d 4d 00 00 call 10513c <strcpy> strcpy(eshCommands[5].description, "Prints the current working directory.\0"); 10041f: 58 pop %eax 100420: 5a pop %edx 100421: 68 60 54 10 00 push $0x105460 100426: 68 70 40 19 00 push $0x194070 10042b: e8 0c 4d 00 00 call 10513c <strcpy> } 100430: c9 leave 100431: c3 ret 100432: 89 f6 mov %esi,%esi 00100434 <mapCommand>: /** * mapCommand() * * Used internally by esh to map a command to it's zero-based * index of commands. * * @param char * the entire line of the command * * @return int index of command entry if found, otherwise -1 */ int mapCommand(char *cmd) { 100434: 55 push %ebp 100435: 89 e5 mov %esp,%ebp 100437: 57 push %edi 100438: 56 push %esi 100439: 53 push %ebx 10043a: 81 ec 0c 02 00 00 sub $0x20c,%esp 100440: 8b 75 08 mov 0x8(%ebp),%esi int i; /* for our loops */ int params; /* number of parameters found for the command */ int previdx; /* previous index */ char cmdName[MAX_LEN]; /* name of the command */ i = 0; 100443: 31 db xor %ebx,%ebx 100445: 8d 76 00 lea 0x0(%esi),%esi previdx = 0; params = 0; /** * Loop while cmd[i] is not a space */ i = 0; for(i = 0; i < (int)strlen(cmd); i++) 100448: 83 ec 0c sub $0xc,%esp 10044b: 56 push %esi 10044c: e8 07 4d 00 00 call 105158 <strlen> 100451: 83 c4 10 add $0x10,%esp 100454: 39 c3 cmp %eax,%ebx 100456: 7d 09 jge 100461 <mapCommand+0x2d> { if(cmd[i] == ' ') 100458: 80 3c 33 20 cmpb $0x20,(%ebx,%esi,1) 10045c: 74 03 je 100461 <mapCommand+0x2d> 10045e: 43 inc %ebx 10045f: eb e7 jmp 100448 <mapCommand+0x14> break; } strncpy(cmdName, cmd, i); 100461: 51 push %ecx 100462: 53 push %ebx 100463: 56 push %esi 100464: 8d bd e8 fd ff ff lea 0xfffffde8(%ebp),%edi 10046a: 57 push %edi 10046b: e8 04 4d 00 00 call 105174 <strncpy> cmdName[i] = '\0'; for(i = 0; i < COMMAND_COUNT; i++) 100470: be 48 3a 18 00 mov $0x183a48,%esi 100475: c6 84 2b e8 fd ff ff movb $0x0,0xfffffde8(%ebx,%ebp,1) 10047c: 00 10047d: 83 c4 10 add $0x10,%esp 100480: 31 db xor %ebx,%ebx 100482: 89 f6 mov %esi,%esi { if(!strcmp(eshCommands[i].command, cmdName)) 100484: 83 ec 08 sub $0x8,%esp 100487: 57 push %edi 100488: 56 push %esi 100489: e8 62 4c 00 00 call 1050f0 <strcmp> 10048e: 83 c4 10 add $0x10,%esp 100491: 85 c0 test %eax,%eax 100493: 89 da mov %ebx,%edx 100495: 74 11 je 1004a8 <mapCommand+0x74> 100497: 43 inc %ebx 100498: 81 c6 08 2c 00 00 add $0x2c08,%esi 10049e: 83 fb 05 cmp $0x5,%ebx 1004a1: 7e e1 jle 100484 <mapCommand+0x50> return i; } return -1; 1004a3: ba ff ff ff ff mov $0xffffffff,%edx } 1004a8: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 1004ab: 5b pop %ebx 1004ac: 5e pop %esi 1004ad: 89 d0 mov %edx,%eax 1004af: 5f pop %edi 1004b0: c9 leave 1004b1: c3 ret 1004b2: 89 f6 mov %esi,%esi 001004b4 <isParam>: /** * isParam() * * Determines if the supplied parameter is valid for the * given command. * * @param int index of command * @param char * command string * * @return bool true if parameter is valid, false otherwise */ bool isParam(int argc, char *argv) { 1004b4: 55 push %ebp 1004b5: 89 e5 mov %esp,%ebp 1004b7: 57 push %edi 1004b8: 56 push %esi 1004b9: 53 push %ebx 1004ba: 83 ec 0c sub $0xc,%esp 1004bd: 8b 55 08 mov 0x8(%ebp),%edx int i; for(i = 0; i < MAX_PARAMS; i++) 1004c0: 8d 04 92 lea (%edx,%edx,4),%eax 1004c3: 8d 04 42 lea (%edx,%eax,2),%eax 1004c6: c1 e0 07 shl $0x7,%eax 1004c9: 01 d0 add %edx,%eax 1004cb: 8b 7d 0c mov 0xc(%ebp),%edi 1004ce: 31 f6 xor %esi,%esi 1004d0: 8d 1c c5 48 3c 18 00 lea 0x183c48(,%eax,8),%ebx 1004d7: 90 nop { if(!strcmp(eshCommands[argc].params[i], argv)) 1004d8: 83 ec 08 sub $0x8,%esp 1004db: 57 push %edi 1004dc: 53 push %ebx 1004dd: e8 0e 4c 00 00 call 1050f0 <strcmp> 1004e2: 83 c4 10 add $0x10,%esp 1004e5: 85 c0 test %eax,%eax 1004e7: ba 01 00 00 00 mov $0x1,%edx 1004ec: 74 0e je 1004fc <isParam+0x48> 1004ee: 46 inc %esi 1004ef: 81 c3 00 02 00 00 add $0x200,%ebx 1004f5: 83 fe 13 cmp $0x13,%esi 1004f8: 7e de jle 1004d8 <isParam+0x24> return true; } return false; 1004fa: 31 d2 xor %edx,%edx } 1004fc: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 1004ff: 5b pop %ebx 100500: 5e pop %esi 100501: 89 d0 mov %edx,%eax 100503: 5f pop %edi 100504: c9 leave 100505: c3 ret 100506: 89 f6 mov %esi,%esi 00100508 <mapParams>: /** * mapParams() * * Maps each parameter to the pars struct * * @param char * Buffer from the command line * @param struct Parameter structure * * @return int Number of command line parameters (arguments) parsed */ int mapParams(char *buf, ESHCURRCOMMAND *pars) { 100508: 55 push %ebp 100509: 89 e5 mov %esp,%ebp 10050b: 57 push %edi 10050c: 56 push %esi 10050d: 53 push %ebx 10050e: 83 ec 18 sub $0x18,%esp 100511: 8b 7d 08 mov 0x8(%ebp),%edi int i; /* for our loops */ int previdx; /* previous index */ int idx; /* current index */ int j; /* loops */ i = 0; j = 0; previdx = 0; pars->count = 0; 100514: 8b 45 0c mov 0xc(%ebp),%eax 100517: c7 00 00 00 00 00 movl $0x0,(%eax) previdx = mapCommand(buf); 10051d: 57 push %edi 10051e: e8 11 ff ff ff call 100434 <mapCommand> 100523: 89 c2 mov %eax,%edx 100525: 31 f6 xor %esi,%esi if(previdx == -1) 100527: 83 c4 10 add $0x10,%esp 10052a: 31 c0 xor %eax,%eax 10052c: 83 fa ff cmp $0xffffffff,%edx 10052f: 0f 84 0d 01 00 00 je 100642 <mapParams+0x13a> return 0; strcpy(pars->param[0], eshCommands[previdx].command); 100535: 8d 04 92 lea (%edx,%edx,4),%eax 100538: 8d 04 42 lea (%edx,%eax,2),%eax 10053b: c1 e0 07 shl $0x7,%eax 10053e: 01 d0 add %edx,%eax 100540: 83 ec 08 sub $0x8,%esp 100543: 8d 04 c5 48 3a 18 00 lea 0x183a48(,%eax,8),%eax 10054a: 50 push %eax 10054b: 8b 45 0c mov 0xc(%ebp),%eax 10054e: 83 c0 04 add $0x4,%eax 100551: 50 push %eax 100552: e8 e5 4b 00 00 call 10513c <strcpy> j++; pars->count++; 100557: 8b 55 0c mov 0xc(%ebp),%edx 10055a: ff 02 incl (%edx) i = 0; idx = 0; for(i = 0; i < (int)strlen(buf); i++) 10055c: 83 c4 10 add $0x10,%esp 10055f: 81 c2 00 02 00 00 add $0x200,%edx 100565: c7 45 ec 01 00 00 00 movl $0x1,0xffffffec(%ebp) 10056c: 89 55 e8 mov %edx,0xffffffe8(%ebp) 10056f: 90 nop 100570: 83 ec 0c sub $0xc,%esp 100573: 57 push %edi 100574: e8 df 4b 00 00 call 105158 <strlen> 100579: 83 c4 10 add $0x10,%esp 10057c: 39 c6 cmp %eax,%esi 10057e: 0f 8d b9 00 00 00 jge 10063d <mapParams+0x135> { /* we have encountered a seperator */ if(buf[i] == ' ') 100584: 80 3c 3e 20 cmpb $0x20,(%esi,%edi,1) 100588: 74 06 je 100590 <mapParams+0x88> 10058a: 46 inc %esi 10058b: eb e3 jmp 100570 <mapParams+0x68> 10058d: 8d 76 00 lea 0x0(%esi),%esi { if(j > MAX_PARAMS) 100590: 83 7d ec 14 cmpl $0x14,0xffffffec(%ebp) 100594: 0f 8f a3 00 00 00 jg 10063d <mapParams+0x135> break; i++; /* skip one space */ 10059a: 46 inc %esi idx = i; 10059b: 89 75 f0 mov %esi,0xfffffff0(%ebp) if(buf[i] == '"') 10059e: 8a 04 3e mov (%esi,%edi,1),%al 1005a1: 3c 22 cmp $0x22,%al 1005a3: 74 57 je 1005fc <mapParams+0xf4> 1005a5: 8d 76 00 lea 0x0(%esi),%esi 1005a8: 3c 20 cmp $0x20,%al 1005aa: 74 16 je 1005c2 <mapParams+0xba> 1005ac: 83 ec 0c sub $0xc,%esp 1005af: 57 push %edi 1005b0: e8 a3 4b 00 00 call 105158 <strlen> 1005b5: 83 c4 10 add $0x10,%esp 1005b8: 39 c6 cmp %eax,%esi 1005ba: 74 06 je 1005c2 <mapParams+0xba> { i++; idx++; while(buf[i] != '"' && i != (int)strlen(buf)) i++; strncpy(pars->param[j], &buf[idx], (i - idx)); pars->param[j][i - idx] = '\0'; idx = i; j++; pars->count++; } else { while(buf[i] != ' ' && i != (int)strlen(buf)) i++; 1005bc: 46 inc %esi 1005bd: 8a 04 3e mov (%esi,%edi,1),%al 1005c0: eb e6 jmp 1005a8 <mapParams+0xa0> strncpy(pars->param[j], &buf[idx], i - idx); 1005c2: 53 push %ebx 1005c3: 89 f3 mov %esi,%ebx 1005c5: 2b 5d f0 sub 0xfffffff0(%ebp),%ebx 1005c8: 8b 55 f0 mov 0xfffffff0(%ebp),%edx 1005cb: 53 push %ebx 1005cc: 8d 04 3a lea (%edx,%edi,1),%eax 1005cf: 50 push %eax 1005d0: 8b 45 e8 mov 0xffffffe8(%ebp),%eax 1005d3: 83 c0 04 add $0x4,%eax 1005d6: 50 push %eax 1005d7: e8 98 4b 00 00 call 105174 <strncpy> pars->param[j][i - idx] = '\0'; 1005dc: 8b 45 e8 mov 0xffffffe8(%ebp),%eax 1005df: c6 44 03 04 00 movb $0x0,0x4(%ebx,%eax,1) i = idx; 1005e4: 8b 75 f0 mov 0xfffffff0(%ebp),%esi j++; 1005e7: 05 00 02 00 00 add $0x200,%eax pars->count++; 1005ec: 8b 55 0c mov 0xc(%ebp),%edx 1005ef: ff 45 ec incl 0xffffffec(%ebp) 1005f2: 89 45 e8 mov %eax,0xffffffe8(%ebp) 1005f5: ff 02 incl (%edx) 1005f7: 83 c4 10 add $0x10,%esp 1005fa: eb 8e jmp 10058a <mapParams+0x82> 1005fc: 46 inc %esi 1005fd: ff 45 f0 incl 0xfffffff0(%ebp) 100600: 80 3c 3e 22 cmpb $0x22,(%esi,%edi,1) 100604: 74 13 je 100619 <mapParams+0x111> 100606: 83 ec 0c sub $0xc,%esp 100609: 57 push %edi 10060a: e8 49 4b 00 00 call 105158 <strlen> 10060f: 83 c4 10 add $0x10,%esp 100612: 39 c6 cmp %eax,%esi 100614: 74 03 je 100619 <mapParams+0x111> 100616: 46 inc %esi 100617: eb e7 jmp 100600 <mapParams+0xf8> 100619: 89 f3 mov %esi,%ebx 10061b: 2b 5d f0 sub 0xfffffff0(%ebp),%ebx 10061e: 8b 55 f0 mov 0xfffffff0(%ebp),%edx 100621: 50 push %eax 100622: 53 push %ebx 100623: 8d 04 3a lea (%edx,%edi,1),%eax 100626: 50 push %eax 100627: 8b 45 e8 mov 0xffffffe8(%ebp),%eax 10062a: 83 c0 04 add $0x4,%eax 10062d: 50 push %eax 10062e: e8 41 4b 00 00 call 105174 <strncpy> 100633: 8b 45 e8 mov 0xffffffe8(%ebp),%eax 100636: c6 44 03 04 00 movb $0x0,0x4(%ebx,%eax,1) 10063b: eb aa jmp 1005e7 <mapParams+0xdf> } } } return pars->count; 10063d: 8b 55 0c mov 0xc(%ebp),%edx 100640: 8b 02 mov (%edx),%eax } 100642: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 100645: 5b pop %ebx 100646: 5e pop %esi 100647: 5f pop %edi 100648: c9 leave 100649: c3 ret 10064a: 89 f6 mov %esi,%esi 0010064c <processCommand>: /** * processCommand() * * This function is called when the user has pressed * the ENTER key. * * @param char * The contents of the current buffer or NULL if empty * @param int Size of the buffer (number of characters) * * @return void */ void processCommand(char *line, int count) { 10064c: 55 push %ebp 10064d: 89 e5 mov %esp,%ebp 10064f: 57 push %edi 100650: 56 push %esi 100651: 53 push %ebx 100652: 81 ec 1c 50 00 00 sub $0x501c,%esp 100658: 8b 75 08 mov 0x8(%ebp),%esi int i; int cmd; /* stores the numeric index of the command */ ESHCURRCOMMAND params; count = count; /* to shut gcc up */ /*for(i = 0; i < MAX_PARAMS; i++) params.param[i][0] = '\0';*/ params.param[0][0] = '\0'; 10065b: c6 85 dc af ff ff 00 movb $0x0,0xffffafdc(%ebp) initCommands(); 100662: e8 f9 fb ff ff call 100260 <initCommands> cmd = mapCommand(line); 100667: 83 ec 0c sub $0xc,%esp 10066a: 56 push %esi 10066b: e8 c4 fd ff ff call 100434 <mapCommand> mapParams(line, ¶ms); 100670: 5f pop %edi 100671: 89 c3 mov %eax,%ebx 100673: 8d bd d8 af ff ff lea 0xffffafd8(%ebp),%edi 100679: 58 pop %eax 10067a: 57 push %edi 10067b: 56 push %esi 10067c: e8 87 fe ff ff call 100508 <mapParams> switch(cmd) 100681: 83 c4 10 add $0x10,%esp 100684: 83 fb 01 cmp $0x1,%ebx 100687: 0f 84 13 01 00 00 je 1007a0 <processCommand+0x154> 10068d: 83 fb 01 cmp $0x1,%ebx 100690: 0f 8e f6 00 00 00 jle 10078c <processCommand+0x140> 100696: 83 fb 02 cmp $0x2,%ebx 100699: 74 4a je 1006e5 <processCommand+0x99> { case 0: /* dumpheap */ dumpheapk(); //testheap(); break; case 1: /* echo */ for(i = 1; i < params.count; i++) printf("%s", params.param[i]); printf("\n"); break; case 2: /* help */ if(params.count == 1) { printf("HybOS EShell Commands:\n"); for(i = 0; i < COMMAND_COUNT; i++) if(strlen(eshCommands[i].command) > 0) printf("%10s %-s\n", eshCommands[i].command, eshCommands[i].description); } else { cmd = mapCommand(params.param[0]); mapParams(params.param[1], ¶ms); //if(isParam(cmd, params.param[1])) if(cmd != -1) { printf("Usage: %s %s\n", params.param[0], eshCommands[cmd].params[1]); } else printf("esh: '%s' not found.\n", params.param[1]); } break; default: if(strlen(params.param[0]) > 0 && strcmp(params.param[0], "help")) 10069b: 83 ec 0c sub $0xc,%esp 10069e: 8d 9d dc af ff ff lea 0xffffafdc(%ebp),%ebx 1006a4: 53 push %ebx 1006a5: e8 ae 4a 00 00 call 105158 <strlen> 1006aa: 83 c4 10 add $0x10,%esp 1006ad: 85 c0 test %eax,%eax 1006af: 74 15 je 1006c6 <processCommand+0x7a> 1006b1: 83 ec 08 sub $0x8,%esp 1006b4: 68 87 54 10 00 push $0x105487 1006b9: 53 push %ebx 1006ba: e8 31 4a 00 00 call 1050f0 <strcmp> 1006bf: 83 c4 10 add $0x10,%esp 1006c2: 85 c0 test %eax,%eax 1006c4: 75 19 jne 1006df <processCommand+0x93> printf("esh: '%s' not found.\n", params.param[0]); else printf("esh: '%s' not found.\n", &line[0]); 1006c6: 83 ec 08 sub $0x8,%esp 1006c9: 56 push %esi 1006ca: 68 8c 54 10 00 push $0x10548c 1006cf: e8 00 4a 00 00 call 1050d4 <printf> 1006d4: 83 c4 10 add $0x10,%esp break; } /*for(i = 0; i < params.count; i++) printf("param[%i]: %s\n", i, params.param[i]);*/ //if(isParam(3, ¶ms.param[1])) // printf("valid parameter\n"); //else // printf("invalid parameter\n"); return; if(!strcmp(line, "dumpheap")) dumpheapk(); else if(!strncmp(line, "echo", 4)) printf("%s\n", line[4] == ' ' ? &line[5] : &line[4]); else if(!strcmp(line, "help")) { printf("HybOS EShell Commands:\n"); printf("dumpheap\tPrint listing of heap usage and status\n"); printf("testheap\tTest the heap and print out results\n"); printf("shutdown -r\tRestart the system.\n"); printf("pwd\t\tPrint the current working directory.\n"); } else if(!strncmp(line, "shutdown", 8)) { if(strlen(line) > 9 && !strncmp(&line[9], "-r", 2)) { printf("\nSystem shutdown from vtty%u\n", get_current_vc()); printf("Restarting..."); //reboot(); } else { if((strlen(line) > 9) && (strlen(&line[9]) > 0)) printf("shutdown: Invalid argument \"%s\".\n", &line[9]); else printf("Usage: shutdown -r\n"); } } else if((strlen(line) > 0) && (!strcmp(line, "cls"))) { printf("\x1B[2J"); } else if((strlen(line) >= 8) && (!strcmp(line, "testheap"))) { //testheap(); } else if((strlen(line) > 0) && (!strcmp(line, "pwd"))) printf("/\n"); else if(strlen(line) > 0) printf("eshell: \"%s\" not found.\n", line); } 1006d7: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 1006da: 5b pop %ebx 1006db: 5e pop %esi 1006dc: 5f pop %edi 1006dd: c9 leave 1006de: c3 ret 1006df: 83 ec 08 sub $0x8,%esp 1006e2: 53 push %ebx 1006e3: eb e5 jmp 1006ca <processCommand+0x7e> 1006e5: 83 bd d8 af ff ff 01 cmpl $0x1,0xffffafd8(%ebp) 1006ec: 74 4a je 100738 <processCommand+0xec> 1006ee: 83 ec 0c sub $0xc,%esp 1006f1: 8d 85 dc af ff ff lea 0xffffafdc(%ebp),%eax 1006f7: 50 push %eax 1006f8: e8 37 fd ff ff call 100434 <mapCommand> 1006fd: 89 c3 mov %eax,%ebx 1006ff: 58 pop %eax 100700: 5a pop %edx 100701: 57 push %edi 100702: 8d b5 dc b1 ff ff lea 0xffffb1dc(%ebp),%esi 100708: 56 push %esi 100709: e8 fa fd ff ff call 100508 <mapParams> 10070e: 83 c4 10 add $0x10,%esp 100711: 83 fb ff cmp $0xffffffff,%ebx 100714: 74 b0 je 1006c6 <processCommand+0x7a> 100716: 50 push %eax 100717: 8d 04 9b lea (%ebx,%ebx,4),%eax 10071a: 8d 04 43 lea (%ebx,%eax,2),%eax 10071d: c1 e0 07 shl $0x7,%eax 100720: 01 d8 add %ebx,%eax 100722: 8d 04 c5 48 3e 18 00 lea 0x183e48(,%eax,8),%eax 100729: 50 push %eax 10072a: 8d 85 dc af ff ff lea 0xffffafdc(%ebp),%eax 100730: 50 push %eax 100731: 68 a2 54 10 00 push $0x1054a2 100736: eb 97 jmp 1006cf <processCommand+0x83> 100738: 83 ec 0c sub $0xc,%esp 10073b: 68 b0 54 10 00 push $0x1054b0 100740: e8 8f 49 00 00 call 1050d4 <printf> 100745: 31 ff xor %edi,%edi 100747: 83 c4 10 add $0x10,%esp 10074a: be 05 00 00 00 mov $0x5,%esi 10074f: 90 nop 100750: 83 ec 0c sub $0xc,%esp 100753: 8d 9f 48 3a 18 00 lea 0x183a48(%edi),%ebx 100759: 53 push %ebx 10075a: e8 f9 49 00 00 call 105158 <strlen> 10075f: 83 c4 10 add $0x10,%esp 100762: 85 c0 test %eax,%eax 100764: 75 0e jne 100774 <processCommand+0x128> 100766: 81 c7 08 2c 00 00 add $0x2c08,%edi 10076c: 4e dec %esi 10076d: 79 e1 jns 100750 <processCommand+0x104> 10076f: e9 63 ff ff ff jmp 1006d7 <processCommand+0x8b> 100774: 8d 87 48 64 18 00 lea 0x186448(%edi),%eax 10077a: 51 push %ecx 10077b: 50 push %eax 10077c: 53 push %ebx 10077d: 68 c8 54 10 00 push $0x1054c8 100782: e8 4d 49 00 00 call 1050d4 <printf> 100787: 83 c4 10 add $0x10,%esp 10078a: eb da jmp 100766 <processCommand+0x11a> 10078c: 85 db test %ebx,%ebx 10078e: 0f 85 07 ff ff ff jne 10069b <processCommand+0x4f> 100794: e8 83 38 00 00 call 10401c <dumpheapk> 100799: e9 39 ff ff ff jmp 1006d7 <processCommand+0x8b> 10079e: 89 f6 mov %esi,%esi 1007a0: 3b 9d d8 af ff ff cmp 0xffffafd8(%ebp),%ebx 1007a6: be 01 00 00 00 mov $0x1,%esi 1007ab: 7d 27 jge 1007d4 <processCommand+0x188> 1007ad: 8d 9d dc b1 ff ff lea 0xffffb1dc(%ebp),%ebx 1007b3: 90 nop 1007b4: 83 ec 08 sub $0x8,%esp 1007b7: 53 push %ebx 1007b8: 68 bd 51 10 00 push $0x1051bd 1007bd: 46 inc %esi 1007be: e8 11 49 00 00 call 1050d4 <printf> 1007c3: 81 c3 00 02 00 00 add $0x200,%ebx 1007c9: 83 c4 10 add $0x10,%esp 1007cc: 3b b5 d8 af ff ff cmp 0xffffafd8(%ebp),%esi 1007d2: 7c e0 jl 1007b4 <processCommand+0x168> 1007d4: 83 ec 0c sub $0xc,%esp 1007d7: 68 f8 5a 10 00 push $0x105af8 1007dc: e9 ee fe ff ff jmp 1006cf <processCommand+0x83> 1007e1: 00 00 add %al,(%eax) ... 001007e4 <reboot>: * reboot() * */ static void reboot(void) { 1007e4: 55 push %ebp 1007e5: 89 e5 mov %esp,%ebp 1007e7: 53 push %ebx 1007e8: 50 push %eax unsigned temp; disable(); 1007e9: e8 da 44 00 00 call 104cc8 <disable> /** * flush the keyboard controller */ do { temp = inportb(0x64); 1007ee: 83 ec 0c sub $0xc,%esp 1007f1: 6a 64 push $0x64 1007f3: e8 1c 48 00 00 call 105014 <inportb> if((temp & 0x01) != 0) 1007f8: 83 c4 10 add $0x10,%esp 1007fb: a8 01 test $0x1,%al 1007fd: 89 c3 mov %eax,%ebx 1007ff: 75 19 jne 10081a <reboot+0x36> { (void)inportb(0x60); continue; } } while((temp & 0x02) != 0); 100801: 83 e3 02 and $0x2,%ebx 100804: 75 e8 jne 1007ee <reboot+0xa> /** * now pulse the cpu reset line */ outportb(0x64, 0xFE); 100806: 83 ec 08 sub $0x8,%esp 100809: 68 fe 00 00 00 push $0xfe 10080e: 6a 64 push $0x64 100810: e8 9f 48 00 00 call 1050b4 <outportb> /** * if that didn't work, just halt */ while(1); 100815: 83 c4 10 add $0x10,%esp 100818: eb fe jmp 100818 <reboot+0x34> 10081a: 83 ec 0c sub $0xc,%esp 10081d: 6a 60 push $0x60 10081f: e8 f0 47 00 00 call 105014 <inportb> 100824: 83 c4 10 add $0x10,%esp 100827: eb d8 jmp 100801 <reboot+0x1d> 100829: 8d 76 00 lea 0x0(%esi),%esi 0010082c <_write_kb>: } /** * XXX * * I'm not even sure if we need the following functions yet, * however they are here just in case. Leave them alone. */ /** * _write_kb() * */ static void _write_kb(unsigned adr, unsigned d) { 10082c: 55 push %ebp 10082d: 89 e5 mov %esp,%ebp 10082f: 57 push %edi 100830: 56 push %esi 100831: 53 push %ebx 100832: 83 ec 0c sub $0xc,%esp 100835: 8b 7d 08 mov 0x8(%ebp),%edi 100838: 8b 75 0c mov 0xc(%ebp),%esi unsigned long t; unsigned s; for(t = 5000000L; t != 0; t--) 10083b: bb 40 4b 4c 00 mov $0x4c4b40,%ebx { s = inportb(0x64); 100840: 83 ec 0c sub $0xc,%esp 100843: 6a 64 push $0x64 100845: e8 ca 47 00 00 call 105014 <inportb> /** * loop until 8042 input buffer is empty */ if((s & 0x02) == 0) 10084a: 83 c4 10 add $0x10,%esp 10084d: a8 02 test $0x2,%al 10084f: 74 0b je 10085c <_write_kb+0x30> 100851: 4b dec %ebx 100852: 75 ec jne 100840 <_write_kb+0x14> break; } if(t != 0) outportb(adr, d); } 100854: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 100857: 5b pop %ebx 100858: 5e pop %esi 100859: 5f pop %edi 10085a: c9 leave 10085b: c3 ret 10085c: 85 db test %ebx,%ebx 10085e: 74 f4 je 100854 <_write_kb+0x28> 100860: 89 75 0c mov %esi,0xc(%ebp) 100863: 89 7d 08 mov %edi,0x8(%ebp) 100866: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 100869: 5b pop %ebx 10086a: 5e pop %esi 10086b: 5f pop %edi 10086c: c9 leave 10086d: e9 42 48 00 00 jmp 1050b4 <outportb> 100872: 89 f6 mov %esi,%esi 00100874 <_translate_sc>: /** * _kb_wait() * */ static inline void _kb_wait(void) { int i; for(i = 0; i < 0x1000000; i++) if((inportb(0x64) & 0x02) == 0) return; printk(0, "Keyboard timeout\n"); } /** * _kb_send() * */ static inline void _kb_send(unsigned char c) { _kb_wait(); outportb(c, 0x64); } /** * _translate_sc() * * Translates a scancode from the keyboard */ unsigned _translate_sc(unsigned k) { 100874: 55 push %ebp 100875: 89 e5 mov %esp,%ebp 100877: 83 ec 08 sub $0x8,%esp 10087a: 8b 45 08 mov 0x8(%ebp),%eax unsigned c; static unsigned altk; unsigned donefirst = 0; if(k == KEY_BKSPACE) 10087d: 83 f8 0e cmp $0xe,%eax 100880: 0f 84 f2 09 00 00 je 101278 <_translate_sc+0xa04> { if(numkeysbuffer - 1 < 0) { numkeysbuffer = 0; return 0; } } switch(k) 100886: 3d e0 00 00 00 cmp $0xe0,%eax 10088b: 0f 87 d3 09 00 00 ja 101264 <_translate_sc+0x9f0> 100891: ff 24 85 dc 54 10 00 jmp *0x1054dc(,%eax,4) { case 0xE0: altk = 1; c = 0; donefirst = 1; break; 100898: 31 d2 xor %edx,%edx 10089a: c7 05 00 80 10 00 01 movl $0x1,0x108000 1008a1: 00 00 00 case KEY_TILDA: /* ` or ~ */ c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 126 : 126; break; case KEY_END: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 49; break; case KEY_1: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 33 : 49; break; case KEY_DOWN: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 50; break; case KEY_2: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 64 : 50; break; case KEY_PGDOWN: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 51; break; case KEY_3: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 35 : 51; break; case KEY_LEFT: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 52; break; case KEY_4: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 36 : 52; break; case KEYP_5: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 53; break; case KEY_5: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 35 : 53; break; case KEY_RIGHT: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 54; break; case KEY_6: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 94 : 54; break; case KEY_HOME: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 55; break; case KEY_7: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 38 : 55; break; case KEY_UP: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 56; break; case KEYP_ASTERISK: c = 42; break; case KEY_8: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 42 : 56; break; case KEY_PGUP: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 57; break; case KEY_9: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 40 : 57; break; case KEY_INSERT: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 48; break; case KEY_0: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 41 : 48; break; case KEYP_MINUS: c = 45; break; case KEY_MINUS: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 95 : 45; break; case KEYP_PLUS: c = 43; break; case KEY_PLUS: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 61 : 43; break; case KEY_BKSLASH: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 124 : 92; break; case KEY_Q: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 81 : 113; break; case KEY_W: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 87 : 119; break; case KEY_E: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 69 : 101; break; case KEY_R: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 82 : 114; break; case KEY_T: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 84 : 116; break; case KEY_Y: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 89 : 121; break; case KEY_U: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 85 : 117; break; case KEY_I: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 73 : 105; break; case KEY_O: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 79 : 111; break; case KEY_P: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 80 : 112; break; case KEY_LBRACKET: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 123 : 91; break; case KEY_RBRACKET: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 125 : 93; break; case KEY_ENTER: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 10 : 10; break; case KEY_A: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 65 : 97; break; case KEY_S: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 83 : 115; break; case KEY_D: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 68 : 100; break; case KEY_F: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 70 : 102; break; case KEY_G: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 71 : 103; break; case KEY_H: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 72 : 104; break; case KEY_J: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 74 : 106; break; case KEY_K: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 75 : 107; break; case KEY_L: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 76 : 108; break; case KEY_SEMICOLON: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 58 : 59; break; case KEY_QUOTE: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 34 : 39; break; case KEY_Z: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 90 : 122; break; case KEY_X: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 88 : 120; break; case KEY_C: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 67 : 99; break; case KEY_V: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 86 : 118; break; case KEY_B: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 66 : 98; break; case KEY_N: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 78 : 110; break; case KEY_M: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 77 : 109; break; case KEY_COMMA: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 60 : 44; break; case KEY_DEL: c = 0; if(keys[KEYP_NUMLCK] && altk == 0) c = 46; break; case KEY_PERIOD: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 62 : 46; break; case KEY_SLASH: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 63 : 47; break; case KEY_SPACE: c = (keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) ? 32 : 32; break; case KEY_BKSPACE: c = '\b'; break; /* just for now */ default: c = 0; } if(donefirst == 0) altk = 0; if(keys[KEY_CAPS]) 1008a4: a1 28 84 10 00 mov 0x108428,%eax 1008a9: 85 c0 test %eax,%eax 1008ab: 74 23 je 1008d0 <_translate_sc+0x5c> { if(keys[KEY_LSHIFT] || keys[KEY_RSHIFT]) 1008ad: a1 e8 83 10 00 mov 0x1083e8,%eax 1008b2: 85 c0 test %eax,%eax 1008b4: 75 0d jne 1008c3 <_translate_sc+0x4f> 1008b6: a1 18 84 10 00 mov 0x108418,%eax 1008bb: 85 c0 test %eax,%eax 1008bd: 0f 84 bd 00 00 00 je 100980 <_translate_sc+0x10c> { if(c >= 'A' && c <= 'Z') 1008c3: 8d 42 bf lea 0xffffffbf(%edx),%eax 1008c6: 83 f8 19 cmp $0x19,%eax 1008c9: 77 05 ja 1008d0 <_translate_sc+0x5c> c += 32; 1008cb: 83 c2 20 add $0x20,%edx 1008ce: 89 f6 mov %esi,%esi } else { if(c >= 'a' && c <= 'z') c -= 32; } } /** * Simple shell for now */ if(c != 0 && c != '\n' && c != '\b') 1008d0: 85 d2 test %edx,%edx 1008d2: 74 38 je 10090c <_translate_sc+0x98> 1008d4: 83 fa 0a cmp $0xa,%edx 1008d7: 74 63 je 10093c <_translate_sc+0xc8> 1008d9: 83 fa 08 cmp $0x8,%edx 1008dc: 74 2e je 10090c <_translate_sc+0x98> { if((numkeysbuffer - 1) == KBD_BUF_SIZE) 1008de: a1 40 85 10 00 mov 0x108540,%eax 1008e3: 83 f8 41 cmp $0x41,%eax 1008e6: 74 10 je 1008f8 <_translate_sc+0x84> { numkeysbuffer = 0; szInBuf[0] = '\0'; szInBuf[numkeysbuffer] = c; numkeysbuffer++; } else { szInBuf[numkeysbuffer] = c; 1008e8: 88 90 60 85 10 00 mov %dl,0x108560(%eax) numkeysbuffer++; 1008ee: 40 inc %eax 1008ef: a3 40 85 10 00 mov %eax,0x108540 } } else if(c == '\n') { printf("\n"); /** * Make it a real string */ szInBuf[numkeysbuffer] = '\0'; /** * Process command */ processCommand(&szInBuf[0], numkeysbuffer - 1); /** * Clear buffer */ numkeysbuffer = 0; szInBuf[0] = '\0'; /** * Print "line" */ printf("$ "); c = 0; } else if(c == '\b') { szInBuf[numkeysbuffer] = '\0'; numkeysbuffer--; printf("\b \b"); c = 0; } return c; 1008f4: 89 d0 mov %edx,%eax } 1008f6: c9 leave 1008f7: c3 ret 1008f8: 88 15 60 85 10 00 mov %dl,0x108560 1008fe: c7 05 40 85 10 00 01 movl $0x1,0x108540 100905: 00 00 00 100908: eb ea jmp 1008f4 <_translate_sc+0x80> 10090a: 89 f6 mov %esi,%esi 10090c: 83 fa 0a cmp $0xa,%edx 10090f: 74 2b je 10093c <_translate_sc+0xc8> 100911: 83 fa 08 cmp $0x8,%edx 100914: 75 de jne 1008f4 <_translate_sc+0x80> 100916: a1 40 85 10 00 mov 0x108540,%eax 10091b: c6 80 60 85 10 00 00 movb $0x0,0x108560(%eax) 100922: 83 ec 0c sub $0xc,%esp 100925: 48 dec %eax 100926: a3 40 85 10 00 mov %eax,0x108540 10092b: 68 d2 54 10 00 push $0x1054d2 100930: e8 9f 47 00 00 call 1050d4 <printf> 100935: 31 d2 xor %edx,%edx 100937: 83 c4 10 add $0x10,%esp 10093a: eb b8 jmp 1008f4 <_translate_sc+0x80> 10093c: 83 ec 0c sub $0xc,%esp 10093f: 68 f8 5a 10 00 push $0x105af8 100944: e8 8b 47 00 00 call 1050d4 <printf> 100949: a1 40 85 10 00 mov 0x108540,%eax 10094e: 5a pop %edx 10094f: 59 pop %ecx 100950: c6 80 60 85 10 00 00 movb $0x0,0x108560(%eax) 100957: 48 dec %eax 100958: 50 push %eax 100959: 68 60 85 10 00 push $0x108560 10095e: e8 e9 fc ff ff call 10064c <processCommand> 100963: c7 05 40 85 10 00 00 movl $0x0,0x108540 10096a: 00 00 00 10096d: c6 05 60 85 10 00 00 movb $0x0,0x108560 100974: c7 04 24 d6 54 10 00 movl $0x1054d6,(%esp,1) 10097b: eb b3 jmp 100930 <_translate_sc+0xbc> 10097d: 8d 76 00 lea 0x0(%esi),%esi 100980: 8d 42 9f lea 0xffffff9f(%edx),%eax 100983: 83 f8 19 cmp $0x19,%eax 100986: 0f 87 44 ff ff ff ja 1008d0 <_translate_sc+0x5c> 10098c: 83 ea 20 sub $0x20,%edx 10098f: e9 3c ff ff ff jmp 1008d0 <_translate_sc+0x5c> 100994: a1 e8 83 10 00 mov 0x1083e8,%eax 100999: 85 c0 test %eax,%eax 10099b: 75 09 jne 1009a6 <_translate_sc+0x132> 10099d: a1 18 84 10 00 mov 0x108418,%eax 1009a2: 85 c0 test %eax,%eax 1009a4: 74 15 je 1009bb <_translate_sc+0x147> 1009a6: ba 21 00 00 00 mov $0x21,%edx 1009ab: 90 nop 1009ac: c7 05 00 80 10 00 00 movl $0x0,0x108000 1009b3: 00 00 00 1009b6: e9 e9 fe ff ff jmp 1008a4 <_translate_sc+0x30> 1009bb: ba 31 00 00 00 mov $0x31,%edx 1009c0: eb ea jmp 1009ac <_translate_sc+0x138> 1009c2: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 1009c8: 85 d2 test %edx,%edx 1009ca: 75 09 jne 1009d5 <_translate_sc+0x161> 1009cc: a1 18 84 10 00 mov 0x108418,%eax 1009d1: 85 c0 test %eax,%eax 1009d3: 74 07 je 1009dc <_translate_sc+0x168> 1009d5: ba 40 00 00 00 mov $0x40,%edx 1009da: eb d0 jmp 1009ac <_translate_sc+0x138> 1009dc: ba 32 00 00 00 mov $0x32,%edx 1009e1: eb c9 jmp 1009ac <_translate_sc+0x138> 1009e3: a1 e8 83 10 00 mov 0x1083e8,%eax 1009e8: 85 c0 test %eax,%eax 1009ea: 75 09 jne 1009f5 <_translate_sc+0x181> 1009ec: a1 18 84 10 00 mov 0x108418,%eax 1009f1: 85 c0 test %eax,%eax 1009f3: 74 07 je 1009fc <_translate_sc+0x188> 1009f5: ba 23 00 00 00 mov $0x23,%edx 1009fa: eb b0 jmp 1009ac <_translate_sc+0x138> 1009fc: ba 33 00 00 00 mov $0x33,%edx 100a01: eb a9 jmp 1009ac <_translate_sc+0x138> 100a03: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100a09: 85 d2 test %edx,%edx 100a0b: 75 09 jne 100a16 <_translate_sc+0x1a2> 100a0d: a1 18 84 10 00 mov 0x108418,%eax 100a12: 85 c0 test %eax,%eax 100a14: 74 07 je 100a1d <_translate_sc+0x1a9> 100a16: ba 24 00 00 00 mov $0x24,%edx 100a1b: eb 8f jmp 1009ac <_translate_sc+0x138> 100a1d: ba 34 00 00 00 mov $0x34,%edx 100a22: eb 88 jmp 1009ac <_translate_sc+0x138> 100a24: a1 e8 83 10 00 mov 0x1083e8,%eax 100a29: 85 c0 test %eax,%eax 100a2b: 75 09 jne 100a36 <_translate_sc+0x1c2> 100a2d: a1 18 84 10 00 mov 0x108418,%eax 100a32: 85 c0 test %eax,%eax 100a34: 74 0a je 100a40 <_translate_sc+0x1cc> 100a36: ba 23 00 00 00 mov $0x23,%edx 100a3b: e9 6c ff ff ff jmp 1009ac <_translate_sc+0x138> 100a40: ba 35 00 00 00 mov $0x35,%edx 100a45: e9 62 ff ff ff jmp 1009ac <_translate_sc+0x138> 100a4a: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100a50: 85 d2 test %edx,%edx 100a52: 75 09 jne 100a5d <_translate_sc+0x1e9> 100a54: a1 18 84 10 00 mov 0x108418,%eax 100a59: 85 c0 test %eax,%eax 100a5b: 74 0a je 100a67 <_translate_sc+0x1f3> 100a5d: ba 5e 00 00 00 mov $0x5e,%edx 100a62: e9 45 ff ff ff jmp 1009ac <_translate_sc+0x138> 100a67: ba 36 00 00 00 mov $0x36,%edx 100a6c: e9 3b ff ff ff jmp 1009ac <_translate_sc+0x138> 100a71: a1 e8 83 10 00 mov 0x1083e8,%eax 100a76: 85 c0 test %eax,%eax 100a78: 75 09 jne 100a83 <_translate_sc+0x20f> 100a7a: a1 18 84 10 00 mov 0x108418,%eax 100a7f: 85 c0 test %eax,%eax 100a81: 74 0a je 100a8d <_translate_sc+0x219> 100a83: ba 26 00 00 00 mov $0x26,%edx 100a88: e9 1f ff ff ff jmp 1009ac <_translate_sc+0x138> 100a8d: ba 37 00 00 00 mov $0x37,%edx 100a92: e9 15 ff ff ff jmp 1009ac <_translate_sc+0x138> 100a97: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100a9d: 85 d2 test %edx,%edx 100a9f: 75 09 jne 100aaa <_translate_sc+0x236> 100aa1: a1 18 84 10 00 mov 0x108418,%eax 100aa6: 85 c0 test %eax,%eax 100aa8: 74 0a je 100ab4 <_translate_sc+0x240> 100aaa: ba 2a 00 00 00 mov $0x2a,%edx 100aaf: e9 f8 fe ff ff jmp 1009ac <_translate_sc+0x138> 100ab4: ba 38 00 00 00 mov $0x38,%edx 100ab9: e9 ee fe ff ff jmp 1009ac <_translate_sc+0x138> 100abe: a1 e8 83 10 00 mov 0x1083e8,%eax 100ac3: 85 c0 test %eax,%eax 100ac5: 75 09 jne 100ad0 <_translate_sc+0x25c> 100ac7: a1 18 84 10 00 mov 0x108418,%eax 100acc: 85 c0 test %eax,%eax 100ace: 74 0a je 100ada <_translate_sc+0x266> 100ad0: ba 28 00 00 00 mov $0x28,%edx 100ad5: e9 d2 fe ff ff jmp 1009ac <_translate_sc+0x138> 100ada: ba 39 00 00 00 mov $0x39,%edx 100adf: e9 c8 fe ff ff jmp 1009ac <_translate_sc+0x138> 100ae4: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100aea: 85 d2 test %edx,%edx 100aec: 75 09 jne 100af7 <_translate_sc+0x283> 100aee: a1 18 84 10 00 mov 0x108418,%eax 100af3: 85 c0 test %eax,%eax 100af5: 74 0a je 100b01 <_translate_sc+0x28d> 100af7: ba 29 00 00 00 mov $0x29,%edx 100afc: e9 ab fe ff ff jmp 1009ac <_translate_sc+0x138> 100b01: ba 30 00 00 00 mov $0x30,%edx 100b06: e9 a1 fe ff ff jmp 1009ac <_translate_sc+0x138> 100b0b: a1 e8 83 10 00 mov 0x1083e8,%eax 100b10: 85 c0 test %eax,%eax 100b12: 75 09 jne 100b1d <_translate_sc+0x2a9> 100b14: a1 18 84 10 00 mov 0x108418,%eax 100b19: 85 c0 test %eax,%eax 100b1b: 74 0a je 100b27 <_translate_sc+0x2b3> 100b1d: ba 5f 00 00 00 mov $0x5f,%edx 100b22: e9 85 fe ff ff jmp 1009ac <_translate_sc+0x138> 100b27: ba 2d 00 00 00 mov $0x2d,%edx 100b2c: e9 7b fe ff ff jmp 1009ac <_translate_sc+0x138> 100b31: a1 e8 83 10 00 mov 0x1083e8,%eax 100b36: 85 c0 test %eax,%eax 100b38: 75 09 jne 100b43 <_translate_sc+0x2cf> 100b3a: a1 18 84 10 00 mov 0x108418,%eax 100b3f: 85 c0 test %eax,%eax 100b41: 74 0a je 100b4d <_translate_sc+0x2d9> 100b43: ba 3d 00 00 00 mov $0x3d,%edx 100b48: e9 5f fe ff ff jmp 1009ac <_translate_sc+0x138> 100b4d: ba 2b 00 00 00 mov $0x2b,%edx 100b52: e9 55 fe ff ff jmp 1009ac <_translate_sc+0x138> 100b57: ba 08 00 00 00 mov $0x8,%edx 100b5c: e9 4b fe ff ff jmp 1009ac <_translate_sc+0x138> 100b61: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100b67: 85 d2 test %edx,%edx 100b69: 75 09 jne 100b74 <_translate_sc+0x300> 100b6b: a1 18 84 10 00 mov 0x108418,%eax 100b70: 85 c0 test %eax,%eax 100b72: 74 0a je 100b7e <_translate_sc+0x30a> 100b74: ba 51 00 00 00 mov $0x51,%edx 100b79: e9 2e fe ff ff jmp 1009ac <_translate_sc+0x138> 100b7e: ba 71 00 00 00 mov $0x71,%edx 100b83: e9 24 fe ff ff jmp 1009ac <_translate_sc+0x138> 100b88: a1 e8 83 10 00 mov 0x1083e8,%eax 100b8d: 85 c0 test %eax,%eax 100b8f: 75 09 jne 100b9a <_translate_sc+0x326> 100b91: a1 18 84 10 00 mov 0x108418,%eax 100b96: 85 c0 test %eax,%eax 100b98: 74 0a je 100ba4 <_translate_sc+0x330> 100b9a: ba 57 00 00 00 mov $0x57,%edx 100b9f: e9 08 fe ff ff jmp 1009ac <_translate_sc+0x138> 100ba4: ba 77 00 00 00 mov $0x77,%edx 100ba9: e9 fe fd ff ff jmp 1009ac <_translate_sc+0x138> 100bae: a1 e8 83 10 00 mov 0x1083e8,%eax 100bb3: 85 c0 test %eax,%eax 100bb5: 75 09 jne 100bc0 <_translate_sc+0x34c> 100bb7: a1 18 84 10 00 mov 0x108418,%eax 100bbc: 85 c0 test %eax,%eax 100bbe: 74 0a je 100bca <_translate_sc+0x356> 100bc0: ba 45 00 00 00 mov $0x45,%edx 100bc5: e9 e2 fd ff ff jmp 1009ac <_translate_sc+0x138> 100bca: ba 65 00 00 00 mov $0x65,%edx 100bcf: e9 d8 fd ff ff jmp 1009ac <_translate_sc+0x138> 100bd4: a1 e8 83 10 00 mov 0x1083e8,%eax 100bd9: 85 c0 test %eax,%eax 100bdb: 75 0a jne 100be7 <_translate_sc+0x373> 100bdd: 8b 0d 18 84 10 00 mov 0x108418,%ecx 100be3: 85 c9 test %ecx,%ecx 100be5: 74 0a je 100bf1 <_translate_sc+0x37d> 100be7: ba 52 00 00 00 mov $0x52,%edx 100bec: e9 bb fd ff ff jmp 1009ac <_translate_sc+0x138> 100bf1: ba 72 00 00 00 mov $0x72,%edx 100bf6: e9 b1 fd ff ff jmp 1009ac <_translate_sc+0x138> 100bfb: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100c01: 85 d2 test %edx,%edx 100c03: 75 09 jne 100c0e <_translate_sc+0x39a> 100c05: a1 18 84 10 00 mov 0x108418,%eax 100c0a: 85 c0 test %eax,%eax 100c0c: 74 0a je 100c18 <_translate_sc+0x3a4> 100c0e: ba 54 00 00 00 mov $0x54,%edx 100c13: e9 94 fd ff ff jmp 1009ac <_translate_sc+0x138> 100c18: ba 74 00 00 00 mov $0x74,%edx 100c1d: e9 8a fd ff ff jmp 1009ac <_translate_sc+0x138> 100c22: a1 e8 83 10 00 mov 0x1083e8,%eax 100c27: 85 c0 test %eax,%eax 100c29: 75 09 jne 100c34 <_translate_sc+0x3c0> 100c2b: a1 18 84 10 00 mov 0x108418,%eax 100c30: 85 c0 test %eax,%eax 100c32: 74 0a je 100c3e <_translate_sc+0x3ca> 100c34: ba 59 00 00 00 mov $0x59,%edx 100c39: e9 6e fd ff ff jmp 1009ac <_translate_sc+0x138> 100c3e: ba 79 00 00 00 mov $0x79,%edx 100c43: e9 64 fd ff ff jmp 1009ac <_translate_sc+0x138> 100c48: a1 e8 83 10 00 mov 0x1083e8,%eax 100c4d: 85 c0 test %eax,%eax 100c4f: 75 09 jne 100c5a <_translate_sc+0x3e6> 100c51: a1 18 84 10 00 mov 0x108418,%eax 100c56: 85 c0 test %eax,%eax 100c58: 74 0a je 100c64 <_translate_sc+0x3f0> 100c5a: ba 55 00 00 00 mov $0x55,%edx 100c5f: e9 48 fd ff ff jmp 1009ac <_translate_sc+0x138> 100c64: ba 75 00 00 00 mov $0x75,%edx 100c69: e9 3e fd ff ff jmp 1009ac <_translate_sc+0x138> 100c6e: a1 e8 83 10 00 mov 0x1083e8,%eax 100c73: 85 c0 test %eax,%eax 100c75: 75 0a jne 100c81 <_translate_sc+0x40d> 100c77: 8b 0d 18 84 10 00 mov 0x108418,%ecx 100c7d: 85 c9 test %ecx,%ecx 100c7f: 74 0a je 100c8b <_translate_sc+0x417> 100c81: ba 49 00 00 00 mov $0x49,%edx 100c86: e9 21 fd ff ff jmp 1009ac <_translate_sc+0x138> 100c8b: ba 69 00 00 00 mov $0x69,%edx 100c90: e9 17 fd ff ff jmp 1009ac <_translate_sc+0x138> 100c95: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100c9b: 85 d2 test %edx,%edx 100c9d: 75 09 jne 100ca8 <_translate_sc+0x434> 100c9f: a1 18 84 10 00 mov 0x108418,%eax 100ca4: 85 c0 test %eax,%eax 100ca6: 74 0a je 100cb2 <_translate_sc+0x43e> 100ca8: ba 4f 00 00 00 mov $0x4f,%edx 100cad: e9 fa fc ff ff jmp 1009ac <_translate_sc+0x138> 100cb2: ba 6f 00 00 00 mov $0x6f,%edx 100cb7: e9 f0 fc ff ff jmp 1009ac <_translate_sc+0x138> 100cbc: a1 e8 83 10 00 mov 0x1083e8,%eax 100cc1: 85 c0 test %eax,%eax 100cc3: 75 09 jne 100cce <_translate_sc+0x45a> 100cc5: a1 18 84 10 00 mov 0x108418,%eax 100cca: 85 c0 test %eax,%eax 100ccc: 74 0a je 100cd8 <_translate_sc+0x464> 100cce: ba 50 00 00 00 mov $0x50,%edx 100cd3: e9 d4 fc ff ff jmp 1009ac <_translate_sc+0x138> 100cd8: ba 70 00 00 00 mov $0x70,%edx 100cdd: e9 ca fc ff ff jmp 1009ac <_translate_sc+0x138> 100ce2: a1 e8 83 10 00 mov 0x1083e8,%eax 100ce7: 85 c0 test %eax,%eax 100ce9: 75 09 jne 100cf4 <_translate_sc+0x480> 100ceb: a1 18 84 10 00 mov 0x108418,%eax 100cf0: 85 c0 test %eax,%eax 100cf2: 74 0a je 100cfe <_translate_sc+0x48a> 100cf4: ba 7b 00 00 00 mov $0x7b,%edx 100cf9: e9 ae fc ff ff jmp 1009ac <_translate_sc+0x138> 100cfe: ba 5b 00 00 00 mov $0x5b,%edx 100d03: e9 a4 fc ff ff jmp 1009ac <_translate_sc+0x138> 100d08: a1 e8 83 10 00 mov 0x1083e8,%eax 100d0d: 85 c0 test %eax,%eax 100d0f: 75 0a jne 100d1b <_translate_sc+0x4a7> 100d11: 8b 0d 18 84 10 00 mov 0x108418,%ecx 100d17: 85 c9 test %ecx,%ecx 100d19: 74 0a je 100d25 <_translate_sc+0x4b1> 100d1b: ba 7d 00 00 00 mov $0x7d,%edx 100d20: e9 87 fc ff ff jmp 1009ac <_translate_sc+0x138> 100d25: ba 5d 00 00 00 mov $0x5d,%edx 100d2a: e9 7d fc ff ff jmp 1009ac <_translate_sc+0x138> 100d2f: ba 0a 00 00 00 mov $0xa,%edx 100d34: e9 73 fc ff ff jmp 1009ac <_translate_sc+0x138> 100d39: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100d3f: 85 d2 test %edx,%edx 100d41: 75 09 jne 100d4c <_translate_sc+0x4d8> 100d43: a1 18 84 10 00 mov 0x108418,%eax 100d48: 85 c0 test %eax,%eax 100d4a: 74 0a je 100d56 <_translate_sc+0x4e2> 100d4c: ba 41 00 00 00 mov $0x41,%edx 100d51: e9 56 fc ff ff jmp 1009ac <_translate_sc+0x138> 100d56: ba 61 00 00 00 mov $0x61,%edx 100d5b: e9 4c fc ff ff jmp 1009ac <_translate_sc+0x138> 100d60: a1 e8 83 10 00 mov 0x1083e8,%eax 100d65: 85 c0 test %eax,%eax 100d67: 75 09 jne 100d72 <_translate_sc+0x4fe> 100d69: a1 18 84 10 00 mov 0x108418,%eax 100d6e: 85 c0 test %eax,%eax 100d70: 74 0a je 100d7c <_translate_sc+0x508> 100d72: ba 53 00 00 00 mov $0x53,%edx 100d77: e9 30 fc ff ff jmp 1009ac <_translate_sc+0x138> 100d7c: ba 73 00 00 00 mov $0x73,%edx 100d81: e9 26 fc ff ff jmp 1009ac <_translate_sc+0x138> 100d86: a1 e8 83 10 00 mov 0x1083e8,%eax 100d8b: 85 c0 test %eax,%eax 100d8d: 75 09 jne 100d98 <_translate_sc+0x524> 100d8f: a1 18 84 10 00 mov 0x108418,%eax 100d94: 85 c0 test %eax,%eax 100d96: 74 0a je 100da2 <_translate_sc+0x52e> 100d98: ba 44 00 00 00 mov $0x44,%edx 100d9d: e9 0a fc ff ff jmp 1009ac <_translate_sc+0x138> 100da2: ba 64 00 00 00 mov $0x64,%edx 100da7: e9 00 fc ff ff jmp 1009ac <_translate_sc+0x138> 100dac: a1 e8 83 10 00 mov 0x1083e8,%eax 100db1: 85 c0 test %eax,%eax 100db3: 75 0a jne 100dbf <_translate_sc+0x54b> 100db5: 8b 0d 18 84 10 00 mov 0x108418,%ecx 100dbb: 85 c9 test %ecx,%ecx 100dbd: 74 0a je 100dc9 <_translate_sc+0x555> 100dbf: ba 46 00 00 00 mov $0x46,%edx 100dc4: e9 e3 fb ff ff jmp 1009ac <_translate_sc+0x138> 100dc9: ba 66 00 00 00 mov $0x66,%edx 100dce: e9 d9 fb ff ff jmp 1009ac <_translate_sc+0x138> 100dd3: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100dd9: 85 d2 test %edx,%edx 100ddb: 75 09 jne 100de6 <_translate_sc+0x572> 100ddd: a1 18 84 10 00 mov 0x108418,%eax 100de2: 85 c0 test %eax,%eax 100de4: 74 0a je 100df0 <_translate_sc+0x57c> 100de6: ba 47 00 00 00 mov $0x47,%edx 100deb: e9 bc fb ff ff jmp 1009ac <_translate_sc+0x138> 100df0: ba 67 00 00 00 mov $0x67,%edx 100df5: e9 b2 fb ff ff jmp 1009ac <_translate_sc+0x138> 100dfa: a1 e8 83 10 00 mov 0x1083e8,%eax 100dff: 85 c0 test %eax,%eax 100e01: 75 09 jne 100e0c <_translate_sc+0x598> 100e03: a1 18 84 10 00 mov 0x108418,%eax 100e08: 85 c0 test %eax,%eax 100e0a: 74 0a je 100e16 <_translate_sc+0x5a2> 100e0c: ba 48 00 00 00 mov $0x48,%edx 100e11: e9 96 fb ff ff jmp 1009ac <_translate_sc+0x138> 100e16: ba 68 00 00 00 mov $0x68,%edx 100e1b: e9 8c fb ff ff jmp 1009ac <_translate_sc+0x138> 100e20: a1 e8 83 10 00 mov 0x1083e8,%eax 100e25: 85 c0 test %eax,%eax 100e27: 75 09 jne 100e32 <_translate_sc+0x5be> 100e29: a1 18 84 10 00 mov 0x108418,%eax 100e2e: 85 c0 test %eax,%eax 100e30: 74 0a je 100e3c <_translate_sc+0x5c8> 100e32: ba 4a 00 00 00 mov $0x4a,%edx 100e37: e9 70 fb ff ff jmp 1009ac <_translate_sc+0x138> 100e3c: ba 6a 00 00 00 mov $0x6a,%edx 100e41: e9 66 fb ff ff jmp 1009ac <_translate_sc+0x138> 100e46: a1 e8 83 10 00 mov 0x1083e8,%eax 100e4b: 85 c0 test %eax,%eax 100e4d: 75 0a jne 100e59 <_translate_sc+0x5e5> 100e4f: 8b 0d 18 84 10 00 mov 0x108418,%ecx 100e55: 85 c9 test %ecx,%ecx 100e57: 74 0a je 100e63 <_translate_sc+0x5ef> 100e59: ba 4b 00 00 00 mov $0x4b,%edx 100e5e: e9 49 fb ff ff jmp 1009ac <_translate_sc+0x138> 100e63: ba 6b 00 00 00 mov $0x6b,%edx 100e68: e9 3f fb ff ff jmp 1009ac <_translate_sc+0x138> 100e6d: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100e73: 85 d2 test %edx,%edx 100e75: 75 09 jne 100e80 <_translate_sc+0x60c> 100e77: a1 18 84 10 00 mov 0x108418,%eax 100e7c: 85 c0 test %eax,%eax 100e7e: 74 0a je 100e8a <_translate_sc+0x616> 100e80: ba 4c 00 00 00 mov $0x4c,%edx 100e85: e9 22 fb ff ff jmp 1009ac <_translate_sc+0x138> 100e8a: ba 6c 00 00 00 mov $0x6c,%edx 100e8f: e9 18 fb ff ff jmp 1009ac <_translate_sc+0x138> 100e94: a1 e8 83 10 00 mov 0x1083e8,%eax 100e99: 85 c0 test %eax,%eax 100e9b: 75 09 jne 100ea6 <_translate_sc+0x632> 100e9d: a1 18 84 10 00 mov 0x108418,%eax 100ea2: 85 c0 test %eax,%eax 100ea4: 74 0a je 100eb0 <_translate_sc+0x63c> 100ea6: ba 3a 00 00 00 mov $0x3a,%edx 100eab: e9 fc fa ff ff jmp 1009ac <_translate_sc+0x138> 100eb0: ba 3b 00 00 00 mov $0x3b,%edx 100eb5: e9 f2 fa ff ff jmp 1009ac <_translate_sc+0x138> 100eba: a1 e8 83 10 00 mov 0x1083e8,%eax 100ebf: 85 c0 test %eax,%eax 100ec1: 75 09 jne 100ecc <_translate_sc+0x658> 100ec3: a1 18 84 10 00 mov 0x108418,%eax 100ec8: 85 c0 test %eax,%eax 100eca: 74 0a je 100ed6 <_translate_sc+0x662> 100ecc: ba 22 00 00 00 mov $0x22,%edx 100ed1: e9 d6 fa ff ff jmp 1009ac <_translate_sc+0x138> 100ed6: ba 27 00 00 00 mov $0x27,%edx 100edb: e9 cc fa ff ff jmp 1009ac <_translate_sc+0x138> 100ee0: ba 7e 00 00 00 mov $0x7e,%edx 100ee5: e9 c2 fa ff ff jmp 1009ac <_translate_sc+0x138> 100eea: a1 e8 83 10 00 mov 0x1083e8,%eax 100eef: 85 c0 test %eax,%eax 100ef1: 75 0a jne 100efd <_translate_sc+0x689> 100ef3: 8b 0d 18 84 10 00 mov 0x108418,%ecx 100ef9: 85 c9 test %ecx,%ecx 100efb: 74 0a je 100f07 <_translate_sc+0x693> 100efd: ba 7c 00 00 00 mov $0x7c,%edx 100f02: e9 a5 fa ff ff jmp 1009ac <_translate_sc+0x138> 100f07: ba 5c 00 00 00 mov $0x5c,%edx 100f0c: e9 9b fa ff ff jmp 1009ac <_translate_sc+0x138> 100f11: a1 e8 83 10 00 mov 0x1083e8,%eax 100f16: 85 c0 test %eax,%eax 100f18: 75 0a jne 100f24 <_translate_sc+0x6b0> 100f1a: 8b 0d 18 84 10 00 mov 0x108418,%ecx 100f20: 85 c9 test %ecx,%ecx 100f22: 74 0a je 100f2e <_translate_sc+0x6ba> 100f24: ba 5a 00 00 00 mov $0x5a,%edx 100f29: e9 7e fa ff ff jmp 1009ac <_translate_sc+0x138> 100f2e: ba 7a 00 00 00 mov $0x7a,%edx 100f33: e9 74 fa ff ff jmp 1009ac <_translate_sc+0x138> 100f38: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100f3e: 85 d2 test %edx,%edx 100f40: 75 09 jne 100f4b <_translate_sc+0x6d7> 100f42: a1 18 84 10 00 mov 0x108418,%eax 100f47: 85 c0 test %eax,%eax 100f49: 74 0a je 100f55 <_translate_sc+0x6e1> 100f4b: ba 58 00 00 00 mov $0x58,%edx 100f50: e9 57 fa ff ff jmp 1009ac <_translate_sc+0x138> 100f55: ba 78 00 00 00 mov $0x78,%edx 100f5a: e9 4d fa ff ff jmp 1009ac <_translate_sc+0x138> 100f5f: a1 e8 83 10 00 mov 0x1083e8,%eax 100f64: 85 c0 test %eax,%eax 100f66: 75 09 jne 100f71 <_translate_sc+0x6fd> 100f68: a1 18 84 10 00 mov 0x108418,%eax 100f6d: 85 c0 test %eax,%eax 100f6f: 74 0a je 100f7b <_translate_sc+0x707> 100f71: ba 43 00 00 00 mov $0x43,%edx 100f76: e9 31 fa ff ff jmp 1009ac <_translate_sc+0x138> 100f7b: ba 63 00 00 00 mov $0x63,%edx 100f80: e9 27 fa ff ff jmp 1009ac <_translate_sc+0x138> 100f85: a1 e8 83 10 00 mov 0x1083e8,%eax 100f8a: 85 c0 test %eax,%eax 100f8c: 75 09 jne 100f97 <_translate_sc+0x723> 100f8e: a1 18 84 10 00 mov 0x108418,%eax 100f93: 85 c0 test %eax,%eax 100f95: 74 0a je 100fa1 <_translate_sc+0x72d> 100f97: ba 56 00 00 00 mov $0x56,%edx 100f9c: e9 0b fa ff ff jmp 1009ac <_translate_sc+0x138> 100fa1: ba 76 00 00 00 mov $0x76,%edx 100fa6: e9 01 fa ff ff jmp 1009ac <_translate_sc+0x138> 100fab: a1 e8 83 10 00 mov 0x1083e8,%eax 100fb0: 85 c0 test %eax,%eax 100fb2: 75 0a jne 100fbe <_translate_sc+0x74a> 100fb4: 8b 0d 18 84 10 00 mov 0x108418,%ecx 100fba: 85 c9 test %ecx,%ecx 100fbc: 74 0a je 100fc8 <_translate_sc+0x754> 100fbe: ba 42 00 00 00 mov $0x42,%edx 100fc3: e9 e4 f9 ff ff jmp 1009ac <_translate_sc+0x138> 100fc8: ba 62 00 00 00 mov $0x62,%edx 100fcd: e9 da f9 ff ff jmp 1009ac <_translate_sc+0x138> 100fd2: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 100fd8: 85 d2 test %edx,%edx 100fda: 75 09 jne 100fe5 <_translate_sc+0x771> 100fdc: a1 18 84 10 00 mov 0x108418,%eax 100fe1: 85 c0 test %eax,%eax 100fe3: 74 0a je 100fef <_translate_sc+0x77b> 100fe5: ba 4e 00 00 00 mov $0x4e,%edx 100fea: e9 bd f9 ff ff jmp 1009ac <_translate_sc+0x138> 100fef: ba 6e 00 00 00 mov $0x6e,%edx 100ff4: e9 b3 f9 ff ff jmp 1009ac <_translate_sc+0x138> 100ff9: a1 e8 83 10 00 mov 0x1083e8,%eax 100ffe: 85 c0 test %eax,%eax 101000: 75 09 jne 10100b <_translate_sc+0x797> 101002: a1 18 84 10 00 mov 0x108418,%eax 101007: 85 c0 test %eax,%eax 101009: 74 0a je 101015 <_translate_sc+0x7a1> 10100b: ba 4d 00 00 00 mov $0x4d,%edx 101010: e9 97 f9 ff ff jmp 1009ac <_translate_sc+0x138> 101015: ba 6d 00 00 00 mov $0x6d,%edx 10101a: e9 8d f9 ff ff jmp 1009ac <_translate_sc+0x138> 10101f: a1 e8 83 10 00 mov 0x1083e8,%eax 101024: 85 c0 test %eax,%eax 101026: 75 09 jne 101031 <_translate_sc+0x7bd> 101028: a1 18 84 10 00 mov 0x108418,%eax 10102d: 85 c0 test %eax,%eax 10102f: 74 0a je 10103b <_translate_sc+0x7c7> 101031: ba 3c 00 00 00 mov $0x3c,%edx 101036: e9 71 f9 ff ff jmp 1009ac <_translate_sc+0x138> 10103b: ba 2c 00 00 00 mov $0x2c,%edx 101040: e9 67 f9 ff ff jmp 1009ac <_translate_sc+0x138> 101045: 8b 15 e8 83 10 00 mov 0x1083e8,%edx 10104b: 85 d2 test %edx,%edx 10104d: 75 09 jne 101058 <_translate_sc+0x7e4> 10104f: a1 18 84 10 00 mov 0x108418,%eax 101054: 85 c0 test %eax,%eax 101056: 74 0a je 101062 <_translate_sc+0x7ee> 101058: ba 3e 00 00 00 mov $0x3e,%edx 10105d: e9 4a f9 ff ff jmp 1009ac <_translate_sc+0x138> 101062: ba 2e 00 00 00 mov $0x2e,%edx 101067: e9 40 f9 ff ff jmp 1009ac <_translate_sc+0x138> 10106c: a1 e8 83 10 00 mov 0x1083e8,%eax 101071: 85 c0 test %eax,%eax 101073: 75 09 jne 10107e <_translate_sc+0x80a> 101075: a1 18 84 10 00 mov 0x108418,%eax 10107a: 85 c0 test %eax,%eax 10107c: 74 0a je 101088 <_translate_sc+0x814> 10107e: ba 3f 00 00 00 mov $0x3f,%edx 101083: e9 24 f9 ff ff jmp 1009ac <_translate_sc+0x138> 101088: ba 2f 00 00 00 mov $0x2f,%edx 10108d: e9 1a f9 ff ff jmp 1009ac <_translate_sc+0x138> 101092: ba 2a 00 00 00 mov $0x2a,%edx 101097: e9 10 f9 ff ff jmp 1009ac <_translate_sc+0x138> 10109c: ba 20 00 00 00 mov $0x20,%edx 1010a1: e9 06 f9 ff ff jmp 1009ac <_translate_sc+0x138> 1010a6: a1 54 84 10 00 mov 0x108454,%eax 1010ab: 31 d2 xor %edx,%edx 1010ad: 85 c0 test %eax,%eax 1010af: 0f 84 f7 f8 ff ff je 1009ac <_translate_sc+0x138> 1010b5: a1 00 80 10 00 mov 0x108000,%eax 1010ba: 85 c0 test %eax,%eax 1010bc: 0f 85 ea f8 ff ff jne 1009ac <_translate_sc+0x138> 1010c2: ba 37 00 00 00 mov $0x37,%edx 1010c7: e9 e0 f8 ff ff jmp 1009ac <_translate_sc+0x138> 1010cc: a1 54 84 10 00 mov 0x108454,%eax 1010d1: 31 d2 xor %edx,%edx 1010d3: 85 c0 test %eax,%eax 1010d5: 0f 84 d1 f8 ff ff je 1009ac <_translate_sc+0x138> 1010db: 8b 0d 00 80 10 00 mov 0x108000,%ecx 1010e1: 85 c9 test %ecx,%ecx 1010e3: 0f 85 c3 f8 ff ff jne 1009ac <_translate_sc+0x138> 1010e9: ba 38 00 00 00 mov $0x38,%edx 1010ee: e9 b9 f8 ff ff jmp 1009ac <_translate_sc+0x138> 1010f3: a1 54 84 10 00 mov 0x108454,%eax 1010f8: 31 d2 xor %edx,%edx 1010fa: 85 c0 test %eax,%eax 1010fc: 0f 84 aa f8 ff ff je 1009ac <_translate_sc+0x138> 101102: a1 00 80 10 00 mov 0x108000,%eax 101107: 85 c0 test %eax,%eax 101109: 0f 85 9d f8 ff ff jne 1009ac <_translate_sc+0x138> 10110f: ba 39 00 00 00 mov $0x39,%edx 101114: e9 93 f8 ff ff jmp 1009ac <_translate_sc+0x138> 101119: ba 2d 00 00 00 mov $0x2d,%edx 10111e: e9 89 f8 ff ff jmp 1009ac <_translate_sc+0x138> 101123: a1 54 84 10 00 mov 0x108454,%eax 101128: 31 d2 xor %edx,%edx 10112a: 85 c0 test %eax,%eax 10112c: 0f 84 7a f8 ff ff je 1009ac <_translate_sc+0x138> 101132: 8b 0d 00 80 10 00 mov 0x108000,%ecx 101138: 85 c9 test %ecx,%ecx 10113a: 0f 85 6c f8 ff ff jne 1009ac <_translate_sc+0x138> 101140: ba 34 00 00 00 mov $0x34,%edx 101145: e9 62 f8 ff ff jmp 1009ac <_translate_sc+0x138> 10114a: a1 54 84 10 00 mov 0x108454,%eax 10114f: 31 d2 xor %edx,%edx 101151: 85 c0 test %eax,%eax 101153: 0f 84 53 f8 ff ff je 1009ac <_translate_sc+0x138> 101159: a1 00 80 10 00 mov 0x108000,%eax 10115e: 85 c0 test %eax,%eax 101160: 0f 85 46 f8 ff ff jne 1009ac <_translate_sc+0x138> 101166: ba 35 00 00 00 mov $0x35,%edx 10116b: e9 3c f8 ff ff jmp 1009ac <_translate_sc+0x138> 101170: a1 54 84 10 00 mov 0x108454,%eax 101175: 31 d2 xor %edx,%edx 101177: 85 c0 test %eax,%eax 101179: 0f 84 2d f8 ff ff je 1009ac <_translate_sc+0x138> 10117f: 8b 0d 00 80 10 00 mov 0x108000,%ecx 101185: 85 c9 test %ecx,%ecx 101187: 0f 85 1f f8 ff ff jne 1009ac <_translate_sc+0x138> 10118d: ba 36 00 00 00 mov $0x36,%edx 101192: e9 15 f8 ff ff jmp 1009ac <_translate_sc+0x138> 101197: ba 2b 00 00 00 mov $0x2b,%edx 10119c: e9 0b f8 ff ff jmp 1009ac <_translate_sc+0x138> 1011a1: a1 54 84 10 00 mov 0x108454,%eax 1011a6: 31 d2 xor %edx,%edx 1011a8: 85 c0 test %eax,%eax 1011aa: 0f 84 fc f7 ff ff je 1009ac <_translate_sc+0x138> 1011b0: a1 00 80 10 00 mov 0x108000,%eax 1011b5: 85 c0 test %eax,%eax 1011b7: 0f 85 ef f7 ff ff jne 1009ac <_translate_sc+0x138> 1011bd: ba 31 00 00 00 mov $0x31,%edx 1011c2: e9 e5 f7 ff ff jmp 1009ac <_translate_sc+0x138> 1011c7: a1 54 84 10 00 mov 0x108454,%eax 1011cc: 31 d2 xor %edx,%edx 1011ce: 85 c0 test %eax,%eax 1011d0: 0f 84 d6 f7 ff ff je 1009ac <_translate_sc+0x138> 1011d6: 8b 0d 00 80 10 00 mov 0x108000,%ecx 1011dc: 85 c9 test %ecx,%ecx 1011de: 0f 85 c8 f7 ff ff jne 1009ac <_translate_sc+0x138> 1011e4: ba 32 00 00 00 mov $0x32,%edx 1011e9: e9 be f7 ff ff jmp 1009ac <_translate_sc+0x138> 1011ee: a1 54 84 10 00 mov 0x108454,%eax 1011f3: 31 d2 xor %edx,%edx 1011f5: 85 c0 test %eax,%eax 1011f7: 0f 84 af f7 ff ff je 1009ac <_translate_sc+0x138> 1011fd: a1 00 80 10 00 mov 0x108000,%eax 101202: 85 c0 test %eax,%eax 101204: 0f 85 a2 f7 ff ff jne 1009ac <_translate_sc+0x138> 10120a: ba 33 00 00 00 mov $0x33,%edx 10120f: e9 98 f7 ff ff jmp 1009ac <_translate_sc+0x138> 101214: a1 54 84 10 00 mov 0x108454,%eax 101219: 31 d2 xor %edx,%edx 10121b: 85 c0 test %eax,%eax 10121d: 0f 84 89 f7 ff ff je 1009ac <_translate_sc+0x138> 101223: 8b 0d 00 80 10 00 mov 0x108000,%ecx 101229: 85 c9 test %ecx,%ecx 10122b: 0f 85 7b f7 ff ff jne 1009ac <_translate_sc+0x138> 101231: ba 30 00 00 00 mov $0x30,%edx 101236: e9 71 f7 ff ff jmp 1009ac <_translate_sc+0x138> 10123b: a1 54 84 10 00 mov 0x108454,%eax 101240: 31 d2 xor %edx,%edx 101242: 85 c0 test %eax,%eax 101244: 0f 84 62 f7 ff ff je 1009ac <_translate_sc+0x138> 10124a: 8b 0d 00 80 10 00 mov 0x108000,%ecx 101250: 85 c9 test %ecx,%ecx 101252: 0f 85 54 f7 ff ff jne 1009ac <_translate_sc+0x138> 101258: ba 2e 00 00 00 mov $0x2e,%edx 10125d: e9 4a f7 ff ff jmp 1009ac <_translate_sc+0x138> 101262: 89 f6 mov %esi,%esi 101264: 31 c0 xor %eax,%eax 101266: 31 d2 xor %edx,%edx 101268: 85 c0 test %eax,%eax 10126a: 0f 85 34 f6 ff ff jne 1008a4 <_translate_sc+0x30> 101270: e9 37 f7 ff ff jmp 1009ac <_translate_sc+0x138> 101275: 8d 76 00 lea 0x0(%esi),%esi 101278: 8b 15 40 85 10 00 mov 0x108540,%edx 10127e: 4a dec %edx 10127f: 0f 89 01 f6 ff ff jns 100886 <_translate_sc+0x12> 101285: 31 c0 xor %eax,%eax 101287: c7 05 40 85 10 00 00 movl $0x0,0x108540 10128e: 00 00 00 101291: e9 60 f6 ff ff jmp 1008f6 <_translate_sc+0x82> 101296: 89 f6 mov %esi,%esi 00101298 <handle_meta_key>: /** * handle_meta_key() * * I'll pretty this up later */ void handle_meta_key(unsigned k) { 101298: 55 push %ebp 101299: 89 e5 mov %esp,%ebp 10129b: 83 ec 08 sub $0x8,%esp int i; k = k; /* to shut gcc up */ /** * Check for the infamous three finger salute */ if((keys[KEY_RCTRL] || keys[KEY_LCTRL]) && 10129e: 8b 15 b4 83 10 00 mov 0x1083b4,%edx 1012a4: 85 d2 test %edx,%edx 1012a6: 74 69 je 101311 <handle_meta_key+0x79> 1012a8: 8b 15 20 84 10 00 mov 0x108420,%edx 1012ae: 85 d2 test %edx,%edx 1012b0: 74 0a je 1012bc <handle_meta_key+0x24> 1012b2: a1 8c 84 10 00 mov 0x10848c,%eax 1012b7: 85 c0 test %eax,%eax 1012b9: 75 51 jne 10130c <handle_meta_key+0x74> 1012bb: 90 nop (keys[KEY_RALT] || keys[KEY_LALT]) && keys[KEY_DEL]) { /** * FIXME * * This should call _send_signal() */ reboot(); } /** * Check for Alt + F1-F12 for virtual terminals */ for(i = 0; i < 10; i++) 1012bc: 31 c0 xor %eax,%eax 1012be: b9 40 83 10 00 mov $0x108340,%ecx 1012c3: 90 nop { if((keys[KEY_LALT] || keys[KEY_RALT]) && keys[i + KEY_F1]) 1012c4: 85 d2 test %edx,%edx 1012c6: 74 0a je 1012d2 <handle_meta_key+0x3a> 1012c8: 83 bc 81 ec 00 00 00 cmpl $0x0,0xec(%ecx,%eax,4) 1012cf: 00 1012d0: 75 35 jne 101307 <handle_meta_key+0x6f> 1012d2: 40 inc %eax 1012d3: 83 f8 09 cmp $0x9,%eax 1012d6: 7e ec jle 1012c4 <handle_meta_key+0x2c> { select_vc(i); return; } } if((keys[KEY_LALT] || keys[KEY_RALT]) && keys[KEY_F11]) 1012d8: 85 d2 test %edx,%edx 1012da: 74 13 je 1012ef <handle_meta_key+0x57> 1012dc: 8b 15 9c 84 10 00 mov 0x10849c,%edx 1012e2: 85 d2 test %edx,%edx 1012e4: 75 18 jne 1012fe <handle_meta_key+0x66> { select_vc(10); return; } if((keys[KEY_LALT] || keys[KEY_RALT]) && keys[KEY_F12]) 1012e6: a1 a0 84 10 00 mov 0x1084a0,%eax 1012eb: 85 c0 test %eax,%eax 1012ed: 75 02 jne 1012f1 <handle_meta_key+0x59> { select_vc(11); return; } } 1012ef: c9 leave 1012f0: c3 ret 1012f1: c7 45 08 0b 00 00 00 movl $0xb,0x8(%ebp) 1012f8: c9 leave 1012f9: e9 06 35 00 00 jmp 104804 <select_vc> 1012fe: c7 45 08 0a 00 00 00 movl $0xa,0x8(%ebp) 101305: eb f1 jmp 1012f8 <handle_meta_key+0x60> 101307: 89 45 08 mov %eax,0x8(%ebp) 10130a: eb ec jmp 1012f8 <handle_meta_key+0x60> 10130c: e8 d3 f4 ff ff call 1007e4 <reboot> 101311: 8b 15 20 84 10 00 mov 0x108420,%edx 101317: eb a3 jmp 1012bc <handle_meta_key+0x24> 101319: 8d 76 00 lea 0x0(%esi),%esi 0010131c <keyboard_irq>: /** * keyboard_irq() * * Called when a keyboard interrupt is generated. */ void keyboard_irq(void) { 10131c: 55 push %ebp 10131d: 89 e5 mov %esp,%ebp 10131f: 53 push %ebx 101320: 83 ec 10 sub $0x10,%esp register char a; unsigned c; unsigned short kbdstat; rawkey = inportb(0x60); 101323: 6a 60 push $0x60 101325: e8 ea 3c 00 00 call 105014 <inportb> 10132a: a3 20 83 10 00 mov %eax,0x108320 outportb(0x61, (a=inportb(0x61)|0x82)); 10132f: c7 04 24 61 00 00 00 movl $0x61,(%esp,1) 101336: e8 d9 3c 00 00 call 105014 <inportb> 10133b: 83 c8 82 or $0xffffff82,%eax 10133e: 59 pop %ecx 10133f: 5b pop %ebx 101340: 0f be d8 movsbl %al,%ebx 101343: 53 push %ebx 101344: 6a 61 push $0x61 101346: e8 69 3d 00 00 call 1050b4 <outportb> outportb(0x61, a & 0x7F); 10134b: 58 pop %eax 10134c: 5a pop %edx 10134d: 83 e3 7f and $0x7f,%ebx 101350: 53 push %ebx 101351: 6a 61 push $0x61 101353: e8 5c 3d 00 00 call 1050b4 <outportb> /** * If it's less than 0x80 then it's definatelly * a make code or a repeat code */ if(rawkey < 0x80) 101358: 8b 0d 20 83 10 00 mov 0x108320,%ecx 10135e: 83 c4 10 add $0x10,%esp 101361: 83 f9 7f cmp $0x7f,%ecx 101364: 7f 6a jg 1013d0 <keyboard_irq+0xb4> { /** * We don't want to gunk up the numlock key * because we will define it's state in the * break code a bit later */ if((rawkey != KEYP_NUMLCK) && (rawkey != KEY_SCRLCK) && (rawkey != KEY_CAPS)) 101366: 8d 41 bb lea 0xffffffbb(%ecx),%eax 101369: 83 f8 01 cmp $0x1,%eax 10136c: 76 10 jbe 10137e <keyboard_irq+0x62> 10136e: 83 f9 3a cmp $0x3a,%ecx 101371: 74 0b je 10137e <keyboard_irq+0x62> keys[rawkey] = 1; 101373: c7 04 8d 40 83 10 00 movl $0x1,0x108340(,%ecx,4) 10137a: 01 00 00 00 keyDown(rawkey); 10137e: 83 ec 0c sub $0xc,%esp 101381: ff 35 20 83 10 00 pushl 0x108320 101387: e8 c4 ee ff ff call 100250 <keyDown> 10138c: 58 pop %eax } else /* rawkey >= 0x80 */ { if(rawkey == 0xE0) { /** * It's either a make code, break code, or repeat code */ rawkey = inportb(0x60); outportb(0x61, (a=inportb(0x61)|0x82)); outportb(0x61, a & 0x7F); if(rawkey < 0x80) { /** * Ok, it's a make code or repeat code for the numeric * keypad (gray keys) */ keys[rawkey] = 1; keyDown(rawkey); } else /* rawkey >= 0x80 */ { /** * It's either a make code for the numeric keypad or * a break code for the numeric keypad. */ if(rawkey == 0x2A) { /** * Ok, we have a make code for the numeric keypad * and NUMLOCK is on. The second byte is what we * want since what we have so far is this: * * 0xE0 0x2A */ rawkey = inportb(0x60); outportb(0x61, (a=inportb(0x61)|0x82)); outportb(0x61, a & 0x7F); rawkey = inportb(0x60); outportb(0x61, (a=inportb(0x61)|0x82)); outportb(0x61, a & 0x7F); keys[rawkey] = 1; keyDown(rawkey); } else { /** * It's a break code from the numeric keypad. */ keys[rawkey] = 0; keyUp(rawkey); } } } else /* rawkey != 0xE0 */ { /** * It's a break code * * Make sure we toggle the numlock, scroll lock, and caps lock key. */ if(((rawkey - 0x80) == KEYP_NUMLCK) || ((rawkey - 0x80) == KEY_SCRLCK) || ((rawkey - 0x80) == KEY_CAPS)) { keys[rawkey - 0x80] = !keys[rawkey - 0x80]; kbdstat = 0; if(keys[KEY_SCRLCK]) kbdstat |= 1; if(keys[KEYP_NUMLCK]) kbdstat |= 2; if(keys[KEY_CAPS]) kbdstat |= 4; _write_kb(0x60, 0xED); _write_kb(0x60, kbdstat); outportb(0x20, 0x20); keyUp(rawkey); return; } keys[rawkey - 0x80] = 0; keyUp(rawkey); } } c = _translate_sc(rawkey); 10138d: ff 35 20 83 10 00 pushl 0x108320 101393: e8 dc f4 ff ff call 100874 <_translate_sc> if(c != 0) 101398: 83 c4 10 add $0x10,%esp 10139b: 85 c0 test %eax,%eax 10139d: 74 21 je 1013c0 <keyboard_irq+0xa4> printf("%c", c); 10139f: 83 ec 08 sub $0x8,%esp 1013a2: 50 push %eax 1013a3: 68 e5 51 10 00 push $0x1051e5 1013a8: e8 27 3d 00 00 call 1050d4 <printf> 1013ad: 59 pop %ecx 1013ae: 5b pop %ebx else { /** * We need to check for meta-key-crap here */ handle_meta_key(rawkey); } //enable(); outportb(0x20, 0x20); 1013af: 6a 20 push $0x20 1013b1: 6a 20 push $0x20 1013b3: e8 fc 3c 00 00 call 1050b4 <outportb> } 1013b8: 8b 5d fc mov 0xfffffffc(%ebp),%ebx 1013bb: c9 leave 1013bc: c3 ret 1013bd: 8d 76 00 lea 0x0(%esi),%esi 1013c0: 83 ec 0c sub $0xc,%esp 1013c3: ff 35 20 83 10 00 pushl 0x108320 1013c9: e8 ca fe ff ff call 101298 <handle_meta_key> 1013ce: eb dd jmp 1013ad <keyboard_irq+0x91> 1013d0: 81 f9 e0 00 00 00 cmp $0xe0,%ecx 1013d6: 0f 84 a5 00 00 00 je 101481 <keyboard_irq+0x165> 1013dc: 8d 81 3b ff ff ff lea 0xffffff3b(%ecx),%eax 1013e2: 83 f8 01 cmp $0x1,%eax 1013e5: 76 21 jbe 101408 <keyboard_irq+0xec> 1013e7: 81 f9 ba 00 00 00 cmp $0xba,%ecx 1013ed: 74 19 je 101408 <keyboard_irq+0xec> 1013ef: 83 ec 0c sub $0xc,%esp 1013f2: c7 04 8d 40 81 10 00 movl $0x0,0x108140(,%ecx,4) 1013f9: 00 00 00 00 1013fd: 51 push %ecx 1013fe: e8 55 ee ff ff call 100258 <keyUp> 101403: eb 87 jmp 10138c <keyboard_irq+0x70> 101405: 8d 76 00 lea 0x0(%esi),%esi 101408: ba 40 83 10 00 mov $0x108340,%edx 10140d: 31 c0 xor %eax,%eax 10140f: 83 bc 8a 00 fe ff ff cmpl $0x0,0xfffffe00(%edx,%ecx,4) 101416: 00 101417: 0f 94 c0 sete %al 10141a: 89 84 8a 00 fe ff ff mov %eax,0xfffffe00(%edx,%ecx,4) 101421: a1 58 84 10 00 mov 0x108458,%eax 101426: 31 db xor %ebx,%ebx 101428: 85 c0 test %eax,%eax 10142a: 74 05 je 101431 <keyboard_irq+0x115> 10142c: bb 01 00 00 00 mov $0x1,%ebx 101431: a1 54 84 10 00 mov 0x108454,%eax 101436: 85 c0 test %eax,%eax 101438: 74 03 je 10143d <keyboard_irq+0x121> 10143a: 83 cb 02 or $0x2,%ebx 10143d: a1 28 84 10 00 mov 0x108428,%eax 101442: 85 c0 test %eax,%eax 101444: 74 03 je 101449 <keyboard_irq+0x12d> 101446: 83 cb 04 or $0x4,%ebx 101449: 83 ec 08 sub $0x8,%esp 10144c: 68 ed 00 00 00 push $0xed 101451: 6a 60 push $0x60 101453: e8 d4 f3 ff ff call 10082c <_write_kb> 101458: 59 pop %ecx 101459: 58 pop %eax 10145a: 0f b7 c3 movzwl %bx,%eax 10145d: 50 push %eax 10145e: 6a 60 push $0x60 101460: e8 c7 f3 ff ff call 10082c <_write_kb> 101465: 58 pop %eax 101466: 5a pop %edx 101467: 6a 20 push $0x20 101469: 6a 20 push $0x20 10146b: e8 44 3c 00 00 call 1050b4 <outportb> 101470: 58 pop %eax 101471: ff 35 20 83 10 00 pushl 0x108320 101477: e8 dc ed ff ff call 100258 <keyUp> 10147c: e9 37 ff ff ff jmp 1013b8 <keyboard_irq+0x9c> 101481: 83 ec 0c sub $0xc,%esp 101484: 6a 60 push $0x60 101486: e8 89 3b 00 00 call 105014 <inportb> 10148b: a3 20 83 10 00 mov %eax,0x108320 101490: c7 04 24 61 00 00 00 movl $0x61,(%esp,1) 101497: e8 78 3b 00 00 call 105014 <inportb> 10149c: 83 c8 82 or $0xffffff82,%eax 10149f: 59 pop %ecx 1014a0: 5b pop %ebx 1014a1: 0f be d8 movsbl %al,%ebx 1014a4: 53 push %ebx 1014a5: 6a 61 push $0x61 1014a7: e8 08 3c 00 00 call 1050b4 <outportb> 1014ac: 58 pop %eax 1014ad: 5a pop %edx 1014ae: 83 e3 7f and $0x7f,%ebx 1014b1: 53 push %ebx 1014b2: 6a 61 push $0x61 1014b4: e8 fb 3b 00 00 call 1050b4 <outportb> 1014b9: a1 20 83 10 00 mov 0x108320,%eax 1014be: 83 c4 10 add $0x10,%esp 1014c1: 83 f8 7f cmp $0x7f,%eax 1014c4: 0f 8e a2 00 00 00 jle 10156c <keyboard_irq+0x250> 1014ca: 83 f8 2a cmp $0x2a,%eax 1014cd: 74 14 je 1014e3 <keyboard_irq+0x1c7> 1014cf: 83 ec 0c sub $0xc,%esp 1014d2: 50 push %eax 1014d3: c7 04 85 40 83 10 00 movl $0x0,0x108340(,%eax,4) 1014da: 00 00 00 00 1014de: e9 1b ff ff ff jmp 1013fe <keyboard_irq+0xe2> 1014e3: 83 ec 0c sub $0xc,%esp 1014e6: 6a 60 push $0x60 1014e8: e8 27 3b 00 00 call 105014 <inportb> 1014ed: a3 20 83 10 00 mov %eax,0x108320 1014f2: c7 04 24 61 00 00 00 movl $0x61,(%esp,1) 1014f9: e8 16 3b 00 00 call 105014 <inportb> 1014fe: 83 c8 82 or $0xffffff82,%eax 101501: 59 pop %ecx 101502: 5b pop %ebx 101503: 0f be d8 movsbl %al,%ebx 101506: 53 push %ebx 101507: 6a 61 push $0x61 101509: e8 a6 3b 00 00 call 1050b4 <outportb> 10150e: 58 pop %eax 10150f: 5a pop %edx 101510: 83 e3 7f and $0x7f,%ebx 101513: 53 push %ebx 101514: 6a 61 push $0x61 101516: e8 99 3b 00 00 call 1050b4 <outportb> 10151b: c7 04 24 60 00 00 00 movl $0x60,(%esp,1) 101522: e8 ed 3a 00 00 call 105014 <inportb> 101527: a3 20 83 10 00 mov %eax,0x108320 10152c: c7 04 24 61 00 00 00 movl $0x61,(%esp,1) 101533: e8 dc 3a 00 00 call 105014 <inportb> 101538: 83 c8 82 or $0xffffff82,%eax 10153b: 5a pop %edx 10153c: 59 pop %ecx 10153d: 0f be d8 movsbl %al,%ebx 101540: 53 push %ebx 101541: 6a 61 push $0x61 101543: e8 6c 3b 00 00 call 1050b4 <outportb> 101548: 59 pop %ecx 101549: 58 pop %eax 10154a: 83 e3 7f and $0x7f,%ebx 10154d: 53 push %ebx 10154e: 6a 61 push $0x61 101550: e8 5f 3b 00 00 call 1050b4 <outportb> 101555: a1 20 83 10 00 mov 0x108320,%eax 10155a: 5a pop %edx 10155b: c7 04 85 40 83 10 00 movl $0x1,0x108340(,%eax,4) 101562: 01 00 00 00 101566: 50 push %eax 101567: e9 1b fe ff ff jmp 101387 <keyboard_irq+0x6b> 10156c: c7 04 85 40 83 10 00 movl $0x1,0x108340(,%eax,4) 101573: 01 00 00 00 101577: 83 ec 0c sub $0xc,%esp 10157a: eb ea jmp 101566 <keyboard_irq+0x24a> 0010157c <init_keyboard>: /** * init_keyboard() * */ void init_keyboard(void) { 10157c: 55 push %ebp 10157d: 89 e5 mov %esp,%ebp static unsigned char buffers[KBD_BUF_SIZE * MAX_VC]; int i; //klog("init", "keyboard %2u buf, %2ub each", K_KLOG_PENDING, &_vc[0]); for(i = 0; i < MAX_VC; i++) 10157f: b9 20 80 10 00 mov $0x108020,%ecx 101584: 83 ec 08 sub $0x8,%esp 101587: 31 d2 xor %edx,%edx 101589: b8 0b 00 00 00 mov $0xb,%eax { _vc[i].keystrokes.data = buffers + KBD_BUF_SIZE * i; 10158e: 89 8a e0 a2 19 00 mov %ecx,0x19a2e0(%edx) _vc[i].keystrokes.size = KBD_BUF_SIZE; 101594: c7 82 e4 a2 19 00 40 movl $0x40,0x19a2e4(%edx) 10159b: 00 00 00 10159e: 83 c1 40 add $0x40,%ecx 1015a1: 83 c2 34 add $0x34,%edx 1015a4: 48 dec %eax 1015a5: 79 e7 jns 10158e <init_keyboard+0x12> } for(i = 0; i < 128; i++) 1015a7: 31 c0 xor %eax,%eax 1015a9: 8d 76 00 lea 0x0(%esi),%esi keys[i] = 0; 1015ac: c7 04 85 40 83 10 00 movl $0x0,0x108340(,%eax,4) 1015b3: 00 00 00 00 1015b7: 40 inc %eax 1015b8: 83 f8 7f cmp $0x7f,%eax 1015bb: 7e ef jle 1015ac <init_keyboard+0x30> makebreak = 0; //klog(NULL, K_KLOG_SUCCESS, &_vc[0], NULL); //kprintf("init_kbd: %u buffers, %u bytes each\n", // MAX_VC, KBD_BUF_SIZE); //kprintf("[ Entering Runlevel 0 ].......................................................Ok"); _vc[0].attrib = 8; printf("[ "); 1015bd: 83 ec 0c sub $0xc,%esp 1015c0: 68 b6 51 10 00 push $0x1051b6 1015c5: c7 05 a0 85 10 00 00 movl $0x0,0x1085a0 1015cc: 00 00 00 1015cf: c7 05 f8 a2 19 00 08 movl $0x8,0x19a2f8 1015d6: 00 00 00 1015d9: e8 f6 3a 00 00 call 1050d4 <printf> _vc[0].attrib = 15; printf("init: keyboard %2u buf, %2ub each ", MAX_VC, KBD_BUF_SIZE); 1015de: 83 c4 0c add $0xc,%esp 1015e1: 6a 40 push $0x40 1015e3: 6a 0c push $0xc 1015e5: 68 60 58 10 00 push $0x105860 1015ea: c7 05 f8 a2 19 00 0f movl $0xf,0x19a2f8 1015f1: 00 00 00 1015f4: e8 db 3a 00 00 call 1050d4 <printf> _vc[0].attrib = 8; printf("]..........................................."); 1015f9: c7 04 24 a0 58 10 00 movl $0x1058a0,(%esp,1) 101600: c7 05 f8 a2 19 00 08 movl $0x8,0x19a2f8 101607: 00 00 00 10160a: e8 c5 3a 00 00 call 1050d4 <printf> _vc[0].attrib = 2; printf("Ok"); 10160f: c7 04 24 d9 54 10 00 movl $0x1054d9,(%esp,1) 101616: c7 05 f8 a2 19 00 02 movl $0x2,0x19a2f8 10161d: 00 00 00 101620: e8 af 3a 00 00 call 1050d4 <printf> _vc[0].attrib = 7; 101625: c7 05 f8 a2 19 00 07 movl $0x7,0x19a2f8 10162c: 00 00 00 } 10162f: c9 leave 101630: c3 ret ... 00101640 <entry>: 101640: a1 00 70 10 00 mov 0x107000,%eax 101645: 3d 2a da 44 35 cmp $0x3544da2a,%eax 10164a: 74 0b je 101657 <ds_ok> 10164c: 66 c7 05 00 80 0b 00 movw $0x9f44,0xb8000 101653: 44 9f 101655: eb fe jmp 101655 <entry+0x15> 00101657 <ds_ok>: 101657: 0f 01 15 24 70 10 00 lgdtl 0x107024 10165e: 66 b8 10 00 mov $0x10,%ax 101662: 8e d8 mov %eax,%ds 101664: 8e c0 mov %eax,%es 101666: 8e d0 mov %eax,%ss 101668: 8e e0 mov %eax,%fs 10166a: 8e e8 mov %eax,%gs 10166c: ea 73 16 10 00 18 00 ljmp $0x18,$0x101673 00101673 <sbat>: 101673: bf 00 80 10 00 mov $0x108000,%edi 101678: b9 00 b0 19 00 mov $0x19b000,%ecx 10167d: 29 f9 sub %edi,%ecx 10167f: 31 c0 xor %eax,%eax 101681: f3 aa repz stos %al,%es:(%edi) 101683: bc a4 95 10 00 mov $0x1095a4,%esp 101688: b9 00 01 00 00 mov $0x100,%ecx 10168d: bf 2a 70 10 00 mov $0x10702a,%edi 101692: be 6b 17 10 00 mov $0x10176b,%esi 00101697 <do_idt>: 101697: 89 f0 mov %esi,%eax 101699: 66 89 07 mov %ax,(%edi) 10169c: c1 e8 10 shr $0x10,%eax 10169f: 66 89 47 06 mov %ax,0x6(%edi) 1016a3: 81 c7 08 00 00 00 add $0x8,%edi 1016a9: 81 c6 26 00 00 00 add $0x26,%esi 1016af: e2 e6 loop 101697 <do_idt> 1016b1: 0f 01 1d 2a 78 10 00 lidtl 0x10782a 1016b8: 68 02 00 00 00 push $0x2 1016bd: 9d popf 1016be: e8 61 2c 00 00 call 104324 <main> 1016c3: eb fe jmp 1016c3 <do_idt+0x2c> 1016c5: 90 nop 1016c6: 90 nop 1016c7: 90 nop 001016c8 <mboot>: 1016c8: 02 b0 ad 1b 03 00 add 0x31bad(%eax),%dh 1016ce: 01 00 add %eax,(%eax) 1016d0: fb sti 1016d1: 4f dec %edi 1016d2: 51 push %ecx 1016d3: e4 c8 in $0xc8,%al 1016d5: 16 push %ss 1016d6: 10 00 adc %al,(%eax) 1016d8: 00 00 add %al,(%eax) 1016da: 10 00 adc %al,(%eax) 1016dc: 00 80 10 00 00 b0 add %al,0xb0000010(%eax) 1016e2: 19 00 sbb %eax,(%eax) 1016e4: 40 inc %eax 1016e5: 16 push %ss 1016e6: 10 00 adc %al,(%eax) 001016e8 <all_ints>: 1016e8: 58 pop %eax 1016e9: 61 popa 1016ea: 1f pop %ds 1016eb: 07 pop %es 1016ec: 0f a1 pop %fs 1016ee: 0f a9 pop %gs 1016f0: 81 c4 08 00 00 00 add $0x8,%esp 1016f6: cf iret 001016f7 <_getvect>: 1016f7: 55 push %ebp 1016f8: 89 e5 mov %esp,%ebp 1016fa: 56 push %esi 1016fb: 53 push %ebx 1016fc: 8b 75 08 mov 0x8(%ebp),%esi 1016ff: 31 db xor %ebx,%ebx 101701: 8a 5d 0c mov 0xc(%ebp),%bl 101704: c1 e3 03 shl $0x3,%ebx 101707: 8a 83 2f 70 10 00 mov 0x10702f(%ebx),%al 10170d: 89 06 mov %eax,(%esi) 10170f: b8 91 17 10 00 mov $0x101791,%eax 101714: 2d 6b 17 10 00 sub $0x10176b,%eax 101719: f6 65 0c mulb 0xc(%ebp) 10171c: 89 c3 mov %eax,%ebx 10171e: 81 c3 6b 17 10 00 add $0x10176b,%ebx 101724: 8b 83 1b 00 00 00 mov 0x1b(%ebx),%eax 10172a: 89 46 04 mov %eax,0x4(%esi) 10172d: 5b pop %ebx 10172e: 5e pop %esi 10172f: 5d pop %ebp 101730: c3 ret 00101731 <_setvect>: 101731: 55 push %ebp 101732: 89 e5 mov %esp,%ebp 101734: 56 push %esi 101735: 53 push %ebx 101736: 8b 75 08 mov 0x8(%ebp),%esi 101739: 8b 06 mov (%esi),%eax 10173b: 31 db xor %ebx,%ebx 10173d: 8a 5d 0c mov 0xc(%ebp),%bl 101740: c1 e3 03 shl $0x3,%ebx 101743: 88 83 2f 70 10 00 mov %al,0x10702f(%ebx) 101749: b8 91 17 10 00 mov $0x101791,%eax 10174e: 2d 6b 17 10 00 sub $0x10176b,%eax 101753: f6 65 0c mulb 0xc(%ebp) 101756: 89 c3 mov %eax,%ebx 101758: 81 c3 6b 17 10 00 add $0x10176b,%ebx 10175e: 8b 46 04 mov 0x4(%esi),%eax 101761: 89 83 1b 00 00 00 mov %eax,0x1b(%ebx) 101767: 5b pop %ebx 101768: 5e pop %esi 101769: 5d pop %ebp 10176a: c3 ret 0010176b <isr0>: 10176b: 6a 00 push $0x0 10176d: 6a 00 push $0x0 10176f: 0f a8 push %gs 101771: 0f a0 push %fs 101773: 06 push %es 101774: 1e push %ds 101775: 60 pusha 101776: 66 b8 10 00 mov $0x10,%ax 10177a: 8e d8 mov %eax,%ds 10177c: 8e c0 mov %eax,%es 10177e: 8e e0 mov %eax,%fs 101780: 8e e8 mov %eax,%gs 101782: 89 e0 mov %esp,%eax 101784: 50 push %eax 00101785 <isr0.1>: 101785: b8 04 3e 10 00 mov $0x103e04,%eax 10178a: ff d0 call *%eax 10178c: e9 57 ff ff ff jmp 1016e8 <all_ints> 00101791 <isr1>: 101791: 6a 00 push $0x0 101793: 6a 01 push $0x1 101795: 0f a8 push %gs 101797: 0f a0 push %fs 101799: 06 push %es 10179a: 1e push %ds 10179b: 60 pusha 10179c: 66 b8 10 00 mov $0x10,%ax 1017a0: 8e d8 mov %eax,%ds 1017a2: 8e c0 mov %eax,%es 1017a4: 8e e0 mov %eax,%fs 1017a6: 8e e8 mov %eax,%gs 1017a8: 89 e0 mov %esp,%eax 1017aa: 50 push %eax 001017ab <isr1.1>: 1017ab: b8 04 3e 10 00 mov $0x103e04,%eax 1017b0: ff d0 call *%eax 1017b2: e9 31 ff ff ff jmp 1016e8 <all_ints> 001017b7 <isr2>: 1017b7: 6a 00 push $0x0 1017b9: 6a 02 push $0x2 1017bb: 0f a8 push %gs 1017bd: 0f a0 push %fs 1017bf: 06 push %es 1017c0: 1e push %ds 1017c1: 60 pusha 1017c2: 66 b8 10 00 mov $0x10,%ax 1017c6: 8e d8 mov %eax,%ds 1017c8: 8e c0 mov %eax,%es 1017ca: 8e e0 mov %eax,%fs 1017cc: 8e e8 mov %eax,%gs 1017ce: 89 e0 mov %esp,%eax 1017d0: 50 push %eax 001017d1 <isr2.1>: 1017d1: b8 04 3e 10 00 mov $0x103e04,%eax 1017d6: ff d0 call *%eax 1017d8: e9 0b ff ff ff jmp 1016e8 <all_ints> 001017dd <isr3>: 1017dd: 6a 00 push $0x0 1017df: 6a 03 push $0x3 1017e1: 0f a8 push %gs 1017e3: 0f a0 push %fs 1017e5: 06 push %es 1017e6: 1e push %ds 1017e7: 60 pusha 1017e8: 66 b8 10 00 mov $0x10,%ax 1017ec: 8e d8 mov %eax,%ds 1017ee: 8e c0 mov %eax,%es 1017f0: 8e e0 mov %eax,%fs 1017f2: 8e e8 mov %eax,%gs 1017f4: 89 e0 mov %esp,%eax 1017f6: 50 push %eax 001017f7 <isr3.1>: 1017f7: b8 04 3e 10 00 mov $0x103e04,%eax 1017fc: ff d0 call *%eax 1017fe: e9 e5 fe ff ff jmp 1016e8 <all_ints> 00101803 <isr4>: 101803: 6a 00 push $0x0 101805: 6a 04 push $0x4 101807: 0f a8 push %gs 101809: 0f a0 push %fs 10180b: 06 push %es 10180c: 1e push %ds 10180d: 60 pusha 10180e: 66 b8 10 00 mov $0x10,%ax 101812: 8e d8 mov %eax,%ds 101814: 8e c0 mov %eax,%es 101816: 8e e0 mov %eax,%fs 101818: 8e e8 mov %eax,%gs 10181a: 89 e0 mov %esp,%eax 10181c: 50 push %eax 0010181d <isr4.1>: 10181d: b8 04 3e 10 00 mov $0x103e04,%eax 101822: ff d0 call *%eax 101824: e9 bf fe ff ff jmp 1016e8 <all_ints> 00101829 <isr5>: 101829: 6a 00 push $0x0 10182b: 6a 05 push $0x5 10182d: 0f a8 push %gs 10182f: 0f a0 push %fs 101831: 06 push %es 101832: 1e push %ds 101833: 60 pusha 101834: 66 b8 10 00 mov $0x10,%ax 101838: 8e d8 mov %eax,%ds 10183a: 8e c0 mov %eax,%es 10183c: 8e e0 mov %eax,%fs 10183e: 8e e8 mov %eax,%gs 101840: 89 e0 mov %esp,%eax 101842: 50 push %eax 00101843 <isr5.1>: 101843: b8 04 3e 10 00 mov $0x103e04,%eax 101848: ff d0 call *%eax 10184a: e9 99 fe ff ff jmp 1016e8 <all_ints> 0010184f <isr6>: 10184f: 6a 00 push $0x0 101851: 6a 06 push $0x6 101853: 0f a8 push %gs 101855: 0f a0 push %fs 101857: 06 push %es 101858: 1e push %ds 101859: 60 pusha 10185a: 66 b8 10 00 mov $0x10,%ax 10185e: 8e d8 mov %eax,%ds 101860: 8e c0 mov %eax,%es 101862: 8e e0 mov %eax,%fs 101864: 8e e8 mov %eax,%gs 101866: 89 e0 mov %esp,%eax 101868: 50 push %eax 00101869 <isr6.1>: 101869: b8 04 3e 10 00 mov $0x103e04,%eax 10186e: ff d0 call *%eax 101870: e9 73 fe ff ff jmp 1016e8 <all_ints> 00101875 <isr7>: 101875: 6a 00 push $0x0 101877: 6a 07 push $0x7 101879: 0f a8 push %gs 10187b: 0f a0 push %fs 10187d: 06 push %es 10187e: 1e push %ds 10187f: 60 pusha 101880: 66 b8 10 00 mov $0x10,%ax 101884: 8e d8 mov %eax,%ds 101886: 8e c0 mov %eax,%es 101888: 8e e0 mov %eax,%fs 10188a: 8e e8 mov %eax,%gs 10188c: 89 e0 mov %esp,%eax 10188e: 50 push %eax 0010188f <isr7.1>: 10188f: b8 04 3e 10 00 mov $0x103e04,%eax 101894: ff d0 call *%eax 101896: e9 4d fe ff ff jmp 1016e8 <all_ints> 0010189b <isr8>: 10189b: 90 nop 10189c: 90 nop 10189d: 6a 08 push $0x8 10189f: 0f a8 push %gs 1018a1: 0f a0 push %fs 1018a3: 06 push %es 1018a4: 1e push %ds 1018a5: 60 pusha 1018a6: 66 b8 10 00 mov $0x10,%ax 1018aa: 8e d8 mov %eax,%ds 1018ac: 8e c0 mov %eax,%es 1018ae: 8e e0 mov %eax,%fs 1018b0: 8e e8 mov %eax,%gs 1018b2: 89 e0 mov %esp,%eax 1018b4: 50 push %eax 001018b5 <isr8.1>: 1018b5: b8 04 3e 10 00 mov $0x103e04,%eax 1018ba: ff d0 call *%eax 1018bc: e9 27 fe ff ff jmp 1016e8 <all_ints> 001018c1 <isr9>: 1018c1: 6a 00 push $0x0 1018c3: 6a 09 push $0x9 1018c5: 0f a8 push %gs 1018c7: 0f a0 push %fs 1018c9: 06 push %es 1018ca: 1e push %ds 1018cb: 60 pusha 1018cc: 66 b8 10 00 mov $0x10,%ax 1018d0: 8e d8 mov %eax,%ds 1018d2: 8e c0 mov %eax,%es 1018d4: 8e e0 mov %eax,%fs 1018d6: 8e e8 mov %eax,%gs 1018d8: 89 e0 mov %esp,%eax 1018da: 50 push %eax 001018db <isr9.1>: 1018db: b8 04 3e 10 00 mov $0x103e04,%eax 1018e0: ff d0 call *%eax 1018e2: e9 01 fe ff ff jmp 1016e8 <all_ints> 001018e7 <isr0Ah>: 1018e7: 90 nop 1018e8: 90 nop 1018e9: 6a 0a push $0xa 1018eb: 0f a8 push %gs 1018ed: 0f a0 push %fs 1018ef: 06 push %es 1018f0: 1e push %ds 1018f1: 60 pusha 1018f2: 66 b8 10 00 mov $0x10,%ax 1018f6: 8e d8 mov %eax,%ds 1018f8: 8e c0 mov %eax,%es 1018fa: 8e e0 mov %eax,%fs 1018fc: 8e e8 mov %eax,%gs 1018fe: 89 e0 mov %esp,%eax 101900: 50 push %eax 00101901 <isr0Ah.1>: 101901: b8 04 3e 10 00 mov $0x103e04,%eax 101906: ff d0 call *%eax 101908: e9 db fd ff ff jmp 1016e8 <all_ints> 0010190d <isr0Bh>: 10190d: 90 nop 10190e: 90 nop 10190f: 6a 0b push $0xb 101911: 0f a8 push %gs 101913: 0f a0 push %fs 101915: 06 push %es 101916: 1e push %ds 101917: 60 pusha 101918: 66 b8 10 00 mov $0x10,%ax 10191c: 8e d8 mov %eax,%ds 10191e: 8e c0 mov %eax,%es 101920: 8e e0 mov %eax,%fs 101922: 8e e8 mov %eax,%gs 101924: 89 e0 mov %esp,%eax 101926: 50 push %eax 00101927 <isr0Bh.1>: 101927: b8 04 3e 10 00 mov $0x103e04,%eax 10192c: ff d0 call *%eax 10192e: e9 b5 fd ff ff jmp 1016e8 <all_ints> 00101933 <isr0Ch>: 101933: 90 nop 101934: 90 nop 101935: 6a 0c push $0xc 101937: 0f a8 push %gs 101939: 0f a0 push %fs 10193b: 06 push %es 10193c: 1e push %ds 10193d: 60 pusha 10193e: 66 b8 10 00 mov $0x10,%ax 101942: 8e d8 mov %eax,%ds 101944: 8e c0 mov %eax,%es 101946: 8e e0 mov %eax,%fs 101948: 8e e8 mov %eax,%gs 10194a: 89 e0 mov %esp,%eax 10194c: 50 push %eax 0010194d <isr0Ch.1>: 10194d: b8 04 3e 10 00 mov $0x103e04,%eax 101952: ff d0 call *%eax 101954: e9 8f fd ff ff jmp 1016e8 <all_ints> 00101959 <isr0Dh>: 101959: 90 nop 10195a: 90 nop 10195b: 6a 0d push $0xd 10195d: 0f a8 push %gs 10195f: 0f a0 push %fs 101961: 06 push %es 101962: 1e push %ds 101963: 60 pusha 101964: 66 b8 10 00 mov $0x10,%ax 101968: 8e d8 mov %eax,%ds 10196a: 8e c0 mov %eax,%es 10196c: 8e e0 mov %eax,%fs 10196e: 8e e8 mov %eax,%gs 101970: 89 e0 mov %esp,%eax 101972: 50 push %eax 00101973 <isr0Dh.1>: 101973: b8 04 3e 10 00 mov $0x103e04,%eax 101978: ff d0 call *%eax 10197a: e9 69 fd ff ff jmp 1016e8 <all_ints> 0010197f <isr0Eh>: 10197f: 90 nop 101980: 90 nop 101981: 6a 0e push $0xe 101983: 0f a8 push %gs 101985: 0f a0 push %fs 101987: 06 push %es 101988: 1e push %ds 101989: 60 pusha 10198a: 66 b8 10 00 mov $0x10,%ax 10198e: 8e d8 mov %eax,%ds 101990: 8e c0 mov %eax,%es 101992: 8e e0 mov %eax,%fs 101994: 8e e8 mov %eax,%gs 101996: 89 e0 mov %esp,%eax 101998: 50 push %eax 00101999 <isr0Eh.1>: 101999: b8 04 3e 10 00 mov $0x103e04,%eax 10199e: ff d0 call *%eax 1019a0: e9 43 fd ff ff jmp 1016e8 <all_ints> 001019a5 <isr0Fh>: 1019a5: 6a 00 push $0x0 1019a7: 6a 0f push $0xf 1019a9: 0f a8 push %gs 1019ab: 0f a0 push %fs 1019ad: 06 push %es 1019ae: 1e push %ds 1019af: 60 pusha 1019b0: 66 b8 10 00 mov $0x10,%ax 1019b4: 8e d8 mov %eax,%ds 1019b6: 8e c0 mov %eax,%es 1019b8: 8e e0 mov %eax,%fs 1019ba: 8e e8 mov %eax,%gs 1019bc: 89 e0 mov %esp,%eax 1019be: 50 push %eax 001019bf <isr0Fh.1>: 1019bf: b8 04 3e 10 00 mov $0x103e04,%eax 1019c4: ff d0 call *%eax 1019c6: e9 1d fd ff ff jmp 1016e8 <all_ints> 001019cb <isr10h>: 1019cb: 6a 00 push $0x0 1019cd: 6a 10 push $0x10 1019cf: 0f a8 push %gs 1019d1: 0f a0 push %fs 1019d3: 06 push %es 1019d4: 1e push %ds 1019d5: 60 pusha 1019d6: 66 b8 10 00 mov $0x10,%ax 1019da: 8e d8 mov %eax,%ds 1019dc: 8e c0 mov %eax,%es 1019de: 8e e0 mov %eax,%fs 1019e0: 8e e8 mov %eax,%gs 1019e2: 89 e0 mov %esp,%eax 1019e4: 50 push %eax 001019e5 <isr10h.1>: 1019e5: b8 04 3e 10 00 mov $0x103e04,%eax 1019ea: ff d0 call *%eax 1019ec: e9 f7 fc ff ff jmp 1016e8 <all_ints> 001019f1 <isr11h>: 1019f1: 6a 00 push $0x0 1019f3: 6a 11 push $0x11 1019f5: 0f a8 push %gs 1019f7: 0f a0 push %fs 1019f9: 06 push %es 1019fa: 1e push %ds 1019fb: 60 pusha 1019fc: 66 b8 10 00 mov $0x10,%ax 101a00: 8e d8 mov %eax,%ds 101a02: 8e c0 mov %eax,%es 101a04: 8e e0 mov %eax,%fs 101a06: 8e e8 mov %eax,%gs 101a08: 89 e0 mov %esp,%eax 101a0a: 50 push %eax 00101a0b <isr11h.1>: 101a0b: b8 04 3e 10 00 mov $0x103e04,%eax 101a10: ff d0 call *%eax 101a12: e9 d1 fc ff ff jmp 1016e8 <all_ints> 00101a17 <isr12h>: 101a17: 6a 00 push $0x0 101a19: 6a 12 push $0x12 101a1b: 0f a8 push %gs 101a1d: 0f a0 push %fs 101a1f: 06 push %es 101a20: 1e push %ds 101a21: 60 pusha 101a22: 66 b8 10 00 mov $0x10,%ax 101a26: 8e d8 mov %eax,%ds 101a28: 8e c0 mov %eax,%es 101a2a: 8e e0 mov %eax,%fs 101a2c: 8e e8 mov %eax,%gs 101a2e: 89 e0 mov %esp,%eax 101a30: 50 push %eax 00101a31 <isr12h.1>: 101a31: b8 04 3e 10 00 mov $0x103e04,%eax 101a36: ff d0 call *%eax 101a38: e9 ab fc ff ff jmp 1016e8 <all_ints> 00101a3d <isr13h>: 101a3d: 6a 00 push $0x0 101a3f: 6a 13 push $0x13 101a41: 0f a8 push %gs 101a43: 0f a0 push %fs 101a45: 06 push %es 101a46: 1e push %ds 101a47: 60 pusha 101a48: 66 b8 10 00 mov $0x10,%ax 101a4c: 8e d8 mov %eax,%ds 101a4e: 8e c0 mov %eax,%es 101a50: 8e e0 mov %eax,%fs 101a52: 8e e8 mov %eax,%gs 101a54: 89 e0 mov %esp,%eax 101a56: 50 push %eax 00101a57 <isr13h.1>: 101a57: b8 04 3e 10 00 mov $0x103e04,%eax 101a5c: ff d0 call *%eax 101a5e: e9 85 fc ff ff jmp 1016e8 <all_ints> 00101a63 <isr14h>: 101a63: 6a 00 push $0x0 101a65: 6a 14 push $0x14 101a67: 0f a8 push %gs 101a69: 0f a0 push %fs 101a6b: 06 push %es 101a6c: 1e push %ds 101a6d: 60 pusha 101a6e: 66 b8 10 00 mov $0x10,%ax 101a72: 8e d8 mov %eax,%ds 101a74: 8e c0 mov %eax,%es 101a76: 8e e0 mov %eax,%fs 101a78: 8e e8 mov %eax,%gs 101a7a: 89 e0 mov %esp,%eax 101a7c: 50 push %eax 00101a7d <isr14h.1>: 101a7d: b8 04 3e 10 00 mov $0x103e04,%eax 101a82: ff d0 call *%eax 101a84: e9 5f fc ff ff jmp 1016e8 <all_ints> 00101a89 <isr15h>: 101a89: 6a 00 push $0x0 101a8b: 6a 15 push $0x15 101a8d: 0f a8 push %gs 101a8f: 0f a0 push %fs 101a91: 06 push %es 101a92: 1e push %ds 101a93: 60 pusha 101a94: 66 b8 10 00 mov $0x10,%ax 101a98: 8e d8 mov %eax,%ds 101a9a: 8e c0 mov %eax,%es 101a9c: 8e e0 mov %eax,%fs 101a9e: 8e e8 mov %eax,%gs 101aa0: 89 e0 mov %esp,%eax 101aa2: 50 push %eax 00101aa3 <isr15h.1>: 101aa3: b8 04 3e 10 00 mov $0x103e04,%eax 101aa8: ff d0 call *%eax 101aaa: e9 39 fc ff ff jmp 1016e8 <all_ints> 00101aaf <isr16h>: 101aaf: 6a 00 push $0x0 101ab1: 6a 16 push $0x16 101ab3: 0f a8 push %gs 101ab5: 0f a0 push %fs 101ab7: 06 push %es 101ab8: 1e push %ds 101ab9: 60 pusha 101aba: 66 b8 10 00 mov $0x10,%ax 101abe: 8e d8 mov %eax,%ds 101ac0: 8e c0 mov %eax,%es 101ac2: 8e e0 mov %eax,%fs 101ac4: 8e e8 mov %eax,%gs 101ac6: 89 e0 mov %esp,%eax 101ac8: 50 push %eax 00101ac9 <isr16h.1>: 101ac9: b8 04 3e 10 00 mov $0x103e04,%eax 101ace: ff d0 call *%eax 101ad0: e9 13 fc ff ff jmp 1016e8 <all_ints> 00101ad5 <isr17h>: 101ad5: 6a 00 push $0x0 101ad7: 6a 17 push $0x17 101ad9: 0f a8 push %gs 101adb: 0f a0 push %fs 101add: 06 push %es 101ade: 1e push %ds 101adf: 60 pusha 101ae0: 66 b8 10 00 mov $0x10,%ax 101ae4: 8e d8 mov %eax,%ds 101ae6: 8e c0 mov %eax,%es 101ae8: 8e e0 mov %eax,%fs 101aea: 8e e8 mov %eax,%gs 101aec: 89 e0 mov %esp,%eax 101aee: 50 push %eax 00101aef <isr17h.1>: 101aef: b8 04 3e 10 00 mov $0x103e04,%eax 101af4: ff d0 call *%eax 101af6: e9 ed fb ff ff jmp 1016e8 <all_ints> 00101afb <isr18h>: 101afb: 6a 00 push $0x0 101afd: 6a 18 push $0x18 101aff: 0f a8 push %gs 101b01: 0f a0 push %fs 101b03: 06 push %es 101b04: 1e push %ds 101b05: 60 pusha 101b06: 66 b8 10 00 mov $0x10,%ax 101b0a: 8e d8 mov %eax,%ds 101b0c: 8e c0 mov %eax,%es 101b0e: 8e e0 mov %eax,%fs 101b10: 8e e8 mov %eax,%gs 101b12: 89 e0 mov %esp,%eax 101b14: 50 push %eax 00101b15 <isr18h.1>: 101b15: b8 04 3e 10 00 mov $0x103e04,%eax 101b1a: ff d0 call *%eax 101b1c: e9 c7 fb ff ff jmp 1016e8 <all_ints> 00101b21 <isr19h>: 101b21: 6a 00 push $0x0 101b23: 6a 19 push $0x19 101b25: 0f a8 push %gs 101b27: 0f a0 push %fs 101b29: 06 push %es 101b2a: 1e push %ds 101b2b: 60 pusha 101b2c: 66 b8 10 00 mov $0x10,%ax 101b30: 8e d8 mov %eax,%ds 101b32: 8e c0 mov %eax,%es 101b34: 8e e0 mov %eax,%fs 101b36: 8e e8 mov %eax,%gs 101b38: 89 e0 mov %esp,%eax 101b3a: 50 push %eax 00101b3b <isr19h.1>: 101b3b: b8 04 3e 10 00 mov $0x103e04,%eax 101b40: ff d0 call *%eax 101b42: e9 a1 fb ff ff jmp 1016e8 <all_ints> 00101b47 <isr1Ah>: 101b47: 6a 00 push $0x0 101b49: 6a 1a push $0x1a 101b4b: 0f a8 push %gs 101b4d: 0f a0 push %fs 101b4f: 06 push %es 101b50: 1e push %ds 101b51: 60 pusha 101b52: 66 b8 10 00 mov $0x10,%ax 101b56: 8e d8 mov %eax,%ds 101b58: 8e c0 mov %eax,%es 101b5a: 8e e0 mov %eax,%fs 101b5c: 8e e8 mov %eax,%gs 101b5e: 89 e0 mov %esp,%eax 101b60: 50 push %eax 00101b61 <isr1Ah.1>: 101b61: b8 04 3e 10 00 mov $0x103e04,%eax 101b66: ff d0 call *%eax 101b68: e9 7b fb ff ff jmp 1016e8 <all_ints> 00101b6d <isr1Bh>: 101b6d: 6a 00 push $0x0 101b6f: 6a 1b push $0x1b 101b71: 0f a8 push %gs 101b73: 0f a0 push %fs 101b75: 06 push %es 101b76: 1e push %ds 101b77: 60 pusha 101b78: 66 b8 10 00 mov $0x10,%ax 101b7c: 8e d8 mov %eax,%ds 101b7e: 8e c0 mov %eax,%es 101b80: 8e e0 mov %eax,%fs 101b82: 8e e8 mov %eax,%gs 101b84: 89 e0 mov %esp,%eax 101b86: 50 push %eax 00101b87 <isr1Bh.1>: 101b87: b8 04 3e 10 00 mov $0x103e04,%eax 101b8c: ff d0 call *%eax 101b8e: e9 55 fb ff ff jmp 1016e8 <all_ints> 00101b93 <isr1Ch>: 101b93: 6a 00 push $0x0 101b95: 6a 1c push $0x1c 101b97: 0f a8 push %gs 101b99: 0f a0 push %fs 101b9b: 06 push %es 101b9c: 1e push %ds 101b9d: 60 pusha 101b9e: 66 b8 10 00 mov $0x10,%ax 101ba2: 8e d8 mov %eax,%ds 101ba4: 8e c0 mov %eax,%es 101ba6: 8e e0 mov %eax,%fs 101ba8: 8e e8 mov %eax,%gs 101baa: 89 e0 mov %esp,%eax 101bac: 50 push %eax 00101bad <isr1Ch.1>: 101bad: b8 04 3e 10 00 mov $0x103e04,%eax 101bb2: ff d0 call *%eax 101bb4: e9 2f fb ff ff jmp 1016e8 <all_ints> 00101bb9 <isr1Dh>: 101bb9: 6a 00 push $0x0 101bbb: 6a 1d push $0x1d 101bbd: 0f a8 push %gs 101bbf: 0f a0 push %fs 101bc1: 06 push %es 101bc2: 1e push %ds 101bc3: 60 pusha 101bc4: 66 b8 10 00 mov $0x10,%ax 101bc8: 8e d8 mov %eax,%ds 101bca: 8e c0 mov %eax,%es 101bcc: 8e e0 mov %eax,%fs 101bce: 8e e8 mov %eax,%gs 101bd0: 89 e0 mov %esp,%eax 101bd2: 50 push %eax 00101bd3 <isr1Dh.1>: 101bd3: b8 04 3e 10 00 mov $0x103e04,%eax 101bd8: ff d0 call *%eax 101bda: e9 09 fb ff ff jmp 1016e8 <all_ints> 00101bdf <isr1Eh>: 101bdf: 6a 00 push $0x0 101be1: 6a 1e push $0x1e 101be3: 0f a8 push %gs 101be5: 0f a0 push %fs 101be7: 06 push %es 101be8: 1e push %ds 101be9: 60 pusha 101bea: 66 b8 10 00 mov $0x10,%ax 101bee: 8e d8 mov %eax,%ds 101bf0: 8e c0 mov %eax,%es 101bf2: 8e e0 mov %eax,%fs 101bf4: 8e e8 mov %eax,%gs 101bf6: 89 e0 mov %esp,%eax 101bf8: 50 push %eax 00101bf9 <isr1Eh.1>: 101bf9: b8 04 3e 10 00 mov $0x103e04,%eax 101bfe: ff d0 call *%eax 101c00: e9 e3 fa ff ff jmp 1016e8 <all_ints> 00101c05 <isr1Fh>: 101c05: 6a 00 push $0x0 101c07: 6a 1f push $0x1f 101c09: 0f a8 push %gs 101c0b: 0f a0 push %fs 101c0d: 06 push %es 101c0e: 1e push %ds 101c0f: 60 pusha 101c10: 66 b8 10 00 mov $0x10,%ax 101c14: 8e d8 mov %eax,%ds 101c16: 8e c0 mov %eax,%es 101c18: 8e e0 mov %eax,%fs 101c1a: 8e e8 mov %eax,%gs 101c1c: 89 e0 mov %esp,%eax 101c1e: 50 push %eax 00101c1f <isr1Fh.1>: 101c1f: b8 04 3e 10 00 mov $0x103e04,%eax 101c24: ff d0 call *%eax 101c26: e9 bd fa ff ff jmp 1016e8 <all_ints> 00101c2b <isr20h>: 101c2b: 6a 00 push $0x0 101c2d: 6a 20 push $0x20 101c2f: 0f a8 push %gs 101c31: 0f a0 push %fs 101c33: 06 push %es 101c34: 1e push %ds 101c35: 60 pusha 101c36: 66 b8 10 00 mov $0x10,%ax 101c3a: 8e d8 mov %eax,%ds 101c3c: 8e c0 mov %eax,%es 101c3e: 8e e0 mov %eax,%fs 101c40: 8e e8 mov %eax,%gs 101c42: 89 e0 mov %esp,%eax 101c44: 50 push %eax 00101c45 <isr20h.1>: 101c45: b8 04 3e 10 00 mov $0x103e04,%eax 101c4a: ff d0 call *%eax 101c4c: e9 97 fa ff ff jmp 1016e8 <all_ints> 00101c51 <isr21h>: 101c51: 6a 00 push $0x0 101c53: 6a 21 push $0x21 101c55: 0f a8 push %gs 101c57: 0f a0 push %fs 101c59: 06 push %es 101c5a: 1e push %ds 101c5b: 60 pusha 101c5c: 66 b8 10 00 mov $0x10,%ax 101c60: 8e d8 mov %eax,%ds 101c62: 8e c0 mov %eax,%es 101c64: 8e e0 mov %eax,%fs 101c66: 8e e8 mov %eax,%gs 101c68: 89 e0 mov %esp,%eax 101c6a: 50 push %eax 00101c6b <isr21h.1>: 101c6b: b8 04 3e 10 00 mov $0x103e04,%eax 101c70: ff d0 call *%eax 101c72: e9 71 fa ff ff jmp 1016e8 <all_ints> 00101c77 <isr22h>: 101c77: 6a 00 push $0x0 101c79: 6a 22 push $0x22 101c7b: 0f a8 push %gs 101c7d: 0f a0 push %fs 101c7f: 06 push %es 101c80: 1e push %ds 101c81: 60 pusha 101c82: 66 b8 10 00 mov $0x10,%ax 101c86: 8e d8 mov %eax,%ds 101c88: 8e c0 mov %eax,%es 101c8a: 8e e0 mov %eax,%fs 101c8c: 8e e8 mov %eax,%gs 101c8e: 89 e0 mov %esp,%eax 101c90: 50 push %eax 00101c91 <isr22h.1>: 101c91: b8 04 3e 10 00 mov $0x103e04,%eax 101c96: ff d0 call *%eax 101c98: e9 4b fa ff ff jmp 1016e8 <all_ints> 00101c9d <isr23h>: 101c9d: 6a 00 push $0x0 101c9f: 6a 23 push $0x23 101ca1: 0f a8 push %gs 101ca3: 0f a0 push %fs 101ca5: 06 push %es 101ca6: 1e push %ds 101ca7: 60 pusha 101ca8: 66 b8 10 00 mov $0x10,%ax 101cac: 8e d8 mov %eax,%ds 101cae: 8e c0 mov %eax,%es 101cb0: 8e e0 mov %eax,%fs 101cb2: 8e e8 mov %eax,%gs 101cb4: 89 e0 mov %esp,%eax 101cb6: 50 push %eax 00101cb7 <isr23h.1>: 101cb7: b8 04 3e 10 00 mov $0x103e04,%eax 101cbc: ff d0 call *%eax 101cbe: e9 25 fa ff ff jmp 1016e8 <all_ints> 00101cc3 <isr24h>: 101cc3: 6a 00 push $0x0 101cc5: 6a 24 push $0x24 101cc7: 0f a8 push %gs 101cc9: 0f a0 push %fs 101ccb: 06 push %es 101ccc: 1e push %ds 101ccd: 60 pusha 101cce: 66 b8 10 00 mov $0x10,%ax 101cd2: 8e d8 mov %eax,%ds 101cd4: 8e c0 mov %eax,%es 101cd6: 8e e0 mov %eax,%fs 101cd8: 8e e8 mov %eax,%gs 101cda: 89 e0 mov %esp,%eax 101cdc: 50 push %eax 00101cdd <isr24h.1>: 101cdd: b8 04 3e 10 00 mov $0x103e04,%eax 101ce2: ff d0 call *%eax 101ce4: e9 ff f9 ff ff jmp 1016e8 <all_ints> 00101ce9 <isr25h>: 101ce9: 6a 00 push $0x0 101ceb: 6a 25 push $0x25 101ced: 0f a8 push %gs 101cef: 0f a0 push %fs 101cf1: 06 push %es 101cf2: 1e push %ds 101cf3: 60 pusha 101cf4: 66 b8 10 00 mov $0x10,%ax 101cf8: 8e d8 mov %eax,%ds 101cfa: 8e c0 mov %eax,%es 101cfc: 8e e0 mov %eax,%fs 101cfe: 8e e8 mov %eax,%gs 101d00: 89 e0 mov %esp,%eax 101d02: 50 push %eax 00101d03 <isr25h.1>: 101d03: b8 04 3e 10 00 mov $0x103e04,%eax 101d08: ff d0 call *%eax 101d0a: e9 d9 f9 ff ff jmp 1016e8 <all_ints> 00101d0f <isr26h>: 101d0f: 6a 00 push $0x0 101d11: 6a 26 push $0x26 101d13: 0f a8 push %gs 101d15: 0f a0 push %fs 101d17: 06 push %es 101d18: 1e push %ds 101d19: 60 pusha 101d1a: 66 b8 10 00 mov $0x10,%ax 101d1e: 8e d8 mov %eax,%ds 101d20: 8e c0 mov %eax,%es 101d22: 8e e0 mov %eax,%fs 101d24: 8e e8 mov %eax,%gs 101d26: 89 e0 mov %esp,%eax 101d28: 50 push %eax 00101d29 <isr26h.1>: 101d29: b8 04 3e 10 00 mov $0x103e04,%eax 101d2e: ff d0 call *%eax 101d30: e9 b3 f9 ff ff jmp 1016e8 <all_ints> 00101d35 <isr27h>: 101d35: 6a 00 push $0x0 101d37: 6a 27 push $0x27 101d39: 0f a8 push %gs 101d3b: 0f a0 push %fs 101d3d: 06 push %es 101d3e: 1e push %ds 101d3f: 60 pusha 101d40: 66 b8 10 00 mov $0x10,%ax 101d44: 8e d8 mov %eax,%ds 101d46: 8e c0 mov %eax,%es 101d48: 8e e0 mov %eax,%fs 101d4a: 8e e8 mov %eax,%gs 101d4c: 89 e0 mov %esp,%eax 101d4e: 50 push %eax 00101d4f <isr27h.1>: 101d4f: b8 04 3e 10 00 mov $0x103e04,%eax 101d54: ff d0 call *%eax 101d56: e9 8d f9 ff ff jmp 1016e8 <all_ints> 00101d5b <isr28h>: 101d5b: 6a 00 push $0x0 101d5d: 6a 28 push $0x28 101d5f: 0f a8 push %gs 101d61: 0f a0 push %fs 101d63: 06 push %es 101d64: 1e push %ds 101d65: 60 pusha 101d66: 66 b8 10 00 mov $0x10,%ax 101d6a: 8e d8 mov %eax,%ds 101d6c: 8e c0 mov %eax,%es 101d6e: 8e e0 mov %eax,%fs 101d70: 8e e8 mov %eax,%gs 101d72: 89 e0 mov %esp,%eax 101d74: 50 push %eax 00101d75 <isr28h.1>: 101d75: b8 04 3e 10 00 mov $0x103e04,%eax 101d7a: ff d0 call *%eax 101d7c: e9 67 f9 ff ff jmp 1016e8 <all_ints> 00101d81 <isr29h>: 101d81: 6a 00 push $0x0 101d83: 6a 29 push $0x29 101d85: 0f a8 push %gs 101d87: 0f a0 push %fs 101d89: 06 push %es 101d8a: 1e push %ds 101d8b: 60 pusha 101d8c: 66 b8 10 00 mov $0x10,%ax 101d90: 8e d8 mov %eax,%ds 101d92: 8e c0 mov %eax,%es 101d94: 8e e0 mov %eax,%fs 101d96: 8e e8 mov %eax,%gs 101d98: 89 e0 mov %esp,%eax 101d9a: 50 push %eax 00101d9b <isr29h.1>: 101d9b: b8 04 3e 10 00 mov $0x103e04,%eax 101da0: ff d0 call *%eax 101da2: e9 41 f9 ff ff jmp 1016e8 <all_ints> 00101da7 <isr2Ah>: 101da7: 6a 00 push $0x0 101da9: 6a 2a push $0x2a 101dab: 0f a8 push %gs 101dad: 0f a0 push %fs 101daf: 06 push %es 101db0: 1e push %ds 101db1: 60 pusha 101db2: 66 b8 10 00 mov $0x10,%ax 101db6: 8e d8 mov %eax,%ds 101db8: 8e c0 mov %eax,%es 101dba: 8e e0 mov %eax,%fs 101dbc: 8e e8 mov %eax,%gs 101dbe: 89 e0 mov %esp,%eax 101dc0: 50 push %eax 00101dc1 <isr2Ah.1>: 101dc1: b8 04 3e 10 00 mov $0x103e04,%eax 101dc6: ff d0 call *%eax 101dc8: e9 1b f9 ff ff jmp 1016e8 <all_ints> 00101dcd <isr2Bh>: 101dcd: 6a 00 push $0x0 101dcf: 6a 2b push $0x2b 101dd1: 0f a8 push %gs 101dd3: 0f a0 push %fs 101dd5: 06 push %es 101dd6: 1e push %ds 101dd7: 60 pusha 101dd8: 66 b8 10 00 mov $0x10,%ax 101ddc: 8e d8 mov %eax,%ds 101dde: 8e c0 mov %eax,%es 101de0: 8e e0 mov %eax,%fs 101de2: 8e e8 mov %eax,%gs 101de4: 89 e0 mov %esp,%eax 101de6: 50 push %eax 00101de7 <isr2Bh.1>: 101de7: b8 04 3e 10 00 mov $0x103e04,%eax 101dec: ff d0 call *%eax 101dee: e9 f5 f8 ff ff jmp 1016e8 <all_ints> 00101df3 <isr2Ch>: 101df3: 6a 00 push $0x0 101df5: 6a 2c push $0x2c 101df7: 0f a8 push %gs 101df9: 0f a0 push %fs 101dfb: 06 push %es 101dfc: 1e push %ds 101dfd: 60 pusha 101dfe: 66 b8 10 00 mov $0x10,%ax 101e02: 8e d8 mov %eax,%ds 101e04: 8e c0 mov %eax,%es 101e06: 8e e0 mov %eax,%fs 101e08: 8e e8 mov %eax,%gs 101e0a: 89 e0 mov %esp,%eax 101e0c: 50 push %eax 00101e0d <isr2Ch.1>: 101e0d: b8 04 3e 10 00 mov $0x103e04,%eax 101e12: ff d0 call *%eax 101e14: e9 cf f8 ff ff jmp 1016e8 <all_ints> 00101e19 <isr2Dh>: 101e19: 6a 00 push $0x0 101e1b: 6a 2d push $0x2d 101e1d: 0f a8 push %gs 101e1f: 0f a0 push %fs 101e21: 06 push %es 101e22: 1e push %ds 101e23: 60 pusha 101e24: 66 b8 10 00 mov $0x10,%ax 101e28: 8e d8 mov %eax,%ds 101e2a: 8e c0 mov %eax,%es 101e2c: 8e e0 mov %eax,%fs 101e2e: 8e e8 mov %eax,%gs 101e30: 89 e0 mov %esp,%eax 101e32: 50 push %eax 00101e33 <isr2Dh.1>: 101e33: b8 04 3e 10 00 mov $0x103e04,%eax 101e38: ff d0 call *%eax 101e3a: e9 a9 f8 ff ff jmp 1016e8 <all_ints> 00101e3f <isr2Eh>: 101e3f: 6a 00 push $0x0 101e41: 6a 2e push $0x2e 101e43: 0f a8 push %gs 101e45: 0f a0 push %fs 101e47: 06 push %es 101e48: 1e push %ds 101e49: 60 pusha 101e4a: 66 b8 10 00 mov $0x10,%ax 101e4e: 8e d8 mov %eax,%ds 101e50: 8e c0 mov %eax,%es 101e52: 8e e0 mov %eax,%fs 101e54: 8e e8 mov %eax,%gs 101e56: 89 e0 mov %esp,%eax 101e58: 50 push %eax 00101e59 <isr2Eh.1>: 101e59: b8 04 3e 10 00 mov $0x103e04,%eax 101e5e: ff d0 call *%eax 101e60: e9 83 f8 ff ff jmp 1016e8 <all_ints> 00101e65 <isr2Fh>: 101e65: 6a 00 push $0x0 101e67: 6a 2f push $0x2f 101e69: 0f a8 push %gs 101e6b: 0f a0 push %fs 101e6d: 06 push %es 101e6e: 1e push %ds 101e6f: 60 pusha 101e70: 66 b8 10 00 mov $0x10,%ax 101e74: 8e d8 mov %eax,%ds 101e76: 8e c0 mov %eax,%es 101e78: 8e e0 mov %eax,%fs 101e7a: 8e e8 mov %eax,%gs 101e7c: 89 e0 mov %esp,%eax 101e7e: 50 push %eax 00101e7f <isr2Fh.1>: 101e7f: b8 04 3e 10 00 mov $0x103e04,%eax 101e84: ff d0 call *%eax 101e86: e9 5d f8 ff ff jmp 1016e8 <all_ints> 00101e8b <isr30h>: 101e8b: 6a 00 push $0x0 101e8d: 6a 30 push $0x30 101e8f: 0f a8 push %gs 101e91: 0f a0 push %fs 101e93: 06 push %es 101e94: 1e push %ds 101e95: 60 pusha 101e96: 66 b8 10 00 mov $0x10,%ax 101e9a: 8e d8 mov %eax,%ds 101e9c: 8e c0 mov %eax,%es 101e9e: 8e e0 mov %eax,%fs 101ea0: 8e e8 mov %eax,%gs 101ea2: 89 e0 mov %esp,%eax 101ea4: 50 push %eax 00101ea5 <isr30h.1>: 101ea5: b8 04 3e 10 00 mov $0x103e04,%eax 101eaa: ff d0 call *%eax 101eac: e9 37 f8 ff ff jmp 1016e8 <all_ints> 00101eb1 <isr49>: 101eb1: 6a 00 push $0x0 101eb3: 6a 31 push $0x31 101eb5: 0f a8 push %gs 101eb7: 0f a0 push %fs 101eb9: 06 push %es 101eba: 1e push %ds 101ebb: 60 pusha 101ebc: 66 b8 10 00 mov $0x10,%ax 101ec0: 8e d8 mov %eax,%ds 101ec2: 8e c0 mov %eax,%es 101ec4: 8e e0 mov %eax,%fs 101ec6: 8e e8 mov %eax,%gs 101ec8: 89 e0 mov %esp,%eax 101eca: 50 push %eax 00101ecb <isr49.1>: 101ecb: b8 04 3e 10 00 mov $0x103e04,%eax 101ed0: ff d0 call *%eax 101ed2: e9 11 f8 ff ff jmp 1016e8 <all_ints> 00101ed7 <isr50>: 101ed7: 6a 00 push $0x0 101ed9: 6a 32 push $0x32 101edb: 0f a8 push %gs 101edd: 0f a0 push %fs 101edf: 06 push %es 101ee0: 1e push %ds 101ee1: 60 pusha 101ee2: 66 b8 10 00 mov $0x10,%ax 101ee6: 8e d8 mov %eax,%ds 101ee8: 8e c0 mov %eax,%es 101eea: 8e e0 mov %eax,%fs 101eec: 8e e8 mov %eax,%gs 101eee: 89 e0 mov %esp,%eax 101ef0: 50 push %eax 00101ef1 <isr50.1>: 101ef1: b8 04 3e 10 00 mov $0x103e04,%eax 101ef6: ff d0 call *%eax 101ef8: e9 eb f7 ff ff jmp 1016e8 <all_ints> 00101efd <isr51>: 101efd: 6a 00 push $0x0 101eff: 6a 33 push $0x33 101f01: 0f a8 push %gs 101f03: 0f a0 push %fs 101f05: 06 push %es 101f06: 1e push %ds 101f07: 60 pusha 101f08: 66 b8 10 00 mov $0x10,%ax 101f0c: 8e d8 mov %eax,%ds 101f0e: 8e c0 mov %eax,%es 101f10: 8e e0 mov %eax,%fs 101f12: 8e e8 mov %eax,%gs 101f14: 89 e0 mov %esp,%eax 101f16: 50 push %eax 00101f17 <isr51.1>: 101f17: b8 04 3e 10 00 mov $0x103e04,%eax 101f1c: ff d0 call *%eax 101f1e: e9 c5 f7 ff ff jmp 1016e8 <all_ints> 00101f23 <isr52>: 101f23: 6a 00 push $0x0 101f25: 6a 34 push $0x34 101f27: 0f a8 push %gs 101f29: 0f a0 push %fs 101f2b: 06 push %es 101f2c: 1e push %ds 101f2d: 60 pusha 101f2e: 66 b8 10 00 mov $0x10,%ax 101f32: 8e d8 mov %eax,%ds 101f34: 8e c0 mov %eax,%es 101f36: 8e e0 mov %eax,%fs 101f38: 8e e8 mov %eax,%gs 101f3a: 89 e0 mov %esp,%eax 101f3c: 50 push %eax 00101f3d <isr52.1>: 101f3d: b8 04 3e 10 00 mov $0x103e04,%eax 101f42: ff d0 call *%eax 101f44: e9 9f f7 ff ff jmp 1016e8 <all_ints> 00101f49 <isr53>: 101f49: 6a 00 push $0x0 101f4b: 6a 35 push $0x35 101f4d: 0f a8 push %gs 101f4f: 0f a0 push %fs 101f51: 06 push %es 101f52: 1e push %ds 101f53: 60 pusha 101f54: 66 b8 10 00 mov $0x10,%ax 101f58: 8e d8 mov %eax,%ds 101f5a: 8e c0 mov %eax,%es 101f5c: 8e e0 mov %eax,%fs 101f5e: 8e e8 mov %eax,%gs 101f60: 89 e0 mov %esp,%eax 101f62: 50 push %eax 00101f63 <isr53.1>: 101f63: b8 04 3e 10 00 mov $0x103e04,%eax 101f68: ff d0 call *%eax 101f6a: e9 79 f7 ff ff jmp 1016e8 <all_ints> 00101f6f <isr54>: 101f6f: 6a 00 push $0x0 101f71: 6a 36 push $0x36 101f73: 0f a8 push %gs 101f75: 0f a0 push %fs 101f77: 06 push %es 101f78: 1e push %ds 101f79: 60 pusha 101f7a: 66 b8 10 00 mov $0x10,%ax 101f7e: 8e d8 mov %eax,%ds 101f80: 8e c0 mov %eax,%es 101f82: 8e e0 mov %eax,%fs 101f84: 8e e8 mov %eax,%gs 101f86: 89 e0 mov %esp,%eax 101f88: 50 push %eax 00101f89 <isr54.1>: 101f89: b8 04 3e 10 00 mov $0x103e04,%eax 101f8e: ff d0 call *%eax 101f90: e9 53 f7 ff ff jmp 1016e8 <all_ints> 00101f95 <isr55>: 101f95: 6a 00 push $0x0 101f97: 6a 37 push $0x37 101f99: 0f a8 push %gs 101f9b: 0f a0 push %fs 101f9d: 06 push %es 101f9e: 1e push %ds 101f9f: 60 pusha 101fa0: 66 b8 10 00 mov $0x10,%ax 101fa4: 8e d8 mov %eax,%ds 101fa6: 8e c0 mov %eax,%es 101fa8: 8e e0 mov %eax,%fs 101faa: 8e e8 mov %eax,%gs 101fac: 89 e0 mov %esp,%eax 101fae: 50 push %eax 00101faf <isr55.1>: 101faf: b8 04 3e 10 00 mov $0x103e04,%eax 101fb4: ff d0 call *%eax 101fb6: e9 2d f7 ff ff jmp 1016e8 <all_ints> 00101fbb <isr56>: 101fbb: 6a 00 push $0x0 101fbd: 6a 38 push $0x38 101fbf: 0f a8 push %gs 101fc1: 0f a0 push %fs 101fc3: 06 push %es 101fc4: 1e push %ds 101fc5: 60 pusha 101fc6: 66 b8 10 00 mov $0x10,%ax 101fca: 8e d8 mov %eax,%ds 101fcc: 8e c0 mov %eax,%es 101fce: 8e e0 mov %eax,%fs 101fd0: 8e e8 mov %eax,%gs 101fd2: 89 e0 mov %esp,%eax 101fd4: 50 push %eax 00101fd5 <isr56.1>: 101fd5: b8 04 3e 10 00 mov $0x103e04,%eax 101fda: ff d0 call *%eax 101fdc: e9 07 f7 ff ff jmp 1016e8 <all_ints> 00101fe1 <isr57>: 101fe1: 6a 00 push $0x0 101fe3: 6a 39 push $0x39 101fe5: 0f a8 push %gs 101fe7: 0f a0 push %fs 101fe9: 06 push %es 101fea: 1e push %ds 101feb: 60 pusha 101fec: 66 b8 10 00 mov $0x10,%ax 101ff0: 8e d8 mov %eax,%ds 101ff2: 8e c0 mov %eax,%es 101ff4: 8e e0 mov %eax,%fs 101ff6: 8e e8 mov %eax,%gs 101ff8: 89 e0 mov %esp,%eax 101ffa: 50 push %eax 00101ffb <isr57.1>: 101ffb: b8 04 3e 10 00 mov $0x103e04,%eax 102000: ff d0 call *%eax 102002: e9 e1 f6 ff ff jmp 1016e8 <all_ints> 00102007 <isr58>: 102007: 6a 00 push $0x0 102009: 6a 3a push $0x3a 10200b: 0f a8 push %gs 10200d: 0f a0 push %fs 10200f: 06 push %es 102010: 1e push %ds 102011: 60 pusha 102012: 66 b8 10 00 mov $0x10,%ax 102016: 8e d8 mov %eax,%ds 102018: 8e c0 mov %eax,%es 10201a: 8e e0 mov %eax,%fs 10201c: 8e e8 mov %eax,%gs 10201e: 89 e0 mov %esp,%eax 102020: 50 push %eax 00102021 <isr58.1>: 102021: b8 04 3e 10 00 mov $0x103e04,%eax 102026: ff d0 call *%eax 102028: e9 bb f6 ff ff jmp 1016e8 <all_ints> 0010202d <isr59>: 10202d: 6a 00 push $0x0 10202f: 6a 3b push $0x3b 102031: 0f a8 push %gs 102033: 0f a0 push %fs 102035: 06 push %es 102036: 1e push %ds 102037: 60 pusha 102038: 66 b8 10 00 mov $0x10,%ax 10203c: 8e d8 mov %eax,%ds 10203e: 8e c0 mov %eax,%es 102040: 8e e0 mov %eax,%fs 102042: 8e e8 mov %eax,%gs 102044: 89 e0 mov %esp,%eax 102046: 50 push %eax 00102047 <isr59.1>: 102047: b8 04 3e 10 00 mov $0x103e04,%eax 10204c: ff d0 call *%eax 10204e: e9 95 f6 ff ff jmp 1016e8 <all_ints> 00102053 <isr60>: 102053: 6a 00 push $0x0 102055: 6a 3c push $0x3c 102057: 0f a8 push %gs 102059: 0f a0 push %fs 10205b: 06 push %es 10205c: 1e push %ds 10205d: 60 pusha 10205e: 66 b8 10 00 mov $0x10,%ax 102062: 8e d8 mov %eax,%ds 102064: 8e c0 mov %eax,%es 102066: 8e e0 mov %eax,%fs 102068: 8e e8 mov %eax,%gs 10206a: 89 e0 mov %esp,%eax 10206c: 50 push %eax 0010206d <isr60.1>: 10206d: b8 04 3e 10 00 mov $0x103e04,%eax 102072: ff d0 call *%eax 102074: e9 6f f6 ff ff jmp 1016e8 <all_ints> 00102079 <isr61>: 102079: 6a 00 push $0x0 10207b: 6a 3d push $0x3d 10207d: 0f a8 push %gs 10207f: 0f a0 push %fs 102081: 06 push %es 102082: 1e push %ds 102083: 60 pusha 102084: 66 b8 10 00 mov $0x10,%ax 102088: 8e d8 mov %eax,%ds 10208a: 8e c0 mov %eax,%es 10208c: 8e e0 mov %eax,%fs 10208e: 8e e8 mov %eax,%gs 102090: 89 e0 mov %esp,%eax 102092: 50 push %eax 00102093 <isr61.1>: 102093: b8 04 3e 10 00 mov $0x103e04,%eax 102098: ff d0 call *%eax 10209a: e9 49 f6 ff ff jmp 1016e8 <all_ints> 0010209f <isr62>: 10209f: 6a 00 push $0x0 1020a1: 6a 3e push $0x3e 1020a3: 0f a8 push %gs 1020a5: 0f a0 push %fs 1020a7: 06 push %es 1020a8: 1e push %ds 1020a9: 60 pusha 1020aa: 66 b8 10 00 mov $0x10,%ax 1020ae: 8e d8 mov %eax,%ds 1020b0: 8e c0 mov %eax,%es 1020b2: 8e e0 mov %eax,%fs 1020b4: 8e e8 mov %eax,%gs 1020b6: 89 e0 mov %esp,%eax 1020b8: 50 push %eax 001020b9 <isr62.1>: 1020b9: b8 04 3e 10 00 mov $0x103e04,%eax 1020be: ff d0 call *%eax 1020c0: e9 23 f6 ff ff jmp 1016e8 <all_ints> 001020c5 <isr63>: 1020c5: 6a 00 push $0x0 1020c7: 6a 3f push $0x3f 1020c9: 0f a8 push %gs 1020cb: 0f a0 push %fs 1020cd: 06 push %es 1020ce: 1e push %ds 1020cf: 60 pusha 1020d0: 66 b8 10 00 mov $0x10,%ax 1020d4: 8e d8 mov %eax,%ds 1020d6: 8e c0 mov %eax,%es 1020d8: 8e e0 mov %eax,%fs 1020da: 8e e8 mov %eax,%gs 1020dc: 89 e0 mov %esp,%eax 1020de: 50 push %eax 001020df <isr63.1>: 1020df: b8 04 3e 10 00 mov $0x103e04,%eax 1020e4: ff d0 call *%eax 1020e6: e9 fd f5 ff ff jmp 1016e8 <all_ints> 001020eb <isr64>: 1020eb: 6a 00 push $0x0 1020ed: 6a 40 push $0x40 1020ef: 0f a8 push %gs 1020f1: 0f a0 push %fs 1020f3: 06 push %es 1020f4: 1e push %ds 1020f5: 60 pusha 1020f6: 66 b8 10 00 mov $0x10,%ax 1020fa: 8e d8 mov %eax,%ds 1020fc: 8e c0 mov %eax,%es 1020fe: 8e e0 mov %eax,%fs 102100: 8e e8 mov %eax,%gs 102102: 89 e0 mov %esp,%eax 102104: 50 push %eax 00102105 <isr64.1>: 102105: b8 04 3e 10 00 mov $0x103e04,%eax 10210a: ff d0 call *%eax 10210c: e9 d7 f5 ff ff jmp 1016e8 <all_ints> 00102111 <isr65>: 102111: 6a 00 push $0x0 102113: 6a 41 push $0x41 102115: 0f a8 push %gs 102117: 0f a0 push %fs 102119: 06 push %es 10211a: 1e push %ds 10211b: 60 pusha 10211c: 66 b8 10 00 mov $0x10,%ax 102120: 8e d8 mov %eax,%ds 102122: 8e c0 mov %eax,%es 102124: 8e e0 mov %eax,%fs 102126: 8e e8 mov %eax,%gs 102128: 89 e0 mov %esp,%eax 10212a: 50 push %eax 0010212b <isr65.1>: 10212b: b8 04 3e 10 00 mov $0x103e04,%eax 102130: ff d0 call *%eax 102132: e9 b1 f5 ff ff jmp 1016e8 <all_ints> 00102137 <isr66>: 102137: 6a 00 push $0x0 102139: 6a 42 push $0x42 10213b: 0f a8 push %gs 10213d: 0f a0 push %fs 10213f: 06 push %es 102140: 1e push %ds 102141: 60 pusha 102142: 66 b8 10 00 mov $0x10,%ax 102146: 8e d8 mov %eax,%ds 102148: 8e c0 mov %eax,%es 10214a: 8e e0 mov %eax,%fs 10214c: 8e e8 mov %eax,%gs 10214e: 89 e0 mov %esp,%eax 102150: 50 push %eax 00102151 <isr66.1>: 102151: b8 04 3e 10 00 mov $0x103e04,%eax 102156: ff d0 call *%eax 102158: e9 8b f5 ff ff jmp 1016e8 <all_ints> 0010215d <isr67>: 10215d: 6a 00 push $0x0 10215f: 6a 43 push $0x43 102161: 0f a8 push %gs 102163: 0f a0 push %fs 102165: 06 push %es 102166: 1e push %ds 102167: 60 pusha 102168: 66 b8 10 00 mov $0x10,%ax 10216c: 8e d8 mov %eax,%ds 10216e: 8e c0 mov %eax,%es 102170: 8e e0 mov %eax,%fs 102172: 8e e8 mov %eax,%gs 102174: 89 e0 mov %esp,%eax 102176: 50 push %eax 00102177 <isr67.1>: 102177: b8 04 3e 10 00 mov $0x103e04,%eax 10217c: ff d0 call *%eax 10217e: e9 65 f5 ff ff jmp 1016e8 <all_ints> 00102183 <isr68>: 102183: 6a 00 push $0x0 102185: 6a 44 push $0x44 102187: 0f a8 push %gs 102189: 0f a0 push %fs 10218b: 06 push %es 10218c: 1e push %ds 10218d: 60 pusha 10218e: 66 b8 10 00 mov $0x10,%ax 102192: 8e d8 mov %eax,%ds 102194: 8e c0 mov %eax,%es 102196: 8e e0 mov %eax,%fs 102198: 8e e8 mov %eax,%gs 10219a: 89 e0 mov %esp,%eax 10219c: 50 push %eax 0010219d <isr68.1>: 10219d: b8 04 3e 10 00 mov $0x103e04,%eax 1021a2: ff d0 call *%eax 1021a4: e9 3f f5 ff ff jmp 1016e8 <all_ints> 001021a9 <isr69>: 1021a9: 6a 00 push $0x0 1021ab: 6a 45 push $0x45 1021ad: 0f a8 push %gs 1021af: 0f a0 push %fs 1021b1: 06 push %es 1021b2: 1e push %ds 1021b3: 60 pusha 1021b4: 66 b8 10 00 mov $0x10,%ax 1021b8: 8e d8 mov %eax,%ds 1021ba: 8e c0 mov %eax,%es 1021bc: 8e e0 mov %eax,%fs 1021be: 8e e8 mov %eax,%gs 1021c0: 89 e0 mov %esp,%eax 1021c2: 50 push %eax 001021c3 <isr69.1>: 1021c3: b8 04 3e 10 00 mov $0x103e04,%eax 1021c8: ff d0 call *%eax 1021ca: e9 19 f5 ff ff jmp 1016e8 <all_ints> 001021cf <isr70>: 1021cf: 6a 00 push $0x0 1021d1: 6a 46 push $0x46 1021d3: 0f a8 push %gs 1021d5: 0f a0 push %fs 1021d7: 06 push %es 1021d8: 1e push %ds 1021d9: 60 pusha 1021da: 66 b8 10 00 mov $0x10,%ax 1021de: 8e d8 mov %eax,%ds 1021e0: 8e c0 mov %eax,%es 1021e2: 8e e0 mov %eax,%fs 1021e4: 8e e8 mov %eax,%gs 1021e6: 89 e0 mov %esp,%eax 1021e8: 50 push %eax 001021e9 <isr70.1>: 1021e9: b8 04 3e 10 00 mov $0x103e04,%eax 1021ee: ff d0 call *%eax 1021f0: e9 f3 f4 ff ff jmp 1016e8 <all_ints> 001021f5 <isr71>: 1021f5: 6a 00 push $0x0 1021f7: 6a 47 push $0x47 1021f9: 0f a8 push %gs 1021fb: 0f a0 push %fs 1021fd: 06 push %es 1021fe: 1e push %ds 1021ff: 60 pusha 102200: 66 b8 10 00 mov $0x10,%ax 102204: 8e d8 mov %eax,%ds 102206: 8e c0 mov %eax,%es 102208: 8e e0 mov %eax,%fs 10220a: 8e e8 mov %eax,%gs 10220c: 89 e0 mov %esp,%eax 10220e: 50 push %eax 0010220f <isr71.1>: 10220f: b8 04 3e 10 00 mov $0x103e04,%eax 102214: ff d0 call *%eax 102216: e9 cd f4 ff ff jmp 1016e8 <all_ints> 0010221b <isr72>: 10221b: 6a 00 push $0x0 10221d: 6a 48 push $0x48 10221f: 0f a8 push %gs 102221: 0f a0 push %fs 102223: 06 push %es 102224: 1e push %ds 102225: 60 pusha 102226: 66 b8 10 00 mov $0x10,%ax 10222a: 8e d8 mov %eax,%ds 10222c: 8e c0 mov %eax,%es 10222e: 8e e0 mov %eax,%fs 102230: 8e e8 mov %eax,%gs 102232: 89 e0 mov %esp,%eax 102234: 50 push %eax 00102235 <isr72.1>: 102235: b8 04 3e 10 00 mov $0x103e04,%eax 10223a: ff d0 call *%eax 10223c: e9 a7 f4 ff ff jmp 1016e8 <all_ints> 00102241 <isr73>: 102241: 6a 00 push $0x0 102243: 6a 49 push $0x49 102245: 0f a8 push %gs 102247: 0f a0 push %fs 102249: 06 push %es 10224a: 1e push %ds 10224b: 60 pusha 10224c: 66 b8 10 00 mov $0x10,%ax 102250: 8e d8 mov %eax,%ds 102252: 8e c0 mov %eax,%es 102254: 8e e0 mov %eax,%fs 102256: 8e e8 mov %eax,%gs 102258: 89 e0 mov %esp,%eax 10225a: 50 push %eax 0010225b <isr73.1>: 10225b: b8 04 3e 10 00 mov $0x103e04,%eax 102260: ff d0 call *%eax 102262: e9 81 f4 ff ff jmp 1016e8 <all_ints> 00102267 <isr74>: 102267: 6a 00 push $0x0 102269: 6a 4a push $0x4a 10226b: 0f a8 push %gs 10226d: 0f a0 push %fs 10226f: 06 push %es 102270: 1e push %ds 102271: 60 pusha 102272: 66 b8 10 00 mov $0x10,%ax 102276: 8e d8 mov %eax,%ds 102278: 8e c0 mov %eax,%es 10227a: 8e e0 mov %eax,%fs 10227c: 8e e8 mov %eax,%gs 10227e: 89 e0 mov %esp,%eax 102280: 50 push %eax 00102281 <isr74.1>: 102281: b8 04 3e 10 00 mov $0x103e04,%eax 102286: ff d0 call *%eax 102288: e9 5b f4 ff ff jmp 1016e8 <all_ints> 0010228d <isr75>: 10228d: 6a 00 push $0x0 10228f: 6a 4b push $0x4b 102291: 0f a8 push %gs 102293: 0f a0 push %fs 102295: 06 push %es 102296: 1e push %ds 102297: 60 pusha 102298: 66 b8 10 00 mov $0x10,%ax 10229c: 8e d8 mov %eax,%ds 10229e: 8e c0 mov %eax,%es 1022a0: 8e e0 mov %eax,%fs 1022a2: 8e e8 mov %eax,%gs 1022a4: 89 e0 mov %esp,%eax 1022a6: 50 push %eax 001022a7 <isr75.1>: 1022a7: b8 04 3e 10 00 mov $0x103e04,%eax 1022ac: ff d0 call *%eax 1022ae: e9 35 f4 ff ff jmp 1016e8 <all_ints> 001022b3 <isr76>: 1022b3: 6a 00 push $0x0 1022b5: 6a 4c push $0x4c 1022b7: 0f a8 push %gs 1022b9: 0f a0 push %fs 1022bb: 06 push %es 1022bc: 1e push %ds 1022bd: 60 pusha 1022be: 66 b8 10 00 mov $0x10,%ax 1022c2: 8e d8 mov %eax,%ds 1022c4: 8e c0 mov %eax,%es 1022c6: 8e e0 mov %eax,%fs 1022c8: 8e e8 mov %eax,%gs 1022ca: 89 e0 mov %esp,%eax 1022cc: 50 push %eax 001022cd <isr76.1>: 1022cd: b8 04 3e 10 00 mov $0x103e04,%eax 1022d2: ff d0 call *%eax 1022d4: e9 0f f4 ff ff jmp 1016e8 <all_ints> 001022d9 <isr77>: 1022d9: 6a 00 push $0x0 1022db: 6a 4d push $0x4d 1022dd: 0f a8 push %gs 1022df: 0f a0 push %fs 1022e1: 06 push %es 1022e2: 1e push %ds 1022e3: 60 pusha 1022e4: 66 b8 10 00 mov $0x10,%ax 1022e8: 8e d8 mov %eax,%ds 1022ea: 8e c0 mov %eax,%es 1022ec: 8e e0 mov %eax,%fs 1022ee: 8e e8 mov %eax,%gs 1022f0: 89 e0 mov %esp,%eax 1022f2: 50 push %eax 001022f3 <isr77.1>: 1022f3: b8 04 3e 10 00 mov $0x103e04,%eax 1022f8: ff d0 call *%eax 1022fa: e9 e9 f3 ff ff jmp 1016e8 <all_ints> 001022ff <isr78>: 1022ff: 6a 00 push $0x0 102301: 6a 4e push $0x4e 102303: 0f a8 push %gs 102305: 0f a0 push %fs 102307: 06 push %es 102308: 1e push %ds 102309: 60 pusha 10230a: 66 b8 10 00 mov $0x10,%ax 10230e: 8e d8 mov %eax,%ds 102310: 8e c0 mov %eax,%es 102312: 8e e0 mov %eax,%fs 102314: 8e e8 mov %eax,%gs 102316: 89 e0 mov %esp,%eax 102318: 50 push %eax 00102319 <isr78.1>: 102319: b8 04 3e 10 00 mov $0x103e04,%eax 10231e: ff d0 call *%eax 102320: e9 c3 f3 ff ff jmp 1016e8 <all_ints> 00102325 <isr79>: 102325: 6a 00 push $0x0 102327: 6a 4f push $0x4f 102329: 0f a8 push %gs 10232b: 0f a0 push %fs 10232d: 06 push %es 10232e: 1e push %ds 10232f: 60 pusha 102330: 66 b8 10 00 mov $0x10,%ax 102334: 8e d8 mov %eax,%ds 102336: 8e c0 mov %eax,%es 102338: 8e e0 mov %eax,%fs 10233a: 8e e8 mov %eax,%gs 10233c: 89 e0 mov %esp,%eax 10233e: 50 push %eax 0010233f <isr79.1>: 10233f: b8 04 3e 10 00 mov $0x103e04,%eax 102344: ff d0 call *%eax 102346: e9 9d f3 ff ff jmp 1016e8 <all_ints> 0010234b <isr80>: 10234b: 6a 00 push $0x0 10234d: 6a 50 push $0x50 10234f: 0f a8 push %gs 102351: 0f a0 push %fs 102353: 06 push %es 102354: 1e push %ds 102355: 60 pusha 102356: 66 b8 10 00 mov $0x10,%ax 10235a: 8e d8 mov %eax,%ds 10235c: 8e c0 mov %eax,%es 10235e: 8e e0 mov %eax,%fs 102360: 8e e8 mov %eax,%gs 102362: 89 e0 mov %esp,%eax 102364: 50 push %eax 00102365 <isr80.1>: 102365: b8 04 3e 10 00 mov $0x103e04,%eax 10236a: ff d0 call *%eax 10236c: e9 77 f3 ff ff jmp 1016e8 <all_ints> 00102371 <isr81>: 102371: 6a 00 push $0x0 102373: 6a 51 push $0x51 102375: 0f a8 push %gs 102377: 0f a0 push %fs 102379: 06 push %es 10237a: 1e push %ds 10237b: 60 pusha 10237c: 66 b8 10 00 mov $0x10,%ax 102380: 8e d8 mov %eax,%ds 102382: 8e c0 mov %eax,%es 102384: 8e e0 mov %eax,%fs 102386: 8e e8 mov %eax,%gs 102388: 89 e0 mov %esp,%eax 10238a: 50 push %eax 0010238b <isr81.1>: 10238b: b8 04 3e 10 00 mov $0x103e04,%eax 102390: ff d0 call *%eax 102392: e9 51 f3 ff ff jmp 1016e8 <all_ints> 00102397 <isr82>: 102397: 6a 00 push $0x0 102399: 6a 52 push $0x52 10239b: 0f a8 push %gs 10239d: 0f a0 push %fs 10239f: 06 push %es 1023a0: 1e push %ds 1023a1: 60 pusha 1023a2: 66 b8 10 00 mov $0x10,%ax 1023a6: 8e d8 mov %eax,%ds 1023a8: 8e c0 mov %eax,%es 1023aa: 8e e0 mov %eax,%fs 1023ac: 8e e8 mov %eax,%gs 1023ae: 89 e0 mov %esp,%eax 1023b0: 50 push %eax 001023b1 <isr82.1>: 1023b1: b8 04 3e 10 00 mov $0x103e04,%eax 1023b6: ff d0 call *%eax 1023b8: e9 2b f3 ff ff jmp 1016e8 <all_ints> 001023bd <isr83>: 1023bd: 6a 00 push $0x0 1023bf: 6a 53 push $0x53 1023c1: 0f a8 push %gs 1023c3: 0f a0 push %fs 1023c5: 06 push %es 1023c6: 1e push %ds 1023c7: 60 pusha 1023c8: 66 b8 10 00 mov $0x10,%ax 1023cc: 8e d8 mov %eax,%ds 1023ce: 8e c0 mov %eax,%es 1023d0: 8e e0 mov %eax,%fs 1023d2: 8e e8 mov %eax,%gs 1023d4: 89 e0 mov %esp,%eax 1023d6: 50 push %eax 001023d7 <isr83.1>: 1023d7: b8 04 3e 10 00 mov $0x103e04,%eax 1023dc: ff d0 call *%eax 1023de: e9 05 f3 ff ff jmp 1016e8 <all_ints> 001023e3 <isr84>: 1023e3: 6a 00 push $0x0 1023e5: 6a 54 push $0x54 1023e7: 0f a8 push %gs 1023e9: 0f a0 push %fs 1023eb: 06 push %es 1023ec: 1e push %ds 1023ed: 60 pusha 1023ee: 66 b8 10 00 mov $0x10,%ax 1023f2: 8e d8 mov %eax,%ds 1023f4: 8e c0 mov %eax,%es 1023f6: 8e e0 mov %eax,%fs 1023f8: 8e e8 mov %eax,%gs 1023fa: 89 e0 mov %esp,%eax 1023fc: 50 push %eax 001023fd <isr84.1>: 1023fd: b8 04 3e 10 00 mov $0x103e04,%eax 102402: ff d0 call *%eax 102404: e9 df f2 ff ff jmp 1016e8 <all_ints> 00102409 <isr85>: 102409: 6a 00 push $0x0 10240b: 6a 55 push $0x55 10240d: 0f a8 push %gs 10240f: 0f a0 push %fs 102411: 06 push %es 102412: 1e push %ds 102413: 60 pusha 102414: 66 b8 10 00 mov $0x10,%ax 102418: 8e d8 mov %eax,%ds 10241a: 8e c0 mov %eax,%es 10241c: 8e e0 mov %eax,%fs 10241e: 8e e8 mov %eax,%gs 102420: 89 e0 mov %esp,%eax 102422: 50 push %eax 00102423 <isr85.1>: 102423: b8 04 3e 10 00 mov $0x103e04,%eax 102428: ff d0 call *%eax 10242a: e9 b9 f2 ff ff jmp 1016e8 <all_ints> 0010242f <isr86>: 10242f: 6a 00 push $0x0 102431: 6a 56 push $0x56 102433: 0f a8 push %gs 102435: 0f a0 push %fs 102437: 06 push %es 102438: 1e push %ds 102439: 60 pusha 10243a: 66 b8 10 00 mov $0x10,%ax 10243e: 8e d8 mov %eax,%ds 102440: 8e c0 mov %eax,%es 102442: 8e e0 mov %eax,%fs 102444: 8e e8 mov %eax,%gs 102446: 89 e0 mov %esp,%eax 102448: 50 push %eax 00102449 <isr86.1>: 102449: b8 04 3e 10 00 mov $0x103e04,%eax 10244e: ff d0 call *%eax 102450: e9 93 f2 ff ff jmp 1016e8 <all_ints> 00102455 <isr87>: 102455: 6a 00 push $0x0 102457: 6a 57 push $0x57 102459: 0f a8 push %gs 10245b: 0f a0 push %fs 10245d: 06 push %es 10245e: 1e push %ds 10245f: 60 pusha 102460: 66 b8 10 00 mov $0x10,%ax 102464: 8e d8 mov %eax,%ds 102466: 8e c0 mov %eax,%es 102468: 8e e0 mov %eax,%fs 10246a: 8e e8 mov %eax,%gs 10246c: 89 e0 mov %esp,%eax 10246e: 50 push %eax 0010246f <isr87.1>: 10246f: b8 04 3e 10 00 mov $0x103e04,%eax 102474: ff d0 call *%eax 102476: e9 6d f2 ff ff jmp 1016e8 <all_ints> 0010247b <isr88>: 10247b: 6a 00 push $0x0 10247d: 6a 58 push $0x58 10247f: 0f a8 push %gs 102481: 0f a0 push %fs 102483: 06 push %es 102484: 1e push %ds 102485: 60 pusha 102486: 66 b8 10 00 mov $0x10,%ax 10248a: 8e d8 mov %eax,%ds 10248c: 8e c0 mov %eax,%es 10248e: 8e e0 mov %eax,%fs 102490: 8e e8 mov %eax,%gs 102492: 89 e0 mov %esp,%eax 102494: 50 push %eax 00102495 <isr88.1>: 102495: b8 04 3e 10 00 mov $0x103e04,%eax 10249a: ff d0 call *%eax 10249c: e9 47 f2 ff ff jmp 1016e8 <all_ints> 001024a1 <isr89>: 1024a1: 6a 00 push $0x0 1024a3: 6a 59 push $0x59 1024a5: 0f a8 push %gs 1024a7: 0f a0 push %fs 1024a9: 06 push %es 1024aa: 1e push %ds 1024ab: 60 pusha 1024ac: 66 b8 10 00 mov $0x10,%ax 1024b0: 8e d8 mov %eax,%ds 1024b2: 8e c0 mov %eax,%es 1024b4: 8e e0 mov %eax,%fs 1024b6: 8e e8 mov %eax,%gs 1024b8: 89 e0 mov %esp,%eax 1024ba: 50 push %eax 001024bb <isr89.1>: 1024bb: b8 04 3e 10 00 mov $0x103e04,%eax 1024c0: ff d0 call *%eax 1024c2: e9 21 f2 ff ff jmp 1016e8 <all_ints> 001024c7 <isr90>: 1024c7: 6a 00 push $0x0 1024c9: 6a 5a push $0x5a 1024cb: 0f a8 push %gs 1024cd: 0f a0 push %fs 1024cf: 06 push %es 1024d0: 1e push %ds 1024d1: 60 pusha 1024d2: 66 b8 10 00 mov $0x10,%ax 1024d6: 8e d8 mov %eax,%ds 1024d8: 8e c0 mov %eax,%es 1024da: 8e e0 mov %eax,%fs 1024dc: 8e e8 mov %eax,%gs 1024de: 89 e0 mov %esp,%eax 1024e0: 50 push %eax 001024e1 <isr90.1>: 1024e1: b8 04 3e 10 00 mov $0x103e04,%eax 1024e6: ff d0 call *%eax 1024e8: e9 fb f1 ff ff jmp 1016e8 <all_ints> 001024ed <isr91>: 1024ed: 6a 00 push $0x0 1024ef: 6a 5b push $0x5b 1024f1: 0f a8 push %gs 1024f3: 0f a0 push %fs 1024f5: 06 push %es 1024f6: 1e push %ds 1024f7: 60 pusha 1024f8: 66 b8 10 00 mov $0x10,%ax 1024fc: 8e d8 mov %eax,%ds 1024fe: 8e c0 mov %eax,%es 102500: 8e e0 mov %eax,%fs 102502: 8e e8 mov %eax,%gs 102504: 89 e0 mov %esp,%eax 102506: 50 push %eax 00102507 <isr91.1>: 102507: b8 04 3e 10 00 mov $0x103e04,%eax 10250c: ff d0 call *%eax 10250e: e9 d5 f1 ff ff jmp 1016e8 <all_ints> 00102513 <isr92>: 102513: 6a 00 push $0x0 102515: 6a 5c push $0x5c 102517: 0f a8 push %gs 102519: 0f a0 push %fs 10251b: 06 push %es 10251c: 1e push %ds 10251d: 60 pusha 10251e: 66 b8 10 00 mov $0x10,%ax 102522: 8e d8 mov %eax,%ds 102524: 8e c0 mov %eax,%es 102526: 8e e0 mov %eax,%fs 102528: 8e e8 mov %eax,%gs 10252a: 89 e0 mov %esp,%eax 10252c: 50 push %eax 0010252d <isr92.1>: 10252d: b8 04 3e 10 00 mov $0x103e04,%eax 102532: ff d0 call *%eax 102534: e9 af f1 ff ff jmp 1016e8 <all_ints> 00102539 <isr93>: 102539: 6a 00 push $0x0 10253b: 6a 5d push $0x5d 10253d: 0f a8 push %gs 10253f: 0f a0 push %fs 102541: 06 push %es 102542: 1e push %ds 102543: 60 pusha 102544: 66 b8 10 00 mov $0x10,%ax 102548: 8e d8 mov %eax,%ds 10254a: 8e c0 mov %eax,%es 10254c: 8e e0 mov %eax,%fs 10254e: 8e e8 mov %eax,%gs 102550: 89 e0 mov %esp,%eax 102552: 50 push %eax 00102553 <isr93.1>: 102553: b8 04 3e 10 00 mov $0x103e04,%eax 102558: ff d0 call *%eax 10255a: e9 89 f1 ff ff jmp 1016e8 <all_ints> 0010255f <isr94>: 10255f: 6a 00 push $0x0 102561: 6a 5e push $0x5e 102563: 0f a8 push %gs 102565: 0f a0 push %fs 102567: 06 push %es 102568: 1e push %ds 102569: 60 pusha 10256a: 66 b8 10 00 mov $0x10,%ax 10256e: 8e d8 mov %eax,%ds 102570: 8e c0 mov %eax,%es 102572: 8e e0 mov %eax,%fs 102574: 8e e8 mov %eax,%gs 102576: 89 e0 mov %esp,%eax 102578: 50 push %eax 00102579 <isr94.1>: 102579: b8 04 3e 10 00 mov $0x103e04,%eax 10257e: ff d0 call *%eax 102580: e9 63 f1 ff ff jmp 1016e8 <all_ints> 00102585 <isr95>: 102585: 6a 00 push $0x0 102587: 6a 5f push $0x5f 102589: 0f a8 push %gs 10258b: 0f a0 push %fs 10258d: 06 push %es 10258e: 1e push %ds 10258f: 60 pusha 102590: 66 b8 10 00 mov $0x10,%ax 102594: 8e d8 mov %eax,%ds 102596: 8e c0 mov %eax,%es 102598: 8e e0 mov %eax,%fs 10259a: 8e e8 mov %eax,%gs 10259c: 89 e0 mov %esp,%eax 10259e: 50 push %eax 0010259f <isr95.1>: 10259f: b8 04 3e 10 00 mov $0x103e04,%eax 1025a4: ff d0 call *%eax 1025a6: e9 3d f1 ff ff jmp 1016e8 <all_ints> 001025ab <isr96>: 1025ab: 6a 00 push $0x0 1025ad: 6a 60 push $0x60 1025af: 0f a8 push %gs 1025b1: 0f a0 push %fs 1025b3: 06 push %es 1025b4: 1e push %ds 1025b5: 60 pusha 1025b6: 66 b8 10 00 mov $0x10,%ax 1025ba: 8e d8 mov %eax,%ds 1025bc: 8e c0 mov %eax,%es 1025be: 8e e0 mov %eax,%fs 1025c0: 8e e8 mov %eax,%gs 1025c2: 89 e0 mov %esp,%eax 1025c4: 50 push %eax 001025c5 <isr96.1>: 1025c5: b8 04 3e 10 00 mov $0x103e04,%eax 1025ca: ff d0 call *%eax 1025cc: e9 17 f1 ff ff jmp 1016e8 <all_ints> 001025d1 <isr97>: 1025d1: 6a 00 push $0x0 1025d3: 6a 61 push $0x61 1025d5: 0f a8 push %gs 1025d7: 0f a0 push %fs 1025d9: 06 push %es 1025da: 1e push %ds 1025db: 60 pusha 1025dc: 66 b8 10 00 mov $0x10,%ax 1025e0: 8e d8 mov %eax,%ds 1025e2: 8e c0 mov %eax,%es 1025e4: 8e e0 mov %eax,%fs 1025e6: 8e e8 mov %eax,%gs 1025e8: 89 e0 mov %esp,%eax 1025ea: 50 push %eax 001025eb <isr97.1>: 1025eb: b8 04 3e 10 00 mov $0x103e04,%eax 1025f0: ff d0 call *%eax 1025f2: e9 f1 f0 ff ff jmp 1016e8 <all_ints> 001025f7 <isr98>: 1025f7: 6a 00 push $0x0 1025f9: 6a 62 push $0x62 1025fb: 0f a8 push %gs 1025fd: 0f a0 push %fs 1025ff: 06 push %es 102600: 1e push %ds 102601: 60 pusha 102602: 66 b8 10 00 mov $0x10,%ax 102606: 8e d8 mov %eax,%ds 102608: 8e c0 mov %eax,%es 10260a: 8e e0 mov %eax,%fs 10260c: 8e e8 mov %eax,%gs 10260e: 89 e0 mov %esp,%eax 102610: 50 push %eax 00102611 <isr98.1>: 102611: b8 04 3e 10 00 mov $0x103e04,%eax 102616: ff d0 call *%eax 102618: e9 cb f0 ff ff jmp 1016e8 <all_ints> 0010261d <isr99>: 10261d: 6a 00 push $0x0 10261f: 6a 63 push $0x63 102621: 0f a8 push %gs 102623: 0f a0 push %fs 102625: 06 push %es 102626: 1e push %ds 102627: 60 pusha 102628: 66 b8 10 00 mov $0x10,%ax 10262c: 8e d8 mov %eax,%ds 10262e: 8e c0 mov %eax,%es 102630: 8e e0 mov %eax,%fs 102632: 8e e8 mov %eax,%gs 102634: 89 e0 mov %esp,%eax 102636: 50 push %eax 00102637 <isr99.1>: 102637: b8 04 3e 10 00 mov $0x103e04,%eax 10263c: ff d0 call *%eax 10263e: e9 a5 f0 ff ff jmp 1016e8 <all_ints> 00102643 <isr100>: 102643: 6a 00 push $0x0 102645: 6a 64 push $0x64 102647: 0f a8 push %gs 102649: 0f a0 push %fs 10264b: 06 push %es 10264c: 1e push %ds 10264d: 60 pusha 10264e: 66 b8 10 00 mov $0x10,%ax 102652: 8e d8 mov %eax,%ds 102654: 8e c0 mov %eax,%es 102656: 8e e0 mov %eax,%fs 102658: 8e e8 mov %eax,%gs 10265a: 89 e0 mov %esp,%eax 10265c: 50 push %eax 0010265d <isr100.1>: 10265d: b8 04 3e 10 00 mov $0x103e04,%eax 102662: ff d0 call *%eax 102664: e9 7f f0 ff ff jmp 1016e8 <all_ints> 00102669 <isr101>: 102669: 6a 00 push $0x0 10266b: 6a 65 push $0x65 10266d: 0f a8 push %gs 10266f: 0f a0 push %fs 102671: 06 push %es 102672: 1e push %ds 102673: 60 pusha 102674: 66 b8 10 00 mov $0x10,%ax 102678: 8e d8 mov %eax,%ds 10267a: 8e c0 mov %eax,%es 10267c: 8e e0 mov %eax,%fs 10267e: 8e e8 mov %eax,%gs 102680: 89 e0 mov %esp,%eax 102682: 50 push %eax 00102683 <isr101.1>: 102683: b8 04 3e 10 00 mov $0x103e04,%eax 102688: ff d0 call *%eax 10268a: e9 59 f0 ff ff jmp 1016e8 <all_ints> 0010268f <isr102>: 10268f: 6a 00 push $0x0 102691: 6a 66 push $0x66 102693: 0f a8 push %gs 102695: 0f a0 push %fs 102697: 06 push %es 102698: 1e push %ds 102699: 60 pusha 10269a: 66 b8 10 00 mov $0x10,%ax 10269e: 8e d8 mov %eax,%ds 1026a0: 8e c0 mov %eax,%es 1026a2: 8e e0 mov %eax,%fs 1026a4: 8e e8 mov %eax,%gs 1026a6: 89 e0 mov %esp,%eax 1026a8: 50 push %eax 001026a9 <isr102.1>: 1026a9: b8 04 3e 10 00 mov $0x103e04,%eax 1026ae: ff d0 call *%eax 1026b0: e9 33 f0 ff ff jmp 1016e8 <all_ints> 001026b5 <isr103>: 1026b5: 6a 00 push $0x0 1026b7: 6a 67 push $0x67 1026b9: 0f a8 push %gs 1026bb: 0f a0 push %fs 1026bd: 06 push %es 1026be: 1e push %ds 1026bf: 60 pusha 1026c0: 66 b8 10 00 mov $0x10,%ax 1026c4: 8e d8 mov %eax,%ds 1026c6: 8e c0 mov %eax,%es 1026c8: 8e e0 mov %eax,%fs 1026ca: 8e e8 mov %eax,%gs 1026cc: 89 e0 mov %esp,%eax 1026ce: 50 push %eax 001026cf <isr103.1>: 1026cf: b8 04 3e 10 00 mov $0x103e04,%eax 1026d4: ff d0 call *%eax 1026d6: e9 0d f0 ff ff jmp 1016e8 <all_ints> 001026db <isr104>: 1026db: 6a 00 push $0x0 1026dd: 6a 68 push $0x68 1026df: 0f a8 push %gs 1026e1: 0f a0 push %fs 1026e3: 06 push %es 1026e4: 1e push %ds 1026e5: 60 pusha 1026e6: 66 b8 10 00 mov $0x10,%ax 1026ea: 8e d8 mov %eax,%ds 1026ec: 8e c0 mov %eax,%es 1026ee: 8e e0 mov %eax,%fs 1026f0: 8e e8 mov %eax,%gs 1026f2: 89 e0 mov %esp,%eax 1026f4: 50 push %eax 001026f5 <isr104.1>: 1026f5: b8 04 3e 10 00 mov $0x103e04,%eax 1026fa: ff d0 call *%eax 1026fc: e9 e7 ef ff ff jmp 1016e8 <all_ints> 00102701 <isr105>: 102701: 6a 00 push $0x0 102703: 6a 69 push $0x69 102705: 0f a8 push %gs 102707: 0f a0 push %fs 102709: 06 push %es 10270a: 1e push %ds 10270b: 60 pusha 10270c: 66 b8 10 00 mov $0x10,%ax 102710: 8e d8 mov %eax,%ds 102712: 8e c0 mov %eax,%es 102714: 8e e0 mov %eax,%fs 102716: 8e e8 mov %eax,%gs 102718: 89 e0 mov %esp,%eax 10271a: 50 push %eax 0010271b <isr105.1>: 10271b: b8 04 3e 10 00 mov $0x103e04,%eax 102720: ff d0 call *%eax 102722: e9 c1 ef ff ff jmp 1016e8 <all_ints> 00102727 <isr106>: 102727: 6a 00 push $0x0 102729: 6a 6a push $0x6a 10272b: 0f a8 push %gs 10272d: 0f a0 push %fs 10272f: 06 push %es 102730: 1e push %ds 102731: 60 pusha 102732: 66 b8 10 00 mov $0x10,%ax 102736: 8e d8 mov %eax,%ds 102738: 8e c0 mov %eax,%es 10273a: 8e e0 mov %eax,%fs 10273c: 8e e8 mov %eax,%gs 10273e: 89 e0 mov %esp,%eax 102740: 50 push %eax 00102741 <isr106.1>: 102741: b8 04 3e 10 00 mov $0x103e04,%eax 102746: ff d0 call *%eax 102748: e9 9b ef ff ff jmp 1016e8 <all_ints> 0010274d <isr107>: 10274d: 6a 00 push $0x0 10274f: 6a 6b push $0x6b 102751: 0f a8 push %gs 102753: 0f a0 push %fs 102755: 06 push %es 102756: 1e push %ds 102757: 60 pusha 102758: 66 b8 10 00 mov $0x10,%ax 10275c: 8e d8 mov %eax,%ds 10275e: 8e c0 mov %eax,%es 102760: 8e e0 mov %eax,%fs 102762: 8e e8 mov %eax,%gs 102764: 89 e0 mov %esp,%eax 102766: 50 push %eax 00102767 <isr107.1>: 102767: b8 04 3e 10 00 mov $0x103e04,%eax 10276c: ff d0 call *%eax 10276e: e9 75 ef ff ff jmp 1016e8 <all_ints> 00102773 <isr108>: 102773: 6a 00 push $0x0 102775: 6a 6c push $0x6c 102777: 0f a8 push %gs 102779: 0f a0 push %fs 10277b: 06 push %es 10277c: 1e push %ds 10277d: 60 pusha 10277e: 66 b8 10 00 mov $0x10,%ax 102782: 8e d8 mov %eax,%ds 102784: 8e c0 mov %eax,%es 102786: 8e e0 mov %eax,%fs 102788: 8e e8 mov %eax,%gs 10278a: 89 e0 mov %esp,%eax 10278c: 50 push %eax 0010278d <isr108.1>: 10278d: b8 04 3e 10 00 mov $0x103e04,%eax 102792: ff d0 call *%eax 102794: e9 4f ef ff ff jmp 1016e8 <all_ints> 00102799 <isr109>: 102799: 6a 00 push $0x0 10279b: 6a 6d push $0x6d 10279d: 0f a8 push %gs 10279f: 0f a0 push %fs 1027a1: 06 push %es 1027a2: 1e push %ds 1027a3: 60 pusha 1027a4: 66 b8 10 00 mov $0x10,%ax 1027a8: 8e d8 mov %eax,%ds 1027aa: 8e c0 mov %eax,%es 1027ac: 8e e0 mov %eax,%fs 1027ae: 8e e8 mov %eax,%gs 1027b0: 89 e0 mov %esp,%eax 1027b2: 50 push %eax 001027b3 <isr109.1>: 1027b3: b8 04 3e 10 00 mov $0x103e04,%eax 1027b8: ff d0 call *%eax 1027ba: e9 29 ef ff ff jmp 1016e8 <all_ints> 001027bf <isr110>: 1027bf: 6a 00 push $0x0 1027c1: 6a 6e push $0x6e 1027c3: 0f a8 push %gs 1027c5: 0f a0 push %fs 1027c7: 06 push %es 1027c8: 1e push %ds 1027c9: 60 pusha 1027ca: 66 b8 10 00 mov $0x10,%ax 1027ce: 8e d8 mov %eax,%ds 1027d0: 8e c0 mov %eax,%es 1027d2: 8e e0 mov %eax,%fs 1027d4: 8e e8 mov %eax,%gs 1027d6: 89 e0 mov %esp,%eax 1027d8: 50 push %eax 001027d9 <isr110.1>: 1027d9: b8 04 3e 10 00 mov $0x103e04,%eax 1027de: ff d0 call *%eax 1027e0: e9 03 ef ff ff jmp 1016e8 <all_ints> 001027e5 <isr111>: 1027e5: 6a 00 push $0x0 1027e7: 6a 6f push $0x6f 1027e9: 0f a8 push %gs 1027eb: 0f a0 push %fs 1027ed: 06 push %es 1027ee: 1e push %ds 1027ef: 60 pusha 1027f0: 66 b8 10 00 mov $0x10,%ax 1027f4: 8e d8 mov %eax,%ds 1027f6: 8e c0 mov %eax,%es 1027f8: 8e e0 mov %eax,%fs 1027fa: 8e e8 mov %eax,%gs 1027fc: 89 e0 mov %esp,%eax 1027fe: 50 push %eax 001027ff <isr111.1>: 1027ff: b8 04 3e 10 00 mov $0x103e04,%eax 102804: ff d0 call *%eax 102806: e9 dd ee ff ff jmp 1016e8 <all_ints> 0010280b <isr112>: 10280b: 6a 00 push $0x0 10280d: 6a 70 push $0x70 10280f: 0f a8 push %gs 102811: 0f a0 push %fs 102813: 06 push %es 102814: 1e push %ds 102815: 60 pusha 102816: 66 b8 10 00 mov $0x10,%ax 10281a: 8e d8 mov %eax,%ds 10281c: 8e c0 mov %eax,%es 10281e: 8e e0 mov %eax,%fs 102820: 8e e8 mov %eax,%gs 102822: 89 e0 mov %esp,%eax 102824: 50 push %eax 00102825 <isr112.1>: 102825: b8 04 3e 10 00 mov $0x103e04,%eax 10282a: ff d0 call *%eax 10282c: e9 b7 ee ff ff jmp 1016e8 <all_ints> 00102831 <isr113>: 102831: 6a 00 push $0x0 102833: 6a 71 push $0x71 102835: 0f a8 push %gs 102837: 0f a0 push %fs 102839: 06 push %es 10283a: 1e push %ds 10283b: 60 pusha 10283c: 66 b8 10 00 mov $0x10,%ax 102840: 8e d8 mov %eax,%ds 102842: 8e c0 mov %eax,%es 102844: 8e e0 mov %eax,%fs 102846: 8e e8 mov %eax,%gs 102848: 89 e0 mov %esp,%eax 10284a: 50 push %eax 0010284b <isr113.1>: 10284b: b8 04 3e 10 00 mov $0x103e04,%eax 102850: ff d0 call *%eax 102852: e9 91 ee ff ff jmp 1016e8 <all_ints> 00102857 <isr114>: 102857: 6a 00 push $0x0 102859: 6a 72 push $0x72 10285b: 0f a8 push %gs 10285d: 0f a0 push %fs 10285f: 06 push %es 102860: 1e push %ds 102861: 60 pusha 102862: 66 b8 10 00 mov $0x10,%ax 102866: 8e d8 mov %eax,%ds 102868: 8e c0 mov %eax,%es 10286a: 8e e0 mov %eax,%fs 10286c: 8e e8 mov %eax,%gs 10286e: 89 e0 mov %esp,%eax 102870: 50 push %eax 00102871 <isr114.1>: 102871: b8 04 3e 10 00 mov $0x103e04,%eax 102876: ff d0 call *%eax 102878: e9 6b ee ff ff jmp 1016e8 <all_ints> 0010287d <isr115>: 10287d: 6a 00 push $0x0 10287f: 6a 73 push $0x73 102881: 0f a8 push %gs 102883: 0f a0 push %fs 102885: 06 push %es 102886: 1e push %ds 102887: 60 pusha 102888: 66 b8 10 00 mov $0x10,%ax 10288c: 8e d8 mov %eax,%ds 10288e: 8e c0 mov %eax,%es 102890: 8e e0 mov %eax,%fs 102892: 8e e8 mov %eax,%gs 102894: 89 e0 mov %esp,%eax 102896: 50 push %eax 00102897 <isr115.1>: 102897: b8 04 3e 10 00 mov $0x103e04,%eax 10289c: ff d0 call *%eax 10289e: e9 45 ee ff ff jmp 1016e8 <all_ints> 001028a3 <isr116>: 1028a3: 6a 00 push $0x0 1028a5: 6a 74 push $0x74 1028a7: 0f a8 push %gs 1028a9: 0f a0 push %fs 1028ab: 06 push %es 1028ac: 1e push %ds 1028ad: 60 pusha 1028ae: 66 b8 10 00 mov $0x10,%ax 1028b2: 8e d8 mov %eax,%ds 1028b4: 8e c0 mov %eax,%es 1028b6: 8e e0 mov %eax,%fs 1028b8: 8e e8 mov %eax,%gs 1028ba: 89 e0 mov %esp,%eax 1028bc: 50 push %eax 001028bd <isr116.1>: 1028bd: b8 04 3e 10 00 mov $0x103e04,%eax 1028c2: ff d0 call *%eax 1028c4: e9 1f ee ff ff jmp 1016e8 <all_ints> 001028c9 <isr117>: 1028c9: 6a 00 push $0x0 1028cb: 6a 75 push $0x75 1028cd: 0f a8 push %gs 1028cf: 0f a0 push %fs 1028d1: 06 push %es 1028d2: 1e push %ds 1028d3: 60 pusha 1028d4: 66 b8 10 00 mov $0x10,%ax 1028d8: 8e d8 mov %eax,%ds 1028da: 8e c0 mov %eax,%es 1028dc: 8e e0 mov %eax,%fs 1028de: 8e e8 mov %eax,%gs 1028e0: 89 e0 mov %esp,%eax 1028e2: 50 push %eax 001028e3 <isr117.1>: 1028e3: b8 04 3e 10 00 mov $0x103e04,%eax 1028e8: ff d0 call *%eax 1028ea: e9 f9 ed ff ff jmp 1016e8 <all_ints> 001028ef <isr118>: 1028ef: 6a 00 push $0x0 1028f1: 6a 76 push $0x76 1028f3: 0f a8 push %gs 1028f5: 0f a0 push %fs 1028f7: 06 push %es 1028f8: 1e push %ds 1028f9: 60 pusha 1028fa: 66 b8 10 00 mov $0x10,%ax 1028fe: 8e d8 mov %eax,%ds 102900: 8e c0 mov %eax,%es 102902: 8e e0 mov %eax,%fs 102904: 8e e8 mov %eax,%gs 102906: 89 e0 mov %esp,%eax 102908: 50 push %eax 00102909 <isr118.1>: 102909: b8 04 3e 10 00 mov $0x103e04,%eax 10290e: ff d0 call *%eax 102910: e9 d3 ed ff ff jmp 1016e8 <all_ints> 00102915 <isr119>: 102915: 6a 00 push $0x0 102917: 6a 77 push $0x77 102919: 0f a8 push %gs 10291b: 0f a0 push %fs 10291d: 06 push %es 10291e: 1e push %ds 10291f: 60 pusha 102920: 66 b8 10 00 mov $0x10,%ax 102924: 8e d8 mov %eax,%ds 102926: 8e c0 mov %eax,%es 102928: 8e e0 mov %eax,%fs 10292a: 8e e8 mov %eax,%gs 10292c: 89 e0 mov %esp,%eax 10292e: 50 push %eax 0010292f <isr119.1>: 10292f: b8 04 3e 10 00 mov $0x103e04,%eax 102934: ff d0 call *%eax 102936: e9 ad ed ff ff jmp 1016e8 <all_ints> 0010293b <isr120>: 10293b: 6a 00 push $0x0 10293d: 6a 78 push $0x78 10293f: 0f a8 push %gs 102941: 0f a0 push %fs 102943: 06 push %es 102944: 1e push %ds 102945: 60 pusha 102946: 66 b8 10 00 mov $0x10,%ax 10294a: 8e d8 mov %eax,%ds 10294c: 8e c0 mov %eax,%es 10294e: 8e e0 mov %eax,%fs 102950: 8e e8 mov %eax,%gs 102952: 89 e0 mov %esp,%eax 102954: 50 push %eax 00102955 <isr120.1>: 102955: b8 04 3e 10 00 mov $0x103e04,%eax 10295a: ff d0 call *%eax 10295c: e9 87 ed ff ff jmp 1016e8 <all_ints> 00102961 <isr121>: 102961: 6a 00 push $0x0 102963: 6a 79 push $0x79 102965: 0f a8 push %gs 102967: 0f a0 push %fs 102969: 06 push %es 10296a: 1e push %ds 10296b: 60 pusha 10296c: 66 b8 10 00 mov $0x10,%ax 102970: 8e d8 mov %eax,%ds 102972: 8e c0 mov %eax,%es 102974: 8e e0 mov %eax,%fs 102976: 8e e8 mov %eax,%gs 102978: 89 e0 mov %esp,%eax 10297a: 50 push %eax 0010297b <isr121.1>: 10297b: b8 04 3e 10 00 mov $0x103e04,%eax 102980: ff d0 call *%eax 102982: e9 61 ed ff ff jmp 1016e8 <all_ints> 00102987 <isr122>: 102987: 6a 00 push $0x0 102989: 6a 7a push $0x7a 10298b: 0f a8 push %gs 10298d: 0f a0 push %fs 10298f: 06 push %es 102990: 1e push %ds 102991: 60 pusha 102992: 66 b8 10 00 mov $0x10,%ax 102996: 8e d8 mov %eax,%ds 102998: 8e c0 mov %eax,%es 10299a: 8e e0 mov %eax,%fs 10299c: 8e e8 mov %eax,%gs 10299e: 89 e0 mov %esp,%eax 1029a0: 50 push %eax 001029a1 <isr122.1>: 1029a1: b8 04 3e 10 00 mov $0x103e04,%eax 1029a6: ff d0 call *%eax 1029a8: e9 3b ed ff ff jmp 1016e8 <all_ints> 001029ad <isr123>: 1029ad: 6a 00 push $0x0 1029af: 6a 7b push $0x7b 1029b1: 0f a8 push %gs 1029b3: 0f a0 push %fs 1029b5: 06 push %es 1029b6: 1e push %ds 1029b7: 60 pusha 1029b8: 66 b8 10 00 mov $0x10,%ax 1029bc: 8e d8 mov %eax,%ds 1029be: 8e c0 mov %eax,%es 1029c0: 8e e0 mov %eax,%fs 1029c2: 8e e8 mov %eax,%gs 1029c4: 89 e0 mov %esp,%eax 1029c6: 50 push %eax 001029c7 <isr123.1>: 1029c7: b8 04 3e 10 00 mov $0x103e04,%eax 1029cc: ff d0 call *%eax 1029ce: e9 15 ed ff ff jmp 1016e8 <all_ints> 001029d3 <isr124>: 1029d3: 6a 00 push $0x0 1029d5: 6a 7c push $0x7c 1029d7: 0f a8 push %gs 1029d9: 0f a0 push %fs 1029db: 06 push %es 1029dc: 1e push %ds 1029dd: 60 pusha 1029de: 66 b8 10 00 mov $0x10,%ax 1029e2: 8e d8 mov %eax,%ds 1029e4: 8e c0 mov %eax,%es 1029e6: 8e e0 mov %eax,%fs 1029e8: 8e e8 mov %eax,%gs 1029ea: 89 e0 mov %esp,%eax 1029ec: 50 push %eax 001029ed <isr124.1>: 1029ed: b8 04 3e 10 00 mov $0x103e04,%eax 1029f2: ff d0 call *%eax 1029f4: e9 ef ec ff ff jmp 1016e8 <all_ints> 001029f9 <isr125>: 1029f9: 6a 00 push $0x0 1029fb: 6a 7d push $0x7d 1029fd: 0f a8 push %gs 1029ff: 0f a0 push %fs 102a01: 06 push %es 102a02: 1e push %ds 102a03: 60 pusha 102a04: 66 b8 10 00 mov $0x10,%ax 102a08: 8e d8 mov %eax,%ds 102a0a: 8e c0 mov %eax,%es 102a0c: 8e e0 mov %eax,%fs 102a0e: 8e e8 mov %eax,%gs 102a10: 89 e0 mov %esp,%eax 102a12: 50 push %eax 00102a13 <isr125.1>: 102a13: b8 04 3e 10 00 mov $0x103e04,%eax 102a18: ff d0 call *%eax 102a1a: e9 c9 ec ff ff jmp 1016e8 <all_ints> 00102a1f <isr126>: 102a1f: 6a 00 push $0x0 102a21: 6a 7e push $0x7e 102a23: 0f a8 push %gs 102a25: 0f a0 push %fs 102a27: 06 push %es 102a28: 1e push %ds 102a29: 60 pusha 102a2a: 66 b8 10 00 mov $0x10,%ax 102a2e: 8e d8 mov %eax,%ds 102a30: 8e c0 mov %eax,%es 102a32: 8e e0 mov %eax,%fs 102a34: 8e e8 mov %eax,%gs 102a36: 89 e0 mov %esp,%eax 102a38: 50 push %eax 00102a39 <isr126.1>: 102a39: b8 04 3e 10 00 mov $0x103e04,%eax 102a3e: ff d0 call *%eax 102a40: e9 a3 ec ff ff jmp 1016e8 <all_ints> 00102a45 <isr127>: 102a45: 6a 00 push $0x0 102a47: 6a 7f push $0x7f 102a49: 0f a8 push %gs 102a4b: 0f a0 push %fs 102a4d: 06 push %es 102a4e: 1e push %ds 102a4f: 60 pusha 102a50: 66 b8 10 00 mov $0x10,%ax 102a54: 8e d8 mov %eax,%ds 102a56: 8e c0 mov %eax,%es 102a58: 8e e0 mov %eax,%fs 102a5a: 8e e8 mov %eax,%gs 102a5c: 89 e0 mov %esp,%eax 102a5e: 50 push %eax 00102a5f <isr127.1>: 102a5f: b8 04 3e 10 00 mov $0x103e04,%eax 102a64: ff d0 call *%eax 102a66: e9 7d ec ff ff jmp 1016e8 <all_ints> 00102a6b <isr128>: 102a6b: 6a 00 push $0x0 102a6d: 6a 80 push $0xffffff80 102a6f: 0f a8 push %gs 102a71: 0f a0 push %fs 102a73: 06 push %es 102a74: 1e push %ds 102a75: 60 pusha 102a76: 66 b8 10 00 mov $0x10,%ax 102a7a: 8e d8 mov %eax,%ds 102a7c: 8e c0 mov %eax,%es 102a7e: 8e e0 mov %eax,%fs 102a80: 8e e8 mov %eax,%gs 102a82: 89 e0 mov %esp,%eax 102a84: 50 push %eax 00102a85 <isr128.1>: 102a85: b8 04 3e 10 00 mov $0x103e04,%eax 102a8a: ff d0 call *%eax 102a8c: e9 57 ec ff ff jmp 1016e8 <all_ints> 00102a91 <isr129>: 102a91: 6a 00 push $0x0 102a93: 6a 81 push $0xffffff81 102a95: 0f a8 push %gs 102a97: 0f a0 push %fs 102a99: 06 push %es 102a9a: 1e push %ds 102a9b: 60 pusha 102a9c: 66 b8 10 00 mov $0x10,%ax 102aa0: 8e d8 mov %eax,%ds 102aa2: 8e c0 mov %eax,%es 102aa4: 8e e0 mov %eax,%fs 102aa6: 8e e8 mov %eax,%gs 102aa8: 89 e0 mov %esp,%eax 102aaa: 50 push %eax 00102aab <isr129.1>: 102aab: b8 04 3e 10 00 mov $0x103e04,%eax 102ab0: ff d0 call *%eax 102ab2: e9 31 ec ff ff jmp 1016e8 <all_ints> 00102ab7 <isr130>: 102ab7: 6a 00 push $0x0 102ab9: 6a 82 push $0xffffff82 102abb: 0f a8 push %gs 102abd: 0f a0 push %fs 102abf: 06 push %es 102ac0: 1e push %ds 102ac1: 60 pusha 102ac2: 66 b8 10 00 mov $0x10,%ax 102ac6: 8e d8 mov %eax,%ds 102ac8: 8e c0 mov %eax,%es 102aca: 8e e0 mov %eax,%fs 102acc: 8e e8 mov %eax,%gs 102ace: 89 e0 mov %esp,%eax 102ad0: 50 push %eax 00102ad1 <isr130.1>: 102ad1: b8 04 3e 10 00 mov $0x103e04,%eax 102ad6: ff d0 call *%eax 102ad8: e9 0b ec ff ff jmp 1016e8 <all_ints> 00102add <isr131>: 102add: 6a 00 push $0x0 102adf: 6a 83 push $0xffffff83 102ae1: 0f a8 push %gs 102ae3: 0f a0 push %fs 102ae5: 06 push %es 102ae6: 1e push %ds 102ae7: 60 pusha 102ae8: 66 b8 10 00 mov $0x10,%ax 102aec: 8e d8 mov %eax,%ds 102aee: 8e c0 mov %eax,%es 102af0: 8e e0 mov %eax,%fs 102af2: 8e e8 mov %eax,%gs 102af4: 89 e0 mov %esp,%eax 102af6: 50 push %eax 00102af7 <isr131.1>: 102af7: b8 04 3e 10 00 mov $0x103e04,%eax 102afc: ff d0 call *%eax 102afe: e9 e5 eb ff ff jmp 1016e8 <all_ints> 00102b03 <isr132>: 102b03: 6a 00 push $0x0 102b05: 6a 84 push $0xffffff84 102b07: 0f a8 push %gs 102b09: 0f a0 push %fs 102b0b: 06 push %es 102b0c: 1e push %ds 102b0d: 60 pusha 102b0e: 66 b8 10 00 mov $0x10,%ax 102b12: 8e d8 mov %eax,%ds 102b14: 8e c0 mov %eax,%es 102b16: 8e e0 mov %eax,%fs 102b18: 8e e8 mov %eax,%gs 102b1a: 89 e0 mov %esp,%eax 102b1c: 50 push %eax 00102b1d <isr132.1>: 102b1d: b8 04 3e 10 00 mov $0x103e04,%eax 102b22: ff d0 call *%eax 102b24: e9 bf eb ff ff jmp 1016e8 <all_ints> 00102b29 <isr133>: 102b29: 6a 00 push $0x0 102b2b: 6a 85 push $0xffffff85 102b2d: 0f a8 push %gs 102b2f: 0f a0 push %fs 102b31: 06 push %es 102b32: 1e push %ds 102b33: 60 pusha 102b34: 66 b8 10 00 mov $0x10,%ax 102b38: 8e d8 mov %eax,%ds 102b3a: 8e c0 mov %eax,%es 102b3c: 8e e0 mov %eax,%fs 102b3e: 8e e8 mov %eax,%gs 102b40: 89 e0 mov %esp,%eax 102b42: 50 push %eax 00102b43 <isr133.1>: 102b43: b8 04 3e 10 00 mov $0x103e04,%eax 102b48: ff d0 call *%eax 102b4a: e9 99 eb ff ff jmp 1016e8 <all_ints> 00102b4f <isr134>: 102b4f: 6a 00 push $0x0 102b51: 6a 86 push $0xffffff86 102b53: 0f a8 push %gs 102b55: 0f a0 push %fs 102b57: 06 push %es 102b58: 1e push %ds 102b59: 60 pusha 102b5a: 66 b8 10 00 mov $0x10,%ax 102b5e: 8e d8 mov %eax,%ds 102b60: 8e c0 mov %eax,%es 102b62: 8e e0 mov %eax,%fs 102b64: 8e e8 mov %eax,%gs 102b66: 89 e0 mov %esp,%eax 102b68: 50 push %eax 00102b69 <isr134.1>: 102b69: b8 04 3e 10 00 mov $0x103e04,%eax 102b6e: ff d0 call *%eax 102b70: e9 73 eb ff ff jmp 1016e8 <all_ints> 00102b75 <isr135>: 102b75: 6a 00 push $0x0 102b77: 6a 87 push $0xffffff87 102b79: 0f a8 push %gs 102b7b: 0f a0 push %fs 102b7d: 06 push %es 102b7e: 1e push %ds 102b7f: 60 pusha 102b80: 66 b8 10 00 mov $0x10,%ax 102b84: 8e d8 mov %eax,%ds 102b86: 8e c0 mov %eax,%es 102b88: 8e e0 mov %eax,%fs 102b8a: 8e e8 mov %eax,%gs 102b8c: 89 e0 mov %esp,%eax 102b8e: 50 push %eax 00102b8f <isr135.1>: 102b8f: b8 04 3e 10 00 mov $0x103e04,%eax 102b94: ff d0 call *%eax 102b96: e9 4d eb ff ff jmp 1016e8 <all_ints> 00102b9b <isr136>: 102b9b: 6a 00 push $0x0 102b9d: 6a 88 push $0xffffff88 102b9f: 0f a8 push %gs 102ba1: 0f a0 push %fs 102ba3: 06 push %es 102ba4: 1e push %ds 102ba5: 60 pusha 102ba6: 66 b8 10 00 mov $0x10,%ax 102baa: 8e d8 mov %eax,%ds 102bac: 8e c0 mov %eax,%es 102bae: 8e e0 mov %eax,%fs 102bb0: 8e e8 mov %eax,%gs 102bb2: 89 e0 mov %esp,%eax 102bb4: 50 push %eax 00102bb5 <isr136.1>: 102bb5: b8 04 3e 10 00 mov $0x103e04,%eax 102bba: ff d0 call *%eax 102bbc: e9 27 eb ff ff jmp 1016e8 <all_ints> 00102bc1 <isr137>: 102bc1: 6a 00 push $0x0 102bc3: 6a 89 push $0xffffff89 102bc5: 0f a8 push %gs 102bc7: 0f a0 push %fs 102bc9: 06 push %es 102bca: 1e push %ds 102bcb: 60 pusha 102bcc: 66 b8 10 00 mov $0x10,%ax 102bd0: 8e d8 mov %eax,%ds 102bd2: 8e c0 mov %eax,%es 102bd4: 8e e0 mov %eax,%fs 102bd6: 8e e8 mov %eax,%gs 102bd8: 89 e0 mov %esp,%eax 102bda: 50 push %eax 00102bdb <isr137.1>: 102bdb: b8 04 3e 10 00 mov $0x103e04,%eax 102be0: ff d0 call *%eax 102be2: e9 01 eb ff ff jmp 1016e8 <all_ints> 00102be7 <isr138>: 102be7: 6a 00 push $0x0 102be9: 6a 8a push $0xffffff8a 102beb: 0f a8 push %gs 102bed: 0f a0 push %fs 102bef: 06 push %es 102bf0: 1e push %ds 102bf1: 60 pusha 102bf2: 66 b8 10 00 mov $0x10,%ax 102bf6: 8e d8 mov %eax,%ds 102bf8: 8e c0 mov %eax,%es 102bfa: 8e e0 mov %eax,%fs 102bfc: 8e e8 mov %eax,%gs 102bfe: 89 e0 mov %esp,%eax 102c00: 50 push %eax 00102c01 <isr138.1>: 102c01: b8 04 3e 10 00 mov $0x103e04,%eax 102c06: ff d0 call *%eax 102c08: e9 db ea ff ff jmp 1016e8 <all_ints> 00102c0d <isr139>: 102c0d: 6a 00 push $0x0 102c0f: 6a 8b push $0xffffff8b 102c11: 0f a8 push %gs 102c13: 0f a0 push %fs 102c15: 06 push %es 102c16: 1e push %ds 102c17: 60 pusha 102c18: 66 b8 10 00 mov $0x10,%ax 102c1c: 8e d8 mov %eax,%ds 102c1e: 8e c0 mov %eax,%es 102c20: 8e e0 mov %eax,%fs 102c22: 8e e8 mov %eax,%gs 102c24: 89 e0 mov %esp,%eax 102c26: 50 push %eax 00102c27 <isr139.1>: 102c27: b8 04 3e 10 00 mov $0x103e04,%eax 102c2c: ff d0 call *%eax 102c2e: e9 b5 ea ff ff jmp 1016e8 <all_ints> 00102c33 <isr140>: 102c33: 6a 00 push $0x0 102c35: 6a 8c push $0xffffff8c 102c37: 0f a8 push %gs 102c39: 0f a0 push %fs 102c3b: 06 push %es 102c3c: 1e push %ds 102c3d: 60 pusha 102c3e: 66 b8 10 00 mov $0x10,%ax 102c42: 8e d8 mov %eax,%ds 102c44: 8e c0 mov %eax,%es 102c46: 8e e0 mov %eax,%fs 102c48: 8e e8 mov %eax,%gs 102c4a: 89 e0 mov %esp,%eax 102c4c: 50 push %eax 00102c4d <isr140.1>: 102c4d: b8 04 3e 10 00 mov $0x103e04,%eax 102c52: ff d0 call *%eax 102c54: e9 8f ea ff ff jmp 1016e8 <all_ints> 00102c59 <isr141>: 102c59: 6a 00 push $0x0 102c5b: 6a 8d push $0xffffff8d 102c5d: 0f a8 push %gs 102c5f: 0f a0 push %fs 102c61: 06 push %es 102c62: 1e push %ds 102c63: 60 pusha 102c64: 66 b8 10 00 mov $0x10,%ax 102c68: 8e d8 mov %eax,%ds 102c6a: 8e c0 mov %eax,%es 102c6c: 8e e0 mov %eax,%fs 102c6e: 8e e8 mov %eax,%gs 102c70: 89 e0 mov %esp,%eax 102c72: 50 push %eax 00102c73 <isr141.1>: 102c73: b8 04 3e 10 00 mov $0x103e04,%eax 102c78: ff d0 call *%eax 102c7a: e9 69 ea ff ff jmp 1016e8 <all_ints> 00102c7f <isr142>: 102c7f: 6a 00 push $0x0 102c81: 6a 8e push $0xffffff8e 102c83: 0f a8 push %gs 102c85: 0f a0 push %fs 102c87: 06 push %es 102c88: 1e push %ds 102c89: 60 pusha 102c8a: 66 b8 10 00 mov $0x10,%ax 102c8e: 8e d8 mov %eax,%ds 102c90: 8e c0 mov %eax,%es 102c92: 8e e0 mov %eax,%fs 102c94: 8e e8 mov %eax,%gs 102c96: 89 e0 mov %esp,%eax 102c98: 50 push %eax 00102c99 <isr142.1>: 102c99: b8 04 3e 10 00 mov $0x103e04,%eax 102c9e: ff d0 call *%eax 102ca0: e9 43 ea ff ff jmp 1016e8 <all_ints> 00102ca5 <isr143>: 102ca5: 6a 00 push $0x0 102ca7: 6a 8f push $0xffffff8f 102ca9: 0f a8 push %gs 102cab: 0f a0 push %fs 102cad: 06 push %es 102cae: 1e push %ds 102caf: 60 pusha 102cb0: 66 b8 10 00 mov $0x10,%ax 102cb4: 8e d8 mov %eax,%ds 102cb6: 8e c0 mov %eax,%es 102cb8: 8e e0 mov %eax,%fs 102cba: 8e e8 mov %eax,%gs 102cbc: 89 e0 mov %esp,%eax 102cbe: 50 push %eax 00102cbf <isr143.1>: 102cbf: b8 04 3e 10 00 mov $0x103e04,%eax 102cc4: ff d0 call *%eax 102cc6: e9 1d ea ff ff jmp 1016e8 <all_ints> 00102ccb <isr144>: 102ccb: 6a 00 push $0x0 102ccd: 6a 90 push $0xffffff90 102ccf: 0f a8 push %gs 102cd1: 0f a0 push %fs 102cd3: 06 push %es 102cd4: 1e push %ds 102cd5: 60 pusha 102cd6: 66 b8 10 00 mov $0x10,%ax 102cda: 8e d8 mov %eax,%ds 102cdc: 8e c0 mov %eax,%es 102cde: 8e e0 mov %eax,%fs 102ce0: 8e e8 mov %eax,%gs 102ce2: 89 e0 mov %esp,%eax 102ce4: 50 push %eax 00102ce5 <isr144.1>: 102ce5: b8 04 3e 10 00 mov $0x103e04,%eax 102cea: ff d0 call *%eax 102cec: e9 f7 e9 ff ff jmp 1016e8 <all_ints> 00102cf1 <isr145>: 102cf1: 6a 00 push $0x0 102cf3: 6a 91 push $0xffffff91 102cf5: 0f a8 push %gs 102cf7: 0f a0 push %fs 102cf9: 06 push %es 102cfa: 1e push %ds 102cfb: 60 pusha 102cfc: 66 b8 10 00 mov $0x10,%ax 102d00: 8e d8 mov %eax,%ds 102d02: 8e c0 mov %eax,%es 102d04: 8e e0 mov %eax,%fs 102d06: 8e e8 mov %eax,%gs 102d08: 89 e0 mov %esp,%eax 102d0a: 50 push %eax 00102d0b <isr145.1>: 102d0b: b8 04 3e 10 00 mov $0x103e04,%eax 102d10: ff d0 call *%eax 102d12: e9 d1 e9 ff ff jmp 1016e8 <all_ints> 00102d17 <isr146>: 102d17: 6a 00 push $0x0 102d19: 6a 92 push $0xffffff92 102d1b: 0f a8 push %gs 102d1d: 0f a0 push %fs 102d1f: 06 push %es 102d20: 1e push %ds 102d21: 60 pusha 102d22: 66 b8 10 00 mov $0x10,%ax 102d26: 8e d8 mov %eax,%ds 102d28: 8e c0 mov %eax,%es 102d2a: 8e e0 mov %eax,%fs 102d2c: 8e e8 mov %eax,%gs 102d2e: 89 e0 mov %esp,%eax 102d30: 50 push %eax 00102d31 <isr146.1>: 102d31: b8 04 3e 10 00 mov $0x103e04,%eax 102d36: ff d0 call *%eax 102d38: e9 ab e9 ff ff jmp 1016e8 <all_ints> 00102d3d <isr147>: 102d3d: 6a 00 push $0x0 102d3f: 6a 93 push $0xffffff93 102d41: 0f a8 push %gs 102d43: 0f a0 push %fs 102d45: 06 push %es 102d46: 1e push %ds 102d47: 60 pusha 102d48: 66 b8 10 00 mov $0x10,%ax 102d4c: 8e d8 mov %eax,%ds 102d4e: 8e c0 mov %eax,%es 102d50: 8e e0 mov %eax,%fs 102d52: 8e e8 mov %eax,%gs 102d54: 89 e0 mov %esp,%eax 102d56: 50 push %eax 00102d57 <isr147.1>: 102d57: b8 04 3e 10 00 mov $0x103e04,%eax 102d5c: ff d0 call *%eax 102d5e: e9 85 e9 ff ff jmp 1016e8 <all_ints> 00102d63 <isr148>: 102d63: 6a 00 push $0x0 102d65: 6a 94 push $0xffffff94 102d67: 0f a8 push %gs 102d69: 0f a0 push %fs 102d6b: 06 push %es 102d6c: 1e push %ds 102d6d: 60 pusha 102d6e: 66 b8 10 00 mov $0x10,%ax 102d72: 8e d8 mov %eax,%ds 102d74: 8e c0 mov %eax,%es 102d76: 8e e0 mov %eax,%fs 102d78: 8e e8 mov %eax,%gs 102d7a: 89 e0 mov %esp,%eax 102d7c: 50 push %eax 00102d7d <isr148.1>: 102d7d: b8 04 3e 10 00 mov $0x103e04,%eax 102d82: ff d0 call *%eax 102d84: e9 5f e9 ff ff jmp 1016e8 <all_ints> 00102d89 <isr149>: 102d89: 6a 00 push $0x0 102d8b: 6a 95 push $0xffffff95 102d8d: 0f a8 push %gs 102d8f: 0f a0 push %fs 102d91: 06 push %es 102d92: 1e push %ds 102d93: 60 pusha 102d94: 66 b8 10 00 mov $0x10,%ax 102d98: 8e d8 mov %eax,%ds 102d9a: 8e c0 mov %eax,%es 102d9c: 8e e0 mov %eax,%fs 102d9e: 8e e8 mov %eax,%gs 102da0: 89 e0 mov %esp,%eax 102da2: 50 push %eax 00102da3 <isr149.1>: 102da3: b8 04 3e 10 00 mov $0x103e04,%eax 102da8: ff d0 call *%eax 102daa: e9 39 e9 ff ff jmp 1016e8 <all_ints> 00102daf <isr150>: 102daf: 6a 00 push $0x0 102db1: 6a 96 push $0xffffff96 102db3: 0f a8 push %gs 102db5: 0f a0 push %fs 102db7: 06 push %es 102db8: 1e push %ds 102db9: 60 pusha 102dba: 66 b8 10 00 mov $0x10,%ax 102dbe: 8e d8 mov %eax,%ds 102dc0: 8e c0 mov %eax,%es 102dc2: 8e e0 mov %eax,%fs 102dc4: 8e e8 mov %eax,%gs 102dc6: 89 e0 mov %esp,%eax 102dc8: 50 push %eax 00102dc9 <isr150.1>: 102dc9: b8 04 3e 10 00 mov $0x103e04,%eax 102dce: ff d0 call *%eax 102dd0: e9 13 e9 ff ff jmp 1016e8 <all_ints> 00102dd5 <isr151>: 102dd5: 6a 00 push $0x0 102dd7: 6a 97 push $0xffffff97 102dd9: 0f a8 push %gs 102ddb: 0f a0 push %fs 102ddd: 06 push %es 102dde: 1e push %ds 102ddf: 60 pusha 102de0: 66 b8 10 00 mov $0x10,%ax 102de4: 8e d8 mov %eax,%ds 102de6: 8e c0 mov %eax,%es 102de8: 8e e0 mov %eax,%fs 102dea: 8e e8 mov %eax,%gs 102dec: 89 e0 mov %esp,%eax 102dee: 50 push %eax 00102def <isr151.1>: 102def: b8 04 3e 10 00 mov $0x103e04,%eax 102df4: ff d0 call *%eax 102df6: e9 ed e8 ff ff jmp 1016e8 <all_ints> 00102dfb <isr152>: 102dfb: 6a 00 push $0x0 102dfd: 6a 98 push $0xffffff98 102dff: 0f a8 push %gs 102e01: 0f a0 push %fs 102e03: 06 push %es 102e04: 1e push %ds 102e05: 60 pusha 102e06: 66 b8 10 00 mov $0x10,%ax 102e0a: 8e d8 mov %eax,%ds 102e0c: 8e c0 mov %eax,%es 102e0e: 8e e0 mov %eax,%fs 102e10: 8e e8 mov %eax,%gs 102e12: 89 e0 mov %esp,%eax 102e14: 50 push %eax 00102e15 <isr152.1>: 102e15: b8 04 3e 10 00 mov $0x103e04,%eax 102e1a: ff d0 call *%eax 102e1c: e9 c7 e8 ff ff jmp 1016e8 <all_ints> 00102e21 <isr153>: 102e21: 6a 00 push $0x0 102e23: 6a 99 push $0xffffff99 102e25: 0f a8 push %gs 102e27: 0f a0 push %fs 102e29: 06 push %es 102e2a: 1e push %ds 102e2b: 60 pusha 102e2c: 66 b8 10 00 mov $0x10,%ax 102e30: 8e d8 mov %eax,%ds 102e32: 8e c0 mov %eax,%es 102e34: 8e e0 mov %eax,%fs 102e36: 8e e8 mov %eax,%gs 102e38: 89 e0 mov %esp,%eax 102e3a: 50 push %eax 00102e3b <isr153.1>: 102e3b: b8 04 3e 10 00 mov $0x103e04,%eax 102e40: ff d0 call *%eax 102e42: e9 a1 e8 ff ff jmp 1016e8 <all_ints> 00102e47 <isr154>: 102e47: 6a 00 push $0x0 102e49: 6a 9a push $0xffffff9a 102e4b: 0f a8 push %gs 102e4d: 0f a0 push %fs 102e4f: 06 push %es 102e50: 1e push %ds 102e51: 60 pusha 102e52: 66 b8 10 00 mov $0x10,%ax 102e56: 8e d8 mov %eax,%ds 102e58: 8e c0 mov %eax,%es 102e5a: 8e e0 mov %eax,%fs 102e5c: 8e e8 mov %eax,%gs 102e5e: 89 e0 mov %esp,%eax 102e60: 50 push %eax 00102e61 <isr154.1>: 102e61: b8 04 3e 10 00 mov $0x103e04,%eax 102e66: ff d0 call *%eax 102e68: e9 7b e8 ff ff jmp 1016e8 <all_ints> 00102e6d <isr155>: 102e6d: 6a 00 push $0x0 102e6f: 6a 9b push $0xffffff9b 102e71: 0f a8 push %gs 102e73: 0f a0 push %fs 102e75: 06 push %es 102e76: 1e push %ds 102e77: 60 pusha 102e78: 66 b8 10 00 mov $0x10,%ax 102e7c: 8e d8 mov %eax,%ds 102e7e: 8e c0 mov %eax,%es 102e80: 8e e0 mov %eax,%fs 102e82: 8e e8 mov %eax,%gs 102e84: 89 e0 mov %esp,%eax 102e86: 50 push %eax 00102e87 <isr155.1>: 102e87: b8 04 3e 10 00 mov $0x103e04,%eax 102e8c: ff d0 call *%eax 102e8e: e9 55 e8 ff ff jmp 1016e8 <all_ints> 00102e93 <isr156>: 102e93: 6a 00 push $0x0 102e95: 6a 9c push $0xffffff9c 102e97: 0f a8 push %gs 102e99: 0f a0 push %fs 102e9b: 06 push %es 102e9c: 1e push %ds 102e9d: 60 pusha 102e9e: 66 b8 10 00 mov $0x10,%ax 102ea2: 8e d8 mov %eax,%ds 102ea4: 8e c0 mov %eax,%es 102ea6: 8e e0 mov %eax,%fs 102ea8: 8e e8 mov %eax,%gs 102eaa: 89 e0 mov %esp,%eax 102eac: 50 push %eax 00102ead <isr156.1>: 102ead: b8 04 3e 10 00 mov $0x103e04,%eax 102eb2: ff d0 call *%eax 102eb4: e9 2f e8 ff ff jmp 1016e8 <all_ints> 00102eb9 <isr157>: 102eb9: 6a 00 push $0x0 102ebb: 6a 9d push $0xffffff9d 102ebd: 0f a8 push %gs 102ebf: 0f a0 push %fs 102ec1: 06 push %es 102ec2: 1e push %ds 102ec3: 60 pusha 102ec4: 66 b8 10 00 mov $0x10,%ax 102ec8: 8e d8 mov %eax,%ds 102eca: 8e c0 mov %eax,%es 102ecc: 8e e0 mov %eax,%fs 102ece: 8e e8 mov %eax,%gs 102ed0: 89 e0 mov %esp,%eax 102ed2: 50 push %eax 00102ed3 <isr157.1>: 102ed3: b8 04 3e 10 00 mov $0x103e04,%eax 102ed8: ff d0 call *%eax 102eda: e9 09 e8 ff ff jmp 1016e8 <all_ints> 00102edf <isr158>: 102edf: 6a 00 push $0x0 102ee1: 6a 9e push $0xffffff9e 102ee3: 0f a8 push %gs 102ee5: 0f a0 push %fs 102ee7: 06 push %es 102ee8: 1e push %ds 102ee9: 60 pusha 102eea: 66 b8 10 00 mov $0x10,%ax 102eee: 8e d8 mov %eax,%ds 102ef0: 8e c0 mov %eax,%es 102ef2: 8e e0 mov %eax,%fs 102ef4: 8e e8 mov %eax,%gs 102ef6: 89 e0 mov %esp,%eax 102ef8: 50 push %eax 00102ef9 <isr158.1>: 102ef9: b8 04 3e 10 00 mov $0x103e04,%eax 102efe: ff d0 call *%eax 102f00: e9 e3 e7 ff ff jmp 1016e8 <all_ints> 00102f05 <isr159>: 102f05: 6a 00 push $0x0 102f07: 6a 9f push $0xffffff9f 102f09: 0f a8 push %gs 102f0b: 0f a0 push %fs 102f0d: 06 push %es 102f0e: 1e push %ds 102f0f: 60 pusha 102f10: 66 b8 10 00 mov $0x10,%ax 102f14: 8e d8 mov %eax,%ds 102f16: 8e c0 mov %eax,%es 102f18: 8e e0 mov %eax,%fs 102f1a: 8e e8 mov %eax,%gs 102f1c: 89 e0 mov %esp,%eax 102f1e: 50 push %eax 00102f1f <isr159.1>: 102f1f: b8 04 3e 10 00 mov $0x103e04,%eax 102f24: ff d0 call *%eax 102f26: e9 bd e7 ff ff jmp 1016e8 <all_ints> 00102f2b <isr160>: 102f2b: 6a 00 push $0x0 102f2d: 6a a0 push $0xffffffa0 102f2f: 0f a8 push %gs 102f31: 0f a0 push %fs 102f33: 06 push %es 102f34: 1e push %ds 102f35: 60 pusha 102f36: 66 b8 10 00 mov $0x10,%ax 102f3a: 8e d8 mov %eax,%ds 102f3c: 8e c0 mov %eax,%es 102f3e: 8e e0 mov %eax,%fs 102f40: 8e e8 mov %eax,%gs 102f42: 89 e0 mov %esp,%eax 102f44: 50 push %eax 00102f45 <isr160.1>: 102f45: b8 04 3e 10 00 mov $0x103e04,%eax 102f4a: ff d0 call *%eax 102f4c: e9 97 e7 ff ff jmp 1016e8 <all_ints> 00102f51 <isr161>: 102f51: 6a 00 push $0x0 102f53: 6a a1 push $0xffffffa1 102f55: 0f a8 push %gs 102f57: 0f a0 push %fs 102f59: 06 push %es 102f5a: 1e push %ds 102f5b: 60 pusha 102f5c: 66 b8 10 00 mov $0x10,%ax 102f60: 8e d8 mov %eax,%ds 102f62: 8e c0 mov %eax,%es 102f64: 8e e0 mov %eax,%fs 102f66: 8e e8 mov %eax,%gs 102f68: 89 e0 mov %esp,%eax 102f6a: 50 push %eax 00102f6b <isr161.1>: 102f6b: b8 04 3e 10 00 mov $0x103e04,%eax 102f70: ff d0 call *%eax 102f72: e9 71 e7 ff ff jmp 1016e8 <all_ints> 00102f77 <isr162>: 102f77: 6a 00 push $0x0 102f79: 6a a2 push $0xffffffa2 102f7b: 0f a8 push %gs 102f7d: 0f a0 push %fs 102f7f: 06 push %es 102f80: 1e push %ds 102f81: 60 pusha 102f82: 66 b8 10 00 mov $0x10,%ax 102f86: 8e d8 mov %eax,%ds 102f88: 8e c0 mov %eax,%es 102f8a: 8e e0 mov %eax,%fs 102f8c: 8e e8 mov %eax,%gs 102f8e: 89 e0 mov %esp,%eax 102f90: 50 push %eax 00102f91 <isr162.1>: 102f91: b8 04 3e 10 00 mov $0x103e04,%eax 102f96: ff d0 call *%eax 102f98: e9 4b e7 ff ff jmp 1016e8 <all_ints> 00102f9d <isr163>: 102f9d: 6a 00 push $0x0 102f9f: 6a a3 push $0xffffffa3 102fa1: 0f a8 push %gs 102fa3: 0f a0 push %fs 102fa5: 06 push %es 102fa6: 1e push %ds 102fa7: 60 pusha 102fa8: 66 b8 10 00 mov $0x10,%ax 102fac: 8e d8 mov %eax,%ds 102fae: 8e c0 mov %eax,%es 102fb0: 8e e0 mov %eax,%fs 102fb2: 8e e8 mov %eax,%gs 102fb4: 89 e0 mov %esp,%eax 102fb6: 50 push %eax 00102fb7 <isr163.1>: 102fb7: b8 04 3e 10 00 mov $0x103e04,%eax 102fbc: ff d0 call *%eax 102fbe: e9 25 e7 ff ff jmp 1016e8 <all_ints> 00102fc3 <isr164>: 102fc3: 6a 00 push $0x0 102fc5: 6a a4 push $0xffffffa4 102fc7: 0f a8 push %gs 102fc9: 0f a0 push %fs 102fcb: 06 push %es 102fcc: 1e push %ds 102fcd: 60 pusha 102fce: 66 b8 10 00 mov $0x10,%ax 102fd2: 8e d8 mov %eax,%ds 102fd4: 8e c0 mov %eax,%es 102fd6: 8e e0 mov %eax,%fs 102fd8: 8e e8 mov %eax,%gs 102fda: 89 e0 mov %esp,%eax 102fdc: 50 push %eax 00102fdd <isr164.1>: 102fdd: b8 04 3e 10 00 mov $0x103e04,%eax 102fe2: ff d0 call *%eax 102fe4: e9 ff e6 ff ff jmp 1016e8 <all_ints> 00102fe9 <isr165>: 102fe9: 6a 00 push $0x0 102feb: 6a a5 push $0xffffffa5 102fed: 0f a8 push %gs 102fef: 0f a0 push %fs 102ff1: 06 push %es 102ff2: 1e push %ds 102ff3: 60 pusha 102ff4: 66 b8 10 00 mov $0x10,%ax 102ff8: 8e d8 mov %eax,%ds 102ffa: 8e c0 mov %eax,%es 102ffc: 8e e0 mov %eax,%fs 102ffe: 8e e8 mov %eax,%gs 103000: 89 e0 mov %esp,%eax 103002: 50 push %eax 00103003 <isr165.1>: 103003: b8 04 3e 10 00 mov $0x103e04,%eax 103008: ff d0 call *%eax 10300a: e9 d9 e6 ff ff jmp 1016e8 <all_ints> 0010300f <isr166>: 10300f: 6a 00 push $0x0 103011: 6a a6 push $0xffffffa6 103013: 0f a8 push %gs 103015: 0f a0 push %fs 103017: 06 push %es 103018: 1e push %ds 103019: 60 pusha 10301a: 66 b8 10 00 mov $0x10,%ax 10301e: 8e d8 mov %eax,%ds 103020: 8e c0 mov %eax,%es 103022: 8e e0 mov %eax,%fs 103024: 8e e8 mov %eax,%gs 103026: 89 e0 mov %esp,%eax 103028: 50 push %eax 00103029 <isr166.1>: 103029: b8 04 3e 10 00 mov $0x103e04,%eax 10302e: ff d0 call *%eax 103030: e9 b3 e6 ff ff jmp 1016e8 <all_ints> 00103035 <isr167>: 103035: 6a 00 push $0x0 103037: 6a a7 push $0xffffffa7 103039: 0f a8 push %gs 10303b: 0f a0 push %fs 10303d: 06 push %es 10303e: 1e push %ds 10303f: 60 pusha 103040: 66 b8 10 00 mov $0x10,%ax 103044: 8e d8 mov %eax,%ds 103046: 8e c0 mov %eax,%es 103048: 8e e0 mov %eax,%fs 10304a: 8e e8 mov %eax,%gs 10304c: 89 e0 mov %esp,%eax 10304e: 50 push %eax 0010304f <isr167.1>: 10304f: b8 04 3e 10 00 mov $0x103e04,%eax 103054: ff d0 call *%eax 103056: e9 8d e6 ff ff jmp 1016e8 <all_ints> 0010305b <isr168>: 10305b: 6a 00 push $0x0 10305d: 6a a8 push $0xffffffa8 10305f: 0f a8 push %gs 103061: 0f a0 push %fs 103063: 06 push %es 103064: 1e push %ds 103065: 60 pusha 103066: 66 b8 10 00 mov $0x10,%ax 10306a: 8e d8 mov %eax,%ds 10306c: 8e c0 mov %eax,%es 10306e: 8e e0 mov %eax,%fs 103070: 8e e8 mov %eax,%gs 103072: 89 e0 mov %esp,%eax 103074: 50 push %eax 00103075 <isr168.1>: 103075: b8 04 3e 10 00 mov $0x103e04,%eax 10307a: ff d0 call *%eax 10307c: e9 67 e6 ff ff jmp 1016e8 <all_ints> 00103081 <isr169>: 103081: 6a 00 push $0x0 103083: 6a a9 push $0xffffffa9 103085: 0f a8 push %gs 103087: 0f a0 push %fs 103089: 06 push %es 10308a: 1e push %ds 10308b: 60 pusha 10308c: 66 b8 10 00 mov $0x10,%ax 103090: 8e d8 mov %eax,%ds 103092: 8e c0 mov %eax,%es 103094: 8e e0 mov %eax,%fs 103096: 8e e8 mov %eax,%gs 103098: 89 e0 mov %esp,%eax 10309a: 50 push %eax 0010309b <isr169.1>: 10309b: b8 04 3e 10 00 mov $0x103e04,%eax 1030a0: ff d0 call *%eax 1030a2: e9 41 e6 ff ff jmp 1016e8 <all_ints> 001030a7 <isr170>: 1030a7: 6a 00 push $0x0 1030a9: 6a aa push $0xffffffaa 1030ab: 0f a8 push %gs 1030ad: 0f a0 push %fs 1030af: 06 push %es 1030b0: 1e push %ds 1030b1: 60 pusha 1030b2: 66 b8 10 00 mov $0x10,%ax 1030b6: 8e d8 mov %eax,%ds 1030b8: 8e c0 mov %eax,%es 1030ba: 8e e0 mov %eax,%fs 1030bc: 8e e8 mov %eax,%gs 1030be: 89 e0 mov %esp,%eax 1030c0: 50 push %eax 001030c1 <isr170.1>: 1030c1: b8 04 3e 10 00 mov $0x103e04,%eax 1030c6: ff d0 call *%eax 1030c8: e9 1b e6 ff ff jmp 1016e8 <all_ints> 001030cd <isr171>: 1030cd: 6a 00 push $0x0 1030cf: 6a ab push $0xffffffab 1030d1: 0f a8 push %gs 1030d3: 0f a0 push %fs 1030d5: 06 push %es 1030d6: 1e push %ds 1030d7: 60 pusha 1030d8: 66 b8 10 00 mov $0x10,%ax 1030dc: 8e d8 mov %eax,%ds 1030de: 8e c0 mov %eax,%es 1030e0: 8e e0 mov %eax,%fs 1030e2: 8e e8 mov %eax,%gs 1030e4: 89 e0 mov %esp,%eax 1030e6: 50 push %eax 001030e7 <isr171.1>: 1030e7: b8 04 3e 10 00 mov $0x103e04,%eax 1030ec: ff d0 call *%eax 1030ee: e9 f5 e5 ff ff jmp 1016e8 <all_ints> 001030f3 <isr172>: 1030f3: 6a 00 push $0x0 1030f5: 6a ac push $0xffffffac 1030f7: 0f a8 push %gs 1030f9: 0f a0 push %fs 1030fb: 06 push %es 1030fc: 1e push %ds 1030fd: 60 pusha 1030fe: 66 b8 10 00 mov $0x10,%ax 103102: 8e d8 mov %eax,%ds 103104: 8e c0 mov %eax,%es 103106: 8e e0 mov %eax,%fs 103108: 8e e8 mov %eax,%gs 10310a: 89 e0 mov %esp,%eax 10310c: 50 push %eax 0010310d <isr172.1>: 10310d: b8 04 3e 10 00 mov $0x103e04,%eax 103112: ff d0 call *%eax 103114: e9 cf e5 ff ff jmp 1016e8 <all_ints> 00103119 <isr173>: 103119: 6a 00 push $0x0 10311b: 6a ad push $0xffffffad 10311d: 0f a8 push %gs 10311f: 0f a0 push %fs 103121: 06 push %es 103122: 1e push %ds 103123: 60 pusha 103124: 66 b8 10 00 mov $0x10,%ax 103128: 8e d8 mov %eax,%ds 10312a: 8e c0 mov %eax,%es 10312c: 8e e0 mov %eax,%fs 10312e: 8e e8 mov %eax,%gs 103130: 89 e0 mov %esp,%eax 103132: 50 push %eax 00103133 <isr173.1>: 103133: b8 04 3e 10 00 mov $0x103e04,%eax 103138: ff d0 call *%eax 10313a: e9 a9 e5 ff ff jmp 1016e8 <all_ints> 0010313f <isr174>: 10313f: 6a 00 push $0x0 103141: 6a ae push $0xffffffae 103143: 0f a8 push %gs 103145: 0f a0 push %fs 103147: 06 push %es 103148: 1e push %ds 103149: 60 pusha 10314a: 66 b8 10 00 mov $0x10,%ax 10314e: 8e d8 mov %eax,%ds 103150: 8e c0 mov %eax,%es 103152: 8e e0 mov %eax,%fs 103154: 8e e8 mov %eax,%gs 103156: 89 e0 mov %esp,%eax 103158: 50 push %eax 00103159 <isr174.1>: 103159: b8 04 3e 10 00 mov $0x103e04,%eax 10315e: ff d0 call *%eax 103160: e9 83 e5 ff ff jmp 1016e8 <all_ints> 00103165 <isr175>: 103165: 6a 00 push $0x0 103167: 6a af push $0xffffffaf 103169: 0f a8 push %gs 10316b: 0f a0 push %fs 10316d: 06 push %es 10316e: 1e push %ds 10316f: 60 pusha 103170: 66 b8 10 00 mov $0x10,%ax 103174: 8e d8 mov %eax,%ds 103176: 8e c0 mov %eax,%es 103178: 8e e0 mov %eax,%fs 10317a: 8e e8 mov %eax,%gs 10317c: 89 e0 mov %esp,%eax 10317e: 50 push %eax 0010317f <isr175.1>: 10317f: b8 04 3e 10 00 mov $0x103e04,%eax 103184: ff d0 call *%eax 103186: e9 5d e5 ff ff jmp 1016e8 <all_ints> 0010318b <isr176>: 10318b: 6a 00 push $0x0 10318d: 6a b0 push $0xffffffb0 10318f: 0f a8 push %gs 103191: 0f a0 push %fs 103193: 06 push %es 103194: 1e push %ds 103195: 60 pusha 103196: 66 b8 10 00 mov $0x10,%ax 10319a: 8e d8 mov %eax,%ds 10319c: 8e c0 mov %eax,%es 10319e: 8e e0 mov %eax,%fs 1031a0: 8e e8 mov %eax,%gs 1031a2: 89 e0 mov %esp,%eax 1031a4: 50 push %eax 001031a5 <isr176.1>: 1031a5: b8 04 3e 10 00 mov $0x103e04,%eax 1031aa: ff d0 call *%eax 1031ac: e9 37 e5 ff ff jmp 1016e8 <all_ints> 001031b1 <isr177>: 1031b1: 6a 00 push $0x0 1031b3: 6a b1 push $0xffffffb1 1031b5: 0f a8 push %gs 1031b7: 0f a0 push %fs 1031b9: 06 push %es 1031ba: 1e push %ds 1031bb: 60 pusha 1031bc: 66 b8 10 00 mov $0x10,%ax 1031c0: 8e d8 mov %eax,%ds 1031c2: 8e c0 mov %eax,%es 1031c4: 8e e0 mov %eax,%fs 1031c6: 8e e8 mov %eax,%gs 1031c8: 89 e0 mov %esp,%eax 1031ca: 50 push %eax 001031cb <isr177.1>: 1031cb: b8 04 3e 10 00 mov $0x103e04,%eax 1031d0: ff d0 call *%eax 1031d2: e9 11 e5 ff ff jmp 1016e8 <all_ints> 001031d7 <isr178>: 1031d7: 6a 00 push $0x0 1031d9: 6a b2 push $0xffffffb2 1031db: 0f a8 push %gs 1031dd: 0f a0 push %fs 1031df: 06 push %es 1031e0: 1e push %ds 1031e1: 60 pusha 1031e2: 66 b8 10 00 mov $0x10,%ax 1031e6: 8e d8 mov %eax,%ds 1031e8: 8e c0 mov %eax,%es 1031ea: 8e e0 mov %eax,%fs 1031ec: 8e e8 mov %eax,%gs 1031ee: 89 e0 mov %esp,%eax 1031f0: 50 push %eax 001031f1 <isr178.1>: 1031f1: b8 04 3e 10 00 mov $0x103e04,%eax 1031f6: ff d0 call *%eax 1031f8: e9 eb e4 ff ff jmp 1016e8 <all_ints> 001031fd <isr179>: 1031fd: 6a 00 push $0x0 1031ff: 6a b3 push $0xffffffb3 103201: 0f a8 push %gs 103203: 0f a0 push %fs 103205: 06 push %es 103206: 1e push %ds 103207: 60 pusha 103208: 66 b8 10 00 mov $0x10,%ax 10320c: 8e d8 mov %eax,%ds 10320e: 8e c0 mov %eax,%es 103210: 8e e0 mov %eax,%fs 103212: 8e e8 mov %eax,%gs 103214: 89 e0 mov %esp,%eax 103216: 50 push %eax 00103217 <isr179.1>: 103217: b8 04 3e 10 00 mov $0x103e04,%eax 10321c: ff d0 call *%eax 10321e: e9 c5 e4 ff ff jmp 1016e8 <all_ints> 00103223 <isr180>: 103223: 6a 00 push $0x0 103225: 6a b4 push $0xffffffb4 103227: 0f a8 push %gs 103229: 0f a0 push %fs 10322b: 06 push %es 10322c: 1e push %ds 10322d: 60 pusha 10322e: 66 b8 10 00 mov $0x10,%ax 103232: 8e d8 mov %eax,%ds 103234: 8e c0 mov %eax,%es 103236: 8e e0 mov %eax,%fs 103238: 8e e8 mov %eax,%gs 10323a: 89 e0 mov %esp,%eax 10323c: 50 push %eax 0010323d <isr180.1>: 10323d: b8 04 3e 10 00 mov $0x103e04,%eax 103242: ff d0 call *%eax 103244: e9 9f e4 ff ff jmp 1016e8 <all_ints> 00103249 <isr181>: 103249: 6a 00 push $0x0 10324b: 6a b5 push $0xffffffb5 10324d: 0f a8 push %gs 10324f: 0f a0 push %fs 103251: 06 push %es 103252: 1e push %ds 103253: 60 pusha 103254: 66 b8 10 00 mov $0x10,%ax 103258: 8e d8 mov %eax,%ds 10325a: 8e c0 mov %eax,%es 10325c: 8e e0 mov %eax,%fs 10325e: 8e e8 mov %eax,%gs 103260: 89 e0 mov %esp,%eax 103262: 50 push %eax 00103263 <isr181.1>: 103263: b8 04 3e 10 00 mov $0x103e04,%eax 103268: ff d0 call *%eax 10326a: e9 79 e4 ff ff jmp 1016e8 <all_ints> 0010326f <isr182>: 10326f: 6a 00 push $0x0 103271: 6a b6 push $0xffffffb6 103273: 0f a8 push %gs 103275: 0f a0 push %fs 103277: 06 push %es 103278: 1e push %ds 103279: 60 pusha 10327a: 66 b8 10 00 mov $0x10,%ax 10327e: 8e d8 mov %eax,%ds 103280: 8e c0 mov %eax,%es 103282: 8e e0 mov %eax,%fs 103284: 8e e8 mov %eax,%gs 103286: 89 e0 mov %esp,%eax 103288: 50 push %eax 00103289 <isr182.1>: 103289: b8 04 3e 10 00 mov $0x103e04,%eax 10328e: ff d0 call *%eax 103290: e9 53 e4 ff ff jmp 1016e8 <all_ints> 00103295 <isr183>: 103295: 6a 00 push $0x0 103297: 6a b7 push $0xffffffb7 103299: 0f a8 push %gs 10329b: 0f a0 push %fs 10329d: 06 push %es 10329e: 1e push %ds 10329f: 60 pusha 1032a0: 66 b8 10 00 mov $0x10,%ax 1032a4: 8e d8 mov %eax,%ds 1032a6: 8e c0 mov %eax,%es 1032a8: 8e e0 mov %eax,%fs 1032aa: 8e e8 mov %eax,%gs 1032ac: 89 e0 mov %esp,%eax 1032ae: 50 push %eax 001032af <isr183.1>: 1032af: b8 04 3e 10 00 mov $0x103e04,%eax 1032b4: ff d0 call *%eax 1032b6: e9 2d e4 ff ff jmp 1016e8 <all_ints> 001032bb <isr184>: 1032bb: 6a 00 push $0x0 1032bd: 6a b8 push $0xffffffb8 1032bf: 0f a8 push %gs 1032c1: 0f a0 push %fs 1032c3: 06 push %es 1032c4: 1e push %ds 1032c5: 60 pusha 1032c6: 66 b8 10 00 mov $0x10,%ax 1032ca: 8e d8 mov %eax,%ds 1032cc: 8e c0 mov %eax,%es 1032ce: 8e e0 mov %eax,%fs 1032d0: 8e e8 mov %eax,%gs 1032d2: 89 e0 mov %esp,%eax 1032d4: 50 push %eax 001032d5 <isr184.1>: 1032d5: b8 04 3e 10 00 mov $0x103e04,%eax 1032da: ff d0 call *%eax 1032dc: e9 07 e4 ff ff jmp 1016e8 <all_ints> 001032e1 <isr185>: 1032e1: 6a 00 push $0x0 1032e3: 6a b9 push $0xffffffb9 1032e5: 0f a8 push %gs 1032e7: 0f a0 push %fs 1032e9: 06 push %es 1032ea: 1e push %ds 1032eb: 60 pusha 1032ec: 66 b8 10 00 mov $0x10,%ax 1032f0: 8e d8 mov %eax,%ds 1032f2: 8e c0 mov %eax,%es 1032f4: 8e e0 mov %eax,%fs 1032f6: 8e e8 mov %eax,%gs 1032f8: 89 e0 mov %esp,%eax 1032fa: 50 push %eax 001032fb <isr185.1>: 1032fb: b8 04 3e 10 00 mov $0x103e04,%eax 103300: ff d0 call *%eax 103302: e9 e1 e3 ff ff jmp 1016e8 <all_ints> 00103307 <isr186>: 103307: 6a 00 push $0x0 103309: 6a ba push $0xffffffba 10330b: 0f a8 push %gs 10330d: 0f a0 push %fs 10330f: 06 push %es 103310: 1e push %ds 103311: 60 pusha 103312: 66 b8 10 00 mov $0x10,%ax 103316: 8e d8 mov %eax,%ds 103318: 8e c0 mov %eax,%es 10331a: 8e e0 mov %eax,%fs 10331c: 8e e8 mov %eax,%gs 10331e: 89 e0 mov %esp,%eax 103320: 50 push %eax 00103321 <isr186.1>: 103321: b8 04 3e 10 00 mov $0x103e04,%eax 103326: ff d0 call *%eax 103328: e9 bb e3 ff ff jmp 1016e8 <all_ints> 0010332d <isr187>: 10332d: 6a 00 push $0x0 10332f: 6a bb push $0xffffffbb 103331: 0f a8 push %gs 103333: 0f a0 push %fs 103335: 06 push %es 103336: 1e push %ds 103337: 60 pusha 103338: 66 b8 10 00 mov $0x10,%ax 10333c: 8e d8 mov %eax,%ds 10333e: 8e c0 mov %eax,%es 103340: 8e e0 mov %eax,%fs 103342: 8e e8 mov %eax,%gs 103344: 89 e0 mov %esp,%eax 103346: 50 push %eax 00103347 <isr187.1>: 103347: b8 04 3e 10 00 mov $0x103e04,%eax 10334c: ff d0 call *%eax 10334e: e9 95 e3 ff ff jmp 1016e8 <all_ints> 00103353 <isr188>: 103353: 6a 00 push $0x0 103355: 6a bc push $0xffffffbc 103357: 0f a8 push %gs 103359: 0f a0 push %fs 10335b: 06 push %es 10335c: 1e push %ds 10335d: 60 pusha 10335e: 66 b8 10 00 mov $0x10,%ax 103362: 8e d8 mov %eax,%ds 103364: 8e c0 mov %eax,%es 103366: 8e e0 mov %eax,%fs 103368: 8e e8 mov %eax,%gs 10336a: 89 e0 mov %esp,%eax 10336c: 50 push %eax 0010336d <isr188.1>: 10336d: b8 04 3e 10 00 mov $0x103e04,%eax 103372: ff d0 call *%eax 103374: e9 6f e3 ff ff jmp 1016e8 <all_ints> 00103379 <isr189>: 103379: 6a 00 push $0x0 10337b: 6a bd push $0xffffffbd 10337d: 0f a8 push %gs 10337f: 0f a0 push %fs 103381: 06 push %es 103382: 1e push %ds 103383: 60 pusha 103384: 66 b8 10 00 mov $0x10,%ax 103388: 8e d8 mov %eax,%ds 10338a: 8e c0 mov %eax,%es 10338c: 8e e0 mov %eax,%fs 10338e: 8e e8 mov %eax,%gs 103390: 89 e0 mov %esp,%eax 103392: 50 push %eax 00103393 <isr189.1>: 103393: b8 04 3e 10 00 mov $0x103e04,%eax 103398: ff d0 call *%eax 10339a: e9 49 e3 ff ff jmp 1016e8 <all_ints> 0010339f <isr190>: 10339f: 6a 00 push $0x0 1033a1: 6a be push $0xffffffbe 1033a3: 0f a8 push %gs 1033a5: 0f a0 push %fs 1033a7: 06 push %es 1033a8: 1e push %ds 1033a9: 60 pusha 1033aa: 66 b8 10 00 mov $0x10,%ax 1033ae: 8e d8 mov %eax,%ds 1033b0: 8e c0 mov %eax,%es 1033b2: 8e e0 mov %eax,%fs 1033b4: 8e e8 mov %eax,%gs 1033b6: 89 e0 mov %esp,%eax 1033b8: 50 push %eax 001033b9 <isr190.1>: 1033b9: b8 04 3e 10 00 mov $0x103e04,%eax 1033be: ff d0 call *%eax 1033c0: e9 23 e3 ff ff jmp 1016e8 <all_ints> 001033c5 <isr191>: 1033c5: 6a 00 push $0x0 1033c7: 6a bf push $0xffffffbf 1033c9: 0f a8 push %gs 1033cb: 0f a0 push %fs 1033cd: 06 push %es 1033ce: 1e push %ds 1033cf: 60 pusha 1033d0: 66 b8 10 00 mov $0x10,%ax 1033d4: 8e d8 mov %eax,%ds 1033d6: 8e c0 mov %eax,%es 1033d8: 8e e0 mov %eax,%fs 1033da: 8e e8 mov %eax,%gs 1033dc: 89 e0 mov %esp,%eax 1033de: 50 push %eax 001033df <isr191.1>: 1033df: b8 04 3e 10 00 mov $0x103e04,%eax 1033e4: ff d0 call *%eax 1033e6: e9 fd e2 ff ff jmp 1016e8 <all_ints> 001033eb <isr192>: 1033eb: 6a 00 push $0x0 1033ed: 6a c0 push $0xffffffc0 1033ef: 0f a8 push %gs 1033f1: 0f a0 push %fs 1033f3: 06 push %es 1033f4: 1e push %ds 1033f5: 60 pusha 1033f6: 66 b8 10 00 mov $0x10,%ax 1033fa: 8e d8 mov %eax,%ds 1033fc: 8e c0 mov %eax,%es 1033fe: 8e e0 mov %eax,%fs 103400: 8e e8 mov %eax,%gs 103402: 89 e0 mov %esp,%eax 103404: 50 push %eax 00103405 <isr192.1>: 103405: b8 04 3e 10 00 mov $0x103e04,%eax 10340a: ff d0 call *%eax 10340c: e9 d7 e2 ff ff jmp 1016e8 <all_ints> 00103411 <isr193>: 103411: 6a 00 push $0x0 103413: 6a c1 push $0xffffffc1 103415: 0f a8 push %gs 103417: 0f a0 push %fs 103419: 06 push %es 10341a: 1e push %ds 10341b: 60 pusha 10341c: 66 b8 10 00 mov $0x10,%ax 103420: 8e d8 mov %eax,%ds 103422: 8e c0 mov %eax,%es 103424: 8e e0 mov %eax,%fs 103426: 8e e8 mov %eax,%gs 103428: 89 e0 mov %esp,%eax 10342a: 50 push %eax 0010342b <isr193.1>: 10342b: b8 04 3e 10 00 mov $0x103e04,%eax 103430: ff d0 call *%eax 103432: e9 b1 e2 ff ff jmp 1016e8 <all_ints> 00103437 <isr194>: 103437: 6a 00 push $0x0 103439: 6a c2 push $0xffffffc2 10343b: 0f a8 push %gs 10343d: 0f a0 push %fs 10343f: 06 push %es 103440: 1e push %ds 103441: 60 pusha 103442: 66 b8 10 00 mov $0x10,%ax 103446: 8e d8 mov %eax,%ds 103448: 8e c0 mov %eax,%es 10344a: 8e e0 mov %eax,%fs 10344c: 8e e8 mov %eax,%gs 10344e: 89 e0 mov %esp,%eax 103450: 50 push %eax 00103451 <isr194.1>: 103451: b8 04 3e 10 00 mov $0x103e04,%eax 103456: ff d0 call *%eax 103458: e9 8b e2 ff ff jmp 1016e8 <all_ints> 0010345d <isr195>: 10345d: 6a 00 push $0x0 10345f: 6a c3 push $0xffffffc3 103461: 0f a8 push %gs 103463: 0f a0 push %fs 103465: 06 push %es 103466: 1e push %ds 103467: 60 pusha 103468: 66 b8 10 00 mov $0x10,%ax 10346c: 8e d8 mov %eax,%ds 10346e: 8e c0 mov %eax,%es 103470: 8e e0 mov %eax,%fs 103472: 8e e8 mov %eax,%gs 103474: 89 e0 mov %esp,%eax 103476: 50 push %eax 00103477 <isr195.1>: 103477: b8 04 3e 10 00 mov $0x103e04,%eax 10347c: ff d0 call *%eax 10347e: e9 65 e2 ff ff jmp 1016e8 <all_ints> 00103483 <isr196>: 103483: 6a 00 push $0x0 103485: 6a c4 push $0xffffffc4 103487: 0f a8 push %gs 103489: 0f a0 push %fs 10348b: 06 push %es 10348c: 1e push %ds 10348d: 60 pusha 10348e: 66 b8 10 00 mov $0x10,%ax 103492: 8e d8 mov %eax,%ds 103494: 8e c0 mov %eax,%es 103496: 8e e0 mov %eax,%fs 103498: 8e e8 mov %eax,%gs 10349a: 89 e0 mov %esp,%eax 10349c: 50 push %eax 0010349d <isr196.1>: 10349d: b8 04 3e 10 00 mov $0x103e04,%eax 1034a2: ff d0 call *%eax 1034a4: e9 3f e2 ff ff jmp 1016e8 <all_ints> 001034a9 <isr197>: 1034a9: 6a 00 push $0x0 1034ab: 6a c5 push $0xffffffc5 1034ad: 0f a8 push %gs 1034af: 0f a0 push %fs 1034b1: 06 push %es 1034b2: 1e push %ds 1034b3: 60 pusha 1034b4: 66 b8 10 00 mov $0x10,%ax 1034b8: 8e d8 mov %eax,%ds 1034ba: 8e c0 mov %eax,%es 1034bc: 8e e0 mov %eax,%fs 1034be: 8e e8 mov %eax,%gs 1034c0: 89 e0 mov %esp,%eax 1034c2: 50 push %eax 001034c3 <isr197.1>: 1034c3: b8 04 3e 10 00 mov $0x103e04,%eax 1034c8: ff d0 call *%eax 1034ca: e9 19 e2 ff ff jmp 1016e8 <all_ints> 001034cf <isr198>: 1034cf: 6a 00 push $0x0 1034d1: 6a c6 push $0xffffffc6 1034d3: 0f a8 push %gs 1034d5: 0f a0 push %fs 1034d7: 06 push %es 1034d8: 1e push %ds 1034d9: 60 pusha 1034da: 66 b8 10 00 mov $0x10,%ax 1034de: 8e d8 mov %eax,%ds 1034e0: 8e c0 mov %eax,%es 1034e2: 8e e0 mov %eax,%fs 1034e4: 8e e8 mov %eax,%gs 1034e6: 89 e0 mov %esp,%eax 1034e8: 50 push %eax 001034e9 <isr198.1>: 1034e9: b8 04 3e 10 00 mov $0x103e04,%eax 1034ee: ff d0 call *%eax 1034f0: e9 f3 e1 ff ff jmp 1016e8 <all_ints> 001034f5 <isr199>: 1034f5: 6a 00 push $0x0 1034f7: 6a c7 push $0xffffffc7 1034f9: 0f a8 push %gs 1034fb: 0f a0 push %fs 1034fd: 06 push %es 1034fe: 1e push %ds 1034ff: 60 pusha 103500: 66 b8 10 00 mov $0x10,%ax 103504: 8e d8 mov %eax,%ds 103506: 8e c0 mov %eax,%es 103508: 8e e0 mov %eax,%fs 10350a: 8e e8 mov %eax,%gs 10350c: 89 e0 mov %esp,%eax 10350e: 50 push %eax 0010350f <isr199.1>: 10350f: b8 04 3e 10 00 mov $0x103e04,%eax 103514: ff d0 call *%eax 103516: e9 cd e1 ff ff jmp 1016e8 <all_ints> 0010351b <isr200>: 10351b: 6a 00 push $0x0 10351d: 6a c8 push $0xffffffc8 10351f: 0f a8 push %gs 103521: 0f a0 push %fs 103523: 06 push %es 103524: 1e push %ds 103525: 60 pusha 103526: 66 b8 10 00 mov $0x10,%ax 10352a: 8e d8 mov %eax,%ds 10352c: 8e c0 mov %eax,%es 10352e: 8e e0 mov %eax,%fs 103530: 8e e8 mov %eax,%gs 103532: 89 e0 mov %esp,%eax 103534: 50 push %eax 00103535 <isr200.1>: 103535: b8 04 3e 10 00 mov $0x103e04,%eax 10353a: ff d0 call *%eax 10353c: e9 a7 e1 ff ff jmp 1016e8 <all_ints> 00103541 <isr201>: 103541: 6a 00 push $0x0 103543: 6a c9 push $0xffffffc9 103545: 0f a8 push %gs 103547: 0f a0 push %fs 103549: 06 push %es 10354a: 1e push %ds 10354b: 60 pusha 10354c: 66 b8 10 00 mov $0x10,%ax 103550: 8e d8 mov %eax,%ds 103552: 8e c0 mov %eax,%es 103554: 8e e0 mov %eax,%fs 103556: 8e e8 mov %eax,%gs 103558: 89 e0 mov %esp,%eax 10355a: 50 push %eax 0010355b <isr201.1>: 10355b: b8 04 3e 10 00 mov $0x103e04,%eax 103560: ff d0 call *%eax 103562: e9 81 e1 ff ff jmp 1016e8 <all_ints> 00103567 <isr202>: 103567: 6a 00 push $0x0 103569: 6a ca push $0xffffffca 10356b: 0f a8 push %gs 10356d: 0f a0 push %fs 10356f: 06 push %es 103570: 1e push %ds 103571: 60 pusha 103572: 66 b8 10 00 mov $0x10,%ax 103576: 8e d8 mov %eax,%ds 103578: 8e c0 mov %eax,%es 10357a: 8e e0 mov %eax,%fs 10357c: 8e e8 mov %eax,%gs 10357e: 89 e0 mov %esp,%eax 103580: 50 push %eax 00103581 <isr202.1>: 103581: b8 04 3e 10 00 mov $0x103e04,%eax 103586: ff d0 call *%eax 103588: e9 5b e1 ff ff jmp 1016e8 <all_ints> 0010358d <isr203>: 10358d: 6a 00 push $0x0 10358f: 6a cb push $0xffffffcb 103591: 0f a8 push %gs 103593: 0f a0 push %fs 103595: 06 push %es 103596: 1e push %ds 103597: 60 pusha 103598: 66 b8 10 00 mov $0x10,%ax 10359c: 8e d8 mov %eax,%ds 10359e: 8e c0 mov %eax,%es 1035a0: 8e e0 mov %eax,%fs 1035a2: 8e e8 mov %eax,%gs 1035a4: 89 e0 mov %esp,%eax 1035a6: 50 push %eax 001035a7 <isr203.1>: 1035a7: b8 04 3e 10 00 mov $0x103e04,%eax 1035ac: ff d0 call *%eax 1035ae: e9 35 e1 ff ff jmp 1016e8 <all_ints> 001035b3 <isr204>: 1035b3: 6a 00 push $0x0 1035b5: 6a cc push $0xffffffcc 1035b7: 0f a8 push %gs 1035b9: 0f a0 push %fs 1035bb: 06 push %es 1035bc: 1e push %ds 1035bd: 60 pusha 1035be: 66 b8 10 00 mov $0x10,%ax 1035c2: 8e d8 mov %eax,%ds 1035c4: 8e c0 mov %eax,%es 1035c6: 8e e0 mov %eax,%fs 1035c8: 8e e8 mov %eax,%gs 1035ca: 89 e0 mov %esp,%eax 1035cc: 50 push %eax 001035cd <isr204.1>: 1035cd: b8 04 3e 10 00 mov $0x103e04,%eax 1035d2: ff d0 call *%eax 1035d4: e9 0f e1 ff ff jmp 1016e8 <all_ints> 001035d9 <isr205>: 1035d9: 6a 00 push $0x0 1035db: 6a cd push $0xffffffcd 1035dd: 0f a8 push %gs 1035df: 0f a0 push %fs 1035e1: 06 push %es 1035e2: 1e push %ds 1035e3: 60 pusha 1035e4: 66 b8 10 00 mov $0x10,%ax 1035e8: 8e d8 mov %eax,%ds 1035ea: 8e c0 mov %eax,%es 1035ec: 8e e0 mov %eax,%fs 1035ee: 8e e8 mov %eax,%gs 1035f0: 89 e0 mov %esp,%eax 1035f2: 50 push %eax 001035f3 <isr205.1>: 1035f3: b8 04 3e 10 00 mov $0x103e04,%eax 1035f8: ff d0 call *%eax 1035fa: e9 e9 e0 ff ff jmp 1016e8 <all_ints> 001035ff <isr206>: 1035ff: 6a 00 push $0x0 103601: 6a ce push $0xffffffce 103603: 0f a8 push %gs 103605: 0f a0 push %fs 103607: 06 push %es 103608: 1e push %ds 103609: 60 pusha 10360a: 66 b8 10 00 mov $0x10,%ax 10360e: 8e d8 mov %eax,%ds 103610: 8e c0 mov %eax,%es 103612: 8e e0 mov %eax,%fs 103614: 8e e8 mov %eax,%gs 103616: 89 e0 mov %esp,%eax 103618: 50 push %eax 00103619 <isr206.1>: 103619: b8 04 3e 10 00 mov $0x103e04,%eax 10361e: ff d0 call *%eax 103620: e9 c3 e0 ff ff jmp 1016e8 <all_ints> 00103625 <isr207>: 103625: 6a 00 push $0x0 103627: 6a cf push $0xffffffcf 103629: 0f a8 push %gs 10362b: 0f a0 push %fs 10362d: 06 push %es 10362e: 1e push %ds 10362f: 60 pusha 103630: 66 b8 10 00 mov $0x10,%ax 103634: 8e d8 mov %eax,%ds 103636: 8e c0 mov %eax,%es 103638: 8e e0 mov %eax,%fs 10363a: 8e e8 mov %eax,%gs 10363c: 89 e0 mov %esp,%eax 10363e: 50 push %eax 0010363f <isr207.1>: 10363f: b8 04 3e 10 00 mov $0x103e04,%eax 103644: ff d0 call *%eax 103646: e9 9d e0 ff ff jmp 1016e8 <all_ints> 0010364b <isr208>: 10364b: 6a 00 push $0x0 10364d: 6a d0 push $0xffffffd0 10364f: 0f a8 push %gs 103651: 0f a0 push %fs 103653: 06 push %es 103654: 1e push %ds 103655: 60 pusha 103656: 66 b8 10 00 mov $0x10,%ax 10365a: 8e d8 mov %eax,%ds 10365c: 8e c0 mov %eax,%es 10365e: 8e e0 mov %eax,%fs 103660: 8e e8 mov %eax,%gs 103662: 89 e0 mov %esp,%eax 103664: 50 push %eax 00103665 <isr208.1>: 103665: b8 04 3e 10 00 mov $0x103e04,%eax 10366a: ff d0 call *%eax 10366c: e9 77 e0 ff ff jmp 1016e8 <all_ints> 00103671 <isr209>: 103671: 6a 00 push $0x0 103673: 6a d1 push $0xffffffd1 103675: 0f a8 push %gs 103677: 0f a0 push %fs 103679: 06 push %es 10367a: 1e push %ds 10367b: 60 pusha 10367c: 66 b8 10 00 mov $0x10,%ax 103680: 8e d8 mov %eax,%ds 103682: 8e c0 mov %eax,%es 103684: 8e e0 mov %eax,%fs 103686: 8e e8 mov %eax,%gs 103688: 89 e0 mov %esp,%eax 10368a: 50 push %eax 0010368b <isr209.1>: 10368b: b8 04 3e 10 00 mov $0x103e04,%eax 103690: ff d0 call *%eax 103692: e9 51 e0 ff ff jmp 1016e8 <all_ints> 00103697 <isr210>: 103697: 6a 00 push $0x0 103699: 6a d2 push $0xffffffd2 10369b: 0f a8 push %gs 10369d: 0f a0 push %fs 10369f: 06 push %es 1036a0: 1e push %ds 1036a1: 60 pusha 1036a2: 66 b8 10 00 mov $0x10,%ax 1036a6: 8e d8 mov %eax,%ds 1036a8: 8e c0 mov %eax,%es 1036aa: 8e e0 mov %eax,%fs 1036ac: 8e e8 mov %eax,%gs 1036ae: 89 e0 mov %esp,%eax 1036b0: 50 push %eax 001036b1 <isr210.1>: 1036b1: b8 04 3e 10 00 mov $0x103e04,%eax 1036b6: ff d0 call *%eax 1036b8: e9 2b e0 ff ff jmp 1016e8 <all_ints> 001036bd <isr211>: 1036bd: 6a 00 push $0x0 1036bf: 6a d3 push $0xffffffd3 1036c1: 0f a8 push %gs 1036c3: 0f a0 push %fs 1036c5: 06 push %es 1036c6: 1e push %ds 1036c7: 60 pusha 1036c8: 66 b8 10 00 mov $0x10,%ax 1036cc: 8e d8 mov %eax,%ds 1036ce: 8e c0 mov %eax,%es 1036d0: 8e e0 mov %eax,%fs 1036d2: 8e e8 mov %eax,%gs 1036d4: 89 e0 mov %esp,%eax 1036d6: 50 push %eax 001036d7 <isr211.1>: 1036d7: b8 04 3e 10 00 mov $0x103e04,%eax 1036dc: ff d0 call *%eax 1036de: e9 05 e0 ff ff jmp 1016e8 <all_ints> 001036e3 <isr212>: 1036e3: 6a 00 push $0x0 1036e5: 6a d4 push $0xffffffd4 1036e7: 0f a8 push %gs 1036e9: 0f a0 push %fs 1036eb: 06 push %es 1036ec: 1e push %ds 1036ed: 60 pusha 1036ee: 66 b8 10 00 mov $0x10,%ax 1036f2: 8e d8 mov %eax,%ds 1036f4: 8e c0 mov %eax,%es 1036f6: 8e e0 mov %eax,%fs 1036f8: 8e e8 mov %eax,%gs 1036fa: 89 e0 mov %esp,%eax 1036fc: 50 push %eax 001036fd <isr212.1>: 1036fd: b8 04 3e 10 00 mov $0x103e04,%eax 103702: ff d0 call *%eax 103704: e9 df df ff ff jmp 1016e8 <all_ints> 00103709 <isr213>: 103709: 6a 00 push $0x0 10370b: 6a d5 push $0xffffffd5 10370d: 0f a8 push %gs 10370f: 0f a0 push %fs 103711: 06 push %es 103712: 1e push %ds 103713: 60 pusha 103714: 66 b8 10 00 mov $0x10,%ax 103718: 8e d8 mov %eax,%ds 10371a: 8e c0 mov %eax,%es 10371c: 8e e0 mov %eax,%fs 10371e: 8e e8 mov %eax,%gs 103720: 89 e0 mov %esp,%eax 103722: 50 push %eax 00103723 <isr213.1>: 103723: b8 04 3e 10 00 mov $0x103e04,%eax 103728: ff d0 call *%eax 10372a: e9 b9 df ff ff jmp 1016e8 <all_ints> 0010372f <isr214>: 10372f: 6a 00 push $0x0 103731: 6a d6 push $0xffffffd6 103733: 0f a8 push %gs 103735: 0f a0 push %fs 103737: 06 push %es 103738: 1e push %ds 103739: 60 pusha 10373a: 66 b8 10 00 mov $0x10,%ax 10373e: 8e d8 mov %eax,%ds 103740: 8e c0 mov %eax,%es 103742: 8e e0 mov %eax,%fs 103744: 8e e8 mov %eax,%gs 103746: 89 e0 mov %esp,%eax 103748: 50 push %eax 00103749 <isr214.1>: 103749: b8 04 3e 10 00 mov $0x103e04,%eax 10374e: ff d0 call *%eax 103750: e9 93 df ff ff jmp 1016e8 <all_ints> 00103755 <isr215>: 103755: 6a 00 push $0x0 103757: 6a d7 push $0xffffffd7 103759: 0f a8 push %gs 10375b: 0f a0 push %fs 10375d: 06 push %es 10375e: 1e push %ds 10375f: 60 pusha 103760: 66 b8 10 00 mov $0x10,%ax 103764: 8e d8 mov %eax,%ds 103766: 8e c0 mov %eax,%es 103768: 8e e0 mov %eax,%fs 10376a: 8e e8 mov %eax,%gs 10376c: 89 e0 mov %esp,%eax 10376e: 50 push %eax 0010376f <isr215.1>: 10376f: b8 04 3e 10 00 mov $0x103e04,%eax 103774: ff d0 call *%eax 103776: e9 6d df ff ff jmp 1016e8 <all_ints> 0010377b <isr216>: 10377b: 6a 00 push $0x0 10377d: 6a d8 push $0xffffffd8 10377f: 0f a8 push %gs 103781: 0f a0 push %fs 103783: 06 push %es 103784: 1e push %ds 103785: 60 pusha 103786: 66 b8 10 00 mov $0x10,%ax 10378a: 8e d8 mov %eax,%ds 10378c: 8e c0 mov %eax,%es 10378e: 8e e0 mov %eax,%fs 103790: 8e e8 mov %eax,%gs 103792: 89 e0 mov %esp,%eax 103794: 50 push %eax 00103795 <isr216.1>: 103795: b8 04 3e 10 00 mov $0x103e04,%eax 10379a: ff d0 call *%eax 10379c: e9 47 df ff ff jmp 1016e8 <all_ints> 001037a1 <isr217>: 1037a1: 6a 00 push $0x0 1037a3: 6a d9 push $0xffffffd9 1037a5: 0f a8 push %gs 1037a7: 0f a0 push %fs 1037a9: 06 push %es 1037aa: 1e push %ds 1037ab: 60 pusha 1037ac: 66 b8 10 00 mov $0x10,%ax 1037b0: 8e d8 mov %eax,%ds 1037b2: 8e c0 mov %eax,%es 1037b4: 8e e0 mov %eax,%fs 1037b6: 8e e8 mov %eax,%gs 1037b8: 89 e0 mov %esp,%eax 1037ba: 50 push %eax 001037bb <isr217.1>: 1037bb: b8 04 3e 10 00 mov $0x103e04,%eax 1037c0: ff d0 call *%eax 1037c2: e9 21 df ff ff jmp 1016e8 <all_ints> 001037c7 <isr218>: 1037c7: 6a 00 push $0x0 1037c9: 6a da push $0xffffffda 1037cb: 0f a8 push %gs 1037cd: 0f a0 push %fs 1037cf: 06 push %es 1037d0: 1e push %ds 1037d1: 60 pusha 1037d2: 66 b8 10 00 mov $0x10,%ax 1037d6: 8e d8 mov %eax,%ds 1037d8: 8e c0 mov %eax,%es 1037da: 8e e0 mov %eax,%fs 1037dc: 8e e8 mov %eax,%gs 1037de: 89 e0 mov %esp,%eax 1037e0: 50 push %eax 001037e1 <isr218.1>: 1037e1: b8 04 3e 10 00 mov $0x103e04,%eax 1037e6: ff d0 call *%eax 1037e8: e9 fb de ff ff jmp 1016e8 <all_ints> 001037ed <isr219>: 1037ed: 6a 00 push $0x0 1037ef: 6a db push $0xffffffdb 1037f1: 0f a8 push %gs 1037f3: 0f a0 push %fs 1037f5: 06 push %es 1037f6: 1e push %ds 1037f7: 60 pusha 1037f8: 66 b8 10 00 mov $0x10,%ax 1037fc: 8e d8 mov %eax,%ds 1037fe: 8e c0 mov %eax,%es 103800: 8e e0 mov %eax,%fs 103802: 8e e8 mov %eax,%gs 103804: 89 e0 mov %esp,%eax 103806: 50 push %eax 00103807 <isr219.1>: 103807: b8 04 3e 10 00 mov $0x103e04,%eax 10380c: ff d0 call *%eax 10380e: e9 d5 de ff ff jmp 1016e8 <all_ints> 00103813 <isr220>: 103813: 6a 00 push $0x0 103815: 6a dc push $0xffffffdc 103817: 0f a8 push %gs 103819: 0f a0 push %fs 10381b: 06 push %es 10381c: 1e push %ds 10381d: 60 pusha 10381e: 66 b8 10 00 mov $0x10,%ax 103822: 8e d8 mov %eax,%ds 103824: 8e c0 mov %eax,%es 103826: 8e e0 mov %eax,%fs 103828: 8e e8 mov %eax,%gs 10382a: 89 e0 mov %esp,%eax 10382c: 50 push %eax 0010382d <isr220.1>: 10382d: b8 04 3e 10 00 mov $0x103e04,%eax 103832: ff d0 call *%eax 103834: e9 af de ff ff jmp 1016e8 <all_ints> 00103839 <isr221>: 103839: 6a 00 push $0x0 10383b: 6a dd push $0xffffffdd 10383d: 0f a8 push %gs 10383f: 0f a0 push %fs 103841: 06 push %es 103842: 1e push %ds 103843: 60 pusha 103844: 66 b8 10 00 mov $0x10,%ax 103848: 8e d8 mov %eax,%ds 10384a: 8e c0 mov %eax,%es 10384c: 8e e0 mov %eax,%fs 10384e: 8e e8 mov %eax,%gs 103850: 89 e0 mov %esp,%eax 103852: 50 push %eax 00103853 <isr221.1>: 103853: b8 04 3e 10 00 mov $0x103e04,%eax 103858: ff d0 call *%eax 10385a: e9 89 de ff ff jmp 1016e8 <all_ints> 0010385f <isr222>: 10385f: 6a 00 push $0x0 103861: 6a de push $0xffffffde 103863: 0f a8 push %gs 103865: 0f a0 push %fs 103867: 06 push %es 103868: 1e push %ds 103869: 60 pusha 10386a: 66 b8 10 00 mov $0x10,%ax 10386e: 8e d8 mov %eax,%ds 103870: 8e c0 mov %eax,%es 103872: 8e e0 mov %eax,%fs 103874: 8e e8 mov %eax,%gs 103876: 89 e0 mov %esp,%eax 103878: 50 push %eax 00103879 <isr222.1>: 103879: b8 04 3e 10 00 mov $0x103e04,%eax 10387e: ff d0 call *%eax 103880: e9 63 de ff ff jmp 1016e8 <all_ints> 00103885 <isr223>: 103885: 6a 00 push $0x0 103887: 6a df push $0xffffffdf 103889: 0f a8 push %gs 10388b: 0f a0 push %fs 10388d: 06 push %es 10388e: 1e push %ds 10388f: 60 pusha 103890: 66 b8 10 00 mov $0x10,%ax 103894: 8e d8 mov %eax,%ds 103896: 8e c0 mov %eax,%es 103898: 8e e0 mov %eax,%fs 10389a: 8e e8 mov %eax,%gs 10389c: 89 e0 mov %esp,%eax 10389e: 50 push %eax 0010389f <isr223.1>: 10389f: b8 04 3e 10 00 mov $0x103e04,%eax 1038a4: ff d0 call *%eax 1038a6: e9 3d de ff ff jmp 1016e8 <all_ints> 001038ab <isr224>: 1038ab: 6a 00 push $0x0 1038ad: 6a e0 push $0xffffffe0 1038af: 0f a8 push %gs 1038b1: 0f a0 push %fs 1038b3: 06 push %es 1038b4: 1e push %ds 1038b5: 60 pusha 1038b6: 66 b8 10 00 mov $0x10,%ax 1038ba: 8e d8 mov %eax,%ds 1038bc: 8e c0 mov %eax,%es 1038be: 8e e0 mov %eax,%fs 1038c0: 8e e8 mov %eax,%gs 1038c2: 89 e0 mov %esp,%eax 1038c4: 50 push %eax 001038c5 <isr224.1>: 1038c5: b8 04 3e 10 00 mov $0x103e04,%eax 1038ca: ff d0 call *%eax 1038cc: e9 17 de ff ff jmp 1016e8 <all_ints> 001038d1 <isr225>: 1038d1: 6a 00 push $0x0 1038d3: 6a e1 push $0xffffffe1 1038d5: 0f a8 push %gs 1038d7: 0f a0 push %fs 1038d9: 06 push %es 1038da: 1e push %ds 1038db: 60 pusha 1038dc: 66 b8 10 00 mov $0x10,%ax 1038e0: 8e d8 mov %eax,%ds 1038e2: 8e c0 mov %eax,%es 1038e4: 8e e0 mov %eax,%fs 1038e6: 8e e8 mov %eax,%gs 1038e8: 89 e0 mov %esp,%eax 1038ea: 50 push %eax 001038eb <isr225.1>: 1038eb: b8 04 3e 10 00 mov $0x103e04,%eax 1038f0: ff d0 call *%eax 1038f2: e9 f1 dd ff ff jmp 1016e8 <all_ints> 001038f7 <isr226>: 1038f7: 6a 00 push $0x0 1038f9: 6a e2 push $0xffffffe2 1038fb: 0f a8 push %gs 1038fd: 0f a0 push %fs 1038ff: 06 push %es 103900: 1e push %ds 103901: 60 pusha 103902: 66 b8 10 00 mov $0x10,%ax 103906: 8e d8 mov %eax,%ds 103908: 8e c0 mov %eax,%es 10390a: 8e e0 mov %eax,%fs 10390c: 8e e8 mov %eax,%gs 10390e: 89 e0 mov %esp,%eax 103910: 50 push %eax 00103911 <isr226.1>: 103911: b8 04 3e 10 00 mov $0x103e04,%eax 103916: ff d0 call *%eax 103918: e9 cb dd ff ff jmp 1016e8 <all_ints> 0010391d <isr227>: 10391d: 6a 00 push $0x0 10391f: 6a e3 push $0xffffffe3 103921: 0f a8 push %gs 103923: 0f a0 push %fs 103925: 06 push %es 103926: 1e push %ds 103927: 60 pusha 103928: 66 b8 10 00 mov $0x10,%ax 10392c: 8e d8 mov %eax,%ds 10392e: 8e c0 mov %eax,%es 103930: 8e e0 mov %eax,%fs 103932: 8e e8 mov %eax,%gs 103934: 89 e0 mov %esp,%eax 103936: 50 push %eax 00103937 <isr227.1>: 103937: b8 04 3e 10 00 mov $0x103e04,%eax 10393c: ff d0 call *%eax 10393e: e9 a5 dd ff ff jmp 1016e8 <all_ints> 00103943 <isr228>: 103943: 6a 00 push $0x0 103945: 6a e4 push $0xffffffe4 103947: 0f a8 push %gs 103949: 0f a0 push %fs 10394b: 06 push %es 10394c: 1e push %ds 10394d: 60 pusha 10394e: 66 b8 10 00 mov $0x10,%ax 103952: 8e d8 mov %eax,%ds 103954: 8e c0 mov %eax,%es 103956: 8e e0 mov %eax,%fs 103958: 8e e8 mov %eax,%gs 10395a: 89 e0 mov %esp,%eax 10395c: 50 push %eax 0010395d <isr228.1>: 10395d: b8 04 3e 10 00 mov $0x103e04,%eax 103962: ff d0 call *%eax 103964: e9 7f dd ff ff jmp 1016e8 <all_ints> 00103969 <isr229>: 103969: 6a 00 push $0x0 10396b: 6a e5 push $0xffffffe5 10396d: 0f a8 push %gs 10396f: 0f a0 push %fs 103971: 06 push %es 103972: 1e push %ds 103973: 60 pusha 103974: 66 b8 10 00 mov $0x10,%ax 103978: 8e d8 mov %eax,%ds 10397a: 8e c0 mov %eax,%es 10397c: 8e e0 mov %eax,%fs 10397e: 8e e8 mov %eax,%gs 103980: 89 e0 mov %esp,%eax 103982: 50 push %eax 00103983 <isr229.1>: 103983: b8 04 3e 10 00 mov $0x103e04,%eax 103988: ff d0 call *%eax 10398a: e9 59 dd ff ff jmp 1016e8 <all_ints> 0010398f <isr230>: 10398f: 6a 00 push $0x0 103991: 6a e6 push $0xffffffe6 103993: 0f a8 push %gs 103995: 0f a0 push %fs 103997: 06 push %es 103998: 1e push %ds 103999: 60 pusha 10399a: 66 b8 10 00 mov $0x10,%ax 10399e: 8e d8 mov %eax,%ds 1039a0: 8e c0 mov %eax,%es 1039a2: 8e e0 mov %eax,%fs 1039a4: 8e e8 mov %eax,%gs 1039a6: 89 e0 mov %esp,%eax 1039a8: 50 push %eax 001039a9 <isr230.1>: 1039a9: b8 04 3e 10 00 mov $0x103e04,%eax 1039ae: ff d0 call *%eax 1039b0: e9 33 dd ff ff jmp 1016e8 <all_ints> 001039b5 <isr231>: 1039b5: 6a 00 push $0x0 1039b7: 6a e7 push $0xffffffe7 1039b9: 0f a8 push %gs 1039bb: 0f a0 push %fs 1039bd: 06 push %es 1039be: 1e push %ds 1039bf: 60 pusha 1039c0: 66 b8 10 00 mov $0x10,%ax 1039c4: 8e d8 mov %eax,%ds 1039c6: 8e c0 mov %eax,%es 1039c8: 8e e0 mov %eax,%fs 1039ca: 8e e8 mov %eax,%gs 1039cc: 89 e0 mov %esp,%eax 1039ce: 50 push %eax 001039cf <isr231.1>: 1039cf: b8 04 3e 10 00 mov $0x103e04,%eax 1039d4: ff d0 call *%eax 1039d6: e9 0d dd ff ff jmp 1016e8 <all_ints> 001039db <isr232>: 1039db: 6a 00 push $0x0 1039dd: 6a e8 push $0xffffffe8 1039df: 0f a8 push %gs 1039e1: 0f a0 push %fs 1039e3: 06 push %es 1039e4: 1e push %ds 1039e5: 60 pusha 1039e6: 66 b8 10 00 mov $0x10,%ax 1039ea: 8e d8 mov %eax,%ds 1039ec: 8e c0 mov %eax,%es 1039ee: 8e e0 mov %eax,%fs 1039f0: 8e e8 mov %eax,%gs 1039f2: 89 e0 mov %esp,%eax 1039f4: 50 push %eax 001039f5 <isr232.1>: 1039f5: b8 04 3e 10 00 mov $0x103e04,%eax 1039fa: ff d0 call *%eax 1039fc: e9 e7 dc ff ff jmp 1016e8 <all_ints> 00103a01 <isr233>: 103a01: 6a 00 push $0x0 103a03: 6a e9 push $0xffffffe9 103a05: 0f a8 push %gs 103a07: 0f a0 push %fs 103a09: 06 push %es 103a0a: 1e push %ds 103a0b: 60 pusha 103a0c: 66 b8 10 00 mov $0x10,%ax 103a10: 8e d8 mov %eax,%ds 103a12: 8e c0 mov %eax,%es 103a14: 8e e0 mov %eax,%fs 103a16: 8e e8 mov %eax,%gs 103a18: 89 e0 mov %esp,%eax 103a1a: 50 push %eax 00103a1b <isr233.1>: 103a1b: b8 04 3e 10 00 mov $0x103e04,%eax 103a20: ff d0 call *%eax 103a22: e9 c1 dc ff ff jmp 1016e8 <all_ints> 00103a27 <isr234>: 103a27: 6a 00 push $0x0 103a29: 6a ea push $0xffffffea 103a2b: 0f a8 push %gs 103a2d: 0f a0 push %fs 103a2f: 06 push %es 103a30: 1e push %ds 103a31: 60 pusha 103a32: 66 b8 10 00 mov $0x10,%ax 103a36: 8e d8 mov %eax,%ds 103a38: 8e c0 mov %eax,%es 103a3a: 8e e0 mov %eax,%fs 103a3c: 8e e8 mov %eax,%gs 103a3e: 89 e0 mov %esp,%eax 103a40: 50 push %eax 00103a41 <isr234.1>: 103a41: b8 04 3e 10 00 mov $0x103e04,%eax 103a46: ff d0 call *%eax 103a48: e9 9b dc ff ff jmp 1016e8 <all_ints> 00103a4d <isr235>: 103a4d: 6a 00 push $0x0 103a4f: 6a eb push $0xffffffeb 103a51: 0f a8 push %gs 103a53: 0f a0 push %fs 103a55: 06 push %es 103a56: 1e push %ds 103a57: 60 pusha 103a58: 66 b8 10 00 mov $0x10,%ax 103a5c: 8e d8 mov %eax,%ds 103a5e: 8e c0 mov %eax,%es 103a60: 8e e0 mov %eax,%fs 103a62: 8e e8 mov %eax,%gs 103a64: 89 e0 mov %esp,%eax 103a66: 50 push %eax 00103a67 <isr235.1>: 103a67: b8 04 3e 10 00 mov $0x103e04,%eax 103a6c: ff d0 call *%eax 103a6e: e9 75 dc ff ff jmp 1016e8 <all_ints> 00103a73 <isr236>: 103a73: 6a 00 push $0x0 103a75: 6a ec push $0xffffffec 103a77: 0f a8 push %gs 103a79: 0f a0 push %fs 103a7b: 06 push %es 103a7c: 1e push %ds 103a7d: 60 pusha 103a7e: 66 b8 10 00 mov $0x10,%ax 103a82: 8e d8 mov %eax,%ds 103a84: 8e c0 mov %eax,%es 103a86: 8e e0 mov %eax,%fs 103a88: 8e e8 mov %eax,%gs 103a8a: 89 e0 mov %esp,%eax 103a8c: 50 push %eax 00103a8d <isr236.1>: 103a8d: b8 04 3e 10 00 mov $0x103e04,%eax 103a92: ff d0 call *%eax 103a94: e9 4f dc ff ff jmp 1016e8 <all_ints> 00103a99 <isr237>: 103a99: 6a 00 push $0x0 103a9b: 6a ed push $0xffffffed 103a9d: 0f a8 push %gs 103a9f: 0f a0 push %fs 103aa1: 06 push %es 103aa2: 1e push %ds 103aa3: 60 pusha 103aa4: 66 b8 10 00 mov $0x10,%ax 103aa8: 8e d8 mov %eax,%ds 103aaa: 8e c0 mov %eax,%es 103aac: 8e e0 mov %eax,%fs 103aae: 8e e8 mov %eax,%gs 103ab0: 89 e0 mov %esp,%eax 103ab2: 50 push %eax 00103ab3 <isr237.1>: 103ab3: b8 04 3e 10 00 mov $0x103e04,%eax 103ab8: ff d0 call *%eax 103aba: e9 29 dc ff ff jmp 1016e8 <all_ints> 00103abf <isr238>: 103abf: 6a 00 push $0x0 103ac1: 6a ee push $0xffffffee 103ac3: 0f a8 push %gs 103ac5: 0f a0 push %fs 103ac7: 06 push %es 103ac8: 1e push %ds 103ac9: 60 pusha 103aca: 66 b8 10 00 mov $0x10,%ax 103ace: 8e d8 mov %eax,%ds 103ad0: 8e c0 mov %eax,%es 103ad2: 8e e0 mov %eax,%fs 103ad4: 8e e8 mov %eax,%gs 103ad6: 89 e0 mov %esp,%eax 103ad8: 50 push %eax 00103ad9 <isr238.1>: 103ad9: b8 04 3e 10 00 mov $0x103e04,%eax 103ade: ff d0 call *%eax 103ae0: e9 03 dc ff ff jmp 1016e8 <all_ints> 00103ae5 <isr239>: 103ae5: 6a 00 push $0x0 103ae7: 6a ef push $0xffffffef 103ae9: 0f a8 push %gs 103aeb: 0f a0 push %fs 103aed: 06 push %es 103aee: 1e push %ds 103aef: 60 pusha 103af0: 66 b8 10 00 mov $0x10,%ax 103af4: 8e d8 mov %eax,%ds 103af6: 8e c0 mov %eax,%es 103af8: 8e e0 mov %eax,%fs 103afa: 8e e8 mov %eax,%gs 103afc: 89 e0 mov %esp,%eax 103afe: 50 push %eax 00103aff <isr239.1>: 103aff: b8 04 3e 10 00 mov $0x103e04,%eax 103b04: ff d0 call *%eax 103b06: e9 dd db ff ff jmp 1016e8 <all_ints> 00103b0b <isr240>: 103b0b: 6a 00 push $0x0 103b0d: 6a f0 push $0xfffffff0 103b0f: 0f a8 push %gs 103b11: 0f a0 push %fs 103b13: 06 push %es 103b14: 1e push %ds 103b15: 60 pusha 103b16: 66 b8 10 00 mov $0x10,%ax 103b1a: 8e d8 mov %eax,%ds 103b1c: 8e c0 mov %eax,%es 103b1e: 8e e0 mov %eax,%fs 103b20: 8e e8 mov %eax,%gs 103b22: 89 e0 mov %esp,%eax 103b24: 50 push %eax 00103b25 <isr240.1>: 103b25: b8 04 3e 10 00 mov $0x103e04,%eax 103b2a: ff d0 call *%eax 103b2c: e9 b7 db ff ff jmp 1016e8 <all_ints> 00103b31 <isr241>: 103b31: 6a 00 push $0x0 103b33: 6a f1 push $0xfffffff1 103b35: 0f a8 push %gs 103b37: 0f a0 push %fs 103b39: 06 push %es 103b3a: 1e push %ds 103b3b: 60 pusha 103b3c: 66 b8 10 00 mov $0x10,%ax 103b40: 8e d8 mov %eax,%ds 103b42: 8e c0 mov %eax,%es 103b44: 8e e0 mov %eax,%fs 103b46: 8e e8 mov %eax,%gs 103b48: 89 e0 mov %esp,%eax 103b4a: 50 push %eax 00103b4b <isr241.1>: 103b4b: b8 04 3e 10 00 mov $0x103e04,%eax 103b50: ff d0 call *%eax 103b52: e9 91 db ff ff jmp 1016e8 <all_ints> 00103b57 <isr242>: 103b57: 6a 00 push $0x0 103b59: 6a f2 push $0xfffffff2 103b5b: 0f a8 push %gs 103b5d: 0f a0 push %fs 103b5f: 06 push %es 103b60: 1e push %ds 103b61: 60 pusha 103b62: 66 b8 10 00 mov $0x10,%ax 103b66: 8e d8 mov %eax,%ds 103b68: 8e c0 mov %eax,%es 103b6a: 8e e0 mov %eax,%fs 103b6c: 8e e8 mov %eax,%gs 103b6e: 89 e0 mov %esp,%eax 103b70: 50 push %eax 00103b71 <isr242.1>: 103b71: b8 04 3e 10 00 mov $0x103e04,%eax 103b76: ff d0 call *%eax 103b78: e9 6b db ff ff jmp 1016e8 <all_ints> 00103b7d <isr243>: 103b7d: 6a 00 push $0x0 103b7f: 6a f3 push $0xfffffff3 103b81: 0f a8 push %gs 103b83: 0f a0 push %fs 103b85: 06 push %es 103b86: 1e push %ds 103b87: 60 pusha 103b88: 66 b8 10 00 mov $0x10,%ax 103b8c: 8e d8 mov %eax,%ds 103b8e: 8e c0 mov %eax,%es 103b90: 8e e0 mov %eax,%fs 103b92: 8e e8 mov %eax,%gs 103b94: 89 e0 mov %esp,%eax 103b96: 50 push %eax 00103b97 <isr243.1>: 103b97: b8 04 3e 10 00 mov $0x103e04,%eax 103b9c: ff d0 call *%eax 103b9e: e9 45 db ff ff jmp 1016e8 <all_ints> 00103ba3 <isr244>: 103ba3: 6a 00 push $0x0 103ba5: 6a f4 push $0xfffffff4 103ba7: 0f a8 push %gs 103ba9: 0f a0 push %fs 103bab: 06 push %es 103bac: 1e push %ds 103bad: 60 pusha 103bae: 66 b8 10 00 mov $0x10,%ax 103bb2: 8e d8 mov %eax,%ds 103bb4: 8e c0 mov %eax,%es 103bb6: 8e e0 mov %eax,%fs 103bb8: 8e e8 mov %eax,%gs 103bba: 89 e0 mov %esp,%eax 103bbc: 50 push %eax 00103bbd <isr244.1>: 103bbd: b8 04 3e 10 00 mov $0x103e04,%eax 103bc2: ff d0 call *%eax 103bc4: e9 1f db ff ff jmp 1016e8 <all_ints> 00103bc9 <isr245>: 103bc9: 6a 00 push $0x0 103bcb: 6a f5 push $0xfffffff5 103bcd: 0f a8 push %gs 103bcf: 0f a0 push %fs 103bd1: 06 push %es 103bd2: 1e push %ds 103bd3: 60 pusha 103bd4: 66 b8 10 00 mov $0x10,%ax 103bd8: 8e d8 mov %eax,%ds 103bda: 8e c0 mov %eax,%es 103bdc: 8e e0 mov %eax,%fs 103bde: 8e e8 mov %eax,%gs 103be0: 89 e0 mov %esp,%eax 103be2: 50 push %eax 00103be3 <isr245.1>: 103be3: b8 04 3e 10 00 mov $0x103e04,%eax 103be8: ff d0 call *%eax 103bea: e9 f9 da ff ff jmp 1016e8 <all_ints> 00103bef <isr246>: 103bef: 6a 00 push $0x0 103bf1: 6a f6 push $0xfffffff6 103bf3: 0f a8 push %gs 103bf5: 0f a0 push %fs 103bf7: 06 push %es 103bf8: 1e push %ds 103bf9: 60 pusha 103bfa: 66 b8 10 00 mov $0x10,%ax 103bfe: 8e d8 mov %eax,%ds 103c00: 8e c0 mov %eax,%es 103c02: 8e e0 mov %eax,%fs 103c04: 8e e8 mov %eax,%gs 103c06: 89 e0 mov %esp,%eax 103c08: 50 push %eax 00103c09 <isr246.1>: 103c09: b8 04 3e 10 00 mov $0x103e04,%eax 103c0e: ff d0 call *%eax 103c10: e9 d3 da ff ff jmp 1016e8 <all_ints> 00103c15 <isr247>: 103c15: 6a 00 push $0x0 103c17: 6a f7 push $0xfffffff7 103c19: 0f a8 push %gs 103c1b: 0f a0 push %fs 103c1d: 06 push %es 103c1e: 1e push %ds 103c1f: 60 pusha 103c20: 66 b8 10 00 mov $0x10,%ax 103c24: 8e d8 mov %eax,%ds 103c26: 8e c0 mov %eax,%es 103c28: 8e e0 mov %eax,%fs 103c2a: 8e e8 mov %eax,%gs 103c2c: 89 e0 mov %esp,%eax 103c2e: 50 push %eax 00103c2f <isr247.1>: 103c2f: b8 04 3e 10 00 mov $0x103e04,%eax 103c34: ff d0 call *%eax 103c36: e9 ad da ff ff jmp 1016e8 <all_ints> 00103c3b <isr248>: 103c3b: 6a 00 push $0x0 103c3d: 6a f8 push $0xfffffff8 103c3f: 0f a8 push %gs 103c41: 0f a0 push %fs 103c43: 06 push %es 103c44: 1e push %ds 103c45: 60 pusha 103c46: 66 b8 10 00 mov $0x10,%ax 103c4a: 8e d8 mov %eax,%ds 103c4c: 8e c0 mov %eax,%es 103c4e: 8e e0 mov %eax,%fs 103c50: 8e e8 mov %eax,%gs 103c52: 89 e0 mov %esp,%eax 103c54: 50 push %eax 00103c55 <isr248.1>: 103c55: b8 04 3e 10 00 mov $0x103e04,%eax 103c5a: ff d0 call *%eax 103c5c: e9 87 da ff ff jmp 1016e8 <all_ints> 00103c61 <isr249>: 103c61: 6a 00 push $0x0 103c63: 6a f9 push $0xfffffff9 103c65: 0f a8 push %gs 103c67: 0f a0 push %fs 103c69: 06 push %es 103c6a: 1e push %ds 103c6b: 60 pusha 103c6c: 66 b8 10 00 mov $0x10,%ax 103c70: 8e d8 mov %eax,%ds 103c72: 8e c0 mov %eax,%es 103c74: 8e e0 mov %eax,%fs 103c76: 8e e8 mov %eax,%gs 103c78: 89 e0 mov %esp,%eax 103c7a: 50 push %eax 00103c7b <isr249.1>: 103c7b: b8 04 3e 10 00 mov $0x103e04,%eax 103c80: ff d0 call *%eax 103c82: e9 61 da ff ff jmp 1016e8 <all_ints> 00103c87 <isr250>: 103c87: 6a 00 push $0x0 103c89: 6a fa push $0xfffffffa 103c8b: 0f a8 push %gs 103c8d: 0f a0 push %fs 103c8f: 06 push %es 103c90: 1e push %ds 103c91: 60 pusha 103c92: 66 b8 10 00 mov $0x10,%ax 103c96: 8e d8 mov %eax,%ds 103c98: 8e c0 mov %eax,%es 103c9a: 8e e0 mov %eax,%fs 103c9c: 8e e8 mov %eax,%gs 103c9e: 89 e0 mov %esp,%eax 103ca0: 50 push %eax 00103ca1 <isr250.1>: 103ca1: b8 04 3e 10 00 mov $0x103e04,%eax 103ca6: ff d0 call *%eax 103ca8: e9 3b da ff ff jmp 1016e8 <all_ints> 00103cad <isr251>: 103cad: 6a 00 push $0x0 103caf: 6a fb push $0xfffffffb 103cb1: 0f a8 push %gs 103cb3: 0f a0 push %fs 103cb5: 06 push %es 103cb6: 1e push %ds 103cb7: 60 pusha 103cb8: 66 b8 10 00 mov $0x10,%ax 103cbc: 8e d8 mov %eax,%ds 103cbe: 8e c0 mov %eax,%es 103cc0: 8e e0 mov %eax,%fs 103cc2: 8e e8 mov %eax,%gs 103cc4: 89 e0 mov %esp,%eax 103cc6: 50 push %eax 00103cc7 <isr251.1>: 103cc7: b8 04 3e 10 00 mov $0x103e04,%eax 103ccc: ff d0 call *%eax 103cce: e9 15 da ff ff jmp 1016e8 <all_ints> 00103cd3 <isr252>: 103cd3: 6a 00 push $0x0 103cd5: 6a fc push $0xfffffffc 103cd7: 0f a8 push %gs 103cd9: 0f a0 push %fs 103cdb: 06 push %es 103cdc: 1e push %ds 103cdd: 60 pusha 103cde: 66 b8 10 00 mov $0x10,%ax 103ce2: 8e d8 mov %eax,%ds 103ce4: 8e c0 mov %eax,%es 103ce6: 8e e0 mov %eax,%fs 103ce8: 8e e8 mov %eax,%gs 103cea: 89 e0 mov %esp,%eax 103cec: 50 push %eax 00103ced <isr252.1>: 103ced: b8 04 3e 10 00 mov $0x103e04,%eax 103cf2: ff d0 call *%eax 103cf4: e9 ef d9 ff ff jmp 1016e8 <all_ints> 00103cf9 <isr253>: 103cf9: 6a 00 push $0x0 103cfb: 6a fd push $0xfffffffd 103cfd: 0f a8 push %gs 103cff: 0f a0 push %fs 103d01: 06 push %es 103d02: 1e push %ds 103d03: 60 pusha 103d04: 66 b8 10 00 mov $0x10,%ax 103d08: 8e d8 mov %eax,%ds 103d0a: 8e c0 mov %eax,%es 103d0c: 8e e0 mov %eax,%fs 103d0e: 8e e8 mov %eax,%gs 103d10: 89 e0 mov %esp,%eax 103d12: 50 push %eax 00103d13 <isr253.1>: 103d13: b8 04 3e 10 00 mov $0x103e04,%eax 103d18: ff d0 call *%eax 103d1a: e9 c9 d9 ff ff jmp 1016e8 <all_ints> 00103d1f <isr254>: 103d1f: 6a 00 push $0x0 103d21: 6a fe push $0xfffffffe 103d23: 0f a8 push %gs 103d25: 0f a0 push %fs 103d27: 06 push %es 103d28: 1e push %ds 103d29: 60 pusha 103d2a: 66 b8 10 00 mov $0x10,%ax 103d2e: 8e d8 mov %eax,%ds 103d30: 8e c0 mov %eax,%es 103d32: 8e e0 mov %eax,%fs 103d34: 8e e8 mov %eax,%gs 103d36: 89 e0 mov %esp,%eax 103d38: 50 push %eax 00103d39 <isr254.1>: 103d39: b8 04 3e 10 00 mov $0x103e04,%eax 103d3e: ff d0 call *%eax 103d40: e9 a3 d9 ff ff jmp 1016e8 <all_ints> 00103d45 <isr255>: 103d45: 6a 00 push $0x0 103d47: 6a ff push $0xffffffff 103d49: 0f a8 push %gs 103d4b: 0f a0 push %fs 103d4d: 06 push %es 103d4e: 1e push %ds 103d4f: 60 pusha 103d50: 66 b8 10 00 mov $0x10,%ax 103d54: 8e d8 mov %eax,%ds 103d56: 8e c0 mov %eax,%es 103d58: 8e e0 mov %eax,%fs 103d5a: 8e e8 mov %eax,%gs 103d5c: 89 e0 mov %esp,%eax 103d5e: 50 push %eax 00103d5f <isr255.1>: 103d5f: b8 04 3e 10 00 mov $0x103e04,%eax 103d64: ff d0 call *%eax 103d66: e9 7d d9 ff ff jmp 1016e8 <all_ints> ... 00103d6c <kprintf_help>: /** * printf/kprintf helper */ static int kprintf_help(unsigned c, void **ptr) { 103d6c: 55 push %ebp 103d6d: 89 e5 mov %esp,%ebp 103d6f: 83 ec 14 sub $0x14,%esp /** * Leave this for now */ ptr = ptr; putch(c); 103d72: ff 75 08 pushl 0x8(%ebp) 103d75: e8 86 0d 00 00 call 104b00 <putch> return 0; } 103d7a: 31 c0 xor %eax,%eax 103d7c: c9 leave 103d7d: c3 ret 103d7e: 89 f6 mov %esi,%esi 00103d80 <kprintf>: /** * Format output and print it to stdout (vtty0) * Just like on any other operating system */ /*void printf(const char *fmt, ...) { va_list args; va_start(args, fmt); (void)do_printf(fmt, args, kprintf_help, NULL); va_end(args); }*/ void kprintf(const char *fmt, ...) { 103d80: 55 push %ebp 103d81: 89 e5 mov %esp,%ebp 103d83: 83 ec 08 sub $0x8,%esp va_list args; va_start(args, fmt); (void)do_printf(fmt, args, kprintf_help, NULL); 103d86: 6a 00 push $0x0 103d88: 68 6c 3d 10 00 push $0x103d6c 103d8d: 8d 45 0c lea 0xc(%ebp),%eax 103d90: 50 push %eax 103d91: ff 75 08 pushl 0x8(%ebp) 103d94: e8 37 0f 00 00 call 104cd0 <do_printf> va_end(args); } 103d99: c9 leave 103d9a: c3 ret 103d9b: 90 nop 00103d9c <printk>: /** * Format output and print it to stdout (vtty0) * Just like on any other operating system */ void printk(const char *fmt, ...) { 103d9c: 55 push %ebp 103d9d: 89 e5 mov %esp,%ebp 103d9f: 83 ec 08 sub $0x8,%esp va_list args; /** * TODO * * Select vtty0 */ va_start(args, fmt); (void)do_printf(fmt, args, kprintf_help, NULL); 103da2: 6a 00 push $0x0 103da4: 68 6c 3d 10 00 push $0x103d6c 103da9: 8d 45 0c lea 0xc(%ebp),%eax 103dac: 50 push %eax 103dad: ff 75 08 pushl 0x8(%ebp) 103db0: e8 1b 0f 00 00 call 104cd0 <do_printf> va_end(args); } 103db5: c9 leave 103db6: c3 ret 103db7: 90 nop 00103db8 <panic>: /** * Oh yeah, the fun function ;) */ void panic(const char *fmt, ...) { 103db8: 55 push %ebp 103db9: 89 e5 mov %esp,%ebp 103dbb: 53 push %ebx 103dbc: 50 push %eax va_list args; disable(); /* interrupts off */ 103dbd: e8 06 0f 00 00 call 104cc8 <disable> va_start(args, fmt); _vc[0].attrib = 15; printf("\n\npanic: "); 103dc2: 83 ec 0c sub $0xc,%esp 103dc5: 68 cd 58 10 00 push $0x1058cd 103dca: c7 05 f8 a2 19 00 0f movl $0xf,0x19a2f8 103dd1: 00 00 00 103dd4: e8 fb 12 00 00 call 1050d4 <printf> (void)do_printf(fmt, args, kprintf_help, NULL); 103dd9: 6a 00 push $0x0 103ddb: 68 6c 3d 10 00 push $0x103d6c 103de0: 8d 5d 0c lea 0xc(%ebp),%ebx 103de3: 53 push %ebx 103de4: ff 75 08 pushl 0x8(%ebp) 103de7: e8 e4 0e 00 00 call 104cd0 <do_printf> printf("\n\nSystem halted."); 103dec: 83 c4 14 add $0x14,%esp 103def: 68 d7 58 10 00 push $0x1058d7 103df4: e8 db 12 00 00 call 1050d4 <printf> __asm__ __volatile__ ("hlt"); 103df9: f4 hlt while(1) 103dfa: 83 c4 10 add $0x10,%esp 103dfd: 8d 76 00 lea 0x0(%esi),%esi 103e00: eb fe jmp 103e00 <panic+0x48> 103e02: 89 f6 mov %esi,%esi 00103e04 <fault>: /* freeze */; } /** * Called when a kernel fault is detected. This does not * (normally) get called when something goes awry in * user-space, therefore it is designed for kernel-space */ void fault(regs_t *regs) { 103e04: 55 push %ebp 103e05: 89 e5 mov %esp,%ebp 103e07: 53 push %ebx 103e08: 52 push %edx 103e09: 8b 5d 08 mov 0x8(%ebp),%ebx struct exception { char *message; int signal; int processor; }; static const struct exception ex[] = { {"Divide error", SIGFPE, 86}, {"Debug exception", SIGTRAP, 86}, {"Nonmaskable interrupt (NMI)", SIGBUS, 86}, {"Breakpoint (INT3)", SIGEMT, 86}, {"Overflow (INTO)", SIGFPE, 186}, {"Bounds check", SIGFPE, 186}, {"Invalid opcode", SIGILL, 186}, {"Coprocessor not available", SIGFPE, 186}, {"Double fault", SIGBUS, 286}, {"Coprocessor segment overrun", SIGSEGV, 286}, {"Invalid TSS", SIGSEGV, 286}, {"Segment not present", SIGSEGV, 286}, {"Stack exception", SIGSEGV, 286}, {"General Protection Fault", SIGSEGV, 286}, {"Page fault", SIGSEGV, 386}, {NULL, SIGILL, 0}, {"Coprocessor error", SIGFPE, 386}, {"Alignment check",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"??",0,0}, {"IRQ0",0,0}, {"IRQ1",0,0}, {"IRQ2",0,0}, {"IRQ3",0,0}, {"IRQ4",0,0}, {"IRQ5",0,0}, {"IRQ6",0,0}, {"IRQ7",0,0}, {"IRQ8",0,0}, {"IRQ9",0,0}, {"IRQ10",0,0}, {"IRQ11",0,0}, {"IRQ12",0,0}, {"IRQ13",0,0}, {"IRQ14",0,0}, {"IRQ15",0,0}, {"syscall",0,0} }; switch(regs->which_int) 103e0c: 83 7b 30 20 cmpl $0x20,0x30(%ebx) 103e10: 74 6e je 103e80 <fault+0x7c> { /** * this handler installed at compile-time * Keyboard handler is installed at run-time (see below) */ case 0x20: /* timer IRQ 0 */ //blink(); /** * reset hardware interrupt at 8259 chip */ outportb(0x20, 0x20); break; default: _vc[0].attrib = 15; printf("\n\npanic: Exception 0x%08X", regs->which_int); 103e12: 83 ec 08 sub $0x8,%esp 103e15: c7 05 f8 a2 19 00 0f movl $0xf,0x19a2f8 103e1c: 00 00 00 103e1f: ff 73 30 pushl 0x30(%ebx) 103e22: 68 79 5a 10 00 push $0x105a79 103e27: e8 a8 12 00 00 call 1050d4 <printf> if(regs->which_int <= sizeof(ex) / sizeof(ex[0].message)) 103e2c: 8b 43 30 mov 0x30(%ebx),%eax 103e2f: 83 c4 10 add $0x10,%esp 103e32: 3d 93 00 00 00 cmp $0x93,%eax 103e37: 76 2b jbe 103e64 <fault+0x60> printf(" (%s)", ex[regs->which_int].message); printf("\n"); 103e39: 83 ec 0c sub $0xc,%esp 103e3c: 68 f8 5a 10 00 push $0x105af8 103e41: e8 8e 12 00 00 call 1050d4 <printf> dump_regs(regs); 103e46: 89 1c 24 mov %ebx,(%esp,1) 103e49: e8 7e c3 ff ff call 1001cc <dump_regs> printf("\n\nSystem halted."); 103e4e: c7 04 24 d7 58 10 00 movl $0x1058d7,(%esp,1) 103e55: e8 7a 12 00 00 call 1050d4 <printf> __asm__ __volatile__ ("hlt"); 103e5a: f4 hlt break; 103e5b: 83 c4 10 add $0x10,%esp } } 103e5e: 8b 5d fc mov 0xfffffffc(%ebp),%ebx 103e61: c9 leave 103e62: c3 ret 103e63: 90 nop 103e64: 83 ec 08 sub $0x8,%esp 103e67: 8d 04 40 lea (%eax,%eax,2),%eax 103e6a: ff 34 85 00 5b 10 00 pushl 0x105b00(,%eax,4) 103e71: 68 93 5a 10 00 push $0x105a93 103e76: e8 59 12 00 00 call 1050d4 <printf> 103e7b: 83 c4 10 add $0x10,%esp 103e7e: eb b9 jmp 103e39 <fault+0x35> 103e80: 83 ec 08 sub $0x8,%esp 103e83: 6a 20 push $0x20 103e85: 6a 20 push $0x20 103e87: e8 28 12 00 00 call 1050b4 <outportb> 103e8c: eb cd jmp 103e5b <fault+0x57> 103e8e: 89 f6 mov %esi,%esi 00103e90 <init_8259s>: /** * ?? */ static void init_8259s(void) { 103e90: 55 push %ebp 103e91: 89 e5 mov %esp,%ebp 103e93: 83 ec 10 sub $0x10,%esp static const unsigned irq0_int = 0x20, irq8_int = 0x28; /** * Initialization Control Word #1 (ICW1) */ outportb(0x20, 0x11); 103e96: 6a 11 push $0x11 103e98: 6a 20 push $0x20 103e9a: e8 15 12 00 00 call 1050b4 <outportb> outportb(0xA0, 0x11); 103e9f: 59 pop %ecx 103ea0: 58 pop %eax 103ea1: 6a 11 push $0x11 103ea3: 68 a0 00 00 00 push $0xa0 103ea8: e8 07 12 00 00 call 1050b4 <outportb> /** * ICW2: * route IRQs 0-7 to INTs 20h-27h */ outportb(0x21, irq0_int); 103ead: 58 pop %eax 103eae: 5a pop %edx 103eaf: 6a 20 push $0x20 103eb1: 6a 21 push $0x21 103eb3: e8 fc 11 00 00 call 1050b4 <outportb> /** * route IRQs 8-15 to INTs 28h-2Fh */ outportb(0xA1, irq8_int); 103eb8: 59 pop %ecx 103eb9: 58 pop %eax 103eba: 6a 28 push $0x28 103ebc: 68 a1 00 00 00 push $0xa1 103ec1: e8 ee 11 00 00 call 1050b4 <outportb> /** * ICW3 */ outportb(0x21, 0x04); 103ec6: 58 pop %eax 103ec7: 5a pop %edx 103ec8: 6a 04 push $0x4 103eca: 6a 21 push $0x21 103ecc: e8 e3 11 00 00 call 1050b4 <outportb> outportb(0xA1, 0x02); 103ed1: 59 pop %ecx 103ed2: 58 pop %eax 103ed3: 6a 02 push $0x2 103ed5: 68 a1 00 00 00 push $0xa1 103eda: e8 d5 11 00 00 call 1050b4 <outportb> /** * ICW4 */ outportb(0x21, 0x01); 103edf: 58 pop %eax 103ee0: 5a pop %edx 103ee1: 6a 01 push $0x1 103ee3: 6a 21 push $0x21 103ee5: e8 ca 11 00 00 call 1050b4 <outportb> outportb(0xA1, 0x01); 103eea: 59 pop %ecx 103eeb: 58 pop %eax 103eec: 6a 01 push $0x1 103eee: 68 a1 00 00 00 push $0xa1 103ef3: e8 bc 11 00 00 call 1050b4 <outportb> /** * enable IRQ0 (timer) and IRQ1 (keyboard) */ outportb(0x21, ~0x03); 103ef8: 58 pop %eax 103ef9: 5a pop %edx 103efa: 6a fc push $0xfffffffc 103efc: 6a 21 push $0x21 103efe: e8 b1 11 00 00 call 1050b4 <outportb> outportb(0xA1, ~0x00); 103f03: 59 pop %ecx 103f04: 58 pop %eax 103f05: 6a ff push $0xffffffff 103f07: 68 a1 00 00 00 push $0xa1 103f0c: e8 a3 11 00 00 call 1050b4 <outportb> } 103f11: c9 leave 103f12: c3 ret 103f13: 90 nop 00103f14 <dump_heap>: /** * MinGW32 */ #ifdef __WIN32__ #if __GNUC__<3 #error Do not use MinGW GCC 2.x with NASM #endif int __main(void) { return 0; } void _alloca(void) { } #endif /** * malloc, realloc, free, etc */ static char *g_heap_bot, *g_kbrk, *g_heap_top; static void dump_heap(void) { 103f14: 55 push %ebp 103f15: 89 e5 mov %esp,%ebp 103f17: 57 push %edi 103f18: 56 push %esi 103f19: 53 push %ebx 103f1a: 83 ec 18 sub $0x18,%esp unsigned blks_used = 0, blks_free = 0; size_t bytes_used = 0, bytes_free = 0; malloc_t *m; int total; kprintf("===============================================\n"); 103f1d: 68 60 5d 10 00 push $0x105d60 103f22: c7 45 f0 00 00 00 00 movl $0x0,0xfffffff0(%ebp) 103f29: c7 45 ec 00 00 00 00 movl $0x0,0xffffffec(%ebp) 103f30: e8 4b fe ff ff call 103d80 <kprintf> for(m = (malloc_t *)g_heap_bot; m != NULL; m = m->next) 103f35: 8b 1d e0 36 18 00 mov 0x1836e0,%ebx 103f3b: 31 ff xor %edi,%edi 103f3d: 31 f6 xor %esi,%esi 103f3f: 83 c4 10 add $0x10,%esp 103f42: 85 db test %ebx,%ebx 103f44: 74 39 je 103f7f <dump_heap+0x6b> 103f46: 89 f6 mov %esi,%esi { printk("block %5p: %6u bytes %s\n", m, 103f48: f6 43 09 80 testb $0x80,0x9(%ebx) 103f4c: 0f 84 be 00 00 00 je 104010 <dump_heap+0xfc> 103f52: b8 99 5a 10 00 mov $0x105a99,%eax 103f57: 50 push %eax 103f58: ff 33 pushl (%ebx) 103f5a: 53 push %ebx 103f5b: 68 9e 5a 10 00 push $0x105a9e 103f60: e8 37 fe ff ff call 103d9c <printk> m->size, m->used ? "used" : "free"); if(m->used) 103f65: 83 c4 10 add $0x10,%esp 103f68: f6 43 09 80 testb $0x80,0x9(%ebx) 103f6c: 0f 84 92 00 00 00 je 104004 <dump_heap+0xf0> { blks_used++; bytes_used += m->size; 103f72: 8b 03 mov (%ebx),%eax 103f74: 47 inc %edi 103f75: 01 45 f0 add %eax,0xfffffff0(%ebp) 103f78: 8b 5b 04 mov 0x4(%ebx),%ebx 103f7b: 85 db test %ebx,%ebx 103f7d: 75 c9 jne 103f48 <dump_heap+0x34> } else { blks_free++; bytes_free += m->size; } } kprintf("blocks: %6u used, %6u free, %6u total\n", blks_used, 103f7f: 8d 1c 3e lea (%esi,%edi,1),%ebx 103f82: 53 push %ebx 103f83: 56 push %esi 103f84: 57 push %edi 103f85: 68 a0 5d 10 00 push $0x105da0 103f8a: e8 f1 fd ff ff call 103d80 <kprintf> blks_free, blks_used + blks_free); kprintf(" bytes: %6u used, %6u free, %6u total\n", bytes_used, 103f8f: 8b 75 f0 mov 0xfffffff0(%ebp),%esi 103f92: 03 75 ec add 0xffffffec(%ebp),%esi 103f95: 56 push %esi 103f96: ff 75 ec pushl 0xffffffec(%ebp) 103f99: ff 75 f0 pushl 0xfffffff0(%ebp) 103f9c: 68 e0 5d 10 00 push $0x105de0 103fa1: e8 da fd ff ff call 103d80 <kprintf> bytes_free, bytes_used + bytes_free); kprintf("g_heap_bot=0x%p, g_kbrk=0x%p, g_heap_top=0x%p\n", 103fa6: 83 c4 20 add $0x20,%esp 103fa9: ff 35 e8 36 18 00 pushl 0x1836e8 103faf: ff 35 e4 36 18 00 pushl 0x1836e4 103fb5: ff 35 e0 36 18 00 pushl 0x1836e0 103fbb: 68 20 5e 10 00 push $0x105e20 103fc0: e8 bb fd ff ff call 103d80 <kprintf> g_heap_bot, g_kbrk, g_heap_top); total = (bytes_used + bytes_free) + 103fc5: 8d 1c 5b lea (%ebx,%ebx,2),%ebx (blks_used + blks_free) * sizeof(malloc_t); if(total != g_kbrk - g_heap_bot) 103fc8: a1 e4 36 18 00 mov 0x1836e4,%eax 103fcd: 8d 1c 9e lea (%esi,%ebx,4),%ebx 103fd0: 2b 05 e0 36 18 00 sub 0x1836e0,%eax 103fd6: 83 c4 10 add $0x10,%esp 103fd9: 39 c3 cmp %eax,%ebx 103fdb: 74 10 je 103fed <dump_heap+0xd9> kprintf("*** some heap memory is not accounted for\n"); 103fdd: 83 ec 0c sub $0xc,%esp 103fe0: 68 60 5e 10 00 push $0x105e60 103fe5: e8 96 fd ff ff call 103d80 <kprintf> 103fea: 83 c4 10 add $0x10,%esp kprintf("===============================================\n"); 103fed: 83 ec 0c sub $0xc,%esp 103ff0: 68 60 5d 10 00 push $0x105d60 103ff5: e8 86 fd ff ff call 103d80 <kprintf> } 103ffa: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 103ffd: 5b pop %ebx 103ffe: 5e pop %esi 103fff: 5f pop %edi 104000: c9 leave 104001: c3 ret 104002: 89 f6 mov %esi,%esi 104004: 8b 03 mov (%ebx),%eax 104006: 46 inc %esi 104007: 01 45 ec add %eax,0xffffffec(%ebp) 10400a: e9 69 ff ff ff jmp 103f78 <dump_heap+0x64> 10400f: 90 nop 104010: b8 b7 5a 10 00 mov $0x105ab7,%eax 104015: e9 3d ff ff ff jmp 103f57 <dump_heap+0x43> 10401a: 89 f6 mov %esi,%esi 0010401c <dumpheapk>: void dumpheapk(void) { 10401c: 55 push %ebp 10401d: 89 e5 mov %esp,%ebp dump_heap(); 10401f: c9 leave 104020: e9 ef fe ff ff jmp 103f14 <dump_heap> 104025: 8d 76 00 lea 0x0(%esi),%esi 00104028 <kbrk>: } /** * POSIX sbrk() looks like this * void *sbrk(int incr); * * Mine is a bit different so I can signal the calling function * if more memory than desired was allocated (e.g. in a system with paging) * If your kbrk()/sbrk() always allocates the amount of memory you ask for, * this code can be easily changed. * * int brk( void *sbrk( void *kbrk( * function void *adr); int delta); int *delta); * ---------------------- ------------ ------------ ------------- * POSIX? yes yes NO * return value if error -1 -1 NULL * get break value . sbrk(0) int x=0; kbrk(&x); * set break value to X brk(X) sbrk(X - sbrk(0)) int x=X, y=0; kbrk(&x) - kbrk(&y); * enlarge heap by N bytes . sbrk(+N) int x=N; kbrk(&x); * shrink heap by N bytes . sbrk(-N) int x=-N; kbrk(&x); * can you tell if you're * given more memory * than you wanted? no no yes */ static void *kbrk(int *delta) { static char heap[HEAP_SIZE]; char *new_brk, *old_brk; /** * heap doesn't exist yet */ if(g_heap_bot == NULL) 104028: 8b 0d e0 36 18 00 mov 0x1836e0,%ecx 10402e: 55 push %ebp 10402f: 85 c9 test %ecx,%ecx 104031: 89 e5 mov %esp,%ebp 104033: 53 push %ebx 104034: 75 1f jne 104055 <kbrk+0x2d> { g_heap_bot = g_kbrk = heap; 104036: b9 c0 95 10 00 mov $0x1095c0,%ecx 10403b: c7 05 e4 36 18 00 c0 movl $0x1095c0,0x1836e4 104042: 95 10 00 104045: 89 0d e0 36 18 00 mov %ecx,0x1836e0 g_heap_top = g_heap_bot + HEAP_SIZE; 10404b: c7 05 e8 36 18 00 e0 movl $0x1836e0,0x1836e8 104052: 36 18 00 } new_brk = g_kbrk + (*delta); 104055: 8b 1d e4 36 18 00 mov 0x1836e4,%ebx 10405b: 8b 45 08 mov 0x8(%ebp),%eax 10405e: 89 da mov %ebx,%edx 104060: 03 10 add (%eax),%edx /** * too low: return NULL */ if(new_brk < g_heap_bot) 104062: 31 c0 xor %eax,%eax 104064: 39 ca cmp %ecx,%edx 104066: 72 10 jb 104078 <kbrk+0x50> return NULL; /** * too high: return NULL */ if(new_brk >= g_heap_top) 104068: 3b 15 e8 36 18 00 cmp 0x1836e8,%edx 10406e: 73 08 jae 104078 <kbrk+0x50> return NULL; /** * success: adjust brk value... */ old_brk = g_kbrk; g_kbrk = new_brk; 104070: 89 15 e4 36 18 00 mov %edx,0x1836e4 /** * ...return actual delta... (for this sbrk(), they are the same) * (*delta) = (*delta); * ...return old brk value */ return old_brk; 104076: 89 d8 mov %ebx,%eax } 104078: 8b 1c 24 mov (%esp,1),%ebx 10407b: c9 leave 10407c: c3 ret 10407d: 8d 76 00 lea 0x0(%esi),%esi 00104080 <kmalloc>: /** * malloc() and free() use g_heap_bot, but not g_kbrk nor g_heap_top */ void *kmalloc(size_t size) { 104080: 55 push %ebp 104081: 89 e5 mov %esp,%ebp 104083: 57 push %edi 104084: 56 push %esi 104085: 53 push %ebx 104086: 83 ec 0c sub $0xc,%esp 104089: 8b 7d 08 mov 0x8(%ebp),%edi unsigned total_size; malloc_t *m, *n; int delta; if(size == 0) 10408c: 31 c0 xor %eax,%eax 10408e: 85 ff test %edi,%edi 104090: 0f 84 af 00 00 00 je 104145 <kmalloc+0xc5> return NULL; total_size = size + sizeof(malloc_t); /** * search heap for free block (FIRST FIT) */ m = (malloc_t *)g_heap_bot; 104096: 8b 1d e0 36 18 00 mov 0x1836e0,%ebx /** * g_heap_bot == 0 == NULL if heap does not yet exist */ if(m != NULL) 10409c: 85 db test %ebx,%ebx 10409e: 8d 77 0c lea 0xc(%edi),%esi 1040a1: 74 35 je 1040d8 <kmalloc+0x58> { if(m->magic != MALLOC_MAGIC) 1040a3: 0f b7 43 08 movzwl 0x8(%ebx),%eax 1040a7: 25 ff 7f 00 00 and $0x7fff,%eax 1040ac: 3d 92 6d 00 00 cmp $0x6d92,%eax 1040b1: 0f 85 e5 00 00 00 jne 10419c <kmalloc+0x11c> { /*printf("*** kernel heap is corrupt in kmalloc()\n");*/ panic("kernel heap is corrupt in malloc()"); return NULL; } for(; m->next != NULL; m = m->next) 1040b7: 8b 43 04 mov 0x4(%ebx),%eax 1040ba: 85 c0 test %eax,%eax 1040bc: 74 1a je 1040d8 <kmalloc+0x58> 1040be: 89 f6 mov %esi,%esi { if(m->used) 1040c0: 8a 53 09 mov 0x9(%ebx),%dl 1040c3: f6 c2 80 test $0x80,%dl 1040c6: 0f 84 8c 00 00 00 je 104158 <kmalloc+0xd8> 1040cc: 89 c3 mov %eax,%ebx 1040ce: 8b 40 04 mov 0x4(%eax),%eax 1040d1: 85 c0 test %eax,%eax 1040d3: 75 eb jne 1040c0 <kmalloc+0x40> 1040d5: 8d 76 00 lea 0x0(%esi),%esi continue; /** * size == m->size is a perfect fit */ if(size == m->size) m->used = 1; else { /** * otherwise, we need an extra sizeof(malloc_t) bytes for the header * of a second, free block */ if(total_size > m->size) continue; /** * create a new, smaller free block after this one */ n = (malloc_t *)((char *)m + total_size); n->size = m->size - total_size; n->next = m->next; n->magic = MALLOC_MAGIC; n->used = 0; /** * reduce the size of this block and mark it used */ m->size = size; m->next = n; m->used = 1; } return (char *)m + sizeof(malloc_t); } } /** * use kbrk() to enlarge (or create!) heap */ delta = total_size; n = kbrk(&delta); 1040d8: 83 ec 0c sub $0xc,%esp 1040db: 8d 45 f0 lea 0xfffffff0(%ebp),%eax 1040de: 50 push %eax 1040df: 89 75 f0 mov %esi,0xfffffff0(%ebp) 1040e2: e8 41 ff ff ff call 104028 <kbrk> 1040e7: 89 c2 mov %eax,%edx /** * uh-oh */ if(n == NULL) 1040e9: 83 c4 10 add $0x10,%esp 1040ec: 31 c0 xor %eax,%eax 1040ee: 85 d2 test %edx,%edx 1040f0: 74 53 je 104145 <kmalloc+0xc5> return NULL; if(m != NULL) 1040f2: 85 db test %ebx,%ebx 1040f4: 74 03 je 1040f9 <kmalloc+0x79> m->next = n; 1040f6: 89 53 04 mov %edx,0x4(%ebx) n->size = size; n->magic = MALLOC_MAGIC; 1040f9: 66 8b 42 08 mov 0x8(%edx),%ax 1040fd: 25 00 80 ff ff and $0xffff8000,%eax 104102: 0d 92 6d 00 00 or $0x6d92,%eax 104107: 66 89 42 08 mov %ax,0x8(%edx) n->used = 1; 10410b: 80 4a 09 80 orb $0x80,0x9(%edx) /** * did kbrk() return the exact amount of memory we wanted? * cast to make "gcc -Wall -W ..." shut the hell up */ if((int)total_size == delta) 10410f: 8b 45 f0 mov 0xfffffff0(%ebp),%eax 104112: 39 c6 cmp %eax,%esi 104114: 89 3a mov %edi,(%edx) 104116: 74 35 je 10414d <kmalloc+0xcd> n->next = NULL; else { /** * it returned more than we wanted (it will never return less): * create a new, free block */ m = (malloc_t *)((char *)n + total_size); m->size = delta - total_size - sizeof(malloc_t); 104118: 29 f0 sub %esi,%eax 10411a: 8d 1c 16 lea (%esi,%edx,1),%ebx 10411d: 83 e8 0c sub $0xc,%eax 104120: 89 03 mov %eax,(%ebx) m->next = NULL; m->magic = MALLOC_MAGIC; 104122: 66 8b 43 08 mov 0x8(%ebx),%ax 104126: 25 00 80 ff ff and $0xffff8000,%eax 10412b: 0d 92 6d 00 00 or $0x6d92,%eax 104130: 66 89 43 08 mov %ax,0x8(%ebx) 104134: c7 43 04 00 00 00 00 movl $0x0,0x4(%ebx) m->used = 0; 10413b: 80 63 09 7f andb $0x7f,0x9(%ebx) n->next = m; 10413f: 89 5a 04 mov %ebx,0x4(%edx) } return (char *)n + sizeof(malloc_t); 104142: 8d 42 0c lea 0xc(%edx),%eax } 104145: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 104148: 5b pop %ebx 104149: 5e pop %esi 10414a: 5f pop %edi 10414b: c9 leave 10414c: c3 ret 10414d: c7 42 04 00 00 00 00 movl $0x0,0x4(%edx) 104154: eb ec jmp 104142 <kmalloc+0xc2> 104156: 89 f6 mov %esi,%esi 104158: 8b 0b mov (%ebx),%ecx 10415a: 39 cf cmp %ecx,%edi 10415c: 74 36 je 104194 <kmalloc+0x114> 10415e: 39 ce cmp %ecx,%esi 104160: 0f 87 66 ff ff ff ja 1040cc <kmalloc+0x4c> 104166: 8d 14 1e lea (%esi,%ebx,1),%edx 104169: 89 42 04 mov %eax,0x4(%edx) 10416c: 66 8b 42 08 mov 0x8(%edx),%ax 104170: 25 00 80 ff ff and $0xffff8000,%eax 104175: 0d 92 6d 00 00 or $0x6d92,%eax 10417a: 66 89 42 08 mov %ax,0x8(%edx) 10417e: 29 f1 sub %esi,%ecx 104180: 80 62 09 7f andb $0x7f,0x9(%edx) 104184: 89 0a mov %ecx,(%edx) 104186: 89 53 04 mov %edx,0x4(%ebx) 104189: 89 3b mov %edi,(%ebx) 10418b: 80 4b 09 80 orb $0x80,0x9(%ebx) 10418f: 8d 43 0c lea 0xc(%ebx),%eax 104192: eb b1 jmp 104145 <kmalloc+0xc5> 104194: 83 ca 80 or $0xffffff80,%edx 104197: 88 53 09 mov %dl,0x9(%ebx) 10419a: eb f3 jmp 10418f <kmalloc+0x10f> 10419c: 83 ec 0c sub $0xc,%esp 10419f: 68 a0 5e 10 00 push $0x105ea0 1041a4: e8 0f fc ff ff call 103db8 <panic> 1041a9: 31 c0 xor %eax,%eax 1041ab: eb 98 jmp 104145 <kmalloc+0xc5> 1041ad: 8d 76 00 lea 0x0(%esi),%esi 001041b0 <kfree>: void kfree(void *blk) { 1041b0: 55 push %ebp 1041b1: 89 e5 mov %esp,%ebp 1041b3: 56 push %esi 1041b4: 53 push %ebx 1041b5: 8b 5d 08 mov 0x8(%ebp),%ebx malloc_t *m, *n; /** * get address of header */ m = (malloc_t *)((char *)blk - sizeof(malloc_t)); 1041b8: 8d 4b f4 lea 0xfffffff4(%ebx),%ecx if(m->magic != MALLOC_MAGIC) 1041bb: 0f b7 41 08 movzwl 0x8(%ecx),%eax 1041bf: 25 ff 7f 00 00 and $0x7fff,%eax 1041c4: 3d 92 6d 00 00 cmp $0x6d92,%eax 1041c9: 74 15 je 1041e0 <kfree+0x30> { /*printf("*** attempt to kfree() block at 0x%p with bad magic value\n", blk);*/ panic("attempt to free() block at 0x%p with bad magic value", blk); 1041cb: 83 ec 08 sub $0x8,%esp 1041ce: 53 push %ebx 1041cf: 68 e0 5e 10 00 push $0x105ee0 1041d4: e8 df fb ff ff call 103db8 <panic> return; } /** * find this block in the heap */ n = (malloc_t *)g_heap_bot; if(n->magic != MALLOC_MAGIC) { /*printf("*** kernel heap is corrupt in kfree()\n");*/ panic("kernel heap is corrupt in free()"); return; } for(; n != NULL; n = n->next) { if(n == m) break; } /** * not found? bad pointer or no heap or something else? */ if(n == NULL) { /*printf("*** attempt to kfree() block at 0x%p that is not in the heap\n", blk);*/ panic("attempt to free() block at 0x%p that is not in the heap", blk); return; } /** * free the block */ m->used = 0; /** * coalesce adjacent free blocks * Hard to spell, hard to do */ for(m = (malloc_t *)g_heap_bot; m != NULL; m = m->next) { while(!m->used && m->next != NULL && !m->next->used) { /** * resize this block */ m->size += sizeof(malloc_t) + m->next->size; /** * merge with next block */ m->next = m->next->next; } } } 1041d9: 8d 65 f8 lea 0xfffffff8(%ebp),%esp 1041dc: 5b pop %ebx 1041dd: 5e pop %esi 1041de: c9 leave 1041df: c3 ret 1041e0: 8b 15 e0 36 18 00 mov 0x1836e0,%edx 1041e6: 0f b7 42 08 movzwl 0x8(%edx),%eax 1041ea: 25 ff 7f 00 00 and $0x7fff,%eax 1041ef: 3d 92 6d 00 00 cmp $0x6d92,%eax 1041f4: 74 12 je 104208 <kfree+0x58> 1041f6: c7 45 08 20 5f 10 00 movl $0x105f20,0x8(%ebp) 1041fd: 8d 65 f8 lea 0xfffffff8(%ebp),%esp 104200: 5b pop %ebx 104201: 5e pop %esi 104202: c9 leave 104203: e9 b0 fb ff ff jmp 103db8 <panic> 104208: 85 d2 test %edx,%edx 10420a: 74 0b je 104217 <kfree+0x67> 10420c: 39 ca cmp %ecx,%edx 10420e: 74 12 je 104222 <kfree+0x72> 104210: 8b 52 04 mov 0x4(%edx),%edx 104213: 85 d2 test %edx,%edx 104215: 75 f5 jne 10420c <kfree+0x5c> 104217: 83 ec 08 sub $0x8,%esp 10421a: 53 push %ebx 10421b: 68 60 5f 10 00 push $0x105f60 104220: eb b2 jmp 1041d4 <kfree+0x24> 104222: 85 d2 test %edx,%edx 104224: 74 f1 je 104217 <kfree+0x67> 104226: 80 61 09 7f andb $0x7f,0x9(%ecx) 10422a: 8b 0d e0 36 18 00 mov 0x1836e0,%ecx 104230: 85 c9 test %ecx,%ecx 104232: 74 a5 je 1041d9 <kfree+0x29> 104234: f6 41 09 80 testb $0x80,0x9(%ecx) 104238: 75 46 jne 104280 <kfree+0xd0> 10423a: 8b 51 04 mov 0x4(%ecx),%edx 10423d: 85 d2 test %edx,%edx 10423f: 89 d3 mov %edx,%ebx 104241: 74 31 je 104274 <kfree+0xc4> 104243: f6 42 09 80 testb $0x80,0x9(%edx) 104247: 75 2b jne 104274 <kfree+0xc4> 104249: 31 f6 xor %esi,%esi 10424b: 90 nop 10424c: 8b 03 mov (%ebx),%eax 10424e: 03 01 add (%ecx),%eax 104250: 83 c0 0c add $0xc,%eax 104253: 89 01 mov %eax,(%ecx) 104255: 85 f6 test %esi,%esi 104257: 8b 43 04 mov 0x4(%ebx),%eax 10425a: 89 41 04 mov %eax,0x4(%ecx) 10425d: 89 c2 mov %eax,%edx 10425f: 75 13 jne 104274 <kfree+0xc4> 104261: 31 d2 xor %edx,%edx 104263: 85 c0 test %eax,%eax 104265: 74 0d je 104274 <kfree+0xc4> 104267: f6 40 09 80 testb $0x80,0x9(%eax) 10426b: 89 c3 mov %eax,%ebx 10426d: 74 dd je 10424c <kfree+0x9c> 10426f: 89 c2 mov %eax,%edx 104271: 8d 76 00 lea 0x0(%esi),%esi 104274: 85 d2 test %edx,%edx 104276: 89 d1 mov %edx,%ecx 104278: 75 ba jne 104234 <kfree+0x84> 10427a: e9 5a ff ff ff jmp 1041d9 <kfree+0x29> 10427f: 90 nop 104280: 8b 51 04 mov 0x4(%ecx),%edx 104283: eb ef jmp 104274 <kfree+0xc4> 104285: 8d 76 00 lea 0x0(%esi),%esi 00104288 <testheap>: void testheap(void) { 104288: 55 push %ebp 104289: 89 e5 mov %esp,%ebp 10428b: 83 ec 14 sub $0x14,%esp //int i; //char *t; //kprintf("before char *t = kmalloc((size_t *)25):\n"); //dump_heap(); //t = kmalloc(25); //strcpy(t, "123456789012345678901234"); //kprintf("after char *t = kmalloc((size_t *)25):\n"); //dump_heap(); //kfree(t); //kprintf("after kfree(t):\n"); //dump_heap(); //kprintf("before char *t = kmalloc((size_t *)25):\n"); kprintf("Unable to run testheap -- kmalloc() is broken.\n"); 10428e: 68 a0 5f 10 00 push $0x105fa0 104293: e8 e8 fa ff ff call 103d80 <kprintf> } 104298: c9 leave 104299: c3 ret 10429a: 89 f6 mov %esi,%esi 0010429c <krealloc>: void *krealloc(void *blk, size_t size) { 10429c: 55 push %ebp 10429d: 89 e5 mov %esp,%ebp 10429f: 57 push %edi 1042a0: 56 push %esi 1042a1: 53 push %ebx 1042a2: 83 ec 0c sub $0xc,%esp 1042a5: 8b 5d 0c mov 0xc(%ebp),%ebx void *new_blk; malloc_t *m; /** * size == 0: free block */ if(size == 0) 1042a8: 85 db test %ebx,%ebx 1042aa: 8b 75 08 mov 0x8(%ebp),%esi 1042ad: 75 1d jne 1042cc <krealloc+0x30> { if(blk != NULL) 1042af: 85 f6 test %esi,%esi 1042b1: 74 0c je 1042bf <krealloc+0x23> kfree(blk); 1042b3: 83 ec 0c sub $0xc,%esp 1042b6: 56 push %esi 1042b7: e8 f4 fe ff ff call 1041b0 <kfree> 1042bc: 83 c4 10 add $0x10,%esp new_blk = NULL; 1042bf: 31 ff xor %edi,%edi } else { /** * allocate new block */ new_blk = kmalloc(size); /** * if allocation OK, and if old block exists, copy old block to new */ if(new_blk != NULL && blk != NULL) { m = (malloc_t *)((char *)blk - sizeof(malloc_t)); if(m->magic != MALLOC_MAGIC) { /*printf("*** attempt to krealloc() block at 0x%p with bad magic value\n", blk);*/ panic("attempt to realloc() block at 0x%p with bad magic value", blk); return NULL; } /** * copy minimum of old and new block sizes */ if(size > m->size) size = m->size; memcpy(new_blk, blk, size); /** * free the old block */ kfree(blk); } } return new_blk; 1042c1: 89 f8 mov %edi,%eax } 1042c3: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 1042c6: 5b pop %ebx 1042c7: 5e pop %esi 1042c8: 5f pop %edi 1042c9: c9 leave 1042ca: c3 ret 1042cb: 90 nop 1042cc: 83 ec 0c sub $0xc,%esp 1042cf: 53 push %ebx 1042d0: e8 ab fd ff ff call 104080 <kmalloc> 1042d5: 83 c4 10 add $0x10,%esp 1042d8: 85 c0 test %eax,%eax 1042da: 89 c7 mov %eax,%edi 1042dc: 74 e3 je 1042c1 <krealloc+0x25> 1042de: 85 f6 test %esi,%esi 1042e0: 74 df je 1042c1 <krealloc+0x25> 1042e2: 0f b7 46 fc movzwl 0xfffffffc(%esi),%eax 1042e6: 25 ff 7f 00 00 and $0x7fff,%eax 1042eb: 3d 92 6d 00 00 cmp $0x6d92,%eax 1042f0: 75 1f jne 104311 <krealloc+0x75> 1042f2: 8b 46 f4 mov 0xfffffff4(%esi),%eax 1042f5: 39 c3 cmp %eax,%ebx 1042f7: 76 02 jbe 1042fb <krealloc+0x5f> 1042f9: 89 c3 mov %eax,%ebx 1042fb: 50 push %eax 1042fc: 53 push %ebx 1042fd: 56 push %esi 1042fe: 57 push %edi 1042ff: e8 58 0d 00 00 call 10505c <memcpy> 104304: 89 34 24 mov %esi,(%esp,1) 104307: e8 a4 fe ff ff call 1041b0 <kfree> 10430c: 83 c4 10 add $0x10,%esp 10430f: eb b0 jmp 1042c1 <krealloc+0x25> 104311: 83 ec 08 sub $0x8,%esp 104314: 56 push %esi 104315: 68 e0 5f 10 00 push $0x105fe0 10431a: e8 99 fa ff ff call 103db8 <panic> 10431f: 31 c0 xor %eax,%eax 104321: eb a0 jmp 1042c3 <krealloc+0x27> 104323: 90 nop 00104324 <main>: void keyboardISR(void); int main(void) { 104324: 55 push %ebp 104325: 89 e5 mov %esp,%ebp 104327: 83 ec 08 sub $0x8,%esp 10432a: 83 e4 f0 and $0xfffffff0,%esp /** * keyboard interrupt init */ vector_t v; unsigned i; init_video(); 10432d: e8 e6 07 00 00 call 104b18 <init_video> init_keyboard(); 104332: e8 45 d2 ff ff call 10157c <init_keyboard> init_8259s(); 104337: e8 54 fb ff ff call 103e90 <init_8259s> /** * XXX: * i know this is a very ugly way of doing this, * however it is the only way it can be done for now. * in the future, i will implement a kprintf function * whose sole purpose will be writing boot messages. * * Also, the color codes need to be mapped to constants * in order to make using them a hell of a lot easier. */ klog("init", "Installing keyboard interrupt handler", K_KLOG_PENDING, &_vc[0]); 10433c: 68 e0 a2 19 00 push $0x19a2e0 104341: 6a 01 push $0x1 104343: 68 20 60 10 00 push $0x106020 104348: 68 bc 5a 10 00 push $0x105abc 10434d: e8 ae bc ff ff call 100000 <LS_Phys> /* we don't save the old vector */ v.eip = (unsigned)keyboard_irq; v.access_byte = 0x8E; /* present, ring 0, '386 interrupt gate */ setvect(&v, 0x21); 104352: 58 pop %eax 104353: 5a pop %edx 104354: 8d 45 f8 lea 0xfffffff8(%ebp),%eax 104357: 6a 21 push $0x21 104359: 50 push %eax 10435a: c7 45 fc 1c 13 10 00 movl $0x10131c,0xfffffffc(%ebp) 104361: c7 45 f8 8e 00 00 00 movl $0x8e,0xfffffff8(%ebp) 104368: e8 c4 d3 ff ff call 101731 <_setvect> klog(NULL, NULL, K_KLOG_SUCCESS, &_vc[0]); 10436d: 68 e0 a2 19 00 push $0x19a2e0 104372: 6a 00 push $0x0 104374: 6a 00 push $0x0 104376: 6a 00 push $0x0 104378: e8 83 bc ff ff call 100000 <LS_Phys> /*init_tasks();*/ klog("init", "Enabling hardware interrupts", K_KLOG_PENDING, &_vc[0]); 10437d: 83 c4 20 add $0x20,%esp 104380: 68 e0 a2 19 00 push $0x19a2e0 104385: 6a 01 push $0x1 104387: 68 c1 5a 10 00 push $0x105ac1 10438c: 68 bc 5a 10 00 push $0x105abc 104391: e8 6a bc ff ff call 100000 <LS_Phys> enable(); 104396: e8 71 0c 00 00 call 10500c <enable> /*for(i = 0; i < 0xFFFFFFF; i++);*/ klog(NULL, NULL, K_KLOG_SUCCESS, &_vc[0]); 10439b: 68 e0 a2 19 00 push $0x19a2e0 1043a0: 6a 00 push $0x0 1043a2: 6a 00 push $0x0 1043a4: 6a 00 push $0x0 1043a6: e8 55 bc ff ff call 100000 <LS_Phys> /** * Initialize memory management */ /*_mm_init();*/ /** * finished init, time for some gooey ;) */ printf(" _ _ _ _ ____ _____ ___ "); 1043ab: 83 c4 14 add $0x14,%esp 1043ae: 68 60 60 10 00 push $0x106060 1043b3: e8 1c 0d 00 00 call 1050d4 <printf> printf(" ( )_( )( \\/ )( _ \\( _ )/ __) "); 1043b8: c7 04 24 c0 60 10 00 movl $0x1060c0,(%esp,1) 1043bf: e8 10 0d 00 00 call 1050d4 <printf> printf(" ) _ ( \\ / ) _ < )(_)( \\__ \\ "); 1043c4: c7 04 24 20 61 10 00 movl $0x106120,(%esp,1) 1043cb: e8 04 0d 00 00 call 1050d4 <printf> printf(" (_) (_) (__) (____/(_____)(___/ \n"); 1043d0: c7 04 24 80 61 10 00 movl $0x106180,(%esp,1) 1043d7: e8 f8 0c 00 00 call 1050d4 <printf> printf(" Hybrid Operating System (HybOS) \n"); 1043dc: c7 04 24 e0 61 10 00 movl $0x1061e0,(%esp,1) 1043e3: e8 ec 0c 00 00 call 1050d4 <printf> /** * XXX: debug only */ printf("ALT + F1 - F8 for virtual terminals\n"); 1043e8: c7 04 24 40 62 10 00 movl $0x106240,(%esp,1) 1043ef: e8 e0 0c 00 00 call 1050d4 <printf> printf("Three finger salute to restart\n"); 1043f4: c7 04 24 80 62 10 00 movl $0x106280,(%esp,1) 1043fb: e8 d4 0c 00 00 call 1050d4 <printf> printf("More work needs to be done\n"); 104400: c7 04 24 de 5a 10 00 movl $0x105ade,(%esp,1) 104407: e8 c8 0c 00 00 call 1050d4 <printf> printf("$ "); 10440c: c7 04 24 d6 54 10 00 movl $0x1054d6,(%esp,1) 104413: e8 bc 0c 00 00 call 1050d4 <printf> /** * fork (kfork()) control over to a shell */ /*init_shell();*/ /** * idle task/thread */ while(1) 104418: 83 c4 10 add $0x10,%esp 10441b: 90 nop { schedule(); 10441c: e8 47 01 00 00 call 104568 <schedule> 104421: eb f9 jmp 10441c <main+0xf8> ... 00104424 <_mm_init>: void _mm_page_copy_dword(uint32_t dest, uint32_t src); void _mm_virtual_init(void); void _mm_init(void) { 104424: 55 push %ebp 104425: 89 e5 mov %esp,%ebp 104427: 83 ec 08 sub $0x8,%esp klog("init", "Initializing memory management", K_KLOG_PENDING, &_vc[0]); 10442a: 68 e0 a2 19 00 push $0x19a2e0 10442f: 6a 01 push $0x1 104431: 68 a0 62 10 00 push $0x1062a0 104436: 68 bc 5a 10 00 push $0x105abc 10443b: e8 c0 bb ff ff call 100000 <LS_Phys> _mm_physical_init(); 104440: e8 17 00 00 00 call 10445c <_mm_physical_init> _mm_virtual_init(); 104445: e8 ce 00 00 00 call 104518 <_mm_virtual_init> klog((void *)0, (void *)0, K_KLOG_SUCCESS, &_vc[0]); 10444a: 68 e0 a2 19 00 push $0x19a2e0 10444f: 6a 00 push $0x0 104451: 6a 00 push $0x0 104453: 6a 00 push $0x0 104455: e8 a6 bb ff ff call 100000 <LS_Phys> } 10445a: c9 leave 10445b: c3 ret 0010445c <_mm_physical_init>: void _mm_physical_init(void) { 10445c: 55 push %ebp 10445d: 89 e5 mov %esp,%ebp unsigned i; unsigned size = 16 * 1024 * 1024; size /= PAGESIZE; size++; size /= 32; buffer = (unsigned *)0x40000; 10445f: ba 00 00 04 00 mov $0x40000,%edx 104464: c7 05 84 72 19 00 00 movl $0x40000,0x197284 10446b: 00 04 00 bufferIterator = (unsigned *)0x40000; 10446e: c7 05 80 72 19 00 00 movl $0x40000,0x197280 104475: 00 04 00 for(i = 0; i < 72; i++) 104478: 31 c0 xor %eax,%eax 10447a: 89 f6 mov %esi,%esi buffer[i] = 0xFFFFFFFF; 10447c: c7 04 82 ff ff ff ff movl $0xffffffff,(%edx,%eax,4) 104483: 40 inc %eax 104484: 83 f8 47 cmp $0x47,%eax 104487: 76 f3 jbe 10447c <_mm_physical_init+0x20> 104489: b8 48 00 00 00 mov $0x48,%eax 10448e: 89 f6 mov %esi,%esi for(i = 72; i < size; i++) buffer[i] = 0x00000000; 104490: c7 04 82 00 00 00 00 movl $0x0,(%edx,%eax,4) 104497: 40 inc %eax 104498: 3d 80 00 00 00 cmp $0x80,%eax 10449d: 72 f1 jb 104490 <_mm_physical_init+0x34> } 10449f: c9 leave 1044a0: c3 ret 1044a1: 8d 76 00 lea 0x0(%esi),%esi 001044a4 <_mm_physical_alloc>: unsigned _mm_physical_alloc(void) { 1044a4: 55 push %ebp 1044a5: 89 e5 mov %esp,%ebp 1044a7: 56 push %esi 1044a8: 53 push %ebx unsigned mask = 0x00000001; unsigned bit = 0; /** * Search for a free space */ while(*bufferIterator == 0xFFFFFFFF) 1044a9: 8b 15 80 72 19 00 mov 0x197280,%edx 1044af: 31 f6 xor %esi,%esi 1044b1: 83 3a ff cmpl $0xffffffff,(%edx) 1044b4: b9 01 00 00 00 mov $0x1,%ecx 1044b9: 74 1f je 1044da <_mm_physical_alloc+0x36> bufferIterator++; /** * Search for a bit that indicates a free page */ while(*bufferIterator & mask) 1044bb: 8b 02 mov (%edx),%eax 1044bd: a8 01 test $0x1,%al 1044bf: 74 0a je 1044cb <_mm_physical_alloc+0x27> 1044c1: 8d 76 00 lea 0x0(%esi),%esi { mask <<= 1; 1044c4: d1 e1 shl %ecx bit++; 1044c6: 46 inc %esi 1044c7: 85 c1 test %eax,%ecx 1044c9: 75 f9 jne 1044c4 <_mm_physical_alloc+0x20> } *bufferIterator |= mask; 1044cb: 09 0a or %ecx,(%edx) return 32 * (bufferIterator - buffer) + bit; } 1044cd: 5b pop %ebx 1044ce: 2b 15 84 72 19 00 sub 0x197284,%edx 1044d4: 8d 04 d6 lea (%esi,%edx,8),%eax 1044d7: 5e pop %esi 1044d8: c9 leave 1044d9: c3 ret 1044da: 8d 42 04 lea 0x4(%edx),%eax 1044dd: 8d 76 00 lea 0x0(%esi),%esi 1044e0: 89 c2 mov %eax,%edx 1044e2: 8d 40 04 lea 0x4(%eax),%eax 1044e5: 83 78 fc ff cmpl $0xffffffff,0xfffffffc(%eax) 1044e9: 74 f5 je 1044e0 <_mm_physical_alloc+0x3c> 1044eb: 89 15 80 72 19 00 mov %edx,0x197280 1044f1: eb c8 jmp 1044bb <_mm_physical_alloc+0x17> 1044f3: 90 nop 001044f4 <_mm_physical_free>: void _mm_physical_free(unsigned page) { 1044f4: 55 push %ebp 1044f5: 89 e5 mov %esp,%ebp 1044f7: 8b 4d 08 mov 0x8(%ebp),%ecx 1044fa: 53 push %ebx buffer[page >> 5] &= ~(1 << (page & 0x1F)); /* confused yet?!? */ 1044fb: b8 fe ff ff ff mov $0xfffffffe,%eax 104500: 89 cb mov %ecx,%ebx 104502: 83 e1 1f and $0x1f,%ecx 104505: c1 eb 05 shr $0x5,%ebx 104508: 8b 15 84 72 19 00 mov 0x197284,%edx 10450e: d3 c0 rol %cl,%eax 104510: 21 04 9a and %eax,(%edx,%ebx,4) } 104513: 8b 1c 24 mov (%esp,1),%ebx 104516: c9 leave 104517: c3 ret 00104518 <_mm_virtual_init>: void _mm_virtual_init(void) { 104518: 55 push %ebp 104519: 89 e5 mov %esp,%ebp 10451b: c9 leave 10451c: c3 ret 10451d: 8d 76 00 lea 0x0(%esi),%esi 00104520 <_mm_page_copy_byte>: } void _mm_page_copy_byte(uint32_t dest, uint32_t src) { 104520: 55 push %ebp 104521: 89 e5 mov %esp,%ebp 104523: 57 push %edi 104524: 56 push %esi 104525: 8b 7d 08 mov 0x8(%ebp),%edi 104528: 8b 75 0c mov 0xc(%ebp),%esi __asm__ __volatile__ 10452b: b9 00 00 10 00 mov $0x100000,%ecx 104530: fc cld 104531: f3 a4 repz movsb %ds:(%esi),%es:(%edi) ( "cld;" "rep; movsb;" : : "c" (1024*1024), "D" (dest), "S" (src) : "memory" ); } 104533: 5e pop %esi 104534: 5f pop %edi 104535: c9 leave 104536: c3 ret 104537: 90 nop 00104538 <_mm_page_copy_word>: void _mm_page_copy_word(uint32_t dest, uint32_t src) { 104538: 55 push %ebp 104539: 89 e5 mov %esp,%ebp 10453b: 57 push %edi 10453c: 56 push %esi 10453d: 8b 7d 08 mov 0x8(%ebp),%edi 104540: 8b 75 0c mov 0xc(%ebp),%esi __asm__ __volatile__ 104543: b9 00 00 08 00 mov $0x80000,%ecx 104548: fc cld 104549: f3 66 a5 repz movsw %ds:(%esi),%es:(%edi) ( "cld;" "rep; movsw;" : : "c" (512*1024), "D" (dest), "S" (src) : "memory" ); } 10454c: 5e pop %esi 10454d: 5f pop %edi 10454e: c9 leave 10454f: c3 ret 00104550 <_mm_page_copy_dword>: void _mm_page_copy_dword(uint32_t dest, uint32_t src) { 104550: 55 push %ebp 104551: 89 e5 mov %esp,%ebp 104553: 57 push %edi 104554: 56 push %esi 104555: 8b 7d 08 mov 0x8(%ebp),%edi 104558: 8b 75 0c mov 0xc(%ebp),%esi __asm__ __volatile__ 10455b: b9 00 00 04 00 mov $0x40000,%ecx 104560: fc cld 104561: f3 a5 repz movsl %ds:(%esi),%es:(%edi) ( "cld;" "rep; movsl;" : : "c" (256*1024), "D" (dest), "S" (src) : "memory" ); } 104563: 5e pop %esi 104564: 5f pop %edi 104565: c9 leave 104566: c3 ret ... 00104568 <schedule>: * schedule() * */ void schedule(void) { 104568: 55 push %ebp 104569: 89 e5 mov %esp,%ebp 10456b: 83 ec 08 sub $0x8,%esp static unsigned current; /** * If setjmp() returns non-zero it means that we came here through * hyperspace from our call to longjmp() below, so just return */ /** UBU if(setjmp(_curr_task->state) != 0) return; **/ /** * Try to find the next runnable task */ do 10456e: 8b 15 00 37 18 00 mov 0x183700,%edx { current++; 104574: 42 inc %edx if(current >= MAX_TASK) 104575: 83 fa 0f cmp $0xf,%edx 104578: 89 d0 mov %edx,%eax 10457a: 76 04 jbe 104580 <schedule+0x18> current = 0; 10457c: 31 c0 xor %eax,%eax 10457e: 31 d2 xor %edx,%edx _curr_task = _tasks + current; 104580: 8d 04 40 lea (%eax,%eax,2),%eax 104583: c1 e0 04 shl $0x4,%eax 104586: 05 20 37 18 00 add $0x183720,%eax } while(_curr_task->status != TS_RUNNABLE); 10458b: 83 78 2c 01 cmpl $0x1,0x2c(%eax) 10458f: 75 e3 jne 104574 <schedule+0xc> /** * Jump to the new task */ longjmp(_curr_task->state, 1); 104591: 83 ec 08 sub $0x8,%esp 104594: a3 a0 a2 19 00 mov %eax,0x19a2a0 104599: 6a 01 push $0x1 10459b: 83 c0 04 add $0x4,%eax 10459e: 50 push %eax 10459f: 89 15 00 37 18 00 mov %edx,0x183700 1045a5: e8 76 0a 00 00 call 105020 <longjmp> 1045aa: 89 f6 mov %esi,%esi 001045ac <init_tasks>: } /***************************************************************************** *****************************************************************************/ #define NUM_TASKS 0 /** * init_tasks() * */ void init_tasks(void) { 1045ac: 55 push %ebp 1045ad: 89 e5 mov %esp,%ebp 1045af: 83 ec 08 sub $0x8,%esp static unsigned char stacks[NUM_TASKS][USER_STACK_SIZE]; /*static unsigned entry[NUM_TASKS] = { 0, (unsigned)task1, (unsigned)task2, (unsigned)task3, (unsigned)task4 };*/ static unsigned entry[NUM_TASKS]; unsigned adr, i; klog("init", "task handler", K_KLOG_PENDING, &_vc[0]); 1045b2: 68 e0 a2 19 00 push $0x19a2e0 1045b7: 6a 01 push $0x1 1045b9: 68 c4 62 10 00 push $0x1062c4 1045be: 68 bc 5a 10 00 push $0x105abc 1045c3: e8 38 ba ff ff call 100000 <LS_Phys> /** * For user taskes, initialize the saved state */ for(i = 1; i < NUM_TASKS; i++) 1045c8: 83 c4 10 add $0x10,%esp { (void)setjmp(_tasks[i].state); /** * especially the stack pointer */ adr = (unsigned)(stacks[i] + USER_STACK_SIZE); _tasks[i].state[0].JMPBUF_SP = adr; /** * and program counter */ _tasks[i].state[0].JMPBUF_IP = entry[i]; /** * enable interrupts (by setting EFLAGS value) */ _tasks[i].state[0].JMPBUF_FLAGS = 0x200; /** * allocate a virtual console to this task */ _tasks[i].vc = _vc + i; /** * and mark it as runnable */ _tasks[i].status = TS_RUNNABLE; } /** * mark task 0 runnable (idle task) */ _tasks[0].status = TS_RUNNABLE; 1045cb: c7 05 4c 37 18 00 01 movl $0x1,0x18374c 1045d2: 00 00 00 /** * set _curr_task so schedule() will save state * of task 0 */ _curr_task = _tasks + 0; klog(NULL, NULL, K_KLOG_SUCCESS, &_vc[0]); 1045d5: 68 e0 a2 19 00 push $0x19a2e0 1045da: 6a 00 push $0x0 1045dc: 6a 00 push $0x0 1045de: 6a 00 push $0x0 1045e0: c7 05 a0 a2 19 00 20 movl $0x183720,0x19a2a0 1045e7: 37 18 00 1045ea: e8 11 ba ff ff call 100000 <LS_Phys> } 1045ef: c9 leave 1045f0: c3 ret 1045f1: 00 00 add %al,(%eax) ... 001045f4 <write>: * write() * */ static int write(const unsigned char *str, unsigned len) { 1045f4: 55 push %ebp 1045f5: 89 e5 mov %esp,%ebp 1045f7: 57 push %edi 1045f8: 56 push %esi 1045f9: 53 push %ebx 1045fa: 83 ec 0c sub $0xc,%esp 1045fd: 8b 7d 0c mov 0xc(%ebp),%edi unsigned i; for(i = 0; i < len; i++) 104600: 31 f6 xor %esi,%esi 104602: 39 fe cmp %edi,%esi 104604: 8b 5d 08 mov 0x8(%ebp),%ebx 104607: 72 0b jb 104614 <write+0x20> { putch_help(_curr_task->vc, *str); str++; } return i; } 104609: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 10460c: 5b pop %ebx 10460d: 89 f0 mov %esi,%eax 10460f: 5e pop %esi 104610: 5f pop %edi 104611: c9 leave 104612: c3 ret 104613: 90 nop 104614: 83 ec 08 sub $0x8,%esp 104617: 0f b6 03 movzbl (%ebx),%eax 10461a: 50 push %eax 10461b: a1 a0 a2 19 00 mov 0x19a2a0,%eax 104620: ff 30 pushl (%eax) 104622: 46 inc %esi 104623: e8 68 02 00 00 call 104890 <putch_help> 104628: 43 inc %ebx 104629: 83 c4 10 add $0x10,%esp 10462c: 39 fe cmp %edi,%esi 10462e: 72 e4 jb 104614 <write+0x20> 104630: eb d7 jmp 104609 <write+0x15> 104632: 89 f6 mov %esi,%esi 00104634 <yield>: /** * yield() * */ static void yield(void) { 104634: 55 push %ebp 104635: 89 e5 mov %esp,%ebp schedule(); 104637: c9 leave 104638: e9 2b ff ff ff jmp 104568 <schedule> 10463d: 8d 76 00 lea 0x0(%esi),%esi 00104640 <wait>: } #define WAIT 0xFFFFFL /** * wait() */ static void wait(void) { 104640: 55 push %ebp 104641: 89 e5 mov %esp,%ebp unsigned long wait; for(wait = WAIT; wait != 0; wait--) 104643: b8 ff ff 0f 00 mov $0xfffff,%eax 104648: 48 dec %eax 104649: 75 fd jne 104648 <wait+0x8> /* nothing */; } 10464b: c9 leave 10464c: c3 ret 10464d: 8d 76 00 lea 0x0(%esi),%esi 00104650 <task1>: /** * task1() * */ void task1(void) { 104650: 55 push %ebp 104651: 89 e5 mov %esp,%ebp 104653: 83 ec 08 sub $0x8,%esp 104656: 89 f6 mov %esi,%esi //static const unsigned char msg_a[] = "root@hybos $ "; /**/ //write(msg_a, sizeof(msg_a)); wait(); 104658: e8 e3 ff ff ff call 104640 <wait> while(1) { /* so we can process other events */ yield(); 10465d: e8 d2 ff ff ff call 104634 <yield> wait(); 104662: eb f4 jmp 104658 <task1+0x8> 00104664 <task2>: } } /** * task2() * */ void task2(void) { 104664: 55 push %ebp 104665: 89 e5 mov %esp,%ebp 104667: 83 ec 08 sub $0x8,%esp 10466a: 89 f6 mov %esi,%esi //static const unsigned char msg_a[] = "root@hybos $ "; /**/ //write(msg_a, sizeof(msg_a)); wait(); 10466c: e8 cf ff ff ff call 104640 <wait> while(1) { yield(); 104671: e8 be ff ff ff call 104634 <yield> wait(); 104676: eb f4 jmp 10466c <task2+0x8> 00104678 <task3>: } } /** * task3() * */ void task3(void) { 104678: 55 push %ebp 104679: 89 e5 mov %esp,%ebp 10467b: 83 ec 08 sub $0x8,%esp 10467e: 89 f6 mov %esi,%esi //static const unsigned char msg_a[] = "root@hybos $ "; /**/ //write(msg_a, sizeof(msg_a)); wait(); 104680: e8 bb ff ff ff call 104640 <wait> while(1) { yield(); 104685: e8 aa ff ff ff call 104634 <yield> wait(); 10468a: eb f4 jmp 104680 <task3+0x8> 0010468c <task4>: } } /** * task4() * */ void task4(void) { 10468c: 55 push %ebp 10468d: 89 e5 mov %esp,%ebp 10468f: 83 ec 08 sub $0x8,%esp 104692: 89 f6 mov %esi,%esi //static const unsigned char msg_a[] = "root@hybos $ "; /**/ //write(msg_a, sizeof(msg_a)); wait(); 104694: e8 a7 ff ff ff call 104640 <wait> while(1) { yield(); 104699: e8 96 ff ff ff call 104634 <yield> wait(); 10469e: eb f4 jmp 104694 <task4+0x8> 001046a0 <blink>: * blink() * */ void blink(void) { 1046a0: 55 push %ebp (*(unsigned char *)_vga_fb_adr)++; 1046a1: a1 28 3a 18 00 mov 0x183a28,%eax 1046a6: 89 e5 mov %esp,%ebp 1046a8: fe 00 incb (%eax) } 1046aa: c9 leave 1046ab: c3 ret 001046ac <get_current_vc>: /** * get_current_vc() * */ unsigned get_current_vc() { 1046ac: 55 push %ebp 1046ad: 89 e5 mov %esp,%ebp return curr_vtty; 1046af: a1 c0 a2 19 00 mov 0x19a2c0,%eax } 1046b4: c9 leave 1046b5: c3 ret 1046b6: 89 f6 mov %esi,%esi 001046b8 <scroll>: /** * scroll() * */ static void scroll(console_t *con) { 1046b8: 55 push %ebp 1046b9: 89 e5 mov %esp,%ebp 1046bb: 57 push %edi 1046bc: 56 push %esi 1046bd: 53 push %ebx 1046be: 83 ec 0c sub $0xc,%esp unsigned short *fb_adr; unsigned blank, temp; blank = 0x20 | ((unsigned)con->attrib << 8); 1046c1: 8b 45 08 mov 0x8(%ebp),%eax 1046c4: 8b 70 18 mov 0x18(%eax),%esi 1046c7: c1 e6 08 shl $0x8,%esi fb_adr = con->fb_adr; 1046ca: 8b 78 30 mov 0x30(%eax),%edi /** * scroll up */ if(con->csr_y >= _vc_height) 1046cd: 8b 15 34 3a 18 00 mov 0x183a34,%edx 1046d3: 8b 40 20 mov 0x20(%eax),%eax 1046d6: 83 ce 20 or $0x20,%esi 1046d9: 39 d0 cmp %edx,%eax 1046db: 73 0b jae 1046e8 <scroll+0x30> { temp = con->csr_y - _vc_height + 1; memcpy(fb_adr, fb_adr + temp * _vc_width, (_vc_height - temp) * _vc_width * 2); /** * blank bottom line of screen */ memsetw(fb_adr + (_vc_height - temp) * _vc_width, blank, _vc_width); con->csr_y = _vc_height - 1; } //for(i = 0; i < 0x1000000; i++) ; } 1046dd: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 1046e0: 5b pop %ebx 1046e1: 5e pop %esi 1046e2: 5f pop %edi 1046e3: c9 leave 1046e4: c3 ret 1046e5: 8d 76 00 lea 0x0(%esi),%esi 1046e8: 29 d0 sub %edx,%eax 1046ea: 8d 58 01 lea 0x1(%eax),%ebx 1046ed: 29 da sub %ebx,%edx 1046ef: 50 push %eax 1046f0: a1 30 3a 18 00 mov 0x183a30,%eax 1046f5: 0f af d0 imul %eax,%edx 1046f8: d1 e2 shl %edx 1046fa: 0f af c3 imul %ebx,%eax 1046fd: 52 push %edx 1046fe: 8d 04 47 lea (%edi,%eax,2),%eax 104701: 50 push %eax 104702: 57 push %edi 104703: e8 54 09 00 00 call 10505c <memcpy> 104708: a1 34 3a 18 00 mov 0x183a34,%eax 10470d: 83 c4 0c add $0xc,%esp 104710: 29 d8 sub %ebx,%eax 104712: ff 35 30 3a 18 00 pushl 0x183a30 104718: 0f af 05 30 3a 18 00 imul 0x183a30,%eax 10471f: 56 push %esi 104720: 8d 04 47 lea (%edi,%eax,2),%eax 104723: 50 push %eax 104724: e8 5f 09 00 00 call 105088 <memsetw> 104729: a1 34 3a 18 00 mov 0x183a34,%eax 10472e: 48 dec %eax 10472f: 8b 55 08 mov 0x8(%ebp),%edx 104732: 89 42 20 mov %eax,0x20(%edx) 104735: 83 c4 10 add $0x10,%esp 104738: eb a3 jmp 1046dd <scroll+0x25> 10473a: 89 f6 mov %esi,%esi 0010473c <set_attrib>: /** * set_attrib() * */ static void set_attrib(console_t *con, unsigned att) { 10473c: 55 push %ebp 10473d: 89 e5 mov %esp,%ebp 10473f: 8b 4d 0c mov 0xc(%ebp),%ecx 104742: 53 push %ebx static const unsigned ansi_to_vga[] = { 0, 4, 2, 6, 1, 5, 3, 7 }; unsigned new_att; new_att = con->attrib; if(att == 0) 104743: 85 c9 test %ecx,%ecx 104745: 8b 5d 08 mov 0x8(%ebp),%ebx 104748: 8b 53 18 mov 0x18(%ebx),%edx 10474b: 75 0b jne 104758 <set_attrib+0x1c> new_att &= ~0x08; /* bold off */ 10474d: 83 e2 f7 and $0xfffffff7,%edx else if(att == 1) new_att |= 0x08; /* bold on */ else if(att >= 30 && att <= 37) { att = ansi_to_vga[att - 30]; new_att = (new_att & ~0x07) | att;/* fg color */ } else if(att >= 40 && att <= 47) { att = ansi_to_vga[att - 40] << 4; new_att = (new_att & ~0x70) | att;/* bg color */ } con->attrib = new_att; 104750: 89 53 18 mov %edx,0x18(%ebx) } 104753: 8b 1c 24 mov (%esp,1),%ebx 104756: c9 leave 104757: c3 ret 104758: 83 f9 01 cmp $0x1,%ecx 10475b: 74 33 je 104790 <set_attrib+0x54> 10475d: 8d 41 e2 lea 0xffffffe2(%ecx),%eax 104760: 83 f8 07 cmp $0x7,%eax 104763: 77 0f ja 104774 <set_attrib+0x38> 104765: 83 e2 f8 and $0xfffffff8,%edx 104768: 0b 14 8d 68 62 10 00 or 0x106268(,%ecx,4),%edx 10476f: eb df jmp 104750 <set_attrib+0x14> 104771: 8d 76 00 lea 0x0(%esi),%esi 104774: 8d 41 d8 lea 0xffffffd8(%ecx),%eax 104777: 83 f8 07 cmp $0x7,%eax 10477a: 77 d4 ja 104750 <set_attrib+0x14> 10477c: 8b 04 8d 40 62 10 00 mov 0x106240(,%ecx,4),%eax 104783: c1 e0 04 shl $0x4,%eax 104786: 83 e2 8f and $0xffffff8f,%edx 104789: 09 c2 or %eax,%edx 10478b: eb c3 jmp 104750 <set_attrib+0x14> 10478d: 8d 76 00 lea 0x0(%esi),%esi 104790: 83 ca 08 or $0x8,%edx 104793: eb bb jmp 104750 <set_attrib+0x14> 104795: 8d 76 00 lea 0x0(%esi),%esi 00104798 <move_csr>: /** * move_csr() * */ static void move_csr(void) { 104798: 55 push %ebp 104799: 89 e5 mov %esp,%ebp 10479b: 53 push %ebx 10479c: 83 ec 0c sub $0xc,%esp unsigned temp; temp = (_curr_vc->csr_y * _vc_width + _curr_vc->csr_x) + 10479f: a1 24 3a 18 00 mov 0x183a24,%eax 1047a4: 8b 1d 30 3a 18 00 mov 0x183a30,%ebx 1047aa: 0f af 58 20 imul 0x20(%eax),%ebx 1047ae: 03 58 1c add 0x1c(%eax),%ebx 1047b1: 8b 40 30 mov 0x30(%eax),%eax 1047b4: 2b 05 28 3a 18 00 sub 0x183a28,%eax (_curr_vc->fb_adr - _vga_fb_adr); outportb(_crtc_io_adr + 0, 14); 1047ba: 6a 0e push $0xe 1047bc: d1 f8 sar %eax 1047be: ff 35 2c 3a 18 00 pushl 0x183a2c 1047c4: 01 c3 add %eax,%ebx 1047c6: e8 e9 08 00 00 call 1050b4 <outportb> outportb(_crtc_io_adr + 1, temp >> 8); 1047cb: 59 pop %ecx 1047cc: 58 pop %eax 1047cd: 89 d8 mov %ebx,%eax 1047cf: c1 e8 08 shr $0x8,%eax 1047d2: 50 push %eax 1047d3: a1 2c 3a 18 00 mov 0x183a2c,%eax 1047d8: 40 inc %eax 1047d9: 50 push %eax 1047da: e8 d5 08 00 00 call 1050b4 <outportb> outportb(_crtc_io_adr + 0, 15); 1047df: 58 pop %eax 1047e0: 5a pop %edx 1047e1: 6a 0f push $0xf 1047e3: ff 35 2c 3a 18 00 pushl 0x183a2c 1047e9: e8 c6 08 00 00 call 1050b4 <outportb> outportb(_crtc_io_adr + 1, temp); 1047ee: 5a pop %edx 1047ef: 59 pop %ecx 1047f0: a1 2c 3a 18 00 mov 0x183a2c,%eax 1047f5: 53 push %ebx 1047f6: 40 inc %eax 1047f7: 50 push %eax 1047f8: e8 b7 08 00 00 call 1050b4 <outportb> } 1047fd: 8b 5d fc mov 0xfffffffc(%ebp),%ebx 104800: c9 leave 104801: c3 ret 104802: 89 f6 mov %esi,%esi 00104804 <select_vc>: /** * select_vc() * */ void select_vc(unsigned which_vc) { 104804: 55 push %ebp 104805: 89 e5 mov %esp,%ebp 104807: 56 push %esi 104808: 53 push %ebx 104809: 8b 75 08 mov 0x8(%ebp),%esi unsigned i; if(which_vc >= _num_vcs) 10480c: 3b 35 20 3a 18 00 cmp 0x183a20,%esi 104812: 72 08 jb 10481c <select_vc+0x18> return; _curr_vc = _vc + which_vc; i = _curr_vc->fb_adr - _vga_fb_adr; outportb(_crtc_io_adr + 0, 12); outportb(_crtc_io_adr + 1, i >> 8); outportb(_crtc_io_adr + 0, 13); outportb(_crtc_io_adr + 1, i); curr_vtty = which_vc; move_csr(); } 104814: 8d 65 f8 lea 0xfffffff8(%ebp),%esp 104817: 5b pop %ebx 104818: 5e pop %esi 104819: c9 leave 10481a: c3 ret 10481b: 90 nop 10481c: 8d 04 76 lea (%esi,%esi,2),%eax 10481f: 8d 04 86 lea (%esi,%eax,4),%eax 104822: 8d 04 85 e0 a2 19 00 lea 0x19a2e0(,%eax,4),%eax 104829: 8b 58 30 mov 0x30(%eax),%ebx 10482c: 83 ec 08 sub $0x8,%esp 10482f: a3 24 3a 18 00 mov %eax,0x183a24 104834: 2b 1d 28 3a 18 00 sub 0x183a28,%ebx 10483a: 6a 0c push $0xc 10483c: d1 fb sar %ebx 10483e: ff 35 2c 3a 18 00 pushl 0x183a2c 104844: e8 6b 08 00 00 call 1050b4 <outportb> 104849: 58 pop %eax 10484a: 89 d8 mov %ebx,%eax 10484c: 5a pop %edx 10484d: c1 e8 08 shr $0x8,%eax 104850: 50 push %eax 104851: a1 2c 3a 18 00 mov 0x183a2c,%eax 104856: 40 inc %eax 104857: 50 push %eax 104858: e8 57 08 00 00 call 1050b4 <outportb> 10485d: 59 pop %ecx 10485e: 58 pop %eax 10485f: 6a 0d push $0xd 104861: ff 35 2c 3a 18 00 pushl 0x183a2c 104867: e8 48 08 00 00 call 1050b4 <outportb> 10486c: 58 pop %eax 10486d: 5a pop %edx 10486e: 53 push %ebx 10486f: a1 2c 3a 18 00 mov 0x183a2c,%eax 104874: 40 inc %eax 104875: 50 push %eax 104876: e8 39 08 00 00 call 1050b4 <outportb> 10487b: 89 35 c0 a2 19 00 mov %esi,0x19a2c0 104881: 83 c4 10 add $0x10,%esp 104884: 8d 65 f8 lea 0xfffffff8(%ebp),%esp 104887: 5b pop %ebx 104888: 5e pop %esi 104889: c9 leave 10488a: e9 09 ff ff ff jmp 104798 <move_csr> 10488f: 90 nop 00104890 <putch_help>: /** * putch_help() * */ void putch_help(console_t *con, unsigned c) { 104890: 55 push %ebp 104891: 89 e5 mov %esp,%ebp 104893: 57 push %edi 104894: 56 push %esi 104895: 53 push %ebx 104896: 83 ec 0c sub $0xc,%esp 104899: 8b 5d 08 mov 0x8(%ebp),%ebx unsigned short *fb_adr; unsigned att; att = (unsigned)con->attrib << 8; 10489c: 8b 73 18 mov 0x18(%ebx),%esi fb_adr = con->fb_adr; /** * state machine to handle escape sequences * * ESC */ if(con->esc == 1) 10489f: 8b 43 14 mov 0x14(%ebx),%eax 1048a2: c1 e6 08 shl $0x8,%esi 1048a5: 83 f8 01 cmp $0x1,%eax 1048a8: 8b 4d 0c mov 0xc(%ebp),%ecx 1048ab: 8b 7b 30 mov 0x30(%ebx),%edi 1048ae: 0f 84 30 02 00 00 je 104ae4 <putch_help+0x254> { if(c == '[') { con->esc++; con->esc1 = 0; return; } /* else fall-through: zero esc and print c */ } /** * ESC[ */ else if(con->esc == 2) 1048b4: 83 f8 02 cmp $0x2,%eax 1048b7: 0f 84 a3 01 00 00 je 104a60 <putch_help+0x1d0> { if(isdigit(c)) { con->esc1 = con->esc1 * 10 + c - '0'; return; } else if(c == ';') { con->esc++; con->esc2 = 0; return; } /** * ESC[2J (clear screen) */ else if(c == 'J') { if(con->esc1 == 2) { memsetw(fb_adr, ' ' | att, _vc_height * _vc_width); con->csr_x = con->csr_y = 0; } } /** * ESC[num1m (set attribute num1) */ else if(c == 'm') set_attrib(con, con->esc1); con->esc = 0; /* anything else with one numeric arg */ return; } /** * ESC[num1 */ else if(con->esc == 3) 1048bd: 83 f8 03 cmp $0x3,%eax 1048c0: 0f 84 22 01 00 00 je 1049e8 <putch_help+0x158> { if(isdigit(c)) { con->esc2 = con->esc2 * 10 + c - '0'; return; } else if(c == ';') { con->esc++; /* ESC[num1;num2; */ con->esc3 = 0; return; } /** * ESC[num1;num2H (move cursor to num1,num2) */ else if(c == 'H') { if(con->esc2 < _vc_width) con->csr_x = con->esc2; if(con->esc1 < _vc_height) con->csr_y = con->esc1; } /** * ESC[num1;num2m (set attributes num1,num2) */ else if(c == 'm') { set_attrib(con, con->esc1); set_attrib(con, con->esc2); } con->esc = 0; return; } /** * ESC[num1;num2;num3 */ else if(con->esc == 4) 1048c6: 83 f8 04 cmp $0x4,%eax 1048c9: 0f 84 c9 00 00 00 je 104998 <putch_help+0x108> { if(isdigit(c)) { con->esc3 = con->esc3 * 10 + c - '0'; return; } /** * ESC[num1;num2;num3m (set attributes num1,num2,num3) */ else if(c == 'm') { set_attrib(con, con->esc1); set_attrib(con, con->esc2); set_attrib(con, con->esc3); } con->esc = 0; return; } con->esc = 0; /** * escape character */ if(c == 0x1B) 1048cf: 83 f9 1b cmp $0x1b,%ecx 1048d2: c7 43 14 00 00 00 00 movl $0x0,0x14(%ebx) 1048d9: 0f 84 ad 00 00 00 je 10498c <putch_help+0xfc> { con->esc = 1; return; } /** * backspace */ if(c == 0x08) 1048df: 83 f9 08 cmp $0x8,%ecx 1048e2: 0f 84 9a 00 00 00 je 104982 <putch_help+0xf2> { if(con->csr_x != 0) con->csr_x--; } /** * tab */ else if(c == 0x09) 1048e8: 83 f9 09 cmp $0x9,%ecx 1048eb: 0f 84 83 00 00 00 je 104974 <putch_help+0xe4> con->csr_x = (con->csr_x + 8) & ~(8 - 1); /** * carriage return */ else if(c == '\r') /* 0x0D */ 1048f1: 83 f9 0d cmp $0xd,%ecx 1048f4: 74 75 je 10496b <putch_help+0xdb> con->csr_x = 0; /** * line feed */ /* else if(c == '\n') *//* 0x0A */ /* con->csr_y++;*/ /** * CR/LF */ else if(c == '\n') /* ### - 0x0A again */ 1048f6: 83 f9 0a cmp $0xa,%ecx 1048f9: 74 62 je 10495d <putch_help+0xcd> { con->csr_x = 0; con->csr_y++; } /** * printable ASCII */ else if(c >= ' ') 1048fb: 83 f9 1f cmp $0x1f,%ecx 1048fe: 76 58 jbe 104958 <putch_help+0xc8> { unsigned short *where; where = fb_adr + (con->csr_y * _vc_width + con->csr_x); 104900: a1 30 3a 18 00 mov 0x183a30,%eax 104905: 8b 53 1c mov 0x1c(%ebx),%edx 104908: 0f af 43 20 imul 0x20(%ebx),%eax 10490c: 01 d0 add %edx,%eax *where = (c | att); 10490e: 09 f1 or %esi,%ecx con->csr_x++; 104910: 42 inc %edx 104911: 66 89 0c 47 mov %cx,(%edi,%eax,2) 104915: 89 d0 mov %edx,%eax 104917: 89 53 1c mov %edx,0x1c(%ebx) 10491a: 89 f6 mov %esi,%esi } if(con->csr_x >= _vc_width) 10491c: 3b 05 30 3a 18 00 cmp 0x183a30,%eax 104922: 72 0a jb 10492e <putch_help+0x9e> { con->csr_x = 0; 104924: c7 43 1c 00 00 00 00 movl $0x0,0x1c(%ebx) con->csr_y++; 10492b: ff 43 20 incl 0x20(%ebx) } scroll(con); 10492e: 83 ec 0c sub $0xc,%esp 104931: 53 push %ebx 104932: e8 81 fd ff ff call 1046b8 <scroll> /** * move cursor only if the VC we're writing is the current VC */ if(_curr_vc == con) 104937: 83 c4 10 add $0x10,%esp 10493a: 39 1d 24 3a 18 00 cmp %ebx,0x183a24 104940: 74 0a je 10494c <putch_help+0xbc> 104942: 89 f6 mov %esi,%esi move_csr(); } 104944: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 104947: 5b pop %ebx 104948: 5e pop %esi 104949: 5f pop %edi 10494a: c9 leave 10494b: c3 ret 10494c: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 10494f: 5b pop %ebx 104950: 5e pop %esi 104951: 5f pop %edi 104952: c9 leave 104953: e9 40 fe ff ff jmp 104798 <move_csr> 104958: 8b 43 1c mov 0x1c(%ebx),%eax 10495b: eb bf jmp 10491c <putch_help+0x8c> 10495d: c7 43 1c 00 00 00 00 movl $0x0,0x1c(%ebx) 104964: ff 43 20 incl 0x20(%ebx) 104967: 31 c0 xor %eax,%eax 104969: eb b1 jmp 10491c <putch_help+0x8c> 10496b: c7 43 1c 00 00 00 00 movl $0x0,0x1c(%ebx) 104972: eb f3 jmp 104967 <putch_help+0xd7> 104974: 8b 43 1c mov 0x1c(%ebx),%eax 104977: 83 c0 08 add $0x8,%eax 10497a: 83 e0 f8 and $0xfffffff8,%eax 10497d: 89 43 1c mov %eax,0x1c(%ebx) 104980: eb 9a jmp 10491c <putch_help+0x8c> 104982: 8b 43 1c mov 0x1c(%ebx),%eax 104985: 85 c0 test %eax,%eax 104987: 74 93 je 10491c <putch_help+0x8c> 104989: 48 dec %eax 10498a: eb f1 jmp 10497d <putch_help+0xed> 10498c: c7 43 14 01 00 00 00 movl $0x1,0x14(%ebx) 104993: eb af jmp 104944 <putch_help+0xb4> 104995: 8d 76 00 lea 0x0(%esi),%esi 104998: f6 81 41 78 10 00 04 testb $0x4,0x107841(%ecx) 10499f: 74 0f je 1049b0 <putch_help+0x120> 1049a1: 8b 43 2c mov 0x2c(%ebx),%eax 1049a4: 8d 04 80 lea (%eax,%eax,4),%eax 1049a7: 8d 44 41 d0 lea 0xffffffd0(%ecx,%eax,2),%eax 1049ab: 89 43 2c mov %eax,0x2c(%ebx) 1049ae: eb 94 jmp 104944 <putch_help+0xb4> 1049b0: 83 f9 6d cmp $0x6d,%ecx 1049b3: 74 0c je 1049c1 <putch_help+0x131> 1049b5: 8d 76 00 lea 0x0(%esi),%esi 1049b8: c7 43 14 00 00 00 00 movl $0x0,0x14(%ebx) 1049bf: eb 83 jmp 104944 <putch_help+0xb4> 1049c1: 83 ec 08 sub $0x8,%esp 1049c4: ff 73 24 pushl 0x24(%ebx) 1049c7: 53 push %ebx 1049c8: e8 6f fd ff ff call 10473c <set_attrib> 1049cd: 5f pop %edi 1049ce: 58 pop %eax 1049cf: ff 73 28 pushl 0x28(%ebx) 1049d2: 53 push %ebx 1049d3: e8 64 fd ff ff call 10473c <set_attrib> 1049d8: 59 pop %ecx 1049d9: 5e pop %esi 1049da: ff 73 2c pushl 0x2c(%ebx) 1049dd: 53 push %ebx 1049de: e8 59 fd ff ff call 10473c <set_attrib> 1049e3: 83 c4 10 add $0x10,%esp 1049e6: eb d0 jmp 1049b8 <putch_help+0x128> 1049e8: f6 81 41 78 10 00 04 testb $0x4,0x107841(%ecx) 1049ef: 74 12 je 104a03 <putch_help+0x173> 1049f1: 8b 43 28 mov 0x28(%ebx),%eax 1049f4: 8d 04 80 lea (%eax,%eax,4),%eax 1049f7: 8d 44 41 d0 lea 0xffffffd0(%ecx,%eax,2),%eax 1049fb: 89 43 28 mov %eax,0x28(%ebx) 1049fe: e9 41 ff ff ff jmp 104944 <putch_help+0xb4> 104a03: 83 f9 3b cmp $0x3b,%ecx 104a06: 74 42 je 104a4a <putch_help+0x1ba> 104a08: 83 f9 48 cmp $0x48,%ecx 104a0b: 74 18 je 104a25 <putch_help+0x195> 104a0d: 83 f9 6d cmp $0x6d,%ecx 104a10: 75 a6 jne 1049b8 <putch_help+0x128> 104a12: 83 ec 08 sub $0x8,%esp 104a15: ff 73 24 pushl 0x24(%ebx) 104a18: 53 push %ebx 104a19: e8 1e fd ff ff call 10473c <set_attrib> 104a1e: 58 pop %eax 104a1f: 5a pop %edx 104a20: ff 73 28 pushl 0x28(%ebx) 104a23: eb b8 jmp 1049dd <putch_help+0x14d> 104a25: 8b 43 28 mov 0x28(%ebx),%eax 104a28: 3b 05 30 3a 18 00 cmp 0x183a30,%eax 104a2e: 73 03 jae 104a33 <putch_help+0x1a3> 104a30: 89 43 1c mov %eax,0x1c(%ebx) 104a33: 8b 43 24 mov 0x24(%ebx),%eax 104a36: 3b 05 34 3a 18 00 cmp 0x183a34,%eax 104a3c: 0f 83 76 ff ff ff jae 1049b8 <putch_help+0x128> 104a42: 89 43 20 mov %eax,0x20(%ebx) 104a45: e9 6e ff ff ff jmp 1049b8 <putch_help+0x128> 104a4a: c7 43 14 04 00 00 00 movl $0x4,0x14(%ebx) 104a51: c7 43 2c 00 00 00 00 movl $0x0,0x2c(%ebx) 104a58: e9 e7 fe ff ff jmp 104944 <putch_help+0xb4> 104a5d: 8d 76 00 lea 0x0(%esi),%esi 104a60: f6 81 41 78 10 00 04 testb $0x4,0x107841(%ecx) 104a67: 74 13 je 104a7c <putch_help+0x1ec> 104a69: 8b 43 24 mov 0x24(%ebx),%eax 104a6c: 8d 04 80 lea (%eax,%eax,4),%eax 104a6f: 8d 44 41 d0 lea 0xffffffd0(%ecx,%eax,2),%eax 104a73: 89 43 24 mov %eax,0x24(%ebx) 104a76: e9 c9 fe ff ff jmp 104944 <putch_help+0xb4> 104a7b: 90 nop 104a7c: 83 f9 3b cmp $0x3b,%ecx 104a7f: 74 4e je 104acf <putch_help+0x23f> 104a81: 83 f9 4a cmp $0x4a,%ecx 104a84: 74 14 je 104a9a <putch_help+0x20a> 104a86: 83 f9 6d cmp $0x6d,%ecx 104a89: 0f 85 29 ff ff ff jne 1049b8 <putch_help+0x128> 104a8f: 83 ec 08 sub $0x8,%esp 104a92: ff 73 24 pushl 0x24(%ebx) 104a95: e9 43 ff ff ff jmp 1049dd <putch_help+0x14d> 104a9a: 83 7b 24 02 cmpl $0x2,0x24(%ebx) 104a9e: 0f 85 14 ff ff ff jne 1049b8 <putch_help+0x128> 104aa4: 51 push %ecx 104aa5: a1 30 3a 18 00 mov 0x183a30,%eax 104aaa: 0f af 05 34 3a 18 00 imul 0x183a34,%eax 104ab1: 50 push %eax 104ab2: 83 ce 20 or $0x20,%esi 104ab5: 56 push %esi 104ab6: 57 push %edi 104ab7: e8 cc 05 00 00 call 105088 <memsetw> 104abc: c7 43 20 00 00 00 00 movl $0x0,0x20(%ebx) 104ac3: c7 43 1c 00 00 00 00 movl $0x0,0x1c(%ebx) 104aca: e9 14 ff ff ff jmp 1049e3 <putch_help+0x153> 104acf: c7 43 14 03 00 00 00 movl $0x3,0x14(%ebx) 104ad6: c7 43 28 00 00 00 00 movl $0x0,0x28(%ebx) 104add: e9 62 fe ff ff jmp 104944 <putch_help+0xb4> 104ae2: 89 f6 mov %esi,%esi 104ae4: 83 f9 5b cmp $0x5b,%ecx 104ae7: 0f 85 e2 fd ff ff jne 1048cf <putch_help+0x3f> 104aed: c7 43 14 02 00 00 00 movl $0x2,0x14(%ebx) 104af4: c7 43 24 00 00 00 00 movl $0x0,0x24(%ebx) 104afb: e9 44 fe ff ff jmp 104944 <putch_help+0xb4> 00104b00 <putch>: /** * putch() * */ void putch(unsigned c) { 104b00: 55 push %ebp 104b01: 89 e5 mov %esp,%ebp 104b03: 83 ec 10 sub $0x10,%esp /* all kernel messages to VC #0 */ // putch_help(_vc + 0, c); /* all kernel messages to current VC */ putch_help(_curr_vc, c); 104b06: ff 75 08 pushl 0x8(%ebp) 104b09: ff 35 24 3a 18 00 pushl 0x183a24 104b0f: e8 7c fd ff ff call 104890 <putch_help> } 104b14: c9 leave 104b15: c3 ret 104b16: 89 f6 mov %esi,%esi 00104b18 <init_video>: /** * init_video() * */ void init_video(void) { 104b18: 55 push %ebp 104b19: 89 e5 mov %esp,%ebp 104b1b: 56 push %esi 104b1c: 53 push %ebx unsigned i; /** * check for monochrome or color VGA emulation */ if((inportb(VGA_MISC_READ) & 0x01) != 0) 104b1d: 83 ec 0c sub $0xc,%esp 104b20: 68 cc 03 00 00 push $0x3cc 104b25: e8 ea 04 00 00 call 105014 <inportb> 104b2a: 83 c4 10 add $0x10,%esp 104b2d: a8 01 test $0x1,%al 104b2f: 0f 84 78 01 00 00 je 104cad <init_video+0x195> { _vga_fb_adr = (unsigned short *)0xB8000L; 104b35: c7 05 28 3a 18 00 00 movl $0xb8000,0x183a28 104b3c: 80 0b 00 _crtc_io_adr = 0x3D4; 104b3f: c7 05 2c 3a 18 00 d4 movl $0x3d4,0x183a2c 104b46: 03 00 00 } else { _vga_fb_adr = (unsigned short *)0xB0000L; _crtc_io_adr = 0x3B4; } /** * read current screen size from BIOS data segment (addresses 400-4FF) */ _vc_width = *(unsigned short *)0x44A; _vc_height = *(unsigned char *)0x484 + 1; 104b49: 0f b6 05 84 04 00 00 movzbl 0x484,%eax 104b50: 40 inc %eax 104b51: 0f b7 15 4a 04 00 00 movzwl 0x44a,%edx 104b58: 89 15 30 3a 18 00 mov %edx,0x183a30 /** * figure out how many VCs we can have with 32K of display memory. * Use INTEGER division to round down. */ _num_vcs = 32768L / (_vc_width * _vc_height * 2); 104b5e: 0f af d0 imul %eax,%edx 104b61: d1 e2 shl %edx 104b63: 89 d1 mov %edx,%ecx 104b65: a3 34 3a 18 00 mov %eax,0x183a34 104b6a: 31 d2 xor %edx,%edx 104b6c: b8 00 80 00 00 mov $0x8000,%eax 104b71: f7 f1 div %ecx if(_num_vcs > MAX_VC) 104b73: 83 f8 0c cmp $0xc,%eax 104b76: a3 20 3a 18 00 mov %eax,0x183a20 104b7b: 76 0a jbe 104b87 <init_video+0x6f> _num_vcs = MAX_VC; 104b7d: c7 05 20 3a 18 00 0c movl $0xc,0x183a20 104b84: 00 00 00 /** * init VCs, with a different foreground color for each */ for(i = 0; i < _num_vcs; i++) 104b87: 31 f6 xor %esi,%esi 104b89: 3b 35 20 3a 18 00 cmp 0x183a20,%esi 104b8f: 73 53 jae 104be4 <init_video+0xcc> 104b91: bb e0 a2 19 00 mov $0x19a2e0,%ebx 104b96: 89 f6 mov %esi,%esi { _curr_vc = _vc + i; //_curr_vc->attrib = i + 1; /* terminal foreground color */ _curr_vc->attrib = 7; _curr_vc->fb_adr = _vga_fb_adr + 104b98: a1 34 3a 18 00 mov 0x183a34,%eax 104b9d: 0f af 05 30 3a 18 00 imul 0x183a30,%eax 104ba4: 8b 15 28 3a 18 00 mov 0x183a28,%edx 104baa: 0f af c6 imul %esi,%eax _vc_width * _vc_height * i; /** * ESC[2J clears the screen */ //kprintf("\x1B[2J this is VC#%u (of 0-%u)\n", // i, _num_vcs - 1); printf("\x1B[2J"); 104bad: 83 ec 0c sub $0xc,%esp 104bb0: 8d 04 42 lea (%edx,%eax,2),%eax 104bb3: c7 43 18 07 00 00 00 movl $0x7,0x18(%ebx) 104bba: 89 43 30 mov %eax,0x30(%ebx) 104bbd: 68 00 63 10 00 push $0x106300 104bc2: 89 1d 24 3a 18 00 mov %ebx,0x183a24 104bc8: e8 07 05 00 00 call 1050d4 <printf> if(i != 0) 104bcd: 83 c4 10 add $0x10,%esp 104bd0: 85 f6 test %esi,%esi 104bd2: 0f 85 c0 00 00 00 jne 104c98 <init_video+0x180> 104bd8: 46 inc %esi 104bd9: 83 c3 34 add $0x34,%ebx 104bdc: 3b 35 20 3a 18 00 cmp 0x183a20,%esi 104be2: 72 b4 jb 104b98 <init_video+0x80> printf("$ "); } select_vc(0); 104be4: 83 ec 0c sub $0xc,%esp 104be7: 6a 00 push $0x0 104be9: e8 16 fc ff ff call 104804 <select_vc> curr_vtty = 0; _curr_vc->attrib = 8; 104bee: a1 24 3a 18 00 mov 0x183a24,%eax 104bf3: c7 05 c0 a2 19 00 00 movl $0x0,0x19a2c0 104bfa: 00 00 00 104bfd: c7 40 18 08 00 00 00 movl $0x8,0x18(%eax) printf("[ "); 104c04: c7 04 24 b6 51 10 00 movl $0x1051b6,(%esp,1) 104c0b: e8 c4 04 00 00 call 1050d4 <printf> _curr_vc->attrib = 15; 104c10: a1 24 3a 18 00 mov 0x183a24,%eax 104c15: c7 40 18 0f 00 00 00 movl $0xf,0x18(%eax) printf("init: video %5s emulation, %2ux%2u, framebuffer at 0x%1X ", 104c1c: 5b pop %ebx 104c1d: ff 35 28 3a 18 00 pushl 0x183a28 104c23: ff 35 34 3a 18 00 pushl 0x183a34 104c29: 81 3d 2c 3a 18 00 d4 cmpl $0x3d4,0x183a2c 104c30: 03 00 00 104c33: ff 35 30 3a 18 00 pushl 0x183a30 104c39: 74 54 je 104c8f <init_video+0x177> 104c3b: b8 05 63 10 00 mov $0x106305,%eax 104c40: 50 push %eax 104c41: 68 40 63 10 00 push $0x106340 104c46: e8 89 04 00 00 call 1050d4 <printf> (_crtc_io_adr == 0x3D4) ? "color" : "mono", _vc_width, _vc_height, _vga_fb_adr); _curr_vc->attrib = 8; printf("]................"); 104c4b: 83 c4 14 add $0x14,%esp 104c4e: a1 24 3a 18 00 mov 0x183a24,%eax 104c53: c7 40 18 08 00 00 00 movl $0x8,0x18(%eax) 104c5a: 68 0a 63 10 00 push $0x10630a 104c5f: e8 70 04 00 00 call 1050d4 <printf> _curr_vc->attrib = 2; 104c64: a1 24 3a 18 00 mov 0x183a24,%eax 104c69: c7 40 18 02 00 00 00 movl $0x2,0x18(%eax) printf("Ok"); 104c70: c7 04 24 d9 54 10 00 movl $0x1054d9,(%esp,1) 104c77: e8 58 04 00 00 call 1050d4 <printf> _curr_vc->attrib = 7; 104c7c: a1 24 3a 18 00 mov 0x183a24,%eax 104c81: c7 40 18 07 00 00 00 movl $0x7,0x18(%eax) } 104c88: 8d 65 f8 lea 0xfffffff8(%ebp),%esp 104c8b: 5b pop %ebx 104c8c: 5e pop %esi 104c8d: c9 leave 104c8e: c3 ret 104c8f: b8 1c 63 10 00 mov $0x10631c,%eax 104c94: eb aa jmp 104c40 <init_video+0x128> 104c96: 89 f6 mov %esi,%esi 104c98: 83 ec 0c sub $0xc,%esp 104c9b: 68 d6 54 10 00 push $0x1054d6 104ca0: e8 2f 04 00 00 call 1050d4 <printf> 104ca5: 83 c4 10 add $0x10,%esp 104ca8: e9 2b ff ff ff jmp 104bd8 <init_video+0xc0> 104cad: c7 05 28 3a 18 00 00 movl $0xb0000,0x183a28 104cb4: 00 0b 00 104cb7: c7 05 2c 3a 18 00 b4 movl $0x3b4,0x183a2c 104cbe: 03 00 00 104cc1: e9 83 fe ff ff jmp 104b49 <init_video+0x31> ... 00104cc8 <disable>: /***************************************************************************** *****************************************************************************/ unsigned disable(void) { 104cc8: 55 push %ebp 104cc9: 89 e5 mov %esp,%ebp unsigned ret_val; __asm__ __volatile__("pushfl\n" 104ccb: 9c pushf 104ccc: 58 pop %eax 104ccd: fa cli "popl %0\n" "cli" : "=a"(ret_val) :); return ret_val; } 104cce: c9 leave 104ccf: c3 ret 00104cd0 <do_printf>: 2^32-1 in base 8 has 11 digits (add 5 for trailing NUL and for slop) */ #define PR_BUFLEN 16 int do_printf(const char *fmt, va_list args, fnptr_t fn, void *ptr) { 104cd0: 55 push %ebp 104cd1: 89 e5 mov %esp,%ebp 104cd3: 57 push %edi 104cd4: 56 push %esi 104cd5: 53 push %ebx 104cd6: 83 ec 2c sub $0x2c,%esp 104cd9: 8b 75 08 mov 0x8(%ebp),%esi unsigned state, flags, radix, actual_wd, count, given_wd; unsigned char *where, buf[PR_BUFLEN]; long num; state = flags = count = given_wd = 0; 104cdc: c7 45 cc 00 00 00 00 movl $0x0,0xffffffcc(%ebp) 104ce3: c7 45 d0 00 00 00 00 movl $0x0,0xffffffd0(%ebp) 104cea: c7 45 d4 00 00 00 00 movl $0x0,0xffffffd4(%ebp) /* begin scanning format specifier list */ for(; *fmt; fmt++) 104cf1: 8a 0e mov (%esi),%cl 104cf3: 31 db xor %ebx,%ebx 104cf5: 84 c9 test %cl,%cl 104cf7: 74 38 je 104d31 <do_printf+0x61> 104cf9: 8d 76 00 lea 0x0(%esi),%esi { switch(state) 104cfc: 83 fb 04 cmp $0x4,%ebx 104cff: 0f 87 d7 01 00 00 ja 104edc <do_printf+0x20c> 104d05: ff 24 9d 7c 63 10 00 jmp *0x10637c(,%ebx,4) { /* STATE 0: AWAITING % */ case 0: if(*fmt != '%') /* not %... */ 104d0c: 80 f9 25 cmp $0x25,%cl 104d0f: 74 2b je 104d3c <do_printf+0x6c> { fn(*fmt, &ptr); /* ...just echo it */ 104d11: 83 ec 08 sub $0x8,%esp 104d14: 8d 45 14 lea 0x14(%ebp),%eax 104d17: 50 push %eax 104d18: 0f be c1 movsbl %cl,%eax 104d1b: 50 push %eax 104d1c: ff 55 10 call *0x10(%ebp) count++; 104d1f: ff 45 d0 incl 0xffffffd0(%ebp) break; } /* found %, get next char and advance state to check if next char is a flag */ state++; fmt++; /* FALL THROUGH */ /* STATE 1: AWAITING FLAGS (%-0) */ case 1: if(*fmt == '%') /* %% */ { fn(*fmt, &ptr); count++; state = flags = given_wd = 0; break; 104d22: 83 c4 10 add $0x10,%esp 104d25: 8d 76 00 lea 0x0(%esi),%esi 104d28: 46 inc %esi 104d29: 8a 06 mov (%esi),%al 104d2b: 84 c0 test %al,%al 104d2d: 88 c1 mov %al,%cl 104d2f: 75 cb jne 104cfc <do_printf+0x2c> } if(*fmt == '-') { if(flags & PR_LJ)/* %-- is illegal */ state = flags = given_wd = 0; else flags |= PR_LJ; break; } /* not a flag char: advance state to check if it's field width */ state++; /* check now for '%0...' */ if(*fmt == '0') { flags |= PR_LZ; fmt++; } /* FALL THROUGH */ /* STATE 2: AWAITING (NUMERIC) FIELD WIDTH */ case 2: if(*fmt >= '0' && *fmt <= '9') { given_wd = 10 * given_wd + (*fmt - '0'); break; } /* not field width: advance state to check if it's a modifier */ state++; /* FALL THROUGH */ /* STATE 3: AWAITING MODIFIER CHARS (FNlh) */ case 3: if(*fmt == 'F') { flags |= PR_FP; break; } if(*fmt == 'N') break; if(*fmt == 'l') { flags |= PR_32; break; } if(*fmt == 'h') { flags |= PR_16; break; } /* not modifier: advance state to check if it's a conversion char */ state++; /* FALL THROUGH */ /* STATE 4: AWAITING CONVERSION CHARS (Xxpndiuocs) */ case 4: where = buf + PR_BUFLEN - 1; *where = '\0'; switch(*fmt) { case 'X': flags |= PR_CA; /* FALL THROUGH */ /* xxx - far pointers (%Fp, %Fn) not yet supported */ case 'x': case 'p': case 'n': radix = 16; goto DO_NUM; case 'd': case 'i': flags |= PR_SG; /* FALL THROUGH */ case 'u': radix = 10; goto DO_NUM; case 'o': radix = 8; /* load the value to be printed. l=long=32 bits: */ DO_NUM: if(flags & PR_32) num = va_arg(args, unsigned long); /* h=short=16 bits (signed or unsigned) */ else if(flags & PR_16) { if(flags & PR_SG) num = va_arg(args, short); else num = va_arg(args, unsigned short); } /* no h nor l: sizeof(int) bits (signed or unsigned) */ else { if(flags & PR_SG) num = va_arg(args, int); else num = va_arg(args, unsigned int); } /* take care of sign */ if(flags & PR_SG) { if(num < 0) { flags |= PR_WS; num = -num; } } /* convert binary to octal/decimal/hex ASCII OK, I found my mistake. The math here is _always_ unsigned */ do { unsigned long temp; temp = (unsigned long)num % radix; where--; if(temp < 10) *where = temp + '0'; else if(flags & PR_CA) *where = temp - 10 + 'A'; else *where = temp - 10 + 'a'; num = (unsigned long)num / radix; } while(num != 0); goto EMIT; case 'c': /* disallow pad-left-with-zeroes for %c */ flags &= ~PR_LZ; where--; *where = (unsigned char)va_arg(args, unsigned char); actual_wd = 1; goto EMIT2; case 's': /* disallow pad-left-with-zeroes for %s */ flags &= ~PR_LZ; where = va_arg(args, unsigned char *); EMIT: actual_wd = strlen(where); if(flags & PR_WS) actual_wd++; /* if we pad left with ZEROES, do the sign now */ if((flags & (PR_WS | PR_LZ)) == (PR_WS | PR_LZ)) { fn('-', &ptr); count++; } /* pad on left with spaces or zeroes (for right justify) */ EMIT2: if((flags & PR_LJ) == 0) { while(given_wd > actual_wd) { fn(flags & PR_LZ ? '0' : ' ', &ptr); count++; given_wd--; } } /* if we pad left with SPACES, do the sign now */ if((flags & (PR_WS | PR_LZ)) == PR_WS) { fn('-', &ptr); count++; } /* emit string/char/converted number */ while(*where != '\0') { fn(*where++, &ptr); count++; } /* pad on right with spaces (for left justify) */ if(given_wd < actual_wd) given_wd = 0; else given_wd -= actual_wd; for(; given_wd; given_wd--) { fn(' ', &ptr); count++; } break; default: break; } default: state = flags = given_wd = 0; break; } } return count; } 104d31: 8b 45 d0 mov 0xffffffd0(%ebp),%eax 104d34: 8d 65 f4 lea 0xfffffff4(%ebp),%esp 104d37: 5b pop %ebx 104d38: 5e pop %esi 104d39: 5f pop %edi 104d3a: c9 leave 104d3b: c3 ret 104d3c: 46 inc %esi 104d3d: 43 inc %ebx 104d3e: 8a 0e mov (%esi),%cl 104d40: 80 f9 25 cmp $0x25,%cl 104d43: 0f 84 9d 02 00 00 je 104fe6 <do_printf+0x316> 104d49: 80 f9 2d cmp $0x2d,%cl 104d4c: 0f 84 81 02 00 00 je 104fd3 <do_printf+0x303> 104d52: 43 inc %ebx 104d53: 80 f9 30 cmp $0x30,%cl 104d56: 0f 84 6b 02 00 00 je 104fc7 <do_printf+0x2f7> 104d5c: 8d 41 d0 lea 0xffffffd0(%ecx),%eax 104d5f: 3c 09 cmp $0x9,%al 104d61: 77 12 ja 104d75 <do_printf+0xa5> 104d63: 8b 45 cc mov 0xffffffcc(%ebp),%eax 104d66: 8d 14 80 lea (%eax,%eax,4),%edx 104d69: 0f be c1 movsbl %cl,%eax 104d6c: 8d 54 50 d0 lea 0xffffffd0(%eax,%edx,2),%edx 104d70: 89 55 cc mov %edx,0xffffffcc(%ebp) 104d73: eb b3 jmp 104d28 <do_printf+0x58> 104d75: 43 inc %ebx 104d76: 80 f9 46 cmp $0x46,%cl 104d79: 0f 84 3c 02 00 00 je 104fbb <do_printf+0x2eb> 104d7f: 80 f9 4e cmp $0x4e,%cl 104d82: 74 a4 je 104d28 <do_printf+0x58> 104d84: 80 f9 6c cmp $0x6c,%cl 104d87: 0f 84 25 02 00 00 je 104fb2 <do_printf+0x2e2> 104d8d: 80 f9 68 cmp $0x68,%cl 104d90: 0f 84 13 02 00 00 je 104fa9 <do_printf+0x2d9> 104d96: 89 f6 mov %esi,%esi 104d98: 0f be c1 movsbl %cl,%eax 104d9b: 83 e8 58 sub $0x58,%eax 104d9e: 83 f8 20 cmp $0x20,%eax 104da1: 8d 7d e7 lea 0xffffffe7(%ebp),%edi 104da4: c6 45 e7 00 movb $0x0,0xffffffe7(%ebp) 104da8: 0f 87 2e 01 00 00 ja 104edc <do_printf+0x20c> 104dae: ff 24 85 90 63 10 00 jmp *0x106390(,%eax,4) 104db5: 83 4d d4 02 orl $0x2,0xffffffd4(%ebp) 104db9: bb 10 00 00 00 mov $0x10,%ebx 104dbe: f6 45 d4 08 testb $0x8,0xffffffd4(%ebp) 104dc2: 0f 85 8c 01 00 00 jne 104f54 <do_printf+0x284> 104dc8: f6 45 d4 10 testb $0x10,0xffffffd4(%ebp) 104dcc: 0f 84 6d 01 00 00 je 104f3f <do_printf+0x26f> 104dd2: f6 45 d4 04 testb $0x4,0xffffffd4(%ebp) 104dd6: 0f 84 53 01 00 00 je 104f2f <do_printf+0x25f> 104ddc: 83 45 0c 04 addl $0x4,0xc(%ebp) 104de0: 8b 45 0c mov 0xc(%ebp),%eax 104de3: 0f bf 48 fc movswl 0xfffffffc(%eax),%ecx 104de7: f6 45 d4 04 testb $0x4,0xffffffd4(%ebp) 104deb: 74 08 je 104df5 <do_printf+0x125> 104ded: 85 c9 test %ecx,%ecx 104def: 0f 88 2f 01 00 00 js 104f24 <do_printf+0x254> 104df5: 8b 45 d4 mov 0xffffffd4(%ebp),%eax 104df8: 83 e0 02 and $0x2,%eax 104dfb: 89 45 c8 mov %eax,0xffffffc8(%ebp) 104dfe: 89 f6 mov %esi,%esi 104e00: 31 d2 xor %edx,%edx 104e02: 89 c8 mov %ecx,%eax 104e04: f7 f3 div %ebx 104e06: 4f dec %edi 104e07: 83 fa 09 cmp $0x9,%edx 104e0a: 8d 42 30 lea 0x30(%edx),%eax 104e0d: 76 11 jbe 104e20 <do_printf+0x150> 104e0f: 8b 45 c8 mov 0xffffffc8(%ebp),%eax 104e12: 85 c0 test %eax,%eax 104e14: 0f 84 02 01 00 00 je 104f1c <do_printf+0x24c> 104e1a: 8d 42 37 lea 0x37(%edx),%eax 104e1d: 8d 76 00 lea 0x0(%esi),%esi 104e20: 31 d2 xor %edx,%edx 104e22: 88 07 mov %al,(%edi) 104e24: 89 c8 mov %ecx,%eax 104e26: f7 f3 div %ebx 104e28: 85 c0 test %eax,%eax 104e2a: 89 c1 mov %eax,%ecx 104e2c: 75 d2 jne 104e00 <do_printf+0x130> 104e2e: 83 ec 0c sub $0xc,%esp 104e31: 57 push %edi 104e32: e8 21 03 00 00 call 105158 <strlen> 104e37: 83 c4 10 add $0x10,%esp 104e3a: f6 45 d4 20 testb $0x20,0xffffffd4(%ebp) 104e3e: 89 c3 mov %eax,%ebx 104e40: 74 01 je 104e43 <do_printf+0x173> 104e42: 43 inc %ebx 104e43: 8b 45 d4 mov 0xffffffd4(%ebp),%eax 104e46: 83 e0 60 and $0x60,%eax 104e49: 83 f8 60 cmp $0x60,%eax 104e4c: 0f 84 b3 00 00 00 je 104f05 <do_printf+0x235> 104e52: f6 45 d4 01 testb $0x1,0xffffffd4(%ebp) 104e56: 75 31 jne 104e89 <do_printf+0x1b9> 104e58: 39 5d cc cmp %ebx,0xffffffcc(%ebp) 104e5b: 76 2c jbe 104e89 <do_printf+0x1b9> 104e5d: 8d 76 00 lea 0x0(%esi),%esi 104e60: 83 ec 08 sub $0x8,%esp 104e63: 8d 45 14 lea 0x14(%ebp),%eax 104e66: f6 45 d4 40 testb $0x40,0xffffffd4(%ebp) 104e6a: 50 push %eax 104e6b: b8 30 00 00 00 mov $0x30,%eax 104e70: 75 05 jne 104e77 <do_printf+0x1a7> 104e72: b8 20 00 00 00 mov $0x20,%eax 104e77: 50 push %eax 104e78: ff 55 10 call *0x10(%ebp) 104e7b: ff 4d cc decl 0xffffffcc(%ebp) 104e7e: ff 45 d0 incl 0xffffffd0(%ebp) 104e81: 83 c4 10 add $0x10,%esp 104e84: 39 5d cc cmp %ebx,0xffffffcc(%ebp) 104e87: 77 d7 ja 104e60 <do_printf+0x190> 104e89: 83 65 d4 60 andl $0x60,0xffffffd4(%ebp) 104e8d: 83 7d d4 20 cmpl $0x20,0xffffffd4(%ebp) 104e91: 74 5e je 104ef1 <do_printf+0x221> 104e93: 8a 07 mov (%edi),%al 104e95: 84 c0 test %al,%al 104e97: 74 1e je 104eb7 <do_printf+0x1e7> 104e99: 8d 76 00 lea 0x0(%esi),%esi 104e9c: 83 ec 08 sub $0x8,%esp 104e9f: 8d 55 14 lea 0x14(%ebp),%edx 104ea2: 52 push %edx 104ea3: 0f b6 c0 movzbl %al,%eax 104ea6: 50 push %eax 104ea7: ff 55 10 call *0x10(%ebp) 104eaa: 47 inc %edi 104eab: ff 45 d0 incl 0xffffffd0(%ebp) 104eae: 8a 07 mov (%edi),%al 104eb0: 83 c4 10 add $0x10,%esp 104eb3: 84 c0 test %al,%al 104eb5: 75 e5 jne 104e9c <do_printf+0x1cc> 104eb7: 39 5d cc cmp %ebx,0xffffffcc(%ebp) 104eba: 72 20 jb 104edc <do_printf+0x20c> 104ebc: 29 5d cc sub %ebx,0xffffffcc(%ebp) 104ebf: 74 1b je 104edc <do_printf+0x20c> 104ec1: 8d 76 00 lea 0x0(%esi),%esi 104ec4: 83 ec 08 sub $0x8,%esp 104ec7: 8d 45 14 lea 0x14(%ebp),%eax 104eca: 50 push %eax 104ecb: 6a 20 push $0x20 104ecd: ff 55 10 call *0x10(%ebp) 104ed0: ff 45 d0 incl 0xffffffd0(%ebp) 104ed3: 83 c4 10 add $0x10,%esp 104ed6: ff 4d cc decl 0xffffffcc(%ebp) 104ed9: 75 e9 jne 104ec4 <do_printf+0x1f4> 104edb: 90 nop 104edc: c7 45 cc 00 00 00 00 movl $0x0,0xffffffcc(%ebp) 104ee3: c7 45 d4 00 00 00 00 movl $0x0,0xffffffd4(%ebp) 104eea: 31 db xor %ebx,%ebx 104eec: e9 37 fe ff ff jmp 104d28 <do_printf+0x58> 104ef1: 83 ec 08 sub $0x8,%esp 104ef4: 8d 55 14 lea 0x14(%ebp),%edx 104ef7: 52 push %edx 104ef8: 6a 2d push $0x2d 104efa: ff 55 10 call *0x10(%ebp) 104efd: ff 45 d0 incl 0xffffffd0(%ebp) 104f00: 83 c4 10 add $0x10,%esp 104f03: eb 8e jmp 104e93 <do_printf+0x1c3> 104f05: 83 ec 08 sub $0x8,%esp 104f08: 8d 55 14 lea 0x14(%ebp),%edx 104f0b: 52 push %edx 104f0c: 6a 2d push $0x2d 104f0e: ff 55 10 call *0x10(%ebp) 104f11: ff 45 d0 incl 0xffffffd0(%ebp) 104f14: 83 c4 10 add $0x10,%esp 104f17: e9 36 ff ff ff jmp 104e52 <do_printf+0x182> 104f1c: 8d 42 57 lea 0x57(%edx),%eax 104f1f: e9 fc fe ff ff jmp 104e20 <do_printf+0x150> 104f24: 83 4d d4 20 orl $0x20,0xffffffd4(%ebp) 104f28: f7 d9 neg %ecx 104f2a: e9 c6 fe ff ff jmp 104df5 <do_printf+0x125> 104f2f: 83 45 0c 04 addl $0x4,0xc(%ebp) 104f33: 8b 55 0c mov 0xc(%ebp),%edx 104f36: 0f b7 4a fc movzwl 0xfffffffc(%edx),%ecx 104f3a: e9 a8 fe ff ff jmp 104de7 <do_printf+0x117> 104f3f: f6 45 d4 04 testb $0x4,0xffffffd4(%ebp) 104f43: 74 0f je 104f54 <do_printf+0x284> 104f45: 83 45 0c 04 addl $0x4,0xc(%ebp) 104f49: 8b 45 0c mov 0xc(%ebp),%eax 104f4c: 8b 48 fc mov 0xfffffffc(%eax),%ecx 104f4f: e9 93 fe ff ff jmp 104de7 <do_printf+0x117> 104f54: 83 45 0c 04 addl $0x4,0xc(%ebp) 104f58: 8b 55 0c mov 0xc(%ebp),%edx 104f5b: 8b 4a fc mov 0xfffffffc(%edx),%ecx 104f5e: e9 84 fe ff ff jmp 104de7 <do_printf+0x117> 104f63: 83 45 0c 04 addl $0x4,0xc(%ebp) 104f67: 83 65 d4 bf andl $0xffffffbf,0xffffffd4(%ebp) 104f6b: 8b 55 0c mov 0xc(%ebp),%edx 104f6e: 4f dec %edi 104f6f: 8a 42 fc mov 0xfffffffc(%edx),%al 104f72: bb 01 00 00 00 mov $0x1,%ebx 104f77: 88 07 mov %al,(%edi) 104f79: e9 d4 fe ff ff jmp 104e52 <do_printf+0x182> 104f7e: 83 4d d4 04 orl $0x4,0xffffffd4(%ebp) 104f82: bb 0a 00 00 00 mov $0xa,%ebx 104f87: e9 32 fe ff ff jmp 104dbe <do_printf+0xee> 104f8c: bb 08 00 00 00 mov $0x8,%ebx 104f91: e9 28 fe ff ff jmp 104dbe <do_printf+0xee> 104f96: 83 45 0c 04 addl $0x4,0xc(%ebp) 104f9a: 8b 45 0c mov 0xc(%ebp),%eax 104f9d: 83 65 d4 bf andl $0xffffffbf,0xffffffd4(%ebp) 104fa1: 8b 78 fc mov 0xfffffffc(%eax),%edi 104fa4: e9 85 fe ff ff jmp 104e2e <do_printf+0x15e> 104fa9: 83 4d d4 10 orl $0x10,0xffffffd4(%ebp) 104fad: e9 76 fd ff ff jmp 104d28 <do_printf+0x58> 104fb2: 83 4d d4 08 orl $0x8,0xffffffd4(%ebp) 104fb6: e9 6d fd ff ff jmp 104d28 <do_printf+0x58> 104fbb: 81 4d d4 80 00 00 00 orl $0x80,0xffffffd4(%ebp) 104fc2: e9 61 fd ff ff jmp 104d28 <do_printf+0x58> 104fc7: 83 4d d4 40 orl $0x40,0xffffffd4(%ebp) 104fcb: 46 inc %esi 104fcc: 8a 0e mov (%esi),%cl 104fce: e9 89 fd ff ff jmp 104d5c <do_printf+0x8c> 104fd3: f6 45 d4 01 testb $0x1,0xffffffd4(%ebp) 104fd7: 0f 85 ff fe ff ff jne 104edc <do_printf+0x20c> 104fdd: 83 4d d4 01 orl $0x1,0xffffffd4(%ebp) 104fe1: e9 42 fd ff ff jmp 104d28 <do_printf+0x58> 104fe6: 83 ec 08 sub $0x8,%esp 104fe9: 8d 55 14 lea 0x14(%ebp),%edx 104fec: 52 push %edx 104fed: 6a 25 push $0x25 104fef: ff 55 10 call *0x10(%ebp) 104ff2: 31 db xor %ebx,%ebx 104ff4: ff 45 d0 incl 0xffffffd0(%ebp) 104ff7: c7 45 cc 00 00 00 00 movl $0x0,0xffffffcc(%ebp) 104ffe: c7 45 d4 00 00 00 00 movl $0x0,0xffffffd4(%ebp) 105005: e9 18 fd ff ff jmp 104d22 <do_printf+0x52> ... 0010500c <enable>: /***************************************************************************** *****************************************************************************/ void enable(void) { 10500c: 55 push %ebp 10500d: 89 e5 mov %esp,%ebp __asm__ __volatile__("sti" 10500f: fb sti : : ); } 105010: c9 leave 105011: c3 ret ... 00105014 <inportb>: /***************************************************************************** *****************************************************************************/ unsigned inportb(unsigned short port) { 105014: 55 push %ebp 105015: 89 e5 mov %esp,%ebp 105017: 8b 55 08 mov 0x8(%ebp),%edx unsigned char ret_val; __asm__ __volatile__("inb %1,%0" 10501a: ec in (%dx),%al : "=a"(ret_val) : "d"(port)); return ret_val; 10501b: 0f b6 c0 movzbl %al,%eax } 10501e: c9 leave 10501f: c3 ret 00105020 <longjmp>: 4. Save/restore the floating-point state when entering/leaving the kernel (protected OS only) *****************************************************************************/ void longjmp(jmp_buf buf, int ret_val) { 105020: 55 push %ebp 105021: 89 e5 mov %esp,%ebp 105023: 8b 45 0c mov 0xc(%ebp),%eax unsigned *esp; /* make sure return value is not 0 */ if(ret_val == 0) 105026: 85 c0 test %eax,%eax 105028: 75 05 jne 10502f <longjmp+0xf> ret_val++; 10502a: b8 01 00 00 00 mov $0x1,%eax /* EAX is used for return values, so store it in jmp_buf.EAX */ buf->eax = ret_val; 10502f: 8b 4d 08 mov 0x8(%ebp),%ecx 105032: 89 41 1c mov %eax,0x1c(%ecx) /* get ESP for new stack */ esp = (unsigned *)buf->esp; /* push EFLAGS on the new stack */ esp--; 105035: 8b 41 0c mov 0xc(%ecx),%eax 105038: 83 e8 04 sub $0x4,%eax *esp = buf->eflags; 10503b: 8b 51 24 mov 0x24(%ecx),%edx 10503e: 89 10 mov %edx,(%eax) /* push current CS on the new stack */ esp--; 105040: 83 e8 04 sub $0x4,%eax __asm__ __volatile__( 105043: 8c 08 movl %cs,(%eax) "mov %%cs,%0\n" : "=m"(*esp)); /* push EIP on the new stack */ esp--; 105045: 83 e8 04 sub $0x4,%eax *esp = buf->eip; 105048: 8b 51 20 mov 0x20(%ecx),%edx 10504b: 89 10 mov %edx,(%eax) /* new ESP is 12 bytes lower; update jmp_buf.ESP */ buf->esp = (unsigned)esp; 10504d: 89 41 0c mov %eax,0xc(%ecx) /* now, briefly, make the jmp_buf struct our stack */ __asm__ __volatile__( 105050: 8b 65 08 mov 0x8(%ebp),%esp 105053: 61 popa 105054: 8b 64 24 ec mov 0xffffffec(%esp,1),%esp 105058: cf iret "movl %0,%%esp\n" /* ESP now points to 8 general-purpose registers stored in jmp_buf Pop them */ "popa\n" /* load new stack pointer from jmp_buf */ "movl -20(%%esp),%%esp\n" /* ESP now points to new stack, with the IRET frame (EIP, CS, EFLAGS) we created just above. Pop these registers: */ "iret\n" : : "m"(buf)); } 105059: c9 leave 10505a: c3 ret ... 0010505c <memcpy>: void *memcpy(void *s, const void *t, unsigned n) { 10505c: 55 push %ebp 10505d: 89 e5 mov %esp,%ebp void *ret = s; while(n--) 10505f: 8b 55 10 mov 0x10(%ebp),%edx 105062: 56 push %esi 105063: 4a dec %edx 105064: 53 push %ebx 105065: 83 fa ff cmp $0xffffffff,%edx 105068: 8b 5d 08 mov 0x8(%ebp),%ebx 10506b: 8b 4d 0c mov 0xc(%ebp),%ecx 10506e: 89 de mov %ebx,%esi 105070: 74 0e je 105080 <memcpy+0x24> 105072: 89 f6 mov %esi,%esi { *(char *)s = *(char *)t; 105074: 8a 01 mov (%ecx),%al s = (char *)s + 1; t = (char *)t + 1; 105076: 4a dec %edx 105077: 88 03 mov %al,(%ebx) 105079: 41 inc %ecx 10507a: 43 inc %ebx 10507b: 83 fa ff cmp $0xffffffff,%edx 10507e: 75 f4 jne 105074 <memcpy+0x18> } return ret; } 105080: 5b pop %ebx 105081: 89 f0 mov %esi,%eax 105083: 5e pop %esi 105084: c9 leave 105085: c3 ret ... 00105088 <memsetw>: void *memsetw(void *s, short i, unsigned n) { 105088: 55 push %ebp 105089: 89 e5 mov %esp,%ebp void *start = s; while(n--) 10508b: 8b 55 10 mov 0x10(%ebp),%edx 10508e: 4a dec %edx 10508f: 8b 4d 08 mov 0x8(%ebp),%ecx 105092: 83 fa ff cmp $0xffffffff,%edx 105095: 53 push %ebx 105096: 8b 45 0c mov 0xc(%ebp),%eax 105099: 89 cb mov %ecx,%ebx 10509b: 74 0f je 1050ac <memsetw+0x24> 10509d: 8d 76 00 lea 0x0(%esi),%esi { *(short *)s = (short)i; s = (short *)s + 1; 1050a0: 4a dec %edx 1050a1: 66 89 01 mov %ax,(%ecx) 1050a4: 83 c1 02 add $0x2,%ecx 1050a7: 83 fa ff cmp $0xffffffff,%edx 1050aa: 75 f4 jne 1050a0 <memsetw+0x18> } return(start); } 1050ac: 89 d8 mov %ebx,%eax 1050ae: 5b pop %ebx 1050af: c9 leave 1050b0: c3 ret 1050b1: 00 00 add %al,(%eax) ... 001050b4 <outportb>: /***************************************************************************** *****************************************************************************/ void outportb(unsigned port, unsigned val) { 1050b4: 55 push %ebp 1050b5: 89 e5 mov %esp,%ebp 1050b7: 8b 55 08 mov 0x8(%ebp),%edx 1050ba: 8b 45 0c mov 0xc(%ebp),%eax __asm__ __volatile__("outb %b0,%w1" 1050bd: ee out %al,(%dx) : : "a"(val), "d"(port)); } 1050be: c9 leave 1050bf: c3 ret 001050c0 <printf_help>: int do_printf(const char *fmt, va_list args, fnptr_t fn, void *ptr); void putch(unsigned c); int printf_help(unsigned c, void **ptr) { 1050c0: 55 push %ebp 1050c1: 89 e5 mov %esp,%ebp 1050c3: 83 ec 14 sub $0x14,%esp /** * Leave this for now */ ptr = ptr; putch(c); 1050c6: ff 75 08 pushl 0x8(%ebp) 1050c9: e8 32 fa ff ff call 104b00 <putch> return 0; } 1050ce: 31 c0 xor %eax,%eax 1050d0: c9 leave 1050d1: c3 ret 1050d2: 89 f6 mov %esi,%esi 001050d4 <printf>: void printf(const char *fmt, ...) { 1050d4: 55 push %ebp 1050d5: 89 e5 mov %esp,%ebp 1050d7: 83 ec 08 sub $0x8,%esp va_list args; va_start(args, fmt); (void)do_printf(fmt, args, printf_help, NULL); 1050da: 6a 00 push $0x0 1050dc: 68 c0 50 10 00 push $0x1050c0 1050e1: 8d 45 0c lea 0xc(%ebp),%eax 1050e4: 50 push %eax 1050e5: ff 75 08 pushl 0x8(%ebp) 1050e8: e8 e3 fb ff ff call 104cd0 <do_printf> va_end(args); } 1050ed: c9 leave 1050ee: c3 ret ... 001050f0 <strcmp>: int strcmp(const char * src, const char * dst) { 1050f0: 55 push %ebp 1050f1: 89 e5 mov %esp,%ebp 1050f3: 56 push %esi 1050f4: 53 push %ebx 1050f5: 8b 5d 0c mov 0xc(%ebp),%ebx 1050f8: 8b 75 08 mov 0x8(%ebp),%esi int ret = 0 ; while(!(ret = *(unsigned char *)src - *(unsigned char *)dst) && *dst) 1050fb: 8a 0b mov (%ebx),%cl 1050fd: 0f b6 c1 movzbl %cl,%eax 105100: 0f b6 16 movzbl (%esi),%edx 105103: 29 c2 sub %eax,%edx 105105: 89 d0 mov %edx,%eax 105107: 75 1b jne 105124 <strcmp+0x34> 105109: 84 c9 test %cl,%cl 10510b: 74 17 je 105124 <strcmp+0x34> 10510d: 8d 76 00 lea 0x0(%esi),%esi ++src, ++dst; 105110: 43 inc %ebx 105111: 46 inc %esi 105112: 8a 0b mov (%ebx),%cl 105114: 0f b6 c1 movzbl %cl,%eax 105117: 0f b6 16 movzbl (%esi),%edx 10511a: 29 c2 sub %eax,%edx 10511c: 89 d0 mov %edx,%eax 10511e: 75 04 jne 105124 <strcmp+0x34> 105120: 84 c9 test %cl,%cl 105122: 75 ec jne 105110 <strcmp+0x20> if(ret < 0) 105124: 85 c0 test %eax,%eax 105126: 78 0d js 105135 <strcmp+0x45> ret = -1 ; else if(ret > 0) 105128: 85 c0 test %eax,%eax 10512a: 7e 05 jle 105131 <strcmp+0x41> ret = 1 ; 10512c: b8 01 00 00 00 mov $0x1,%eax return(ret); } 105131: 5b pop %ebx 105132: 5e pop %esi 105133: c9 leave 105134: c3 ret 105135: b8 ff ff ff ff mov $0xffffffff,%eax 10513a: eb f5 jmp 105131 <strcmp+0x41> 0010513c <strcpy>: char *strcpy(char *s, const char *t) { 10513c: 55 push %ebp 10513d: 89 e5 mov %esp,%ebp 10513f: 8b 4d 08 mov 0x8(%ebp),%ecx 105142: 8b 55 0c mov 0xc(%ebp),%edx 105145: 8d 76 00 lea 0x0(%esi),%esi while((*(s++) = *(t++))); 105148: 8a 02 mov (%edx),%al 10514a: 88 01 mov %al,(%ecx) 10514c: 42 inc %edx 10514d: 41 inc %ecx 10514e: 84 c0 test %al,%al 105150: 75 f6 jne 105148 <strcpy+0xc> return s; } 105152: 89 c8 mov %ecx,%eax 105154: c9 leave 105155: c3 ret ... 00105158 <strlen>: #include <string.h> /* size_t */ /***************************************************************************** *****************************************************************************/ size_t strlen(const char *str) { 105158: 55 push %ebp 105159: 89 e5 mov %esp,%ebp 10515b: 8b 55 08 mov 0x8(%ebp),%edx size_t ret_val; for(ret_val = 0; *str != '\0'; str++) 10515e: 31 c0 xor %eax,%eax 105160: 80 3a 00 cmpb $0x0,(%edx) 105163: 74 0a je 10516f <strlen+0x17> 105165: 8d 76 00 lea 0x0(%esi),%esi 105168: 42 inc %edx ret_val++; 105169: 40 inc %eax 10516a: 80 3a 00 cmpb $0x0,(%edx) 10516d: 75 f9 jne 105168 <strlen+0x10> return ret_val; } 10516f: c9 leave 105170: c3 ret 105171: 00 00 add %al,(%eax) ... 00105174 <strncpy>: #include <string.h> /* size_t */ char *strncpy(char * dest, const char * source, size_t count) { 105174: 55 push %ebp 105175: 89 e5 mov %esp,%ebp 105177: 8b 55 10 mov 0x10(%ebp),%edx 10517a: 56 push %esi char *start = dest; while(count && (*dest++ = *source++)) /* copy string */ 10517b: 85 d2 test %edx,%edx 10517d: 53 push %ebx 10517e: 8b 75 08 mov 0x8(%ebp),%esi 105181: 8b 5d 0c mov 0xc(%ebp),%ebx 105184: 74 2a je 1051b0 <strncpy+0x3c> 105186: 8a 03 mov (%ebx),%al 105188: 43 inc %ebx 105189: 84 c0 test %al,%al 10518b: 88 06 mov %al,(%esi) 10518d: 8d 4e 01 lea 0x1(%esi),%ecx 105190: 74 0f je 1051a1 <strncpy+0x2d> 105192: 89 f6 mov %esi,%esi count--; 105194: 4a dec %edx 105195: 74 19 je 1051b0 <strncpy+0x3c> 105197: 8a 03 mov (%ebx),%al 105199: 88 01 mov %al,(%ecx) 10519b: 43 inc %ebx 10519c: 41 inc %ecx 10519d: 84 c0 test %al,%al 10519f: 75 f3 jne 105194 <strncpy+0x20> if(count) /* pad out with zeroes */ 1051a1: 85 d2 test %edx,%edx 1051a3: 74 0b je 1051b0 <strncpy+0x3c> while(--count) 1051a5: 4a dec %edx 1051a6: 74 08 je 1051b0 <strncpy+0x3c> *dest++ = '\0'; 1051a8: c6 01 00 movb $0x0,(%ecx) 1051ab: 41 inc %ecx 1051ac: 4a dec %edx 1051ad: 75 f9 jne 1051a8 <strncpy+0x34> 1051af: 90 nop return(start); } 1051b0: 5b pop %ebx 1051b1: 89 f0 mov %esi,%eax 1051b3: 5e pop %esi 1051b4: c9 leave 1051b5: c3 ret 1051b6: 5b pop %ebx 1051b7: 20 00 and %al,(%eax) 1051b9: 25 73 3a 20 25 and $0x25203a73,%eax 1051be: 73 00 jae 1051c0 <strncpy+0x4c> 1051c0: 20 5d 00 and %bl,0x0(%ebp) 1051c3: 57 push %edi 1051c4: 61 popa 1051c5: 69 74 00 08 08 08 08 imul $0x46080808,0x8(%eax,%eax,1),%esi 1051cc: 46 1051cd: 61 popa 1051ce: 69 6c 0a 00 08 08 08 imul $0x8080808,0x0(%edx,%ecx,1),%ebp 1051d5: 08 1051d6: 2e 2e 00 4f 6b add %cl,%cs:0x6b(%edi) 1051db: 0a 00 or (%eax),%al 1051dd: 25 30 32 58 20 and $0x20583230,%eax 1051e2: 00 09 add %cl,(%ecx) 1051e4: 00 25 63 00 75 53 add %ah,0x53750063 1051ea: 50 push %eax 1051eb: 3d 25 30 38 58 cmp $0x58383025,%eax 1051f0: 20 75 53 and %dh,0x53(%ebp) 1051f3: 53 push %ebx 1051f4: 3d 25 30 38 58 cmp $0x58383025,%eax 1051f9: 0a 00 or (%eax),%al 1051fb: 00 00 add %al,(%eax) 1051fd: 00 00 add %al,(%eax) 1051ff: 00 45 44 add %al,0x44(%ebp) 105202: 49 dec %ecx 105203: 3d 25 30 38 58 cmp $0x58383025,%eax 105208: 20 45 53 and %al,0x53(%ebp) 10520b: 49 dec %ecx 10520c: 3d 25 30 38 58 cmp $0x58383025,%eax 105211: 20 45 42 and %al,0x42(%ebp) 105214: 50 push %eax 105215: 3d 25 30 38 58 cmp $0x58383025,%eax 10521a: 20 45 53 and %al,0x53(%ebp) 10521d: 50 push %eax 10521e: 3d 25 30 38 58 cmp $0x58383025,%eax 105223: 0a 00 or (%eax),%al ... 10523d: 00 00 add %al,(%eax) 10523f: 00 45 42 add %al,0x42(%ebp) 105242: 58 pop %eax 105243: 3d 25 30 38 58 cmp $0x58383025,%eax 105248: 20 45 44 and %al,0x44(%ebp) 10524b: 58 pop %eax 10524c: 3d 25 30 38 58 cmp $0x58383025,%eax 105251: 20 45 43 and %al,0x43(%ebp) 105254: 58 pop %eax 105255: 3d 25 30 38 58 cmp $0x58383025,%eax 10525a: 20 45 41 and %al,0x41(%ebp) 10525d: 58 pop %eax 10525e: 3d 25 30 38 58 cmp $0x58383025,%eax 105263: 0a 00 or (%eax),%al ... 10527d: 00 00 add %al,(%eax) 10527f: 00 20 add %ah,(%eax) 105281: 44 inc %esp 105282: 53 push %ebx 105283: 3d 25 30 38 58 cmp $0x58383025,%eax 105288: 20 20 and %ah,(%eax) 10528a: 45 inc %ebp 10528b: 53 push %ebx 10528c: 3d 25 30 38 58 cmp $0x58383025,%eax 105291: 20 20 and %ah,(%eax) 105293: 46 inc %esi 105294: 53 push %ebx 105295: 3d 25 30 38 58 cmp $0x58383025,%eax 10529a: 20 20 and %ah,(%eax) 10529c: 47 inc %edi 10529d: 53 push %ebx 10529e: 3d 25 30 38 58 cmp $0x58383025,%eax 1052a3: 0a 00 or (%eax),%al ... 1052bd: 00 00 add %al,(%eax) 1052bf: 00 69 6e add %ch,0x6e(%ecx) 1052c2: 74 3d je 105301 <strncpy+0x18d> 1052c4: 25 30 38 58 20 and $0x20583830,%eax 1052c9: 65 gs 1052ca: 72 72 jb 10533e <strncpy+0x1ca> 1052cc: 3d 25 30 38 58 cmp $0x58383025,%eax 1052d1: 20 45 49 and %al,0x49(%ebp) 1052d4: 50 push %eax 1052d5: 3d 25 30 38 58 cmp $0x58383025,%eax 1052da: 20 20 and %ah,(%eax) 1052dc: 43 inc %ebx 1052dd: 53 push %ebx 1052de: 3d 25 30 38 58 cmp $0x58383025,%eax 1052e3: 0a 00 or (%eax),%al ... 1052fd: 00 00 add %al,(%eax) 1052ff: 00 64 75 6d add %ah,0x6d(%ebp,%esi,2) 105303: 70 68 jo 10536d <strncpy+0x1f9> 105305: 65 gs 105306: 61 popa 105307: 70 00 jo 105309 <strncpy+0x195> 105309: 00 2d 68 00 00 00 add %ch,0x68 ... 10531f: 00 50 72 add %dl,0x72(%eax) 105322: 69 6e 74 20 6c 69 73 imul $0x73696c20,0x74(%esi),%ebp 105329: 74 69 je 105394 <strncpy+0x220> 10532b: 6e outsb %ds:(%esi),(%dx) 10532c: 67 20 6f 66 addr16 and %ch,102(%bx) 105330: 20 68 65 and %ch,0x65(%eax) 105333: 61 popa 105334: 70 20 jo 105356 <strncpy+0x1e2> 105336: 75 73 jne 1053ab <strncpy+0x237> 105338: 61 popa 105339: 67 65 20 61 6e addr16 and %ah,%gs:110(%bx,%di) 10533e: 64 20 73 74 and %dh,%fs:0x74(%ebx) 105342: 61 popa 105343: 74 75 je 1053ba <strncpy+0x246> 105345: 73 2e jae 105375 <strncpy+0x201> 105347: 00 00 add %al,(%eax) 105349: 65 63 68 6f arpl %bp,%gs:0x6f(%eax) ... 10535d: 00 00 add %al,(%eax) 10535f: 00 45 63 add %al,0x63(%ebp) 105362: 68 6f 20 61 20 push $0x2061206f 105367: 6c insb (%dx),%es:(%edi) 105368: 69 6e 65 20 6f 66 20 imul $0x20666f20,0x65(%esi),%ebp 10536f: 74 65 je 1053d6 <strncpy+0x262> 105371: 78 74 js 1053e7 <strncpy+0x273> 105373: 20 74 6f 20 and %dh,0x20(%edi,%ebp,2) 105377: 74 68 je 1053e1 <strncpy+0x26d> 105379: 65 20 74 65 72 and %dh,%gs:0x72(%ebp,2) 10537e: 6d insl (%dx),%es:(%edi) 10537f: 69 6e 61 6c 2e 00 00 imul $0x2e6c,0x61(%esi),%ebp 105386: 68 65 6c 70 00 push $0x706c65 ... 10539f: 00 44 69 73 add %al,0x73(%ecx,%ebp,2) 1053a3: 70 6c jo 105411 <strncpy+0x29d> 1053a5: 61 popa 1053a6: 79 73 jns 10541b <strncpy+0x2a7> 1053a8: 20 67 65 and %ah,0x65(%edi) 1053ab: 6e outsb %ds:(%esi),(%dx) 1053ac: 65 gs 1053ad: 72 61 jb 105410 <strncpy+0x29c> 1053af: 6c insb (%dx),%es:(%edi) 1053b0: 20 68 65 and %ch,0x65(%eax) 1053b3: 6c insb (%dx),%es:(%edi) 1053b4: 70 20 jo 1053d6 <strncpy+0x262> 1053b6: 6d insl (%dx),%es:(%edi) 1053b7: 65 6e outsb %gs:(%esi),(%dx) 1053b9: 75 20 jne 1053db <strncpy+0x267> 1053bb: 6f outsl %ds:(%esi),(%dx) 1053bc: 72 20 jb 1053de <strncpy+0x26a> 1053be: 68 65 6c 70 20 push $0x20706c65 1053c3: 6f outsl %ds:(%esi),(%dx) 1053c4: 6e outsb %ds:(%esi),(%dx) 1053c5: 20 73 70 and %dh,0x70(%ebx) 1053c8: 65 63 69 66 arpl %bp,%gs:0x66(%ecx) 1053cc: 69 63 20 63 6f 6d 6d imul $0x6d6d6f63,0x20(%ebx),%esp 1053d3: 61 popa 1053d4: 6e outsb %ds:(%esi),(%dx) 1053d5: 64 2e 00 00 add %al,%cs:%fs:(%eax) 1053d9: 73 68 jae 105443 <strncpy+0x2cf> 1053db: 75 74 jne 105451 <strncpy+0x2dd> 1053dd: 64 6f outsl %fs:(%esi),(%dx) 1053df: 77 6e ja 10544f <strncpy+0x2db> 1053e1: 00 00 add %al,(%eax) 1053e3: 2d 72 00 00 4e sub $0x4e000072,%eax 1053e8: 4f dec %edi 1053e9: 57 push %edi 1053ea: 00 00 add %al,(%eax) 1053ec: 48 dec %eax 1053ed: 61 popa 1053ee: 6c insb (%dx),%es:(%edi) 1053ef: 74 20 je 105411 <strncpy+0x29d> 1053f1: 6f outsl %ds:(%esi),(%dx) 1053f2: 72 20 jb 105414 <strncpy+0x2a0> 1053f4: 72 65 jb 10545b <strncpy+0x2e7> 1053f6: 73 74 jae 10546c <strncpy+0x2f8> 1053f8: 61 popa 1053f9: 72 74 jb 10546f <strncpy+0x2fb> 1053fb: 20 74 68 65 and %dh,0x65(%eax,%ebp,2) 1053ff: 20 73 79 and %dh,0x79(%ebx) 105402: 73 74 jae 105478 <strncpy+0x304> 105404: 65 gs 105405: 6d insl (%dx),%es:(%edi) 105406: 2e 00 00 add %al,%cs:(%eax) 105409: 63 6c 73 00 arpl %bp,0x0(%ebx,%esi,2) ... 10541d: 00 00 add %al,(%eax) 10541f: 00 43 6c add %al,0x6c(%ebx) 105422: 65 gs 105423: 61 popa 105424: 72 73 jb 105499 <strncpy+0x325> 105426: 20 74 68 65 and %dh,0x65(%eax,%ebp,2) 10542a: 20 74 65 72 and %dh,0x72(%ebp,2) 10542e: 6d insl (%dx),%es:(%edi) 10542f: 69 6e 61 6c 20 6f 66 imul $0x666f206c,0x61(%esi),%ebp 105436: 20 61 6c and %ah,0x6c(%ecx) 105439: 6c insb (%dx),%es:(%edi) 10543a: 20 6f 75 and %ch,0x75(%edi) 10543d: 74 70 je 1054af <strncpy+0x33b> 10543f: 75 74 jne 1054b5 <strncpy+0x341> 105441: 2e 00 00 add %al,%cs:(%eax) 105444: 70 77 jo 1054bd <strncpy+0x349> 105446: 64 00 00 add %al,%fs:(%eax) ... 10545d: 00 00 add %al,(%eax) 10545f: 00 50 72 add %dl,0x72(%eax) 105462: 69 6e 74 73 20 74 68 imul $0x68742073,0x74(%esi),%ebp 105469: 65 20 63 75 and %ah,%gs:0x75(%ebx) 10546d: 72 72 jb 1054e1 <strncpy+0x36d> 10546f: 65 6e outsb %gs:(%esi),(%dx) 105471: 74 20 je 105493 <strncpy+0x31f> 105473: 77 6f ja 1054e4 <strncpy+0x370> 105475: 72 6b jb 1054e2 <strncpy+0x36e> 105477: 69 6e 67 20 64 69 72 imul $0x72696420,0x67(%esi),%ebp 10547e: 65 63 74 6f 72 arpl %si,%gs:0x72(%edi,%ebp,2) 105483: 79 2e jns 1054b3 <strncpy+0x33f> 105485: 00 00 add %al,(%eax) 105487: 68 65 6c 70 00 push $0x706c65 10548c: 65 gs 10548d: 73 68 jae 1054f7 <strncpy+0x383> 10548f: 3a 20 cmp (%eax),%ah 105491: 27 daa 105492: 25 73 27 20 6e and $0x6e202773,%eax 105497: 6f outsl %ds:(%esi),(%dx) 105498: 74 20 je 1054ba <strncpy+0x346> 10549a: 66 6f outsw %ds:(%esi),(%dx) 10549c: 75 6e jne 10550c <strncpy+0x398> 10549e: 64 2e 0a 00 or %cs:%fs:(%eax),%al 1054a2: 55 push %ebp 1054a3: 73 61 jae 105506 <strncpy+0x392> 1054a5: 67 65 3a 20 addr16 cmp %gs:(%bx,%si),%ah 1054a9: 25 73 20 25 73 and $0x73252073,%eax 1054ae: 0a 00 or (%eax),%al 1054b0: 48 dec %eax 1054b1: 79 62 jns 105515 <strncpy+0x3a1> 1054b3: 4f dec %edi 1054b4: 53 push %ebx 1054b5: 20 45 53 and %al,0x53(%ebp) 1054b8: 68 65 6c 6c 20 push $0x206c6c65 1054bd: 43 inc %ebx 1054be: 6f outsl %ds:(%esi),(%dx) 1054bf: 6d insl (%dx),%es:(%edi) 1054c0: 6d insl (%dx),%es:(%edi) 1054c1: 61 popa 1054c2: 6e outsb %ds:(%esi),(%dx) 1054c3: 64 fs 1054c4: 73 3a jae 105500 <strncpy+0x38c> 1054c6: 0a 00 or (%eax),%al 1054c8: 25 31 30 73 20 and $0x20733031,%eax 1054cd: 25 2d 73 0a 00 and $0xa732d,%eax 1054d2: 08 20 or %ah,(%eax) 1054d4: 08 00 or %al,(%eax) 1054d6: 24 20 and $0x20,%al 1054d8: 00 4f 6b add %cl,0x6b(%edi) 1054db: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1054df: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1054e3: 00 94 09 10 00 c2 09 add %dl,0x9c20010(%ecx,%ecx,1) 1054ea: 10 00 adc %al,(%eax) 1054ec: e3 09 jecxz 1054f7 <strncpy+0x383> 1054ee: 10 00 adc %al,(%eax) 1054f0: 03 0a add (%edx),%ecx 1054f2: 10 00 adc %al,(%eax) 1054f4: 24 0a and $0xa,%al 1054f6: 10 00 adc %al,(%eax) 1054f8: 4a dec %edx 1054f9: 0a 10 or (%eax),%dl 1054fb: 00 71 0a add %dh,0xa(%ecx) 1054fe: 10 00 adc %al,(%eax) 105500: 97 xchg %eax,%edi 105501: 0a 10 or (%eax),%dl 105503: 00 be 0a 10 00 e4 add %bh,0xe400100a(%esi) 105509: 0a 10 or (%eax),%dl 10550b: 00 0b add %cl,(%ebx) 10550d: 0b 10 or (%eax),%edx 10550f: 00 31 add %dh,(%ecx) 105511: 0b 10 or (%eax),%edx 105513: 00 57 0b add %dl,0xb(%edi) 105516: 10 00 adc %al,(%eax) 105518: 64 12 10 adc %fs:(%eax),%dl 10551b: 00 61 0b add %ah,0xb(%ecx) 10551e: 10 00 adc %al,(%eax) 105520: 88 0b mov %cl,(%ebx) 105522: 10 00 adc %al,(%eax) 105524: ae scas %es:(%edi),%al 105525: 0b 10 or (%eax),%edx 105527: 00 d4 add %dl,%ah 105529: 0b 10 or (%eax),%edx 10552b: 00 fb add %bh,%bl 10552d: 0b 10 or (%eax),%edx 10552f: 00 22 add %ah,(%edx) 105531: 0c 10 or $0x10,%al 105533: 00 48 0c add %cl,0xc(%eax) 105536: 10 00 adc %al,(%eax) 105538: 6e outsb %ds:(%esi),(%dx) 105539: 0c 10 or $0x10,%al 10553b: 00 95 0c 10 00 bc add %dl,0xbc00100c(%ebp) 105541: 0c 10 or $0x10,%al 105543: 00 e2 add %ah,%dl 105545: 0c 10 or $0x10,%al 105547: 00 08 add %cl,(%eax) 105549: 0d 10 00 2f 0d or $0xd2f0010,%eax 10554e: 10 00 adc %al,(%eax) 105550: 64 12 10 adc %fs:(%eax),%dl 105553: 00 39 add %bh,(%ecx) 105555: 0d 10 00 60 0d or $0xd600010,%eax 10555a: 10 00 adc %al,(%eax) 10555c: 86 0d 10 00 ac 0d xchg %cl,0xdac0010 105562: 10 00 adc %al,(%eax) 105564: d3 0d 10 00 fa 0d rorl %cl,0xdfa0010 10556a: 10 00 adc %al,(%eax) 10556c: 20 0e and %cl,(%esi) 10556e: 10 00 adc %al,(%eax) 105570: 46 inc %esi 105571: 0e push %cs 105572: 10 00 adc %al,(%eax) 105574: 6d insl (%dx),%es:(%edi) 105575: 0e push %cs 105576: 10 00 adc %al,(%eax) 105578: 94 xchg %eax,%esp 105579: 0e push %cs 10557a: 10 00 adc %al,(%eax) 10557c: ba 0e 10 00 e0 mov $0xe000100e,%edx 105581: 0e push %cs 105582: 10 00 adc %al,(%eax) 105584: 64 12 10 adc %fs:(%eax),%dl 105587: 00 ea add %ch,%dl 105589: 0e push %cs 10558a: 10 00 adc %al,(%eax) 10558c: 11 0f adc %ecx,(%edi) 10558e: 10 00 adc %al,(%eax) 105590: 38 0f cmp %cl,(%edi) 105592: 10 00 adc %al,(%eax) 105594: 5f pop %edi 105595: 0f 10 00 movups (%eax),%xmm0 105598: 85 0f test %ecx,(%edi) 10559a: 10 00 adc %al,(%eax) 10559c: ab stos %eax,%es:(%edi) 10559d: 0f 10 00 movups (%eax),%xmm0 1055a0: d2 0f rorb %cl,(%edi) 1055a2: 10 00 adc %al,(%eax) 1055a4: f9 stc 1055a5: 0f 10 00 movups (%eax),%xmm0 1055a8: 1f pop %ds 1055a9: 10 10 adc %dl,(%eax) 1055ab: 00 45 10 add %al,0x10(%ebp) 1055ae: 10 00 adc %al,(%eax) 1055b0: 6c insb (%dx),%es:(%edi) 1055b1: 10 10 adc %dl,(%eax) 1055b3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055b7: 00 92 10 10 00 64 add %dl,0x64001010(%edx) 1055bd: 12 10 adc (%eax),%dl 1055bf: 00 9c 10 10 00 64 12 add %bl,0x12640010(%eax,%edx,1) 1055c6: 10 00 adc %al,(%eax) 1055c8: 64 12 10 adc %fs:(%eax),%dl 1055cb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055cf: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055d3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055d7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055db: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055df: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055e3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055e7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055eb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055ef: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055f3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1055f7: 00 a6 10 10 00 cc add %ah,0xcc001010(%esi) 1055fd: 10 10 adc %dl,(%eax) 1055ff: 00 f3 add %dh,%bl 105601: 10 10 adc %dl,(%eax) 105603: 00 19 add %bl,(%ecx) 105605: 11 10 adc %edx,(%eax) 105607: 00 23 add %ah,(%ebx) 105609: 11 10 adc %edx,(%eax) 10560b: 00 4a 11 add %cl,0x11(%edx) 10560e: 10 00 adc %al,(%eax) 105610: 70 11 jo 105623 <strncpy+0x4af> 105612: 10 00 adc %al,(%eax) 105614: 97 xchg %eax,%edi 105615: 11 10 adc %edx,(%eax) 105617: 00 a1 11 10 00 c7 add %ah,0xc7001011(%ecx) 10561d: 11 10 adc %edx,(%eax) 10561f: 00 ee add %ch,%dh 105621: 11 10 adc %edx,(%eax) 105623: 00 14 12 add %dl,(%edx,%edx,1) 105626: 10 00 adc %al,(%eax) 105628: 3b 12 cmp (%edx),%edx 10562a: 10 00 adc %al,(%eax) 10562c: 64 12 10 adc %fs:(%eax),%dl 10562f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105633: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105637: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10563b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10563f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105643: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105647: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10564b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10564f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105653: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105657: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10565b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10565f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105663: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105667: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10566b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10566f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105673: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105677: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10567b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10567f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105683: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105687: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10568b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10568f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105693: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105697: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10569b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10569f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056a3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056a7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056ab: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056af: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056b3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056b7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056bb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056bf: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056c3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056c7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056cb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056cf: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056d3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056d7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056db: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056df: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056e3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056e7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056eb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056ef: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056f3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056f7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056fb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1056ff: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105703: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105707: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10570b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10570f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105713: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105717: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10571b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10571f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105723: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105727: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10572b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10572f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105733: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105737: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10573b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10573f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105743: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105747: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10574b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10574f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105753: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105757: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10575b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10575f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105763: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105767: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10576b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10576f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105773: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105777: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10577b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10577f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105783: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105787: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10578b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10578f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105793: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105797: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10579b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10579f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057a3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057a7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057ab: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057af: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057b3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057b7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057bb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057bf: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057c3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057c7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057cb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057cf: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057d3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057d7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057db: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057df: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057e3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057e7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057eb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057ef: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057f3: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057f7: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057fb: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 1057ff: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105803: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105807: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10580b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10580f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105813: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105817: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10581b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10581f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105823: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105827: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10582b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10582f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105833: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105837: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10583b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10583f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105843: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105847: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10584b: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10584f: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105853: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 105857: 00 64 12 10 add %ah,0x10(%edx,%edx,1) 10585b: 00 98 08 10 00 69 add %bl,0x69001008(%eax) 105861: 6e outsb %ds:(%esi),(%dx) 105862: 69 74 3a 20 6b 65 79 imul $0x6279656b,0x20(%edx,%edi,1),%esi 105869: 62 10586a: 6f outsl %ds:(%esi),(%dx) 10586b: 61 popa 10586c: 72 64 jb 1058d2 <strncpy+0x75e> 10586e: 20 25 32 75 20 62 and %ah,0x62207532 105874: 75 66 jne 1058dc <strncpy+0x768> 105876: 2c 20 sub $0x20,%al 105878: 25 32 75 62 20 and $0x20627532,%eax 10587d: 65 gs 10587e: 61 popa 10587f: 63 68 20 arpl %bp,0x20(%eax) ... 10589e: 00 00 add %al,(%eax) 1058a0: 5d pop %ebp 1058a1: 2e cs 1058a2: 2e cs 1058a3: 2e cs 1058a4: 2e cs 1058a5: 2e cs 1058a6: 2e cs 1058a7: 2e cs 1058a8: 2e cs 1058a9: 2e cs 1058aa: 2e cs 1058ab: 2e cs 1058ac: 2e cs 1058ad: 2e cs 1058ae: 2e cs 1058af: 2e cs 1058b0: 2e cs 1058b1: 2e cs 1058b2: 2e cs 1058b3: 2e cs 1058b4: 2e cs 1058b5: 2e cs 1058b6: 2e cs 1058b7: 2e cs 1058b8: 2e 2e 2e 2e 2e 2e 2e add %dl,%cs:(%edx) 1058bf: 2e 2e 2e 2e 2e 2e 2e 1058c6: 2e 2e 2e 2e 2e 2e 00 1058cd: 0a 1058ce: 0a 70 61 or 0x61(%eax),%dh 1058d1: 6e outsb %ds:(%esi),(%dx) 1058d2: 69 63 3a 20 00 0a 0a imul $0xa0a0020,0x3a(%ebx),%esp 1058d9: 53 push %ebx 1058da: 79 73 jns 10594f <strncpy+0x7db> 1058dc: 74 65 je 105943 <strncpy+0x7cf> 1058de: 6d insl (%dx),%es:(%edi) 1058df: 20 68 61 and %ch,0x61(%eax) 1058e2: 6c insb (%dx),%es:(%edi) 1058e3: 74 65 je 10594a <strncpy+0x7d6> 1058e5: 64 2e 00 44 69 76 add %al,%cs:%fs:0x76(%ecx,%ebp,2) 1058eb: 69 64 65 20 65 72 72 imul $0x6f727265,0x20(%ebp,2),%esp 1058f2: 6f 1058f3: 72 00 jb 1058f5 <strncpy+0x781> 1058f5: 44 inc %esp 1058f6: 65 62 75 67 bound %esi,%gs:0x67(%ebp) 1058fa: 20 65 78 and %ah,0x78(%ebp) 1058fd: 63 65 70 arpl %sp,0x70(%ebp) 105900: 74 69 je 10596b <strncpy+0x7f7> 105902: 6f outsl %ds:(%esi),(%dx) 105903: 6e outsb %ds:(%esi),(%dx) 105904: 00 4e 6f add %cl,0x6f(%esi) 105907: 6e outsb %ds:(%esi),(%dx) 105908: 6d insl (%dx),%es:(%edi) 105909: 61 popa 10590a: 73 6b jae 105977 <strncpy+0x803> 10590c: 61 popa 10590d: 62 6c 65 20 bound %ebp,0x20(%ebp,2) 105911: 69 6e 74 65 72 72 75 imul $0x75727265,0x74(%esi),%ebp 105918: 70 74 jo 10598e <strncpy+0x81a> 10591a: 20 28 and %ch,(%eax) 10591c: 4e dec %esi 10591d: 4d dec %ebp 10591e: 49 dec %ecx 10591f: 29 00 sub %eax,(%eax) 105921: 42 inc %edx 105922: 72 65 jb 105989 <strncpy+0x815> 105924: 61 popa 105925: 6b 70 6f 69 imul $0x69,0x6f(%eax),%esi 105929: 6e outsb %ds:(%esi),(%dx) 10592a: 74 20 je 10594c <strncpy+0x7d8> 10592c: 28 49 4e sub %cl,0x4e(%ecx) 10592f: 54 push %esp 105930: 33 29 xor (%ecx),%ebp 105932: 00 4f 76 add %cl,0x76(%edi) 105935: 65 gs 105936: 72 66 jb 10599e <strncpy+0x82a> 105938: 6c insb (%dx),%es:(%edi) 105939: 6f outsl %ds:(%esi),(%dx) 10593a: 77 20 ja 10595c <strncpy+0x7e8> 10593c: 28 49 4e sub %cl,0x4e(%ecx) 10593f: 54 push %esp 105940: 4f dec %edi 105941: 29 00 sub %eax,(%eax) 105943: 42 inc %edx 105944: 6f outsl %ds:(%esi),(%dx) 105945: 75 6e jne 1059b5 <strncpy+0x841> 105947: 64 fs 105948: 73 20 jae 10596a <strncpy+0x7f6> 10594a: 63 68 65 arpl %bp,0x65(%eax) 10594d: 63 6b 00 arpl %bp,0x0(%ebx) 105950: 49 dec %ecx 105951: 6e outsb %ds:(%esi),(%dx) 105952: 76 61 jbe 1059b5 <strncpy+0x841> 105954: 6c insb (%dx),%es:(%edi) 105955: 69 64 20 6f 70 63 6f imul $0x646f6370,0x6f(%eax,1),%esp 10595c: 64 10595d: 65 00 43 6f add %al,%gs:0x6f(%ebx) 105961: 70 72 jo 1059d5 <strncpy+0x861> 105963: 6f outsl %ds:(%esi),(%dx) 105964: 63 65 73 arpl %sp,0x73(%ebp) 105967: 73 6f jae 1059d8 <strncpy+0x864> 105969: 72 20 jb 10598b <strncpy+0x817> 10596b: 6e outsb %ds:(%esi),(%dx) 10596c: 6f outsl %ds:(%esi),(%dx) 10596d: 74 20 je 10598f <strncpy+0x81b> 10596f: 61 popa 105970: 76 61 jbe 1059d3 <strncpy+0x85f> 105972: 69 6c 61 62 6c 65 00 imul $0x4400656c,0x62(%ecx,2),%ebp 105979: 44 10597a: 6f outsl %ds:(%esi),(%dx) 10597b: 75 62 jne 1059df <strncpy+0x86b> 10597d: 6c insb (%dx),%es:(%edi) 10597e: 65 20 66 61 and %ah,%gs:0x61(%esi) 105982: 75 6c jne 1059f0 <strncpy+0x87c> 105984: 74 00 je 105986 <strncpy+0x812> 105986: 43 inc %ebx 105987: 6f outsl %ds:(%esi),(%dx) 105988: 70 72 jo 1059fc <strncpy+0x888> 10598a: 6f outsl %ds:(%esi),(%dx) 10598b: 63 65 73 arpl %sp,0x73(%ebp) 10598e: 73 6f jae 1059ff <strncpy+0x88b> 105990: 72 20 jb 1059b2 <strncpy+0x83e> 105992: 73 65 jae 1059f9 <strncpy+0x885> 105994: 67 6d addr16 insl (%dx),%es:(%di) 105996: 65 6e outsb %gs:(%esi),(%dx) 105998: 74 20 je 1059ba <strncpy+0x846> 10599a: 6f outsl %ds:(%esi),(%dx) 10599b: 76 65 jbe 105a02 <strncpy+0x88e> 10599d: 72 72 jb 105a11 <strncpy+0x89d> 10599f: 75 6e jne 105a0f <strncpy+0x89b> 1059a1: 00 49 6e add %cl,0x6e(%ecx) 1059a4: 76 61 jbe 105a07 <strncpy+0x893> 1059a6: 6c insb (%dx),%es:(%edi) 1059a7: 69 64 20 54 53 53 00 imul $0x53005353,0x54(%eax,1),%esp 1059ae: 53 1059af: 65 gs 1059b0: 67 6d addr16 insl (%dx),%es:(%di) 1059b2: 65 6e outsb %gs:(%esi),(%dx) 1059b4: 74 20 je 1059d6 <strncpy+0x862> 1059b6: 6e outsb %ds:(%esi),(%dx) 1059b7: 6f outsl %ds:(%esi),(%dx) 1059b8: 74 20 je 1059da <strncpy+0x866> 1059ba: 70 72 jo 105a2e <strncpy+0x8ba> 1059bc: 65 gs 1059bd: 73 65 jae 105a24 <strncpy+0x8b0> 1059bf: 6e outsb %ds:(%esi),(%dx) 1059c0: 74 00 je 1059c2 <strncpy+0x84e> 1059c2: 53 push %ebx 1059c3: 74 61 je 105a26 <strncpy+0x8b2> 1059c5: 63 6b 20 arpl %bp,0x20(%ebx) 1059c8: 65 gs 1059c9: 78 63 js 105a2e <strncpy+0x8ba> 1059cb: 65 gs 1059cc: 70 74 jo 105a42 <strncpy+0x8ce> 1059ce: 69 6f 6e 00 47 65 6e imul $0x6e654700,0x6e(%edi),%ebp 1059d5: 65 gs 1059d6: 72 61 jb 105a39 <strncpy+0x8c5> 1059d8: 6c insb (%dx),%es:(%edi) 1059d9: 20 50 72 and %dl,0x72(%eax) 1059dc: 6f outsl %ds:(%esi),(%dx) 1059dd: 74 65 je 105a44 <strncpy+0x8d0> 1059df: 63 74 69 6f arpl %si,0x6f(%ecx,%ebp,2) 1059e3: 6e outsb %ds:(%esi),(%dx) 1059e4: 20 46 61 and %al,0x61(%esi) 1059e7: 75 6c jne 105a55 <strncpy+0x8e1> 1059e9: 74 00 je 1059eb <strncpy+0x877> 1059eb: 50 push %eax 1059ec: 61 popa 1059ed: 67 65 20 66 61 addr16 and %ah,%gs:97(%bp) 1059f2: 75 6c jne 105a60 <strncpy+0x8ec> 1059f4: 74 00 je 1059f6 <strncpy+0x882> 1059f6: 43 inc %ebx 1059f7: 6f outsl %ds:(%esi),(%dx) 1059f8: 70 72 jo 105a6c <strncpy+0x8f8> 1059fa: 6f outsl %ds:(%esi),(%dx) 1059fb: 63 65 73 arpl %sp,0x73(%ebp) 1059fe: 73 6f jae 105a6f <strncpy+0x8fb> 105a00: 72 20 jb 105a22 <strncpy+0x8ae> 105a02: 65 gs 105a03: 72 72 jb 105a77 <strncpy+0x903> 105a05: 6f outsl %ds:(%esi),(%dx) 105a06: 72 00 jb 105a08 <strncpy+0x894> 105a08: 41 inc %ecx 105a09: 6c insb (%dx),%es:(%edi) 105a0a: 69 67 6e 6d 65 6e 74 imul $0x746e656d,0x6e(%edi),%esp 105a11: 20 63 68 and %ah,0x68(%ebx) 105a14: 65 63 6b 00 arpl %bp,%gs:0x0(%ebx) 105a18: 3f aas 105a19: 3f aas 105a1a: 00 49 52 add %cl,0x52(%ecx) 105a1d: 51 push %ecx 105a1e: 30 00 xor %al,(%eax) 105a20: 49 dec %ecx 105a21: 52 push %edx 105a22: 51 push %ecx 105a23: 31 00 xor %eax,(%eax) 105a25: 49 dec %ecx 105a26: 52 push %edx 105a27: 51 push %ecx 105a28: 32 00 xor (%eax),%al 105a2a: 49 dec %ecx 105a2b: 52 push %edx 105a2c: 51 push %ecx 105a2d: 33 00 xor (%eax),%eax 105a2f: 49 dec %ecx 105a30: 52 push %edx 105a31: 51 push %ecx 105a32: 34 00 xor $0x0,%al 105a34: 49 dec %ecx 105a35: 52 push %edx 105a36: 51 push %ecx 105a37: 35 00 49 52 51 xor $0x51524900,%eax 105a3c: 36 00 49 52 add %cl,%ss:0x52(%ecx) 105a40: 51 push %ecx 105a41: 37 aaa 105a42: 00 49 52 add %cl,0x52(%ecx) 105a45: 51 push %ecx 105a46: 38 00 cmp %al,(%eax) 105a48: 49 dec %ecx 105a49: 52 push %edx 105a4a: 51 push %ecx 105a4b: 39 00 cmp %eax,(%eax) 105a4d: 49 dec %ecx 105a4e: 52 push %edx 105a4f: 51 push %ecx 105a50: 31 30 xor %esi,(%eax) 105a52: 00 49 52 add %cl,0x52(%ecx) 105a55: 51 push %ecx 105a56: 31 31 xor %esi,(%ecx) 105a58: 00 49 52 add %cl,0x52(%ecx) 105a5b: 51 push %ecx 105a5c: 31 32 xor %esi,(%edx) 105a5e: 00 49 52 add %cl,0x52(%ecx) 105a61: 51 push %ecx 105a62: 31 33 xor %esi,(%ebx) 105a64: 00 49 52 add %cl,0x52(%ecx) 105a67: 51 push %ecx 105a68: 31 34 00 xor %esi,(%eax,%eax,1) 105a6b: 49 dec %ecx 105a6c: 52 push %edx 105a6d: 51 push %ecx 105a6e: 31 35 00 73 79 73 xor %esi,0x73797300 105a74: 63 61 6c arpl %sp,0x6c(%ecx) 105a77: 6c insb (%dx),%es:(%edi) 105a78: 00 0a add %cl,(%edx) 105a7a: 0a 70 61 or 0x61(%eax),%dh 105a7d: 6e outsb %ds:(%esi),(%dx) 105a7e: 69 63 3a 20 45 78 63 imul $0x63784520,0x3a(%ebx),%esp 105a85: 65 gs 105a86: 70 74 jo 105afc <strncpy+0x988> 105a88: 69 6f 6e 20 30 78 25 imul $0x25783020,0x6e(%edi),%ebp 105a8f: 30 38 xor %bh,(%eax) 105a91: 58 pop %eax 105a92: 00 20 add %ah,(%eax) 105a94: 28 25 73 29 00 75 sub %ah,0x75002973 105a9a: 73 65 jae 105b01 <ex.0+0x1> 105a9c: 64 00 62 6c add %ah,%fs:0x6c(%edx) 105aa0: 6f outsl %ds:(%esi),(%dx) 105aa1: 63 6b 20 arpl %bp,0x20(%ebx) 105aa4: 25 35 70 3a 20 and $0x203a7035,%eax 105aa9: 25 36 75 20 62 and $0x62207536,%eax 105aae: 79 74 jns 105b24 <ex.0+0x24> 105ab0: 65 gs 105ab1: 73 20 jae 105ad3 <strncpy+0x95f> 105ab3: 25 73 0a 00 66 and $0x66000a73,%eax 105ab8: 72 65 jb 105b1f <ex.0+0x1f> 105aba: 65 00 69 6e add %ch,%gs:0x6e(%ecx) 105abe: 69 74 00 45 6e 61 62 imul $0x6c62616e,0x45(%eax,%eax,1),%esi 105ac5: 6c 105ac6: 69 6e 67 20 68 61 72 imul $0x72616820,0x67(%esi),%ebp 105acd: 64 fs 105ace: 77 61 ja 105b31 <ex.0+0x31> 105ad0: 72 65 jb 105b37 <ex.0+0x37> 105ad2: 20 69 6e and %ch,0x6e(%ecx) 105ad5: 74 65 je 105b3c <ex.0+0x3c> 105ad7: 72 72 jb 105b4b <ex.0+0x4b> 105ad9: 75 70 jne 105b4b <ex.0+0x4b> 105adb: 74 73 je 105b50 <ex.0+0x50> 105add: 00 4d 6f add %cl,0x6f(%ebp) 105ae0: 72 65 jb 105b47 <ex.0+0x47> 105ae2: 20 77 6f and %dh,0x6f(%edi) 105ae5: 72 6b jb 105b52 <ex.0+0x52> 105ae7: 20 6e 65 and %ch,0x65(%esi) 105aea: 65 gs 105aeb: 64 fs 105aec: 73 20 jae 105b0e <ex.0+0xe> 105aee: 74 6f je 105b5f <ex.0+0x5f> 105af0: 20 62 65 and %ah,0x65(%edx) 105af3: 20 64 6f 6e and %ah,0x6e(%edi,%ebp,2) 105af7: 65 0a 00 or %gs:(%eax),%al 105afa: 00 00 add %al,(%eax) 105afc: 00 00 add %al,(%eax) ... 00105b00 <ex.0>: 105b00: e8 58 10 00 08 00 00 00 56 00 00 00 f5 58 10 00 .X......V....X.. 105b10: 05 00 00 00 56 00 00 00 05 59 10 00 07 00 00 00 ....V....Y...... 105b20: 56 00 00 00 21 59 10 00 07 00 00 00 56 00 00 00 V...!Y......V... 105b30: 33 59 10 00 08 00 00 00 ba 00 00 00 43 59 10 00 3Y..........CY.. 105b40: 08 00 00 00 ba 00 00 00 50 59 10 00 04 00 00 00 ........PY...... 105b50: ba 00 00 00 5f 59 10 00 08 00 00 00 ba 00 00 00 ...._Y.......... 105b60: 79 59 10 00 07 00 00 00 1e 01 00 00 86 59 10 00 yY...........Y.. 105b70: 0b 00 00 00 1e 01 00 00 a2 59 10 00 0b 00 00 00 .........Y...... 105b80: 1e 01 00 00 ae 59 10 00 0b 00 00 00 1e 01 00 00 .....Y.......... 105b90: c2 59 10 00 0b 00 00 00 1e 01 00 00 d2 59 10 00 .Y...........Y.. 105ba0: 0b 00 00 00 1e 01 00 00 eb 59 10 00 0b 00 00 00 .........Y...... 105bb0: 82 01 00 00 00 00 00 00 04 00 00 00 00 00 00 00 ................ 105bc0: f6 59 10 00 08 00 00 00 82 01 00 00 08 5a 10 00 .Y...........Z.. ... 105bd8: 18 5a 10 00 00 00 00 00 00 00 00 00 18 5a 10 00 .Z...........Z.. ... 105bf0: 18 5a 10 00 00 00 00 00 00 00 00 00 18 5a 10 00 .Z...........Z.. ... 105c08: 18 5a 10 00 00 00 00 00 00 00 00 00 18 5a 10 00 .Z...........Z.. ... 105c20: 18 5a 10 00 00 00 00 00 00 00 00 00 18 5a 10 00 .Z...........Z.. ... 105c38: 18 5a 10 00 00 00 00 00 00 00 00 00 18 5a 10 00 .Z...........Z.. ... 105c50: 18 5a 10 00 00 00 00 00 00 00 00 00 18 5a 10 00 .Z...........Z.. ... 105c68: 18 5a 10 00 00 00 00 00 00 00 00 00 18 5a 10 00 .Z...........Z.. ... 105c80: 1b 5a 10 00 00 00 00 00 00 00 00 00 20 5a 10 00 .Z.......... Z.. ... 105c98: 25 5a 10 00 00 00 00 00 00 00 00 00 2a 5a 10 00 %Z..........*Z.. ... 105cb0: 2f 5a 10 00 00 00 00 00 00 00 00 00 34 5a 10 00 /Z..........4Z.. ... 105cc8: 39 5a 10 00 00 00 00 00 00 00 00 00 3e 5a 10 00 9Z..........>Z.. ... 105ce0: 43 5a 10 00 00 00 00 00 00 00 00 00 48 5a 10 00 CZ..........HZ.. ... 105cf8: 4d 5a 10 00 00 00 00 00 00 00 00 00 53 5a 10 00 MZ..........SZ.. ... 105d10: 59 5a 10 00 00 00 00 00 00 00 00 00 5f 5a 10 00 YZ.........._Z.. ... 105d28: 65 5a 10 00 00 00 00 00 00 00 00 00 6b 5a 10 00 eZ..........kZ.. ... 105d40: 71 5a 10 00 00 00 00 00 00 00 00 00 qZ.......... 00105d4c <irq0_int.1>: 105d4c: 20 00 00 00 ... 00105d50 <irq8_int.2>: 105d50: 28 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 (............... 105d60: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 105d70: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d ================ 105d80: 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 3d 0a ===============. ... 105da0: 62 6c 6f 63 6b 73 3a 20 25 36 75 20 75 73 65 64 blocks: %6u used 105db0: 2c 20 25 36 75 20 66 72 65 65 2c 20 25 36 75 20 , %6u free, %6u 105dc0: 74 6f 74 61 6c 0a 00 00 00 00 00 00 00 00 00 00 total........... ... 105de0: 20 62 79 74 65 73 3a 20 25 36 75 20 75 73 65 64 bytes: %6u used 105df0: 2c 20 25 36 75 20 66 72 65 65 2c 20 25 36 75 20 , %6u free, %6u 105e00: 74 6f 74 61 6c 0a 00 00 00 00 00 00 00 00 00 00 total........... ... 105e20: 67 5f 68 65 61 70 5f 62 6f 74 3d 30 78 25 70 2c g_heap_bot=0x%p, 105e30: 20 67 5f 6b 62 72 6b 3d 30 78 25 70 2c 20 67 5f g_kbrk=0x%p, g_ 105e40: 68 65 61 70 5f 74 6f 70 3d 30 78 25 70 0a 00 00 heap_top=0x%p... ... 105e60: 2a 2a 2a 20 73 6f 6d 65 20 68 65 61 70 20 6d 65 *** some heap me 105e70: 6d 6f 72 79 20 69 73 20 6e 6f 74 20 61 63 63 6f mory is not acco 105e80: 75 6e 74 65 64 20 66 6f 72 0a 00 00 00 00 00 00 unted for....... ... 105ea0: 6b 65 72 6e 65 6c 20 68 65 61 70 20 69 73 20 63 kernel heap is c 105eb0: 6f 72 72 75 70 74 20 69 6e 20 6d 61 6c 6c 6f 63 orrupt in malloc 105ec0: 28 29 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ().............. ... 105ee0: 61 74 74 65 6d 70 74 20 74 6f 20 66 72 65 65 28 attempt to free( 105ef0: 29 20 62 6c 6f 63 6b 20 61 74 20 30 78 25 70 20 ) block at 0x%p 105f00: 77 69 74 68 20 62 61 64 20 6d 61 67 69 63 20 76 with bad magic v 105f10: 61 6c 75 65 00 00 00 00 00 00 00 00 00 00 00 00 alue............ 105f20: 6b 65 72 6e 65 6c 20 68 65 61 70 20 69 73 20 63 kernel heap is c 105f30: 6f 72 72 75 70 74 20 69 6e 20 66 72 65 65 28 29 orrupt in free() ... 105f60: 61 74 74 65 6d 70 74 20 74 6f 20 66 72 65 65 28 attempt to free( 105f70: 29 20 62 6c 6f 63 6b 20 61 74 20 30 78 25 70 20 ) block at 0x%p 105f80: 74 68 61 74 20 69 73 20 6e 6f 74 20 69 6e 20 74 that is not in t 105f90: 68 65 20 68 65 61 70 00 00 00 00 00 00 00 00 00 he heap......... 105fa0: 55 6e 61 62 6c 65 20 74 6f 20 72 75 6e 20 74 65 Unable to run te 105fb0: 73 74 68 65 61 70 20 2d 2d 20 6b 6d 61 6c 6c 6f stheap -- kmallo 105fc0: 63 28 29 20 69 73 20 62 72 6f 6b 65 6e 2e 0a 00 c() is broken... ... 105fe0: 61 74 74 65 6d 70 74 20 74 6f 20 72 65 61 6c 6c attempt to reall 105ff0: 6f 63 28 29 20 62 6c 6f 63 6b 20 61 74 20 30 78 oc() block at 0x 106000: 25 70 20 77 69 74 68 20 62 61 64 20 6d 61 67 69 %p with bad magi 106010: 63 20 76 61 6c 75 65 00 00 00 00 00 00 00 00 00 c value......... 106020: 49 6e 73 74 61 6c 6c 69 6e 67 20 6b 65 79 62 6f Installing keybo 106030: 61 72 64 20 69 6e 74 65 72 72 75 70 74 20 68 61 ard interrupt ha 106040: 6e 64 6c 65 72 00 00 00 00 00 00 00 00 00 00 00 ndler........... ... 106060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 106070: 20 20 20 20 20 20 20 20 20 5f 20 20 20 5f 20 20 _ _ 106080: 5f 20 20 5f 20 20 5f 5f 5f 5f 20 20 5f 5f 5f 5f _ _ ____ ____ 106090: 5f 20 20 5f 5f 5f 20 20 20 20 20 20 20 20 20 20 _ ___ 1060a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ... 1060c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1060d0: 20 20 20 20 20 20 20 20 28 20 29 5f 28 20 29 28 ( )_( )( 1060e0: 20 5c 2f 20 29 28 20 20 5f 20 5c 28 20 20 5f 20 \/ )( _ \( _ 1060f0: 20 29 2f 20 5f 5f 29 20 20 20 20 20 20 20 20 20 )/ __) 106100: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ... 106120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 106130: 20 20 20 20 20 20 20 20 20 29 20 5f 20 28 20 20 ) _ ( 106140: 5c 20 20 2f 20 20 29 20 5f 20 3c 20 29 28 5f 29 \ / ) _ < )(_) 106150: 28 20 5c 5f 5f 20 5c 20 20 20 20 20 20 20 20 20 ( \__ \ 106160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 ... 106180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 106190: 20 20 20 20 20 20 20 20 28 5f 29 20 28 5f 29 20 (_) (_) 1061a0: 28 5f 5f 29 20 28 5f 5f 5f 5f 2f 28 5f 5f 5f 5f (__) (____/(____ 1061b0: 5f 29 28 5f 5f 5f 2f 20 20 20 20 20 20 20 20 20 _)(___/ 1061c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1061d0: 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 1061e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1061f0: 20 20 20 20 20 20 20 20 48 79 62 72 69 64 20 4f Hybrid O 106200: 70 65 72 61 74 69 6e 67 20 53 79 73 74 65 6d 20 perating System 106210: 28 48 79 62 4f 53 29 20 20 20 20 20 20 20 20 20 (HybOS) 106220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 106230: 0a 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ 106240: 41 4c 54 20 2b 20 46 31 20 2d 20 46 38 20 66 6f ALT + F1 - F8 fo 106250: 72 20 76 69 72 74 75 61 6c 20 74 65 72 6d 69 6e r virtual termin 106260: 61 6c 73 0a 00 00 00 00 00 00 00 00 00 00 00 00 als............. ... 106280: 54 68 72 65 65 20 66 69 6e 67 65 72 20 73 61 6c Three finger sal 106290: 75 74 65 20 74 6f 20 72 65 73 74 61 72 74 0a 00 ute to restart.. 1062a0: 49 6e 69 74 69 61 6c 69 7a 69 6e 67 20 6d 65 6d Initializing mem 1062b0: 6f 72 79 20 6d 61 6e 61 67 65 6d 65 6e 74 00 00 ory management.. 1062c0: 00 00 00 00 74 61 73 6b 20 68 61 6e 64 6c 65 72 ....task handler ... 001062e0 <ansi_to_vga.0>: 1062e0: 00 00 00 00 04 00 00 00 02 00 00 00 06 00 00 00 ................ 1062f0: 01 00 00 00 05 00 00 00 03 00 00 00 07 00 00 00 ................ 106300: 1b 5b 32 4a 00 6d 6f 6e 6f 00 5d 2e 2e 2e 2e 2e .[2J.mono.]..... 106310: 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 2e 00 63 6f 6c 6f ............colo 106320: 72 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 r............... ... 106340: 69 6e 69 74 3a 20 76 69 64 65 6f 20 25 35 73 20 init: video %5s 106350: 65 6d 75 6c 61 74 69 6f 6e 2c 20 25 32 75 78 25 emulation, %2ux% 106360: 32 75 2c 20 66 72 61 6d 65 62 75 66 66 65 72 20 2u, framebuffer 106370: 61 74 20 30 78 25 31 58 20 00 00 00 0c 4d 10 00 at 0x%1X ....M.. 106380: 40 4d 10 00 5c 4d 10 00 76 4d 10 00 98 4d 10 00 @M..\M..vM...M.. 106390: b5 4d 10 00 dc 4e 10 00 dc 4e 10 00 dc 4e 10 00 .M...N...N...N.. 1063a0: dc 4e 10 00 dc 4e 10 00 dc 4e 10 00 dc 4e 10 00 .N...N...N...N.. 1063b0: dc 4e 10 00 dc 4e 10 00 dc 4e 10 00 63 4f 10 00 .N...N...N..cO.. 1063c0: 7e 4f 10 00 dc 4e 10 00 dc 4e 10 00 dc 4e 10 00 ~O...N...N...N.. 1063d0: dc 4e 10 00 7e 4f 10 00 dc 4e 10 00 dc 4e 10 00 .N..~O...N...N.. 1063e0: dc 4e 10 00 dc 4e 10 00 b9 4d 10 00 8c 4f 10 00 .N...N...M...O.. 1063f0: b9 4d 10 00 dc 4e 10 00 dc 4e 10 00 96 4f 10 00 .M...N...N...O.. 106400: dc 4e 10 00 82 4f 10 00 dc 4e 10 00 dc 4e 10 00 .N...O...N...N.. 106410: b9 4d 10 00 00 00 00 00 00 00 00 00 00 00 00 00 .M.............. ...