Advertisement
micha

MK-C / ASM

Mar 22nd, 2012
1,333
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 210.15 KB | None | 0 0
  1. kernel:     file format elf32-i386
  2.  
  3.  
  4. Disassembly of section .text:
  5.  
  6. 00100000 <_start-0xc>:
  7.   100000:   02 b0 ad 1b 00 00       add    0x1bad(%eax),%dh
  8.   100006:   00 00                   add    %al,(%eax)
  9.   100008:   fe 4f 52                decb   0x52(%edi)
  10.   10000b:   e4 bc                   in     $0xbc,%al
  11.  
  12. 0010000c <_start>:
  13.   10000c:   bc 00 67 10 00          mov    $0x106700,%esp
  14.   100011:   e8 b3 13 00 00          call   1013c9 <init>
  15.  
  16. 00100016 <_stop>:
  17.   100016:   fa                      cli    
  18.   100017:   f4                      hlt    
  19.   100018:   eb fc                   jmp    100016 <_stop>
  20.   10001a:   90                      nop
  21.   10001b:   90                      nop
  22.  
  23. 0010001c <set_interrupt>:
  24.  
  25. #include "interrupt.h"
  26. /* ---------- Globale Variablen ----------------------- */
  27. static uint64_t idt[IDT_ENTRIES];   //Interupt Deskriptor Table
  28. /* ---------- Eintrag in die IDT setzen --------------- */
  29. static void set_interrupt(int i, uint32_t offset, uint16_t selector, int type, bool present, int dpl){
  30.   10001c:   55                      push   %ebp
  31.   10001d:   89 e5                   mov    %esp,%ebp
  32.   10001f:   57                      push   %edi
  33.   100020:   56                      push   %esi
  34.   100021:   53                      push   %ebx
  35.   100022:   83 ec 08                sub    $0x8,%esp
  36.   100025:   8b 55 10                mov    0x10(%ebp),%edx
  37.   100028:   8b 45 18                mov    0x18(%ebp),%eax
  38.   10002b:   66 89 55 f0             mov    %dx,-0x10(%ebp)
  39.   10002f:   88 45 ec                mov    %al,-0x14(%ebp)
  40.   idt[i] = 0;
  41.   100032:   8b 45 08                mov    0x8(%ebp),%eax
  42.   100035:   c7 04 c5 00 67 10 00    movl   $0x0,0x106700(,%eax,8)
  43.   10003c:   00 00 00 00
  44.   100040:   c7 04 c5 04 67 10 00    movl   $0x0,0x106704(,%eax,8)
  45.   100047:   00 00 00 00
  46.   //untere 32-Bit
  47.   idt[i] = (offset & 0x0000ffff) | (selector << 16);
  48.   10004b:   8b 45 0c                mov    0xc(%ebp),%eax
  49.   10004e:   0f b7 d0                movzwl %ax,%edx
  50.   100051:   0f b7 45 f0             movzwl -0x10(%ebp),%eax
  51.   100055:   c1 e0 10                shl    $0x10,%eax
  52.   100058:   09 d0                   or     %edx,%eax
  53.   10005a:   ba 00 00 00 00          mov    $0x0,%edx
  54.   10005f:   8b 75 08                mov    0x8(%ebp),%esi
  55.   100062:   89 04 f5 00 67 10 00    mov    %eax,0x106700(,%esi,8)
  56.   100069:   89 14 f5 04 67 10 00    mov    %edx,0x106704(,%esi,8)
  57.   //obere 32-Bit
  58.   idt[i] |=(
  59.   100070:   8b 45 08                mov    0x8(%ebp),%eax
  60.   100073:   8b 34 c5 00 67 10 00    mov    0x106700(,%eax,8),%esi
  61.   10007a:   8b 3c c5 04 67 10 00    mov    0x106704(,%eax,8),%edi
  62.         ( type << 8 )   |
  63.   100081:   8b 45 14                mov    0x14(%ebp),%eax
  64.   100084:   89 c2                   mov    %eax,%edx
  65.   100086:   c1 e2 08                shl    $0x8,%edx
  66.         ( (dpl&3) << 13 )   |
  67.   100089:   8b 45 1c                mov    0x1c(%ebp),%eax
  68.   10008c:   83 e0 03                and    $0x3,%eax
  69.   10008f:   c1 e0 0d                shl    $0xd,%eax
  70.   idt[i] = 0;
  71.   //untere 32-Bit
  72.   idt[i] = (offset & 0x0000ffff) | (selector << 16);
  73.   //obere 32-Bit
  74.   idt[i] |=(
  75.         ( type << 8 )   |
  76.   100092:   09 c2                   or     %eax,%edx
  77.         ( (dpl&3) << 13 )   |
  78.         ( (present&1) << 15)|
  79.   100094:   0f be 45 ec             movsbl -0x14(%ebp),%eax
  80.   100098:   c1 e0 0f                shl    $0xf,%eax
  81.   10009b:   25 ff ff 00 00          and    $0xffff,%eax
  82.   //untere 32-Bit
  83.   idt[i] = (offset & 0x0000ffff) | (selector << 16);
  84.   //obere 32-Bit
  85.   idt[i] |=(
  86.         ( type << 8 )   |
  87.         ( (dpl&3) << 13 )   |
  88.   1000a0:   09 d0                   or     %edx,%eax
  89.         ( (present&1) << 15)|
  90.         ( offset & 0xffff0000 )
  91.   1000a2:   8b 55 0c                mov    0xc(%ebp),%edx
  92.   1000a5:   66 ba 00 00             mov    $0x0,%dx
  93.   idt[i] = (offset & 0x0000ffff) | (selector << 16);
  94.   //obere 32-Bit
  95.   idt[i] |=(
  96.         ( type << 8 )   |
  97.         ( (dpl&3) << 13 )   |
  98.         ( (present&1) << 15)|
  99.   1000a9:   09 d0                   or     %edx,%eax
  100.         ( offset & 0xffff0000 )
  101.        ) * 0x100000000;
  102.   1000ab:   ba 00 00 00 00          mov    $0x0,%edx
  103.   1000b0:   89 c2                   mov    %eax,%edx
  104.   1000b2:   b8 00 00 00 00          mov    $0x0,%eax
  105. static void set_interrupt(int i, uint32_t offset, uint16_t selector, int type, bool present, int dpl){
  106.   idt[i] = 0;
  107.   //untere 32-Bit
  108.   idt[i] = (offset & 0x0000ffff) | (selector << 16);
  109.   //obere 32-Bit
  110.   idt[i] |=(
  111.   1000b7:   89 f1                   mov    %esi,%ecx
  112.   1000b9:   09 c1                   or     %eax,%ecx
  113.   1000bb:   89 fb                   mov    %edi,%ebx
  114.   1000bd:   09 d3                   or     %edx,%ebx
  115.   1000bf:   8b 45 08                mov    0x8(%ebp),%eax
  116.   1000c2:   89 0c c5 00 67 10 00    mov    %ecx,0x106700(,%eax,8)
  117.   1000c9:   89 1c c5 04 67 10 00    mov    %ebx,0x106704(,%eax,8)
  118.         ( type << 8 )   |
  119.         ( (dpl&3) << 13 )   |
  120.         ( (present&1) << 15)|
  121.         ( offset & 0xffff0000 )
  122.        ) * 0x100000000;
  123. }
  124.   1000d0:   83 c4 08                add    $0x8,%esp
  125.   1000d3:   5b                      pop    %ebx
  126.   1000d4:   5e                      pop    %esi
  127.   1000d5:   5f                      pop    %edi
  128.   1000d6:   5d                      pop    %ebp
  129.   1000d7:   c3                      ret    
  130.  
  131. 001000d8 <load_idt>:
  132. /* ---------- IDT laden ------------------------------- */
  133. void load_idt(void){
  134.   1000d8:   55                      push   %ebp
  135.   1000d9:   89 e5                   mov    %esp,%ebp
  136.   1000db:   83 ec 10                sub    $0x10,%esp
  137.   struct {
  138.     uint16_t size;
  139.     uint64_t pointer;
  140.   } __attribute__((packed)) idtp = {
  141.   1000de:   66 c7 45 f6 ff 00       movw   $0xff,-0xa(%ebp)
  142.   1000e4:   b8 00 67 10 00          mov    $0x106700,%eax
  143.   1000e9:   89 c2                   mov    %eax,%edx
  144.   1000eb:   c1 fa 1f                sar    $0x1f,%edx
  145.   1000ee:   89 45 f8                mov    %eax,-0x8(%ebp)
  146.   1000f1:   89 55 fc                mov    %edx,-0x4(%ebp)
  147.     .size = IDT_ENTRIES - 1,
  148.     .pointer = &idt,
  149.   };
  150.   asm("lidt %0" : : "m" (idtp));
  151.   1000f4:   0f 01 5d f6             lidtl  -0xa(%ebp)
  152. }
  153.   1000f8:   c9                      leave  
  154.   1000f9:   c3                      ret    
  155.  
  156. 001000fa <init_idt>:
  157. /* ---------- IDT initalisieren ----------------------- */
  158. void init_idt(void){
  159.   1000fa:   55                      push   %ebp
  160.   1000fb:   89 e5                   mov    %esp,%ebp
  161.   1000fd:   83 ec 18                sub    $0x18,%esp
  162.   ///       index, offset,         selector, type,     used, dpl
  163.   set_interrupt(0x00, (uint32_t)&int_handler0x00,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  164.   100100:   b8 6c 0f 10 00          mov    $0x100f6c,%eax
  165.   100105:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  166.   10010c:   00
  167.   10010d:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  168.   100114:   00
  169.   100115:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  170.   10011c:   00
  171.   10011d:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  172.   100124:   00
  173.   100125:   89 44 24 04             mov    %eax,0x4(%esp)
  174.   100129:   c7 04 24 00 00 00 00    movl   $0x0,(%esp)
  175.   100130:   e8 e7 fe ff ff          call   10001c <set_interrupt>
  176.   set_interrupt(0x01, (uint32_t)&int_handler0x01,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  177.   100135:   b8 75 0f 10 00          mov    $0x100f75,%eax
  178.   10013a:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  179.   100141:   00
  180.   100142:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  181.   100149:   00
  182.   10014a:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  183.   100151:   00
  184.   100152:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  185.   100159:   00
  186.   10015a:   89 44 24 04             mov    %eax,0x4(%esp)
  187.   10015e:   c7 04 24 01 00 00 00    movl   $0x1,(%esp)
  188.   100165:   e8 b2 fe ff ff          call   10001c <set_interrupt>
  189.   set_interrupt(0x02, (uint32_t)&int_handler0x02,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  190.   10016a:   b8 7e 0f 10 00          mov    $0x100f7e,%eax
  191.   10016f:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  192.   100176:   00
  193.   100177:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  194.   10017e:   00
  195.   10017f:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  196.   100186:   00
  197.   100187:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  198.   10018e:   00
  199.   10018f:   89 44 24 04             mov    %eax,0x4(%esp)
  200.   100193:   c7 04 24 02 00 00 00    movl   $0x2,(%esp)
  201.   10019a:   e8 7d fe ff ff          call   10001c <set_interrupt>
  202.   set_interrupt(0x03, (uint32_t)&int_handler0x03,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  203.   10019f:   b8 87 0f 10 00          mov    $0x100f87,%eax
  204.   1001a4:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  205.   1001ab:   00
  206.   1001ac:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  207.   1001b3:   00
  208.   1001b4:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  209.   1001bb:   00
  210.   1001bc:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  211.   1001c3:   00
  212.   1001c4:   89 44 24 04             mov    %eax,0x4(%esp)
  213.   1001c8:   c7 04 24 03 00 00 00    movl   $0x3,(%esp)
  214.   1001cf:   e8 48 fe ff ff          call   10001c <set_interrupt>
  215.   set_interrupt(0x04, (uint32_t)&int_handler0x04,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  216.   1001d4:   b8 90 0f 10 00          mov    $0x100f90,%eax
  217.   1001d9:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  218.   1001e0:   00
  219.   1001e1:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  220.   1001e8:   00
  221.   1001e9:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  222.   1001f0:   00
  223.   1001f1:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  224.   1001f8:   00
  225.   1001f9:   89 44 24 04             mov    %eax,0x4(%esp)
  226.   1001fd:   c7 04 24 04 00 00 00    movl   $0x4,(%esp)
  227.   100204:   e8 13 fe ff ff          call   10001c <set_interrupt>
  228.   set_interrupt(0x05, (uint32_t)&int_handler0x05,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  229.   100209:   b8 99 0f 10 00          mov    $0x100f99,%eax
  230.   10020e:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  231.   100215:   00
  232.   100216:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  233.   10021d:   00
  234.   10021e:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  235.   100225:   00
  236.   100226:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  237.   10022d:   00
  238.   10022e:   89 44 24 04             mov    %eax,0x4(%esp)
  239.   100232:   c7 04 24 05 00 00 00    movl   $0x5,(%esp)
  240.   100239:   e8 de fd ff ff          call   10001c <set_interrupt>
  241.   set_interrupt(0x06, (uint32_t)&int_handler0x06,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  242.   10023e:   b8 a2 0f 10 00          mov    $0x100fa2,%eax
  243.   100243:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  244.   10024a:   00
  245.   10024b:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  246.   100252:   00
  247.   100253:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  248.   10025a:   00
  249.   10025b:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  250.   100262:   00
  251.   100263:   89 44 24 04             mov    %eax,0x4(%esp)
  252.   100267:   c7 04 24 06 00 00 00    movl   $0x6,(%esp)
  253.   10026e:   e8 a9 fd ff ff          call   10001c <set_interrupt>
  254.   set_interrupt(0x07, (uint32_t)&int_handler0x07,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  255.   100273:   b8 ab 0f 10 00          mov    $0x100fab,%eax
  256.   100278:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  257.   10027f:   00
  258.   100280:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  259.   100287:   00
  260.   100288:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  261.   10028f:   00
  262.   100290:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  263.   100297:   00
  264.   100298:   89 44 24 04             mov    %eax,0x4(%esp)
  265.   10029c:   c7 04 24 07 00 00 00    movl   $0x7,(%esp)
  266.   1002a3:   e8 74 fd ff ff          call   10001c <set_interrupt>
  267.   set_interrupt(0x08, (uint32_t)&int_handler0x08,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  268.   1002a8:   b8 b4 0f 10 00          mov    $0x100fb4,%eax
  269.   1002ad:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  270.   1002b4:   00
  271.   1002b5:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  272.   1002bc:   00
  273.   1002bd:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  274.   1002c4:   00
  275.   1002c5:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  276.   1002cc:   00
  277.   1002cd:   89 44 24 04             mov    %eax,0x4(%esp)
  278.   1002d1:   c7 04 24 08 00 00 00    movl   $0x8,(%esp)
  279.   1002d8:   e8 3f fd ff ff          call   10001c <set_interrupt>
  280.   set_interrupt(0x09, (uint32_t)&int_handler0x09,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  281.   1002dd:   b8 b8 0f 10 00          mov    $0x100fb8,%eax
  282.   1002e2:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  283.   1002e9:   00
  284.   1002ea:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  285.   1002f1:   00
  286.   1002f2:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  287.   1002f9:   00
  288.   1002fa:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  289.   100301:   00
  290.   100302:   89 44 24 04             mov    %eax,0x4(%esp)
  291.   100306:   c7 04 24 09 00 00 00    movl   $0x9,(%esp)
  292.   10030d:   e8 0a fd ff ff          call   10001c <set_interrupt>
  293.   set_interrupt(0x0A, (uint32_t)&int_handler0x0A,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  294.   100312:   b8 be 0f 10 00          mov    $0x100fbe,%eax
  295.   100317:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  296.   10031e:   00
  297.   10031f:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  298.   100326:   00
  299.   100327:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  300.   10032e:   00
  301.   10032f:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  302.   100336:   00
  303.   100337:   89 44 24 04             mov    %eax,0x4(%esp)
  304.   10033b:   c7 04 24 0a 00 00 00    movl   $0xa,(%esp)
  305.   100342:   e8 d5 fc ff ff          call   10001c <set_interrupt>
  306.   set_interrupt(0x0B, (uint32_t)&int_handler0x0B,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  307.   100347:   b8 c2 0f 10 00          mov    $0x100fc2,%eax
  308.   10034c:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  309.   100353:   00
  310.   100354:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  311.   10035b:   00
  312.   10035c:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  313.   100363:   00
  314.   100364:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  315.   10036b:   00
  316.   10036c:   89 44 24 04             mov    %eax,0x4(%esp)
  317.   100370:   c7 04 24 0b 00 00 00    movl   $0xb,(%esp)
  318.   100377:   e8 a0 fc ff ff          call   10001c <set_interrupt>
  319.   set_interrupt(0x0C, (uint32_t)&int_handler0x0C,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  320.   10037c:   b8 c6 0f 10 00          mov    $0x100fc6,%eax
  321.   100381:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  322.   100388:   00
  323.   100389:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  324.   100390:   00
  325.   100391:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  326.   100398:   00
  327.   100399:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  328.   1003a0:   00
  329.   1003a1:   89 44 24 04             mov    %eax,0x4(%esp)
  330.   1003a5:   c7 04 24 0c 00 00 00    movl   $0xc,(%esp)
  331.   1003ac:   e8 6b fc ff ff          call   10001c <set_interrupt>
  332.   set_interrupt(0x0D, (uint32_t)&int_handler0x0D,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  333.   1003b1:   b8 ca 0f 10 00          mov    $0x100fca,%eax
  334.   1003b6:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  335.   1003bd:   00
  336.   1003be:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  337.   1003c5:   00
  338.   1003c6:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  339.   1003cd:   00
  340.   1003ce:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  341.   1003d5:   00
  342.   1003d6:   89 44 24 04             mov    %eax,0x4(%esp)
  343.   1003da:   c7 04 24 0d 00 00 00    movl   $0xd,(%esp)
  344.   1003e1:   e8 36 fc ff ff          call   10001c <set_interrupt>
  345.   set_interrupt(0x0E, (uint32_t)&int_handler0x0E,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  346.   1003e6:   b8 ce 0f 10 00          mov    $0x100fce,%eax
  347.   1003eb:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  348.   1003f2:   00
  349.   1003f3:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  350.   1003fa:   00
  351.   1003fb:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  352.   100402:   00
  353.   100403:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  354.   10040a:   00
  355.   10040b:   89 44 24 04             mov    %eax,0x4(%esp)
  356.   10040f:   c7 04 24 0e 00 00 00    movl   $0xe,(%esp)
  357.   100416:   e8 01 fc ff ff          call   10001c <set_interrupt>
  358.   set_interrupt(0x0F, (uint32_t)&int_handler0x0F,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  359.   10041b:   b8 d2 0f 10 00          mov    $0x100fd2,%eax
  360.   100420:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  361.   100427:   00
  362.   100428:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  363.   10042f:   00
  364.   100430:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  365.   100437:   00
  366.   100438:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  367.   10043f:   00
  368.   100440:   89 44 24 04             mov    %eax,0x4(%esp)
  369.   100444:   c7 04 24 0f 00 00 00    movl   $0xf,(%esp)
  370.   10044b:   e8 cc fb ff ff          call   10001c <set_interrupt>
  371.   set_interrupt(0x10, (uint32_t)&int_handler0x10,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  372.   100450:   b8 d8 0f 10 00          mov    $0x100fd8,%eax
  373.   100455:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  374.   10045c:   00
  375.   10045d:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  376.   100464:   00
  377.   100465:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  378.   10046c:   00
  379.   10046d:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  380.   100474:   00
  381.   100475:   89 44 24 04             mov    %eax,0x4(%esp)
  382.   100479:   c7 04 24 10 00 00 00    movl   $0x10,(%esp)
  383.   100480:   e8 97 fb ff ff          call   10001c <set_interrupt>
  384.   set_interrupt(0x11, (uint32_t)&int_handler0x11,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  385.   100485:   b8 de 0f 10 00          mov    $0x100fde,%eax
  386.   10048a:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  387.   100491:   00
  388.   100492:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  389.   100499:   00
  390.   10049a:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  391.   1004a1:   00
  392.   1004a2:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  393.   1004a9:   00
  394.   1004aa:   89 44 24 04             mov    %eax,0x4(%esp)
  395.   1004ae:   c7 04 24 11 00 00 00    movl   $0x11,(%esp)
  396.   1004b5:   e8 62 fb ff ff          call   10001c <set_interrupt>
  397.   set_interrupt(0x12, (uint32_t)&int_handler0x12,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  398.   1004ba:   b8 e2 0f 10 00          mov    $0x100fe2,%eax
  399.   1004bf:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  400.   1004c6:   00
  401.   1004c7:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  402.   1004ce:   00
  403.   1004cf:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  404.   1004d6:   00
  405.   1004d7:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  406.   1004de:   00
  407.   1004df:   89 44 24 04             mov    %eax,0x4(%esp)
  408.   1004e3:   c7 04 24 12 00 00 00    movl   $0x12,(%esp)
  409.   1004ea:   e8 2d fb ff ff          call   10001c <set_interrupt>
  410.   set_interrupt(0x13, (uint32_t)&int_handler0x13,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  411.   1004ef:   b8 e8 0f 10 00          mov    $0x100fe8,%eax
  412.   1004f4:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  413.   1004fb:   00
  414.   1004fc:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  415.   100503:   00
  416.   100504:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  417.   10050b:   00
  418.   10050c:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  419.   100513:   00
  420.   100514:   89 44 24 04             mov    %eax,0x4(%esp)
  421.   100518:   c7 04 24 13 00 00 00    movl   $0x13,(%esp)
  422.   10051f:   e8 f8 fa ff ff          call   10001c <set_interrupt>
  423.   set_interrupt(0x14, (uint32_t)&int_handler0x14,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  424.   100524:   b8 ee 0f 10 00          mov    $0x100fee,%eax
  425.   100529:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  426.   100530:   00
  427.   100531:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  428.   100538:   00
  429.   100539:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  430.   100540:   00
  431.   100541:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  432.   100548:   00
  433.   100549:   89 44 24 04             mov    %eax,0x4(%esp)
  434.   10054d:   c7 04 24 14 00 00 00    movl   $0x14,(%esp)
  435.   100554:   e8 c3 fa ff ff          call   10001c <set_interrupt>
  436.   set_interrupt(0x15, (uint32_t)&int_handler0x15,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  437.   100559:   b8 f4 0f 10 00          mov    $0x100ff4,%eax
  438.   10055e:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  439.   100565:   00
  440.   100566:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  441.   10056d:   00
  442.   10056e:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  443.   100575:   00
  444.   100576:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  445.   10057d:   00
  446.   10057e:   89 44 24 04             mov    %eax,0x4(%esp)
  447.   100582:   c7 04 24 15 00 00 00    movl   $0x15,(%esp)
  448.   100589:   e8 8e fa ff ff          call   10001c <set_interrupt>
  449.   set_interrupt(0x16, (uint32_t)&int_handler0x16,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  450.   10058e:   b8 fa 0f 10 00          mov    $0x100ffa,%eax
  451.   100593:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  452.   10059a:   00
  453.   10059b:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  454.   1005a2:   00
  455.   1005a3:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  456.   1005aa:   00
  457.   1005ab:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  458.   1005b2:   00
  459.   1005b3:   89 44 24 04             mov    %eax,0x4(%esp)
  460.   1005b7:   c7 04 24 16 00 00 00    movl   $0x16,(%esp)
  461.   1005be:   e8 59 fa ff ff          call   10001c <set_interrupt>
  462.   set_interrupt(0x17, (uint32_t)&int_handler0x17,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  463.   1005c3:   b8 00 10 10 00          mov    $0x101000,%eax
  464.   1005c8:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  465.   1005cf:   00
  466.   1005d0:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  467.   1005d7:   00
  468.   1005d8:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  469.   1005df:   00
  470.   1005e0:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  471.   1005e7:   00
  472.   1005e8:   89 44 24 04             mov    %eax,0x4(%esp)
  473.   1005ec:   c7 04 24 17 00 00 00    movl   $0x17,(%esp)
  474.   1005f3:   e8 24 fa ff ff          call   10001c <set_interrupt>
  475.   set_interrupt(0x18, (uint32_t)&int_handler0x18,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  476.   1005f8:   b8 06 10 10 00          mov    $0x101006,%eax
  477.   1005fd:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  478.   100604:   00
  479.   100605:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  480.   10060c:   00
  481.   10060d:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  482.   100614:   00
  483.   100615:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  484.   10061c:   00
  485.   10061d:   89 44 24 04             mov    %eax,0x4(%esp)
  486.   100621:   c7 04 24 18 00 00 00    movl   $0x18,(%esp)
  487.   100628:   e8 ef f9 ff ff          call   10001c <set_interrupt>
  488.   set_interrupt(0x19, (uint32_t)&int_handler0x19,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  489.   10062d:   b8 0c 10 10 00          mov    $0x10100c,%eax
  490.   100632:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  491.   100639:   00
  492.   10063a:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  493.   100641:   00
  494.   100642:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  495.   100649:   00
  496.   10064a:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  497.   100651:   00
  498.   100652:   89 44 24 04             mov    %eax,0x4(%esp)
  499.   100656:   c7 04 24 19 00 00 00    movl   $0x19,(%esp)
  500.   10065d:   e8 ba f9 ff ff          call   10001c <set_interrupt>
  501.   set_interrupt(0x1A, (uint32_t)&int_handler0x1A,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  502.   100662:   b8 12 10 10 00          mov    $0x101012,%eax
  503.   100667:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  504.   10066e:   00
  505.   10066f:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  506.   100676:   00
  507.   100677:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  508.   10067e:   00
  509.   10067f:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  510.   100686:   00
  511.   100687:   89 44 24 04             mov    %eax,0x4(%esp)
  512.   10068b:   c7 04 24 1a 00 00 00    movl   $0x1a,(%esp)
  513.   100692:   e8 85 f9 ff ff          call   10001c <set_interrupt>
  514.   set_interrupt(0x1B, (uint32_t)&int_handler0x1B,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  515.   100697:   b8 18 10 10 00          mov    $0x101018,%eax
  516.   10069c:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  517.   1006a3:   00
  518.   1006a4:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  519.   1006ab:   00
  520.   1006ac:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  521.   1006b3:   00
  522.   1006b4:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  523.   1006bb:   00
  524.   1006bc:   89 44 24 04             mov    %eax,0x4(%esp)
  525.   1006c0:   c7 04 24 1b 00 00 00    movl   $0x1b,(%esp)
  526.   1006c7:   e8 50 f9 ff ff          call   10001c <set_interrupt>
  527.   set_interrupt(0x1C, (uint32_t)&int_handler0x1C,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  528.   1006cc:   b8 1e 10 10 00          mov    $0x10101e,%eax
  529.   1006d1:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  530.   1006d8:   00
  531.   1006d9:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  532.   1006e0:   00
  533.   1006e1:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  534.   1006e8:   00
  535.   1006e9:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  536.   1006f0:   00
  537.   1006f1:   89 44 24 04             mov    %eax,0x4(%esp)
  538.   1006f5:   c7 04 24 1c 00 00 00    movl   $0x1c,(%esp)
  539.   1006fc:   e8 1b f9 ff ff          call   10001c <set_interrupt>
  540.   set_interrupt(0x1D, (uint32_t)&int_handler0x1D,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  541.   100701:   b8 24 10 10 00          mov    $0x101024,%eax
  542.   100706:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  543.   10070d:   00
  544.   10070e:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  545.   100715:   00
  546.   100716:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  547.   10071d:   00
  548.   10071e:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  549.   100725:   00
  550.   100726:   89 44 24 04             mov    %eax,0x4(%esp)
  551.   10072a:   c7 04 24 1d 00 00 00    movl   $0x1d,(%esp)
  552.   100731:   e8 e6 f8 ff ff          call   10001c <set_interrupt>
  553.   set_interrupt(0x1E, (uint32_t)&int_handler0x1E,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  554.   100736:   b8 2a 10 10 00          mov    $0x10102a,%eax
  555.   10073b:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  556.   100742:   00
  557.   100743:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  558.   10074a:   00
  559.   10074b:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  560.   100752:   00
  561.   100753:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  562.   10075a:   00
  563.   10075b:   89 44 24 04             mov    %eax,0x4(%esp)
  564.   10075f:   c7 04 24 1e 00 00 00    movl   $0x1e,(%esp)
  565.   100766:   e8 b1 f8 ff ff          call   10001c <set_interrupt>
  566.   set_interrupt(0x1F, (uint32_t)&int_handler0x1F,0x08,INTERRUPT_GATE,TRUE, 0  );//Exeption
  567.   10076b:   b8 30 10 10 00          mov    $0x101030,%eax
  568.   100770:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  569.   100777:   00
  570.   100778:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  571.   10077f:   00
  572.   100780:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  573.   100787:   00
  574.   100788:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  575.   10078f:   00
  576.   100790:   89 44 24 04             mov    %eax,0x4(%esp)
  577.   100794:   c7 04 24 1f 00 00 00    movl   $0x1f,(%esp)
  578.   10079b:   e8 7c f8 ff ff          call   10001c <set_interrupt>
  579.  
  580.   set_interrupt(0x20, (uint32_t)&int_handler0x20,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  581.   1007a0:   b8 88 0c 10 00          mov    $0x100c88,%eax
  582.   1007a5:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  583.   1007ac:   00
  584.   1007ad:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  585.   1007b4:   00
  586.   1007b5:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  587.   1007bc:   00
  588.   1007bd:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  589.   1007c4:   00
  590.   1007c5:   89 44 24 04             mov    %eax,0x4(%esp)
  591.   1007c9:   c7 04 24 20 00 00 00    movl   $0x20,(%esp)
  592.   1007d0:   e8 47 f8 ff ff          call   10001c <set_interrupt>
  593.   set_interrupt(0x21, (uint32_t)&int_handler0x21,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  594.   1007d5:   b8 8e 0c 10 00          mov    $0x100c8e,%eax
  595.   1007da:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  596.   1007e1:   00
  597.   1007e2:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  598.   1007e9:   00
  599.   1007ea:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  600.   1007f1:   00
  601.   1007f2:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  602.   1007f9:   00
  603.   1007fa:   89 44 24 04             mov    %eax,0x4(%esp)
  604.   1007fe:   c7 04 24 21 00 00 00    movl   $0x21,(%esp)
  605.   100805:   e8 12 f8 ff ff          call   10001c <set_interrupt>
  606.   set_interrupt(0x22, (uint32_t)&int_handler0x22,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  607.   10080a:   b8 94 0c 10 00          mov    $0x100c94,%eax
  608.   10080f:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  609.   100816:   00
  610.   100817:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  611.   10081e:   00
  612.   10081f:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  613.   100826:   00
  614.   100827:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  615.   10082e:   00
  616.   10082f:   89 44 24 04             mov    %eax,0x4(%esp)
  617.   100833:   c7 04 24 22 00 00 00    movl   $0x22,(%esp)
  618.   10083a:   e8 dd f7 ff ff          call   10001c <set_interrupt>
  619.   set_interrupt(0x23, (uint32_t)&int_handler0x23,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  620.   10083f:   b8 9a 0c 10 00          mov    $0x100c9a,%eax
  621.   100844:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  622.   10084b:   00
  623.   10084c:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  624.   100853:   00
  625.   100854:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  626.   10085b:   00
  627.   10085c:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  628.   100863:   00
  629.   100864:   89 44 24 04             mov    %eax,0x4(%esp)
  630.   100868:   c7 04 24 23 00 00 00    movl   $0x23,(%esp)
  631.   10086f:   e8 a8 f7 ff ff          call   10001c <set_interrupt>
  632.   set_interrupt(0x24, (uint32_t)&int_handler0x24,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  633.   100874:   b8 a0 0c 10 00          mov    $0x100ca0,%eax
  634.   100879:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  635.   100880:   00
  636.   100881:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  637.   100888:   00
  638.   100889:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  639.   100890:   00
  640.   100891:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  641.   100898:   00
  642.   100899:   89 44 24 04             mov    %eax,0x4(%esp)
  643.   10089d:   c7 04 24 24 00 00 00    movl   $0x24,(%esp)
  644.   1008a4:   e8 73 f7 ff ff          call   10001c <set_interrupt>
  645.   set_interrupt(0x25, (uint32_t)&int_handler0x25,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  646.   1008a9:   b8 a6 0c 10 00          mov    $0x100ca6,%eax
  647.   1008ae:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  648.   1008b5:   00
  649.   1008b6:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  650.   1008bd:   00
  651.   1008be:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  652.   1008c5:   00
  653.   1008c6:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  654.   1008cd:   00
  655.   1008ce:   89 44 24 04             mov    %eax,0x4(%esp)
  656.   1008d2:   c7 04 24 25 00 00 00    movl   $0x25,(%esp)
  657.   1008d9:   e8 3e f7 ff ff          call   10001c <set_interrupt>
  658.   set_interrupt(0x26, (uint32_t)&int_handler0x26,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  659.   1008de:   b8 ac 0c 10 00          mov    $0x100cac,%eax
  660.   1008e3:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  661.   1008ea:   00
  662.   1008eb:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  663.   1008f2:   00
  664.   1008f3:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  665.   1008fa:   00
  666.   1008fb:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  667.   100902:   00
  668.   100903:   89 44 24 04             mov    %eax,0x4(%esp)
  669.   100907:   c7 04 24 26 00 00 00    movl   $0x26,(%esp)
  670.   10090e:   e8 09 f7 ff ff          call   10001c <set_interrupt>
  671.   set_interrupt(0x27, (uint32_t)&int_handler0x27,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  672.   100913:   b8 b2 0c 10 00          mov    $0x100cb2,%eax
  673.   100918:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  674.   10091f:   00
  675.   100920:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  676.   100927:   00
  677.   100928:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  678.   10092f:   00
  679.   100930:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  680.   100937:   00
  681.   100938:   89 44 24 04             mov    %eax,0x4(%esp)
  682.   10093c:   c7 04 24 27 00 00 00    movl   $0x27,(%esp)
  683.   100943:   e8 d4 f6 ff ff          call   10001c <set_interrupt>
  684.   set_interrupt(0x28, (uint32_t)&int_handler0x28,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  685.   100948:   b8 b8 0c 10 00          mov    $0x100cb8,%eax
  686.   10094d:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  687.   100954:   00
  688.   100955:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  689.   10095c:   00
  690.   10095d:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  691.   100964:   00
  692.   100965:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  693.   10096c:   00
  694.   10096d:   89 44 24 04             mov    %eax,0x4(%esp)
  695.   100971:   c7 04 24 28 00 00 00    movl   $0x28,(%esp)
  696.   100978:   e8 9f f6 ff ff          call   10001c <set_interrupt>
  697.   set_interrupt(0x29, (uint32_t)&int_handler0x29,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  698.   10097d:   b8 be 0c 10 00          mov    $0x100cbe,%eax
  699.   100982:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  700.   100989:   00
  701.   10098a:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  702.   100991:   00
  703.   100992:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  704.   100999:   00
  705.   10099a:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  706.   1009a1:   00
  707.   1009a2:   89 44 24 04             mov    %eax,0x4(%esp)
  708.   1009a6:   c7 04 24 29 00 00 00    movl   $0x29,(%esp)
  709.   1009ad:   e8 6a f6 ff ff          call   10001c <set_interrupt>
  710.   set_interrupt(0x2A, (uint32_t)&int_handler0x2A,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  711.   1009b2:   b8 c4 0c 10 00          mov    $0x100cc4,%eax
  712.   1009b7:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  713.   1009be:   00
  714.   1009bf:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  715.   1009c6:   00
  716.   1009c7:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  717.   1009ce:   00
  718.   1009cf:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  719.   1009d6:   00
  720.   1009d7:   89 44 24 04             mov    %eax,0x4(%esp)
  721.   1009db:   c7 04 24 2a 00 00 00    movl   $0x2a,(%esp)
  722.   1009e2:   e8 35 f6 ff ff          call   10001c <set_interrupt>
  723.   set_interrupt(0x2B, (uint32_t)&int_handler0x2B,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  724.   1009e7:   b8 ca 0c 10 00          mov    $0x100cca,%eax
  725.   1009ec:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  726.   1009f3:   00
  727.   1009f4:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  728.   1009fb:   00
  729.   1009fc:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  730.   100a03:   00
  731.   100a04:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  732.   100a0b:   00
  733.   100a0c:   89 44 24 04             mov    %eax,0x4(%esp)
  734.   100a10:   c7 04 24 2b 00 00 00    movl   $0x2b,(%esp)
  735.   100a17:   e8 00 f6 ff ff          call   10001c <set_interrupt>
  736.   set_interrupt(0x2C, (uint32_t)&int_handler0x2C,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  737.   100a1c:   b8 d0 0c 10 00          mov    $0x100cd0,%eax
  738.   100a21:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  739.   100a28:   00
  740.   100a29:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  741.   100a30:   00
  742.   100a31:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  743.   100a38:   00
  744.   100a39:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  745.   100a40:   00
  746.   100a41:   89 44 24 04             mov    %eax,0x4(%esp)
  747.   100a45:   c7 04 24 2c 00 00 00    movl   $0x2c,(%esp)
  748.   100a4c:   e8 cb f5 ff ff          call   10001c <set_interrupt>
  749.   set_interrupt(0x2D, (uint32_t)&int_handler0x2D,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  750.   100a51:   b8 d6 0c 10 00          mov    $0x100cd6,%eax
  751.   100a56:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  752.   100a5d:   00
  753.   100a5e:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  754.   100a65:   00
  755.   100a66:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  756.   100a6d:   00
  757.   100a6e:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  758.   100a75:   00
  759.   100a76:   89 44 24 04             mov    %eax,0x4(%esp)
  760.   100a7a:   c7 04 24 2d 00 00 00    movl   $0x2d,(%esp)
  761.   100a81:   e8 96 f5 ff ff          call   10001c <set_interrupt>
  762.   set_interrupt(0x2E, (uint32_t)&int_handler0x2E,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  763.   100a86:   b8 dc 0c 10 00          mov    $0x100cdc,%eax
  764.   100a8b:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  765.   100a92:   00
  766.   100a93:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  767.   100a9a:   00
  768.   100a9b:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  769.   100aa2:   00
  770.   100aa3:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  771.   100aaa:   00
  772.   100aab:   89 44 24 04             mov    %eax,0x4(%esp)
  773.   100aaf:   c7 04 24 2e 00 00 00    movl   $0x2e,(%esp)
  774.   100ab6:   e8 61 f5 ff ff          call   10001c <set_interrupt>
  775.   set_interrupt(0x2F, (uint32_t)&int_handler0x2F,0x08,INTERRUPT_GATE,TRUE, 0  );//IRQ
  776.   100abb:   b8 e2 0c 10 00          mov    $0x100ce2,%eax
  777.   100ac0:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  778.   100ac7:   00
  779.   100ac8:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  780.   100acf:   00
  781.   100ad0:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  782.   100ad7:   00
  783.   100ad8:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  784.   100adf:   00
  785.   100ae0:   89 44 24 04             mov    %eax,0x4(%esp)
  786.   100ae4:   c7 04 24 2f 00 00 00    movl   $0x2f,(%esp)
  787.   100aeb:   e8 2c f5 ff ff          call   10001c <set_interrupt>
  788.  
  789.   set_interrupt(0x30, (uint32_t)&test_int_handler00,0x08,INTERRUPT_GATE,TRUE,3);//Software
  790.   100af0:   b8 50 10 10 00          mov    $0x101050,%eax
  791.   100af5:   c7 44 24 14 03 00 00    movl   $0x3,0x14(%esp)
  792.   100afc:   00
  793.   100afd:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  794.   100b04:   00
  795.   100b05:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  796.   100b0c:   00
  797.   100b0d:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  798.   100b14:   00
  799.   100b15:   89 44 24 04             mov    %eax,0x4(%esp)
  800.   100b19:   c7 04 24 30 00 00 00    movl   $0x30,(%esp)
  801.   100b20:   e8 f7 f4 ff ff          call   10001c <set_interrupt>
  802.   set_interrupt(0x31, (uint32_t)&test_int_handler01,0x08,INTERRUPT_GATE,TRUE,3);//Software
  803.   100b25:   b8 64 10 10 00          mov    $0x101064,%eax
  804.   100b2a:   c7 44 24 14 03 00 00    movl   $0x3,0x14(%esp)
  805.   100b31:   00
  806.   100b32:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  807.   100b39:   00
  808.   100b3a:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  809.   100b41:   00
  810.   100b42:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  811.   100b49:   00
  812.   100b4a:   89 44 24 04             mov    %eax,0x4(%esp)
  813.   100b4e:   c7 04 24 31 00 00 00    movl   $0x31,(%esp)
  814.   100b55:   e8 c2 f4 ff ff          call   10001c <set_interrupt>
  815. }
  816.   100b5a:   c9                      leave  
  817.   100b5b:   c3                      ret    
  818.  
  819. 00100b5c <set_new_int>:
  820. /* ---------- Hardwareinterrupt (neu) registerien ----- */
  821. void set_new_int(int i, uint32_t offset){
  822.   100b5c:   55                      push   %ebp
  823.   100b5d:   89 e5                   mov    %esp,%ebp
  824.   100b5f:   83 ec 18                sub    $0x18,%esp
  825.   set_interrupt(i,offset,0x08,INTERRUPT_GATE,TRUE,0);
  826.   100b62:   c7 44 24 14 00 00 00    movl   $0x0,0x14(%esp)
  827.   100b69:   00
  828.   100b6a:   c7 44 24 10 01 00 00    movl   $0x1,0x10(%esp)
  829.   100b71:   00
  830.   100b72:   c7 44 24 0c 06 00 00    movl   $0x6,0xc(%esp)
  831.   100b79:   00
  832.   100b7a:   c7 44 24 08 08 00 00    movl   $0x8,0x8(%esp)
  833.   100b81:   00
  834.   100b82:   8b 45 0c                mov    0xc(%ebp),%eax
  835.   100b85:   89 44 24 04             mov    %eax,0x4(%esp)
  836.   100b89:   8b 45 08                mov    0x8(%ebp),%eax
  837.   100b8c:   89 04 24                mov    %eax,(%esp)
  838.   100b8f:   e8 88 f4 ff ff          call   10001c <set_interrupt>
  839. }
  840.   100b94:   c9                      leave  
  841.   100b95:   c3                      ret    
  842.   100b96:   90                      nop
  843.   100b97:   90                      nop
  844.  
  845. 00100b98 <outb>:
  846. #define _PORTIO_H
  847.  
  848. #include <stdint.h>
  849.  
  850. /* ---------- 8-Bit daten an 16-Bit port -------------- */
  851. static inline void outb(uint16_t port, uint8_t data){
  852.   100b98:   55                      push   %ebp
  853.   100b99:   89 e5                   mov    %esp,%ebp
  854.   100b9b:   83 ec 08                sub    $0x8,%esp
  855.   100b9e:   8b 55 08                mov    0x8(%ebp),%edx
  856.   100ba1:   8b 45 0c                mov    0xc(%ebp),%eax
  857.   100ba4:   66 89 55 fc             mov    %dx,-0x4(%ebp)
  858.   100ba8:   88 45 f8                mov    %al,-0x8(%ebp)
  859.    asm("outb %0, %1" : : "a" (data), "Nd" (port));
  860.   100bab:   0f b6 45 f8             movzbl -0x8(%ebp),%eax
  861.   100baf:   0f b7 55 fc             movzwl -0x4(%ebp),%edx
  862.   100bb3:   ee                      out    %al,(%dx)
  863. }
  864.   100bb4:   c9                      leave  
  865.   100bb5:   c3                      ret    
  866.  
  867. 00100bb6 <init_pic>:
  868.  *  (C) Copyright 2012 Michael Sippel
  869.  */
  870. #include <portio.h>
  871. #include "interrupt.h"
  872. /* ---------- Initalisierung des PIC ------------------ */
  873. void init_pic(void){
  874.   100bb6:   55                      push   %ebp
  875.   100bb7:   89 e5                   mov    %esp,%ebp
  876.   100bb9:   83 ec 08                sub    $0x8,%esp
  877.   //PICs initalisieren
  878.   outb(PIC_MASTER_i,PIC_INIT);
  879.   100bbc:   c7 44 24 04 11 00 00    movl   $0x11,0x4(%esp)
  880.   100bc3:   00
  881.   100bc4:   c7 04 24 20 00 00 00    movl   $0x20,(%esp)
  882.   100bcb:   e8 c8 ff ff ff          call   100b98 <outb>
  883.   outb(PIC_SLAVE_i,PIC_INIT);
  884.   100bd0:   c7 44 24 04 11 00 00    movl   $0x11,0x4(%esp)
  885.   100bd7:   00
  886.   100bd8:   c7 04 24 a0 00 00 00    movl   $0xa0,(%esp)
  887.   100bdf:   e8 b4 ff ff ff          call   100b98 <outb>
  888.  
  889.   //Master
  890.   outb(PIC_MASTER_c, FIRST_IRQ);//Erstes IRQ
  891.   100be4:   c7 44 24 04 20 00 00    movl   $0x20,0x4(%esp)
  892.   100beb:   00
  893.   100bec:   c7 04 24 21 00 00 00    movl   $0x21,(%esp)
  894.   100bf3:   e8 a0 ff ff ff          call   100b98 <outb>
  895.   outb(PIC_MASTER_c, 0x04);     //An IRQ 2 hängt der Slave
  896.   100bf8:   c7 44 24 04 04 00 00    movl   $0x4,0x4(%esp)
  897.   100bff:   00
  898.   100c00:   c7 04 24 21 00 00 00    movl   $0x21,(%esp)
  899.   100c07:   e8 8c ff ff ff          call   100b98 <outb>
  900.   outb(PIC_MASTER_c, 0x01);     //ICW 4
  901.   100c0c:   c7 44 24 04 01 00 00    movl   $0x1,0x4(%esp)
  902.   100c13:   00
  903.   100c14:   c7 04 24 21 00 00 00    movl   $0x21,(%esp)
  904.   100c1b:   e8 78 ff ff ff          call   100b98 <outb>
  905.   //Slave
  906.   outb(PIC_SLAVE_c,  FIRST_IRQ + 8);//Interrupt für IRQ 8
  907.   100c20:   c7 44 24 04 28 00 00    movl   $0x28,0x4(%esp)
  908.   100c27:   00
  909.   100c28:   c7 04 24 a1 00 00 00    movl   $0xa1,(%esp)
  910.   100c2f:   e8 64 ff ff ff          call   100b98 <outb>
  911.   outb(PIC_SLAVE_c,  0x02);         //An IRQ 2 hängt der Slave
  912.   100c34:   c7 44 24 04 02 00 00    movl   $0x2,0x4(%esp)
  913.   100c3b:   00
  914.   100c3c:   c7 04 24 a1 00 00 00    movl   $0xa1,(%esp)
  915.   100c43:   e8 50 ff ff ff          call   100b98 <outb>
  916.   outb(PIC_SLAVE_c,  0x01);         //ICW 4
  917.   100c48:   c7 44 24 04 01 00 00    movl   $0x1,0x4(%esp)
  918.   100c4f:   00
  919.   100c50:   c7 04 24 a1 00 00 00    movl   $0xa1,(%esp)
  920.   100c57:   e8 3c ff ff ff          call   100b98 <outb>
  921.  
  922.   // All IRQs aktivieren / demaskieren
  923.   outb(PIC_MASTER_i, 0x0);
  924.   100c5c:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
  925.   100c63:   00
  926.   100c64:   c7 04 24 20 00 00 00    movl   $0x20,(%esp)
  927.   100c6b:   e8 28 ff ff ff          call   100b98 <outb>
  928.   outb(PIC_SLAVE_i,  0x0);
  929.   100c70:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
  930.   100c77:   00
  931.   100c78:   c7 04 24 a0 00 00 00    movl   $0xa0,(%esp)
  932.   100c7f:   e8 14 ff ff ff          call   100b98 <outb>
  933. }
  934.   100c84:   c9                      leave  
  935.   100c85:   c3                      ret    
  936.   100c86:   90                      nop
  937.   100c87:   90                      nop
  938.  
  939. 00100c88 <int_handler0x20>:
  940.   100c88:   e8 34 0a 00 00          call   1016c1 <keyboard_irq_handler>
  941.   100c8d:   cf                      iret  
  942.  
  943. 00100c8e <int_handler0x21>:
  944.   100c8e:   e8 2e 0a 00 00          call   1016c1 <keyboard_irq_handler>
  945.   100c93:   cf                      iret  
  946.  
  947. 00100c94 <int_handler0x22>:
  948.   100c94:   e8 28 0a 00 00          call   1016c1 <keyboard_irq_handler>
  949.   100c99:   cf                      iret  
  950.  
  951. 00100c9a <int_handler0x23>:
  952.   100c9a:   e8 22 0a 00 00          call   1016c1 <keyboard_irq_handler>
  953.   100c9f:   cf                      iret  
  954.  
  955. 00100ca0 <int_handler0x24>:
  956.   100ca0:   e8 1c 0a 00 00          call   1016c1 <keyboard_irq_handler>
  957.   100ca5:   cf                      iret  
  958.  
  959. 00100ca6 <int_handler0x25>:
  960.   100ca6:   e8 16 0a 00 00          call   1016c1 <keyboard_irq_handler>
  961.   100cab:   cf                      iret  
  962.  
  963. 00100cac <int_handler0x26>:
  964.   100cac:   e8 10 0a 00 00          call   1016c1 <keyboard_irq_handler>
  965.   100cb1:   cf                      iret  
  966.  
  967. 00100cb2 <int_handler0x27>:
  968.   100cb2:   e8 0a 0a 00 00          call   1016c1 <keyboard_irq_handler>
  969.   100cb7:   cf                      iret  
  970.  
  971. 00100cb8 <int_handler0x28>:
  972.   100cb8:   e8 04 0a 00 00          call   1016c1 <keyboard_irq_handler>
  973.   100cbd:   cf                      iret  
  974.  
  975. 00100cbe <int_handler0x29>:
  976.   100cbe:   e8 fe 09 00 00          call   1016c1 <keyboard_irq_handler>
  977.   100cc3:   cf                      iret  
  978.  
  979. 00100cc4 <int_handler0x2A>:
  980.   100cc4:   e8 f8 09 00 00          call   1016c1 <keyboard_irq_handler>
  981.   100cc9:   cf                      iret  
  982.  
  983. 00100cca <int_handler0x2B>:
  984.   100cca:   e8 f2 09 00 00          call   1016c1 <keyboard_irq_handler>
  985.   100ccf:   cf                      iret  
  986.  
  987. 00100cd0 <int_handler0x2C>:
  988.   100cd0:   e8 ec 09 00 00          call   1016c1 <keyboard_irq_handler>
  989.   100cd5:   cf                      iret  
  990.  
  991. 00100cd6 <int_handler0x2D>:
  992.   100cd6:   e8 e6 09 00 00          call   1016c1 <keyboard_irq_handler>
  993.   100cdb:   cf                      iret  
  994.  
  995. 00100cdc <int_handler0x2E>:
  996.   100cdc:   e8 e0 09 00 00          call   1016c1 <keyboard_irq_handler>
  997.   100ce1:   cf                      iret  
  998.  
  999. 00100ce2 <int_handler0x2F>:
  1000.   100ce2:   e8 da 09 00 00          call   1016c1 <keyboard_irq_handler>
  1001.   100ce7:   cf                      iret  
  1002.  
  1003. 00100ce8 <cpu_dump>:
  1004. /* ---------- CPU sichern  ---------------------------- */
  1005. void push_cpu(void);
  1006. /* ---------- CPU wiederherstellen ---------------------*/
  1007. void pop_cpu(void);
  1008. /* ---------- CPU ausgeben ---------------------------- */
  1009. void cpu_dump(cpu_state *cpu){
  1010.   100ce8:   55                      push   %ebp
  1011.   100ce9:   89 e5                   mov    %esp,%ebp
  1012.   100ceb:   53                      push   %ebx
  1013.   100cec:   83 ec 24                sub    $0x24,%esp
  1014.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1015.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1016.   100cef:   8b 45 08                mov    0x8(%ebp),%eax
  1017. void push_cpu(void);
  1018. /* ---------- CPU wiederherstellen ---------------------*/
  1019. void pop_cpu(void);
  1020. /* ---------- CPU ausgeben ---------------------------- */
  1021. void cpu_dump(cpu_state *cpu){
  1022.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1023.   100cf2:   8b 58 0c                mov    0xc(%eax),%ebx
  1024.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1025.   100cf5:   8b 45 08                mov    0x8(%ebp),%eax
  1026. void push_cpu(void);
  1027. /* ---------- CPU wiederherstellen ---------------------*/
  1028. void pop_cpu(void);
  1029. /* ---------- CPU ausgeben ---------------------------- */
  1030. void cpu_dump(cpu_state *cpu){
  1031.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1032.   100cf8:   8b 48 08                mov    0x8(%eax),%ecx
  1033.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1034.   100cfb:   8b 45 08                mov    0x8(%ebp),%eax
  1035. void push_cpu(void);
  1036. /* ---------- CPU wiederherstellen ---------------------*/
  1037. void pop_cpu(void);
  1038. /* ---------- CPU ausgeben ---------------------------- */
  1039. void cpu_dump(cpu_state *cpu){
  1040.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1041.   100cfe:   8b 50 04                mov    0x4(%eax),%edx
  1042.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1043.   100d01:   8b 45 08                mov    0x8(%ebp),%eax
  1044. void push_cpu(void);
  1045. /* ---------- CPU wiederherstellen ---------------------*/
  1046. void pop_cpu(void);
  1047. /* ---------- CPU ausgeben ---------------------------- */
  1048. void cpu_dump(cpu_state *cpu){
  1049.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1050.   100d04:   8b 00                   mov    (%eax),%eax
  1051.   100d06:   89 5c 24 10             mov    %ebx,0x10(%esp)
  1052.   100d0a:   89 4c 24 0c             mov    %ecx,0xc(%esp)
  1053.   100d0e:   89 54 24 08             mov    %edx,0x8(%esp)
  1054.   100d12:   89 44 24 04             mov    %eax,0x4(%esp)
  1055.   100d16:   c7 04 24 10 30 10 00    movl   $0x103010,(%esp)
  1056.   100d1d:   e8 b8 22 00 00          call   102fda <printf>
  1057.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1058.   printf("EIP = 0x%x CS = 0x%x  EFLAGS = 0x%x ESP = 0x%x   \n",
  1059.      cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
  1060.   100d22:   8b 45 08                mov    0x8(%ebp),%eax
  1061. void pop_cpu(void);
  1062. /* ---------- CPU ausgeben ---------------------------- */
  1063. void cpu_dump(cpu_state *cpu){
  1064.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1065.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1066.   printf("EIP = 0x%x CS = 0x%x  EFLAGS = 0x%x ESP = 0x%x   \n",
  1067.   100d25:   8b 58 2c                mov    0x2c(%eax),%ebx
  1068.      cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
  1069.   100d28:   8b 45 08                mov    0x8(%ebp),%eax
  1070. void pop_cpu(void);
  1071. /* ---------- CPU ausgeben ---------------------------- */
  1072. void cpu_dump(cpu_state *cpu){
  1073.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1074.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1075.   printf("EIP = 0x%x CS = 0x%x  EFLAGS = 0x%x ESP = 0x%x   \n",
  1076.   100d2b:   8b 48 2c                mov    0x2c(%eax),%ecx
  1077.      cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
  1078.   100d2e:   8b 45 08                mov    0x8(%ebp),%eax
  1079. void pop_cpu(void);
  1080. /* ---------- CPU ausgeben ---------------------------- */
  1081. void cpu_dump(cpu_state *cpu){
  1082.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1083.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1084.   printf("EIP = 0x%x CS = 0x%x  EFLAGS = 0x%x ESP = 0x%x   \n",
  1085.   100d31:   8b 50 28                mov    0x28(%eax),%edx
  1086.      cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
  1087.   100d34:   8b 45 08                mov    0x8(%ebp),%eax
  1088. void pop_cpu(void);
  1089. /* ---------- CPU ausgeben ---------------------------- */
  1090. void cpu_dump(cpu_state *cpu){
  1091.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1092.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1093.   printf("EIP = 0x%x CS = 0x%x  EFLAGS = 0x%x ESP = 0x%x   \n",
  1094.   100d37:   8b 40 24                mov    0x24(%eax),%eax
  1095.   100d3a:   89 5c 24 10             mov    %ebx,0x10(%esp)
  1096.   100d3e:   89 4c 24 0c             mov    %ecx,0xc(%esp)
  1097.   100d42:   89 54 24 08             mov    %edx,0x8(%esp)
  1098.   100d46:   89 44 24 04             mov    %eax,0x4(%esp)
  1099.   100d4a:   c7 04 24 44 30 10 00    movl   $0x103044,(%esp)
  1100.   100d51:   e8 84 22 00 00          call   102fda <printf>
  1101.      cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
  1102.   printf("SS  = 0x%x INTR=0x%x  ERROR  = 0x%x                 \n",
  1103.      cpu->ss,cpu->intrpt,cpu->error_code);
  1104.   100d56:   8b 45 08                mov    0x8(%ebp),%eax
  1105. void cpu_dump(cpu_state *cpu){
  1106.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1107.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1108.   printf("EIP = 0x%x CS = 0x%x  EFLAGS = 0x%x ESP = 0x%x   \n",
  1109.      cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
  1110.   printf("SS  = 0x%x INTR=0x%x  ERROR  = 0x%x                 \n",
  1111.   100d59:   8b 48 20                mov    0x20(%eax),%ecx
  1112.      cpu->ss,cpu->intrpt,cpu->error_code);
  1113.   100d5c:   8b 45 08                mov    0x8(%ebp),%eax
  1114. void cpu_dump(cpu_state *cpu){
  1115.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1116.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1117.   printf("EIP = 0x%x CS = 0x%x  EFLAGS = 0x%x ESP = 0x%x   \n",
  1118.      cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
  1119.   printf("SS  = 0x%x INTR=0x%x  ERROR  = 0x%x                 \n",
  1120.   100d5f:   8b 50 1c                mov    0x1c(%eax),%edx
  1121.      cpu->ss,cpu->intrpt,cpu->error_code);
  1122.   100d62:   8b 45 08                mov    0x8(%ebp),%eax
  1123. void cpu_dump(cpu_state *cpu){
  1124.   printf("EAX = 0x%x EBX= 0x%x  ECX    = 0x%x EDX = 0x%x   \n",
  1125.      cpu->eax,cpu->ebx,cpu->ecx,cpu->edx);
  1126.   printf("EIP = 0x%x CS = 0x%x  EFLAGS = 0x%x ESP = 0x%x   \n",
  1127.      cpu->eip,cpu->cs, cpu->eflags,cpu->eflags);
  1128.   printf("SS  = 0x%x INTR=0x%x  ERROR  = 0x%x                 \n",
  1129.   100d65:   8b 40 34                mov    0x34(%eax),%eax
  1130.   100d68:   89 4c 24 0c             mov    %ecx,0xc(%esp)
  1131.   100d6c:   89 54 24 08             mov    %edx,0x8(%esp)
  1132.   100d70:   89 44 24 04             mov    %eax,0x4(%esp)
  1133.   100d74:   c7 04 24 78 30 10 00    movl   $0x103078,(%esp)
  1134.   100d7b:   e8 5a 22 00 00          call   102fda <printf>
  1135.      cpu->ss,cpu->intrpt,cpu->error_code);
  1136. }
  1137.   100d80:   83 c4 24                add    $0x24,%esp
  1138.   100d83:   5b                      pop    %ebx
  1139.   100d84:   5d                      pop    %ebp
  1140.   100d85:   c3                      ret    
  1141.  
  1142. 00100d86 <handle_exeption>:
  1143. #include <stdint.h>
  1144. #include <console.h>
  1145. #include "cpu.h"
  1146.  
  1147.  
  1148. void handle_exeption(cpu_state *cpu){
  1149.   100d86:   55                      push   %ebp
  1150.   100d87:   89 e5                   mov    %esp,%ebp
  1151.   100d89:   83 ec 28                sub    $0x28,%esp
  1152.     //Prüfen ob wirklich exeption
  1153.     char* err;
  1154.     switch(cpu->intrpt){
  1155.   100d8c:   8b 45 08                mov    0x8(%ebp),%eax
  1156.   100d8f:   8b 40 1c                mov    0x1c(%eax),%eax
  1157.   100d92:   83 f8 1f                cmp    $0x1f,%eax
  1158.   100d95:   0f 87 5b 01 00 00       ja     100ef6 <handle_exeption+0x170>
  1159.   100d9b:   8b 04 85 60 32 10 00    mov    0x103260(,%eax,4),%eax
  1160.   100da2:   ff e0                   jmp    *%eax
  1161.       case 0x00: err =  "Divide by Zero";break;
  1162.   100da4:   c7 45 f4 ae 30 10 00    movl   $0x1030ae,-0xc(%ebp)
  1163.   100dab:   e9 46 01 00 00          jmp    100ef6 <handle_exeption+0x170>
  1164.       case 0x01: err =  "Debug";break;
  1165.   100db0:   c7 45 f4 bd 30 10 00    movl   $0x1030bd,-0xc(%ebp)
  1166.   100db7:   e9 3a 01 00 00          jmp    100ef6 <handle_exeption+0x170>
  1167.       case 0x02: err =  "Non Maskable Interrupt";break;
  1168.   100dbc:   c7 45 f4 c3 30 10 00    movl   $0x1030c3,-0xc(%ebp)
  1169.   100dc3:   e9 2e 01 00 00          jmp    100ef6 <handle_exeption+0x170>
  1170.       case 0x03: err =  "Breakpoint";break;
  1171.   100dc8:   c7 45 f4 da 30 10 00    movl   $0x1030da,-0xc(%ebp)
  1172.   100dcf:   e9 22 01 00 00          jmp    100ef6 <handle_exeption+0x170>
  1173.       case 0x04: err =  "Overflow";break;
  1174.   100dd4:   c7 45 f4 e5 30 10 00    movl   $0x1030e5,-0xc(%ebp)
  1175.   100ddb:   e9 16 01 00 00          jmp    100ef6 <handle_exeption+0x170>
  1176.       case 0x05: err =  "Bound Range";break;
  1177.   100de0:   c7 45 f4 ee 30 10 00    movl   $0x1030ee,-0xc(%ebp)
  1178.   100de7:   e9 0a 01 00 00          jmp    100ef6 <handle_exeption+0x170>
  1179.       case 0x06: err =  "Invalid Opcode";break;
  1180.   100dec:   c7 45 f4 fa 30 10 00    movl   $0x1030fa,-0xc(%ebp)
  1181.   100df3:   e9 fe 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1182.       case 0x07: err =  "Device Not Aviable";break;
  1183.   100df8:   c7 45 f4 09 31 10 00    movl   $0x103109,-0xc(%ebp)
  1184.   100dff:   e9 f2 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1185.       case 0x08: err =  "Double Fault";break;
  1186.   100e04:   c7 45 f4 1c 31 10 00    movl   $0x10311c,-0xc(%ebp)
  1187.   100e0b:   e9 e6 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1188.       case 0x09: err =  "Coprocessor Segment Overrun";break;
  1189.   100e10:   c7 45 f4 29 31 10 00    movl   $0x103129,-0xc(%ebp)
  1190.   100e17:   e9 da 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1191.       case 0x0A: err =  "Invalid TTS";break;
  1192.   100e1c:   c7 45 f4 45 31 10 00    movl   $0x103145,-0xc(%ebp)
  1193.   100e23:   e9 ce 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1194.       case 0x0B: err =  "Segment not Present";break;
  1195.   100e28:   c7 45 f4 51 31 10 00    movl   $0x103151,-0xc(%ebp)
  1196.   100e2f:   e9 c2 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1197.       case 0x0C: err =  "Stack Fault";break;
  1198.   100e34:   c7 45 f4 65 31 10 00    movl   $0x103165,-0xc(%ebp)
  1199.   100e3b:   e9 b6 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1200.       case 0x0D: err =  "General Protection";break;
  1201.   100e40:   c7 45 f4 71 31 10 00    movl   $0x103171,-0xc(%ebp)
  1202.   100e47:   e9 aa 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1203.       case 0x0E: err =  "Page Fault";break;
  1204.   100e4c:   c7 45 f4 84 31 10 00    movl   $0x103184,-0xc(%ebp)
  1205.   100e53:   e9 9e 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1206.       case 0x0F: err =  "Reserved Interrupt";break;
  1207.   100e58:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1208.   100e5f:   e9 92 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1209.       case 0x10: err =  "x87 Floating Point";break;
  1210.   100e64:   c7 45 f4 a2 31 10 00    movl   $0x1031a2,-0xc(%ebp)
  1211.   100e6b:   e9 86 00 00 00          jmp    100ef6 <handle_exeption+0x170>
  1212.       case 0x11: err =  "Alignment Check";break;
  1213.   100e70:   c7 45 f4 b5 31 10 00    movl   $0x1031b5,-0xc(%ebp)
  1214.   100e77:   eb 7d                   jmp    100ef6 <handle_exeption+0x170>
  1215.       case 0x12: err =  "Machine Check";break;
  1216.   100e79:   c7 45 f4 c5 31 10 00    movl   $0x1031c5,-0xc(%ebp)
  1217.   100e80:   eb 74                   jmp    100ef6 <handle_exeption+0x170>
  1218.       case 0x13: err =  "SIMD Floating Point";break;
  1219.   100e82:   c7 45 f4 d3 31 10 00    movl   $0x1031d3,-0xc(%ebp)
  1220.   100e89:   eb 6b                   jmp    100ef6 <handle_exeption+0x170>
  1221.       case 0x14: err =  "Reserved Interrupt";break;
  1222.   100e8b:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1223.   100e92:   eb 62                   jmp    100ef6 <handle_exeption+0x170>
  1224.       case 0x15: err =  "Reserved Interrupt";break;
  1225.   100e94:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1226.   100e9b:   eb 59                   jmp    100ef6 <handle_exeption+0x170>
  1227.       case 0x16: err =  "Reserved Interrupt";break;
  1228.   100e9d:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1229.   100ea4:   eb 50                   jmp    100ef6 <handle_exeption+0x170>
  1230.       case 0x17: err =  "Reserved Interrupt";break;
  1231.   100ea6:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1232.   100ead:   eb 47                   jmp    100ef6 <handle_exeption+0x170>
  1233.       case 0x18: err =  "Reserved Interrupt";break;
  1234.   100eaf:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1235.   100eb6:   eb 3e                   jmp    100ef6 <handle_exeption+0x170>
  1236.       case 0x19: err =  "Reserved Interrupt";break;
  1237.   100eb8:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1238.   100ebf:   eb 35                   jmp    100ef6 <handle_exeption+0x170>
  1239.       case 0x1A: err =  "Reserved Interrupt";break;
  1240.   100ec1:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1241.   100ec8:   eb 2c                   jmp    100ef6 <handle_exeption+0x170>
  1242.       case 0x1B: err =  "Reserved Interrupt";break;
  1243.   100eca:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1244.   100ed1:   eb 23                   jmp    100ef6 <handle_exeption+0x170>
  1245.       case 0x1C: err =  "Reserved Interrupt";break;
  1246.   100ed3:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1247.   100eda:   eb 1a                   jmp    100ef6 <handle_exeption+0x170>
  1248.       case 0x1D: err =  "Reserved Interrupt";break;
  1249.   100edc:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1250.   100ee3:   eb 11                   jmp    100ef6 <handle_exeption+0x170>
  1251.       case 0x1E: err =  "Reserved Interrupt";break;
  1252.   100ee5:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1253.   100eec:   eb 08                   jmp    100ef6 <handle_exeption+0x170>
  1254.       case 0x1F: err =  "Reserved Interrupt";break;
  1255.   100eee:   c7 45 f4 8f 31 10 00    movl   $0x10318f,-0xc(%ebp)
  1256.   100ef5:   90                      nop
  1257.     }
  1258.     if(cpu->intrpt <= 0x1f){
  1259.   100ef6:   8b 45 08                mov    0x8(%ebp),%eax
  1260.   100ef9:   8b 40 1c                mov    0x1c(%eax),%eax
  1261.   100efc:   83 f8 1f                cmp    $0x1f,%eax
  1262.   100eff:   77 46                   ja     100f47 <handle_exeption+0x1c1>
  1263.     color = 0xf4;
  1264.   100f01:   c7 05 e4 46 10 00 f4    movl   $0xf4,0x1046e4
  1265.   100f08:   00 00 00
  1266.     printf("\nExeption %d #",cpu->intrpt);
  1267.   100f0b:   8b 45 08                mov    0x8(%ebp),%eax
  1268.   100f0e:   8b 40 1c                mov    0x1c(%eax),%eax
  1269.   100f11:   89 44 24 04             mov    %eax,0x4(%esp)
  1270.   100f15:   c7 04 24 e7 31 10 00    movl   $0x1031e7,(%esp)
  1271.   100f1c:   e8 b9 20 00 00          call   102fda <printf>
  1272.     printf(err);
  1273.   100f21:   8b 45 f4                mov    -0xc(%ebp),%eax
  1274.   100f24:   89 04 24                mov    %eax,(%esp)
  1275.   100f27:   e8 ae 20 00 00          call   102fda <printf>
  1276.     printf("\nKernel stopped.\n\n");
  1277.   100f2c:   c7 04 24 f6 31 10 00    movl   $0x1031f6,(%esp)
  1278.   100f33:   e8 aa 1f 00 00          call   102ee2 <puts>
  1279.    
  1280.     //cpu ausgeben
  1281.     cpu_dump(cpu);
  1282.   100f38:   8b 45 08                mov    0x8(%ebp),%eax
  1283.   100f3b:   89 04 24                mov    %eax,(%esp)
  1284.   100f3e:   e8 a5 fd ff ff          call   100ce8 <cpu_dump>
  1285.  
  1286.     /* FIXME: Bis jetzt ersteinmal Kernel anhalten,
  1287.      * später programm beenden (hab ich noch nicht)
  1288.      */
  1289.     while(1){//Kernel anhalten
  1290.         asm("cli; hlt");
  1291.   100f43:   fa                      cli    
  1292.   100f44:   f4                      hlt    
  1293.     }
  1294.   100f45:   eb fc                   jmp    100f43 <handle_exeption+0x1bd>
  1295.     }else{
  1296.     printf("Interrupt 0x%x (%d) isn't a Exeption!\n"
  1297.            "Exeptions are only from Interrupt 0x00 to 0x1f.\n",
  1298.            cpu->intrpt,cpu->intrpt);
  1299.   100f47:   8b 45 08                mov    0x8(%ebp),%eax
  1300.      */
  1301.     while(1){//Kernel anhalten
  1302.         asm("cli; hlt");
  1303.     }
  1304.     }else{
  1305.     printf("Interrupt 0x%x (%d) isn't a Exeption!\n"
  1306.   100f4a:   8b 50 1c                mov    0x1c(%eax),%edx
  1307.            "Exeptions are only from Interrupt 0x00 to 0x1f.\n",
  1308.            cpu->intrpt,cpu->intrpt);
  1309.   100f4d:   8b 45 08                mov    0x8(%ebp),%eax
  1310.      */
  1311.     while(1){//Kernel anhalten
  1312.         asm("cli; hlt");
  1313.     }
  1314.     }else{
  1315.     printf("Interrupt 0x%x (%d) isn't a Exeption!\n"
  1316.   100f50:   8b 40 1c                mov    0x1c(%eax),%eax
  1317.   100f53:   89 54 24 08             mov    %edx,0x8(%esp)
  1318.   100f57:   89 44 24 04             mov    %eax,0x4(%esp)
  1319.   100f5b:   c7 04 24 08 32 10 00    movl   $0x103208,(%esp)
  1320.   100f62:   e8 73 20 00 00          call   102fda <printf>
  1321.            "Exeptions are only from Interrupt 0x00 to 0x1f.\n",
  1322.            cpu->intrpt,cpu->intrpt);
  1323.     }
  1324. }
  1325.   100f67:   c9                      leave  
  1326.   100f68:   c3                      ret    
  1327.   100f69:   90                      nop
  1328.   100f6a:   90                      nop
  1329.   100f6b:   90                      nop
  1330.  
  1331. 00100f6c <int_handler0x00>:
  1332.   100f6c:   6a 00                   push   $0x0
  1333.   100f6e:   6a 00                   push   $0x0
  1334.   100f70:   e9 c1 00 00 00          jmp    101036 <common_exeption_handler>
  1335.  
  1336. 00100f75 <int_handler0x01>:
  1337.   100f75:   6a 00                   push   $0x0
  1338.   100f77:   6a 01                   push   $0x1
  1339.   100f79:   e9 b8 00 00 00          jmp    101036 <common_exeption_handler>
  1340.  
  1341. 00100f7e <int_handler0x02>:
  1342.   100f7e:   6a 00                   push   $0x0
  1343.   100f80:   6a 02                   push   $0x2
  1344.   100f82:   e9 af 00 00 00          jmp    101036 <common_exeption_handler>
  1345.  
  1346. 00100f87 <int_handler0x03>:
  1347.   100f87:   6a 00                   push   $0x0
  1348.   100f89:   6a 03                   push   $0x3
  1349.   100f8b:   e9 a6 00 00 00          jmp    101036 <common_exeption_handler>
  1350.  
  1351. 00100f90 <int_handler0x04>:
  1352.   100f90:   6a 00                   push   $0x0
  1353.   100f92:   6a 04                   push   $0x4
  1354.   100f94:   e9 9d 00 00 00          jmp    101036 <common_exeption_handler>
  1355.  
  1356. 00100f99 <int_handler0x05>:
  1357.   100f99:   6a 00                   push   $0x0
  1358.   100f9b:   6a 05                   push   $0x5
  1359.   100f9d:   e9 94 00 00 00          jmp    101036 <common_exeption_handler>
  1360.  
  1361. 00100fa2 <int_handler0x06>:
  1362.   100fa2:   6a 00                   push   $0x0
  1363.   100fa4:   6a 06                   push   $0x6
  1364.   100fa6:   e9 8b 00 00 00          jmp    101036 <common_exeption_handler>
  1365.  
  1366. 00100fab <int_handler0x07>:
  1367.   100fab:   6a 00                   push   $0x0
  1368.   100fad:   6a 07                   push   $0x7
  1369.   100faf:   e9 82 00 00 00          jmp    101036 <common_exeption_handler>
  1370.  
  1371. 00100fb4 <int_handler0x08>:
  1372.   100fb4:   6a 08                   push   $0x8
  1373.   100fb6:   eb 7e                   jmp    101036 <common_exeption_handler>
  1374.  
  1375. 00100fb8 <int_handler0x09>:
  1376.   100fb8:   6a 00                   push   $0x0
  1377.   100fba:   6a 09                   push   $0x9
  1378.   100fbc:   eb 78                   jmp    101036 <common_exeption_handler>
  1379.  
  1380. 00100fbe <int_handler0x0A>:
  1381.   100fbe:   6a 0a                   push   $0xa
  1382.   100fc0:   eb 74                   jmp    101036 <common_exeption_handler>
  1383.  
  1384. 00100fc2 <int_handler0x0B>:
  1385.   100fc2:   6a 0b                   push   $0xb
  1386.   100fc4:   eb 70                   jmp    101036 <common_exeption_handler>
  1387.  
  1388. 00100fc6 <int_handler0x0C>:
  1389.   100fc6:   6a 0c                   push   $0xc
  1390.   100fc8:   eb 6c                   jmp    101036 <common_exeption_handler>
  1391.  
  1392. 00100fca <int_handler0x0D>:
  1393.   100fca:   6a 0d                   push   $0xd
  1394.   100fcc:   eb 68                   jmp    101036 <common_exeption_handler>
  1395.  
  1396. 00100fce <int_handler0x0E>:
  1397.   100fce:   6a 0e                   push   $0xe
  1398.   100fd0:   eb 64                   jmp    101036 <common_exeption_handler>
  1399.  
  1400. 00100fd2 <int_handler0x0F>:
  1401.   100fd2:   6a 00                   push   $0x0
  1402.   100fd4:   6a 0f                   push   $0xf
  1403.   100fd6:   eb 5e                   jmp    101036 <common_exeption_handler>
  1404.  
  1405. 00100fd8 <int_handler0x10>:
  1406.   100fd8:   6a 00                   push   $0x0
  1407.   100fda:   6a 10                   push   $0x10
  1408.   100fdc:   eb 58                   jmp    101036 <common_exeption_handler>
  1409.  
  1410. 00100fde <int_handler0x11>:
  1411.   100fde:   6a 11                   push   $0x11
  1412.   100fe0:   eb 54                   jmp    101036 <common_exeption_handler>
  1413.  
  1414. 00100fe2 <int_handler0x12>:
  1415.   100fe2:   6a 00                   push   $0x0
  1416.   100fe4:   6a 12                   push   $0x12
  1417.   100fe6:   eb 4e                   jmp    101036 <common_exeption_handler>
  1418.  
  1419. 00100fe8 <int_handler0x13>:
  1420.   100fe8:   6a 00                   push   $0x0
  1421.   100fea:   6a 13                   push   $0x13
  1422.   100fec:   eb 48                   jmp    101036 <common_exeption_handler>
  1423.  
  1424. 00100fee <int_handler0x14>:
  1425.   100fee:   6a 00                   push   $0x0
  1426.   100ff0:   6a 14                   push   $0x14
  1427.   100ff2:   eb 42                   jmp    101036 <common_exeption_handler>
  1428.  
  1429. 00100ff4 <int_handler0x15>:
  1430.   100ff4:   6a 00                   push   $0x0
  1431.   100ff6:   6a 15                   push   $0x15
  1432.   100ff8:   eb 3c                   jmp    101036 <common_exeption_handler>
  1433.  
  1434. 00100ffa <int_handler0x16>:
  1435.   100ffa:   6a 00                   push   $0x0
  1436.   100ffc:   6a 16                   push   $0x16
  1437.   100ffe:   eb 36                   jmp    101036 <common_exeption_handler>
  1438.  
  1439. 00101000 <int_handler0x17>:
  1440.   101000:   6a 00                   push   $0x0
  1441.   101002:   6a 17                   push   $0x17
  1442.   101004:   eb 30                   jmp    101036 <common_exeption_handler>
  1443.  
  1444. 00101006 <int_handler0x18>:
  1445.   101006:   6a 00                   push   $0x0
  1446.   101008:   6a 18                   push   $0x18
  1447.   10100a:   eb 2a                   jmp    101036 <common_exeption_handler>
  1448.  
  1449. 0010100c <int_handler0x19>:
  1450.   10100c:   6a 00                   push   $0x0
  1451.   10100e:   6a 19                   push   $0x19
  1452.   101010:   eb 24                   jmp    101036 <common_exeption_handler>
  1453.  
  1454. 00101012 <int_handler0x1A>:
  1455.   101012:   6a 00                   push   $0x0
  1456.   101014:   6a 1a                   push   $0x1a
  1457.   101016:   eb 1e                   jmp    101036 <common_exeption_handler>
  1458.  
  1459. 00101018 <int_handler0x1B>:
  1460.   101018:   6a 00                   push   $0x0
  1461.   10101a:   6a 1b                   push   $0x1b
  1462.   10101c:   eb 18                   jmp    101036 <common_exeption_handler>
  1463.  
  1464. 0010101e <int_handler0x1C>:
  1465.   10101e:   6a 00                   push   $0x0
  1466.   101020:   6a 1c                   push   $0x1c
  1467.   101022:   eb 12                   jmp    101036 <common_exeption_handler>
  1468.  
  1469. 00101024 <int_handler0x1D>:
  1470.   101024:   6a 00                   push   $0x0
  1471.   101026:   6a 1d                   push   $0x1d
  1472.   101028:   eb 0c                   jmp    101036 <common_exeption_handler>
  1473.  
  1474. 0010102a <int_handler0x1E>:
  1475.   10102a:   6a 00                   push   $0x0
  1476.   10102c:   6a 1e                   push   $0x1e
  1477.   10102e:   eb 06                   jmp    101036 <common_exeption_handler>
  1478.  
  1479. 00101030 <int_handler0x1F>:
  1480.   101030:   6a 00                   push   $0x0
  1481.   101032:   6a 1f                   push   $0x1f
  1482.   101034:   eb 00                   jmp    101036 <common_exeption_handler>
  1483.  
  1484. 00101036 <common_exeption_handler>:
  1485.   101036:   55                      push   %ebp
  1486.   101037:   57                      push   %edi
  1487.   101038:   56                      push   %esi
  1488.   101039:   52                      push   %edx
  1489.   10103a:   51                      push   %ecx
  1490.   10103b:   53                      push   %ebx
  1491.   10103c:   50                      push   %eax
  1492.   10103d:   54                      push   %esp
  1493.   10103e:   e8 43 fd ff ff          call   100d86 <handle_exeption>
  1494.   101043:   58                      pop    %eax
  1495.   101044:   58                      pop    %eax
  1496.   101045:   5b                      pop    %ebx
  1497.   101046:   59                      pop    %ecx
  1498.   101047:   5a                      pop    %edx
  1499.   101048:   5e                      pop    %esi
  1500.   101049:   5f                      pop    %edi
  1501.   10104a:   5d                      pop    %ebp
  1502.   10104b:   83 c4 08                add    $0x8,%esp
  1503.   10104e:   cf                      iret  
  1504.   10104f:   90                      nop
  1505.  
  1506. 00101050 <test_int_handler00>:
  1507. #ifndef _TEST_INT_HANDLER
  1508. #define _TEST_INT_HANDLER
  1509.  
  1510. #include <console.h>
  1511.  
  1512. void test_int_handler00(void){
  1513.   101050:   55                      push   %ebp
  1514.   101051:   89 e5                   mov    %esp,%ebp
  1515.   101053:   83 ec 18                sub    $0x18,%esp
  1516.   puts("Hello world aus dem Interrupt 0x30!\n");
  1517.   101056:   c7 04 24 e0 32 10 00    movl   $0x1032e0,(%esp)
  1518.   10105d:   e8 80 1e 00 00          call   102ee2 <puts>
  1519.   while(1);
  1520.   101062:   eb fe                   jmp    101062 <test_int_handler00+0x12>
  1521.  
  1522. 00101064 <test_int_handler01>:
  1523. }
  1524. void test_int_handler01(void){
  1525.   101064:   55                      push   %ebp
  1526.   101065:   89 e5                   mov    %esp,%ebp
  1527.   101067:   83 ec 18                sub    $0x18,%esp
  1528.   puts("Das ist Interrupt 0x31\n");
  1529.   10106a:   c7 04 24 05 33 10 00    movl   $0x103305,(%esp)
  1530.   101071:   e8 6c 1e 00 00          call   102ee2 <puts>
  1531.   while(1);
  1532.   101076:   eb fe                   jmp    101076 <test_int_handler01+0x12>
  1533.  
  1534. 00101078 <push_cpu>:
  1535.   101078:   55                      push   %ebp
  1536.   101079:   57                      push   %edi
  1537.   10107a:   56                      push   %esi
  1538.   10107b:   52                      push   %edx
  1539.   10107c:   51                      push   %ecx
  1540.   10107d:   53                      push   %ebx
  1541.   10107e:   50                      push   %eax
  1542.  
  1543. 0010107f <pop_cpu>:
  1544.   10107f:   58                      pop    %eax
  1545.   101080:   5b                      pop    %ebx
  1546.   101081:   59                      pop    %ecx
  1547.   101082:   5a                      pop    %edx
  1548.   101083:   5e                      pop    %esi
  1549.   101084:   5f                      pop    %edi
  1550.   101085:   5d                      pop    %ebp
  1551.   101086:   90                      nop
  1552.   101087:   90                      nop
  1553.  
  1554. 00101088 <pow>:
  1555. #ifndef _MATH_H
  1556. #define _MATH_H
  1557.  
  1558. #define PI 3.1415926535897932384626433832795
  1559. /* ---------- Bais hoch Exponent ---------------------- */
  1560. double pow(double base, double exp){
  1561.   101088:   55                      push   %ebp
  1562.   101089:   89 e5                   mov    %esp,%ebp
  1563.   10108b:   83 ec 20                sub    $0x20,%esp
  1564.   10108e:   8b 45 08                mov    0x8(%ebp),%eax
  1565.   101091:   89 45 e8                mov    %eax,-0x18(%ebp)
  1566.   101094:   8b 45 0c                mov    0xc(%ebp),%eax
  1567.   101097:   89 45 ec                mov    %eax,-0x14(%ebp)
  1568.   10109a:   8b 45 10                mov    0x10(%ebp),%eax
  1569.   10109d:   89 45 e0                mov    %eax,-0x20(%ebp)
  1570.   1010a0:   8b 45 14                mov    0x14(%ebp),%eax
  1571.   1010a3:   89 45 e4                mov    %eax,-0x1c(%ebp)
  1572.   double ret = base;
  1573.   1010a6:   dd 45 e8                fldl   -0x18(%ebp)
  1574.   1010a9:   dd 5d f8                fstpl  -0x8(%ebp)
  1575.   int i;
  1576.   for(i = 0; i < exp; i++) ret *= ret;
  1577.   1010ac:   c7 45 f4 00 00 00 00    movl   $0x0,-0xc(%ebp)
  1578.   1010b3:   eb 0d                   jmp    1010c2 <pow+0x3a>
  1579.   1010b5:   dd 45 f8                fldl   -0x8(%ebp)
  1580.   1010b8:   dc 4d f8                fmull  -0x8(%ebp)
  1581.   1010bb:   dd 5d f8                fstpl  -0x8(%ebp)
  1582.   1010be:   83 45 f4 01             addl   $0x1,-0xc(%ebp)
  1583.   1010c2:   db 45 f4                fildl  -0xc(%ebp)
  1584.   1010c5:   dd 45 e0                fldl   -0x20(%ebp)
  1585.   1010c8:   da e9                   fucompp
  1586.   1010ca:   df e0                   fnstsw %ax
  1587.   1010cc:   9e                      sahf  
  1588.   1010cd:   0f 97 c0                seta   %al
  1589.   1010d0:   84 c0                   test   %al,%al
  1590.   1010d2:   75 e1                   jne    1010b5 <pow+0x2d>
  1591.   return ret;
  1592.   1010d4:   dd 45 f8                fldl   -0x8(%ebp)
  1593. }
  1594.   1010d7:   c9                      leave  
  1595.   1010d8:   c3                      ret    
  1596.  
  1597. 001010d9 <abs>:
  1598. /* ---------- Absolutbetrag einer Zahl errechnen ------ */
  1599. double abs(double z){
  1600.   1010d9:   55                      push   %ebp
  1601.   1010da:   89 e5                   mov    %esp,%ebp
  1602.   1010dc:   83 ec 08                sub    $0x8,%esp
  1603.   1010df:   8b 45 08                mov    0x8(%ebp),%eax
  1604.   1010e2:   89 45 f8                mov    %eax,-0x8(%ebp)
  1605.   1010e5:   8b 45 0c                mov    0xc(%ebp),%eax
  1606.   1010e8:   89 45 fc                mov    %eax,-0x4(%ebp)
  1607.   return (z < 0) ? (-z) : (z);
  1608.   1010eb:   d9 ee                   fldz  
  1609.   1010ed:   dd 45 f8                fldl   -0x8(%ebp)
  1610.   1010f0:   d9 c9                   fxch   %st(1)
  1611.   1010f2:   da e9                   fucompp
  1612.   1010f4:   df e0                   fnstsw %ax
  1613.   1010f6:   9e                      sahf  
  1614.   1010f7:   0f 97 c0                seta   %al
  1615.   1010fa:   84 c0                   test   %al,%al
  1616.   1010fc:   74 07                   je     101105 <abs+0x2c>
  1617.   1010fe:   dd 45 f8                fldl   -0x8(%ebp)
  1618.   101101:   d9 e0                   fchs  
  1619.   101103:   eb 03                   jmp    101108 <abs+0x2f>
  1620.   101105:   dd 45 f8                fldl   -0x8(%ebp)
  1621. }
  1622.   101108:   c9                      leave  
  1623.   101109:   c3                      ret    
  1624.  
  1625. 0010110a <set_gdt_entry>:
  1626.  
  1627. #define GDT_ENTRIES 3
  1628. /* ---------- Globale Variablen ----------------------- */
  1629. static uint64_t gdt[GDT_ENTRIES];   //Global Deskriptor Table
  1630. /* ---------- Eintrag in die GDT setzen --------------- */
  1631. static void set_gdt_entry(int i, uint32_t limit, uint32_t base, uint8_t access, uint8_t flags){
  1632.   10110a:   55                      push   %ebp
  1633.   10110b:   89 e5                   mov    %esp,%ebp
  1634.   10110d:   57                      push   %edi
  1635.   10110e:   56                      push   %esi
  1636.   10110f:   53                      push   %ebx
  1637.   101110:   83 ec 08                sub    $0x8,%esp
  1638.   101113:   8b 55 14                mov    0x14(%ebp),%edx
  1639.   101116:   8b 45 18                mov    0x18(%ebp),%eax
  1640.   101119:   88 55 f0                mov    %dl,-0x10(%ebp)
  1641.   10111c:   88 45 ec                mov    %al,-0x14(%ebp)
  1642.   gdt[i] = 0;
  1643.   10111f:   8b 45 08                mov    0x8(%ebp),%eax
  1644.   101122:   c7 04 c5 00 6f 10 00    movl   $0x0,0x106f00(,%eax,8)
  1645.   101129:   00 00 00 00
  1646.   10112d:   c7 04 c5 04 6f 10 00    movl   $0x0,0x106f04(,%eax,8)
  1647.   101134:   00 00 00 00
  1648.   //untere 32-Bit
  1649.   gdt[i] = (limit & 0x0ffff) | ((base & 0x0000ffff) << 16);
  1650.   101138:   8b 45 0c                mov    0xc(%ebp),%eax
  1651.   10113b:   0f b7 d0                movzwl %ax,%edx
  1652.   10113e:   8b 45 10                mov    0x10(%ebp),%eax
  1653.   101141:   c1 e0 10                shl    $0x10,%eax
  1654.   101144:   09 d0                   or     %edx,%eax
  1655.   101146:   ba 00 00 00 00          mov    $0x0,%edx
  1656.   10114b:   8b 75 08                mov    0x8(%ebp),%esi
  1657.   10114e:   89 04 f5 00 6f 10 00    mov    %eax,0x106f00(,%esi,8)
  1658.   101155:   89 14 f5 04 6f 10 00    mov    %edx,0x106f04(,%esi,8)
  1659.   //obere 32-Bit
  1660.   gdt[i] |=(
  1661.   10115c:   8b 45 08                mov    0x8(%ebp),%eax
  1662.   10115f:   8b 34 c5 00 6f 10 00    mov    0x106f00(,%eax,8),%esi
  1663.   101166:   8b 3c c5 04 6f 10 00    mov    0x106f04(,%eax,8),%edi
  1664.         ( (base & 0x00ff0000) >> 16 ) |
  1665.   10116d:   8b 45 10                mov    0x10(%ebp),%eax
  1666.   101170:   25 00 00 ff 00          and    $0xff0000,%eax
  1667.   101175:   89 c2                   mov    %eax,%edx
  1668.   101177:   c1 ea 10                shr    $0x10,%edx
  1669.         ( access << 8 ) |
  1670.   10117a:   0f b6 45 f0             movzbl -0x10(%ebp),%eax
  1671.   10117e:   c1 e0 08                shl    $0x8,%eax
  1672.   gdt[i] = 0;
  1673.   //untere 32-Bit
  1674.   gdt[i] = (limit & 0x0ffff) | ((base & 0x0000ffff) << 16);
  1675.   //obere 32-Bit
  1676.   gdt[i] |=(
  1677.         ( (base & 0x00ff0000) >> 16 ) |
  1678.   101181:   09 c2                   or     %eax,%edx
  1679.         ( access << 8 ) |
  1680.         ( flags << 16 ) |
  1681.   101183:   0f b6 45 ec             movzbl -0x14(%ebp),%eax
  1682.   101187:   c1 e0 10                shl    $0x10,%eax
  1683.   //untere 32-Bit
  1684.   gdt[i] = (limit & 0x0ffff) | ((base & 0x0000ffff) << 16);
  1685.   //obere 32-Bit
  1686.   gdt[i] |=(
  1687.         ( (base & 0x00ff0000) >> 16 ) |
  1688.         ( access << 8 ) |
  1689.   10118a:   09 c2                   or     %eax,%edx
  1690.         ( flags << 16 ) |
  1691.         ( (limit & 0xf0000) << 4) |
  1692.   10118c:   8b 45 0c                mov    0xc(%ebp),%eax
  1693.   10118f:   25 00 00 0f 00          and    $0xf0000,%eax
  1694.   101194:   c1 e0 04                shl    $0x4,%eax
  1695.   101197:   09 d0                   or     %edx,%eax
  1696.         ( (base & 0xff000000) << 56 )
  1697.        ) * 0x100000000;
  1698.   101199:   ba 00 00 00 00          mov    $0x0,%edx
  1699.   10119e:   89 c2                   mov    %eax,%edx
  1700.   1011a0:   b8 00 00 00 00          mov    $0x0,%eax
  1701. static void set_gdt_entry(int i, uint32_t limit, uint32_t base, uint8_t access, uint8_t flags){
  1702.   gdt[i] = 0;
  1703.   //untere 32-Bit
  1704.   gdt[i] = (limit & 0x0ffff) | ((base & 0x0000ffff) << 16);
  1705.   //obere 32-Bit
  1706.   gdt[i] |=(
  1707.   1011a5:   89 f1                   mov    %esi,%ecx
  1708.   1011a7:   09 c1                   or     %eax,%ecx
  1709.   1011a9:   89 fb                   mov    %edi,%ebx
  1710.   1011ab:   09 d3                   or     %edx,%ebx
  1711.   1011ad:   8b 45 08                mov    0x8(%ebp),%eax
  1712.   1011b0:   89 0c c5 00 6f 10 00    mov    %ecx,0x106f00(,%eax,8)
  1713.   1011b7:   89 1c c5 04 6f 10 00    mov    %ebx,0x106f04(,%eax,8)
  1714.         ( access << 8 ) |
  1715.         ( flags << 16 ) |
  1716.         ( (limit & 0xf0000) << 4) |
  1717.         ( (base & 0xff000000) << 56 )
  1718.        ) * 0x100000000;
  1719. }
  1720.   1011be:   83 c4 08                add    $0x8,%esp
  1721.   1011c1:   5b                      pop    %ebx
  1722.   1011c2:   5e                      pop    %esi
  1723.   1011c3:   5f                      pop    %edi
  1724.   1011c4:   5d                      pop    %ebp
  1725.   1011c5:   c3                      ret    
  1726.  
  1727. 001011c6 <load_gdt>:
  1728. /* ---------- GDT Laden (GDTR ändern) ----------------- */
  1729. void load_gdt(void){
  1730.   1011c6:   55                      push   %ebp
  1731.   1011c7:   89 e5                   mov    %esp,%ebp
  1732.   1011c9:   83 ec 10                sub    $0x10,%esp
  1733.   struct {
  1734.     uint16_t size;
  1735.     uint64_t pointer;
  1736.   } __attribute__((packed)) gdtp = {
  1737.   1011cc:   66 c7 45 f6 17 00       movw   $0x17,-0xa(%ebp)
  1738.   1011d2:   b8 00 6f 10 00          mov    $0x106f00,%eax
  1739.   1011d7:   89 c2                   mov    %eax,%edx
  1740.   1011d9:   c1 fa 1f                sar    $0x1f,%edx
  1741.   1011dc:   89 45 f8                mov    %eax,-0x8(%ebp)
  1742.   1011df:   89 55 fc                mov    %edx,-0x4(%ebp)
  1743.     .size = GDT_ENTRIES * 8 - 1,
  1744.     .pointer = &gdt,
  1745.   };
  1746.   asm("lgdt %0" : : "m" (gdtp));//GDT Laden
  1747.   1011e2:   0f 01 55 f6             lgdtl  -0xa(%ebp)
  1748. }
  1749.   1011e6:   c9                      leave  
  1750.   1011e7:   c3                      ret    
  1751.  
  1752. 001011e8 <init_gdt>:
  1753. /* ---------- GDT initalisieren ----------------------- */
  1754. void init_gdt(void){
  1755.   1011e8:   55                      push   %ebp
  1756.   1011e9:   89 e5                   mov    %esp,%ebp
  1757.   1011eb:   83 ec 14                sub    $0x14,%esp
  1758.  
  1759.   //Nulldeskriptor
  1760.     set_gdt_entry(0, 0, 0, 0, 0);
  1761.   1011ee:   c7 44 24 10 00 00 00    movl   $0x0,0x10(%esp)
  1762.   1011f5:   00
  1763.   1011f6:   c7 44 24 0c 00 00 00    movl   $0x0,0xc(%esp)
  1764.   1011fd:   00
  1765.   1011fe:   c7 44 24 08 00 00 00    movl   $0x0,0x8(%esp)
  1766.   101205:   00
  1767.   101206:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
  1768.   10120d:   00
  1769.   10120e:   c7 04 24 00 00 00 00    movl   $0x0,(%esp)
  1770.   101215:   e8 f0 fe ff ff          call   10110a <set_gdt_entry>
  1771.  
  1772.   //Kernel - Codesegment
  1773.     set_gdt_entry(1, 0xfffff, 0,                //index, limit, base
  1774.   10121a:   c7 44 24 10 0c 00 00    movl   $0xc,0x10(%esp)
  1775.   101221:   00
  1776.   101222:   c7 44 24 0c 9a 00 00    movl   $0x9a,0xc(%esp)
  1777.   101229:   00
  1778.   10122a:   c7 44 24 08 00 00 00    movl   $0x0,0x8(%esp)
  1779.   101231:   00
  1780.   101232:   c7 44 24 04 ff ff 0f    movl   $0xfffff,0x4(%esp)
  1781.   101239:   00
  1782.   10123a:   c7 04 24 01 00 00 00    movl   $0x1,(%esp)
  1783.   101241:   e8 c4 fe ff ff          call   10110a <set_gdt_entry>
  1784.      GDT_CODESEG_RD | GDT_SEGMENT | GDT_RING0 | GDT_PRESENT,//Access-Byte
  1785.      GDT_32_BIT  | GDT_4K_GRAN);                //Flags
  1786.                                      
  1787.   //Kernel - Datensegment                        
  1788.     set_gdt_entry(2, 0xfffff, 0,                    //index, limit, base
  1789.   101246:   c7 44 24 10 0c 00 00    movl   $0xc,0x10(%esp)
  1790.   10124d:   00
  1791.   10124e:   c7 44 24 0c 92 00 00    movl   $0x92,0xc(%esp)
  1792.   101255:   00
  1793.   101256:   c7 44 24 08 00 00 00    movl   $0x0,0x8(%esp)
  1794.   10125d:   00
  1795.   10125e:   c7 44 24 04 ff ff 0f    movl   $0xfffff,0x4(%esp)
  1796.   101265:   00
  1797.   101266:   c7 04 24 02 00 00 00    movl   $0x2,(%esp)
  1798.   10126d:   e8 98 fe ff ff          call   10110a <set_gdt_entry>
  1799.      GDT_DATASEG_WR | GDT_SEGMENT | GDT_RING0 | GDT_PRESENT,//Access-Byte
  1800.      GDT_32_BIT  | GDT_4K_GRAN);                    //Flags
  1801.                                      
  1802.   //Userspace - Codesegment                        
  1803.     set_gdt_entry(3, 0xfffff, 0,                //index, limit, base
  1804.   101272:   c7 44 24 10 0c 00 00    movl   $0xc,0x10(%esp)
  1805.   101279:   00
  1806.   10127a:   c7 44 24 0c fa 00 00    movl   $0xfa,0xc(%esp)
  1807.   101281:   00
  1808.   101282:   c7 44 24 08 00 00 00    movl   $0x0,0x8(%esp)
  1809.   101289:   00
  1810.   10128a:   c7 44 24 04 ff ff 0f    movl   $0xfffff,0x4(%esp)
  1811.   101291:   00
  1812.   101292:   c7 04 24 03 00 00 00    movl   $0x3,(%esp)
  1813.   101299:   e8 6c fe ff ff          call   10110a <set_gdt_entry>
  1814.      GDT_CODESEG_RD | GDT_SEGMENT | GDT_RING3 | GDT_PRESENT,//Access-Byte
  1815.      GDT_32_BIT  | GDT_4K_GRAN);                //Flags
  1816.                                      
  1817.   //Userpsace - Datensegment                         
  1818.     set_gdt_entry(4, 0xfffff, 0,                //index, limit, base
  1819.   10129e:   c7 44 24 10 0c 00 00    movl   $0xc,0x10(%esp)
  1820.   1012a5:   00
  1821.   1012a6:   c7 44 24 0c f2 00 00    movl   $0xf2,0xc(%esp)
  1822.   1012ad:   00
  1823.   1012ae:   c7 44 24 08 00 00 00    movl   $0x0,0x8(%esp)
  1824.   1012b5:   00
  1825.   1012b6:   c7 44 24 04 ff ff 0f    movl   $0xfffff,0x4(%esp)
  1826.   1012bd:   00
  1827.   1012be:   c7 04 24 04 00 00 00    movl   $0x4,(%esp)
  1828.   1012c5:   e8 40 fe ff ff          call   10110a <set_gdt_entry>
  1829.      GDT_DATASEG_WR | GDT_SEGMENT | GDT_RING3 | GDT_PRESENT,//Access-Byte
  1830.          GDT_32_BIT  | GDT_4K_GRAN);                //Flags
  1831. //  
  1832. }
  1833.   1012ca:   c9                      leave  
  1834.   1012cb:   c3                      ret    
  1835.  
  1836. 001012cc <init_gdt_fast>:
  1837. /* ---------- GDT schnell initalisieren --------------- */
  1838. void init_gdt_fast(void){
  1839.   1012cc:   55                      push   %ebp
  1840.   1012cd:   89 e5                   mov    %esp,%ebp
  1841.   gdt[0] = 0x0000000000000000;//Nulldeskriptor
  1842.   1012cf:   c7 05 00 6f 10 00 00    movl   $0x0,0x106f00
  1843.   1012d6:   00 00 00
  1844.   1012d9:   c7 05 04 6f 10 00 00    movl   $0x0,0x106f04
  1845.   1012e0:   00 00 00
  1846.   gdt[1] = 0x00FC9A000000FFFF;//Kernel - Codesegment
  1847.   1012e3:   c7 05 08 6f 10 00 ff    movl   $0xffff,0x106f08
  1848.   1012ea:   ff 00 00
  1849.   1012ed:   c7 05 0c 6f 10 00 00    movl   $0xfc9a00,0x106f0c
  1850.   1012f4:   9a fc 00
  1851.   gdt[2] = 0x00FC92000000FFFF;//Kernel - Datensegment
  1852.   1012f7:   c7 05 10 6f 10 00 ff    movl   $0xffff,0x106f10
  1853.   1012fe:   ff 00 00
  1854.   101301:   c7 05 14 6f 10 00 00    movl   $0xfc9200,0x106f14
  1855.   101308:   92 fc 00
  1856. //   gdt[3] = 0x00FCFA000000FFFF;//Userspace - Codesegment
  1857. //   gdt[4] = 0x00FCF2000000FFFF;//Userpsace - Datensegment
  1858. }
  1859.   10130b:   5d                      pop    %ebp
  1860.   10130c:   c3                      ret    
  1861.  
  1862. 0010130d <reload_segment_registers>:
  1863. /* ---------- Segmenregister neuladen ----------------- */
  1864. void reload_segment_registers(void){
  1865.   10130d:   55                      push   %ebp
  1866.   10130e:   89 e5                   mov    %esp,%ebp
  1867.   asm(
  1868.   101310:   ea 17 13 10 00 08 00    ljmp   $0x8,$0x101317
  1869.   101317:   b8 10 00 00 00          mov    $0x10,%eax
  1870.   10131c:   8e d8                   mov    %eax,%ds
  1871.   10131e:   8e c0                   mov    %eax,%es
  1872.   101320:   8e e0                   mov    %eax,%fs
  1873.   101322:   8e e8                   mov    %eax,%gs
  1874.   101324:   8e d0                   mov    %eax,%ss
  1875.         "mov %eax, %es\n\t"
  1876.         "mov %eax, %fs\n\t"
  1877.         "mov %eax, %gs\n\t"
  1878.         "mov %eax, %ss\n\t"
  1879.   );
  1880. }
  1881.   101326:   5d                      pop    %ebp
  1882.   101327:   c3                      ret    
  1883.  
  1884. 00101328 <debug>:
  1885.  
  1886. #define RESET_COLOR color = 0x07
  1887. #define DONE  color = 0x0a;puts("done!  \n");RESET_COLOR
  1888. #define FAIL  color = 0x04;puts("failed!");textpos-=7
  1889.  
  1890. void debug(int debug_on,char *string,...){
  1891.   101328:   55                      push   %ebp
  1892.   101329:   89 e5                   mov    %esp,%ebp
  1893.   10132b:   83 ec 28                sub    $0x28,%esp
  1894.   #if _DEBUG_PRINT
  1895.     if(debug_on){
  1896.   10132e:   83 7d 08 00             cmpl   $0x0,0x8(%ebp)
  1897.   101332:   74 29                   je     10135d <debug+0x35>
  1898.       long *args = ((long*)&string) + 1;
  1899.   101334:   8d 45 0c                lea    0xc(%ebp),%eax
  1900.   101337:   83 c0 04                add    $0x4,%eax
  1901.   10133a:   89 45 f4                mov    %eax,-0xc(%ebp)
  1902.       string = sprintfr(string,args);
  1903.   10133d:   8b 45 0c                mov    0xc(%ebp),%eax
  1904.   101340:   8b 55 f4                mov    -0xc(%ebp),%edx
  1905.   101343:   89 54 24 04             mov    %edx,0x4(%esp)
  1906.   101347:   89 04 24                mov    %eax,(%esp)
  1907.   10134a:   e8 89 03 00 00          call   1016d8 <sprintfr>
  1908.   10134f:   89 45 0c                mov    %eax,0xc(%ebp)
  1909.       puts(string);
  1910.   101352:   8b 45 0c                mov    0xc(%ebp),%eax
  1911.   101355:   89 04 24                mov    %eax,(%esp)
  1912.   101358:   e8 85 1b 00 00          call   102ee2 <puts>
  1913.     }
  1914.   #endif
  1915. }
  1916.   10135d:   c9                      leave  
  1917.   10135e:   c3                      ret    
  1918.  
  1919. 0010135f <inip>:
  1920. void inip(char *s){
  1921.   10135f:   55                      push   %ebp
  1922.   101360:   89 e5                   mov    %esp,%ebp
  1923.   101362:   83 ec 18                sub    $0x18,%esp
  1924.   #if _INIT_PRINT
  1925.   puts("[ init ] ");
  1926.   101365:   c7 04 24 20 33 10 00    movl   $0x103320,(%esp)
  1927.   10136c:   e8 71 1b 00 00          call   102ee2 <puts>
  1928.   printf(s);
  1929.   101371:   8b 45 08                mov    0x8(%ebp),%eax
  1930.   101374:   89 04 24                mov    %eax,(%esp)
  1931.   101377:   e8 5e 1c 00 00          call   102fda <printf>
  1932.   FAIL;
  1933.   10137c:   c7 05 e4 46 10 00 04    movl   $0x4,0x1046e4
  1934.   101383:   00 00 00
  1935.   101386:   c7 04 24 2a 33 10 00    movl   $0x10332a,(%esp)
  1936.   10138d:   e8 50 1b 00 00          call   102ee2 <puts>
  1937.   101392:   a1 18 6f 10 00          mov    0x106f18,%eax
  1938.   101397:   83 e8 07                sub    $0x7,%eax
  1939.   10139a:   a3 18 6f 10 00          mov    %eax,0x106f18
  1940.   #endif
  1941. }
  1942.   10139f:   c9                      leave  
  1943.   1013a0:   c3                      ret    
  1944.  
  1945. 001013a1 <end_ini>:
  1946. void end_ini(void){
  1947.   1013a1:   55                      push   %ebp
  1948.   1013a2:   89 e5                   mov    %esp,%ebp
  1949.   1013a4:   83 ec 18                sub    $0x18,%esp
  1950.   #if _INIT_PRINT
  1951.   DONE;
  1952.   1013a7:   c7 05 e4 46 10 00 0a    movl   $0xa,0x1046e4
  1953.   1013ae:   00 00 00
  1954.   1013b1:   c7 04 24 32 33 10 00    movl   $0x103332,(%esp)
  1955.   1013b8:   e8 25 1b 00 00          call   102ee2 <puts>
  1956.   1013bd:   c7 05 e4 46 10 00 07    movl   $0x7,0x1046e4
  1957.   1013c4:   00 00 00
  1958.   #endif
  1959. }
  1960.   1013c7:   c9                      leave  
  1961.   1013c8:   c3                      ret    
  1962.  
  1963. 001013c9 <init>:
  1964. #define _INIT_PRINT 1
  1965. #define _DEBUG_PRINT 1
  1966.  
  1967. #include "debug.h"
  1968. /* ---------- Initalisierung des Kernels -------------- */
  1969. void init(void){
  1970.   1013c9:   55                      push   %ebp
  1971.   1013ca:   89 e5                   mov    %esp,%ebp
  1972.   1013cc:   83 ec 18                sub    $0x18,%esp
  1973.   clearScreen();
  1974.   1013cf:   e8 5a 18 00 00          call   102c2e <clearScreen>
  1975.   color = 0x6f;
  1976.   1013d4:   c7 05 e4 46 10 00 6f    movl   $0x6f,0x1046e4
  1977.   1013db:   00 00 00
  1978.   puts("Loading   S e o s   v0.0.1 winter beta 3...                                     ");
  1979.   1013de:   c7 04 24 3c 33 10 00    movl   $0x10333c,(%esp)
  1980.   1013e5:   e8 f8 1a 00 00          call   102ee2 <puts>
  1981.   puts("... [ INIT ]                                       Copyright (C) Michael Sippel \n");
  1982.   1013ea:   c7 04 24 90 33 10 00    movl   $0x103390,(%esp)
  1983.   1013f1:   e8 ec 1a 00 00          call   102ee2 <puts>
  1984.   RESET_COLOR;
  1985.   1013f6:   c7 05 e4 46 10 00 07    movl   $0x7,0x1046e4
  1986.   1013fd:   00 00 00
  1987.   inip("Initalizing GDT...                   ");
  1988.   101400:   c7 04 24 e4 33 10 00    movl   $0x1033e4,(%esp)
  1989.   101407:   e8 53 ff ff ff          call   10135f <inip>
  1990.     init_gdt_fast();end_ini();
  1991.   10140c:   e8 bb fe ff ff          call   1012cc <init_gdt_fast>
  1992.   101411:   e8 8b ff ff ff          call   1013a1 <end_ini>
  1993.   inip("Loading GDT (change GDTR)...         ");
  1994.   101416:   c7 04 24 0c 34 10 00    movl   $0x10340c,(%esp)
  1995.   10141d:   e8 3d ff ff ff          call   10135f <inip>
  1996.     load_gdt();end_ini();
  1997.   101422:   e8 9f fd ff ff          call   1011c6 <load_gdt>
  1998.   101427:   e8 75 ff ff ff          call   1013a1 <end_ini>
  1999.   inip("Reload Segmentregisters...           ");
  2000.   10142c:   c7 04 24 34 34 10 00    movl   $0x103434,(%esp)
  2001.   101433:   e8 27 ff ff ff          call   10135f <inip>
  2002.     reload_segment_registers();end_ini();
  2003.   101438:   e8 d0 fe ff ff          call   10130d <reload_segment_registers>
  2004.   10143d:   e8 5f ff ff ff          call   1013a1 <end_ini>
  2005.   puts("\n");
  2006.   101442:   c7 04 24 5a 34 10 00    movl   $0x10345a,(%esp)
  2007.   101449:   e8 94 1a 00 00          call   102ee2 <puts>
  2008.   inip("Initalizing IDT...                   ");
  2009.   10144e:   c7 04 24 5c 34 10 00    movl   $0x10345c,(%esp)
  2010.   101455:   e8 05 ff ff ff          call   10135f <inip>
  2011.     init_idt();end_ini();
  2012.   10145a:   e8 9b ec ff ff          call   1000fa <init_idt>
  2013.   10145f:   e8 3d ff ff ff          call   1013a1 <end_ini>
  2014.   inip("Loading IDT...                       ");
  2015.   101464:   c7 04 24 84 34 10 00    movl   $0x103484,(%esp)
  2016.   10146b:   e8 ef fe ff ff          call   10135f <inip>
  2017.     load_idt();end_ini();
  2018.   101470:   e8 63 ec ff ff          call   1000d8 <load_idt>
  2019.   101475:   e8 27 ff ff ff          call   1013a1 <end_ini>
  2020.   inip("Initalizing PIC...                   ");
  2021.   10147a:   c7 04 24 ac 34 10 00    movl   $0x1034ac,(%esp)
  2022.   101481:   e8 d9 fe ff ff          call   10135f <inip>
  2023.     init_pic();end_ini();
  2024.   101486:   e8 2b f7 ff ff          call   100bb6 <init_pic>
  2025.   10148b:   e8 11 ff ff ff          call   1013a1 <end_ini>
  2026.   inip("Enable interrupts...                 ");
  2027.   101490:   c7 04 24 d4 34 10 00    movl   $0x1034d4,(%esp)
  2028.   101497:   e8 c3 fe ff ff          call   10135f <inip>
  2029.     sti();end_ini();
  2030.   10149c:   fb                      sti    
  2031.   10149d:   e8 ff fe ff ff          call   1013a1 <end_ini>
  2032.   inip("Initalizing keyboard...              ");
  2033.   1014a2:   c7 04 24 fc 34 10 00    movl   $0x1034fc,(%esp)
  2034.   1014a9:   e8 b1 fe ff ff          call   10135f <inip>
  2035.     init_keyboard();end_ini();
  2036.   1014ae:   e8 75 01 00 00          call   101628 <init_keyboard>
  2037.   1014b3:   e8 e9 fe ff ff          call   1013a1 <end_ini>
  2038.    
  2039.   //Fertig
  2040.   color = 0x02;
  2041.   1014b8:   c7 05 e4 46 10 00 02    movl   $0x2,0x1046e4
  2042.   1014bf:   00 00 00
  2043.   printf("\n \t \t   %c                %c\n",S_LINKS_OBEN,  S_RECHTS_OBEN);
  2044.   1014c2:   c7 44 24 08 bf 00 00    movl   $0xbf,0x8(%esp)
  2045.   1014c9:   00
  2046.   1014ca:   c7 44 24 04 da 00 00    movl   $0xda,0x4(%esp)
  2047.   1014d1:   00
  2048.   1014d2:   c7 04 24 22 35 10 00    movl   $0x103522,(%esp)
  2049.   1014d9:   e8 fc 1a 00 00          call   102fda <printf>
  2050.   printf(" \t \t    Loading is done!   \n");
  2051.   1014de:   c7 04 24 40 35 10 00    movl   $0x103540,(%esp)
  2052.   1014e5:   e8 f8 19 00 00          call   102ee2 <puts>
  2053.   printf("\n \t \t   %c                %c\n\n",S_LINKS_UNTEN,S_RECHTS_UNTEN);
  2054.   1014ea:   c7 44 24 08 d9 00 00    movl   $0xd9,0x8(%esp)
  2055.   1014f1:   00
  2056.   1014f2:   c7 44 24 04 c0 00 00    movl   $0xc0,0x4(%esp)
  2057.   1014f9:   00
  2058.   1014fa:   c7 04 24 5c 35 10 00    movl   $0x10355c,(%esp)
  2059.   101501:   e8 d4 1a 00 00          call   102fda <printf>
  2060.   RESET_COLOR;
  2061.   101506:   c7 05 e4 46 10 00 07    movl   $0x7,0x1046e4
  2062.   10150d:   00 00 00
  2063.  
  2064. }
  2065.   101510:   c9                      leave  
  2066.   101511:   c3                      ret    
  2067.   101512:   90                      nop
  2068.   101513:   90                      nop
  2069.  
  2070. 00101514 <outb>:
  2071. #define _PORTIO_H
  2072.  
  2073. #include <stdint.h>
  2074.  
  2075. /* ---------- 8-Bit daten an 16-Bit port -------------- */
  2076. static inline void outb(uint16_t port, uint8_t data){
  2077.   101514:   55                      push   %ebp
  2078.   101515:   89 e5                   mov    %esp,%ebp
  2079.   101517:   83 ec 08                sub    $0x8,%esp
  2080.   10151a:   8b 55 08                mov    0x8(%ebp),%edx
  2081.   10151d:   8b 45 0c                mov    0xc(%ebp),%eax
  2082.   101520:   66 89 55 fc             mov    %dx,-0x4(%ebp)
  2083.   101524:   88 45 f8                mov    %al,-0x8(%ebp)
  2084.    asm("outb %0, %1" : : "a" (data), "Nd" (port));
  2085.   101527:   0f b6 45 f8             movzbl -0x8(%ebp),%eax
  2086.   10152b:   0f b7 55 fc             movzwl -0x4(%ebp),%edx
  2087.   10152f:   ee                      out    %al,(%dx)
  2088. }
  2089.   101530:   c9                      leave  
  2090.   101531:   c3                      ret    
  2091.  
  2092. 00101532 <inb>:
  2093. /* ---------- 8-Bit daten von 16-Bit port ------------- */
  2094. static inline uint8_t inb(uint16_t port){
  2095.   101532:   55                      push   %ebp
  2096.   101533:   89 e5                   mov    %esp,%ebp
  2097.   101535:   53                      push   %ebx
  2098.   101536:   83 ec 18                sub    $0x18,%esp
  2099.   101539:   8b 45 08                mov    0x8(%ebp),%eax
  2100.   10153c:   66 89 45 e8             mov    %ax,-0x18(%ebp)
  2101.   unsigned char result = 0;
  2102.   101540:   c6 45 fb 00             movb   $0x0,-0x5(%ebp)
  2103.   asm("inb %1, %0" : "=a" (result) : "Nd" (port));
  2104.   101544:   0f b7 45 e8             movzwl -0x18(%ebp),%eax
  2105.   101548:   66 89 45 e6             mov    %ax,-0x1a(%ebp)
  2106.   10154c:   0f b7 55 e6             movzwl -0x1a(%ebp),%edx
  2107.   101550:   ec                      in     (%dx),%al
  2108.   101551:   89 c3                   mov    %eax,%ebx
  2109.   101553:   88 5d fb                mov    %bl,-0x5(%ebp)
  2110.   return result;
  2111.   101556:   0f b6 45 fb             movzbl -0x5(%ebp),%eax
  2112. }
  2113.   10155a:   83 c4 18                add    $0x18,%esp
  2114.   10155d:   5b                      pop    %ebx
  2115.   10155e:   5d                      pop    %ebp
  2116.   10155f:   c3                      ret    
  2117.  
  2118. 00101560 <send_kbc_command>:
  2119. #define KBC_COMM_READ_CCB  0x20
  2120. #define KBC_COMM_WRITE_CCB 0x60
  2121.  
  2122. #define KBC_COMMAND_OK 0xFA
  2123. /* ---------- Befehl an KBC senden -------------------- */
  2124. static uint8_t send_kbc_command(uint8_t port,uint8_t command){
  2125.   101560:   55                      push   %ebp
  2126.   101561:   89 e5                   mov    %esp,%ebp
  2127.   101563:   83 ec 38                sub    $0x38,%esp
  2128.   101566:   8b 55 08                mov    0x8(%ebp),%edx
  2129.   101569:   8b 45 0c                mov    0xc(%ebp),%eax
  2130.   10156c:   88 55 e4                mov    %dl,-0x1c(%ebp)
  2131.   10156f:   88 45 e0                mov    %al,-0x20(%ebp)
  2132.   static int fz = 3; /// @p fz Fehlerzähler
  2133.   uint8_t ret;/// @p ret Rückgabe vom KBC
  2134.  
  2135.   //Warten bis Eigabepuffer leer ist
  2136.   while( inb(KBC_PORT_KBCREGISTER) & 0x2 );
  2137.   101572:   90                      nop
  2138.   101573:   c7 04 24 64 00 00 00    movl   $0x64,(%esp)
  2139.   10157a:   e8 b3 ff ff ff          call   101532 <inb>
  2140.   10157f:   0f b6 c0                movzbl %al,%eax
  2141.   101582:   83 e0 02                and    $0x2,%eax
  2142.   101585:   85 c0                   test   %eax,%eax
  2143.   101587:   75 ea                   jne    101573 <send_kbc_command+0x13>
  2144.   //KBC-Befehl senden
  2145.   outb(port, command);
  2146.   101589:   0f b6 55 e0             movzbl -0x20(%ebp),%edx
  2147.   10158d:   0f b6 45 e4             movzbl -0x1c(%ebp),%eax
  2148.   101591:   89 54 24 04             mov    %edx,0x4(%esp)
  2149.   101595:   89 04 24                mov    %eax,(%esp)
  2150.   101598:   e8 77 ff ff ff          call   101514 <outb>
  2151.   //Warten bis Antwort im Ausgabepuffer liegt
  2152.   while( inb(KBC_PORT_KBCREGISTER) & 0x1 );
  2153.   10159d:   90                      nop
  2154.   10159e:   c7 04 24 64 00 00 00    movl   $0x64,(%esp)
  2155.   1015a5:   e8 88 ff ff ff          call   101532 <inb>
  2156.   1015aa:   0f b6 c0                movzbl %al,%eax
  2157.   1015ad:   83 e0 01                and    $0x1,%eax
  2158.   1015b0:   84 c0                   test   %al,%al
  2159.   1015b2:   75 ea                   jne    10159e <send_kbc_command+0x3e>
  2160.   //Antwort einlesen
  2161.   ret = inb(KBC_PORT_KBCDATA);
  2162.   1015b4:   c7 04 24 60 00 00 00    movl   $0x60,(%esp)
  2163.   1015bb:   e8 72 ff ff ff          call   101532 <inb>
  2164.   1015c0:   88 45 f7                mov    %al,-0x9(%ebp)
  2165.   //Erfolgreich?
  2166.   if(ret == KBC_COMMAND_OK || fz > 2){
  2167.   1015c3:   80 7d f7 fa             cmpb   $0xfa,-0x9(%ebp)
  2168.   1015c7:   74 0a                   je     1015d3 <send_kbc_command+0x73>
  2169.   1015c9:   a1 e0 46 10 00          mov    0x1046e0,%eax
  2170.   1015ce:   83 f8 02                cmp    $0x2,%eax
  2171.   1015d1:   7e 10                   jle    1015e3 <send_kbc_command+0x83>
  2172.     fz = 3;//Fehlerzähler rücksetzen
  2173.   1015d3:   c7 05 e0 46 10 00 03    movl   $0x3,0x1046e0
  2174.   1015da:   00 00 00
  2175.     return ret;//ENDE
  2176.   1015dd:   0f b6 45 f7             movzbl -0x9(%ebp),%eax
  2177.   1015e1:   eb 21                   jmp    101604 <send_kbc_command+0xa4>
  2178.   }else{
  2179.     --fz;//Fehlerzähler dekremantieren
  2180.   1015e3:   a1 e0 46 10 00          mov    0x1046e0,%eax
  2181.   1015e8:   83 e8 01                sub    $0x1,%eax
  2182.   1015eb:   a3 e0 46 10 00          mov    %eax,0x1046e0
  2183.     send_kbc_command(port, command);//Nochmal versuchen
  2184.   1015f0:   0f b6 55 e0             movzbl -0x20(%ebp),%edx
  2185.   1015f4:   0f b6 45 e4             movzbl -0x1c(%ebp),%eax
  2186.   1015f8:   89 54 24 04             mov    %edx,0x4(%esp)
  2187.   1015fc:   89 04 24                mov    %eax,(%esp)
  2188.   1015ff:   e8 5c ff ff ff          call   101560 <send_kbc_command>
  2189.   }
  2190. }
  2191.   101604:   c9                      leave  
  2192.   101605:   c3                      ret    
  2193.  
  2194. 00101606 <send_kbd_command>:
  2195. /* ---------- Befehl an Tastatur senden --------------- */
  2196. static uint8_t send_kbd_command(uint8_t command){
  2197.   101606:   55                      push   %ebp
  2198.   101607:   89 e5                   mov    %esp,%ebp
  2199.   101609:   83 ec 28                sub    $0x28,%esp
  2200.   10160c:   8b 45 08                mov    0x8(%ebp),%eax
  2201.   10160f:   88 45 f4                mov    %al,-0xc(%ebp)
  2202.   return send_kbc_command(KBC_PORT_KBDCOMMAND,command);
  2203.   101612:   0f b6 45 f4             movzbl -0xc(%ebp),%eax
  2204.   101616:   89 44 24 04             mov    %eax,0x4(%esp)
  2205.   10161a:   c7 04 24 60 00 00 00    movl   $0x60,(%esp)
  2206.   101621:   e8 3a ff ff ff          call   101560 <send_kbc_command>
  2207. }
  2208.   101626:   c9                      leave  
  2209.   101627:   c3                      ret    
  2210.  
  2211. 00101628 <init_keyboard>:
  2212.  
  2213. #include "kbc.h"
  2214. #include "keyboard.h"
  2215.  
  2216. /* ---------- Tastatur initalisieren ------------------ */
  2217. void init_keyboard(void){
  2218.   101628:   55                      push   %ebp
  2219.   101629:   89 e5                   mov    %esp,%ebp
  2220.   10162b:   83 ec 18                sub    $0x18,%esp
  2221.   color = 0x0F;
  2222.   10162e:   c7 05 e4 46 10 00 0f    movl   $0xf,0x1046e4
  2223.   101635:   00 00 00
  2224.  
  2225.   //Warten bis Tastatur nicht mehr im Resetmodus ist
  2226.   while(! (inb(KBC_PORT_KBCREGISTER) & 0x4) );
  2227.   101638:   90                      nop
  2228.   101639:   c7 04 24 64 00 00 00    movl   $0x64,(%esp)
  2229.   101640:   e8 ed fe ff ff          call   101532 <inb>
  2230.   101645:   0f b6 c0                movzbl %al,%eax
  2231.   101648:   83 e0 04                and    $0x4,%eax
  2232.   10164b:   85 c0                   test   %eax,%eax
  2233.   10164d:   74 ea                   je     101639 <init_keyboard+0x11>
  2234.  
  2235.   //Ausgabepuffer leeren
  2236.   while (inb(KBC_PORT_KBCREGISTER) & 0x1){
  2237.   10164f:   eb 0c                   jmp    10165d <init_keyboard+0x35>
  2238.     //Solange Ausgabepuffer voll ist Datenregister lesen
  2239.     inb(KBC_PORT_KBCDATA);
  2240.   101651:   c7 04 24 60 00 00 00    movl   $0x60,(%esp)
  2241.   101658:   e8 d5 fe ff ff          call   101532 <inb>
  2242.  
  2243.   //Warten bis Tastatur nicht mehr im Resetmodus ist
  2244.   while(! (inb(KBC_PORT_KBCREGISTER) & 0x4) );
  2245.  
  2246.   //Ausgabepuffer leeren
  2247.   while (inb(KBC_PORT_KBCREGISTER) & 0x1){
  2248.   10165d:   c7 04 24 64 00 00 00    movl   $0x64,(%esp)
  2249.   101664:   e8 c9 fe ff ff          call   101532 <inb>
  2250.   101669:   0f b6 c0                movzbl %al,%eax
  2251.   10166c:   83 e0 01                and    $0x1,%eax
  2252.   10166f:   84 c0                   test   %al,%al
  2253.   101671:   75 de                   jne    101651 <init_keyboard+0x29>
  2254.     //Solange Ausgabepuffer voll ist Datenregister lesen
  2255.     inb(KBC_PORT_KBCDATA);
  2256.   }
  2257.  
  2258.   //LEDs ausschalten
  2259.   send_kbd_command(KBD_COMM_LEDS);
  2260.   101673:   c7 04 24 ed 00 00 00    movl   $0xed,(%esp)
  2261.   10167a:   e8 87 ff ff ff          call   101606 <send_kbd_command>
  2262.   outb(KBC_PORT_KBCDATA, 0);
  2263.   10167f:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
  2264.   101686:   00
  2265.   101687:   c7 04 24 60 00 00 00    movl   $0x60,(%esp)
  2266.   10168e:   e8 81 fe ff ff          call   101514 <outb>
  2267.  
  2268.   //Schnellste Wiederholrate einstellen
  2269.   send_kbd_command(KBD_COMM_WDHR);
  2270.   101693:   c7 04 24 f3 00 00 00    movl   $0xf3,(%esp)
  2271.   10169a:   e8 67 ff ff ff          call   101606 <send_kbd_command>
  2272.   outb(KBC_PORT_KBCDATA, 0);
  2273.   10169f:   c7 44 24 04 00 00 00    movl   $0x0,0x4(%esp)
  2274.   1016a6:   00
  2275.   1016a7:   c7 04 24 60 00 00 00    movl   $0x60,(%esp)
  2276.   1016ae:   e8 61 fe ff ff          call   101514 <outb>
  2277.  
  2278.   //Tastatur aktivieren
  2279.   send_kbd_command(KBD_COMM_ACTV);
  2280.   1016b3:   c7 04 24 f4 00 00 00    movl   $0xf4,(%esp)
  2281.   1016ba:   e8 47 ff ff ff          call   101606 <send_kbd_command>
  2282. }
  2283.   1016bf:   c9                      leave  
  2284.   1016c0:   c3                      ret    
  2285.  
  2286. 001016c1 <keyboard_irq_handler>:
  2287. /* ---------- IRQ handler für Tastatur ---------------- */
  2288. void keyboard_irq_handler(void){
  2289.   1016c1:   55                      push   %ebp
  2290.   1016c2:   89 e5                   mov    %esp,%ebp
  2291.   1016c4:   83 ec 18                sub    $0x18,%esp
  2292.   printf("Taste gedrueckt!\n\n");
  2293.   1016c7:   c7 04 24 7b 35 10 00    movl   $0x10357b,(%esp)
  2294.   1016ce:   e8 0f 18 00 00          call   102ee2 <puts>
  2295. }
  2296.   1016d3:   c9                      leave  
  2297.   1016d4:   c3                      ret    
  2298.   1016d5:   90                      nop
  2299.   1016d6:   90                      nop
  2300.   1016d7:   90                      nop
  2301.  
  2302. 001016d8 <sprintfr>:
  2303.  
  2304. #define MINUS 45
  2305. #define HEX10 55
  2306. #define NULL  48
  2307. /* ---------- Strings formatieren --------------------- */
  2308. char* sprintfr(char *s,long *args){
  2309.   1016d8:   55                      push   %ebp
  2310.   1016d9:   89 e5                   mov    %esp,%ebp
  2311.   1016db:   57                      push   %edi
  2312.   1016dc:   56                      push   %esi
  2313.   1016dd:   53                      push   %ebx
  2314.   1016de:   81 ec e4 01 00 00       sub    $0x1e4,%esp
  2315.     int i,z,j,ai,sG,sN;
  2316.     bool vorflag,nullflag;
  2317.     uint64_t BCD;
  2318.     uint32_t stelle;
  2319.     ai=0;
  2320.   1016e4:   c7 45 e0 00 00 00 00    movl   $0x0,-0x20(%ebp)
  2321.     long arg;
  2322.     char *rs, b[10],bs;
  2323.     ///\p s eingabestring           \p rs ausgabestring
  2324.     ///\p i eingabestringzähler         \p z  ausgabestringzähler
  2325.     ///\p j allgemeiner schleifenzähler \p ai argumentzähler
  2326.     for(i=0,z=0;s[i] != '\0';i++){
  2327.   1016eb:   c7 45 ec 00 00 00 00    movl   $0x0,-0x14(%ebp)
  2328.   1016f2:   c7 45 e8 00 00 00 00    movl   $0x0,-0x18(%ebp)
  2329.   1016f9:   e9 66 12 00 00          jmp    102964 <sprintfr+0x128c>
  2330.       if(s[i] == '%'){
  2331.   1016fe:   8b 45 ec                mov    -0x14(%ebp),%eax
  2332.   101701:   03 45 08                add    0x8(%ebp),%eax
  2333.   101704:   0f b6 00                movzbl (%eax),%eax
  2334.   101707:   3c 25                   cmp    $0x25,%al
  2335.   101709:   0f 85 3a 12 00 00       jne    102949 <sprintfr+0x1271>
  2336.     arg = args[ai++];
  2337.   10170f:   8b 45 e0                mov    -0x20(%ebp),%eax
  2338.   101712:   c1 e0 02                shl    $0x2,%eax
  2339.   101715:   03 45 0c                add    0xc(%ebp),%eax
  2340.   101718:   8b 00                   mov    (%eax),%eax
  2341.   10171a:   89 45 c8                mov    %eax,-0x38(%ebp)
  2342.   10171d:   83 45 e0 01             addl   $0x1,-0x20(%ebp)
  2343.     if(s[i+1] > 48 && s[i+1] < 58){
  2344.   101721:   8b 45 ec                mov    -0x14(%ebp),%eax
  2345.   101724:   83 c0 01                add    $0x1,%eax
  2346.   101727:   03 45 08                add    0x8(%ebp),%eax
  2347.   10172a:   0f b6 00                movzbl (%eax),%eax
  2348.   10172d:   3c 30                   cmp    $0x30,%al
  2349.   10172f:   7e 69                   jle    10179a <sprintfr+0xc2>
  2350.   101731:   8b 45 ec                mov    -0x14(%ebp),%eax
  2351.   101734:   83 c0 01                add    $0x1,%eax
  2352.   101737:   03 45 08                add    0x8(%ebp),%eax
  2353.   10173a:   0f b6 00                movzbl (%eax),%eax
  2354.   10173d:   3c 39                   cmp    $0x39,%al
  2355.   10173f:   7f 59                   jg     10179a <sprintfr+0xc2>
  2356.         sG = 0;
  2357.   101741:   c7 45 dc 00 00 00 00    movl   $0x0,-0x24(%ebp)
  2358.         ++i;
  2359.   101748:   83 45 ec 01             addl   $0x1,-0x14(%ebp)
  2360.         for(j = 0;(s[i] > NULL && s[i] < 58);j++){
  2361.   10174c:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  2362.   101753:   eb 2b                   jmp    101780 <sprintfr+0xa8>
  2363.           sG = (sG*10) + (s[i++]-NULL);
  2364.   101755:   8b 55 dc                mov    -0x24(%ebp),%edx
  2365.   101758:   89 d0                   mov    %edx,%eax
  2366.   10175a:   c1 e0 02                shl    $0x2,%eax
  2367.   10175d:   01 d0                   add    %edx,%eax
  2368.   10175f:   01 c0                   add    %eax,%eax
  2369.   101761:   89 c2                   mov    %eax,%edx
  2370.   101763:   8b 45 ec                mov    -0x14(%ebp),%eax
  2371.   101766:   03 45 08                add    0x8(%ebp),%eax
  2372.   101769:   0f b6 00                movzbl (%eax),%eax
  2373.   10176c:   0f be c0                movsbl %al,%eax
  2374.   10176f:   83 e8 30                sub    $0x30,%eax
  2375.   101772:   8d 04 02                lea    (%edx,%eax,1),%eax
  2376.   101775:   89 45 dc                mov    %eax,-0x24(%ebp)
  2377.   101778:   83 45 ec 01             addl   $0x1,-0x14(%ebp)
  2378.       if(s[i] == '%'){
  2379.     arg = args[ai++];
  2380.     if(s[i+1] > 48 && s[i+1] < 58){
  2381.         sG = 0;
  2382.         ++i;
  2383.         for(j = 0;(s[i] > NULL && s[i] < 58);j++){
  2384.   10177c:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  2385.   101780:   8b 45 ec                mov    -0x14(%ebp),%eax
  2386.   101783:   03 45 08                add    0x8(%ebp),%eax
  2387.   101786:   0f b6 00                movzbl (%eax),%eax
  2388.   101789:   3c 30                   cmp    $0x30,%al
  2389.   10178b:   7e 0d                   jle    10179a <sprintfr+0xc2>
  2390.   10178d:   8b 45 ec                mov    -0x14(%ebp),%eax
  2391.   101790:   03 45 08                add    0x8(%ebp),%eax
  2392.   101793:   0f b6 00                movzbl (%eax),%eax
  2393.   101796:   3c 39                   cmp    $0x39,%al
  2394.   101798:   7e bb                   jle    101755 <sprintfr+0x7d>
  2395.           sG = (sG*10) + (s[i++]-NULL);
  2396.         }
  2397.     }
  2398.     switch(s[i+1]){
  2399.   10179a:   8b 45 ec                mov    -0x14(%ebp),%eax
  2400.   10179d:   83 c0 01                add    $0x1,%eax
  2401.   1017a0:   03 45 08                add    0x8(%ebp),%eax
  2402.   1017a3:   0f b6 00                movzbl (%eax),%eax
  2403.   1017a6:   0f be c0                movsbl %al,%eax
  2404.   1017a9:   83 e8 25                sub    $0x25,%eax
  2405.   1017ac:   83 f8 53                cmp    $0x53,%eax
  2406.   1017af:   0f 87 71 11 00 00       ja     102926 <sprintfr+0x124e>
  2407.   1017b5:   8b 04 85 90 35 10 00    mov    0x103590(,%eax,4),%eax
  2408.   1017bc:   ff e0                   jmp    *%eax
  2409.       case 'x': //******************************* Hex
  2410.       case 'X': //***********************************
  2411.         b[0] = (arg&0xf0000)>>16;
  2412.   1017be:   8b 45 c8                mov    -0x38(%ebp),%eax
  2413.   1017c1:   25 00 00 0f 00          and    $0xf0000,%eax
  2414.   1017c6:   c1 f8 10                sar    $0x10,%eax
  2415.   1017c9:   88 45 ba                mov    %al,-0x46(%ebp)
  2416.         b[1] = (arg&0x0f000)>>12;
  2417.   1017cc:   8b 45 c8                mov    -0x38(%ebp),%eax
  2418.   1017cf:   25 00 f0 00 00          and    $0xf000,%eax
  2419.   1017d4:   c1 f8 0c                sar    $0xc,%eax
  2420.   1017d7:   88 45 bb                mov    %al,-0x45(%ebp)
  2421.         b[2] = (arg&0x00f00)>>8;
  2422.   1017da:   8b 45 c8                mov    -0x38(%ebp),%eax
  2423.   1017dd:   25 00 0f 00 00          and    $0xf00,%eax
  2424.   1017e2:   c1 f8 08                sar    $0x8,%eax
  2425.   1017e5:   88 45 bc                mov    %al,-0x44(%ebp)
  2426.         b[3] = (arg&0x000f0)>>4;
  2427.   1017e8:   8b 45 c8                mov    -0x38(%ebp),%eax
  2428.   1017eb:   25 f0 00 00 00          and    $0xf0,%eax
  2429.   1017f0:   c1 f8 04                sar    $0x4,%eax
  2430.   1017f3:   88 45 bd                mov    %al,-0x43(%ebp)
  2431.         b[4] = (arg&0x0000f);
  2432.   1017f6:   8b 45 c8                mov    -0x38(%ebp),%eax
  2433.   1017f9:   83 e0 0f                and    $0xf,%eax
  2434.   1017fc:   88 45 be                mov    %al,-0x42(%ebp)
  2435.         for (j = 0; j < 5; j++)
  2436.   1017ff:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  2437.   101806:   eb 47                   jmp    10184f <sprintfr+0x177>
  2438.         {
  2439.           if(b[j] > 9) rs[z++] = (char) b[j] + HEX10;// ASCII a
  2440.   101808:   8d 45 ba                lea    -0x46(%ebp),%eax
  2441.   10180b:   03 45 e4                add    -0x1c(%ebp),%eax
  2442.   10180e:   0f b6 00                movzbl (%eax),%eax
  2443.   101811:   3c 09                   cmp    $0x9,%al
  2444.   101813:   7e 1c                   jle    101831 <sprintfr+0x159>
  2445.   101815:   8b 45 e8                mov    -0x18(%ebp),%eax
  2446.   101818:   89 c2                   mov    %eax,%edx
  2447.   10181a:   03 55 c4                add    -0x3c(%ebp),%edx
  2448.   10181d:   8d 45 ba                lea    -0x46(%ebp),%eax
  2449.   101820:   03 45 e4                add    -0x1c(%ebp),%eax
  2450.   101823:   0f b6 00                movzbl (%eax),%eax
  2451.   101826:   83 c0 37                add    $0x37,%eax
  2452.   101829:   88 02                   mov    %al,(%edx)
  2453.   10182b:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  2454.   10182f:   eb 1a                   jmp    10184b <sprintfr+0x173>
  2455.           else     rs[z++] = (char) b[j] + NULL; // 48 - ASCII null
  2456.   101831:   8b 45 e8                mov    -0x18(%ebp),%eax
  2457.   101834:   89 c2                   mov    %eax,%edx
  2458.   101836:   03 55 c4                add    -0x3c(%ebp),%edx
  2459.   101839:   8d 45 ba                lea    -0x46(%ebp),%eax
  2460.   10183c:   03 45 e4                add    -0x1c(%ebp),%eax
  2461.   10183f:   0f b6 00                movzbl (%eax),%eax
  2462.   101842:   83 c0 30                add    $0x30,%eax
  2463.   101845:   88 02                   mov    %al,(%edx)
  2464.   101847:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  2465.         b[0] = (arg&0xf0000)>>16;
  2466.         b[1] = (arg&0x0f000)>>12;
  2467.         b[2] = (arg&0x00f00)>>8;
  2468.         b[3] = (arg&0x000f0)>>4;
  2469.         b[4] = (arg&0x0000f);
  2470.         for (j = 0; j < 5; j++)
  2471.   10184b:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  2472.   10184f:   83 7d e4 04             cmpl   $0x4,-0x1c(%ebp)
  2473.   101853:   7e b3                   jle    101808 <sprintfr+0x130>
  2474.         {
  2475.           if(b[j] > 9) rs[z++] = (char) b[j] + HEX10;// ASCII a
  2476.           else     rs[z++] = (char) b[j] + NULL; // 48 - ASCII null
  2477.         }    
  2478.         break;
  2479.   101855:   e9 e9 10 00 00          jmp    102943 <sprintfr+0x126b>
  2480.       case 'd': //******************************** Dez (signed int)
  2481.       case 'D': //******************************************
  2482.         arg = (int) arg;
  2483.         BCD = 0;
  2484.   10185a:   c7 45 d0 00 00 00 00    movl   $0x0,-0x30(%ebp)
  2485.   101861:   c7 45 d4 00 00 00 00    movl   $0x0,-0x2c(%ebp)
  2486.         stelle = 0x8000;
  2487.   101868:   c7 45 cc 00 80 00 00    movl   $0x8000,-0x34(%ebp)
  2488.         if(arg&stelle){ vorflag = 1;arg&=0x7fff;arg--; arg^=0x7fff; }
  2489.   10186f:   8b 45 c8                mov    -0x38(%ebp),%eax
  2490.   101872:   23 45 cc                and    -0x34(%ebp),%eax
  2491.   101875:   85 c0                   test   %eax,%eax
  2492.   101877:   74 18                   je     101891 <sprintfr+0x1b9>
  2493.   101879:   c6 45 db 01             movb   $0x1,-0x25(%ebp)
  2494.   10187d:   81 65 c8 ff 7f 00 00    andl   $0x7fff,-0x38(%ebp)
  2495.   101884:   83 6d c8 01             subl   $0x1,-0x38(%ebp)
  2496.   101888:   81 75 c8 ff 7f 00 00    xorl   $0x7fff,-0x38(%ebp)
  2497.   10188f:   eb 04                   jmp    101895 <sprintfr+0x1bd>
  2498.         else vorflag = 0;
  2499.   101891:   c6 45 db 00             movb   $0x0,-0x25(%ebp)
  2500.         for(j=0;j<16;j++){
  2501.   101895:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  2502.   10189c:   e9 f1 00 00 00          jmp    101992 <sprintfr+0x2ba>
  2503.           BCD<<=1;
  2504.   1018a1:   8b 45 d0                mov    -0x30(%ebp),%eax
  2505.   1018a4:   8b 55 d4                mov    -0x2c(%ebp),%edx
  2506.   1018a7:   0f a4 c2 01             shld   $0x1,%eax,%edx
  2507.   1018ab:   01 c0                   add    %eax,%eax
  2508.   1018ad:   89 45 d0                mov    %eax,-0x30(%ebp)
  2509.   1018b0:   89 55 d4                mov    %edx,-0x2c(%ebp)
  2510.           if(arg & stelle)BCD++;
  2511.   1018b3:   8b 45 c8                mov    -0x38(%ebp),%eax
  2512.   1018b6:   23 45 cc                and    -0x34(%ebp),%eax
  2513.   1018b9:   85 c0                   test   %eax,%eax
  2514.   1018bb:   74 08                   je     1018c5 <sprintfr+0x1ed>
  2515.   1018bd:   83 45 d0 01             addl   $0x1,-0x30(%ebp)
  2516.   1018c1:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2517.           stelle>>=1;
  2518.   1018c5:   d1 6d cc                shrl   -0x34(%ebp)
  2519.           if((BCD & 0x1f) > 0x9)BCD+=0x6;
  2520.   1018c8:   8b 45 d0                mov    -0x30(%ebp),%eax
  2521.   1018cb:   89 c1                   mov    %eax,%ecx
  2522.   1018cd:   83 e1 1f                and    $0x1f,%ecx
  2523.   1018d0:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2524.   1018d3:   89 c3                   mov    %eax,%ebx
  2525.   1018d5:   83 e3 00                and    $0x0,%ebx
  2526.   1018d8:   83 fb 00                cmp    $0x0,%ebx
  2527.   1018db:   72 12                   jb     1018ef <sprintfr+0x217>
  2528.   1018dd:   83 fb 00                cmp    $0x0,%ebx
  2529.   1018e0:   77 05                   ja     1018e7 <sprintfr+0x20f>
  2530.   1018e2:   83 f9 09                cmp    $0x9,%ecx
  2531.   1018e5:   76 08                   jbe    1018ef <sprintfr+0x217>
  2532.   1018e7:   83 45 d0 06             addl   $0x6,-0x30(%ebp)
  2533.   1018eb:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2534.           if((BCD & 0x1f0) > 0x90)BCD+=0x60;
  2535.   1018ef:   8b 45 d0                mov    -0x30(%ebp),%eax
  2536.   1018f2:   89 c6                   mov    %eax,%esi
  2537.   1018f4:   81 e6 f0 01 00 00       and    $0x1f0,%esi
  2538.   1018fa:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2539.   1018fd:   89 c7                   mov    %eax,%edi
  2540.   1018ff:   83 e7 00                and    $0x0,%edi
  2541.   101902:   83 ff 00                cmp    $0x0,%edi
  2542.   101905:   72 15                   jb     10191c <sprintfr+0x244>
  2543.   101907:   83 ff 00                cmp    $0x0,%edi
  2544.   10190a:   77 08                   ja     101914 <sprintfr+0x23c>
  2545.   10190c:   81 fe 90 00 00 00       cmp    $0x90,%esi
  2546.   101912:   76 08                   jbe    10191c <sprintfr+0x244>
  2547.   101914:   83 45 d0 60             addl   $0x60,-0x30(%ebp)
  2548.   101918:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2549.           if((BCD & 0x1f00) > 0x900)BCD+=0x600;
  2550.   10191c:   8b 45 d0                mov    -0x30(%ebp),%eax
  2551.   10191f:   89 c2                   mov    %eax,%edx
  2552.   101921:   81 e2 00 1f 00 00       and    $0x1f00,%edx
  2553.   101927:   89 55 a8                mov    %edx,-0x58(%ebp)
  2554.   10192a:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2555.   10192d:   89 c2                   mov    %eax,%edx
  2556.   10192f:   83 e2 00                and    $0x0,%edx
  2557.   101932:   89 55 ac                mov    %edx,-0x54(%ebp)
  2558.   101935:   83 7d ac 00             cmpl   $0x0,-0x54(%ebp)
  2559.   101939:   72 1a                   jb     101955 <sprintfr+0x27d>
  2560.   10193b:   83 7d ac 00             cmpl   $0x0,-0x54(%ebp)
  2561.   10193f:   77 09                   ja     10194a <sprintfr+0x272>
  2562.   101941:   81 7d a8 00 09 00 00    cmpl   $0x900,-0x58(%ebp)
  2563.   101948:   76 0b                   jbe    101955 <sprintfr+0x27d>
  2564.   10194a:   81 45 d0 00 06 00 00    addl   $0x600,-0x30(%ebp)
  2565.   101951:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2566.           if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
  2567.   101955:   8b 45 d0                mov    -0x30(%ebp),%eax
  2568.   101958:   89 c2                   mov    %eax,%edx
  2569.   10195a:   81 e2 00 f0 01 00       and    $0x1f000,%edx
  2570.   101960:   89 55 a0                mov    %edx,-0x60(%ebp)
  2571.   101963:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2572.   101966:   89 c2                   mov    %eax,%edx
  2573.   101968:   83 e2 00                and    $0x0,%edx
  2574.   10196b:   89 55 a4                mov    %edx,-0x5c(%ebp)
  2575.   10196e:   83 7d a4 00             cmpl   $0x0,-0x5c(%ebp)
  2576.   101972:   72 1a                   jb     10198e <sprintfr+0x2b6>
  2577.   101974:   83 7d a4 00             cmpl   $0x0,-0x5c(%ebp)
  2578.   101978:   77 09                   ja     101983 <sprintfr+0x2ab>
  2579.   10197a:   81 7d a0 00 90 00 00    cmpl   $0x9000,-0x60(%ebp)
  2580.   101981:   76 0b                   jbe    10198e <sprintfr+0x2b6>
  2581.   101983:   81 45 d0 00 60 00 00    addl   $0x6000,-0x30(%ebp)
  2582.   10198a:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2583.         arg = (int) arg;
  2584.         BCD = 0;
  2585.         stelle = 0x8000;
  2586.         if(arg&stelle){ vorflag = 1;arg&=0x7fff;arg--; arg^=0x7fff; }
  2587.         else vorflag = 0;
  2588.         for(j=0;j<16;j++){
  2589.   10198e:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  2590.   101992:   83 7d e4 0f             cmpl   $0xf,-0x1c(%ebp)
  2591.   101996:   0f 8e 05 ff ff ff       jle    1018a1 <sprintfr+0x1c9>
  2592.           if((BCD & 0x1f) > 0x9)BCD+=0x6;
  2593.           if((BCD & 0x1f0) > 0x90)BCD+=0x60;
  2594.           if((BCD & 0x1f00) > 0x900)BCD+=0x600;
  2595.           if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
  2596.         }
  2597.         b[0] = (BCD&0x0f0000)>>16;
  2598.   10199c:   8b 45 d0                mov    -0x30(%ebp),%eax
  2599.   10199f:   89 c2                   mov    %eax,%edx
  2600.   1019a1:   81 e2 00 00 0f 00       and    $0xf0000,%edx
  2601.   1019a7:   89 55 98                mov    %edx,-0x68(%ebp)
  2602.   1019aa:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2603.   1019ad:   89 c2                   mov    %eax,%edx
  2604.   1019af:   83 e2 00                and    $0x0,%edx
  2605.   1019b2:   89 55 9c                mov    %edx,-0x64(%ebp)
  2606.   1019b5:   8b 45 98                mov    -0x68(%ebp),%eax
  2607.   1019b8:   8b 55 9c                mov    -0x64(%ebp),%edx
  2608.   1019bb:   0f ac d0 10             shrd   $0x10,%edx,%eax
  2609.   1019bf:   c1 ea 10                shr    $0x10,%edx
  2610.   1019c2:   88 45 ba                mov    %al,-0x46(%ebp)
  2611.         b[1] = (BCD&0x0f000)>>12;
  2612.   1019c5:   8b 45 d0                mov    -0x30(%ebp),%eax
  2613.   1019c8:   89 c2                   mov    %eax,%edx
  2614.   1019ca:   81 e2 00 f0 00 00       and    $0xf000,%edx
  2615.   1019d0:   89 55 90                mov    %edx,-0x70(%ebp)
  2616.   1019d3:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2617.   1019d6:   89 c2                   mov    %eax,%edx
  2618.   1019d8:   83 e2 00                and    $0x0,%edx
  2619.   1019db:   89 55 94                mov    %edx,-0x6c(%ebp)
  2620.   1019de:   8b 45 90                mov    -0x70(%ebp),%eax
  2621.   1019e1:   8b 55 94                mov    -0x6c(%ebp),%edx
  2622.   1019e4:   0f ac d0 0c             shrd   $0xc,%edx,%eax
  2623.   1019e8:   c1 ea 0c                shr    $0xc,%edx
  2624.   1019eb:   88 45 bb                mov    %al,-0x45(%ebp)
  2625.         b[2] = (BCD&0x0f00)>>8;
  2626.   1019ee:   8b 45 d0                mov    -0x30(%ebp),%eax
  2627.   1019f1:   89 c2                   mov    %eax,%edx
  2628.   1019f3:   81 e2 00 0f 00 00       and    $0xf00,%edx
  2629.   1019f9:   89 55 88                mov    %edx,-0x78(%ebp)
  2630.   1019fc:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2631.   1019ff:   89 c2                   mov    %eax,%edx
  2632.   101a01:   83 e2 00                and    $0x0,%edx
  2633.   101a04:   89 55 8c                mov    %edx,-0x74(%ebp)
  2634.   101a07:   8b 45 88                mov    -0x78(%ebp),%eax
  2635.   101a0a:   8b 55 8c                mov    -0x74(%ebp),%edx
  2636.   101a0d:   0f ac d0 08             shrd   $0x8,%edx,%eax
  2637.   101a11:   c1 ea 08                shr    $0x8,%edx
  2638.   101a14:   88 45 bc                mov    %al,-0x44(%ebp)
  2639.         b[3] = (BCD&0x0f0)>>4;
  2640.   101a17:   8b 45 d0                mov    -0x30(%ebp),%eax
  2641.   101a1a:   89 c2                   mov    %eax,%edx
  2642.   101a1c:   81 e2 f0 00 00 00       and    $0xf0,%edx
  2643.   101a22:   89 55 80                mov    %edx,-0x80(%ebp)
  2644.   101a25:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2645.   101a28:   89 c2                   mov    %eax,%edx
  2646.   101a2a:   83 e2 00                and    $0x0,%edx
  2647.   101a2d:   89 55 84                mov    %edx,-0x7c(%ebp)
  2648.   101a30:   8b 45 80                mov    -0x80(%ebp),%eax
  2649.   101a33:   8b 55 84                mov    -0x7c(%ebp),%edx
  2650.   101a36:   0f ac d0 04             shrd   $0x4,%edx,%eax
  2651.   101a3a:   c1 ea 04                shr    $0x4,%edx
  2652.   101a3d:   88 45 bd                mov    %al,-0x43(%ebp)
  2653.         b[4] = (BCD&0x0f);
  2654.   101a40:   8b 45 d0                mov    -0x30(%ebp),%eax
  2655.   101a43:   83 e0 0f                and    $0xf,%eax
  2656.   101a46:   88 45 be                mov    %al,-0x42(%ebp)
  2657.  
  2658.         nullflag = 1;
  2659.   101a49:   c6 45 da 01             movb   $0x1,-0x26(%ebp)
  2660.         if(vorflag) rs[z++] = MINUS;// 45 - ASCII minus
  2661.   101a4d:   80 7d db 00             cmpb   $0x0,-0x25(%ebp)
  2662.   101a51:   74 0d                   je     101a60 <sprintfr+0x388>
  2663.   101a53:   8b 45 e8                mov    -0x18(%ebp),%eax
  2664.   101a56:   03 45 c4                add    -0x3c(%ebp),%eax
  2665.   101a59:   c6 00 2d                movb   $0x2d,(%eax)
  2666.   101a5c:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  2667.         for(j=0;j<5;j++){
  2668.   101a60:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  2669.   101a67:   eb 35                   jmp    101a9e <sprintfr+0x3c6>
  2670.           if(! (b[j] == 0 && nullflag)){
  2671.   101a69:   8d 45 ba                lea    -0x46(%ebp),%eax
  2672.   101a6c:   03 45 e4                add    -0x1c(%ebp),%eax
  2673.   101a6f:   0f b6 00                movzbl (%eax),%eax
  2674.   101a72:   84 c0                   test   %al,%al
  2675.   101a74:   75 06                   jne    101a7c <sprintfr+0x3a4>
  2676.   101a76:   80 7d da 00             cmpb   $0x0,-0x26(%ebp)
  2677.   101a7a:   75 1e                   jne    101a9a <sprintfr+0x3c2>
  2678.         rs[z++] = b[j] + NULL;// 48 - ASCII null
  2679.   101a7c:   8b 45 e8                mov    -0x18(%ebp),%eax
  2680.   101a7f:   89 c2                   mov    %eax,%edx
  2681.   101a81:   03 55 c4                add    -0x3c(%ebp),%edx
  2682.   101a84:   8d 45 ba                lea    -0x46(%ebp),%eax
  2683.   101a87:   03 45 e4                add    -0x1c(%ebp),%eax
  2684.   101a8a:   0f b6 00                movzbl (%eax),%eax
  2685.   101a8d:   83 c0 30                add    $0x30,%eax
  2686.   101a90:   88 02                   mov    %al,(%edx)
  2687.   101a92:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  2688.         nullflag =0;
  2689.   101a96:   c6 45 da 00             movb   $0x0,-0x26(%ebp)
  2690.         b[3] = (BCD&0x0f0)>>4;
  2691.         b[4] = (BCD&0x0f);
  2692.  
  2693.         nullflag = 1;
  2694.         if(vorflag) rs[z++] = MINUS;// 45 - ASCII minus
  2695.         for(j=0;j<5;j++){
  2696.   101a9a:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  2697.   101a9e:   83 7d e4 04             cmpl   $0x4,-0x1c(%ebp)
  2698.   101aa2:   7e c5                   jle    101a69 <sprintfr+0x391>
  2699.           if(! (b[j] == 0 && nullflag)){
  2700.         rs[z++] = b[j] + NULL;// 48 - ASCII null
  2701.         nullflag =0;
  2702.           }
  2703.         }
  2704.         if(nullflag) rs[z++] = NULL;
  2705.   101aa4:   80 7d da 00             cmpb   $0x0,-0x26(%ebp)
  2706.   101aa8:   0f 84 91 0e 00 00       je     10293f <sprintfr+0x1267>
  2707.   101aae:   8b 45 e8                mov    -0x18(%ebp),%eax
  2708.   101ab1:   03 45 c4                add    -0x3c(%ebp),%eax
  2709.   101ab4:   c6 00 30                movb   $0x30,(%eax)
  2710.   101ab7:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  2711.         break;
  2712.   101abb:   e9 83 0e 00 00          jmp    102943 <sprintfr+0x126b>
  2713.       case 'u': //******************************** Dez (unsigned int)
  2714.       case 'U': //**************************************************
  2715.         arg = (unsigned int) arg;
  2716.         BCD = 0;
  2717.   101ac0:   c7 45 d0 00 00 00 00    movl   $0x0,-0x30(%ebp)
  2718.   101ac7:   c7 45 d4 00 00 00 00    movl   $0x0,-0x2c(%ebp)
  2719.         stelle = 0x8000;
  2720.   101ace:   c7 45 cc 00 80 00 00    movl   $0x8000,-0x34(%ebp)
  2721.         for(j=0;j<16;j++){
  2722.   101ad5:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  2723.   101adc:   e9 3f 01 00 00          jmp    101c20 <sprintfr+0x548>
  2724.           BCD<<=1;
  2725.   101ae1:   8b 45 d0                mov    -0x30(%ebp),%eax
  2726.   101ae4:   8b 55 d4                mov    -0x2c(%ebp),%edx
  2727.   101ae7:   0f a4 c2 01             shld   $0x1,%eax,%edx
  2728.   101aeb:   01 c0                   add    %eax,%eax
  2729.   101aed:   89 45 d0                mov    %eax,-0x30(%ebp)
  2730.   101af0:   89 55 d4                mov    %edx,-0x2c(%ebp)
  2731.           if(arg & stelle)BCD++;
  2732.   101af3:   8b 45 c8                mov    -0x38(%ebp),%eax
  2733.   101af6:   23 45 cc                and    -0x34(%ebp),%eax
  2734.   101af9:   85 c0                   test   %eax,%eax
  2735.   101afb:   74 08                   je     101b05 <sprintfr+0x42d>
  2736.   101afd:   83 45 d0 01             addl   $0x1,-0x30(%ebp)
  2737.   101b01:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2738.           stelle>>=1;
  2739.   101b05:   d1 6d cc                shrl   -0x34(%ebp)
  2740.           if((BCD & 0x1f) > 0x9)BCD+=0x6;
  2741.   101b08:   8b 45 d0                mov    -0x30(%ebp),%eax
  2742.   101b0b:   89 c2                   mov    %eax,%edx
  2743.   101b0d:   83 e2 1f                and    $0x1f,%edx
  2744.   101b10:   89 95 78 ff ff ff       mov    %edx,-0x88(%ebp)
  2745.   101b16:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2746.   101b19:   89 c2                   mov    %eax,%edx
  2747.   101b1b:   83 e2 00                and    $0x0,%edx
  2748.   101b1e:   89 95 7c ff ff ff       mov    %edx,-0x84(%ebp)
  2749.   101b24:   83 bd 7c ff ff ff 00    cmpl   $0x0,-0x84(%ebp)
  2750.   101b2b:   72 1a                   jb     101b47 <sprintfr+0x46f>
  2751.   101b2d:   83 bd 7c ff ff ff 00    cmpl   $0x0,-0x84(%ebp)
  2752.   101b34:   77 09                   ja     101b3f <sprintfr+0x467>
  2753.   101b36:   83 bd 78 ff ff ff 09    cmpl   $0x9,-0x88(%ebp)
  2754.   101b3d:   76 08                   jbe    101b47 <sprintfr+0x46f>
  2755.   101b3f:   83 45 d0 06             addl   $0x6,-0x30(%ebp)
  2756.   101b43:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2757.           if((BCD & 0x1f0) > 0x90)BCD+=0x60;
  2758.   101b47:   8b 45 d0                mov    -0x30(%ebp),%eax
  2759.   101b4a:   89 c2                   mov    %eax,%edx
  2760.   101b4c:   81 e2 f0 01 00 00       and    $0x1f0,%edx
  2761.   101b52:   89 95 70 ff ff ff       mov    %edx,-0x90(%ebp)
  2762.   101b58:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2763.   101b5b:   89 c2                   mov    %eax,%edx
  2764.   101b5d:   83 e2 00                and    $0x0,%edx
  2765.   101b60:   89 95 74 ff ff ff       mov    %edx,-0x8c(%ebp)
  2766.   101b66:   83 bd 74 ff ff ff 00    cmpl   $0x0,-0x8c(%ebp)
  2767.   101b6d:   72 1d                   jb     101b8c <sprintfr+0x4b4>
  2768.   101b6f:   83 bd 74 ff ff ff 00    cmpl   $0x0,-0x8c(%ebp)
  2769.   101b76:   77 0c                   ja     101b84 <sprintfr+0x4ac>
  2770.   101b78:   81 bd 70 ff ff ff 90    cmpl   $0x90,-0x90(%ebp)
  2771.   101b7f:   00 00 00
  2772.   101b82:   76 08                   jbe    101b8c <sprintfr+0x4b4>
  2773.   101b84:   83 45 d0 60             addl   $0x60,-0x30(%ebp)
  2774.   101b88:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2775.           if((BCD & 0x1f00) > 0x900)BCD+=0x600;
  2776.   101b8c:   8b 45 d0                mov    -0x30(%ebp),%eax
  2777.   101b8f:   89 c2                   mov    %eax,%edx
  2778.   101b91:   81 e2 00 1f 00 00       and    $0x1f00,%edx
  2779.   101b97:   89 95 68 ff ff ff       mov    %edx,-0x98(%ebp)
  2780.   101b9d:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2781.   101ba0:   89 c2                   mov    %eax,%edx
  2782.   101ba2:   83 e2 00                and    $0x0,%edx
  2783.   101ba5:   89 95 6c ff ff ff       mov    %edx,-0x94(%ebp)
  2784.   101bab:   83 bd 6c ff ff ff 00    cmpl   $0x0,-0x94(%ebp)
  2785.   101bb2:   72 20                   jb     101bd4 <sprintfr+0x4fc>
  2786.   101bb4:   83 bd 6c ff ff ff 00    cmpl   $0x0,-0x94(%ebp)
  2787.   101bbb:   77 0c                   ja     101bc9 <sprintfr+0x4f1>
  2788.   101bbd:   81 bd 68 ff ff ff 00    cmpl   $0x900,-0x98(%ebp)
  2789.   101bc4:   09 00 00
  2790.   101bc7:   76 0b                   jbe    101bd4 <sprintfr+0x4fc>
  2791.   101bc9:   81 45 d0 00 06 00 00    addl   $0x600,-0x30(%ebp)
  2792.   101bd0:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2793.           if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
  2794.   101bd4:   8b 45 d0                mov    -0x30(%ebp),%eax
  2795.   101bd7:   89 c2                   mov    %eax,%edx
  2796.   101bd9:   81 e2 00 f0 01 00       and    $0x1f000,%edx
  2797.   101bdf:   89 95 60 ff ff ff       mov    %edx,-0xa0(%ebp)
  2798.   101be5:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2799.   101be8:   89 c2                   mov    %eax,%edx
  2800.   101bea:   83 e2 00                and    $0x0,%edx
  2801.   101bed:   89 95 64 ff ff ff       mov    %edx,-0x9c(%ebp)
  2802.   101bf3:   83 bd 64 ff ff ff 00    cmpl   $0x0,-0x9c(%ebp)
  2803.   101bfa:   72 20                   jb     101c1c <sprintfr+0x544>
  2804.   101bfc:   83 bd 64 ff ff ff 00    cmpl   $0x0,-0x9c(%ebp)
  2805.   101c03:   77 0c                   ja     101c11 <sprintfr+0x539>
  2806.   101c05:   81 bd 60 ff ff ff 00    cmpl   $0x9000,-0xa0(%ebp)
  2807.   101c0c:   90 00 00
  2808.   101c0f:   76 0b                   jbe    101c1c <sprintfr+0x544>
  2809.   101c11:   81 45 d0 00 60 00 00    addl   $0x6000,-0x30(%ebp)
  2810.   101c18:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  2811.       case 'u': //******************************** Dez (unsigned int)
  2812.       case 'U': //**************************************************
  2813.         arg = (unsigned int) arg;
  2814.         BCD = 0;
  2815.         stelle = 0x8000;
  2816.         for(j=0;j<16;j++){
  2817.   101c1c:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  2818.   101c20:   83 7d e4 0f             cmpl   $0xf,-0x1c(%ebp)
  2819.   101c24:   0f 8e b7 fe ff ff       jle    101ae1 <sprintfr+0x409>
  2820.           if((BCD & 0x1f) > 0x9)BCD+=0x6;
  2821.           if((BCD & 0x1f0) > 0x90)BCD+=0x60;
  2822.           if((BCD & 0x1f00) > 0x900)BCD+=0x600;
  2823.           if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
  2824.         }
  2825.         b[0] = (BCD&0x0f0000)>>16;
  2826.   101c2a:   8b 45 d0                mov    -0x30(%ebp),%eax
  2827.   101c2d:   89 c2                   mov    %eax,%edx
  2828.   101c2f:   81 e2 00 00 0f 00       and    $0xf0000,%edx
  2829.   101c35:   89 95 58 ff ff ff       mov    %edx,-0xa8(%ebp)
  2830.   101c3b:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2831.   101c3e:   89 c2                   mov    %eax,%edx
  2832.   101c40:   83 e2 00                and    $0x0,%edx
  2833.   101c43:   89 95 5c ff ff ff       mov    %edx,-0xa4(%ebp)
  2834.   101c49:   8b 85 58 ff ff ff       mov    -0xa8(%ebp),%eax
  2835.   101c4f:   8b 95 5c ff ff ff       mov    -0xa4(%ebp),%edx
  2836.   101c55:   0f ac d0 10             shrd   $0x10,%edx,%eax
  2837.   101c59:   c1 ea 10                shr    $0x10,%edx
  2838.   101c5c:   88 45 ba                mov    %al,-0x46(%ebp)
  2839.         b[1] = (BCD&0x0f000)>>12;
  2840.   101c5f:   8b 45 d0                mov    -0x30(%ebp),%eax
  2841.   101c62:   89 c2                   mov    %eax,%edx
  2842.   101c64:   81 e2 00 f0 00 00       and    $0xf000,%edx
  2843.   101c6a:   89 95 50 ff ff ff       mov    %edx,-0xb0(%ebp)
  2844.   101c70:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2845.   101c73:   89 c2                   mov    %eax,%edx
  2846.   101c75:   83 e2 00                and    $0x0,%edx
  2847.   101c78:   89 95 54 ff ff ff       mov    %edx,-0xac(%ebp)
  2848.   101c7e:   8b 85 50 ff ff ff       mov    -0xb0(%ebp),%eax
  2849.   101c84:   8b 95 54 ff ff ff       mov    -0xac(%ebp),%edx
  2850.   101c8a:   0f ac d0 0c             shrd   $0xc,%edx,%eax
  2851.   101c8e:   c1 ea 0c                shr    $0xc,%edx
  2852.   101c91:   88 45 bb                mov    %al,-0x45(%ebp)
  2853.         b[2] = (BCD&0x0f00)>>8;
  2854.   101c94:   8b 45 d0                mov    -0x30(%ebp),%eax
  2855.   101c97:   89 c2                   mov    %eax,%edx
  2856.   101c99:   81 e2 00 0f 00 00       and    $0xf00,%edx
  2857.   101c9f:   89 95 48 ff ff ff       mov    %edx,-0xb8(%ebp)
  2858.   101ca5:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2859.   101ca8:   89 c2                   mov    %eax,%edx
  2860.   101caa:   83 e2 00                and    $0x0,%edx
  2861.   101cad:   89 95 4c ff ff ff       mov    %edx,-0xb4(%ebp)
  2862.   101cb3:   8b 85 48 ff ff ff       mov    -0xb8(%ebp),%eax
  2863.   101cb9:   8b 95 4c ff ff ff       mov    -0xb4(%ebp),%edx
  2864.   101cbf:   0f ac d0 08             shrd   $0x8,%edx,%eax
  2865.   101cc3:   c1 ea 08                shr    $0x8,%edx
  2866.   101cc6:   88 45 bc                mov    %al,-0x44(%ebp)
  2867.         b[3] = (BCD&0x0f0)>>4;
  2868.   101cc9:   8b 45 d0                mov    -0x30(%ebp),%eax
  2869.   101ccc:   89 c2                   mov    %eax,%edx
  2870.   101cce:   81 e2 f0 00 00 00       and    $0xf0,%edx
  2871.   101cd4:   89 95 40 ff ff ff       mov    %edx,-0xc0(%ebp)
  2872.   101cda:   8b 45 d4                mov    -0x2c(%ebp),%eax
  2873.   101cdd:   89 c2                   mov    %eax,%edx
  2874.   101cdf:   83 e2 00                and    $0x0,%edx
  2875.   101ce2:   89 95 44 ff ff ff       mov    %edx,-0xbc(%ebp)
  2876.   101ce8:   8b 85 40 ff ff ff       mov    -0xc0(%ebp),%eax
  2877.   101cee:   8b 95 44 ff ff ff       mov    -0xbc(%ebp),%edx
  2878.   101cf4:   0f ac d0 04             shrd   $0x4,%edx,%eax
  2879.   101cf8:   c1 ea 04                shr    $0x4,%edx
  2880.   101cfb:   88 45 bd                mov    %al,-0x43(%ebp)
  2881.         b[4] = (BCD&0x0f);
  2882.   101cfe:   8b 45 d0                mov    -0x30(%ebp),%eax
  2883.   101d01:   83 e0 0f                and    $0xf,%eax
  2884.   101d04:   88 45 be                mov    %al,-0x42(%ebp)
  2885.         nullflag = 1;
  2886.   101d07:   c6 45 da 01             movb   $0x1,-0x26(%ebp)
  2887.         for(j=0;j<5;j++){
  2888.   101d0b:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  2889.   101d12:   eb 35                   jmp    101d49 <sprintfr+0x671>
  2890.           if(! (b[j] == 0 && nullflag)){
  2891.   101d14:   8d 45 ba                lea    -0x46(%ebp),%eax
  2892.   101d17:   03 45 e4                add    -0x1c(%ebp),%eax
  2893.   101d1a:   0f b6 00                movzbl (%eax),%eax
  2894.   101d1d:   84 c0                   test   %al,%al
  2895.   101d1f:   75 06                   jne    101d27 <sprintfr+0x64f>
  2896.   101d21:   80 7d da 00             cmpb   $0x0,-0x26(%ebp)
  2897.   101d25:   75 1e                   jne    101d45 <sprintfr+0x66d>
  2898.         rs[z++] = b[j] + NULL;// 48 - ASCII null
  2899.   101d27:   8b 45 e8                mov    -0x18(%ebp),%eax
  2900.   101d2a:   89 c2                   mov    %eax,%edx
  2901.   101d2c:   03 55 c4                add    -0x3c(%ebp),%edx
  2902.   101d2f:   8d 45 ba                lea    -0x46(%ebp),%eax
  2903.   101d32:   03 45 e4                add    -0x1c(%ebp),%eax
  2904.   101d35:   0f b6 00                movzbl (%eax),%eax
  2905.   101d38:   83 c0 30                add    $0x30,%eax
  2906.   101d3b:   88 02                   mov    %al,(%edx)
  2907.   101d3d:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  2908.         nullflag = 0;
  2909.   101d41:   c6 45 da 00             movb   $0x0,-0x26(%ebp)
  2910.         b[1] = (BCD&0x0f000)>>12;
  2911.         b[2] = (BCD&0x0f00)>>8;
  2912.         b[3] = (BCD&0x0f0)>>4;
  2913.         b[4] = (BCD&0x0f);
  2914.         nullflag = 1;
  2915.         for(j=0;j<5;j++){
  2916.   101d45:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  2917.   101d49:   83 7d e4 04             cmpl   $0x4,-0x1c(%ebp)
  2918.   101d4d:   7e c5                   jle    101d14 <sprintfr+0x63c>
  2919.           if(! (b[j] == 0 && nullflag)){
  2920.         rs[z++] = b[j] + NULL;// 48 - ASCII null
  2921.         nullflag = 0;
  2922.           }
  2923.         }
  2924.         if(nullflag) rs[z++] = NULL;
  2925.   101d4f:   80 7d da 00             cmpb   $0x0,-0x26(%ebp)
  2926.   101d53:   0f 84 e9 0b 00 00       je     102942 <sprintfr+0x126a>
  2927.   101d59:   8b 45 e8                mov    -0x18(%ebp),%eax
  2928.   101d5c:   03 45 c4                add    -0x3c(%ebp),%eax
  2929.   101d5f:   c6 00 30                movb   $0x30,(%eax)
  2930.   101d62:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  2931.         break;
  2932.   101d66:   e9 d8 0b 00 00          jmp    102943 <sprintfr+0x126b>
  2933.       case 'l'://******************************** Dez (long)
  2934.       case 'L'://******************************************
  2935.         switch(s[i+2]){
  2936.   101d6b:   8b 45 ec                mov    -0x14(%ebp),%eax
  2937.   101d6e:   83 c0 02                add    $0x2,%eax
  2938.   101d71:   03 45 08                add    0x8(%ebp),%eax
  2939.   101d74:   0f b6 00                movzbl (%eax),%eax
  2940.   101d77:   0f be c0                movsbl %al,%eax
  2941.   101d7a:   83 f8 55                cmp    $0x55,%eax
  2942.   101d7d:   0f 84 b0 05 00 00       je     102333 <sprintfr+0xc5b>
  2943.   101d83:   83 f8 55                cmp    $0x55,%eax
  2944.   101d86:   7f 0a                   jg     101d92 <sprintfr+0x6ba>
  2945.   101d88:   83 f8 44                cmp    $0x44,%eax
  2946.   101d8b:   74 18                   je     101da5 <sprintfr+0x6cd>
  2947.         }
  2948.         if(nullflag) rs[z++] = NULL;// 48 - ASCII null
  2949.         i++;
  2950.         break;
  2951.         }
  2952.         break;
  2953.   101d8d:   e9 b1 0b 00 00          jmp    102943 <sprintfr+0x126b>
  2954.         }
  2955.         if(nullflag) rs[z++] = NULL;
  2956.         break;
  2957.       case 'l'://******************************** Dez (long)
  2958.       case 'L'://******************************************
  2959.         switch(s[i+2]){
  2960.   101d92:   83 f8 64                cmp    $0x64,%eax
  2961.   101d95:   74 0e                   je     101da5 <sprintfr+0x6cd>
  2962.   101d97:   83 f8 75                cmp    $0x75,%eax
  2963.   101d9a:   0f 84 93 05 00 00       je     102333 <sprintfr+0xc5b>
  2964.         }
  2965.         if(nullflag) rs[z++] = NULL;// 48 - ASCII null
  2966.         i++;
  2967.         break;
  2968.         }
  2969.         break;
  2970.   101da0:   e9 9e 0b 00 00          jmp    102943 <sprintfr+0x126b>
  2971.       case 'L'://******************************************
  2972.         switch(s[i+2]){
  2973.           case 'd'://*******************Signed (long)
  2974.           case 'D'://*******************************
  2975.         arg = (long) arg;
  2976.         BCD = 0;
  2977.   101da5:   c7 45 d0 00 00 00 00    movl   $0x0,-0x30(%ebp)
  2978.   101dac:   c7 45 d4 00 00 00 00    movl   $0x0,-0x2c(%ebp)
  2979.         stelle = 0x80000000;
  2980.   101db3:   c7 45 cc 00 00 00 80    movl   $0x80000000,-0x34(%ebp)
  2981.         if(arg&stelle){ vorflag = 1;arg&=0x7fffffff;arg--; arg^=0x7fffffff; }
  2982.   101dba:   8b 45 c8                mov    -0x38(%ebp),%eax
  2983.   101dbd:   23 45 cc                and    -0x34(%ebp),%eax
  2984.   101dc0:   85 c0                   test   %eax,%eax
  2985.   101dc2:   74 18                   je     101ddc <sprintfr+0x704>
  2986.   101dc4:   c6 45 db 01             movb   $0x1,-0x25(%ebp)
  2987.   101dc8:   81 65 c8 ff ff ff 7f    andl   $0x7fffffff,-0x38(%ebp)
  2988.   101dcf:   83 6d c8 01             subl   $0x1,-0x38(%ebp)
  2989.   101dd3:   81 75 c8 ff ff ff 7f    xorl   $0x7fffffff,-0x38(%ebp)
  2990.   101dda:   eb 04                   jmp    101de0 <sprintfr+0x708>
  2991.         else vorflag = 0;
  2992.   101ddc:   c6 45 db 00             movb   $0x0,-0x25(%ebp)
  2993.         for(j=0;j<32;j++){
  2994.   101de0:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  2995.   101de7:   e9 e6 02 00 00          jmp    1020d2 <sprintfr+0x9fa>
  2996.           BCD<<=1;
  2997.   101dec:   8b 45 d0                mov    -0x30(%ebp),%eax
  2998.   101def:   8b 55 d4                mov    -0x2c(%ebp),%edx
  2999.   101df2:   0f a4 c2 01             shld   $0x1,%eax,%edx
  3000.   101df6:   01 c0                   add    %eax,%eax
  3001.   101df8:   89 45 d0                mov    %eax,-0x30(%ebp)
  3002.   101dfb:   89 55 d4                mov    %edx,-0x2c(%ebp)
  3003.           if(arg & stelle)BCD++;
  3004.   101dfe:   8b 45 c8                mov    -0x38(%ebp),%eax
  3005.   101e01:   23 45 cc                and    -0x34(%ebp),%eax
  3006.   101e04:   85 c0                   test   %eax,%eax
  3007.   101e06:   74 08                   je     101e10 <sprintfr+0x738>
  3008.   101e08:   83 45 d0 01             addl   $0x1,-0x30(%ebp)
  3009.   101e0c:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3010.           stelle>>=1;
  3011.   101e10:   d1 6d cc                shrl   -0x34(%ebp)
  3012.           if((BCD & 0x1f) > 0x9)BCD+=0x6;
  3013.   101e13:   8b 45 d0                mov    -0x30(%ebp),%eax
  3014.   101e16:   89 c2                   mov    %eax,%edx
  3015.   101e18:   83 e2 1f                and    $0x1f,%edx
  3016.   101e1b:   89 95 38 ff ff ff       mov    %edx,-0xc8(%ebp)
  3017.   101e21:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3018.   101e24:   89 c2                   mov    %eax,%edx
  3019.   101e26:   83 e2 00                and    $0x0,%edx
  3020.   101e29:   89 95 3c ff ff ff       mov    %edx,-0xc4(%ebp)
  3021.   101e2f:   83 bd 3c ff ff ff 00    cmpl   $0x0,-0xc4(%ebp)
  3022.   101e36:   72 1a                   jb     101e52 <sprintfr+0x77a>
  3023.   101e38:   83 bd 3c ff ff ff 00    cmpl   $0x0,-0xc4(%ebp)
  3024.   101e3f:   77 09                   ja     101e4a <sprintfr+0x772>
  3025.   101e41:   83 bd 38 ff ff ff 09    cmpl   $0x9,-0xc8(%ebp)
  3026.   101e48:   76 08                   jbe    101e52 <sprintfr+0x77a>
  3027.   101e4a:   83 45 d0 06             addl   $0x6,-0x30(%ebp)
  3028.   101e4e:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3029.           if((BCD & 0x1f0) > 0x90)BCD+=0x60;
  3030.   101e52:   8b 45 d0                mov    -0x30(%ebp),%eax
  3031.   101e55:   89 c2                   mov    %eax,%edx
  3032.   101e57:   81 e2 f0 01 00 00       and    $0x1f0,%edx
  3033.   101e5d:   89 95 30 ff ff ff       mov    %edx,-0xd0(%ebp)
  3034.   101e63:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3035.   101e66:   89 c2                   mov    %eax,%edx
  3036.   101e68:   83 e2 00                and    $0x0,%edx
  3037.   101e6b:   89 95 34 ff ff ff       mov    %edx,-0xcc(%ebp)
  3038.   101e71:   83 bd 34 ff ff ff 00    cmpl   $0x0,-0xcc(%ebp)
  3039.   101e78:   72 1d                   jb     101e97 <sprintfr+0x7bf>
  3040.   101e7a:   83 bd 34 ff ff ff 00    cmpl   $0x0,-0xcc(%ebp)
  3041.   101e81:   77 0c                   ja     101e8f <sprintfr+0x7b7>
  3042.   101e83:   81 bd 30 ff ff ff 90    cmpl   $0x90,-0xd0(%ebp)
  3043.   101e8a:   00 00 00
  3044.   101e8d:   76 08                   jbe    101e97 <sprintfr+0x7bf>
  3045.   101e8f:   83 45 d0 60             addl   $0x60,-0x30(%ebp)
  3046.   101e93:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3047.           if((BCD & 0x1f00) > 0x900)BCD+=0x600;
  3048.   101e97:   8b 45 d0                mov    -0x30(%ebp),%eax
  3049.   101e9a:   89 c2                   mov    %eax,%edx
  3050.   101e9c:   81 e2 00 1f 00 00       and    $0x1f00,%edx
  3051.   101ea2:   89 95 28 ff ff ff       mov    %edx,-0xd8(%ebp)
  3052.   101ea8:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3053.   101eab:   89 c2                   mov    %eax,%edx
  3054.   101ead:   83 e2 00                and    $0x0,%edx
  3055.   101eb0:   89 95 2c ff ff ff       mov    %edx,-0xd4(%ebp)
  3056.   101eb6:   83 bd 2c ff ff ff 00    cmpl   $0x0,-0xd4(%ebp)
  3057.   101ebd:   72 20                   jb     101edf <sprintfr+0x807>
  3058.   101ebf:   83 bd 2c ff ff ff 00    cmpl   $0x0,-0xd4(%ebp)
  3059.   101ec6:   77 0c                   ja     101ed4 <sprintfr+0x7fc>
  3060.   101ec8:   81 bd 28 ff ff ff 00    cmpl   $0x900,-0xd8(%ebp)
  3061.   101ecf:   09 00 00
  3062.   101ed2:   76 0b                   jbe    101edf <sprintfr+0x807>
  3063.   101ed4:   81 45 d0 00 06 00 00    addl   $0x600,-0x30(%ebp)
  3064.   101edb:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3065.           if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
  3066.   101edf:   8b 45 d0                mov    -0x30(%ebp),%eax
  3067.   101ee2:   89 c2                   mov    %eax,%edx
  3068.   101ee4:   81 e2 00 f0 01 00       and    $0x1f000,%edx
  3069.   101eea:   89 95 20 ff ff ff       mov    %edx,-0xe0(%ebp)
  3070.   101ef0:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3071.   101ef3:   89 c2                   mov    %eax,%edx
  3072.   101ef5:   83 e2 00                and    $0x0,%edx
  3073.   101ef8:   89 95 24 ff ff ff       mov    %edx,-0xdc(%ebp)
  3074.   101efe:   83 bd 24 ff ff ff 00    cmpl   $0x0,-0xdc(%ebp)
  3075.   101f05:   72 20                   jb     101f27 <sprintfr+0x84f>
  3076.   101f07:   83 bd 24 ff ff ff 00    cmpl   $0x0,-0xdc(%ebp)
  3077.   101f0e:   77 0c                   ja     101f1c <sprintfr+0x844>
  3078.   101f10:   81 bd 20 ff ff ff 00    cmpl   $0x9000,-0xe0(%ebp)
  3079.   101f17:   90 00 00
  3080.   101f1a:   76 0b                   jbe    101f27 <sprintfr+0x84f>
  3081.   101f1c:   81 45 d0 00 60 00 00    addl   $0x6000,-0x30(%ebp)
  3082.   101f23:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3083.           if((BCD & 0x1f0000) > 0x90000)BCD+=0x60000;
  3084.   101f27:   8b 45 d0                mov    -0x30(%ebp),%eax
  3085.   101f2a:   89 c2                   mov    %eax,%edx
  3086.   101f2c:   81 e2 00 00 1f 00       and    $0x1f0000,%edx
  3087.   101f32:   89 95 18 ff ff ff       mov    %edx,-0xe8(%ebp)
  3088.   101f38:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3089.   101f3b:   89 c2                   mov    %eax,%edx
  3090.   101f3d:   83 e2 00                and    $0x0,%edx
  3091.   101f40:   89 95 1c ff ff ff       mov    %edx,-0xe4(%ebp)
  3092.   101f46:   83 bd 1c ff ff ff 00    cmpl   $0x0,-0xe4(%ebp)
  3093.   101f4d:   72 20                   jb     101f6f <sprintfr+0x897>
  3094.   101f4f:   83 bd 1c ff ff ff 00    cmpl   $0x0,-0xe4(%ebp)
  3095.   101f56:   77 0c                   ja     101f64 <sprintfr+0x88c>
  3096.   101f58:   81 bd 18 ff ff ff 00    cmpl   $0x90000,-0xe8(%ebp)
  3097.   101f5f:   00 09 00
  3098.   101f62:   76 0b                   jbe    101f6f <sprintfr+0x897>
  3099.   101f64:   81 45 d0 00 00 06 00    addl   $0x60000,-0x30(%ebp)
  3100.   101f6b:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3101.           if((BCD & 0x1f00000) > 0x900000)BCD+=0x600000;
  3102.   101f6f:   8b 45 d0                mov    -0x30(%ebp),%eax
  3103.   101f72:   89 c2                   mov    %eax,%edx
  3104.   101f74:   81 e2 00 00 f0 01       and    $0x1f00000,%edx
  3105.   101f7a:   89 95 10 ff ff ff       mov    %edx,-0xf0(%ebp)
  3106.   101f80:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3107.   101f83:   89 c2                   mov    %eax,%edx
  3108.   101f85:   83 e2 00                and    $0x0,%edx
  3109.   101f88:   89 95 14 ff ff ff       mov    %edx,-0xec(%ebp)
  3110.   101f8e:   83 bd 14 ff ff ff 00    cmpl   $0x0,-0xec(%ebp)
  3111.   101f95:   72 20                   jb     101fb7 <sprintfr+0x8df>
  3112.   101f97:   83 bd 14 ff ff ff 00    cmpl   $0x0,-0xec(%ebp)
  3113.   101f9e:   77 0c                   ja     101fac <sprintfr+0x8d4>
  3114.   101fa0:   81 bd 10 ff ff ff 00    cmpl   $0x900000,-0xf0(%ebp)
  3115.   101fa7:   00 90 00
  3116.   101faa:   76 0b                   jbe    101fb7 <sprintfr+0x8df>
  3117.   101fac:   81 45 d0 00 00 60 00    addl   $0x600000,-0x30(%ebp)
  3118.   101fb3:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3119.           if((BCD & 0x1f000000) > 0x9000000)BCD+=0x6000000;
  3120.   101fb7:   8b 45 d0                mov    -0x30(%ebp),%eax
  3121.   101fba:   89 c2                   mov    %eax,%edx
  3122.   101fbc:   81 e2 00 00 00 1f       and    $0x1f000000,%edx
  3123.   101fc2:   89 95 08 ff ff ff       mov    %edx,-0xf8(%ebp)
  3124.   101fc8:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3125.   101fcb:   89 c2                   mov    %eax,%edx
  3126.   101fcd:   83 e2 00                and    $0x0,%edx
  3127.   101fd0:   89 95 0c ff ff ff       mov    %edx,-0xf4(%ebp)
  3128.   101fd6:   83 bd 0c ff ff ff 00    cmpl   $0x0,-0xf4(%ebp)
  3129.   101fdd:   72 20                   jb     101fff <sprintfr+0x927>
  3130.   101fdf:   83 bd 0c ff ff ff 00    cmpl   $0x0,-0xf4(%ebp)
  3131.   101fe6:   77 0c                   ja     101ff4 <sprintfr+0x91c>
  3132.   101fe8:   81 bd 08 ff ff ff 00    cmpl   $0x9000000,-0xf8(%ebp)
  3133.   101fef:   00 00 09
  3134.   101ff2:   76 0b                   jbe    101fff <sprintfr+0x927>
  3135.   101ff4:   81 45 d0 00 00 00 06    addl   $0x6000000,-0x30(%ebp)
  3136.   101ffb:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3137.           if((BCD & 0x1f0000000) > 0x90000000)BCD+=0x60000000;
  3138.   101fff:   8b 45 d0                mov    -0x30(%ebp),%eax
  3139.   102002:   89 c2                   mov    %eax,%edx
  3140.   102004:   81 e2 00 00 00 f0       and    $0xf0000000,%edx
  3141.   10200a:   89 95 00 ff ff ff       mov    %edx,-0x100(%ebp)
  3142.   102010:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3143.   102013:   89 c2                   mov    %eax,%edx
  3144.   102015:   83 e2 01                and    $0x1,%edx
  3145.   102018:   89 95 04 ff ff ff       mov    %edx,-0xfc(%ebp)
  3146.   10201e:   83 bd 04 ff ff ff 00    cmpl   $0x0,-0xfc(%ebp)
  3147.   102025:   72 20                   jb     102047 <sprintfr+0x96f>
  3148.   102027:   83 bd 04 ff ff ff 00    cmpl   $0x0,-0xfc(%ebp)
  3149.   10202e:   77 0c                   ja     10203c <sprintfr+0x964>
  3150.   102030:   81 bd 00 ff ff ff 00    cmpl   $0x90000000,-0x100(%ebp)
  3151.   102037:   00 00 90
  3152.   10203a:   76 0b                   jbe    102047 <sprintfr+0x96f>
  3153.   10203c:   81 45 d0 00 00 00 60    addl   $0x60000000,-0x30(%ebp)
  3154.   102043:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3155.           if((BCD & 0x1f00000000) > 0x900000000)BCD+=0x600000000;
  3156.   102047:   8b 45 d0                mov    -0x30(%ebp),%eax
  3157.   10204a:   89 c2                   mov    %eax,%edx
  3158.   10204c:   83 e2 00                and    $0x0,%edx
  3159.   10204f:   89 95 f8 fe ff ff       mov    %edx,-0x108(%ebp)
  3160.   102055:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3161.   102058:   89 c2                   mov    %eax,%edx
  3162.   10205a:   83 e2 1f                and    $0x1f,%edx
  3163.   10205d:   89 95 fc fe ff ff       mov    %edx,-0x104(%ebp)
  3164.   102063:   83 bd fc fe ff ff 09    cmpl   $0x9,-0x104(%ebp)
  3165.   10206a:   72 1a                   jb     102086 <sprintfr+0x9ae>
  3166.   10206c:   83 bd fc fe ff ff 09    cmpl   $0x9,-0x104(%ebp)
  3167.   102073:   77 09                   ja     10207e <sprintfr+0x9a6>
  3168.   102075:   83 bd f8 fe ff ff 00    cmpl   $0x0,-0x108(%ebp)
  3169.   10207c:   76 08                   jbe    102086 <sprintfr+0x9ae>
  3170.   10207e:   83 45 d0 00             addl   $0x0,-0x30(%ebp)
  3171.   102082:   83 55 d4 06             adcl   $0x6,-0x2c(%ebp)
  3172.           if((BCD & 0x1f000000000) > 0x9000000000)BCD+=0x6000000000;
  3173.   102086:   8b 45 d0                mov    -0x30(%ebp),%eax
  3174.   102089:   89 c2                   mov    %eax,%edx
  3175.   10208b:   83 e2 00                and    $0x0,%edx
  3176.   10208e:   89 95 f0 fe ff ff       mov    %edx,-0x110(%ebp)
  3177.   102094:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3178.   102097:   89 c2                   mov    %eax,%edx
  3179.   102099:   81 e2 f0 01 00 00       and    $0x1f0,%edx
  3180.   10209f:   89 95 f4 fe ff ff       mov    %edx,-0x10c(%ebp)
  3181.   1020a5:   81 bd f4 fe ff ff 90    cmpl   $0x90,-0x10c(%ebp)
  3182.   1020ac:   00 00 00
  3183.   1020af:   72 1d                   jb     1020ce <sprintfr+0x9f6>
  3184.   1020b1:   81 bd f4 fe ff ff 90    cmpl   $0x90,-0x10c(%ebp)
  3185.   1020b8:   00 00 00
  3186.   1020bb:   77 09                   ja     1020c6 <sprintfr+0x9ee>
  3187.   1020bd:   83 bd f0 fe ff ff 00    cmpl   $0x0,-0x110(%ebp)
  3188.   1020c4:   76 08                   jbe    1020ce <sprintfr+0x9f6>
  3189.   1020c6:   83 45 d0 00             addl   $0x0,-0x30(%ebp)
  3190.   1020ca:   83 55 d4 60             adcl   $0x60,-0x2c(%ebp)
  3191.         arg = (long) arg;
  3192.         BCD = 0;
  3193.         stelle = 0x80000000;
  3194.         if(arg&stelle){ vorflag = 1;arg&=0x7fffffff;arg--; arg^=0x7fffffff; }
  3195.         else vorflag = 0;
  3196.         for(j=0;j<32;j++){
  3197.   1020ce:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  3198.   1020d2:   83 7d e4 1f             cmpl   $0x1f,-0x1c(%ebp)
  3199.   1020d6:   0f 8e 10 fd ff ff       jle    101dec <sprintfr+0x714>
  3200.           if((BCD & 0x1f000000) > 0x9000000)BCD+=0x6000000;
  3201.           if((BCD & 0x1f0000000) > 0x90000000)BCD+=0x60000000;
  3202.           if((BCD & 0x1f00000000) > 0x900000000)BCD+=0x600000000;
  3203.           if((BCD & 0x1f000000000) > 0x9000000000)BCD+=0x6000000000;
  3204.         }
  3205.         b[0] = (BCD&0x0f000000000)>>36;
  3206.   1020dc:   8b 45 d0                mov    -0x30(%ebp),%eax
  3207.   1020df:   89 c2                   mov    %eax,%edx
  3208.   1020e1:   83 e2 00                and    $0x0,%edx
  3209.   1020e4:   89 95 e8 fe ff ff       mov    %edx,-0x118(%ebp)
  3210.   1020ea:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3211.   1020ed:   89 c2                   mov    %eax,%edx
  3212.   1020ef:   81 e2 f0 00 00 00       and    $0xf0,%edx
  3213.   1020f5:   89 95 ec fe ff ff       mov    %edx,-0x114(%ebp)
  3214.   1020fb:   8b 85 e8 fe ff ff       mov    -0x118(%ebp),%eax
  3215.   102101:   8b 95 ec fe ff ff       mov    -0x114(%ebp),%edx
  3216.   102107:   89 d0                   mov    %edx,%eax
  3217.   102109:   31 d2                   xor    %edx,%edx
  3218.   10210b:   c1 e8 04                shr    $0x4,%eax
  3219.   10210e:   88 45 ba                mov    %al,-0x46(%ebp)
  3220.         b[1] = (BCD&0x0f00000000)>>32;
  3221.   102111:   8b 45 d0                mov    -0x30(%ebp),%eax
  3222.   102114:   89 c2                   mov    %eax,%edx
  3223.   102116:   83 e2 00                and    $0x0,%edx
  3224.   102119:   89 95 e0 fe ff ff       mov    %edx,-0x120(%ebp)
  3225.   10211f:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3226.   102122:   89 c2                   mov    %eax,%edx
  3227.   102124:   83 e2 0f                and    $0xf,%edx
  3228.   102127:   89 95 e4 fe ff ff       mov    %edx,-0x11c(%ebp)
  3229.   10212d:   8b 85 e0 fe ff ff       mov    -0x120(%ebp),%eax
  3230.   102133:   8b 95 e4 fe ff ff       mov    -0x11c(%ebp),%edx
  3231.   102139:   89 d0                   mov    %edx,%eax
  3232.   10213b:   31 d2                   xor    %edx,%edx
  3233.   10213d:   88 45 bb                mov    %al,-0x45(%ebp)
  3234.         b[2] = (BCD&0x0f0000000)>>28;
  3235.   102140:   8b 45 d0                mov    -0x30(%ebp),%eax
  3236.   102143:   89 c2                   mov    %eax,%edx
  3237.   102145:   81 e2 00 00 00 f0       and    $0xf0000000,%edx
  3238.   10214b:   89 95 d8 fe ff ff       mov    %edx,-0x128(%ebp)
  3239.   102151:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3240.   102154:   89 c2                   mov    %eax,%edx
  3241.   102156:   83 e2 00                and    $0x0,%edx
  3242.   102159:   89 95 dc fe ff ff       mov    %edx,-0x124(%ebp)
  3243.   10215f:   8b 85 d8 fe ff ff       mov    -0x128(%ebp),%eax
  3244.   102165:   8b 95 dc fe ff ff       mov    -0x124(%ebp),%edx
  3245.   10216b:   0f ac d0 1c             shrd   $0x1c,%edx,%eax
  3246.   10216f:   c1 ea 1c                shr    $0x1c,%edx
  3247.   102172:   88 45 bc                mov    %al,-0x44(%ebp)
  3248.         b[3] = (BCD&0x0f000000)>>24;
  3249.   102175:   8b 45 d0                mov    -0x30(%ebp),%eax
  3250.   102178:   89 c2                   mov    %eax,%edx
  3251.   10217a:   81 e2 00 00 00 0f       and    $0xf000000,%edx
  3252.   102180:   89 95 d0 fe ff ff       mov    %edx,-0x130(%ebp)
  3253.   102186:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3254.   102189:   89 c2                   mov    %eax,%edx
  3255.   10218b:   83 e2 00                and    $0x0,%edx
  3256.   10218e:   89 95 d4 fe ff ff       mov    %edx,-0x12c(%ebp)
  3257.   102194:   8b 85 d0 fe ff ff       mov    -0x130(%ebp),%eax
  3258.   10219a:   8b 95 d4 fe ff ff       mov    -0x12c(%ebp),%edx
  3259.   1021a0:   0f ac d0 18             shrd   $0x18,%edx,%eax
  3260.   1021a4:   c1 ea 18                shr    $0x18,%edx
  3261.   1021a7:   88 45 bd                mov    %al,-0x43(%ebp)
  3262.         b[4] = (BCD&0x0f00000)>>20;
  3263.   1021aa:   8b 45 d0                mov    -0x30(%ebp),%eax
  3264.   1021ad:   89 c2                   mov    %eax,%edx
  3265.   1021af:   81 e2 00 00 f0 00       and    $0xf00000,%edx
  3266.   1021b5:   89 95 c8 fe ff ff       mov    %edx,-0x138(%ebp)
  3267.   1021bb:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3268.   1021be:   89 c2                   mov    %eax,%edx
  3269.   1021c0:   83 e2 00                and    $0x0,%edx
  3270.   1021c3:   89 95 cc fe ff ff       mov    %edx,-0x134(%ebp)
  3271.   1021c9:   8b 85 c8 fe ff ff       mov    -0x138(%ebp),%eax
  3272.   1021cf:   8b 95 cc fe ff ff       mov    -0x134(%ebp),%edx
  3273.   1021d5:   0f ac d0 14             shrd   $0x14,%edx,%eax
  3274.   1021d9:   c1 ea 14                shr    $0x14,%edx
  3275.   1021dc:   88 45 be                mov    %al,-0x42(%ebp)
  3276.         b[5] = (BCD&0x0f0000)>>16;
  3277.   1021df:   8b 45 d0                mov    -0x30(%ebp),%eax
  3278.   1021e2:   89 c2                   mov    %eax,%edx
  3279.   1021e4:   81 e2 00 00 0f 00       and    $0xf0000,%edx
  3280.   1021ea:   89 95 c0 fe ff ff       mov    %edx,-0x140(%ebp)
  3281.   1021f0:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3282.   1021f3:   89 c2                   mov    %eax,%edx
  3283.   1021f5:   83 e2 00                and    $0x0,%edx
  3284.   1021f8:   89 95 c4 fe ff ff       mov    %edx,-0x13c(%ebp)
  3285.   1021fe:   8b 85 c0 fe ff ff       mov    -0x140(%ebp),%eax
  3286.   102204:   8b 95 c4 fe ff ff       mov    -0x13c(%ebp),%edx
  3287.   10220a:   0f ac d0 10             shrd   $0x10,%edx,%eax
  3288.   10220e:   c1 ea 10                shr    $0x10,%edx
  3289.   102211:   88 45 bf                mov    %al,-0x41(%ebp)
  3290.         b[6] = (BCD&0x0f000)>>12;
  3291.   102214:   8b 45 d0                mov    -0x30(%ebp),%eax
  3292.   102217:   89 c2                   mov    %eax,%edx
  3293.   102219:   81 e2 00 f0 00 00       and    $0xf000,%edx
  3294.   10221f:   89 95 b8 fe ff ff       mov    %edx,-0x148(%ebp)
  3295.   102225:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3296.   102228:   89 c2                   mov    %eax,%edx
  3297.   10222a:   83 e2 00                and    $0x0,%edx
  3298.   10222d:   89 95 bc fe ff ff       mov    %edx,-0x144(%ebp)
  3299.   102233:   8b 85 b8 fe ff ff       mov    -0x148(%ebp),%eax
  3300.   102239:   8b 95 bc fe ff ff       mov    -0x144(%ebp),%edx
  3301.   10223f:   0f ac d0 0c             shrd   $0xc,%edx,%eax
  3302.   102243:   c1 ea 0c                shr    $0xc,%edx
  3303.   102246:   88 45 c0                mov    %al,-0x40(%ebp)
  3304.         b[7] = (BCD&0x0f00)>>8;
  3305.   102249:   8b 45 d0                mov    -0x30(%ebp),%eax
  3306.   10224c:   89 c2                   mov    %eax,%edx
  3307.   10224e:   81 e2 00 0f 00 00       and    $0xf00,%edx
  3308.   102254:   89 95 b0 fe ff ff       mov    %edx,-0x150(%ebp)
  3309.   10225a:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3310.   10225d:   89 c2                   mov    %eax,%edx
  3311.   10225f:   83 e2 00                and    $0x0,%edx
  3312.   102262:   89 95 b4 fe ff ff       mov    %edx,-0x14c(%ebp)
  3313.   102268:   8b 85 b0 fe ff ff       mov    -0x150(%ebp),%eax
  3314.   10226e:   8b 95 b4 fe ff ff       mov    -0x14c(%ebp),%edx
  3315.   102274:   0f ac d0 08             shrd   $0x8,%edx,%eax
  3316.   102278:   c1 ea 08                shr    $0x8,%edx
  3317.   10227b:   88 45 c1                mov    %al,-0x3f(%ebp)
  3318.         b[8] = (BCD&0x0f0)>>4;
  3319.   10227e:   8b 45 d0                mov    -0x30(%ebp),%eax
  3320.   102281:   89 c2                   mov    %eax,%edx
  3321.   102283:   81 e2 f0 00 00 00       and    $0xf0,%edx
  3322.   102289:   89 95 a8 fe ff ff       mov    %edx,-0x158(%ebp)
  3323.   10228f:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3324.   102292:   89 c2                   mov    %eax,%edx
  3325.   102294:   83 e2 00                and    $0x0,%edx
  3326.   102297:   89 95 ac fe ff ff       mov    %edx,-0x154(%ebp)
  3327.   10229d:   8b 85 a8 fe ff ff       mov    -0x158(%ebp),%eax
  3328.   1022a3:   8b 95 ac fe ff ff       mov    -0x154(%ebp),%edx
  3329.   1022a9:   0f ac d0 04             shrd   $0x4,%edx,%eax
  3330.   1022ad:   c1 ea 04                shr    $0x4,%edx
  3331.   1022b0:   88 45 c2                mov    %al,-0x3e(%ebp)
  3332.         b[9] = (BCD&0x0f);
  3333.   1022b3:   8b 45 d0                mov    -0x30(%ebp),%eax
  3334.   1022b6:   83 e0 0f                and    $0xf,%eax
  3335.   1022b9:   88 45 c3                mov    %al,-0x3d(%ebp)
  3336.    
  3337.         nullflag = 1;
  3338.   1022bc:   c6 45 da 01             movb   $0x1,-0x26(%ebp)
  3339.         if(vorflag) rs[z++] = MINUS;// 45 - ASCII minus
  3340.   1022c0:   80 7d db 00             cmpb   $0x0,-0x25(%ebp)
  3341.   1022c4:   74 0d                   je     1022d3 <sprintfr+0xbfb>
  3342.   1022c6:   8b 45 e8                mov    -0x18(%ebp),%eax
  3343.   1022c9:   03 45 c4                add    -0x3c(%ebp),%eax
  3344.   1022cc:   c6 00 2d                movb   $0x2d,(%eax)
  3345.   1022cf:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3346.         for(j=0;j<10;j++){
  3347.   1022d3:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  3348.   1022da:   eb 35                   jmp    102311 <sprintfr+0xc39>
  3349.           if(! (b[j] == 0 && nullflag)){
  3350.   1022dc:   8d 45 ba                lea    -0x46(%ebp),%eax
  3351.   1022df:   03 45 e4                add    -0x1c(%ebp),%eax
  3352.   1022e2:   0f b6 00                movzbl (%eax),%eax
  3353.   1022e5:   84 c0                   test   %al,%al
  3354.   1022e7:   75 06                   jne    1022ef <sprintfr+0xc17>
  3355.   1022e9:   80 7d da 00             cmpb   $0x0,-0x26(%ebp)
  3356.   1022ed:   75 1e                   jne    10230d <sprintfr+0xc35>
  3357.             rs[z++] = b[j] + NULL;// 48 - ASCII null
  3358.   1022ef:   8b 45 e8                mov    -0x18(%ebp),%eax
  3359.   1022f2:   89 c2                   mov    %eax,%edx
  3360.   1022f4:   03 55 c4                add    -0x3c(%ebp),%edx
  3361.   1022f7:   8d 45 ba                lea    -0x46(%ebp),%eax
  3362.   1022fa:   03 45 e4                add    -0x1c(%ebp),%eax
  3363.   1022fd:   0f b6 00                movzbl (%eax),%eax
  3364.   102300:   83 c0 30                add    $0x30,%eax
  3365.   102303:   88 02                   mov    %al,(%edx)
  3366.   102305:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3367.             nullflag = 0;
  3368.   102309:   c6 45 da 00             movb   $0x0,-0x26(%ebp)
  3369.         b[8] = (BCD&0x0f0)>>4;
  3370.         b[9] = (BCD&0x0f);
  3371.    
  3372.         nullflag = 1;
  3373.         if(vorflag) rs[z++] = MINUS;// 45 - ASCII minus
  3374.         for(j=0;j<10;j++){
  3375.   10230d:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  3376.   102311:   83 7d e4 09             cmpl   $0x9,-0x1c(%ebp)
  3377.   102315:   7e c5                   jle    1022dc <sprintfr+0xc04>
  3378.           if(! (b[j] == 0 && nullflag)){
  3379.             rs[z++] = b[j] + NULL;// 48 - ASCII null
  3380.             nullflag = 0;
  3381.           }
  3382.         }
  3383.         if(nullflag) rs[z++] = NULL;// 48 - ASCII null
  3384.   102317:   80 7d da 00             cmpb   $0x0,-0x26(%ebp)
  3385.   10231b:   74 0d                   je     10232a <sprintfr+0xc52>
  3386.   10231d:   8b 45 e8                mov    -0x18(%ebp),%eax
  3387.   102320:   03 45 c4                add    -0x3c(%ebp),%eax
  3388.   102323:   c6 00 30                movb   $0x30,(%eax)
  3389.   102326:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3390.         i++;
  3391.   10232a:   83 45 ec 01             addl   $0x1,-0x14(%ebp)
  3392.         break;
  3393.   10232e:   e9 51 05 00 00          jmp    102884 <sprintfr+0x11ac>
  3394.           case 'u'://*******************Unsigned (long)
  3395.           case 'U'://*********************************
  3396.         arg = (unsigned long) arg;
  3397.         BCD = 0;
  3398.   102333:   c7 45 d0 00 00 00 00    movl   $0x0,-0x30(%ebp)
  3399.   10233a:   c7 45 d4 00 00 00 00    movl   $0x0,-0x2c(%ebp)
  3400.         stelle = 0x80000000;
  3401.   102341:   c7 45 cc 00 00 00 80    movl   $0x80000000,-0x34(%ebp)
  3402.         for(j=0;j<32;j++){
  3403.   102348:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  3404.   10234f:   e9 e6 02 00 00          jmp    10263a <sprintfr+0xf62>
  3405.           BCD<<=1;
  3406.   102354:   8b 45 d0                mov    -0x30(%ebp),%eax
  3407.   102357:   8b 55 d4                mov    -0x2c(%ebp),%edx
  3408.   10235a:   0f a4 c2 01             shld   $0x1,%eax,%edx
  3409.   10235e:   01 c0                   add    %eax,%eax
  3410.   102360:   89 45 d0                mov    %eax,-0x30(%ebp)
  3411.   102363:   89 55 d4                mov    %edx,-0x2c(%ebp)
  3412.           if(arg & stelle)BCD++;
  3413.   102366:   8b 45 c8                mov    -0x38(%ebp),%eax
  3414.   102369:   23 45 cc                and    -0x34(%ebp),%eax
  3415.   10236c:   85 c0                   test   %eax,%eax
  3416.   10236e:   74 08                   je     102378 <sprintfr+0xca0>
  3417.   102370:   83 45 d0 01             addl   $0x1,-0x30(%ebp)
  3418.   102374:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3419.           stelle>>=1;
  3420.   102378:   d1 6d cc                shrl   -0x34(%ebp)
  3421.           if((BCD & 0x1f) > 0x9)BCD+=0x6;
  3422.   10237b:   8b 45 d0                mov    -0x30(%ebp),%eax
  3423.   10237e:   89 c2                   mov    %eax,%edx
  3424.   102380:   83 e2 1f                and    $0x1f,%edx
  3425.   102383:   89 95 a0 fe ff ff       mov    %edx,-0x160(%ebp)
  3426.   102389:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3427.   10238c:   89 c2                   mov    %eax,%edx
  3428.   10238e:   83 e2 00                and    $0x0,%edx
  3429.   102391:   89 95 a4 fe ff ff       mov    %edx,-0x15c(%ebp)
  3430.   102397:   83 bd a4 fe ff ff 00    cmpl   $0x0,-0x15c(%ebp)
  3431.   10239e:   72 1a                   jb     1023ba <sprintfr+0xce2>
  3432.   1023a0:   83 bd a4 fe ff ff 00    cmpl   $0x0,-0x15c(%ebp)
  3433.   1023a7:   77 09                   ja     1023b2 <sprintfr+0xcda>
  3434.   1023a9:   83 bd a0 fe ff ff 09    cmpl   $0x9,-0x160(%ebp)
  3435.   1023b0:   76 08                   jbe    1023ba <sprintfr+0xce2>
  3436.   1023b2:   83 45 d0 06             addl   $0x6,-0x30(%ebp)
  3437.   1023b6:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3438.           if((BCD & 0x1f0) > 0x90)BCD+=0x60;
  3439.   1023ba:   8b 45 d0                mov    -0x30(%ebp),%eax
  3440.   1023bd:   89 c2                   mov    %eax,%edx
  3441.   1023bf:   81 e2 f0 01 00 00       and    $0x1f0,%edx
  3442.   1023c5:   89 95 98 fe ff ff       mov    %edx,-0x168(%ebp)
  3443.   1023cb:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3444.   1023ce:   89 c2                   mov    %eax,%edx
  3445.   1023d0:   83 e2 00                and    $0x0,%edx
  3446.   1023d3:   89 95 9c fe ff ff       mov    %edx,-0x164(%ebp)
  3447.   1023d9:   83 bd 9c fe ff ff 00    cmpl   $0x0,-0x164(%ebp)
  3448.   1023e0:   72 1d                   jb     1023ff <sprintfr+0xd27>
  3449.   1023e2:   83 bd 9c fe ff ff 00    cmpl   $0x0,-0x164(%ebp)
  3450.   1023e9:   77 0c                   ja     1023f7 <sprintfr+0xd1f>
  3451.   1023eb:   81 bd 98 fe ff ff 90    cmpl   $0x90,-0x168(%ebp)
  3452.   1023f2:   00 00 00
  3453.   1023f5:   76 08                   jbe    1023ff <sprintfr+0xd27>
  3454.   1023f7:   83 45 d0 60             addl   $0x60,-0x30(%ebp)
  3455.   1023fb:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3456.           if((BCD & 0x1f00) > 0x900)BCD+=0x600;
  3457.   1023ff:   8b 45 d0                mov    -0x30(%ebp),%eax
  3458.   102402:   89 c2                   mov    %eax,%edx
  3459.   102404:   81 e2 00 1f 00 00       and    $0x1f00,%edx
  3460.   10240a:   89 95 90 fe ff ff       mov    %edx,-0x170(%ebp)
  3461.   102410:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3462.   102413:   89 c2                   mov    %eax,%edx
  3463.   102415:   83 e2 00                and    $0x0,%edx
  3464.   102418:   89 95 94 fe ff ff       mov    %edx,-0x16c(%ebp)
  3465.   10241e:   83 bd 94 fe ff ff 00    cmpl   $0x0,-0x16c(%ebp)
  3466.   102425:   72 20                   jb     102447 <sprintfr+0xd6f>
  3467.   102427:   83 bd 94 fe ff ff 00    cmpl   $0x0,-0x16c(%ebp)
  3468.   10242e:   77 0c                   ja     10243c <sprintfr+0xd64>
  3469.   102430:   81 bd 90 fe ff ff 00    cmpl   $0x900,-0x170(%ebp)
  3470.   102437:   09 00 00
  3471.   10243a:   76 0b                   jbe    102447 <sprintfr+0xd6f>
  3472.   10243c:   81 45 d0 00 06 00 00    addl   $0x600,-0x30(%ebp)
  3473.   102443:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3474.           if((BCD & 0x1f000) > 0x9000)BCD+=0x6000;
  3475.   102447:   8b 45 d0                mov    -0x30(%ebp),%eax
  3476.   10244a:   89 c2                   mov    %eax,%edx
  3477.   10244c:   81 e2 00 f0 01 00       and    $0x1f000,%edx
  3478.   102452:   89 95 88 fe ff ff       mov    %edx,-0x178(%ebp)
  3479.   102458:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3480.   10245b:   89 c2                   mov    %eax,%edx
  3481.   10245d:   83 e2 00                and    $0x0,%edx
  3482.   102460:   89 95 8c fe ff ff       mov    %edx,-0x174(%ebp)
  3483.   102466:   83 bd 8c fe ff ff 00    cmpl   $0x0,-0x174(%ebp)
  3484.   10246d:   72 20                   jb     10248f <sprintfr+0xdb7>
  3485.   10246f:   83 bd 8c fe ff ff 00    cmpl   $0x0,-0x174(%ebp)
  3486.   102476:   77 0c                   ja     102484 <sprintfr+0xdac>
  3487.   102478:   81 bd 88 fe ff ff 00    cmpl   $0x9000,-0x178(%ebp)
  3488.   10247f:   90 00 00
  3489.   102482:   76 0b                   jbe    10248f <sprintfr+0xdb7>
  3490.   102484:   81 45 d0 00 60 00 00    addl   $0x6000,-0x30(%ebp)
  3491.   10248b:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3492.           if((BCD & 0x1f0000) > 0x90000)BCD+=0x60000;
  3493.   10248f:   8b 45 d0                mov    -0x30(%ebp),%eax
  3494.   102492:   89 c2                   mov    %eax,%edx
  3495.   102494:   81 e2 00 00 1f 00       and    $0x1f0000,%edx
  3496.   10249a:   89 95 80 fe ff ff       mov    %edx,-0x180(%ebp)
  3497.   1024a0:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3498.   1024a3:   89 c2                   mov    %eax,%edx
  3499.   1024a5:   83 e2 00                and    $0x0,%edx
  3500.   1024a8:   89 95 84 fe ff ff       mov    %edx,-0x17c(%ebp)
  3501.   1024ae:   83 bd 84 fe ff ff 00    cmpl   $0x0,-0x17c(%ebp)
  3502.   1024b5:   72 20                   jb     1024d7 <sprintfr+0xdff>
  3503.   1024b7:   83 bd 84 fe ff ff 00    cmpl   $0x0,-0x17c(%ebp)
  3504.   1024be:   77 0c                   ja     1024cc <sprintfr+0xdf4>
  3505.   1024c0:   81 bd 80 fe ff ff 00    cmpl   $0x90000,-0x180(%ebp)
  3506.   1024c7:   00 09 00
  3507.   1024ca:   76 0b                   jbe    1024d7 <sprintfr+0xdff>
  3508.   1024cc:   81 45 d0 00 00 06 00    addl   $0x60000,-0x30(%ebp)
  3509.   1024d3:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3510.           if((BCD & 0x1f00000) > 0x900000)BCD+=0x600000;
  3511.   1024d7:   8b 45 d0                mov    -0x30(%ebp),%eax
  3512.   1024da:   89 c2                   mov    %eax,%edx
  3513.   1024dc:   81 e2 00 00 f0 01       and    $0x1f00000,%edx
  3514.   1024e2:   89 95 78 fe ff ff       mov    %edx,-0x188(%ebp)
  3515.   1024e8:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3516.   1024eb:   89 c2                   mov    %eax,%edx
  3517.   1024ed:   83 e2 00                and    $0x0,%edx
  3518.   1024f0:   89 95 7c fe ff ff       mov    %edx,-0x184(%ebp)
  3519.   1024f6:   83 bd 7c fe ff ff 00    cmpl   $0x0,-0x184(%ebp)
  3520.   1024fd:   72 20                   jb     10251f <sprintfr+0xe47>
  3521.   1024ff:   83 bd 7c fe ff ff 00    cmpl   $0x0,-0x184(%ebp)
  3522.   102506:   77 0c                   ja     102514 <sprintfr+0xe3c>
  3523.   102508:   81 bd 78 fe ff ff 00    cmpl   $0x900000,-0x188(%ebp)
  3524.   10250f:   00 90 00
  3525.   102512:   76 0b                   jbe    10251f <sprintfr+0xe47>
  3526.   102514:   81 45 d0 00 00 60 00    addl   $0x600000,-0x30(%ebp)
  3527.   10251b:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3528.           if((BCD & 0x1f000000) > 0x9000000)BCD+=0x6000000;
  3529.   10251f:   8b 45 d0                mov    -0x30(%ebp),%eax
  3530.   102522:   89 c2                   mov    %eax,%edx
  3531.   102524:   81 e2 00 00 00 1f       and    $0x1f000000,%edx
  3532.   10252a:   89 95 70 fe ff ff       mov    %edx,-0x190(%ebp)
  3533.   102530:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3534.   102533:   89 c2                   mov    %eax,%edx
  3535.   102535:   83 e2 00                and    $0x0,%edx
  3536.   102538:   89 95 74 fe ff ff       mov    %edx,-0x18c(%ebp)
  3537.   10253e:   83 bd 74 fe ff ff 00    cmpl   $0x0,-0x18c(%ebp)
  3538.   102545:   72 20                   jb     102567 <sprintfr+0xe8f>
  3539.   102547:   83 bd 74 fe ff ff 00    cmpl   $0x0,-0x18c(%ebp)
  3540.   10254e:   77 0c                   ja     10255c <sprintfr+0xe84>
  3541.   102550:   81 bd 70 fe ff ff 00    cmpl   $0x9000000,-0x190(%ebp)
  3542.   102557:   00 00 09
  3543.   10255a:   76 0b                   jbe    102567 <sprintfr+0xe8f>
  3544.   10255c:   81 45 d0 00 00 00 06    addl   $0x6000000,-0x30(%ebp)
  3545.   102563:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3546.           if((BCD & 0x1f0000000) > 0x90000000)BCD+=0x60000000;
  3547.   102567:   8b 45 d0                mov    -0x30(%ebp),%eax
  3548.   10256a:   89 c2                   mov    %eax,%edx
  3549.   10256c:   81 e2 00 00 00 f0       and    $0xf0000000,%edx
  3550.   102572:   89 95 68 fe ff ff       mov    %edx,-0x198(%ebp)
  3551.   102578:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3552.   10257b:   89 c2                   mov    %eax,%edx
  3553.   10257d:   83 e2 01                and    $0x1,%edx
  3554.   102580:   89 95 6c fe ff ff       mov    %edx,-0x194(%ebp)
  3555.   102586:   83 bd 6c fe ff ff 00    cmpl   $0x0,-0x194(%ebp)
  3556.   10258d:   72 20                   jb     1025af <sprintfr+0xed7>
  3557.   10258f:   83 bd 6c fe ff ff 00    cmpl   $0x0,-0x194(%ebp)
  3558.   102596:   77 0c                   ja     1025a4 <sprintfr+0xecc>
  3559.   102598:   81 bd 68 fe ff ff 00    cmpl   $0x90000000,-0x198(%ebp)
  3560.   10259f:   00 00 90
  3561.   1025a2:   76 0b                   jbe    1025af <sprintfr+0xed7>
  3562.   1025a4:   81 45 d0 00 00 00 60    addl   $0x60000000,-0x30(%ebp)
  3563.   1025ab:   83 55 d4 00             adcl   $0x0,-0x2c(%ebp)
  3564.           if((BCD & 0x1f00000000) > 0x900000000)BCD+=0x600000000;
  3565.   1025af:   8b 45 d0                mov    -0x30(%ebp),%eax
  3566.   1025b2:   89 c2                   mov    %eax,%edx
  3567.   1025b4:   83 e2 00                and    $0x0,%edx
  3568.   1025b7:   89 95 60 fe ff ff       mov    %edx,-0x1a0(%ebp)
  3569.   1025bd:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3570.   1025c0:   89 c2                   mov    %eax,%edx
  3571.   1025c2:   83 e2 1f                and    $0x1f,%edx
  3572.   1025c5:   89 95 64 fe ff ff       mov    %edx,-0x19c(%ebp)
  3573.   1025cb:   83 bd 64 fe ff ff 09    cmpl   $0x9,-0x19c(%ebp)
  3574.   1025d2:   72 1a                   jb     1025ee <sprintfr+0xf16>
  3575.   1025d4:   83 bd 64 fe ff ff 09    cmpl   $0x9,-0x19c(%ebp)
  3576.   1025db:   77 09                   ja     1025e6 <sprintfr+0xf0e>
  3577.   1025dd:   83 bd 60 fe ff ff 00    cmpl   $0x0,-0x1a0(%ebp)
  3578.   1025e4:   76 08                   jbe    1025ee <sprintfr+0xf16>
  3579.   1025e6:   83 45 d0 00             addl   $0x0,-0x30(%ebp)
  3580.   1025ea:   83 55 d4 06             adcl   $0x6,-0x2c(%ebp)
  3581.           if((BCD & 0x1f000000000) > 0x9000000000)BCD+=0x6000000000;
  3582.   1025ee:   8b 45 d0                mov    -0x30(%ebp),%eax
  3583.   1025f1:   89 c2                   mov    %eax,%edx
  3584.   1025f3:   83 e2 00                and    $0x0,%edx
  3585.   1025f6:   89 95 58 fe ff ff       mov    %edx,-0x1a8(%ebp)
  3586.   1025fc:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3587.   1025ff:   89 c2                   mov    %eax,%edx
  3588.   102601:   81 e2 f0 01 00 00       and    $0x1f0,%edx
  3589.   102607:   89 95 5c fe ff ff       mov    %edx,-0x1a4(%ebp)
  3590.   10260d:   81 bd 5c fe ff ff 90    cmpl   $0x90,-0x1a4(%ebp)
  3591.   102614:   00 00 00
  3592.   102617:   72 1d                   jb     102636 <sprintfr+0xf5e>
  3593.   102619:   81 bd 5c fe ff ff 90    cmpl   $0x90,-0x1a4(%ebp)
  3594.   102620:   00 00 00
  3595.   102623:   77 09                   ja     10262e <sprintfr+0xf56>
  3596.   102625:   83 bd 58 fe ff ff 00    cmpl   $0x0,-0x1a8(%ebp)
  3597.   10262c:   76 08                   jbe    102636 <sprintfr+0xf5e>
  3598.   10262e:   83 45 d0 00             addl   $0x0,-0x30(%ebp)
  3599.   102632:   83 55 d4 60             adcl   $0x60,-0x2c(%ebp)
  3600.           case 'u'://*******************Unsigned (long)
  3601.           case 'U'://*********************************
  3602.         arg = (unsigned long) arg;
  3603.         BCD = 0;
  3604.         stelle = 0x80000000;
  3605.         for(j=0;j<32;j++){
  3606.   102636:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  3607.   10263a:   83 7d e4 1f             cmpl   $0x1f,-0x1c(%ebp)
  3608.   10263e:   0f 8e 10 fd ff ff       jle    102354 <sprintfr+0xc7c>
  3609.           if((BCD & 0x1f000000) > 0x9000000)BCD+=0x6000000;
  3610.           if((BCD & 0x1f0000000) > 0x90000000)BCD+=0x60000000;
  3611.           if((BCD & 0x1f00000000) > 0x900000000)BCD+=0x600000000;
  3612.           if((BCD & 0x1f000000000) > 0x9000000000)BCD+=0x6000000000;
  3613.         }
  3614.         b[0] = (BCD&0x0f000000000)>>36;
  3615.   102644:   8b 45 d0                mov    -0x30(%ebp),%eax
  3616.   102647:   89 c2                   mov    %eax,%edx
  3617.   102649:   83 e2 00                and    $0x0,%edx
  3618.   10264c:   89 95 50 fe ff ff       mov    %edx,-0x1b0(%ebp)
  3619.   102652:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3620.   102655:   89 c2                   mov    %eax,%edx
  3621.   102657:   81 e2 f0 00 00 00       and    $0xf0,%edx
  3622.   10265d:   89 95 54 fe ff ff       mov    %edx,-0x1ac(%ebp)
  3623.   102663:   8b 85 50 fe ff ff       mov    -0x1b0(%ebp),%eax
  3624.   102669:   8b 95 54 fe ff ff       mov    -0x1ac(%ebp),%edx
  3625.   10266f:   89 d0                   mov    %edx,%eax
  3626.   102671:   31 d2                   xor    %edx,%edx
  3627.   102673:   c1 e8 04                shr    $0x4,%eax
  3628.   102676:   88 45 ba                mov    %al,-0x46(%ebp)
  3629.         b[1] = (BCD&0x0f00000000)>>32;
  3630.   102679:   8b 45 d0                mov    -0x30(%ebp),%eax
  3631.   10267c:   89 c2                   mov    %eax,%edx
  3632.   10267e:   83 e2 00                and    $0x0,%edx
  3633.   102681:   89 95 48 fe ff ff       mov    %edx,-0x1b8(%ebp)
  3634.   102687:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3635.   10268a:   89 c2                   mov    %eax,%edx
  3636.   10268c:   83 e2 0f                and    $0xf,%edx
  3637.   10268f:   89 95 4c fe ff ff       mov    %edx,-0x1b4(%ebp)
  3638.   102695:   8b 85 48 fe ff ff       mov    -0x1b8(%ebp),%eax
  3639.   10269b:   8b 95 4c fe ff ff       mov    -0x1b4(%ebp),%edx
  3640.   1026a1:   89 d0                   mov    %edx,%eax
  3641.   1026a3:   31 d2                   xor    %edx,%edx
  3642.   1026a5:   88 45 bb                mov    %al,-0x45(%ebp)
  3643.         b[2] = (BCD&0x0f0000000)>>28;
  3644.   1026a8:   8b 45 d0                mov    -0x30(%ebp),%eax
  3645.   1026ab:   89 c2                   mov    %eax,%edx
  3646.   1026ad:   81 e2 00 00 00 f0       and    $0xf0000000,%edx
  3647.   1026b3:   89 95 40 fe ff ff       mov    %edx,-0x1c0(%ebp)
  3648.   1026b9:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3649.   1026bc:   89 c2                   mov    %eax,%edx
  3650.   1026be:   83 e2 00                and    $0x0,%edx
  3651.   1026c1:   89 95 44 fe ff ff       mov    %edx,-0x1bc(%ebp)
  3652.   1026c7:   8b 85 40 fe ff ff       mov    -0x1c0(%ebp),%eax
  3653.   1026cd:   8b 95 44 fe ff ff       mov    -0x1bc(%ebp),%edx
  3654.   1026d3:   0f ac d0 1c             shrd   $0x1c,%edx,%eax
  3655.   1026d7:   c1 ea 1c                shr    $0x1c,%edx
  3656.   1026da:   88 45 bc                mov    %al,-0x44(%ebp)
  3657.         b[3] = (BCD&0x0f000000)>>24;
  3658.   1026dd:   8b 45 d0                mov    -0x30(%ebp),%eax
  3659.   1026e0:   89 c2                   mov    %eax,%edx
  3660.   1026e2:   81 e2 00 00 00 0f       and    $0xf000000,%edx
  3661.   1026e8:   89 95 38 fe ff ff       mov    %edx,-0x1c8(%ebp)
  3662.   1026ee:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3663.   1026f1:   89 c2                   mov    %eax,%edx
  3664.   1026f3:   83 e2 00                and    $0x0,%edx
  3665.   1026f6:   89 95 3c fe ff ff       mov    %edx,-0x1c4(%ebp)
  3666.   1026fc:   8b 85 38 fe ff ff       mov    -0x1c8(%ebp),%eax
  3667.   102702:   8b 95 3c fe ff ff       mov    -0x1c4(%ebp),%edx
  3668.   102708:   0f ac d0 18             shrd   $0x18,%edx,%eax
  3669.   10270c:   c1 ea 18                shr    $0x18,%edx
  3670.   10270f:   88 45 bd                mov    %al,-0x43(%ebp)
  3671.         b[4] = (BCD&0x0f00000)>>20;
  3672.   102712:   8b 45 d0                mov    -0x30(%ebp),%eax
  3673.   102715:   89 c2                   mov    %eax,%edx
  3674.   102717:   81 e2 00 00 f0 00       and    $0xf00000,%edx
  3675.   10271d:   89 95 30 fe ff ff       mov    %edx,-0x1d0(%ebp)
  3676.   102723:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3677.   102726:   89 c2                   mov    %eax,%edx
  3678.   102728:   83 e2 00                and    $0x0,%edx
  3679.   10272b:   89 95 34 fe ff ff       mov    %edx,-0x1cc(%ebp)
  3680.   102731:   8b 85 30 fe ff ff       mov    -0x1d0(%ebp),%eax
  3681.   102737:   8b 95 34 fe ff ff       mov    -0x1cc(%ebp),%edx
  3682.   10273d:   0f ac d0 14             shrd   $0x14,%edx,%eax
  3683.   102741:   c1 ea 14                shr    $0x14,%edx
  3684.   102744:   88 45 be                mov    %al,-0x42(%ebp)
  3685.         b[5] = (BCD&0x0f0000)>>16;
  3686.   102747:   8b 45 d0                mov    -0x30(%ebp),%eax
  3687.   10274a:   89 c2                   mov    %eax,%edx
  3688.   10274c:   81 e2 00 00 0f 00       and    $0xf0000,%edx
  3689.   102752:   89 95 28 fe ff ff       mov    %edx,-0x1d8(%ebp)
  3690.   102758:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3691.   10275b:   89 c2                   mov    %eax,%edx
  3692.   10275d:   83 e2 00                and    $0x0,%edx
  3693.   102760:   89 95 2c fe ff ff       mov    %edx,-0x1d4(%ebp)
  3694.   102766:   8b 85 28 fe ff ff       mov    -0x1d8(%ebp),%eax
  3695.   10276c:   8b 95 2c fe ff ff       mov    -0x1d4(%ebp),%edx
  3696.   102772:   0f ac d0 10             shrd   $0x10,%edx,%eax
  3697.   102776:   c1 ea 10                shr    $0x10,%edx
  3698.   102779:   88 45 bf                mov    %al,-0x41(%ebp)
  3699.         b[6] = (BCD&0x0f000)>>12;
  3700.   10277c:   8b 45 d0                mov    -0x30(%ebp),%eax
  3701.   10277f:   89 c2                   mov    %eax,%edx
  3702.   102781:   81 e2 00 f0 00 00       and    $0xf000,%edx
  3703.   102787:   89 95 20 fe ff ff       mov    %edx,-0x1e0(%ebp)
  3704.   10278d:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3705.   102790:   89 c2                   mov    %eax,%edx
  3706.   102792:   83 e2 00                and    $0x0,%edx
  3707.   102795:   89 95 24 fe ff ff       mov    %edx,-0x1dc(%ebp)
  3708.   10279b:   8b 85 20 fe ff ff       mov    -0x1e0(%ebp),%eax
  3709.   1027a1:   8b 95 24 fe ff ff       mov    -0x1dc(%ebp),%edx
  3710.   1027a7:   0f ac d0 0c             shrd   $0xc,%edx,%eax
  3711.   1027ab:   c1 ea 0c                shr    $0xc,%edx
  3712.   1027ae:   88 45 c0                mov    %al,-0x40(%ebp)
  3713.         b[7] = (BCD&0x0f00)>>8;
  3714.   1027b1:   8b 45 d0                mov    -0x30(%ebp),%eax
  3715.   1027b4:   89 c2                   mov    %eax,%edx
  3716.   1027b6:   81 e2 00 0f 00 00       and    $0xf00,%edx
  3717.   1027bc:   89 95 18 fe ff ff       mov    %edx,-0x1e8(%ebp)
  3718.   1027c2:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3719.   1027c5:   89 c2                   mov    %eax,%edx
  3720.   1027c7:   83 e2 00                and    $0x0,%edx
  3721.   1027ca:   89 95 1c fe ff ff       mov    %edx,-0x1e4(%ebp)
  3722.   1027d0:   8b 85 18 fe ff ff       mov    -0x1e8(%ebp),%eax
  3723.   1027d6:   8b 95 1c fe ff ff       mov    -0x1e4(%ebp),%edx
  3724.   1027dc:   0f ac d0 08             shrd   $0x8,%edx,%eax
  3725.   1027e0:   c1 ea 08                shr    $0x8,%edx
  3726.   1027e3:   88 45 c1                mov    %al,-0x3f(%ebp)
  3727.         b[8] = (BCD&0x0f0)>>4;
  3728.   1027e6:   8b 45 d0                mov    -0x30(%ebp),%eax
  3729.   1027e9:   89 c2                   mov    %eax,%edx
  3730.   1027eb:   81 e2 f0 00 00 00       and    $0xf0,%edx
  3731.   1027f1:   89 95 10 fe ff ff       mov    %edx,-0x1f0(%ebp)
  3732.   1027f7:   8b 45 d4                mov    -0x2c(%ebp),%eax
  3733.   1027fa:   89 c2                   mov    %eax,%edx
  3734.   1027fc:   83 e2 00                and    $0x0,%edx
  3735.   1027ff:   89 95 14 fe ff ff       mov    %edx,-0x1ec(%ebp)
  3736.   102805:   8b 85 10 fe ff ff       mov    -0x1f0(%ebp),%eax
  3737.   10280b:   8b 95 14 fe ff ff       mov    -0x1ec(%ebp),%edx
  3738.   102811:   0f ac d0 04             shrd   $0x4,%edx,%eax
  3739.   102815:   c1 ea 04                shr    $0x4,%edx
  3740.   102818:   88 45 c2                mov    %al,-0x3e(%ebp)
  3741.         b[9] = (BCD&0x0f);
  3742.   10281b:   8b 45 d0                mov    -0x30(%ebp),%eax
  3743.   10281e:   83 e0 0f                and    $0xf,%eax
  3744.   102821:   88 45 c3                mov    %al,-0x3d(%ebp)
  3745.    
  3746.         nullflag = 1;
  3747.   102824:   c6 45 da 01             movb   $0x1,-0x26(%ebp)
  3748.         for(j=0;j<10;j++){
  3749.   102828:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  3750.   10282f:   eb 35                   jmp    102866 <sprintfr+0x118e>
  3751.           if(! (b[j] == 0 && nullflag)){
  3752.   102831:   8d 45 ba                lea    -0x46(%ebp),%eax
  3753.   102834:   03 45 e4                add    -0x1c(%ebp),%eax
  3754.   102837:   0f b6 00                movzbl (%eax),%eax
  3755.   10283a:   84 c0                   test   %al,%al
  3756.   10283c:   75 06                   jne    102844 <sprintfr+0x116c>
  3757.   10283e:   80 7d da 00             cmpb   $0x0,-0x26(%ebp)
  3758.   102842:   75 1e                   jne    102862 <sprintfr+0x118a>
  3759.             rs[z++] = b[j] + NULL;// 48 - ASCII null
  3760.   102844:   8b 45 e8                mov    -0x18(%ebp),%eax
  3761.   102847:   89 c2                   mov    %eax,%edx
  3762.   102849:   03 55 c4                add    -0x3c(%ebp),%edx
  3763.   10284c:   8d 45 ba                lea    -0x46(%ebp),%eax
  3764.   10284f:   03 45 e4                add    -0x1c(%ebp),%eax
  3765.   102852:   0f b6 00                movzbl (%eax),%eax
  3766.   102855:   83 c0 30                add    $0x30,%eax
  3767.   102858:   88 02                   mov    %al,(%edx)
  3768.   10285a:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3769.             nullflag = 0;
  3770.   10285e:   c6 45 da 00             movb   $0x0,-0x26(%ebp)
  3771.         b[7] = (BCD&0x0f00)>>8;
  3772.         b[8] = (BCD&0x0f0)>>4;
  3773.         b[9] = (BCD&0x0f);
  3774.    
  3775.         nullflag = 1;
  3776.         for(j=0;j<10;j++){
  3777.   102862:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  3778.   102866:   83 7d e4 09             cmpl   $0x9,-0x1c(%ebp)
  3779.   10286a:   7e c5                   jle    102831 <sprintfr+0x1159>
  3780.           if(! (b[j] == 0 && nullflag)){
  3781.             rs[z++] = b[j] + NULL;// 48 - ASCII null
  3782.             nullflag = 0;
  3783.           }
  3784.         }
  3785.         if(nullflag) rs[z++] = NULL;// 48 - ASCII null
  3786.   10286c:   80 7d da 00             cmpb   $0x0,-0x26(%ebp)
  3787.   102870:   74 0d                   je     10287f <sprintfr+0x11a7>
  3788.   102872:   8b 45 e8                mov    -0x18(%ebp),%eax
  3789.   102875:   03 45 c4                add    -0x3c(%ebp),%eax
  3790.   102878:   c6 00 30                movb   $0x30,(%eax)
  3791.   10287b:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3792.         i++;
  3793.   10287f:   83 45 ec 01             addl   $0x1,-0x14(%ebp)
  3794.         break;
  3795.   102883:   90                      nop
  3796.         }
  3797.         break;
  3798.   102884:   e9 ba 00 00 00          jmp    102943 <sprintfr+0x126b>
  3799.       case 'c'://******************************** Char
  3800.       case 'C'://*************************************
  3801.         rs[z++] = (uint8_t) arg;
  3802.   102889:   8b 45 e8                mov    -0x18(%ebp),%eax
  3803.   10288c:   89 c2                   mov    %eax,%edx
  3804.   10288e:   03 55 c4                add    -0x3c(%ebp),%edx
  3805.   102891:   8b 45 c8                mov    -0x38(%ebp),%eax
  3806.   102894:   88 02                   mov    %al,(%edx)
  3807.   102896:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3808.         break;
  3809.   10289a:   e9 a4 00 00 00          jmp    102943 <sprintfr+0x126b>
  3810.       case 'b'://******************************** 8-Bit wert in hex
  3811.       case 'B'://**************************************************
  3812.         arg = (uint8_t) arg;
  3813.   10289f:   8b 45 c8                mov    -0x38(%ebp),%eax
  3814.   1028a2:   0f b6 c0                movzbl %al,%eax
  3815.   1028a5:   89 45 c8                mov    %eax,-0x38(%ebp)
  3816.         b[0] = (arg & 0xf0)>>4;
  3817.   1028a8:   8b 45 c8                mov    -0x38(%ebp),%eax
  3818.   1028ab:   25 f0 00 00 00          and    $0xf0,%eax
  3819.   1028b0:   c1 f8 04                sar    $0x4,%eax
  3820.   1028b3:   88 45 ba                mov    %al,-0x46(%ebp)
  3821.         b[1] = (arg & 0x0f);
  3822.   1028b6:   8b 45 c8                mov    -0x38(%ebp),%eax
  3823.   1028b9:   83 e0 0f                and    $0xf,%eax
  3824.   1028bc:   88 45 bb                mov    %al,-0x45(%ebp)
  3825.         for (j = 0; j < 2; j++){
  3826.   1028bf:   c7 45 e4 00 00 00 00    movl   $0x0,-0x1c(%ebp)
  3827.   1028c6:   eb 47                   jmp    10290f <sprintfr+0x1237>
  3828.           if(b[j] > 9) rs[z++] = (char) b[j] + HEX10;// ASCII a
  3829.   1028c8:   8d 45 ba                lea    -0x46(%ebp),%eax
  3830.   1028cb:   03 45 e4                add    -0x1c(%ebp),%eax
  3831.   1028ce:   0f b6 00                movzbl (%eax),%eax
  3832.   1028d1:   3c 09                   cmp    $0x9,%al
  3833.   1028d3:   7e 1c                   jle    1028f1 <sprintfr+0x1219>
  3834.   1028d5:   8b 45 e8                mov    -0x18(%ebp),%eax
  3835.   1028d8:   89 c2                   mov    %eax,%edx
  3836.   1028da:   03 55 c4                add    -0x3c(%ebp),%edx
  3837.   1028dd:   8d 45 ba                lea    -0x46(%ebp),%eax
  3838.   1028e0:   03 45 e4                add    -0x1c(%ebp),%eax
  3839.   1028e3:   0f b6 00                movzbl (%eax),%eax
  3840.   1028e6:   83 c0 37                add    $0x37,%eax
  3841.   1028e9:   88 02                   mov    %al,(%edx)
  3842.   1028eb:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3843.   1028ef:   eb 1a                   jmp    10290b <sprintfr+0x1233>
  3844.           else     rs[z++] = (char) b[j] + NULL; // 48 - ASCII null
  3845.   1028f1:   8b 45 e8                mov    -0x18(%ebp),%eax
  3846.   1028f4:   89 c2                   mov    %eax,%edx
  3847.   1028f6:   03 55 c4                add    -0x3c(%ebp),%edx
  3848.   1028f9:   8d 45 ba                lea    -0x46(%ebp),%eax
  3849.   1028fc:   03 45 e4                add    -0x1c(%ebp),%eax
  3850.   1028ff:   0f b6 00                movzbl (%eax),%eax
  3851.   102902:   83 c0 30                add    $0x30,%eax
  3852.   102905:   88 02                   mov    %al,(%edx)
  3853.   102907:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3854.       case 'b'://******************************** 8-Bit wert in hex
  3855.       case 'B'://**************************************************
  3856.         arg = (uint8_t) arg;
  3857.         b[0] = (arg & 0xf0)>>4;
  3858.         b[1] = (arg & 0x0f);
  3859.         for (j = 0; j < 2; j++){
  3860.   10290b:   83 45 e4 01             addl   $0x1,-0x1c(%ebp)
  3861.   10290f:   83 7d e4 01             cmpl   $0x1,-0x1c(%ebp)
  3862.   102913:   7e b3                   jle    1028c8 <sprintfr+0x11f0>
  3863.           if(b[j] > 9) rs[z++] = (char) b[j] + HEX10;// ASCII a
  3864.           else     rs[z++] = (char) b[j] + NULL; // 48 - ASCII null
  3865.         }
  3866.         break;
  3867.   102915:   eb 2c                   jmp    102943 <sprintfr+0x126b>
  3868.       case '%':
  3869.         rs[z++] = '%';
  3870.   102917:   8b 45 e8                mov    -0x18(%ebp),%eax
  3871.   10291a:   03 45 c4                add    -0x3c(%ebp),%eax
  3872.   10291d:   c6 00 25                movb   $0x25,(%eax)
  3873.   102920:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3874.         break;
  3875.   102924:   eb 1d                   jmp    102943 <sprintfr+0x126b>
  3876.       default:
  3877.         rs[z++] = s[i];
  3878.   102926:   8b 45 e8                mov    -0x18(%ebp),%eax
  3879.   102929:   89 c2                   mov    %eax,%edx
  3880.   10292b:   03 55 c4                add    -0x3c(%ebp),%edx
  3881.   10292e:   8b 45 ec                mov    -0x14(%ebp),%eax
  3882.   102931:   03 45 08                add    0x8(%ebp),%eax
  3883.   102934:   0f b6 00                movzbl (%eax),%eax
  3884.   102937:   88 02                   mov    %al,(%edx)
  3885.   102939:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3886.         break;
  3887.   10293d:   eb 04                   jmp    102943 <sprintfr+0x126b>
  3888.         rs[z++] = b[j] + NULL;// 48 - ASCII null
  3889.         nullflag =0;
  3890.           }
  3891.         }
  3892.         if(nullflag) rs[z++] = NULL;
  3893.         break;
  3894.   10293f:   90                      nop
  3895.   102940:   eb 01                   jmp    102943 <sprintfr+0x126b>
  3896.         rs[z++] = b[j] + NULL;// 48 - ASCII null
  3897.         nullflag = 0;
  3898.           }
  3899.         }
  3900.         if(nullflag) rs[z++] = NULL;
  3901.         break;
  3902.   102942:   90                      nop
  3903.         break;
  3904.       default:
  3905.         rs[z++] = s[i];
  3906.         break;
  3907.     }
  3908.     i++;
  3909.   102943:   83 45 ec 01             addl   $0x1,-0x14(%ebp)
  3910.   102947:   eb 17                   jmp    102960 <sprintfr+0x1288>
  3911.       }else{
  3912.     rs[z++] = s[i];
  3913.   102949:   8b 45 e8                mov    -0x18(%ebp),%eax
  3914.   10294c:   89 c2                   mov    %eax,%edx
  3915.   10294e:   03 55 c4                add    -0x3c(%ebp),%edx
  3916.   102951:   8b 45 ec                mov    -0x14(%ebp),%eax
  3917.   102954:   03 45 08                add    0x8(%ebp),%eax
  3918.   102957:   0f b6 00                movzbl (%eax),%eax
  3919.   10295a:   88 02                   mov    %al,(%edx)
  3920.   10295c:   83 45 e8 01             addl   $0x1,-0x18(%ebp)
  3921.     long arg;
  3922.     char *rs, b[10],bs;
  3923.     ///\p s eingabestring           \p rs ausgabestring
  3924.     ///\p i eingabestringzähler         \p z  ausgabestringzähler
  3925.     ///\p j allgemeiner schleifenzähler \p ai argumentzähler
  3926.     for(i=0,z=0;s[i] != '\0';i++){
  3927.   102960:   83 45 ec 01             addl   $0x1,-0x14(%ebp)
  3928.   102964:   8b 45 ec                mov    -0x14(%ebp),%eax
  3929.   102967:   03 45 08                add    0x8(%ebp),%eax
  3930.   10296a:   0f b6 00                movzbl (%eax),%eax
  3931.   10296d:   84 c0                   test   %al,%al
  3932.   10296f:   0f 85 89 ed ff ff       jne    1016fe <sprintfr+0x26>
  3933.     i++;
  3934.       }else{
  3935.     rs[z++] = s[i];
  3936.       }
  3937.    }
  3938.    rs[z] = '\0';
  3939.   102975:   8b 45 e8                mov    -0x18(%ebp),%eax
  3940.   102978:   03 45 c4                add    -0x3c(%ebp),%eax
  3941.   10297b:   c6 00 00                movb   $0x0,(%eax)
  3942.    return rs;
  3943.   10297e:   8b 45 c4                mov    -0x3c(%ebp),%eax
  3944. }
  3945.   102981:   81 c4 e4 01 00 00       add    $0x1e4,%esp
  3946.   102987:   5b                      pop    %ebx
  3947.   102988:   5e                      pop    %esi
  3948.   102989:   5f                      pop    %edi
  3949.   10298a:   5d                      pop    %ebp
  3950.   10298b:   c3                      ret    
  3951.  
  3952. 0010298c <sprintf>:
  3953. int sprintf(char *ret,char *string,...){
  3954.   10298c:   55                      push   %ebp
  3955.   10298d:   89 e5                   mov    %esp,%ebp
  3956.   10298f:   83 ec 18                sub    $0x18,%esp
  3957.   long *args = ((long*)&string) + 1;
  3958.   102992:   8d 45 0c                lea    0xc(%ebp),%eax
  3959.   102995:   83 c0 04                add    $0x4,%eax
  3960.   102998:   89 45 fc                mov    %eax,-0x4(%ebp)
  3961.   *ret = sprintfr(string,args);
  3962.   10299b:   8b 45 0c                mov    0xc(%ebp),%eax
  3963.   10299e:   8b 55 fc                mov    -0x4(%ebp),%edx
  3964.   1029a1:   89 54 24 04             mov    %edx,0x4(%esp)
  3965.   1029a5:   89 04 24                mov    %eax,(%esp)
  3966.   1029a8:   e8 2b ed ff ff          call   1016d8 <sprintfr>
  3967.   1029ad:   89 c2                   mov    %eax,%edx
  3968.   1029af:   8b 45 08                mov    0x8(%ebp),%eax
  3969.   1029b2:   88 10                   mov    %dl,(%eax)
  3970.   return 0;
  3971.   1029b4:   b8 00 00 00 00          mov    $0x0,%eax
  3972. }
  3973.   1029b9:   c9                      leave  
  3974.   1029ba:   c3                      ret    
  3975.   1029bb:   90                      nop
  3976.  
  3977. 001029bc <strlen>:
  3978.  *
  3979.  *  (C) Copyright 2011-2012 Michael Sippel
  3980.  */
  3981.  
  3982. /* ---------- Stringlänge ermitteln ------------------- */
  3983. int strlen(char *s){
  3984.   1029bc:   55                      push   %ebp
  3985.   1029bd:   89 e5                   mov    %esp,%ebp
  3986.   1029bf:   83 ec 10                sub    $0x10,%esp
  3987.     int i;
  3988.     for(i=0;s!='\0';s++,i++);
  3989.   1029c2:   c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%ebp)
  3990.   1029c9:   eb 08                   jmp    1029d3 <strlen+0x17>
  3991.   1029cb:   83 45 08 01             addl   $0x1,0x8(%ebp)
  3992.   1029cf:   83 45 fc 01             addl   $0x1,-0x4(%ebp)
  3993.   1029d3:   83 7d 08 00             cmpl   $0x0,0x8(%ebp)
  3994.   1029d7:   75 f2                   jne    1029cb <strlen+0xf>
  3995.     return(i);
  3996.   1029d9:   8b 45 fc                mov    -0x4(%ebp),%eax
  3997. }
  3998.   1029dc:   c9                      leave  
  3999.   1029dd:   c3                      ret    
  4000.  
  4001. 001029de <cut>:
  4002. /* ---------- String in `os1' und `os2' zerschneiden -- */
  4003. void cut(char *s,int stelle,char *os1,char *os2){
  4004.   1029de:   55                      push   %ebp
  4005.   1029df:   89 e5                   mov    %esp,%ebp
  4006.   1029e1:   83 ec 10                sub    $0x10,%esp
  4007.   int i = 0;
  4008.   1029e4:   c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%ebp)
  4009.   while(i<stelle) {*os1++ = *s++;i++;}
  4010.   1029eb:   eb 17                   jmp    102a04 <cut+0x26>
  4011.   1029ed:   8b 45 08                mov    0x8(%ebp),%eax
  4012.   1029f0:   0f b6 10                movzbl (%eax),%edx
  4013.   1029f3:   8b 45 10                mov    0x10(%ebp),%eax
  4014.   1029f6:   88 10                   mov    %dl,(%eax)
  4015.   1029f8:   83 45 10 01             addl   $0x1,0x10(%ebp)
  4016.   1029fc:   83 45 08 01             addl   $0x1,0x8(%ebp)
  4017.   102a00:   83 45 fc 01             addl   $0x1,-0x4(%ebp)
  4018.   102a04:   8b 45 fc                mov    -0x4(%ebp),%eax
  4019.   102a07:   3b 45 0c                cmp    0xc(%ebp),%eax
  4020.   102a0a:   7c e1                   jl     1029ed <cut+0xf>
  4021.   os1[i] = '\0';
  4022.   102a0c:   8b 45 fc                mov    -0x4(%ebp),%eax
  4023.   102a0f:   03 45 10                add    0x10(%ebp),%eax
  4024.   102a12:   c6 00 00                movb   $0x0,(%eax)
  4025.   while(*s !='\0') {*os2++ = *s++;}
  4026.   102a15:   eb 13                   jmp    102a2a <cut+0x4c>
  4027.   102a17:   8b 45 08                mov    0x8(%ebp),%eax
  4028.   102a1a:   0f b6 10                movzbl (%eax),%edx
  4029.   102a1d:   8b 45 14                mov    0x14(%ebp),%eax
  4030.   102a20:   88 10                   mov    %dl,(%eax)
  4031.   102a22:   83 45 14 01             addl   $0x1,0x14(%ebp)
  4032.   102a26:   83 45 08 01             addl   $0x1,0x8(%ebp)
  4033.   102a2a:   8b 45 08                mov    0x8(%ebp),%eax
  4034.   102a2d:   0f b6 00                movzbl (%eax),%eax
  4035.   102a30:   84 c0                   test   %al,%al
  4036.   102a32:   75 e3                   jne    102a17 <cut+0x39>
  4037.   os2[i] = '\0';
  4038.   102a34:   8b 45 fc                mov    -0x4(%ebp),%eax
  4039.   102a37:   03 45 14                add    0x14(%ebp),%eax
  4040.   102a3a:   c6 00 00                movb   $0x0,(%eax)
  4041. }
  4042.   102a3d:   c9                      leave  
  4043.   102a3e:   c3                      ret    
  4044.  
  4045. 00102a3f <insert>:
  4046. /* ---------- `is' an `stelle' in String einfügen ----- */
  4047. void insert(char *s,int stelle,char *is){
  4048.   102a3f:   55                      push   %ebp
  4049.   102a40:   89 e5                   mov    %esp,%ebp
  4050.   102a42:   83 ec 20                sub    $0x20,%esp
  4051.   int i,j;
  4052.   char *bufferU = 0,*buffer = 0;
  4053.   102a45:   c7 45 f4 00 00 00 00    movl   $0x0,-0xc(%ebp)
  4054.   102a4c:   c7 45 f0 00 00 00 00    movl   $0x0,-0x10(%ebp)
  4055.   cut(s,stelle,bufferU,buffer);
  4056.   102a53:   8b 45 f0                mov    -0x10(%ebp),%eax
  4057.   102a56:   89 44 24 0c             mov    %eax,0xc(%esp)
  4058.   102a5a:   8b 45 f4                mov    -0xc(%ebp),%eax
  4059.   102a5d:   89 44 24 08             mov    %eax,0x8(%esp)
  4060.   102a61:   8b 45 0c                mov    0xc(%ebp),%eax
  4061.   102a64:   89 44 24 04             mov    %eax,0x4(%esp)
  4062.   102a68:   8b 45 08                mov    0x8(%ebp),%eax
  4063.   102a6b:   89 04 24                mov    %eax,(%esp)
  4064.   102a6e:   e8 6b ff ff ff          call   1029de <cut>
  4065.   for(i=0,j=stelle;i<strlen(is);i++,j++)s[j] = is[i];
  4066.   102a73:   c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%ebp)
  4067.   102a7a:   8b 45 0c                mov    0xc(%ebp),%eax
  4068.   102a7d:   89 45 f8                mov    %eax,-0x8(%ebp)
  4069.   102a80:   eb 19                   jmp    102a9b <insert+0x5c>
  4070.   102a82:   8b 45 f8                mov    -0x8(%ebp),%eax
  4071.   102a85:   03 45 08                add    0x8(%ebp),%eax
  4072.   102a88:   8b 55 fc                mov    -0x4(%ebp),%edx
  4073.   102a8b:   03 55 10                add    0x10(%ebp),%edx
  4074.   102a8e:   0f b6 12                movzbl (%edx),%edx
  4075.   102a91:   88 10                   mov    %dl,(%eax)
  4076.   102a93:   83 45 fc 01             addl   $0x1,-0x4(%ebp)
  4077.   102a97:   83 45 f8 01             addl   $0x1,-0x8(%ebp)
  4078.   102a9b:   8b 45 10                mov    0x10(%ebp),%eax
  4079.   102a9e:   89 04 24                mov    %eax,(%esp)
  4080.   102aa1:   e8 16 ff ff ff          call   1029bc <strlen>
  4081.   102aa6:   3b 45 fc                cmp    -0x4(%ebp),%eax
  4082.   102aa9:   7f d7                   jg     102a82 <insert+0x43>
  4083.   for(i=0;buffer[i]!='\0';i++,j++)s[j] = buffer[i];
  4084.   102aab:   c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%ebp)
  4085.   102ab2:   eb 19                   jmp    102acd <insert+0x8e>
  4086.   102ab4:   8b 45 f8                mov    -0x8(%ebp),%eax
  4087.   102ab7:   03 45 08                add    0x8(%ebp),%eax
  4088.   102aba:   8b 55 fc                mov    -0x4(%ebp),%edx
  4089.   102abd:   03 55 f0                add    -0x10(%ebp),%edx
  4090.   102ac0:   0f b6 12                movzbl (%edx),%edx
  4091.   102ac3:   88 10                   mov    %dl,(%eax)
  4092.   102ac5:   83 45 fc 01             addl   $0x1,-0x4(%ebp)
  4093.   102ac9:   83 45 f8 01             addl   $0x1,-0x8(%ebp)
  4094.   102acd:   8b 45 fc                mov    -0x4(%ebp),%eax
  4095.   102ad0:   03 45 f0                add    -0x10(%ebp),%eax
  4096.   102ad3:   0f b6 00                movzbl (%eax),%eax
  4097.   102ad6:   84 c0                   test   %al,%al
  4098.   102ad8:   75 da                   jne    102ab4 <insert+0x75>
  4099. }
  4100.   102ada:   c9                      leave  
  4101.   102adb:   c3                      ret    
  4102.  
  4103. 00102adc <replace>:
  4104. /* ---------- `rs' an `stelle' im String ersetzen ----- */
  4105. void replace(char *s,int stelle, char *rs){
  4106.   102adc:   55                      push   %ebp
  4107.   102add:   89 e5                   mov    %esp,%ebp
  4108.   102adf:   83 ec 10                sub    $0x10,%esp
  4109.   int i,j;
  4110.   for(i=stelle,j=0;rs[j]!='\0';i++,j++)s[i]=rs[j];
  4111.   102ae2:   8b 45 0c                mov    0xc(%ebp),%eax
  4112.   102ae5:   89 45 fc                mov    %eax,-0x4(%ebp)
  4113.   102ae8:   c7 45 f8 00 00 00 00    movl   $0x0,-0x8(%ebp)
  4114.   102aef:   eb 19                   jmp    102b0a <replace+0x2e>
  4115.   102af1:   8b 45 fc                mov    -0x4(%ebp),%eax
  4116.   102af4:   03 45 08                add    0x8(%ebp),%eax
  4117.   102af7:   8b 55 f8                mov    -0x8(%ebp),%edx
  4118.   102afa:   03 55 10                add    0x10(%ebp),%edx
  4119.   102afd:   0f b6 12                movzbl (%edx),%edx
  4120.   102b00:   88 10                   mov    %dl,(%eax)
  4121.   102b02:   83 45 fc 01             addl   $0x1,-0x4(%ebp)
  4122.   102b06:   83 45 f8 01             addl   $0x1,-0x8(%ebp)
  4123.   102b0a:   8b 45 f8                mov    -0x8(%ebp),%eax
  4124.   102b0d:   03 45 10                add    0x10(%ebp),%eax
  4125.   102b10:   0f b6 00                movzbl (%eax),%eax
  4126.   102b13:   84 c0                   test   %al,%al
  4127.   102b15:   75 da                   jne    102af1 <replace+0x15>
  4128.   s[i] = '\0';
  4129.   102b17:   8b 45 fc                mov    -0x4(%ebp),%eax
  4130.   102b1a:   03 45 08                add    0x8(%ebp),%eax
  4131.   102b1d:   c6 00 00                movb   $0x0,(%eax)
  4132. }
  4133.   102b20:   c9                      leave  
  4134.   102b21:   c3                      ret    
  4135.  
  4136. 00102b22 <strcpy>:
  4137. /* ---------- String kopiern -------------------------- */
  4138. void strcpy(char *ziel,char *quelle){
  4139.   102b22:   55                      push   %ebp
  4140.   102b23:   89 e5                   mov    %esp,%ebp
  4141.   while(*ziel++ = *quelle++);
  4142.   102b25:   90                      nop
  4143.   102b26:   8b 45 0c                mov    0xc(%ebp),%eax
  4144.   102b29:   0f b6 10                movzbl (%eax),%edx
  4145.   102b2c:   8b 45 08                mov    0x8(%ebp),%eax
  4146.   102b2f:   88 10                   mov    %dl,(%eax)
  4147.   102b31:   8b 45 08                mov    0x8(%ebp),%eax
  4148.   102b34:   0f b6 00                movzbl (%eax),%eax
  4149.   102b37:   84 c0                   test   %al,%al
  4150.   102b39:   0f 95 c0                setne  %al
  4151.   102b3c:   83 45 08 01             addl   $0x1,0x8(%ebp)
  4152.   102b40:   83 45 0c 01             addl   $0x1,0xc(%ebp)
  4153.   102b44:   84 c0                   test   %al,%al
  4154.   102b46:   75 de                   jne    102b26 <strcpy+0x4>
  4155. }
  4156.   102b48:   5d                      pop    %ebp
  4157.   102b49:   c3                      ret    
  4158.  
  4159. 00102b4a <concat>:
  4160. /* ---------- Strings zusammenfügen ------------------- */
  4161. char* concat(char *s1,...){
  4162.   102b4a:   55                      push   %ebp
  4163.   102b4b:   89 e5                   mov    %esp,%ebp
  4164.   102b4d:   83 ec 14                sub    $0x14,%esp
  4165.   char *ret;
  4166.   char *str = (char*)&s1;
  4167.   102b50:   8d 45 08                lea    0x8(%ebp),%eax
  4168.   102b53:   89 45 f8                mov    %eax,-0x8(%ebp)
  4169.   int i;
  4170.   for(i=0;i<strlen(str);i++){
  4171.   102b56:   c7 45 f4 00 00 00 00    movl   $0x0,-0xc(%ebp)
  4172.   102b5d:   eb 17                   jmp    102b76 <concat+0x2c>
  4173.     *ret++ = *str++;
  4174.   102b5f:   8b 45 f8                mov    -0x8(%ebp),%eax
  4175.   102b62:   0f b6 10                movzbl (%eax),%edx
  4176.   102b65:   8b 45 fc                mov    -0x4(%ebp),%eax
  4177.   102b68:   88 10                   mov    %dl,(%eax)
  4178.   102b6a:   83 45 fc 01             addl   $0x1,-0x4(%ebp)
  4179.   102b6e:   83 45 f8 01             addl   $0x1,-0x8(%ebp)
  4180. /* ---------- Strings zusammenfügen ------------------- */
  4181. char* concat(char *s1,...){
  4182.   char *ret;
  4183.   char *str = (char*)&s1;
  4184.   int i;
  4185.   for(i=0;i<strlen(str);i++){
  4186.   102b72:   83 45 f4 01             addl   $0x1,-0xc(%ebp)
  4187.   102b76:   8b 45 f8                mov    -0x8(%ebp),%eax
  4188.   102b79:   89 04 24                mov    %eax,(%esp)
  4189.   102b7c:   e8 3b fe ff ff          call   1029bc <strlen>
  4190.   102b81:   3b 45 f4                cmp    -0xc(%ebp),%eax
  4191.   102b84:   7f d9                   jg     102b5f <concat+0x15>
  4192.     *ret++ = *str++;
  4193.   }
  4194.   return *ret;
  4195.   102b86:   8b 45 fc                mov    -0x4(%ebp),%eax
  4196.   102b89:   0f b6 00                movzbl (%eax),%eax
  4197.   102b8c:   0f be c0                movsbl %al,%eax
  4198. }
  4199.   102b8f:   c9                      leave  
  4200.   102b90:   c3                      ret    
  4201.   102b91:   90                      nop
  4202.   102b92:   90                      nop
  4203.   102b93:   90                      nop
  4204.  
  4205. 00102b94 <scroll>:
  4206.  
  4207. #include <console/param.h>
  4208. #include "variables.h"
  4209.  
  4210. /* ----------- Bildschirm scrollen -------------------- */
  4211. void scroll(int rows){
  4212.   102b94:   55                      push   %ebp
  4213.   102b95:   89 e5                   mov    %esp,%ebp
  4214.   102b97:   53                      push   %ebx
  4215.   102b98:   83 ec 20                sub    $0x20,%esp
  4216.   int i,                     
  4217.   scrollsamples = VIDEOTEXT_WIDTH * rows,     // Anzahl der Zeichen die nach oben gescrollt werden
  4218.   102b9b:   8b 55 08                mov    0x8(%ebp),%edx
  4219.   102b9e:   89 d0                   mov    %edx,%eax
  4220.   102ba0:   c1 e0 02                shl    $0x2,%eax
  4221.   102ba3:   01 d0                   add    %edx,%eax
  4222.   102ba5:   c1 e0 04                shl    $0x4,%eax
  4223.   102ba8:   89 45 f4                mov    %eax,-0xc(%ebp)
  4224.   movesamples = VIDEOTEXT_SAMPLES - scrollsamples,// Anzahl der Zeichen die nach oben bewegt werden müssen
  4225.   102bab:   b8 d0 07 00 00          mov    $0x7d0,%eax
  4226.   102bb0:   2b 45 f4                sub    -0xc(%ebp),%eax
  4227.   102bb3:   89 45 f0                mov    %eax,-0x10(%ebp)
  4228.   scrollsamplesColor= scrollsamples * 2,      // Anzahl der Zeichen + Farbe die gescrollt werden
  4229.   102bb6:   8b 45 f4                mov    -0xc(%ebp),%eax
  4230.   102bb9:   01 c0                   add    %eax,%eax
  4231.   102bbb:   89 45 ec                mov    %eax,-0x14(%ebp)
  4232.   movesamplesColor= movesamples * 2;          // Anzahl der Zeichen + Farbe die bewegt werden müssen
  4233.   102bbe:   8b 45 f0                mov    -0x10(%ebp),%eax
  4234.   102bc1:   01 c0                   add    %eax,%eax
  4235.   102bc3:   89 45 e8                mov    %eax,-0x18(%ebp)
  4236.   textpos -= scrollsamples;           // Textposition zurückschieben
  4237.   102bc6:   a1 18 6f 10 00          mov    0x106f18,%eax
  4238.   102bcb:   2b 45 f4                sub    -0xc(%ebp),%eax
  4239.   102bce:   a3 18 6f 10 00          mov    %eax,0x106f18
  4240.   for(i = 0; i < movesamplesColor; i++)
  4241.   102bd3:   c7 45 f8 00 00 00 00    movl   $0x0,-0x8(%ebp)
  4242.   102bda:   eb 26                   jmp    102c02 <scroll+0x6e>
  4243.     video[i] = video[i + scrollsamplesColor];
  4244.   102bdc:   8b 15 e8 46 10 00       mov    0x1046e8,%edx
  4245.   102be2:   8b 45 f8                mov    -0x8(%ebp),%eax
  4246.   102be5:   01 c2                   add    %eax,%edx
  4247.   102be7:   8b 0d e8 46 10 00       mov    0x1046e8,%ecx
  4248.   102bed:   8b 45 ec                mov    -0x14(%ebp),%eax
  4249.   102bf0:   8b 5d f8                mov    -0x8(%ebp),%ebx
  4250.   102bf3:   8d 04 03                lea    (%ebx,%eax,1),%eax
  4251.   102bf6:   8d 04 01                lea    (%ecx,%eax,1),%eax
  4252.   102bf9:   0f b6 00                movzbl (%eax),%eax
  4253.   102bfc:   88 02                   mov    %al,(%edx)
  4254.   scrollsamples = VIDEOTEXT_WIDTH * rows,     // Anzahl der Zeichen die nach oben gescrollt werden
  4255.   movesamples = VIDEOTEXT_SAMPLES - scrollsamples,// Anzahl der Zeichen die nach oben bewegt werden müssen
  4256.   scrollsamplesColor= scrollsamples * 2,      // Anzahl der Zeichen + Farbe die gescrollt werden
  4257.   movesamplesColor= movesamples * 2;          // Anzahl der Zeichen + Farbe die bewegt werden müssen
  4258.   textpos -= scrollsamples;           // Textposition zurückschieben
  4259.   for(i = 0; i < movesamplesColor; i++)
  4260.   102bfe:   83 45 f8 01             addl   $0x1,-0x8(%ebp)
  4261.   102c02:   8b 45 f8                mov    -0x8(%ebp),%eax
  4262.   102c05:   3b 45 e8                cmp    -0x18(%ebp),%eax
  4263.   102c08:   7c d2                   jl     102bdc <scroll+0x48>
  4264.     video[i] = video[i + scrollsamplesColor];
  4265.  
  4266.   for (; i < VIDEO_SAMPLES_WITH_COLOR; i++)
  4267.   102c0a:   eb 13                   jmp    102c1f <scroll+0x8b>
  4268.     video[i] = 0;
  4269.   102c0c:   8b 15 e8 46 10 00       mov    0x1046e8,%edx
  4270.   102c12:   8b 45 f8                mov    -0x8(%ebp),%eax
  4271.   102c15:   8d 04 02                lea    (%edx,%eax,1),%eax
  4272.   102c18:   c6 00 00                movb   $0x0,(%eax)
  4273.   movesamplesColor= movesamples * 2;          // Anzahl der Zeichen + Farbe die bewegt werden müssen
  4274.   textpos -= scrollsamples;           // Textposition zurückschieben
  4275.   for(i = 0; i < movesamplesColor; i++)
  4276.     video[i] = video[i + scrollsamplesColor];
  4277.  
  4278.   for (; i < VIDEO_SAMPLES_WITH_COLOR; i++)
  4279.   102c1b:   83 45 f8 01             addl   $0x1,-0x8(%ebp)
  4280.   102c1f:   81 7d f8 9f 0f 00 00    cmpl   $0xf9f,-0x8(%ebp)
  4281.   102c26:   7e e4                   jle    102c0c <scroll+0x78>
  4282.     video[i] = 0;
  4283. }
  4284.   102c28:   83 c4 20                add    $0x20,%esp
  4285.   102c2b:   5b                      pop    %ebx
  4286.   102c2c:   5d                      pop    %ebp
  4287.   102c2d:   c3                      ret    
  4288.  
  4289. 00102c2e <clearScreen>:
  4290. /* ---------- Bilschim löschen ------------------------ */
  4291. void clearScreen(void){
  4292.   102c2e:   55                      push   %ebp
  4293.   102c2f:   89 e5                   mov    %esp,%ebp
  4294.   102c31:   83 ec 10                sub    $0x10,%esp
  4295.   textpos = 0;
  4296.   102c34:   c7 05 18 6f 10 00 00    movl   $0x0,0x106f18
  4297.   102c3b:   00 00 00
  4298.   color = 0x07;
  4299.   102c3e:   c7 05 e4 46 10 00 07    movl   $0x7,0x1046e4
  4300.   102c45:   00 00 00
  4301.   int i;
  4302.   for (i = 0; i < 4000; i++){
  4303.   102c48:   c7 45 fc 00 00 00 00    movl   $0x0,-0x4(%ebp)
  4304.   102c4f:   eb 13                   jmp    102c64 <clearScreen+0x36>
  4305.     video[i] = 0;
  4306.   102c51:   8b 15 e8 46 10 00       mov    0x1046e8,%edx
  4307.   102c57:   8b 45 fc                mov    -0x4(%ebp),%eax
  4308.   102c5a:   8d 04 02                lea    (%edx,%eax,1),%eax
  4309.   102c5d:   c6 00 00                movb   $0x0,(%eax)
  4310. /* ---------- Bilschim löschen ------------------------ */
  4311. void clearScreen(void){
  4312.   textpos = 0;
  4313.   color = 0x07;
  4314.   int i;
  4315.   for (i = 0; i < 4000; i++){
  4316.   102c60:   83 45 fc 01             addl   $0x1,-0x4(%ebp)
  4317.   102c64:   81 7d fc 9f 0f 00 00    cmpl   $0xf9f,-0x4(%ebp)
  4318.   102c6b:   7e e4                   jle    102c51 <clearScreen+0x23>
  4319.     video[i] = 0;
  4320.   }
  4321. }
  4322.   102c6d:   c9                      leave  
  4323.   102c6e:   c3                      ret    
  4324.   102c6f:   90                      nop
  4325.  
  4326. 00102c70 <outb>:
  4327. #define _PORTIO_H
  4328.  
  4329. #include <stdint.h>
  4330.  
  4331. /* ---------- 8-Bit daten an 16-Bit port -------------- */
  4332. static inline void outb(uint16_t port, uint8_t data){
  4333.   102c70:   55                      push   %ebp
  4334.   102c71:   89 e5                   mov    %esp,%ebp
  4335.   102c73:   83 ec 08                sub    $0x8,%esp
  4336.   102c76:   8b 55 08                mov    0x8(%ebp),%edx
  4337.   102c79:   8b 45 0c                mov    0xc(%ebp),%eax
  4338.   102c7c:   66 89 55 fc             mov    %dx,-0x4(%ebp)
  4339.   102c80:   88 45 f8                mov    %al,-0x8(%ebp)
  4340.    asm("outb %0, %1" : : "a" (data), "Nd" (port));
  4341.   102c83:   0f b6 45 f8             movzbl -0x8(%ebp),%eax
  4342.   102c87:   0f b7 55 fc             movzwl -0x4(%ebp),%edx
  4343.   102c8b:   ee                      out    %al,(%dx)
  4344. }
  4345.   102c8c:   c9                      leave  
  4346.   102c8d:   c3                      ret    
  4347.  
  4348. 00102c8e <displaycursor>:
  4349. #include <portio.h>
  4350. #include <stdint.h>
  4351. #include <console/param.h>
  4352.  
  4353. /* ---------- Cursor nach X,Y bewegen ----------------- */
  4354. void displaycursor(uint8_t col, uint8_t row){
  4355.   102c8e:   55                      push   %ebp
  4356.   102c8f:   89 e5                   mov    %esp,%ebp
  4357.   102c91:   83 ec 20                sub    $0x20,%esp
  4358.   102c94:   8b 55 08                mov    0x8(%ebp),%edx
  4359.   102c97:   8b 45 0c                mov    0xc(%ebp),%eax
  4360.   102c9a:   88 55 ec                mov    %dl,-0x14(%ebp)
  4361.   102c9d:   88 45 e8                mov    %al,-0x18(%ebp)
  4362.   uint16_t tmp;
  4363.   tmp = row * VIDEOTEXT_WIDTH + col;
  4364.   102ca0:   0f b6 55 e8             movzbl -0x18(%ebp),%edx
  4365.   102ca4:   89 d0                   mov    %edx,%eax
  4366.   102ca6:   c1 e0 02                shl    $0x2,%eax
  4367.   102ca9:   01 d0                   add    %edx,%eax
  4368.   102cab:   c1 e0 04                shl    $0x4,%eax
  4369.   102cae:   89 c2                   mov    %eax,%edx
  4370.   102cb0:   0f b6 45 ec             movzbl -0x14(%ebp),%eax
  4371.   102cb4:   8d 04 02                lea    (%edx,%eax,1),%eax
  4372.   102cb7:   66 89 45 fe             mov    %ax,-0x2(%ebp)
  4373.   outb(0x3D4,14);
  4374.   102cbb:   c7 44 24 04 0e 00 00    movl   $0xe,0x4(%esp)
  4375.   102cc2:   00
  4376.   102cc3:   c7 04 24 d4 03 00 00    movl   $0x3d4,(%esp)
  4377.   102cca:   e8 a1 ff ff ff          call   102c70 <outb>
  4378.   outb(0x3D5,tmp >> 8);
  4379.   102ccf:   0f b7 45 fe             movzwl -0x2(%ebp),%eax
  4380.   102cd3:   66 c1 e8 08             shr    $0x8,%ax
  4381.   102cd7:   0f b6 c0                movzbl %al,%eax
  4382.   102cda:   89 44 24 04             mov    %eax,0x4(%esp)
  4383.   102cde:   c7 04 24 d5 03 00 00    movl   $0x3d5,(%esp)
  4384.   102ce5:   e8 86 ff ff ff          call   102c70 <outb>
  4385.   outb(0x3D4,15);
  4386.   102cea:   c7 44 24 04 0f 00 00    movl   $0xf,0x4(%esp)
  4387.   102cf1:   00
  4388.   102cf2:   c7 04 24 d4 03 00 00    movl   $0x3d4,(%esp)
  4389.   102cf9:   e8 72 ff ff ff          call   102c70 <outb>
  4390.   outb(0x3D5,tmp);
  4391.   102cfe:   0f b7 45 fe             movzwl -0x2(%ebp),%eax
  4392.   102d02:   0f b6 c0                movzbl %al,%eax
  4393.   102d05:   89 44 24 04             mov    %eax,0x4(%esp)
  4394.   102d09:   c7 04 24 d5 03 00 00    movl   $0x3d5,(%esp)
  4395.   102d10:   e8 5b ff ff ff          call   102c70 <outb>
  4396. }
  4397.   102d15:   c9                      leave  
  4398.   102d16:   c3                      ret    
  4399.  
  4400. 00102d17 <movecursorto>:
  4401.  
  4402. /* ----------- Cursor bewegen ------------------------- */
  4403. void movecursorto(uint16_t pos){
  4404.   102d17:   55                      push   %ebp
  4405.   102d18:   89 e5                   mov    %esp,%ebp
  4406.   102d1a:   83 ec 0c                sub    $0xc,%esp
  4407.   102d1d:   8b 45 08                mov    0x8(%ebp),%eax
  4408.   102d20:   66 89 45 fc             mov    %ax,-0x4(%ebp)
  4409.   outb(0x3D4,14);
  4410.   102d24:   c7 44 24 04 0e 00 00    movl   $0xe,0x4(%esp)
  4411.   102d2b:   00
  4412.   102d2c:   c7 04 24 d4 03 00 00    movl   $0x3d4,(%esp)
  4413.   102d33:   e8 38 ff ff ff          call   102c70 <outb>
  4414.   outb(0x3D5,pos >> 8);
  4415.   102d38:   0f b7 45 fc             movzwl -0x4(%ebp),%eax
  4416.   102d3c:   66 c1 e8 08             shr    $0x8,%ax
  4417.   102d40:   0f b6 c0                movzbl %al,%eax
  4418.   102d43:   89 44 24 04             mov    %eax,0x4(%esp)
  4419.   102d47:   c7 04 24 d5 03 00 00    movl   $0x3d5,(%esp)
  4420.   102d4e:   e8 1d ff ff ff          call   102c70 <outb>
  4421.   outb(0x3D4,15);
  4422.   102d53:   c7 44 24 04 0f 00 00    movl   $0xf,0x4(%esp)
  4423.   102d5a:   00
  4424.   102d5b:   c7 04 24 d4 03 00 00    movl   $0x3d4,(%esp)
  4425.   102d62:   e8 09 ff ff ff          call   102c70 <outb>
  4426.   outb(0x3D5,pos);
  4427.   102d67:   0f b7 45 fc             movzwl -0x4(%ebp),%eax
  4428.   102d6b:   0f b6 c0                movzbl %al,%eax
  4429.   102d6e:   89 44 24 04             mov    %eax,0x4(%esp)
  4430.   102d72:   c7 04 24 d5 03 00 00    movl   $0x3d5,(%esp)
  4431.   102d79:   e8 f2 fe ff ff          call   102c70 <outb>
  4432. }
  4433.   102d7e:   c9                      leave  
  4434.   102d7f:   c3                      ret    
  4435.  
  4436. 00102d80 <removecursor>:
  4437. /* ----------- Cursor löschen ------------------------- */
  4438. void removecursor(void){
  4439.   102d80:   55                      push   %ebp
  4440.   102d81:   89 e5                   mov    %esp,%ebp
  4441.   102d83:   83 ec 08                sub    $0x8,%esp
  4442.   outb(0x3D4,14);
  4443.   102d86:   c7 44 24 04 0e 00 00    movl   $0xe,0x4(%esp)
  4444.   102d8d:   00
  4445.   102d8e:   c7 04 24 d4 03 00 00    movl   $0x3d4,(%esp)
  4446.   102d95:   e8 d6 fe ff ff          call   102c70 <outb>
  4447.   outb(0x3D5,0x07);
  4448.   102d9a:   c7 44 24 04 07 00 00    movl   $0x7,0x4(%esp)
  4449.   102da1:   00
  4450.   102da2:   c7 04 24 d5 03 00 00    movl   $0x3d5,(%esp)
  4451.   102da9:   e8 c2 fe ff ff          call   102c70 <outb>
  4452.   outb(0x3D4,15);
  4453.   102dae:   c7 44 24 04 0f 00 00    movl   $0xf,0x4(%esp)
  4454.   102db5:   00
  4455.   102db6:   c7 04 24 d4 03 00 00    movl   $0x3d4,(%esp)
  4456.   102dbd:   e8 ae fe ff ff          call   102c70 <outb>
  4457.   outb(0x3D5,0xD0);
  4458.   102dc2:   c7 44 24 04 d0 00 00    movl   $0xd0,0x4(%esp)
  4459.   102dc9:   00
  4460.   102dca:   c7 04 24 d5 03 00 00    movl   $0x3d5,(%esp)
  4461.   102dd1:   e8 9a fe ff ff          call   102c70 <outb>
  4462.   102dd6:   c9                      leave  
  4463.   102dd7:   c3                      ret    
  4464.  
  4465. 00102dd8 <print>:
  4466.  
  4467. #include <console/param.h>
  4468. #include "variables.h"
  4469.  
  4470. /* ---------- Einfache Ausgabefunktion `print' -------- */
  4471. void print(char* string){
  4472.   102dd8:   55                      push   %ebp
  4473.   102dd9:   89 e5                   mov    %esp,%ebp
  4474.   102ddb:   83 ec 28                sub    $0x28,%esp
  4475.     int i;
  4476.     for (i = 0; string[i] != '\0'; i++,textpos++) {
  4477.   102dde:   c7 45 f4 00 00 00 00    movl   $0x0,-0xc(%ebp)
  4478.   102de5:   eb 5d                   jmp    102e44 <print+0x6c>
  4479.       if(textpos >= VIDEOTEXT_SAMPLES) scroll(1);
  4480.   102de7:   a1 18 6f 10 00          mov    0x106f18,%eax
  4481.   102dec:   3d cf 07 00 00          cmp    $0x7cf,%eax
  4482.   102df1:   7e 0c                   jle    102dff <print+0x27>
  4483.   102df3:   c7 04 24 01 00 00 00    movl   $0x1,(%esp)
  4484.   102dfa:   e8 95 fd ff ff          call   102b94 <scroll>
  4485.         video[textpos * 2] = string[i];
  4486.   102dff:   8b 15 e8 46 10 00       mov    0x1046e8,%edx
  4487.   102e05:   a1 18 6f 10 00          mov    0x106f18,%eax
  4488.   102e0a:   01 c0                   add    %eax,%eax
  4489.   102e0c:   01 c2                   add    %eax,%edx
  4490.   102e0e:   8b 45 f4                mov    -0xc(%ebp),%eax
  4491.   102e11:   03 45 08                add    0x8(%ebp),%eax
  4492.   102e14:   0f b6 00                movzbl (%eax),%eax
  4493.   102e17:   88 02                   mov    %al,(%edx)
  4494.         video[textpos * 2 + 1] = color;
  4495.   102e19:   a1 e8 46 10 00          mov    0x1046e8,%eax
  4496.   102e1e:   8b 15 18 6f 10 00       mov    0x106f18,%edx
  4497.   102e24:   01 d2                   add    %edx,%edx
  4498.   102e26:   83 c2 01                add    $0x1,%edx
  4499.   102e29:   8d 14 10                lea    (%eax,%edx,1),%edx
  4500.   102e2c:   a1 e4 46 10 00          mov    0x1046e4,%eax
  4501.   102e31:   88 02                   mov    %al,(%edx)
  4502. #include "variables.h"
  4503.  
  4504. /* ---------- Einfache Ausgabefunktion `print' -------- */
  4505. void print(char* string){
  4506.     int i;
  4507.     for (i = 0; string[i] != '\0'; i++,textpos++) {
  4508.   102e33:   83 45 f4 01             addl   $0x1,-0xc(%ebp)
  4509.   102e37:   a1 18 6f 10 00          mov    0x106f18,%eax
  4510.   102e3c:   83 c0 01                add    $0x1,%eax
  4511.   102e3f:   a3 18 6f 10 00          mov    %eax,0x106f18
  4512.   102e44:   8b 45 f4                mov    -0xc(%ebp),%eax
  4513.   102e47:   03 45 08                add    0x8(%ebp),%eax
  4514.   102e4a:   0f b6 00                movzbl (%eax),%eax
  4515.   102e4d:   84 c0                   test   %al,%al
  4516.   102e4f:   75 96                   jne    102de7 <print+0xf>
  4517.       if(textpos >= VIDEOTEXT_SAMPLES) scroll(1);
  4518.         video[textpos * 2] = string[i];
  4519.         video[textpos * 2 + 1] = color;
  4520.     }
  4521. }
  4522.   102e51:   c9                      leave  
  4523.   102e52:   c3                      ret    
  4524.  
  4525. 00102e53 <printchar>:
  4526. /* ---------- Einzelne Buchstaben an X,Y ausgeben ----- */
  4527. void printchar(char *chr, int chrcolor, int x, int y){
  4528.   102e53:   55                      push   %ebp
  4529.   102e54:   89 e5                   mov    %esp,%ebp
  4530.   102e56:   83 ec 10                sub    $0x10,%esp
  4531.   int off = 2 * (y * VIDEOTEXT_WIDTH + x);  // berechnen der Adresse
  4532.   102e59:   8b 55 14                mov    0x14(%ebp),%edx
  4533.   102e5c:   89 d0                   mov    %edx,%eax
  4534.   102e5e:   c1 e0 02                shl    $0x2,%eax
  4535.   102e61:   01 d0                   add    %edx,%eax
  4536.   102e63:   c1 e0 04                shl    $0x4,%eax
  4537.   102e66:   03 45 10                add    0x10(%ebp),%eax
  4538.   102e69:   01 c0                   add    %eax,%eax
  4539.   102e6b:   89 45 fc                mov    %eax,-0x4(%ebp)
  4540.   video[off] = chr;             // setzen des zeichens
  4541.   102e6e:   8b 15 e8 46 10 00       mov    0x1046e8,%edx
  4542.   102e74:   8b 45 fc                mov    -0x4(%ebp),%eax
  4543.   102e77:   01 c2                   add    %eax,%edx
  4544.   102e79:   8b 45 08                mov    0x8(%ebp),%eax
  4545.   102e7c:   88 02                   mov    %al,(%edx)
  4546.   video[off+1] =  chrcolor;         // setzen des attributebyte
  4547.   102e7e:   a1 e8 46 10 00          mov    0x1046e8,%eax
  4548.   102e83:   8b 55 fc                mov    -0x4(%ebp),%edx
  4549.   102e86:   83 c2 01                add    $0x1,%edx
  4550.   102e89:   8d 14 10                lea    (%eax,%edx,1),%edx
  4551.   102e8c:   8b 45 0c                mov    0xc(%ebp),%eax
  4552.   102e8f:   88 02                   mov    %al,(%edx)
  4553. }
  4554.   102e91:   c9                      leave  
  4555.   102e92:   c3                      ret    
  4556.  
  4557. 00102e93 <putchar>:
  4558. /* ------------ ein Buchstabe ------------------------- */
  4559. int putchar(char c){
  4560.   102e93:   55                      push   %ebp
  4561.   102e94:   89 e5                   mov    %esp,%ebp
  4562.   102e96:   83 ec 04                sub    $0x4,%esp
  4563.   102e99:   8b 45 08                mov    0x8(%ebp),%eax
  4564.   102e9c:   88 45 fc                mov    %al,-0x4(%ebp)
  4565.    video[textpos * 2]     = c;
  4566.   102e9f:   8b 15 e8 46 10 00       mov    0x1046e8,%edx
  4567.   102ea5:   a1 18 6f 10 00          mov    0x106f18,%eax
  4568.   102eaa:   01 c0                   add    %eax,%eax
  4569.   102eac:   01 c2                   add    %eax,%edx
  4570.   102eae:   0f b6 45 fc             movzbl -0x4(%ebp),%eax
  4571.   102eb2:   88 02                   mov    %al,(%edx)
  4572.    video[textpos * 2 + 1] = color;
  4573.   102eb4:   a1 e8 46 10 00          mov    0x1046e8,%eax
  4574.   102eb9:   8b 15 18 6f 10 00       mov    0x106f18,%edx
  4575.   102ebf:   01 d2                   add    %edx,%edx
  4576.   102ec1:   83 c2 01                add    $0x1,%edx
  4577.   102ec4:   8d 14 10                lea    (%eax,%edx,1),%edx
  4578.   102ec7:   a1 e4 46 10 00          mov    0x1046e4,%eax
  4579.   102ecc:   88 02                   mov    %al,(%edx)
  4580.    ++textpos;
  4581.   102ece:   a1 18 6f 10 00          mov    0x106f18,%eax
  4582.   102ed3:   83 c0 01                add    $0x1,%eax
  4583.   102ed6:   a3 18 6f 10 00          mov    %eax,0x106f18
  4584.    return 0;
  4585.   102edb:   b8 00 00 00 00          mov    $0x0,%eax
  4586. }
  4587.   102ee0:   c9                      leave  
  4588.   102ee1:   c3                      ret    
  4589.  
  4590. 00102ee2 <puts>:
  4591. /* ---------- Ausgabefunktion mit Zeilenumbruch uvm. -- */
  4592. int puts(char *string){
  4593.   102ee2:   55                      push   %ebp
  4594.   102ee3:   89 e5                   mov    %esp,%ebp
  4595.   102ee5:   83 ec 28                sub    $0x28,%esp
  4596.     int i;
  4597.     for (i = 0; string[i] != '\0'; i++){
  4598.   102ee8:   c7 45 f4 00 00 00 00    movl   $0x0,-0xc(%ebp)
  4599.   102eef:   e9 ce 00 00 00          jmp    102fc2 <puts+0xe0>
  4600.       if(textpos >= VIDEOTEXT_SAMPLES) scroll(1);
  4601.   102ef4:   a1 18 6f 10 00          mov    0x106f18,%eax
  4602.   102ef9:   3d cf 07 00 00          cmp    $0x7cf,%eax
  4603.   102efe:   7e 0c                   jle    102f0c <puts+0x2a>
  4604.   102f00:   c7 04 24 01 00 00 00    movl   $0x1,(%esp)
  4605.   102f07:   e8 88 fc ff ff          call   102b94 <scroll>
  4606.        if(string[i] == '\n'){
  4607.   102f0c:   8b 45 f4                mov    -0xc(%ebp),%eax
  4608.   102f0f:   03 45 08                add    0x8(%ebp),%eax
  4609.   102f12:   0f b6 00                movzbl (%eax),%eax
  4610.   102f15:   3c 0a                   cmp    $0xa,%al
  4611.   102f17:   75 3b                   jne    102f54 <puts+0x72>
  4612.        while(++textpos % VIDEOTEXT_WIDTH != 0);
  4613.   102f19:   90                      nop
  4614.   102f1a:   a1 18 6f 10 00          mov    0x106f18,%eax
  4615.   102f1f:   83 c0 01                add    $0x1,%eax
  4616.   102f22:   a3 18 6f 10 00          mov    %eax,0x106f18
  4617.   102f27:   8b 0d 18 6f 10 00       mov    0x106f18,%ecx
  4618.   102f2d:   ba 67 66 66 66          mov    $0x66666667,%edx
  4619.   102f32:   89 c8                   mov    %ecx,%eax
  4620.   102f34:   f7 ea                   imul   %edx
  4621.   102f36:   c1 fa 05                sar    $0x5,%edx
  4622.   102f39:   89 c8                   mov    %ecx,%eax
  4623.   102f3b:   c1 f8 1f                sar    $0x1f,%eax
  4624.   102f3e:   29 c2                   sub    %eax,%edx
  4625.   102f40:   89 d0                   mov    %edx,%eax
  4626.   102f42:   c1 e0 02                shl    $0x2,%eax
  4627.   102f45:   01 d0                   add    %edx,%eax
  4628.   102f47:   c1 e0 04                shl    $0x4,%eax
  4629.   102f4a:   89 ca                   mov    %ecx,%edx
  4630.   102f4c:   29 c2                   sub    %eax,%edx
  4631.   102f4e:   85 d2                   test   %edx,%edx
  4632.   102f50:   75 c8                   jne    102f1a <puts+0x38>
  4633.   102f52:   eb 6a                   jmp    102fbe <puts+0xdc>
  4634.        }else if(string[i] == '\t'){
  4635.   102f54:   8b 45 f4                mov    -0xc(%ebp),%eax
  4636.   102f57:   03 45 08                add    0x8(%ebp),%eax
  4637.   102f5a:   0f b6 00                movzbl (%eax),%eax
  4638.   102f5d:   3c 09                   cmp    $0x9,%al
  4639.   102f5f:   75 1c                   jne    102f7d <puts+0x9b>
  4640.      while(++textpos % TABULATOR_WIDTH != 0);
  4641.   102f61:   90                      nop
  4642.   102f62:   a1 18 6f 10 00          mov    0x106f18,%eax
  4643.   102f67:   83 c0 01                add    $0x1,%eax
  4644.   102f6a:   a3 18 6f 10 00          mov    %eax,0x106f18
  4645.   102f6f:   a1 18 6f 10 00          mov    0x106f18,%eax
  4646.   102f74:   83 e0 07                and    $0x7,%eax
  4647.   102f77:   85 c0                   test   %eax,%eax
  4648.   102f79:   75 e7                   jne    102f62 <puts+0x80>
  4649.   102f7b:   eb 41                   jmp    102fbe <puts+0xdc>
  4650.        }else{
  4651.      video[textpos * 2]     = string[i];
  4652.   102f7d:   8b 15 e8 46 10 00       mov    0x1046e8,%edx
  4653.   102f83:   a1 18 6f 10 00          mov    0x106f18,%eax
  4654.   102f88:   01 c0                   add    %eax,%eax
  4655.   102f8a:   01 c2                   add    %eax,%edx
  4656.   102f8c:   8b 45 f4                mov    -0xc(%ebp),%eax
  4657.   102f8f:   03 45 08                add    0x8(%ebp),%eax
  4658.   102f92:   0f b6 00                movzbl (%eax),%eax
  4659.   102f95:   88 02                   mov    %al,(%edx)
  4660.      video[textpos * 2 + 1] = color;
  4661.   102f97:   a1 e8 46 10 00          mov    0x1046e8,%eax
  4662.   102f9c:   8b 15 18 6f 10 00       mov    0x106f18,%edx
  4663.   102fa2:   01 d2                   add    %edx,%edx
  4664.   102fa4:   83 c2 01                add    $0x1,%edx
  4665.   102fa7:   8d 14 10                lea    (%eax,%edx,1),%edx
  4666.   102faa:   a1 e4 46 10 00          mov    0x1046e4,%eax
  4667.   102faf:   88 02                   mov    %al,(%edx)
  4668.      ++textpos;
  4669.   102fb1:   a1 18 6f 10 00          mov    0x106f18,%eax
  4670.   102fb6:   83 c0 01                add    $0x1,%eax
  4671.   102fb9:   a3 18 6f 10 00          mov    %eax,0x106f18
  4672.    return 0;
  4673. }
  4674. /* ---------- Ausgabefunktion mit Zeilenumbruch uvm. -- */
  4675. int puts(char *string){
  4676.     int i;
  4677.     for (i = 0; string[i] != '\0'; i++){
  4678.   102fbe:   83 45 f4 01             addl   $0x1,-0xc(%ebp)
  4679.   102fc2:   8b 45 f4                mov    -0xc(%ebp),%eax
  4680.   102fc5:   03 45 08                add    0x8(%ebp),%eax
  4681.   102fc8:   0f b6 00                movzbl (%eax),%eax
  4682.   102fcb:   84 c0                   test   %al,%al
  4683.   102fcd:   0f 85 21 ff ff ff       jne    102ef4 <puts+0x12>
  4684.      video[textpos * 2]     = string[i];
  4685.      video[textpos * 2 + 1] = color;
  4686.      ++textpos;
  4687.        }
  4688.     }
  4689.     return 0;
  4690.   102fd3:   b8 00 00 00 00          mov    $0x0,%eax
  4691. }
  4692.   102fd8:   c9                      leave  
  4693.   102fd9:   c3                      ret    
  4694.  
  4695. 00102fda <printf>:
  4696. /* ---------- Das formatierte `printf' ---------------- */
  4697. int printf(char *string,...){
  4698.   102fda:   55                      push   %ebp
  4699.   102fdb:   89 e5                   mov    %esp,%ebp
  4700.   102fdd:   83 ec 28                sub    $0x28,%esp
  4701.     long *args = ((long*)&string) + 1;
  4702.   102fe0:   8d 45 08                lea    0x8(%ebp),%eax
  4703.   102fe3:   83 c0 04                add    $0x4,%eax
  4704.   102fe6:   89 45 f4                mov    %eax,-0xc(%ebp)
  4705.     string = sprintfr(string,args);
  4706.   102fe9:   8b 45 08                mov    0x8(%ebp),%eax
  4707.   102fec:   8b 55 f4                mov    -0xc(%ebp),%edx
  4708.   102fef:   89 54 24 04             mov    %edx,0x4(%esp)
  4709.   102ff3:   89 04 24                mov    %eax,(%esp)
  4710.   102ff6:   e8 dd e6 ff ff          call   1016d8 <sprintfr>
  4711.   102ffb:   89 45 08                mov    %eax,0x8(%ebp)
  4712.     puts(string);
  4713.   102ffe:   8b 45 08                mov    0x8(%ebp),%eax
  4714.   103001:   89 04 24                mov    %eax,(%esp)
  4715.   103004:   e8 d9 fe ff ff          call   102ee2 <puts>
  4716.     return 0;
  4717.   103009:   b8 00 00 00 00          mov    $0x0,%eax
  4718. }
  4719.   10300e:   c9                      leave  
  4720.   10300f:   c3                      ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement