-
Notifications
You must be signed in to change notification settings - Fork 0
/
kernelasm.txt
3404 lines (3367 loc) · 164 KB
/
kernelasm.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
hx_kernel: 文件格式 elf32-i386
Disassembly of section .text:
00100000 <start-0xc>:
100000: 02 b0 ad 1b 03 00 add dh,BYTE PTR [eax+0x31bad]
100006: 00 00 add BYTE PTR [eax],al
100008: fb sti
100009: 4f dec edi
10000a: 52 push edx
10000b: e4 .byte 0xe4
0010000c <start>:
10000c: fa cli
10000d: bc 03 80 00 00 mov esp,0x8003
100012: bd 00 00 00 00 mov ebp,0x0
100017: 83 e4 f0 and esp,0xfffffff0
10001a: 89 1d 00 b0 10 00 mov DWORD PTR ds:0x10b000,ebx
100020: e8 e7 07 00 00 call 10080c <kern_entry>
00100025 <stop>:
100025: f4 hlt
100026: eb fd jmp 100025 <stop>
00100028 <move_cur_location>:
100028: f3 0f 1e fb endbr32
10002c: 55 push ebp
10002d: 89 e5 mov ebp,esp
10002f: 83 ec 18 sub esp,0x18
100032: 0f b6 05 05 b0 10 00 movzx eax,BYTE PTR ds:0x10b005
100039: 0f b6 d0 movzx edx,al
10003c: 89 d0 mov eax,edx
10003e: c1 e0 02 shl eax,0x2
100041: 01 d0 add eax,edx
100043: c1 e0 04 shl eax,0x4
100046: 89 c2 mov edx,eax
100048: 0f b6 05 04 b0 10 00 movzx eax,BYTE PTR ds:0x10b004
10004f: 0f b6 c0 movzx eax,al
100052: 01 d0 add eax,edx
100054: 66 89 45 f6 mov WORD PTR [ebp-0xa],ax
100058: 83 ec 08 sub esp,0x8
10005b: 6a 0e push 0xe
10005d: 68 d4 03 00 00 push 0x3d4
100062: e8 3c 07 00 00 call 1007a3 <outb>
100067: 83 c4 10 add esp,0x10
10006a: 0f b7 45 f6 movzx eax,WORD PTR [ebp-0xa]
10006e: 66 c1 e8 08 shr ax,0x8
100072: 0f b6 c0 movzx eax,al
100075: 83 ec 08 sub esp,0x8
100078: 50 push eax
100079: 68 d5 03 00 00 push 0x3d5
10007e: e8 20 07 00 00 call 1007a3 <outb>
100083: 83 c4 10 add esp,0x10
100086: 83 ec 08 sub esp,0x8
100089: 6a 0f push 0xf
10008b: 68 d4 03 00 00 push 0x3d4
100090: e8 0e 07 00 00 call 1007a3 <outb>
100095: 83 c4 10 add esp,0x10
100098: 0f b7 45 f6 movzx eax,WORD PTR [ebp-0xa]
10009c: 0f b6 c0 movzx eax,al
10009f: 83 ec 08 sub esp,0x8
1000a2: 50 push eax
1000a3: 68 d5 03 00 00 push 0x3d5
1000a8: e8 f6 06 00 00 call 1007a3 <outb>
1000ad: 83 c4 10 add esp,0x10
1000b0: 90 nop
1000b1: c9 leave
1000b2: c3 ret
001000b3 <screen_clear>:
1000b3: f3 0f 1e fb endbr32
1000b7: 55 push ebp
1000b8: 89 e5 mov ebp,esp
1000ba: 83 ec 18 sub esp,0x18
1000bd: c6 45 f7 0f mov BYTE PTR [ebp-0x9],0xf
1000c1: 0f b6 45 f7 movzx eax,BYTE PTR [ebp-0x9]
1000c5: c1 e0 08 shl eax,0x8
1000c8: 83 c8 20 or eax,0x20
1000cb: 66 89 45 f4 mov WORD PTR [ebp-0xc],ax
1000cf: 0f b7 55 f4 movzx edx,WORD PTR [ebp-0xc]
1000d3: a1 00 20 10 00 mov eax,ds:0x102000
1000d8: 83 ec 04 sub esp,0x4
1000db: 68 d0 07 00 00 push 0x7d0
1000e0: 52 push edx
1000e1: 50 push eax
1000e2: e8 50 05 00 00 call 100637 <memsetw>
1000e7: 83 c4 10 add esp,0x10
1000ea: c6 05 04 b0 10 00 00 mov BYTE PTR ds:0x10b004,0x0
1000f1: c6 05 05 b0 10 00 00 mov BYTE PTR ds:0x10b005,0x0
1000f8: e8 2b ff ff ff call 100028 <move_cur_location>
1000fd: 90 nop
1000fe: c9 leave
1000ff: c3 ret
00100100 <screen_roll>:
100100: f3 0f 1e fb endbr32
100104: 55 push ebp
100105: 89 e5 mov ebp,esp
100107: 83 ec 10 sub esp,0x10
10010a: 0f b6 05 05 b0 10 00 movzx eax,BYTE PTR ds:0x10b005
100111: 3c 18 cmp al,0x18
100113: 76 7a jbe 10018f <screen_roll+0x8f>
100115: c6 45 f7 0f mov BYTE PTR [ebp-0x9],0xf
100119: 0f b6 45 f7 movzx eax,BYTE PTR [ebp-0x9]
10011d: c1 e0 08 shl eax,0x8
100120: 83 c8 20 or eax,0x20
100123: 66 89 45 f4 mov WORD PTR [ebp-0xc],ax
100127: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0
10012e: eb 26 jmp 100156 <screen_roll+0x56>
100130: a1 00 20 10 00 mov eax,ds:0x102000
100135: 8b 55 fc mov edx,DWORD PTR [ebp-0x4]
100138: 83 c2 50 add edx,0x50
10013b: 01 d2 add edx,edx
10013d: 01 d0 add eax,edx
10013f: 8b 15 00 20 10 00 mov edx,DWORD PTR ds:0x102000
100145: 8b 4d fc mov ecx,DWORD PTR [ebp-0x4]
100148: 01 c9 add ecx,ecx
10014a: 01 ca add edx,ecx
10014c: 0f b7 00 movzx eax,WORD PTR [eax]
10014f: 66 89 02 mov WORD PTR [edx],ax
100152: 83 45 fc 01 add DWORD PTR [ebp-0x4],0x1
100156: 81 7d fc 7f 07 00 00 cmp DWORD PTR [ebp-0x4],0x77f
10015d: 7e d1 jle 100130 <screen_roll+0x30>
10015f: c7 45 f8 80 07 00 00 mov DWORD PTR [ebp-0x8],0x780
100166: eb 17 jmp 10017f <screen_roll+0x7f>
100168: a1 00 20 10 00 mov eax,ds:0x102000
10016d: 8b 55 f8 mov edx,DWORD PTR [ebp-0x8]
100170: 01 d2 add edx,edx
100172: 01 c2 add edx,eax
100174: 0f b7 45 f4 movzx eax,WORD PTR [ebp-0xc]
100178: 66 89 02 mov WORD PTR [edx],ax
10017b: 83 45 f8 01 add DWORD PTR [ebp-0x8],0x1
10017f: 81 7d f8 cf 07 00 00 cmp DWORD PTR [ebp-0x8],0x7cf
100186: 7e e0 jle 100168 <screen_roll+0x68>
100188: c6 05 05 b0 10 00 18 mov BYTE PTR ds:0x10b005,0x18
10018f: 90 nop
100190: c9 leave
100191: c3 ret
00100192 <screen_putc_color>:
100192: f3 0f 1e fb endbr32
100196: 55 push ebp
100197: 89 e5 mov ebp,esp
100199: 83 ec 28 sub esp,0x28
10019c: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
10019f: 88 45 e4 mov BYTE PTR [ebp-0x1c],al
1001a2: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1001a5: 88 45 f7 mov BYTE PTR [ebp-0x9],al
1001a8: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
1001ab: 88 45 f6 mov BYTE PTR [ebp-0xa],al
1001ae: 0f b6 45 f7 movzx eax,BYTE PTR [ebp-0x9]
1001b2: c1 e0 04 shl eax,0x4
1001b5: 89 c2 mov edx,eax
1001b7: 0f b6 45 f6 movzx eax,BYTE PTR [ebp-0xa]
1001bb: 09 d0 or eax,edx
1001bd: 88 45 f5 mov BYTE PTR [ebp-0xb],al
1001c0: 0f b6 45 f5 movzx eax,BYTE PTR [ebp-0xb]
1001c4: c1 e0 08 shl eax,0x8
1001c7: 89 c2 mov edx,eax
1001c9: 66 0f be 45 e4 movsx ax,BYTE PTR [ebp-0x1c]
1001ce: 09 d0 or eax,edx
1001d0: 66 89 45 f2 mov WORD PTR [ebp-0xe],ax
1001d4: 80 7d e4 08 cmp BYTE PTR [ebp-0x1c],0x8
1001d8: 75 1f jne 1001f9 <screen_putc_color+0x67>
1001da: 0f b6 05 04 b0 10 00 movzx eax,BYTE PTR ds:0x10b004
1001e1: 84 c0 test al,al
1001e3: 74 14 je 1001f9 <screen_putc_color+0x67>
1001e5: 0f b6 05 04 b0 10 00 movzx eax,BYTE PTR ds:0x10b004
1001ec: 83 e8 01 sub eax,0x1
1001ef: a2 04 b0 10 00 mov ds:0x10b004,al
1001f4: e9 90 00 00 00 jmp 100289 <screen_putc_color+0xf7>
1001f9: 80 7d e4 09 cmp BYTE PTR [ebp-0x1c],0x9
1001fd: 75 14 jne 100213 <screen_putc_color+0x81>
1001ff: 0f b6 05 04 b0 10 00 movzx eax,BYTE PTR ds:0x10b004
100206: 83 c0 08 add eax,0x8
100209: 83 e0 08 and eax,0x8
10020c: a2 04 b0 10 00 mov ds:0x10b004,al
100211: eb 76 jmp 100289 <screen_putc_color+0xf7>
100213: 80 7d e4 0d cmp BYTE PTR [ebp-0x1c],0xd
100217: 75 09 jne 100222 <screen_putc_color+0x90>
100219: c6 05 04 b0 10 00 00 mov BYTE PTR ds:0x10b004,0x0
100220: eb 67 jmp 100289 <screen_putc_color+0xf7>
100222: 80 7d e4 0a cmp BYTE PTR [ebp-0x1c],0xa
100226: 75 18 jne 100240 <screen_putc_color+0xae>
100228: c6 05 04 b0 10 00 00 mov BYTE PTR ds:0x10b004,0x0
10022f: 0f b6 05 05 b0 10 00 movzx eax,BYTE PTR ds:0x10b005
100236: 83 c0 01 add eax,0x1
100239: a2 05 b0 10 00 mov ds:0x10b005,al
10023e: eb 49 jmp 100289 <screen_putc_color+0xf7>
100240: 80 7d e4 1f cmp BYTE PTR [ebp-0x1c],0x1f
100244: 7e 43 jle 100289 <screen_putc_color+0xf7>
100246: 8b 0d 00 20 10 00 mov ecx,DWORD PTR ds:0x102000
10024c: 0f b6 05 05 b0 10 00 movzx eax,BYTE PTR ds:0x10b005
100253: 0f b6 d0 movzx edx,al
100256: 89 d0 mov eax,edx
100258: c1 e0 02 shl eax,0x2
10025b: 01 d0 add eax,edx
10025d: c1 e0 04 shl eax,0x4
100260: 89 c2 mov edx,eax
100262: 0f b6 05 04 b0 10 00 movzx eax,BYTE PTR ds:0x10b004
100269: 0f b6 c0 movzx eax,al
10026c: 01 d0 add eax,edx
10026e: 01 c0 add eax,eax
100270: 8d 14 01 lea edx,[ecx+eax*1]
100273: 0f b7 45 f2 movzx eax,WORD PTR [ebp-0xe]
100277: 66 89 02 mov WORD PTR [edx],ax
10027a: 0f b6 05 04 b0 10 00 movzx eax,BYTE PTR ds:0x10b004
100281: 83 c0 01 add eax,0x1
100284: a2 04 b0 10 00 mov ds:0x10b004,al
100289: 0f b6 05 04 b0 10 00 movzx eax,BYTE PTR ds:0x10b004
100290: 3c 4f cmp al,0x4f
100292: 76 16 jbe 1002aa <screen_putc_color+0x118>
100294: c6 05 04 b0 10 00 00 mov BYTE PTR ds:0x10b004,0x0
10029b: 0f b6 05 05 b0 10 00 movzx eax,BYTE PTR ds:0x10b005
1002a2: 83 c0 01 add eax,0x1
1002a5: a2 05 b0 10 00 mov ds:0x10b005,al
1002aa: e8 51 fe ff ff call 100100 <screen_roll>
1002af: e8 74 fd ff ff call 100028 <move_cur_location>
1002b4: 90 nop
1002b5: c9 leave
1002b6: c3 ret
001002b7 <screen_write>:
1002b7: f3 0f 1e fb endbr32
1002bb: 55 push ebp
1002bc: 89 e5 mov ebp,esp
1002be: 83 ec 08 sub esp,0x8
1002c1: eb 1f jmp 1002e2 <screen_write+0x2b>
1002c3: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1002c6: 8d 50 01 lea edx,[eax+0x1]
1002c9: 89 55 08 mov DWORD PTR [ebp+0x8],edx
1002cc: 0f b6 00 movzx eax,BYTE PTR [eax]
1002cf: 0f be c0 movsx eax,al
1002d2: 83 ec 04 sub esp,0x4
1002d5: 6a 07 push 0x7
1002d7: 6a 00 push 0x0
1002d9: 50 push eax
1002da: e8 b3 fe ff ff call 100192 <screen_putc_color>
1002df: 83 c4 10 add esp,0x10
1002e2: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1002e5: 0f b6 00 movzx eax,BYTE PTR [eax]
1002e8: 84 c0 test al,al
1002ea: 75 d7 jne 1002c3 <screen_write+0xc>
1002ec: 90 nop
1002ed: 90 nop
1002ee: c9 leave
1002ef: c3 ret
001002f0 <screen_write_color>:
1002f0: f3 0f 1e fb endbr32
1002f4: 55 push ebp
1002f5: 89 e5 mov ebp,esp
1002f7: 83 ec 08 sub esp,0x8
1002fa: eb 21 jmp 10031d <screen_write_color+0x2d>
1002fc: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1002ff: 8d 50 01 lea edx,[eax+0x1]
100302: 89 55 08 mov DWORD PTR [ebp+0x8],edx
100305: 0f b6 00 movzx eax,BYTE PTR [eax]
100308: 0f be c0 movsx eax,al
10030b: 83 ec 04 sub esp,0x4
10030e: ff 75 10 push DWORD PTR [ebp+0x10]
100311: ff 75 0c push DWORD PTR [ebp+0xc]
100314: 50 push eax
100315: e8 78 fe ff ff call 100192 <screen_putc_color>
10031a: 83 c4 10 add esp,0x10
10031d: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100320: 0f b6 00 movzx eax,BYTE PTR [eax]
100323: 84 c0 test al,al
100325: 75 d5 jne 1002fc <screen_write_color+0xc>
100327: 90 nop
100328: 90 nop
100329: c9 leave
10032a: c3 ret
0010032b <screen_write_hex>:
10032b: f3 0f 1e fb endbr32
10032f: 55 push ebp
100330: 89 e5 mov ebp,esp
100332: 83 ec 18 sub esp,0x18
100335: 83 ec 04 sub esp,0x4
100338: ff 75 10 push DWORD PTR [ebp+0x10]
10033b: ff 75 0c push DWORD PTR [ebp+0xc]
10033e: 68 04 20 10 00 push 0x102004
100343: e8 a8 ff ff ff call 1002f0 <screen_write_color>
100348: 83 c4 10 add esp,0x10
10034b: c7 45 f4 1c 00 00 00 mov DWORD PTR [ebp-0xc],0x1c
100352: eb 04 jmp 100358 <screen_write_hex+0x2d>
100354: 83 6d f4 04 sub DWORD PTR [ebp-0xc],0x4
100358: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
10035b: 8b 55 08 mov edx,DWORD PTR [ebp+0x8]
10035e: 89 c1 mov ecx,eax
100360: d3 ea shr edx,cl
100362: 89 d0 mov eax,edx
100364: 85 c0 test eax,eax
100366: 74 ec je 100354 <screen_write_hex+0x29>
100368: eb 54 jmp 1003be <screen_write_hex+0x93>
10036a: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
10036d: 8b 55 08 mov edx,DWORD PTR [ebp+0x8]
100370: 89 c1 mov ecx,eax
100372: d3 ea shr edx,cl
100374: 89 d0 mov eax,edx
100376: 83 e0 0f and eax,0xf
100379: 89 45 f0 mov DWORD PTR [ebp-0x10],eax
10037c: 83 7d f0 09 cmp DWORD PTR [ebp-0x10],0x9
100380: 7e 1d jle 10039f <screen_write_hex+0x74>
100382: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
100385: 83 c0 57 add eax,0x57
100388: 0f be c0 movsx eax,al
10038b: 83 ec 04 sub esp,0x4
10038e: ff 75 10 push DWORD PTR [ebp+0x10]
100391: ff 75 0c push DWORD PTR [ebp+0xc]
100394: 50 push eax
100395: e8 f8 fd ff ff call 100192 <screen_putc_color>
10039a: 83 c4 10 add esp,0x10
10039d: eb 1b jmp 1003ba <screen_write_hex+0x8f>
10039f: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
1003a2: 83 c0 30 add eax,0x30
1003a5: 0f be c0 movsx eax,al
1003a8: 83 ec 04 sub esp,0x4
1003ab: ff 75 10 push DWORD PTR [ebp+0x10]
1003ae: ff 75 0c push DWORD PTR [ebp+0xc]
1003b1: 50 push eax
1003b2: e8 db fd ff ff call 100192 <screen_putc_color>
1003b7: 83 c4 10 add esp,0x10
1003ba: 83 6d f4 04 sub DWORD PTR [ebp-0xc],0x4
1003be: 83 7d f4 00 cmp DWORD PTR [ebp-0xc],0x0
1003c2: 79 a6 jns 10036a <screen_write_hex+0x3f>
1003c4: 90 nop
1003c5: 90 nop
1003c6: c9 leave
1003c7: c3 ret
001003c8 <screen_write_dec>:
1003c8: f3 0f 1e fb endbr32
1003cc: 55 push ebp
1003cd: 89 e5 mov ebp,esp
1003cf: 83 ec 28 sub esp,0x28
1003d2: 83 7d 08 00 cmp DWORD PTR [ebp+0x8],0x0
1003d6: 75 18 jne 1003f0 <screen_write_dec+0x28>
1003d8: 83 ec 04 sub esp,0x4
1003db: ff 75 10 push DWORD PTR [ebp+0x10]
1003de: ff 75 0c push DWORD PTR [ebp+0xc]
1003e1: 6a 30 push 0x30
1003e3: e8 aa fd ff ff call 100192 <screen_putc_color>
1003e8: 83 c4 10 add esp,0x10
1003eb: e9 bf 00 00 00 jmp 1004af <screen_write_dec+0xe7>
1003f0: c7 45 f4 00 00 00 00 mov DWORD PTR [ebp-0xc],0x0
1003f7: eb 43 jmp 10043c <screen_write_dec+0x74>
1003f9: 8b 4d 08 mov ecx,DWORD PTR [ebp+0x8]
1003fc: ba cd cc cc cc mov edx,0xcccccccd
100401: 89 c8 mov eax,ecx
100403: f7 e2 mul edx
100405: c1 ea 03 shr edx,0x3
100408: 89 d0 mov eax,edx
10040a: c1 e0 02 shl eax,0x2
10040d: 01 d0 add eax,edx
10040f: 01 c0 add eax,eax
100411: 29 c1 sub ecx,eax
100413: 89 ca mov edx,ecx
100415: 89 d0 mov eax,edx
100417: 83 c0 30 add eax,0x30
10041a: 89 c1 mov ecx,eax
10041c: 8d 55 e3 lea edx,[ebp-0x1d]
10041f: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
100422: 01 d0 add eax,edx
100424: 88 08 mov BYTE PTR [eax],cl
100426: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100429: ba cd cc cc cc mov edx,0xcccccccd
10042e: f7 e2 mul edx
100430: 89 d0 mov eax,edx
100432: c1 e8 03 shr eax,0x3
100435: 89 45 08 mov DWORD PTR [ebp+0x8],eax
100438: 83 45 f4 01 add DWORD PTR [ebp-0xc],0x1
10043c: 83 7d 08 00 cmp DWORD PTR [ebp+0x8],0x0
100440: 75 b7 jne 1003f9 <screen_write_dec+0x31>
100442: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
100445: 8d 50 ff lea edx,[eax-0x1]
100448: 89 55 f4 mov DWORD PTR [ebp-0xc],edx
10044b: c6 44 05 e3 00 mov BYTE PTR [ebp+eax*1-0x1d],0x0
100450: c7 45 f0 00 00 00 00 mov DWORD PTR [ebp-0x10],0x0
100457: eb 39 jmp 100492 <screen_write_dec+0xca>
100459: 8d 55 e3 lea edx,[ebp-0x1d]
10045c: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
10045f: 01 d0 add eax,edx
100461: 0f b6 00 movzx eax,BYTE PTR [eax]
100464: 88 45 ef mov BYTE PTR [ebp-0x11],al
100467: 8d 55 e3 lea edx,[ebp-0x1d]
10046a: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
10046d: 01 d0 add eax,edx
10046f: 0f b6 00 movzx eax,BYTE PTR [eax]
100472: 8d 4d e3 lea ecx,[ebp-0x1d]
100475: 8b 55 f0 mov edx,DWORD PTR [ebp-0x10]
100478: 01 ca add edx,ecx
10047a: 88 02 mov BYTE PTR [edx],al
10047c: 8d 55 e3 lea edx,[ebp-0x1d]
10047f: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
100482: 01 c2 add edx,eax
100484: 0f b6 45 ef movzx eax,BYTE PTR [ebp-0x11]
100488: 88 02 mov BYTE PTR [edx],al
10048a: 83 6d f4 01 sub DWORD PTR [ebp-0xc],0x1
10048e: 83 45 f0 01 add DWORD PTR [ebp-0x10],0x1
100492: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
100495: 3b 45 f4 cmp eax,DWORD PTR [ebp-0xc]
100498: 7c bf jl 100459 <screen_write_dec+0x91>
10049a: 83 ec 04 sub esp,0x4
10049d: ff 75 10 push DWORD PTR [ebp+0x10]
1004a0: ff 75 0c push DWORD PTR [ebp+0xc]
1004a3: 8d 45 e3 lea eax,[ebp-0x1d]
1004a6: 50 push eax
1004a7: e8 44 fe ff ff call 1002f0 <screen_write_color>
1004ac: 83 c4 10 add esp,0x10
1004af: c9 leave
1004b0: c3 ret
001004b1 <memcpy>:
1004b1: f3 0f 1e fb endbr32
1004b5: 55 push ebp
1004b6: 89 e5 mov ebp,esp
1004b8: 83 ec 20 sub esp,0x20
1004bb: 83 7d 08 00 cmp DWORD PTR [ebp+0x8],0x0
1004bf: 74 06 je 1004c7 <memcpy+0x16>
1004c1: 83 7d 0c 00 cmp DWORD PTR [ebp+0xc],0x0
1004c5: 75 0a jne 1004d1 <memcpy+0x20>
1004c7: b8 00 00 00 00 mov eax,0x0
1004cc: e9 2b 01 00 00 jmp 1005fc <memcpy+0x14b>
1004d1: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1004d4: 3b 45 08 cmp eax,DWORD PTR [ebp+0x8]
1004d7: 73 14 jae 1004ed <memcpy+0x3c>
1004d9: 8b 55 0c mov edx,DWORD PTR [ebp+0xc]
1004dc: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
1004df: 01 d0 add eax,edx
1004e1: 39 45 08 cmp DWORD PTR [ebp+0x8],eax
1004e4: 73 07 jae 1004ed <memcpy+0x3c>
1004e6: b8 01 00 00 00 mov eax,0x1
1004eb: eb 05 jmp 1004f2 <memcpy+0x41>
1004ed: b8 00 00 00 00 mov eax,0x0
1004f2: 89 45 e0 mov DWORD PTR [ebp-0x20],eax
1004f5: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
1004f8: c1 e8 02 shr eax,0x2
1004fb: 89 45 f4 mov DWORD PTR [ebp-0xc],eax
1004fe: 83 7d f4 00 cmp DWORD PTR [ebp-0xc],0x0
100502: 74 72 je 100576 <memcpy+0xc5>
100504: 83 7d e0 00 cmp DWORD PTR [ebp-0x20],0x0
100508: 74 3f je 100549 <memcpy+0x98>
10050a: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
10050d: 8d 50 fc lea edx,[eax-0x4]
100510: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100513: 01 d0 add eax,edx
100515: 89 45 fc mov DWORD PTR [ebp-0x4],eax
100518: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
10051b: 8d 50 fc lea edx,[eax-0x4]
10051e: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
100521: 01 d0 add eax,edx
100523: 89 45 f8 mov DWORD PTR [ebp-0x8],eax
100526: eb 12 jmp 10053a <memcpy+0x89>
100528: 8b 45 f8 mov eax,DWORD PTR [ebp-0x8]
10052b: 8b 10 mov edx,DWORD PTR [eax]
10052d: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
100530: 89 10 mov DWORD PTR [eax],edx
100532: 83 6d fc 04 sub DWORD PTR [ebp-0x4],0x4
100536: 83 6d f8 04 sub DWORD PTR [ebp-0x8],0x4
10053a: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
10053d: 8d 50 ff lea edx,[eax-0x1]
100540: 89 55 f4 mov DWORD PTR [ebp-0xc],edx
100543: 85 c0 test eax,eax
100545: 75 e1 jne 100528 <memcpy+0x77>
100547: eb 2d jmp 100576 <memcpy+0xc5>
100549: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
10054c: 89 45 fc mov DWORD PTR [ebp-0x4],eax
10054f: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
100552: 89 45 f8 mov DWORD PTR [ebp-0x8],eax
100555: eb 12 jmp 100569 <memcpy+0xb8>
100557: 8b 45 f8 mov eax,DWORD PTR [ebp-0x8]
10055a: 8b 10 mov edx,DWORD PTR [eax]
10055c: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
10055f: 89 10 mov DWORD PTR [eax],edx
100561: 83 45 fc 04 add DWORD PTR [ebp-0x4],0x4
100565: 83 45 f8 04 add DWORD PTR [ebp-0x8],0x4
100569: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
10056c: 8d 50 ff lea edx,[eax-0x1]
10056f: 89 55 f4 mov DWORD PTR [ebp-0xc],edx
100572: 85 c0 test eax,eax
100574: 75 e1 jne 100557 <memcpy+0xa6>
100576: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
100579: 83 e0 03 and eax,0x3
10057c: 89 45 f4 mov DWORD PTR [ebp-0xc],eax
10057f: 83 7d f4 00 cmp DWORD PTR [ebp-0xc],0x0
100583: 74 74 je 1005f9 <memcpy+0x148>
100585: 83 7d e0 00 cmp DWORD PTR [ebp-0x20],0x0
100589: 74 40 je 1005cb <memcpy+0x11a>
10058b: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
10058e: 8d 50 ff lea edx,[eax-0x1]
100591: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100594: 01 d0 add eax,edx
100596: 89 45 f0 mov DWORD PTR [ebp-0x10],eax
100599: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
10059c: 8d 50 ff lea edx,[eax-0x1]
10059f: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1005a2: 01 d0 add eax,edx
1005a4: 89 45 ec mov DWORD PTR [ebp-0x14],eax
1005a7: eb 13 jmp 1005bc <memcpy+0x10b>
1005a9: 8b 45 ec mov eax,DWORD PTR [ebp-0x14]
1005ac: 0f b6 10 movzx edx,BYTE PTR [eax]
1005af: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
1005b2: 88 10 mov BYTE PTR [eax],dl
1005b4: 83 6d f0 01 sub DWORD PTR [ebp-0x10],0x1
1005b8: 83 6d ec 01 sub DWORD PTR [ebp-0x14],0x1
1005bc: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
1005bf: 8d 50 ff lea edx,[eax-0x1]
1005c2: 89 55 f4 mov DWORD PTR [ebp-0xc],edx
1005c5: 85 c0 test eax,eax
1005c7: 75 e0 jne 1005a9 <memcpy+0xf8>
1005c9: eb 2e jmp 1005f9 <memcpy+0x148>
1005cb: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1005ce: 89 45 e8 mov DWORD PTR [ebp-0x18],eax
1005d1: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1005d4: 89 45 e4 mov DWORD PTR [ebp-0x1c],eax
1005d7: eb 13 jmp 1005ec <memcpy+0x13b>
1005d9: 8b 45 e4 mov eax,DWORD PTR [ebp-0x1c]
1005dc: 0f b6 10 movzx edx,BYTE PTR [eax]
1005df: 8b 45 e8 mov eax,DWORD PTR [ebp-0x18]
1005e2: 88 10 mov BYTE PTR [eax],dl
1005e4: 83 45 e8 01 add DWORD PTR [ebp-0x18],0x1
1005e8: 83 45 e4 01 add DWORD PTR [ebp-0x1c],0x1
1005ec: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
1005ef: 8d 50 ff lea edx,[eax-0x1]
1005f2: 89 55 f4 mov DWORD PTR [ebp-0xc],edx
1005f5: 85 c0 test eax,eax
1005f7: 75 e0 jne 1005d9 <memcpy+0x128>
1005f9: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1005fc: c9 leave
1005fd: c3 ret
001005fe <memset>:
1005fe: f3 0f 1e fb endbr32
100602: 55 push ebp
100603: 89 e5 mov ebp,esp
100605: 83 ec 14 sub esp,0x14
100608: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
10060b: 88 45 ec mov BYTE PTR [ebp-0x14],al
10060e: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100611: 89 45 fc mov DWORD PTR [ebp-0x4],eax
100614: eb 0f jmp 100625 <memset+0x27>
100616: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
100619: 8d 50 01 lea edx,[eax+0x1]
10061c: 89 55 fc mov DWORD PTR [ebp-0x4],edx
10061f: 0f b6 55 ec movzx edx,BYTE PTR [ebp-0x14]
100623: 88 10 mov BYTE PTR [eax],dl
100625: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
100628: 8d 50 ff lea edx,[eax-0x1]
10062b: 89 55 10 mov DWORD PTR [ebp+0x10],edx
10062e: 85 c0 test eax,eax
100630: 75 e4 jne 100616 <memset+0x18>
100632: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100635: c9 leave
100636: c3 ret
00100637 <memsetw>:
100637: f3 0f 1e fb endbr32
10063b: 55 push ebp
10063c: 89 e5 mov ebp,esp
10063e: 83 ec 14 sub esp,0x14
100641: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
100644: 66 89 45 ec mov WORD PTR [ebp-0x14],ax
100648: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
10064b: 89 45 fc mov DWORD PTR [ebp-0x4],eax
10064e: eb 10 jmp 100660 <memsetw+0x29>
100650: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
100653: 8d 50 02 lea edx,[eax+0x2]
100656: 89 55 fc mov DWORD PTR [ebp-0x4],edx
100659: 0f b7 55 ec movzx edx,WORD PTR [ebp-0x14]
10065d: 66 89 10 mov WORD PTR [eax],dx
100660: 8b 45 10 mov eax,DWORD PTR [ebp+0x10]
100663: 8d 50 ff lea edx,[eax-0x1]
100666: 89 55 10 mov DWORD PTR [ebp+0x10],edx
100669: 85 c0 test eax,eax
10066b: 75 e3 jne 100650 <memsetw+0x19>
10066d: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100670: c9 leave
100671: c3 ret
00100672 <bzero>:
100672: f3 0f 1e fb endbr32
100676: 55 push ebp
100677: 89 e5 mov ebp,esp
100679: ff 75 0c push DWORD PTR [ebp+0xc]
10067c: 6a 00 push 0x0
10067e: ff 75 08 push DWORD PTR [ebp+0x8]
100681: e8 78 ff ff ff call 1005fe <memset>
100686: 83 c4 0c add esp,0xc
100689: 90 nop
10068a: c9 leave
10068b: c3 ret
0010068c <strcmp>:
10068c: f3 0f 1e fb endbr32
100690: 55 push ebp
100691: 89 e5 mov ebp,esp
100693: eb 08 jmp 10069d <strcmp+0x11>
100695: 83 45 08 01 add DWORD PTR [ebp+0x8],0x1
100699: 83 45 0c 01 add DWORD PTR [ebp+0xc],0x1
10069d: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1006a0: 0f b6 00 movzx eax,BYTE PTR [eax]
1006a3: 84 c0 test al,al
1006a5: 74 1a je 1006c1 <strcmp+0x35>
1006a7: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1006aa: 0f b6 00 movzx eax,BYTE PTR [eax]
1006ad: 84 c0 test al,al
1006af: 74 10 je 1006c1 <strcmp+0x35>
1006b1: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1006b4: 0f b6 10 movzx edx,BYTE PTR [eax]
1006b7: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1006ba: 0f b6 00 movzx eax,BYTE PTR [eax]
1006bd: 38 c2 cmp dl,al
1006bf: 74 d4 je 100695 <strcmp+0x9>
1006c1: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1006c4: 0f b6 00 movzx eax,BYTE PTR [eax]
1006c7: 0f be d0 movsx edx,al
1006ca: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1006cd: 0f b6 00 movzx eax,BYTE PTR [eax]
1006d0: 0f be c0 movsx eax,al
1006d3: 29 c2 sub edx,eax
1006d5: 89 d0 mov eax,edx
1006d7: 5d pop ebp
1006d8: c3 ret
001006d9 <strcpy>:
1006d9: f3 0f 1e fb endbr32
1006dd: 55 push ebp
1006de: 89 e5 mov ebp,esp
1006e0: 83 ec 10 sub esp,0x10
1006e3: 83 7d 08 00 cmp DWORD PTR [ebp+0x8],0x0
1006e7: 74 06 je 1006ef <strcpy+0x16>
1006e9: 83 7d 0c 00 cmp DWORD PTR [ebp+0xc],0x0
1006ed: 75 07 jne 1006f6 <strcpy+0x1d>
1006ef: b8 00 00 00 00 mov eax,0x0
1006f4: eb 28 jmp 10071e <strcpy+0x45>
1006f6: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1006f9: 89 45 fc mov DWORD PTR [ebp-0x4],eax
1006fc: 90 nop
1006fd: 8b 55 0c mov edx,DWORD PTR [ebp+0xc]
100700: 8d 42 01 lea eax,[edx+0x1]
100703: 89 45 0c mov DWORD PTR [ebp+0xc],eax
100706: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100709: 8d 48 01 lea ecx,[eax+0x1]
10070c: 89 4d 08 mov DWORD PTR [ebp+0x8],ecx
10070f: 0f b6 12 movzx edx,BYTE PTR [edx]
100712: 88 10 mov BYTE PTR [eax],dl
100714: 0f b6 00 movzx eax,BYTE PTR [eax]
100717: 84 c0 test al,al
100719: 75 e2 jne 1006fd <strcpy+0x24>
10071b: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
10071e: c9 leave
10071f: c3 ret
00100720 <strcat>:
100720: f3 0f 1e fb endbr32
100724: 55 push ebp
100725: 89 e5 mov ebp,esp
100727: 83 ec 10 sub esp,0x10
10072a: 83 7d 08 00 cmp DWORD PTR [ebp+0x8],0x0
10072e: 74 06 je 100736 <strcat+0x16>
100730: 83 7d 0c 00 cmp DWORD PTR [ebp+0xc],0x0
100734: 75 07 jne 10073d <strcat+0x1d>
100736: b8 00 00 00 00 mov eax,0x0
10073b: eb 38 jmp 100775 <strcat+0x55>
10073d: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100740: 89 45 fc mov DWORD PTR [ebp-0x4],eax
100743: eb 04 jmp 100749 <strcat+0x29>
100745: 83 45 fc 01 add DWORD PTR [ebp-0x4],0x1
100749: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
10074c: 0f b6 00 movzx eax,BYTE PTR [eax]
10074f: 84 c0 test al,al
100751: 75 f2 jne 100745 <strcat+0x25>
100753: 90 nop
100754: 8b 55 0c mov edx,DWORD PTR [ebp+0xc]
100757: 8d 42 01 lea eax,[edx+0x1]
10075a: 89 45 0c mov DWORD PTR [ebp+0xc],eax
10075d: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
100760: 8d 48 01 lea ecx,[eax+0x1]
100763: 89 4d fc mov DWORD PTR [ebp-0x4],ecx
100766: 0f b6 12 movzx edx,BYTE PTR [edx]
100769: 88 10 mov BYTE PTR [eax],dl
10076b: 0f b6 00 movzx eax,BYTE PTR [eax]
10076e: 84 c0 test al,al
100770: 75 e2 jne 100754 <strcat+0x34>
100772: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100775: c9 leave
100776: c3 ret
00100777 <strlen>:
100777: f3 0f 1e fb endbr32
10077b: 55 push ebp
10077c: 89 e5 mov ebp,esp
10077e: 83 ec 10 sub esp,0x10
100781: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0
100788: eb 04 jmp 10078e <strlen+0x17>
10078a: 83 45 fc 01 add DWORD PTR [ebp-0x4],0x1
10078e: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100791: 8d 50 01 lea edx,[eax+0x1]
100794: 89 55 08 mov DWORD PTR [ebp+0x8],edx
100797: 0f b6 00 movzx eax,BYTE PTR [eax]
10079a: 84 c0 test al,al
10079c: 75 ec jne 10078a <strlen+0x13>
10079e: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
1007a1: c9 leave
1007a2: c3 ret
001007a3 <outb>:
1007a3: f3 0f 1e fb endbr32
1007a7: 55 push ebp
1007a8: 89 e5 mov ebp,esp
1007aa: 83 ec 08 sub esp,0x8
1007ad: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1007b0: 8b 55 0c mov edx,DWORD PTR [ebp+0xc]
1007b3: 66 89 45 fc mov WORD PTR [ebp-0x4],ax
1007b7: 89 d0 mov eax,edx
1007b9: 88 45 f8 mov BYTE PTR [ebp-0x8],al
1007bc: 0f b7 55 fc movzx edx,WORD PTR [ebp-0x4]
1007c0: 0f b6 45 f8 movzx eax,BYTE PTR [ebp-0x8]
1007c4: ee out dx,al
1007c5: 90 nop
1007c6: c9 leave
1007c7: c3 ret
001007c8 <inb>:
1007c8: f3 0f 1e fb endbr32
1007cc: 55 push ebp
1007cd: 89 e5 mov ebp,esp
1007cf: 83 ec 14 sub esp,0x14
1007d2: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1007d5: 66 89 45 ec mov WORD PTR [ebp-0x14],ax
1007d9: 0f b7 45 ec movzx eax,WORD PTR [ebp-0x14]
1007dd: 89 c2 mov edx,eax
1007df: ec in al,dx
1007e0: 88 45 ff mov BYTE PTR [ebp-0x1],al
1007e3: 0f b6 45 ff movzx eax,BYTE PTR [ebp-0x1]
1007e7: c9 leave
1007e8: c3 ret
001007e9 <inw>:
1007e9: f3 0f 1e fb endbr32
1007ed: 55 push ebp
1007ee: 89 e5 mov ebp,esp
1007f0: 83 ec 14 sub esp,0x14
1007f3: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
1007f6: 66 89 45 ec mov WORD PTR [ebp-0x14],ax
1007fa: 0f b7 45 ec movzx eax,WORD PTR [ebp-0x14]
1007fe: 89 c2 mov edx,eax
100800: 66 ed in ax,dx
100802: 66 89 45 fe mov WORD PTR [ebp-0x2],ax
100806: 0f b7 45 fe movzx eax,WORD PTR [ebp-0x2]
10080a: c9 leave
10080b: c3 ret
0010080c <kern_entry>:
10080c: f3 0f 1e fb endbr32
100810: 55 push ebp
100811: 89 e5 mov ebp,esp
100813: 83 ec 08 sub esp,0x8
100816: e8 3c 09 00 00 call 101157 <init_debug>
10081b: e8 93 f8 ff ff call 1000b3 <screen_clear>
100820: 83 ec 04 sub esp,0x4
100823: 68 07 20 10 00 push 0x102007
100828: 6a 02 push 0x2
10082a: 6a 00 push 0x0
10082c: e8 49 02 00 00 call 100a7a <printk_color>
100831: 83 c4 10 add esp,0x10
100834: 83 ec 0c sub esp,0xc
100837: 68 1a 20 10 00 push 0x10201a
10083c: e8 1a 0a 00 00 call 10125b <panic>
100841: 83 c4 10 add esp,0x10
100844: b8 00 00 00 00 mov eax,0x0
100849: c9 leave
10084a: c3 ret
0010084b <elf_from_multiboot>:
10084b: f3 0f 1e fb endbr32
10084f: 55 push ebp
100850: 89 e5 mov ebp,esp
100852: 83 ec 28 sub esp,0x28
100855: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
100858: 8b 40 24 mov eax,DWORD PTR [eax+0x24]
10085b: 89 45 f0 mov DWORD PTR [ebp-0x10],eax
10085e: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
100861: 8b 50 28 mov edx,DWORD PTR [eax+0x28]
100864: 89 d0 mov eax,edx
100866: c1 e0 02 shl eax,0x2
100869: 01 d0 add eax,edx
10086b: c1 e0 03 shl eax,0x3
10086e: 89 c2 mov edx,eax
100870: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
100873: 01 d0 add eax,edx
100875: 8b 40 0c mov eax,DWORD PTR [eax+0xc]
100878: 89 45 ec mov DWORD PTR [ebp-0x14],eax
10087b: c7 45 f4 00 00 00 00 mov DWORD PTR [ebp-0xc],0x0
100882: e9 b8 00 00 00 jmp 10093f <elf_from_multiboot+0xf4>
100887: 8b 55 f4 mov edx,DWORD PTR [ebp-0xc]
10088a: 89 d0 mov eax,edx
10088c: c1 e0 02 shl eax,0x2
10088f: 01 d0 add eax,edx
100891: c1 e0 03 shl eax,0x3
100894: 89 c2 mov edx,eax
100896: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
100899: 01 d0 add eax,edx
10089b: 8b 10 mov edx,DWORD PTR [eax]
10089d: 8b 45 ec mov eax,DWORD PTR [ebp-0x14]
1008a0: 01 d0 add eax,edx
1008a2: 89 45 e8 mov DWORD PTR [ebp-0x18],eax
1008a5: 83 ec 08 sub esp,0x8
1008a8: 68 1f 20 10 00 push 0x10201f
1008ad: ff 75 e8 push DWORD PTR [ebp-0x18]
1008b0: e8 d7 fd ff ff call 10068c <strcmp>
1008b5: 83 c4 10 add esp,0x10
1008b8: 85 c0 test eax,eax
1008ba: 75 34 jne 1008f0 <elf_from_multiboot+0xa5>
1008bc: 8b 55 f4 mov edx,DWORD PTR [ebp-0xc]
1008bf: 89 d0 mov eax,edx
1008c1: c1 e0 02 shl eax,0x2
1008c4: 01 d0 add eax,edx
1008c6: c1 e0 03 shl eax,0x3
1008c9: 89 c2 mov edx,eax
1008cb: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
1008ce: 01 d0 add eax,edx
1008d0: 8b 40 0c mov eax,DWORD PTR [eax+0xc]
1008d3: 89 45 e0 mov DWORD PTR [ebp-0x20],eax
1008d6: 8b 55 f4 mov edx,DWORD PTR [ebp-0xc]
1008d9: 89 d0 mov eax,edx
1008db: c1 e0 02 shl eax,0x2
1008de: 01 d0 add eax,edx
1008e0: c1 e0 03 shl eax,0x3
1008e3: 89 c2 mov edx,eax
1008e5: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
1008e8: 01 d0 add eax,edx
1008ea: 8b 40 14 mov eax,DWORD PTR [eax+0x14]
1008ed: 89 45 e4 mov DWORD PTR [ebp-0x1c],eax
1008f0: 83 ec 08 sub esp,0x8
1008f3: 68 27 20 10 00 push 0x102027
1008f8: ff 75 e8 push DWORD PTR [ebp-0x18]
1008fb: e8 8c fd ff ff call 10068c <strcmp>
100900: 83 c4 10 add esp,0x10
100903: 85 c0 test eax,eax
100905: 75 34 jne 10093b <elf_from_multiboot+0xf0>
100907: 8b 55 f4 mov edx,DWORD PTR [ebp-0xc]
10090a: 89 d0 mov eax,edx
10090c: c1 e0 02 shl eax,0x2
10090f: 01 d0 add eax,edx
100911: c1 e0 03 shl eax,0x3
100914: 89 c2 mov edx,eax
100916: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
100919: 01 d0 add eax,edx
10091b: 8b 40 0c mov eax,DWORD PTR [eax+0xc]
10091e: 89 45 d8 mov DWORD PTR [ebp-0x28],eax
100921: 8b 55 f4 mov edx,DWORD PTR [ebp-0xc]
100924: 89 d0 mov eax,edx
100926: c1 e0 02 shl eax,0x2
100929: 01 d0 add eax,edx
10092b: c1 e0 03 shl eax,0x3
10092e: 89 c2 mov edx,eax
100930: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
100933: 01 d0 add eax,edx
100935: 8b 40 14 mov eax,DWORD PTR [eax+0x14]
100938: 89 45 dc mov DWORD PTR [ebp-0x24],eax
10093b: 83 45 f4 01 add DWORD PTR [ebp-0xc],0x1
10093f: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
100942: 8b 50 1c mov edx,DWORD PTR [eax+0x1c]
100945: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
100948: 39 c2 cmp edx,eax
10094a: 0f 87 37 ff ff ff ja 100887 <elf_from_multiboot+0x3c>
100950: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
100953: 8b 55 d8 mov edx,DWORD PTR [ebp-0x28]
100956: 89 10 mov DWORD PTR [eax],edx
100958: 8b 55 dc mov edx,DWORD PTR [ebp-0x24]
10095b: 89 50 04 mov DWORD PTR [eax+0x4],edx
10095e: 8b 55 e0 mov edx,DWORD PTR [ebp-0x20]
100961: 89 50 08 mov DWORD PTR [eax+0x8],edx
100964: 8b 55 e4 mov edx,DWORD PTR [ebp-0x1c]
100967: 89 50 0c mov DWORD PTR [eax+0xc],edx
10096a: 8b 45 08 mov eax,DWORD PTR [ebp+0x8]
10096d: c9 leave
10096e: c2 04 00 ret 0x4
00100971 <elf_lookup_symbol>:
100971: f3 0f 1e fb endbr32
100975: 55 push ebp
100976: 89 e5 mov ebp,esp
100978: 83 ec 10 sub esp,0x10
10097b: c7 45 fc 00 00 00 00 mov DWORD PTR [ebp-0x4],0x0
100982: eb 78 jmp 1009fc <elf_lookup_symbol+0x8b>
100984: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
100987: 8b 00 mov eax,DWORD PTR [eax]
100989: 8b 55 fc mov edx,DWORD PTR [ebp-0x4]
10098c: c1 e2 04 shl edx,0x4
10098f: 01 d0 add eax,edx
100991: 0f b6 40 0c movzx eax,BYTE PTR [eax+0xc]
100995: 0f b6 c0 movzx eax,al
100998: 83 e0 0f and eax,0xf
10099b: 83 f8 02 cmp eax,0x2
10099e: 75 57 jne 1009f7 <elf_lookup_symbol+0x86>
1009a0: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1009a3: 8b 00 mov eax,DWORD PTR [eax]
1009a5: 8b 55 fc mov edx,DWORD PTR [ebp-0x4]
1009a8: c1 e2 04 shl edx,0x4
1009ab: 01 d0 add eax,edx
1009ad: 8b 40 04 mov eax,DWORD PTR [eax+0x4]
1009b0: 39 45 08 cmp DWORD PTR [ebp+0x8],eax
1009b3: 72 43 jb 1009f8 <elf_lookup_symbol+0x87>
1009b5: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1009b8: 8b 00 mov eax,DWORD PTR [eax]
1009ba: 8b 55 fc mov edx,DWORD PTR [ebp-0x4]
1009bd: c1 e2 04 shl edx,0x4
1009c0: 01 d0 add eax,edx
1009c2: 8b 50 04 mov edx,DWORD PTR [eax+0x4]
1009c5: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1009c8: 8b 00 mov eax,DWORD PTR [eax]
1009ca: 8b 4d fc mov ecx,DWORD PTR [ebp-0x4]
1009cd: c1 e1 04 shl ecx,0x4
1009d0: 01 c8 add eax,ecx
1009d2: 8b 40 08 mov eax,DWORD PTR [eax+0x8]
1009d5: 01 d0 add eax,edx
1009d7: 39 45 08 cmp DWORD PTR [ebp+0x8],eax
1009da: 73 1c jae 1009f8 <elf_lookup_symbol+0x87>
1009dc: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1009df: 8b 40 08 mov eax,DWORD PTR [eax+0x8]
1009e2: 89 c1 mov ecx,eax
1009e4: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1009e7: 8b 00 mov eax,DWORD PTR [eax]
1009e9: 8b 55 fc mov edx,DWORD PTR [ebp-0x4]
1009ec: c1 e2 04 shl edx,0x4
1009ef: 01 d0 add eax,edx
1009f1: 8b 00 mov eax,DWORD PTR [eax]
1009f3: 01 c8 add eax,ecx
1009f5: eb 20 jmp 100a17 <elf_lookup_symbol+0xa6>
1009f7: 90 nop
1009f8: 83 45 fc 01 add DWORD PTR [ebp-0x4],0x1
1009fc: 8b 45 0c mov eax,DWORD PTR [ebp+0xc]
1009ff: 8b 40 04 mov eax,DWORD PTR [eax+0x4]
100a02: c1 e8 04 shr eax,0x4
100a05: 89 c2 mov edx,eax
100a07: 8b 45 fc mov eax,DWORD PTR [ebp-0x4]
100a0a: 39 c2 cmp edx,eax
100a0c: 0f 87 72 ff ff ff ja 100984 <elf_lookup_symbol+0x13>
100a12: b8 00 00 00 00 mov eax,0x0
100a17: c9 leave
100a18: c3 ret
00100a19 <printk>:
100a19: f3 0f 1e fb endbr32
100a1d: 55 push ebp
100a1e: 89 e5 mov ebp,esp
100a20: 83 ec 18 sub esp,0x18
100a23: 8d 45 0c lea eax,[ebp+0xc]
100a26: 89 45 f0 mov DWORD PTR [ebp-0x10],eax
100a29: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
100a2c: 83 ec 04 sub esp,0x4
100a2f: 50 push eax
100a30: ff 75 08 push DWORD PTR [ebp+0x8]
100a33: 68 20 b0 10 00 push 0x10b020
100a38: e8 25 03 00 00 call 100d62 <vsprintf>
100a3d: 83 c4 10 add esp,0x10
100a40: 89 45 f4 mov DWORD PTR [ebp-0xc],eax
100a43: 81 7d f4 00 04 00 00 cmp DWORD PTR [ebp-0xc],0x400
100a4a: 7e 10 jle 100a5c <printk+0x43>
100a4c: 83 ec 0c sub esp,0xc
100a4f: 68 30 20 10 00 push 0x102030
100a54: e8 5e f8 ff ff call 1002b7 <screen_write>
100a59: 83 c4 10 add esp,0x10
100a5c: 8b 45 f4 mov eax,DWORD PTR [ebp-0xc]
100a5f: 05 20 b0 10 00 add eax,0x10b020
100a64: c6 00 00 mov BYTE PTR [eax],0x0
100a67: 83 ec 0c sub esp,0xc
100a6a: 68 20 b0 10 00 push 0x10b020
100a6f: e8 43 f8 ff ff call 1002b7 <screen_write>
100a74: 83 c4 10 add esp,0x10
100a77: 90 nop
100a78: c9 leave
100a79: c3 ret
00100a7a <printk_color>:
100a7a: f3 0f 1e fb endbr32
100a7e: 55 push ebp
100a7f: 89 e5 mov ebp,esp
100a81: 83 ec 18 sub esp,0x18
100a84: 8d 45 14 lea eax,[ebp+0x14]
100a87: 89 45 f0 mov DWORD PTR [ebp-0x10],eax
100a8a: 8b 45 f0 mov eax,DWORD PTR [ebp-0x10]
100a8d: 83 ec 04 sub esp,0x4
100a90: 50 push eax
100a91: ff 75 10 push DWORD PTR [ebp+0x10]
100a94: 68 20 b4 10 00 push 0x10b420
100a99: e8 c4 02 00 00 call 100d62 <vsprintf>
100a9e: 83 c4 10 add esp,0x10
100aa1: 89 45 f4 mov DWORD PTR [ebp-0xc],eax
100aa4: 81 7d f4 00 04 00 00 cmp DWORD PTR [ebp-0xc],0x400
100aab: 7e 10 jle 100abd <printk_color+0x43>
100aad: 83 ec 0c sub esp,0xc
100ab0: 68 30 20 10 00 push 0x102030
100ab5: e8 fd f7 ff ff call 1002b7 <screen_write>