This is SBCL 2.0.2, an implementation of ANSI Common Lisp.
More information about SBCL is available at .
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* ; compiling file "/home/gilbert/lisp/clex/c/benchc.lisp" (written 29 DEC 2021 10:30:18 PM):
; compiling (IN-PACKAGE :CL-USER)
; compiling (DEFUN SCAN ...)
; compiling (DEFUN READ-FILE-AS-STRING ...)
; compiling (DEFUN FOO ...)
; compiling (DISASSEMBLE (QUOTE SCAN))
; compiling (PRINT (MULTIPLE-VALUE-LIST #))
; wrote /home/gilbert/lisp/clex/c/benchc.fasl
; compilation finished in 0:00:00.010
; disassembly for SCAN
; Size: 416 bytes. Origin: #x52C56E2D                         ; SCAN
; E2D:       498B4510         MOV RAX, [R13+16]               ; thread.binding-stack-pointer
; E31:       488945F8         MOV [RBP-8], RAX
; E35:       BA00000000       MOV EDX, 0
; E3A:       31C9             XOR ECX, ECX
; E3C:       4531D2           XOR R10D, R10D
; E3F:       4531C0           XOR R8D, R8D
; E42:       4531C9           XOR R9D, R9D
; E45:       31F6             XOR ESI, ESI
; E47:       660F1F840000000000 NOP
; E50: L0:   4839CF           CMP RDI, RCX
; E53:       7522             JNE L4
; E55: L1:   488BF4           MOV RSI, RSP
; E58:       6817001050       PUSH 1343225879
; E5D:       B902000000       MOV ECX, 2
; E62: L2:   4883F902         CMP RCX, 2
; E66:       750A             JNE L3
; E68:       488B56F8         MOV RDX, [RSI-8]
; E6C:       488BE5           MOV RSP, RBP
; E6F:       F8               CLC
; E70:       5D               POP RBP
; E71:       C3               RET
; E72: L3:   E9F99C4AFF       JMP #x52100B70                  ; RETURN-MULTIPLE
; E77: L4:   8B444B01         MOV EAX, [RBX+RCX*2+1]
; E7B:       8BD0             MOV EDX, EAX
; E7D:       488D4102         LEA RAX, [RCX+2]
; E81:       488BC8           MOV RCX, RAX
; E84:       4883FA39         CMP RDX, 57
; E88:       77C6             JNBE L0
; E8A:       4883FA2F         CMP RDX, 47
; E8E:       76C0             JBE L0
; E90:       488BF1           MOV RSI, RCX
; E93:       660F1F840000000000 NOP
; E9C:       0F1F4000         NOP
; EA0: L5:   4839CF           CMP RDI, RCX
; EA3:       74B0             JEQ L1
; EA5:       8B444B01         MOV EAX, [RBX+RCX*2+1]
; EA9:       8BD0             MOV EDX, EAX
; EAB:       488D4102         LEA RAX, [RCX+2]
; EAF:       488BC8           MOV RCX, RAX
; EB2:       4883FA77         CMP RDX, 119
; EB6:       0F86F6000000     JBE L15
; EBC:       4883FA78         CMP RDX, 120
; EC0:       778E             JNBE L0
; EC2:       4839CF           CMP RDI, RCX
; EC5:       748E             JEQ L1
; EC7:       8B444B01         MOV EAX, [RBX+RCX*2+1]
; ECB:       8BD0             MOV EDX, EAX
; ECD:       488D4102         LEA RAX, [RCX+2]
; ED1:       488BC8           MOV RCX, RAX
; ED4:       4883FA39         CMP RDX, 57
; ED8:       0F8772FFFFFF     JNBE L0
; EDE:       4883FA2F         CMP RDX, 47
; EE2:       0F8668FFFFFF     JBE L0
; EE8:       4C8BD1           MOV R10, RCX
; EEB:       0F1F440000       NOP
; EF0: L6:   4839CF           CMP RDI, RCX
; EF3:       7517             JNE L8
; EF5:       4C8BCE           MOV R9, RSI
; EF8:       4C8BC1           MOV R8, RCX
; EFB: L7:   488BF4           MOV RSI, RSP
; EFE:       4151             PUSH R9
; F00:       4150             PUSH R8
; F02:       B904000000       MOV ECX, 4
; F07:       E956FFFFFF       JMP L2
; F0C: L8:   8B444B01         MOV EAX, [RBX+RCX*2+1]
; F10:       8BD0             MOV EDX, EAX
; F12:       488D4102         LEA RAX, [RCX+2]
; F16:       488BC8           MOV RCX, RAX
; F19:       4883FA77         CMP RDX, 119
; F1D:       766D             JBE L13
; F1F:       4883FA78         CMP RDX, 120
; F23:       7608             JBE L9
; F25:       4C8BCE           MOV R9, RSI
; F28:       4C8BC1           MOV R8, RCX
; F2B:       EBCE             JMP L7
; F2D: L9:   4839CF           CMP RDI, RCX
; F30:       0F841FFFFFFF     JEQ L1
; F36:       8B444B01         MOV EAX, [RBX+RCX*2+1]
; F3A:       8BD0             MOV EDX, EAX
; F3C:       488D4102         LEA RAX, [RCX+2]
; F40:       488BC8           MOV RCX, RAX
; F43:       4883FA39         CMP RDX, 57
; F47:       77B2             JNBE L7
; F49:       4883FA2F         CMP RDX, 47
; F4D:       76AC             JBE L7
; F4F:       90               NOP
; F50: L10:  4839CF           CMP RDI, RCX
; F53:       7508             JNE L11
; F55:       4D8BCA           MOV R9, R10
; F58:       4C8BC1           MOV R8, RCX
; F5B:       EB9E             JMP L7
; F5D: L11:  8B444B01         MOV EAX, [RBX+RCX*2+1]
; F61:       8BD0             MOV EDX, EAX
; F63:       488D4102         LEA RAX, [RCX+2]
; F67:       488BC8           MOV RCX, RAX
; F6A:       4883FA39         CMP RDX, 57
; F6E:       760B             JBE L12
; F70:       4D8BCA           MOV R9, R10
; F73:       4C8BC1           MOV R8, RCX
; F76:       E980FFFFFF       JMP L7
; F7B: L12:  4883FA2F         CMP RDX, 47
; F7F:       77CF             JNBE L10
; F81:       4D8BCA           MOV R9, R10
; F84:       4C8BC1           MOV R8, RCX
; F87:       E96FFFFFFF       JMP L7
; F8C: L13:  4883FA2F         CMP RDX, 47
; F90:       7615             JBE L14
; F92:       4883FA39         CMP RDX, 57
; F96:       0F8654FFFFFF     JBE L6
; F9C:       4C8BCE           MOV R9, RSI
; F9F:       4C8BC1           MOV R8, RCX
; FA2:       E954FFFFFF       JMP L7
; FA7: L14:  4C8BCE           MOV R9, RSI
; FAA:       4C8BC1           MOV R8, RCX
; FAD:       E949FFFFFF       JMP L7
; FB2: L15:  4883FA2F         CMP RDX, 47
; FB6:       0F8694FEFFFF     JBE L0
; FBC:       4883FA39         CMP RDX, 57
; FC0:       0F878AFEFFFF     JNBE L0
; FC6:       E9D5FEFFFF       JMP L5
; FCB:       CC10             INT3 16                         ; Invalid argument count trap
(5.820326049254249d8 (1676 1679)) 
T
* ;; This is ~/.ccl-init.lisp
;; asdf:*central-registry* = ((TRUENAME "home:lisp;system;") (TRUENAME ".") #P"/home/gilbert/quicklisp/quicklisp/")
Welcome to Clozure Common Lisp Version 1.11-r16635  (LinuxX8664)!
CCL is developed and maintained by Clozure Associates. For more information
about CCL visit http://ccl.clozure.com.  To enquire about Clozure's Common Lisp
consulting services e-mail info@clozure.com or visit http://www.clozure.com.
? ;Loading #P"/home/gilbert/lisp/clex/c/benchc.lx64fsl"...;; "benchc.lisp":6289-8526
    (recover-fn-from-rip)                   ;     [7]
    (cmpl ($ 16) (% nargs))                 ;    [14]
    (jne L729)                              ;    [17]
    (pushq (% rbp))                         ;    [23]
    (movq (% rsp) (% rbp))                  ;    [24]
    (pushq (% arg_y))                       ;    [27]
    (pushq (% arg_z))                       ;    [28]
    (pushq (% save0))                       ;    [29]
    (pushq (% save1))                       ;    [31]
    (pushq (% save2))                       ;    [33]
    (pushq (% save3))                       ;    [35]
;;; (PROG ((CH #\Null) (P 0) (R.3 0) ($0.E 0) ($0.S 0) (R.2 0)) (DECLARE (TYPE FIXNUM P R.3 $0.E $0.S R.
    (movl ($ 2) (% save1.l))                ;    [37]
    (xorl (% save0.l) (% save0.l))          ;    [43]
    (pushq ($ 0))                           ;    [46]
    (xorl (% save2.l) (% save2.l))          ;    [48]
    (xorl (% save3.l) (% save3.l))          ;    [51]
    (pushq ($ 0))                           ;    [54]
;;; (= P END)
L49
    (movq (@ -16 (% rbp)) (% arg_z))        ;    [56]
    (cmpq (% arg_z) (% save0))              ;    [60]
    (je L685)                               ;    [63]
;;; (AREF INPUT P)
    (movq (@ -8 (% rbp)) (% arg_y))         ;    [69]
    (movq (% save0) (% imm0))               ;    [73]
    (shrq (% imm0))                         ;    [76]
    (movl (@ -5 (% arg_y) (% imm0)) (% imm0.l)) ;    [79]
    (shll ($ 8) (% imm0.l))                 ;    [83]
    (leaq (@ 2 (% imm0)) (% save1))         ;    [86]
;;; (+ P 1)
    (addq ($ 8) (% save0))                  ;    [90]
;;; (CHAR<= CH (CODE-CHAR (1- 58)))
    (movq (% save1) (% arg_z))              ;    [94]
    (shrq ($ 5) (% arg_z))                  ;    [97]
    (cmpq ($ #x1C8) (% arg_z))              ;   [101]
    (jg L49)                                ;   [108]
;;; (CHAR<= CH (CODE-CHAR (1- 48)))
    (movq (% save1) (% arg_z))              ;   [110]
    (shrq ($ 5) (% arg_z))                  ;   [113]
    (cmpq ($ #x178) (% arg_z))              ;   [117]
    (jle L49)                               ;   [124]
;;; (SETQ R.2 P)
    (movq (% save0) (@ -64 (% rbp)))        ;   [126]
;;; (GO 6)
    (jmpq L380)                             ;   [130]
;;; (= P END)
L128
    (movq (@ -16 (% rbp)) (% arg_z))        ;   [135]
    (cmpq (% arg_z) (% save0))              ;   [139]
    (jne L149)                              ;   [142]
;;; (SETQ $0.S R.2 $0.E P)
    (movq (@ -64 (% rbp)) (% save3))        ;   [144]
    (movq (% save0) (% save2))              ;   [148]
;;; (GO 2)
    (jmpq L653)                             ;   [151]
;;; (AREF INPUT P)
L149
    (movq (@ -8 (% rbp)) (% arg_y))         ;   [156]
    (movq (% save0) (% imm0))               ;   [160]
    (shrq (% imm0))                         ;   [163]
    (movl (@ -5 (% arg_y) (% imm0)) (% imm0.l)) ;   [166]
    (shll ($ 8) (% imm0.l))                 ;   [170]
    (leaq (@ 2 (% imm0)) (% save1))         ;   [173]
;;; (+ P 1)
    (addq ($ 8) (% save0))                  ;   [177]
;;; (CHAR<= CH (CODE-CHAR (1- 120)))
    (movq (% save1) (% arg_z))              ;   [181]
    (shrq ($ 5) (% arg_z))                  ;   [184]
    (cmpq ($ #x3B8) (% arg_z))              ;   [188]
    (jg L246)                               ;   [195]
;;; (CHAR<= CH (CODE-CHAR (1- 48)))
    (movq (% save1) (% arg_z))              ;   [197]
    (shrq ($ 5) (% arg_z))                  ;   [200]
    (cmpq ($ #x178) (% arg_z))              ;   [204]
    (jg L218)                               ;   [211]
;;; (SETQ $0.S R.2 $0.E P)
    (movq (@ -64 (% rbp)) (% save3))        ;   [213]
    (movq (% save0) (% save2))              ;   [217]
;;; (GO 2)
    (jmpq L653)                             ;   [220]
;;; (CHAR<= CH (CODE-CHAR (1- 58)))
L218
    (movq (% save1) (% arg_z))              ;   [225]
    (shrq ($ 5) (% arg_z))                  ;   [228]
    (cmpq ($ #x1C8) (% arg_z))              ;   [232]
    (jle L128)                              ;   [239]
;;; (SETQ $0.S R.2 $0.E P)
    (movq (@ -64 (% rbp)) (% save3))        ;   [241]
    (movq (% save0) (% save2))              ;   [245]
;;; (GO 2)
    (jmpq L653)                             ;   [248]
;;; (CHAR<= CH (CODE-CHAR (1- 121)))
L246
    (movq (% save1) (% arg_z))              ;   [253]
    (shrq ($ 5) (% arg_z))                  ;   [256]
    (cmpq ($ #x3C0) (% arg_z))              ;   [260]
    (jle L583)                              ;   [267]
;;; (SETQ $0.S R.2 $0.E P)
    (movq (@ -64 (% rbp)) (% save3))        ;   [273]
    (movq (% save0) (% save2))              ;   [277]
;;; (GO 2)
    (jmpq L653)                             ;   [280]
;;; (= P END)
L278
    (movq (@ -16 (% rbp)) (% arg_z))        ;   [285]
    (cmpq (% arg_z) (% save0))              ;   [289]
    (jne L299)                              ;   [292]
;;; (SETQ $0.S R.3 $0.E P)
    (movq (@ -56 (% rbp)) (% save3))        ;   [294]
    (movq (% save0) (% save2))              ;   [298]
;;; (GO 2)
    (jmpq L653)                             ;   [301]
;;; (AREF INPUT P)
L299
    (movq (@ -8 (% rbp)) (% arg_y))         ;   [306]
    (movq (% save0) (% imm0))               ;   [310]
    (shrq (% imm0))                         ;   [313]
    (movl (@ -5 (% arg_y) (% imm0)) (% imm0.l)) ;   [316]
    (shll ($ 8) (% imm0.l))                 ;   [320]
    (leaq (@ 2 (% imm0)) (% save1))         ;   [323]
;;; (+ P 1)
    (addq ($ 8) (% save0))                  ;   [327]
;;; (CHAR<= CH (CODE-CHAR (1- 58)))
    (movq (% save1) (% arg_z))              ;   [331]
    (shrq ($ 5) (% arg_z))                  ;   [334]
    (cmpq ($ #x1C8) (% arg_z))              ;   [338]
    (jg L368)                               ;   [345]
;;; (CHAR<= CH (CODE-CHAR (1- 48)))
    (movq (% save1) (% arg_z))              ;   [347]
    (shrq ($ 5) (% arg_z))                  ;   [350]
    (cmpq ($ #x178) (% arg_z))              ;   [354]
    (jg L278)                               ;   [361]
;;; (SETQ $0.S R.3 $0.E P)
    (movq (@ -56 (% rbp)) (% save3))        ;   [363]
    (movq (% save0) (% save2))              ;   [367]
;;; (GO 2)
    (jmpq L653)                             ;   [370]
;;; (SETQ $0.S R.3 $0.E P)
L368
    (movq (@ -56 (% rbp)) (% save3))        ;   [375]
    (movq (% save0) (% save2))              ;   [379]
;;; (GO 2)
    (jmpq L653)                             ;   [382]
;;; (= P END)
L380
    (movq (@ -16 (% rbp)) (% arg_z))        ;   [387]
    (cmpq (% arg_z) (% save0))              ;   [391]
    (je L685)                               ;   [394]
;;; (AREF INPUT P)
    (movq (@ -8 (% rbp)) (% arg_y))         ;   [400]
    (movq (% save0) (% imm0))               ;   [404]
    (shrq (% imm0))                         ;   [407]
    (movl (@ -5 (% arg_y) (% imm0)) (% imm0.l)) ;   [410]
    (shll ($ 8) (% imm0.l))                 ;   [414]
    (leaq (@ 2 (% imm0)) (% save1))         ;   [417]
;;; (+ P 1)
    (addq ($ 8) (% save0))                  ;   [421]
;;; (CHAR<= CH (CODE-CHAR (1- 120)))
    (movq (% save1) (% arg_z))              ;   [425]
    (shrq ($ 5) (% arg_z))                  ;   [428]
    (cmpq ($ #x3B8) (% arg_z))              ;   [432]
    (jg L475)                               ;   [439]
;;; (CHAR<= CH (CODE-CHAR (1- 48)))
    (movq (% save1) (% arg_z))              ;   [441]
    (shrq ($ 5) (% arg_z))                  ;   [444]
    (cmpq ($ #x178) (% arg_z))              ;   [448]
    (jle L49)                               ;   [455]
;;; (CHAR<= CH (CODE-CHAR (1- 58)))
    (movq (% save1) (% arg_z))              ;   [461]
    (shrq ($ 5) (% arg_z))                  ;   [464]
    (cmpq ($ #x1C8) (% arg_z))              ;   [468]
    (jle L380)                              ;   [475]
;;; (GO 3)
    (jmpq L49)                              ;   [477]
;;; (CHAR<= CH (CODE-CHAR (1- 121)))
L475
    (movq (% save1) (% arg_z))              ;   [482]
    (shrq ($ 5) (% arg_z))                  ;   [485]
    (cmpq ($ #x3C0) (% arg_z))              ;   [489]
    (jle L496)                              ;   [496]
;;; (GO 3)
    (jmpq L49)                              ;   [498]
;;; (= P END)
L496
    (movq (@ -16 (% rbp)) (% arg_z))        ;   [503]
    (cmpq (% arg_z) (% save0))              ;   [507]
    (je L685)                               ;   [510]
;;; (AREF INPUT P)
    (movq (@ -8 (% rbp)) (% arg_y))         ;   [516]
    (movq (% save0) (% imm0))               ;   [520]
    (shrq (% imm0))                         ;   [523]
    (movl (@ -5 (% arg_y) (% imm0)) (% imm0.l)) ;   [526]
    (shll ($ 8) (% imm0.l))                 ;   [530]
    (leaq (@ 2 (% imm0)) (% save1))         ;   [533]
;;; (+ P 1)
    (addq ($ 8) (% save0))                  ;   [537]
;;; (CHAR<= CH (CODE-CHAR (1- 58)))
    (movq (% save1) (% arg_z))              ;   [541]
    (shrq ($ 5) (% arg_z))                  ;   [544]
    (cmpq ($ #x1C8) (% arg_z))              ;   [548]
    (jg L49)                                ;   [555]
;;; (CHAR<= CH (CODE-CHAR (1- 48)))
    (movq (% save1) (% arg_z))              ;   [561]
    (shrq ($ 5) (% arg_z))                  ;   [564]
    (cmpq ($ #x178) (% arg_z))              ;   [568]
    (jle L49)                               ;   [575]
;;; (SETQ R.3 P)
    (movq (% save0) (@ -56 (% rbp)))        ;   [581]
;;; (GO 4)
    (jmpq L128)                             ;   [585]
;;; (= P END)
L583
    (movq (@ -16 (% rbp)) (% arg_z))        ;   [590]
    (cmpq (% arg_z) (% save0))              ;   [594]
    (je L685)                               ;   [597]
;;; (AREF INPUT P)
    (movq (@ -8 (% rbp)) (% arg_y))         ;   [599]
    (movq (% save0) (% imm0))               ;   [603]
    (shrq (% imm0))                         ;   [606]
    (movl (@ -5 (% arg_y) (% imm0)) (% imm0.l)) ;   [609]
    (shll ($ 8) (% imm0.l))                 ;   [613]
    (leaq (@ 2 (% imm0)) (% save1))         ;   [616]
;;; (+ P 1)
    (addq ($ 8) (% save0))                  ;   [620]
;;; (CHAR<= CH (CODE-CHAR (1- 58)))
    (movq (% save1) (% arg_z))              ;   [624]
    (shrq ($ 5) (% arg_z))                  ;   [627]
    (cmpq ($ #x1C8) (% arg_z))              ;   [631]
    (jg L653)                               ;   [638]
;;; (CHAR<= CH (CODE-CHAR (1- 48)))
    (movq (% save1) (% arg_z))              ;   [640]
    (shrq ($ 5) (% arg_z))                  ;   [643]
    (cmpq ($ #x178) (% arg_z))              ;   [647]
    (jg L278)                               ;   [654]
;;; (VALUES $0.S $0.E)
L653
    (pushq (% save3))                       ;   [660]
    (pushq (% save2))                       ;   [662]
    (movl ($ 16) (% nargs))                 ;   [664]
    (movq (@ -48 (% rbp)) (% save3))        ;   [669]
    (movq (@ -40 (% rbp)) (% save2))        ;   [673]
    (movq (@ -32 (% rbp)) (% save1))        ;   [677]
    (movq (@ -24 (% rbp)) (% save0))        ;   [681]
    (lisp-jump (@ .SPNVALRET))              ;   [685]
;;; (RETURN NIL)
L685
    (movl ($ #x1300B) (% arg_z.l))          ;   [692]
    (addq ($ 16) (% rsp))                   ;   [697]
    (popq (% save3))                        ;   [701]
    (popq (% save2))                        ;   [703]
    (popq (% save1))                        ;   [705]
    (popq (% save0))                        ;   [707]
    (leaveq)                                ;   [709]
    (retq)                                  ;   [710]
;;; #
L729
    (uuo-error-wrong-number-of-args)        ;   [736]
(9.756341476603096D+8 (1676 1679)) 
#P"/home/gilbert/lisp/clex/c/benchc.lx64fsl"
?
-- bench2.lisp --------------------------------------------------------------------------------
(in-package :cl-user)
(defun scan (input end)
  (DECLARE (TYPE FIXNUM END) (TYPE (SIMPLE-ARRAY CHARACTER (*)) INPUT))
  (PROG ((CH #\Null) (P 0) (R.3 0) ($0.E 0) ($0.S 0) (R.2 0))
     (DECLARE (TYPE FIXNUM P R.3 $0.E $0.S R.2) (TYPE CHARACTER CH)
              (OPTIMIZE (SPEED 3) (SAFETY 0)))
   3
     (WHEN (= P END) (GO 1))
     (SETQ CH (AREF INPUT P))
     (SETQ P (THE FIXNUM (+ P 1)))
     (IF (CHAR<= CH (CODE-CHAR (1- 58)))
         (IF (CHAR<= CH (CODE-CHAR (1- 48)))
             (GO 3)
             (PROGN (SETQ R.2 P) (GO 6)))
         (GO 3))
   4
     (WHEN (= P END) (SETQ $0.S R.2 $0.E P) (GO 2))
     (SETQ CH (AREF INPUT P))
     (SETQ P (THE FIXNUM (+ P 1)))
     (IF (CHAR<= CH (CODE-CHAR (1- 120)))
         (IF (CHAR<= CH (CODE-CHAR (1- 48)))
             (PROGN (SETQ $0.S R.2 $0.E P) (GO 2))
             (IF (CHAR<= CH (CODE-CHAR (1- 58)))
                 (GO 4)
                 (PROGN (SETQ $0.S R.2 $0.E P) (GO 2))))
         (IF (CHAR<= CH (CODE-CHAR (1- 121)))
             (GO 8)
             (PROGN (SETQ $0.S R.2 $0.E P) (GO 2))))
   5
     (WHEN (= P END) (SETQ $0.S R.3 $0.E P) (GO 2))
     (SETQ CH (AREF INPUT P))
     (SETQ P (THE FIXNUM (+ P 1)))
     (IF (CHAR<= CH (CODE-CHAR (1- 58)))
         (IF (CHAR<= CH (CODE-CHAR (1- 48)))
             (PROGN (SETQ $0.S R.3 $0.E P) (GO 2))
             (GO 5))
         (PROGN (SETQ $0.S R.3 $0.E P) (GO 2)))
   6
     (WHEN (= P END) (GO 1))
     (SETQ CH (AREF INPUT P))
     (SETQ P (THE FIXNUM (+ P 1)))
     (IF (CHAR<= CH (CODE-CHAR (1- 120)))
         (IF (CHAR<= CH (CODE-CHAR (1- 48)))
             (GO 3)
             (IF (CHAR<= CH (CODE-CHAR (1- 58))) (GO 6) (GO 3)))
         (IF (CHAR<= CH (CODE-CHAR (1- 121))) (GO 7) (GO 3)))
   7
     (WHEN (= P END) (GO 1))
     (SETQ CH (AREF INPUT P))
     (SETQ P (THE FIXNUM (+ P 1)))
     (IF (CHAR<= CH (CODE-CHAR (1- 58)))
         (IF (CHAR<= CH (CODE-CHAR (1- 48)))
             (GO 3)
             (PROGN (SETQ R.3 P) (GO 4)))
         (GO 3))
   8
     (WHEN (= P END) (GO 1))
     (SETQ CH (AREF INPUT P))
     (SETQ P (THE FIXNUM (+ P 1)))
     (WHEN (CHAR<= CH (CODE-CHAR (1- 58)))
       (UNLESS (CHAR<= CH (CODE-CHAR (1- 48))) (GO 5)))
   2
     (RETURN (VALUES (1- $0.S) (1- $0.E)))
   1
     (RETURN NIL)))
(defun read-file-as-string (filename)
  (with-open-file (input filename)
    (let* ((n (file-length input))
           (r (make-array n :element-type 'character)))
      (read-sequence r input)
      r)))
(defun foo ()
  (let* ((buf (read-file-as-string "Xorg.0.log"))
         (end (length buf)))
    (multiple-value-bind (s e) (scan buf end)
    (let ((t1 (get-internal-real-time)))
      (loop repeat 1000000 do (scan buf end))
      (values
       (coerce (/ (* 1000000 e) (/ (- (get-internal-real-time) t1) internal-time-units-per-second))
               'double-float)
       s e)))))
(disassemble'scan)
(print (multiple-value-list (foo)))