-
Notifications
You must be signed in to change notification settings - Fork 0
/
helloscc.lst
3470 lines (3334 loc) · 272 KB
/
helloscc.lst
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
; -----------------------------------------------------------
; Small C Compiler for TRDOS 386 (v2.0.9 and later)
; Erdogan Tan - 2024
; Beginning: 05/09/2024
; Last Update: 22/09/2024
; -----------------------------------------------------------
; Derived from 'scc.asm' file of KolibriOS SCC source code
; 2024
;B+ System header
use32
org 0x0
00000000: E9 E1 18 00 00 jmp START ; TRDOS 386 PRG file doesn't contain header
00000005: 00 00 00 00 dd 0
;B+ Include C files
; Compiler tools
include "INTRINS.ASM"
; -----------------------------------------------------------
; Small C Compiler for TRDOS 386 (v2.0.9 and later)
; Erdogan Tan - 2024
; Beginning: 05/09/2024
; Last Update: 26/09/2024
; -----------------------------------------------------------
; Derived from 'intrins.asm' file of KolibriOS SCC source code
; 2024
;
; Small-C Run Time Library for Win NT
;
; Nasm version 17/Nov/98 H T Walheim
; Revised: 20/Nov/98 HTW [Bugs in switch]
;
_CCARGC:
;B+ Ellipses arguments ( ,...)
;cl - argument count
00000009: 31 C0 xor eax,eax
0000000B: 0F B6 C1 movzx eax,cl ; No sign-extension
0000000E: C3 retn
;E:.
;B+ Compare
__ult:
;B+ ???
0000000F: 39 D8 cmp eax,ebx
00000011: 77 46 ja short true
00000013: 31 C0 xor eax,eax
00000015: C3 retn
;E:.
__ugt:
;B+ ???
00000016: 39 D8 cmp eax,ebx
00000018: 72 3F jb short true
0000001A: 31 C0 xor eax,eax
0000001C: C3 retn
;E:.
__ule:
;B+ ???
0000001D: 39 D8 cmp eax,ebx
0000001F: 73 38 jae short true
00000021: 31 C0 xor eax,eax
00000023: C3 retn
;E:.
__uge:
;B+ ???
00000024: 39 D8 cmp eax,ebx
00000026: 76 31 jbe short true
00000028: 31 C0 xor eax,eax
0000002A: C3 retn
;E:.
__eq:
;B+ ???
0000002B: 39 D8 cmp eax,ebx
0000002D: 74 2A je short true
0000002F: 31 C0 xor eax,eax
00000031: C3 retn
;E:.
__ne:
;B+ ???
00000032: 39 D8 cmp eax,ebx
00000034: 75 23 jne short true
00000036: 31 C0 xor eax,eax
00000038: C3 retn
;E:.
__lt:
;B+ ???
00000039: 39 D8 cmp eax,ebx
0000003B: 7F 1C jg short true
0000003D: 31 C0 xor eax,eax
0000003F: C3 retn
;E:.
__gt:
;B+ ???
00000040: 39 D8 cmp eax,ebx
00000042: 7C 15 jl short true
00000044: 31 C0 xor eax,eax
00000046: C3 retn
;E:.
__le:
;B+ ???
00000047: 39 D8 cmp eax,ebx
00000049: 7D 0E jge short true
0000004B: 31 C0 xor eax,eax
0000004D: C3 retn
;E:.
__ge:
;B+ ???
0000004E: 39 D8 cmp eax,ebx
00000050: 7E 07 jle short true
00000052: 31 C0 xor eax,eax
00000054: C3 retn
;E:.
;E:.
__lneg:
;B+ Logical Negate of Primary
00000055: 09 C0 or eax,eax
00000057: 75 06 jnz short false
true:
00000059: B8 01 00 00 00 mov eax,1
0000005E: C3 retn
false:
0000005F: 31 C0 xor eax,eax
00000061: C3 retn
;E:.
__switch:
;B+ Execute "switch" statement
;eax - switch value
;[esp] - pointer to switch table
; dd addr1,value1
; ...
; dd 0
; [jmp default]
; continuation
;
; Revised: 20/Nov/98 [JECXZ needed]
00000062: 5B pop ebx
00000063: EB 03 jmp short skip
back:
00000065: 83 C3 08 add ebx,8 ;next case-pair
skip:
00000068: 8B 0B mov ecx,[ebx] ;case-label location (adress)
0000006A: E3 07 jecxz default
0000006C: 3B 43 04 cmp eax,[ebx+4] ;test case-value
0000006F: 75 F4 jnz short back
00000071: FF E1 jmp ecx ;match -- jump to case
default:
00000073: 83 C3 04 add ebx,4
00000076: FF E3 jmp ebx ;jump to default/continuation
;E:.
; C Library ("stdio.asm")
include "LIBSTD.ASM"
; -----------------------------------------------------------
; Small C Compiler for TRDOS 386 (v2.0.9 and later)
; Erdogan Tan - 2024
; Beginning: 05/09/2024
; Last Update: 26/09/2024
; -----------------------------------------------------------
; Derived from 'libstd.asm' file of KolibriOS SCC source code
; 2024
;NOTE: The assembly source code will be more optimized later.
; For now (current version), semi-optimized source code
; will be preserved for comparison with existing C code.
;Erdogan Tan - 11/09/2024
; TRDOS 386 v2 modification
; Write string to standard output.
;
;puts(string) char *string;
;{while(*string)
; OS_putc(*string++);
; OS_putc('\n');
_puts:
00000078: 55 PUSH EBP
00000079: 89 E5 MOV EBP, ESP
_puts_1:
0000007B: 8D 45 08 LEA EAX, [EBP+8]
0000007E: 50 PUSH EAX ; (*string)
0000007F: 8B 18 MOV EBX, [EAX] ; string's itself
00000081: 0F BE 03 MOVSX EAX, BYTE [EBX] ; char in string
00000084: 5B POP EBX
00000085: 09 C0 OR EAX, EAX
00000087: 74 0D JZ short _puts_2
00000089: FF 03 INC DWORD [EBX] ; (*string++);
0000008B: 50 PUSH EAX
0000008C: B1 01 MOV CL, 1 ; 1 argument
0000008E: E8 A7 16 00 00 CALL _OS_putc
;ADD ESP, 4
00000093: 58 POP EAX
00000094: EB E5 JMP short _puts_1
_puts_2:
00000096: 5D POP EBP
00000097: C3 RETN
_reverse:
00000098: 55 PUSH EBP
00000099: 89 E5 MOV EBP, ESP
0000009B: 83 C4 F8 ADD ESP, -8
0000009E: 8D 45 FC LEA EAX, [EBP-4]
000000A1: 50 PUSH EAX
000000A2: 8D 45 08 LEA EAX, [EBP+8]
000000A5: 89 C3 MOV EBX, EAX
000000A7: 8B 03 MOV EAX, [EBX]
000000A9: 50 PUSH EAX
000000AA: 8D 45 08 LEA EAX, [EBP+8]
000000AD: 89 C3 MOV EBX, EAX
000000AF: 8B 03 MOV EAX, [EBX]
000000B1: 50 PUSH EAX
000000B2: B1 01 MOV CL, 1
000000B4: E8 AA 00 00 00 CALL _strlen
000000B9: 83 C4 04 ADD ESP, 4
000000BC: 5B POP EBX
000000BD: 01 D8 ADD EAX, EBX
000000BF: 89 C3 MOV EBX, EAX
000000C1: B8 01 00 00 00 MOV EAX, 1
000000C6: 93 XCHG EAX, EBX
000000C7: 29 D8 SUB EAX, EBX
000000C9: 5B POP EBX
000000CA: 89 03 MOV [EBX], EAX
_lib_3:
000000CC: 8D 45 08 LEA EAX, [EBP+8]
000000CF: 89 C3 MOV EBX, EAX
000000D1: 8B 03 MOV EAX, [EBX]
000000D3: 50 PUSH EAX
000000D4: 8D 45 FC LEA EAX, [EBP-4]
000000D7: 89 C3 MOV EBX, EAX
000000D9: 8B 03 MOV EAX, [EBX]
000000DB: 5B POP EBX
000000DC: E8 2E FF FF FF CALL __ult
000000E1: 09 C0 OR EAX, EAX
000000E3: 75 02 JNE short _lib_5
000000E5: EB 46 JMP short _lib_4
_lib_5:
000000E7: 8D 45 F8 LEA EAX, [EBP-8]
000000EA: 50 PUSH EAX
000000EB: 8D 45 08 LEA EAX, [EBP+8]
000000EE: 89 C3 MOV EBX, EAX
000000F0: 8B 03 MOV EAX, [EBX]
000000F2: 89 C3 MOV EBX, EAX
000000F4: 0F BE 03 MOVSX EAX,BYTE [EBX]
000000F7: 5B POP EBX
000000F8: 89 03 MOV [EBX], EAX
000000FA: 8D 45 08 LEA EAX, [EBP+8]
000000FD: 89 C3 MOV EBX, EAX
000000FF: 8B 03 MOV EAX, [EBX]
00000101: 40 INC EAX
00000102: 89 03 MOV [EBX], EAX
00000104: 48 DEC EAX
00000105: 50 PUSH EAX
00000106: 8D 45 FC LEA EAX, [EBP-4]
00000109: 89 C3 MOV EBX, EAX
0000010B: 8B 03 MOV EAX, [EBX]
0000010D: 89 C3 MOV EBX, EAX
0000010F: 0F BE 03 MOVSX EAX,BYTE [EBX]
00000112: 5B POP EBX
00000113: 88 03 MOV [EBX], AL
00000115: 8D 45 FC LEA EAX, [EBP-4]
00000118: 89 C3 MOV EBX, EAX
0000011A: 8B 03 MOV EAX, [EBX]
0000011C: 48 DEC EAX
0000011D: 89 03 MOV [EBX], EAX
0000011F: 40 INC EAX
00000120: 50 PUSH EAX
00000121: 8D 45 F8 LEA EAX, [EBP-8]
00000124: 89 C3 MOV EBX, EAX
00000126: 8B 03 MOV EAX, [EBX]
00000128: 5B POP EBX
00000129: 88 03 MOV [EBX], AL
0000012B: EB 9F JMP short _lib_3
_lib_4:
0000012D: 89 EC MOV ESP, EBP
0000012F: 5D POP EBP
00000130: C3 RETN
_strcpy: ; strcpy(s,t) char *s,*t;
00000131: 55 PUSH EBP
00000132: 89 E5 MOV EBP, ESP
00000134: 83 C4 FC ADD ESP, -4 ; char *d;
00000137: 8D 5D 0C LEA EBX, [EBP+12]
0000013A: 8B 03 MOV EAX, [EBX] ; char *s
0000013C: 8D 5D FC LEA EBX, [EBP-4]
0000013F: 89 03 MOV [EBX], EAX ; d=s;
_strcpy_1: ; while(*s++ =*t++);
00000141: 8D 5D 0C LEA EBX, [EBP+12] ; *s
00000144: 8B 03 MOV EAX, [EBX]
00000146: FF 03 INC DWORD [EBX] ; *s++
00000148: 50 PUSH EAX
00000149: 8D 45 08 LEA EAX, [EBP+8] ; *t
0000014C: 8B 18 MOV EBX, [EAX]
0000014E: FF 00 INC DWORD [EAX] ; *t++
00000150: 0F BE 03 MOVSX EAX, BYTE [EBX]
00000153: 5B POP EBX
00000154: 88 03 MOV [EBX], AL ; *s++ =*t++
00000156: 09 C0 OR EAX, EAX
00000158: 75 E7 JNZ short _strcpy_1
0000015A: 8D 5D FC LEA EBX, [EBP-4] ; pointer to d
0000015D: 8B 03 MOV EAX, [EBX] ; return (d);
0000015F: 89 EC MOV ESP, EBP
00000161: 5D POP EBP
00000162: C3 RETN
_strlen: ; strlen(s)
00000163: 55 PUSH EBP
00000164: 89 E5 MOV EBP, ESP
00000166: 83 C4 FC ADD ESP, -4 ; char *ptr;
00000169: 8D 5D 08 LEA EBX, [EBP+8]
0000016C: 8B 03 MOV EAX, [EBX]
0000016E: 8D 5D FC LEA EBX, [EBP-4]
00000171: 89 03 MOV [EBX], EAX ; ptr=s;
_strlen_1:
;LEA EBX, [EBP-4] ; while(*ptr)
;MOV EAX, [EBX]
00000173: 89 C3 MOV EBX, EAX
00000175: 0F BE 03 MOVSX EAX, BYTE [EBX]
00000178: 09 C0 OR EAX, EAX
0000017A: 74 0A JZ short _strlen_2
;_lib_13:
0000017C: 8D 5D FC LEA EBX, [EBP-4]
0000017F: 8B 03 MOV EAX, [EBX]
00000181: 40 INC EAX
00000182: 89 03 MOV [EBX], EAX ; ++ptr;
00000184: EB ED JMP short _strlen_1
_strlen_2:
00000186: 8D 5D FC LEA EBX, [EBP-4]
00000189: 8B 03 MOV EAX, [EBX]
0000018B: 50 PUSH EAX
0000018C: 8D 45 08 LEA EAX, [EBP+8]
0000018F: 8B 18 MOV EBX, [EAX] ; s
00000191: 58 POP EAX ; ptr
00000192: 29 D8 SUB EAX, EBX ; return (ptr-s);
00000194: 89 EC MOV ESP, EBP
00000196: 5D POP EBP
00000197: C3 RETN
_toupper: ; toupper(c)
00000198: 55 PUSH EBP
00000199: 89 E5 MOV EBP, ESP
0000019B: 8D 45 08 LEA EAX, [EBP+8] ; if(c<='z' && c>='a')
0000019E: 8B 18 MOV EBX, [EAX] ; int c;
000001A0: B8 7A 00 00 00 MOV EAX, 122 ; 'z'
000001A5: E8 9D FE FF FF CALL __le
000001AA: 09 C0 OR EAX, EAX
;;JZ short _lib_16
;JZ short _lib_15
000001AC: 74 18 JZ short _toupper_ok ; condition 1 = false
;_lib_18:
;LEA EAX, [EBP+8]
;MOV EBX, [EAX]
000001AE: B8 61 00 00 00 MOV EAX, 97 ; 'a'
000001B3: E8 96 FE FF FF CALL __ge
000001B8: 09 C0 OR EAX, EAX
;;JZ short _lib_16
;JZ short _lib_15
000001BA: 74 0A JZ short _toupper_ok ; condition 2 = false
;_lib_19:
;MOV EAX, 1
;eax = 1
;;JMP short _lib_17
;JMP short _lib_20
;_lib_16:
;XOR EAX, EAX
;_lib_17:
;OR EAX, EAX
;JZ short _lib_15
;_lib_20:
;LEA EAX, [EBP+8] ; condition 1 & 2 = true
;MOV EBX, [EAX] ; int c
000001BC: B8 20 00 00 00 MOV EAX, 32
000001C1: 93 XCHG EAX, EBX
000001C2: 29 D8 SUB EAX, EBX ; return (c-32);
000001C4: 5D POP EBP
000001C5: C3 RETN
;_lib_15:
_toupper_ok:
;LEA EBX, [EBP+8]
;MOV EAX, [EBX]
;ebx = int c
000001C6: 93 XCHG EAX, EBX ; return (c);
000001C7: 5D POP EBP
000001C8: C3 RETN
_atoi:
000001C9: 55 PUSH EBP
000001CA: 89 E5 MOV EBP, ESP
000001CC: 83 C4 F8 ADD ESP, -8
_lib_22:
000001CF: 8D 45 08 LEA EAX, [EBP+8]
000001D2: 89 C3 MOV EBX, EAX
000001D4: 8B 03 MOV EAX, [EBX]
000001D6: 89 C3 MOV EBX, EAX
000001D8: 0F BE 03 MOVSX EAX,BYTE [EBX]
000001DB: 50 PUSH EAX
000001DC: B1 01 MOV CL, 1
000001DE: E8 CF 0C 00 00 CALL _isspace
000001E3: 83 C4 04 ADD ESP, 4
000001E6: 09 C0 OR EAX, EAX
000001E8: 75 02 JNE short _lib_24
000001EA: EB 0C JMP short _lib_23
_lib_24:
000001EC: 8D 45 08 LEA EAX, [EBP+8]
000001EF: 89 C3 MOV EBX, EAX
000001F1: 8B 03 MOV EAX, [EBX]
000001F3: 40 INC EAX
000001F4: 89 03 MOV [EBX], EAX
000001F6: EB D7 JMP short _lib_22
_lib_23:
000001F8: 8D 45 FC LEA EAX, [EBP-4]
000001FB: 89 C3 MOV EBX, EAX
000001FD: B8 01 00 00 00 MOV EAX, 1
00000202: 89 03 MOV [EBX], EAX
00000204: 8D 45 08 LEA EAX, [EBP+8]
00000207: 89 C3 MOV EBX, EAX
00000209: 8B 03 MOV EAX, [EBX]
0000020B: 89 C3 MOV EBX, EAX
0000020D: 0F BE 03 MOVSX EAX,BYTE [EBX]
00000210: EB 18 JMP short _lib_27
_lib_28:
00000212: 8D 45 FC LEA EAX, [EBP-4]
00000215: 89 C3 MOV EBX, EAX
00000217: B8 FF FF FF FF MOV EAX, -1
0000021C: 89 03 MOV [EBX], EAX
_lib_29:
0000021E: 8D 45 08 LEA EAX, [EBP+8]
00000221: 89 C3 MOV EBX, EAX
00000223: 8B 03 MOV EAX, [EBX]
00000225: 40 INC EAX
00000226: 89 03 MOV [EBX], EAX
00000228: EB 19 JMP short _lib_26
_lib_27:
0000022A: E8 33 FE FF FF CALL __switch
0000022F: 12 02 00 00 DD _lib_28
00000233: 2D 00 00 00 DD 45
00000237: 1E 02 00 00 DD _lib_29
0000023B: 2B 00 00 00 DD 43
0000023F: 00 00 00 00 DD 0
_lib_26:
00000243: 8D 45 F8 LEA EAX, [EBP-8]
00000246: 89 C3 MOV EBX, EAX
00000248: 31 C0 XOR EAX, EAX
0000024A: 89 03 MOV [EBX], EAX
_lib_30:
0000024C: 8D 45 08 LEA EAX, [EBP+8]
0000024F: 89 C3 MOV EBX, EAX
00000251: 8B 03 MOV EAX, [EBX]
00000253: 89 C3 MOV EBX, EAX
00000255: 0F BE 03 MOVSX EAX,BYTE [EBX]
00000258: 50 PUSH EAX
00000259: B1 01 MOV CL, 1
0000025B: E8 BC 0B 00 00 CALL _isdigit
00000260: 83 C4 04 ADD ESP, 4
00000263: 09 C0 OR EAX, EAX
00000265: 75 02 JNE short _lib_32
00000267: EB 35 JMP short _lib_31
_lib_32:
00000269: 8D 45 F8 LEA EAX, [EBP-8]
0000026C: 50 PUSH EAX
0000026D: 8D 45 F8 LEA EAX, [EBP-8]
00000270: 89 C3 MOV EBX, EAX
00000272: 8B 03 MOV EAX, [EBX]
00000274: BB 0A 00 00 00 MOV EBX, 10
00000279: F7 EB IMUL EBX
0000027B: 50 PUSH EAX
0000027C: 8D 45 08 LEA EAX, [EBP+8]
0000027F: 89 C3 MOV EBX, EAX
00000281: 8B 03 MOV EAX, [EBX]
00000283: 40 INC EAX
00000284: 89 03 MOV [EBX], EAX
00000286: 48 DEC EAX
00000287: 89 C3 MOV EBX, EAX
00000289: 0F BE 03 MOVSX EAX,BYTE [EBX]
0000028C: 5B POP EBX
0000028D: 01 D8 ADD EAX, EBX
0000028F: 89 C3 MOV EBX, EAX
00000291: B8 30 00 00 00 MOV EAX, 48
00000296: 93 XCHG EAX, EBX
00000297: 29 D8 SUB EAX, EBX
00000299: 5B POP EBX
0000029A: 89 03 MOV [EBX], EAX
0000029C: EB AE JMP short _lib_30
_lib_31:
0000029E: 8D 45 FC LEA EAX, [EBP-4]
000002A1: 89 C3 MOV EBX, EAX
000002A3: 8B 03 MOV EAX, [EBX]
000002A5: 50 PUSH EAX
000002A6: 8D 45 F8 LEA EAX, [EBP-8]
000002A9: 89 C3 MOV EBX, EAX
000002AB: 8B 03 MOV EAX, [EBX]
000002AD: 5B POP EBX
000002AE: F7 EB IMUL EBX
000002B0: 89 EC MOV ESP, EBP
000002B2: 5D POP EBP
000002B3: C3 RETN
_atoib:
000002B4: 55 PUSH EBP
000002B5: 89 E5 MOV EBP, ESP
000002B7: 83 C4 F8 ADD ESP, -8
000002BA: 8D 45 FC LEA EAX, [EBP-4]
000002BD: 89 C3 MOV EBX, EAX
000002BF: 31 C0 XOR EAX, EAX
000002C1: 89 03 MOV [EBX], EAX
_lib_34:
000002C3: 8D 45 0C LEA EAX, [EBP+12]
000002C6: 89 C3 MOV EBX, EAX
000002C8: 8B 03 MOV EAX, [EBX]
000002CA: 89 C3 MOV EBX, EAX
000002CC: 0F BE 03 MOVSX EAX, BYTE [EBX]
000002CF: 50 PUSH EAX
000002D0: B1 01 MOV CL, 1
000002D2: E8 DB 0B 00 00 CALL _isspace
000002D7: 83 C4 04 ADD ESP, 4
000002DA: 09 C0 OR EAX, EAX
000002DC: 75 02 JNE short _lib_36
000002DE: EB 0C JMP short _lib_35
_lib_36:
000002E0: 8D 45 0C LEA EAX, [EBP+12]
000002E3: 89 C3 MOV EBX, EAX
000002E5: 8B 03 MOV EAX, [EBX]
000002E7: 40 INC EAX
000002E8: 89 03 MOV [EBX], EAX
000002EA: EB D7 JMP short _lib_34
_lib_35:
_lib_37:
000002EC: 8D 45 F8 LEA EAX, [EBP-8]
000002EF: 50 PUSH EAX
000002F0: 8D 45 0C LEA EAX, [EBP+12]
000002F3: 89 C3 MOV EBX, EAX
000002F5: 8B 03 MOV EAX, [EBX]
000002F7: 40 INC EAX
000002F8: 89 03 MOV [EBX], EAX
000002FA: 48 DEC EAX
000002FB: 89 C3 MOV EBX, EAX
000002FD: 0F BE 03 MOVSX EAX, BYTE [EBX]
00000300: BB 7F 00 00 00 MOV EBX, 127
00000305: 21 D8 AND EAX, EBX
00000307: 5B POP EBX
00000308: 89 03 MOV [EBX], EAX
0000030A: 89 C3 MOV EBX, EAX
0000030C: B8 30 00 00 00 MOV EAX, 48
00000311: E8 38 FD FF FF CALL __ge
00000316: 09 C0 OR EAX, EAX
00000318: 75 05 JNE short _lib_39
0000031A: E9 BB 00 00 00 JMP _lib_38
_lib_39:
0000031F: 8D 45 F8 LEA EAX, [EBP-8]
00000322: 89 C3 MOV EBX, EAX
00000324: 8B 03 MOV EAX, [EBX]
00000326: 89 C3 MOV EBX, EAX
00000328: B8 61 00 00 00 MOV EAX, 97
0000032D: E8 1C FD FF FF CALL __ge
00000332: 09 C0 OR EAX, EAX
00000334: 75 02 JNE short _lib_41
00000336: EB 17 JMP short _lib_40
_lib_41:
00000338: 8D 45 F8 LEA EAX, [EBP-8]
0000033B: 50 PUSH EAX
0000033C: 89 C3 MOV EBX, EAX
0000033E: 8B 03 MOV EAX, [EBX]
00000340: 89 C3 MOV EBX, EAX
00000342: B8 57 00 00 00 MOV EAX, 87
00000347: 93 XCHG EAX, EBX
00000348: 29 D8 SUB EAX, EBX
0000034A: 5B POP EBX
0000034B: 89 03 MOV [EBX], EAX
0000034D: EB 45 JMP short _lib_42
_lib_40:
0000034F: 8D 45 F8 LEA EAX, [EBP-8]
00000352: 89 C3 MOV EBX, EAX
00000354: 8B 03 MOV EAX, [EBX]
00000356: 89 C3 MOV EBX, EAX
00000358: B8 41 00 00 00 MOV EAX, 65
0000035D: E8 EC FC FF FF CALL __ge
00000362: 09 C0 OR EAX, EAX
00000364: 75 02 JNE short _lib_44
00000366: EB 17 JMP short _lib_43
_lib_44:
00000368: 8D 45 F8 LEA EAX, [EBP-8]
0000036B: 50 PUSH EAX
0000036C: 89 C3 MOV EBX, EAX
0000036E: 8B 03 MOV EAX, [EBX]
00000370: 89 C3 MOV EBX, EAX
00000372: B8 37 00 00 00 MOV EAX, 55
00000377: 93 XCHG EAX, EBX
00000378: 29 D8 SUB EAX, EBX
0000037A: 5B POP EBX
0000037B: 89 03 MOV [EBX], EAX
0000037D: EB 15 JMP short _lib_45
_lib_43:
0000037F: 8D 45 F8 LEA EAX, [EBP-8]
00000382: 50 PUSH EAX
00000383: 89 C3 MOV EBX, EAX
00000385: 8B 03 MOV EAX, [EBX]
00000387: 89 C3 MOV EBX, EAX
00000389: B8 30 00 00 00 MOV EAX, 48
0000038E: 93 XCHG EAX, EBX
0000038F: 29 D8 SUB EAX, EBX
00000391: 5B POP EBX
00000392: 89 03 MOV [EBX], EAX
_lib_45:
_lib_42:
00000394: 8D 45 F8 LEA EAX, [EBP-8]
00000397: 89 C3 MOV EBX, EAX
00000399: 8B 03 MOV EAX, [EBX]
0000039B: 50 PUSH EAX
0000039C: 8D 45 08 LEA EAX, [EBP+8]
0000039F: 89 C3 MOV EBX, EAX
000003A1: 8B 03 MOV EAX, [EBX]
000003A3: 5B POP EBX
000003A4: E8 A5 FC FF FF CALL __ge
000003A9: 09 C0 OR EAX, EAX
000003AB: 75 02 JNE short _lib_47
000003AD: EB 02 JMP short _lib_46
_lib_47:
000003AF: EB 29 JMP short _lib_38
_lib_46:
000003B1: 8D 45 FC LEA EAX, [EBP-4]
000003B4: 50 PUSH EAX
000003B5: 8D 45 08 LEA EAX, [EBP+8]
000003B8: 89 C3 MOV EBX, EAX
000003BA: 8B 03 MOV EAX, [EBX]
000003BC: 50 PUSH EAX
000003BD: 8D 45 FC LEA EAX, [EBP-4]
000003C0: 89 C3 MOV EBX, EAX
000003C2: 8B 03 MOV EAX, [EBX]
000003C4: 5B POP EBX
000003C5: F7 EB IMUL EBX
000003C7: 50 PUSH EAX
000003C8: 8D 45 F8 LEA EAX, [EBP-8]
000003CB: 89 C3 MOV EBX, EAX
000003CD: 8B 03 MOV EAX, [EBX]
000003CF: 5B POP EBX
000003D0: 01 D8 ADD EAX, EBX
000003D2: 5B POP EBX
000003D3: 89 03 MOV [EBX], EAX
000003D5: E9 12 FF FF FF JMP _lib_37
_lib_38:
000003DA: 8D 45 FC LEA EAX, [EBP-4]
000003DD: 89 C3 MOV EBX, EAX
000003DF: 8B 03 MOV EAX, [EBX]
000003E1: 89 EC MOV ESP, EBP
000003E3: 5D POP EBP
000003E4: C3 RETN
_fgets: ; fgets(str,size,fd)
000003E5: 55 PUSH EBP
000003E6: 89 E5 MOV EBP, ESP ; return (_gets(str,size,fd,1));
000003E8: 8D 5D 10 LEA EBX, [EBP+16]
000003EB: 8B 03 MOV EAX, [EBX]
000003ED: 50 PUSH EAX
000003EE: 8D 5D 0C LEA EBX, [EBP+12]
000003F1: 8B 03 MOV EAX, [EBX]
000003F3: 50 PUSH EAX
000003F4: 8D 5D 08 LEA EBX, [EBP+8]
000003F7: 8B 03 MOV EAX, [EBX]
000003F9: 50 PUSH EAX
000003FA: B8 01 00 00 00 MOV EAX, 1
000003FF: 50 PUSH EAX
00000400: B1 04 MOV CL, 4
00000402: E8 1B 01 00 00 CALL __gets
00000407: 83 C4 10 ADD ESP, 16
0000040A: 5D POP EBP
0000040B: C3 RETN
_gets: ; gets(str)
0000040C: 55 PUSH EBP
0000040D: 89 E5 MOV EBP, ESP
0000040F: 83 C4 F4 ADD ESP, -12 ; size,backup,*next
00000412: C7 45 FC FF 7F 00 00 MOV DWORD [EBP-4], 32767 ; size
00000419: 8D 45 F4 LEA EAX, [EBP-12]
0000041C: 50 PUSH EAX ; *next
0000041D: 8D 5D 08 LEA EBX, [EBP+8] ; *str
00000420: 8B 03 MOV EAX, [EBX] ; str
00000422: 5B POP EBX
00000423: 89 03 MOV [EBX], EAX ; next=str;
_gets_1:
00000425: 8D 5D FC LEA EBX, [EBP-4] ; *size
00000428: 8B 03 MOV EAX, [EBX] ; ebx = *size, eax = size
0000042A: 48 DEC EAX
0000042B: 89 03 MOV [EBX], EAX
0000042D: 09 C0 OR EAX,EAX
0000042F: 75 05 JNZ short _gets_2 ; while(--size>0)
00000431: E9 D6 00 00 00 JMP _gets_13
_gets_2:
00000436: 8D 5D F4 LEA EBX, [EBP-12] ; (*next=OS_getc())
00000439: 8B 03 MOV EAX, [EBX]
0000043B: 50 PUSH EAX ; *next
0000043C: B1 00 MOV CL,0 ; no arguments
0000043E: E8 C2 12 00 00 CALL _OS_getc
00000443: 5B POP EBX ; *next = *str
00000444: 88 03 MOV [EBX], AL ; *str=OS_getc()
00000446: E9 96 00 00 00 JMP _gets_12 ; {switch (*next=OS_getc())
_gets_3:
0000044B: 8D 45 F4 LEA EAX, [EBP-12] ; **next
0000044E: 8B 18 MOV EBX, [EAX] ; *next (address)
00000450: 31 C0 XOR EAX, EAX ; NULL
00000452: 88 03 MOV [EBX], AL ; *next = NULL (value)
00000454: 53 PUSH EBX
00000455: 8D 45 08 LEA EAX, [EBP+8] ; *str
00000458: 8B 18 MOV EBX, [EAX] ; eax = *str, ebx = str
0000045A: 58 POP EAX ; next
0000045B: E8 CB FB FF FF CALL __eq ; if(next==str) return (NULL);
00000460: 09 C0 OR EAX, EAX
00000462: 74 02 JZ short _gets_4 ; false (eax = 0)
; true (eax = 1)
; return (NULL);
00000464: 31 DB XOR EBX, EBX ; NULL
_gets_4: ; return (str);
00000466: 89 D8 MOV EAX, EBX
00000468: 89 EC MOV ESP, EBP
0000046A: 5D POP EBP
0000046B: C3 RETN
_gets_5: ; case '\n'
0000046C: 8D 45 F4 LEA EAX, [EBP-12] ; **next
0000046F: 8B 18 MOV EBX, [EAX] ; *next (address)
00000471: 31 C0 XOR EAX, EAX ; NULL
00000473: 89 03 MOV [EBX],EAX ; *next=NULL; (value)
00000475: 8D 5D 08 LEA EBX, [EBP+8] ; *str (ebx = str address)
00000478: 8B 03 MOV EAX, [EBX] ; return (str);
0000047A: 89 EC MOV ESP, EBP
0000047C: 5D POP EBP
0000047D: C3 RETN
_gets_6: ; case '\b'
0000047E: 8D 5D F4 LEA EBX, [EBP-12] ; *next
00000481: 8B 03 MOV EAX, [EBX] ; ebx = *next, eax = next
00000483: 50 PUSH EAX
00000484: 8D 5D 08 LEA EBX, [EBP+8] ; *str
00000487: 8B 03 MOV EAX, [EBX] ; ebx = *str, eax = str
00000489: 5B POP EBX ; next (*next, string address/pos)
0000048A: E8 87 FB FF FF CALL __ugt ; if(next>str) backup=1;
;OR EAX,EAX
;JNZ short _lib_63 ; true (eax=1)
;JMP short _lib_62 ; false (eax=0)
;_lib_63: ; backup=1;
;LEA EBX, [EBP-8] ; *backup
;MOV EAX, 1 ; ebx = *backup (pointer to backup val)
;MOV [EBX], EAX ; backup=1
;;JMP short _lib_64
;JMP short _gets_8
;_lib_62: ; else backup=0;
0000048F: 8D 5D F8 LEA EBX, [EBP-8] ; ebx = *backup
;XOR EAX, EAX ; 0
00000492: 89 03 MOV [EBX], EAX ; backup = 1 or backup = 0
;_lib_64:
00000494: EB 14 JMP short _gets_8 ; goto backout;
_gets_7: ; case '\r' ; WIPE
00000496: 8D 45 F8 LEA EAX, [EBP-8] ; *backup ; backup=next-str;
00000499: 50 PUSH EAX
0000049A: 8D 5D F4 LEA EBX, [EBP-12] ; *next
;MOV EAX, [EBX] ; ebx = *next, eax = next
;PUSH EAX
0000049D: FF 33 PUSH DWORD [EBX]
0000049F: 8D 45 08 LEA EAX, [EBP+8] ; *str
000004A2: 8B 18 MOV EBX, [EAX] ; eax = *str, ebx = str
000004A4: 58 POP EAX ; next
000004A5: 29 D8 SUB EAX, EBX ; next-str
000004A7: 5B POP EBX ; *backup
000004A8: 89 03 MOV [EBX], EAX ; ebx = *backup, eax = backup (value)
; backup=next-str;
_gets_8: ; backout:
;JMP short _lib_67 ; if(0/*iscons(fd)*/)
000004AA: 8D 5D FC LEA EBX, [EBP-4] ; *size
;MOV EAX, [EBX]
;INC EAX
;MOV [EBX], EAX
000004AD: FF 03 INC DWORD [EBX] ; ++size;
_gets_9: ; while(backup--)
000004AF: 8D 5D F8 LEA EBX, [EBP-8] ; *backup
000004B2: 8B 03 MOV EAX, [EBX]
000004B4: 48 DEC EAX
000004B5: 89 03 MOV [EBX], EAX
000004B7: 40 INC EAX
;OR EAX, EAX
000004B8: 75 05 JNZ short _gets_10
;JMP short _lib_69
000004BA: E9 66 FF FF FF JMP _gets_1
_gets_10: ; puts("\b \b");
000004BF: B8 1E 05 00 00 MOV EAX, _gets_14 ; "\b \b"
000004C4: 50 PUSH EAX
000004C5: E8 AE FB FF FF CALL _puts
000004CA: 58 POP EAX ; add esp, 4
000004CB: 8D 5D F4 LEA EBX, [EBP-12] ; *next
;MOV EAX, [EBX] ; ebx = *next (address)
;DEC EAX
;MOV [EBX], EAX
000004CE: FF 0B DEC DWORD [EBX] ; --next
000004D0: 8D 5D FC LEA EBX, [EBP-4] ; *size
;MOV EAX, [EBX] ; ebx = *size
;INC EAX
;MOV [EBX], EAX
000004D3: FF 03 INC DWORD [EBX] ; ++size
000004D5: EB D8 JMP short _gets_9
;_lib_69:
;JMP _gets_1
;_lib_67:
_gets_11: ; default:
000004D7: 8D 5D F4 LEA EBX, [EBP-12] ; **next
;MOV EAX, [EBX] ; ebx = *next
;INC EAX ; ++next
;MOV [EBX], EAX
000004DA: FF 03 INC DWORD [EBX]
;JMP short _lib_55
000004DC: E9 44 FF FF FF jmp _gets_1
_gets_12: ; {switch (*next=OS_getc())
000004E1: E8 7C FB FF FF CALL __switch
000004E6: 4B 04 00 00 DD _gets_3 ; case EOF
000004EA: FF FF FF FF DD -1
000004EE: 6C 04 00 00 DD _gets_5 ; case '\n'
000004F2: 0A 00 00 00 DD 10
000004F6: 7E 04 00 00 DD _gets_6 ; case '\b' ; case RUB
000004FA: 08 00 00 00 DD 8
000004FE: 96 04 00 00 DD _gets_7 ; case '\r' ; case WIPE
00000502: 18 00 00 00 DD 24
00000506: 00 00 00 00 DD 0 ; case default
0000050A: EB CB JMP short _gets_11 ; default: ++next;
;_lib_55:
;JMP _gets_1
_gets_13:
0000050C: 8D 45 F4 LEA EAX, [EBP-12] ; **next
0000050F: 8B 18 MOV EBX, [EAX] ; ebx = *next, eax = **next
00000511: 31 C0 XOR EAX, EAX ; NULL
00000513: 88 03 MOV [EBX], AL ; *next = NULL;
00000515: 8D 5D 08 LEA EBX, [EBP+8] ; **str
00000518: 8B 03 MOV EAX, [EBX] ; ebx = *str, eax = str
0000051A: 89 EC MOV ESP, EBP ; return (str);
0000051C: 5D POP EBP
0000051D: C3 RETN
0000051E: 08 20 08 00 _gets_14: DB 8,32,8,0 ; "\b \b"
__gets: ; _gets(str,size,fd,nl)
00000522: 55 PUSH EBP
00000523: 89 E5 MOV EBP, ESP
00000525: 83 C4 F8 ADD ESP, -8 ; int backup; char *next;
00000528: 8D 5D 14 LEA EBX, [EBP+20]
0000052B: 8B 03 MOV EAX, [EBX]
0000052D: 8D 5D F8 LEA EBX, [EBP-8]
00000530: 89 03 MOV [EBX], EAX ; next=str;
_lib_51: ; while(--size>0)
00000532: 8D 5D 10 LEA EBX, [EBP+16]
00000535: 8B 03 MOV EAX, [EBX]
00000537: 48 DEC EAX
00000538: 89 03 MOV [EBX], EAX
0000053A: 09 C0 OR EAX, EAX
0000053C: 75 12 JNZ short _lib_53
_lib_52:
0000053E: 8D 45 F8 LEA EAX, [EBP-8]
00000541: 8B 18 MOV EBX, [EAX]
00000543: 31 C0 XOR EAX, EAX ; 0
00000545: 88 03 MOV [EBX], AL ; *next = NULL;
00000547: 8D 5D 14 LEA EBX, [EBP+20]
0000054A: 8B 03 MOV EAX, [EBX] ; return (str);
0000054C: 89 EC MOV ESP, EBP
0000054E: 5D POP EBP
0000054F: C3 RETN
_lib_53:
00000550: 8D 5D F8 LEA EBX, [EBP-8]
00000553: 8B 03 MOV EAX, [EBX]
00000555: 50 PUSH EAX ; next
00000556: 8D 5D 0C LEA EBX, [EBP+12] ; fd
00000559: 8B 03 MOV EAX, [EBX]
0000055B: 50 PUSH EAX
0000055C: B1 01 MOV CL,1
0000055E: E8 71 11 00 00 CALL _OS_fgetc
00000563: 83 C4 04 ADD ESP, 4
00000566: 5B POP EBX
00000567: 88 03 MOV [EBX], AL ; *next=fgetc(fd)
00000569: EB 77 JMP short _lib_56 ; jump to {switch (*next=fgetc(fd))
_lib_57: ; {case EOF:
0000056B: 8D 45 F8 LEA EAX, [EBP-8]
0000056E: 8B 18 MOV EBX, [EAX]
00000570: 31 C0 XOR EAX, EAX
00000572: 88 03 MOV [EBX], AL ; *next=NULL;
;LEA EAX, [EBP-8]
;MOV EBX, [EAX]
00000574: 53 PUSH EBX
00000575: 8D 5D 14 LEA EBX, [EBP+20]
00000578: 8B 03 MOV EAX, [EBX]
0000057A: 5B POP EBX
0000057B: E8 AB FA FF FF CALL __eq ; if(next==str) return (NULL);
00000580: 09 C0 OR EAX, EAX
00000582: 74 04 JZ short _lib_58
;_lib_59:
00000584: 31 C0 XOR EAX, EAX ; return (NULL);
;MOV ESP, EBP
;POP EBP
;RETN
00000586: EB 05 JMP short _lib_59
_lib_58:
00000588: 8D 5D 14 LEA EBX, [EBP+20]
0000058B: 8B 03 MOV EAX, [EBX] ; return (str);
_lib_59:
0000058D: 89 EC MOV ESP, EBP
0000058F: 5D POP EBP
00000590: C3 RETN
_lib_60: ; case '\n':
00000591: 8D 5D F8 LEA EBX, [EBP-8]
00000594: 8B 03 MOV EAX, [EBX]
00000596: 50 PUSH EAX
00000597: 8D 5D 08 LEA EBX, [EBP+8] ; nl
0000059A: 8B 03 MOV EAX, [EBX]
0000059C: 5B POP EBX
0000059D: 01 C3 ADD EBX, EAX
0000059F: 31 C0 XOR EAX, EAX ; 0
000005A1: 89 03 MOV [EBX], EAX ; *(next+nl)=NULL;
000005A3: 8D 5D 14 LEA EBX, [EBP+20]
000005A6: 8B 03 MOV EAX, [EBX] ; return (str);
;MOV ESP, EBP
;POP EBP
;RETN
000005A8: EB E3 JMP short _lib_59
_lib_61: ; case RUB:
000005AA: 8D 5D F8 LEA EBX, [EBP-8]
000005AD: 8B 03 MOV EAX, [EBX]
000005AF: 50 PUSH EAX
000005B0: 8D 5D 14 LEA EBX, [EBP+20]
000005B3: 8B 03 MOV EAX, [EBX] ; str
000005B5: 5B POP EBX
000005B6: E8 5B FA FF FF CALL __ugt ; if(next>str) backup=1;
;OR EAX, EAX
;JZ short _lib_62 ; else
;_lib_63:
000005BB: 8D 5D FC LEA EBX, [EBP-4]
;MOV EAX, 1
;eax = 1
;MOV [EBX], EAX
;JMP short _lib_64
;_lib_62: ; else backup=0;
;LEA EBX,[EBP-4]
;XOR EAX,EAX
;eax = 0
000005BE: 89 03 MOV [EBX],EAX
;_lib_64:
000005C0: EB 13 JMP short _lib_65 ; goto backout;
_lib_66: ; case WIPE: /* \r */
000005C2: 8D 5D F8 LEA EBX, [EBP-8]
000005C5: 8B 03 MOV EAX, [EBX]
000005C7: 50 PUSH EAX ; next
000005C8: 8D 45 14 LEA EAX, [EBP+20]
000005CB: 8B 18 MOV EBX, [EAX] ; str
000005CD: 58 POP EAX
000005CE: 29 D8 SUB EAX, EBX ; next-str;
000005D0: 8D 5D FC LEA EBX, [EBP-4]
000005D3: 89 03 MOV [EBX], EAX ; backup=next-str;
_lib_64:
_lib_65:
; backout: (if (0))
_lib_67: ; continue;
_lib_71: ; ++next;
000005D5: 8D 5D F8 LEA EBX, [EBP-8]
000005D8: 8B 03 MOV EAX, [EBX]
000005DA: 40 INC EAX
000005DB: 89 03 MOV [EBX], EAX
;JMP _lib_55
000005DD: E9 50 FF FF FF JMP _lib_51
_lib_56: ; {switch (*next=fgetc(fd))
000005E2: E8 7B FA FF FF CALL __switch
000005E7: 6B 05 00 00 DD _lib_57 ; {case EOF:
000005EB: FF FF FF FF DD -1
000005EF: 91 05 00 00 DD _lib_60 ; case '\n':
000005F3: 0A 00 00 00 DD 10
000005F7: AA 05 00 00 DD _lib_61 ; case RUB:
000005FB: 08 00 00 00 DD 8
000005FF: C2 05 00 00 DD _lib_66 ; case WIPE: /* \r */
00000603: 18 00 00 00 DD 24
00000607: 00 00 00 00 DD 0
0000060B: EB C8 JMP short _lib_71 ; default:
;_lib_55:
;JMP _lib_51
_fprintf:
0000060D: 55 PUSH EBP
0000060E: 89 E5 MOV EBP, ESP
00000610: 83 C4 FC ADD ESP, -4
00000613: 8D 45 FC LEA EAX, [EBP-4]
00000616: 50 PUSH EAX