Skip to content

Instantly share code, notes, and snippets.

@lockie
Last active April 21, 2023 17:08
Show Gist options
  • Save lockie/92de2610f22aca15448ab7acbaa6d4de to your computer and use it in GitHub Desktop.
Save lockie/92de2610f22aca15448ab7acbaa6d4de to your computer and use it in GitHub Desktop.
(proclaim
'(optimize (speed 3) (safety 0) (debug 0) (compilation-speed 0) (space 0)))
(ql:quickload (list :sdl2 :cl-liballegro))
(require :sdl2)
(require :cl-liballegro)
(princ 'liballegro)
(disassemble #'al:map-rgb)
(disassemble #'al:clear-to-color)
(princ 'sdl2)
(disassemble #'sdl2:set-render-draw-color)
(disassemble #'sdl2-ffi.functions:sdl-set-render-draw-color)
@lockie
Copy link
Author

lockie commented Apr 20, 2023

Output from SBCL 2.3.2 on GNU/Linux x86_64:

LIBALLEGRO
; disassembly for CL-LIBALLEGRO:MAP-RGB
; Size: 1913 bytes. Origin: #x53655B13                        ; CL-LIBALLEGRO:MAP-RGB
; 5B13:       498B4D30         MOV RCX, [R13+48]              ; thread.alien-stack-pointer
; 5B17:       B810000000       MOV EAX, 16
; 5B1C:       490FC14510       XADD [R13+16], RAX             ; thread.binding-stack-pointer
; 5B21:       4D8B4530         MOV R8, [R13+48]               ; thread.alien-stack-pointer
; 5B25:       4C8900           MOV [RAX], R8
; 5B28:       C7400830000000   MOV DWORD PTR [RAX+8], 48
; 5B2F:       49894D30         MOV [R13+48], RCX              ; thread.alien-stack-pointer
; 5B33:       49836D3018       SUB QWORD PTR [R13+48], 24     ; thread.alien-stack-pointer
; 5B38:       498B4530         MOV RAX, [R13+48]              ; thread.alien-stack-pointer
; 5B3C:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5B40:       498B5570         MOV RDX, [R13+112]             ; thread.mixed-tlab
; 5B44:       4883C210         ADD RDX, 16
; 5B48:       493B5578         CMP RDX, [R13+120]
; 5B4C:       0F879B060000     JNBE L30
; 5B52:       49895570         MOV [R13+112], RDX             ; thread.mixed-tlab
; 5B56:       48FFCA           DEC RDX
; 5B59: L0:   66C742F13101     MOV WORD PTR [RDX-15], 305
; 5B5F:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5B63:       7402             JEQ L1
; 5B65:       CC09             INT3 9                         ; pending interrupt trap
; 5B67: L1:   488942F9         MOV [RDX-7], RAX
; 5B6B:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5B6F:       498B4D70         MOV RCX, [R13+112]             ; thread.mixed-tlab
; 5B73:       488D4120         LEA RAX, [RCX+32]
; 5B77:       493B4578         CMP RAX, [R13+120]
; 5B7B:       0F877C060000     JNBE L31
; 5B81:       49894570         MOV [R13+112], RAX             ; thread.mixed-tlab
; 5B85: L2:   66C7013908       MOV WORD PTR [RCX], 2105
; 5B8A:       C7410443AC1050   MOV DWORD PTR [RCX+4], 1343269955
; 5B91:       80C903           OR CL, 3
; 5B94:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5B98:       7402             JEQ L3
; 5B9A:       CC09             INT3 9                         ; pending interrupt trap
; 5B9C: L3:   488BC1           MOV RAX, RCX
; 5B9F:       48C1E80A         SHR RAX, 10
; 5BA3:       25FFFF0F00       AND EAX, 1048575
; 5BA8:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 5BAD:       48895105         MOV [RCX+5], RDX
; 5BB1:       488B15E0FEFFFF   MOV RDX, [RIP-288]             ; #<ALIEN-TYPE (ARRAY
                                                              ;               (UNSIGNED ..))>
; 5BB8:       4889510D         MOV [RCX+13], RDX
; 5BBC:       4883EC10         SUB RSP, 16
; 5BC0:       488BD1           MOV RDX, RCX
; 5BC3:       B902000000       MOV ECX, 2
; 5BC8:       48892C24         MOV [RSP], RBP
; 5BCC:       488BEC           MOV RBP, RSP
; 5BCF:       E84E36C1FC       CALL #x50269222                ; #<FDEFN ALIEN-SAP>
; 5BD4:       488955E0         MOV [RBP-32], RDX
; 5BD8:       498B4D30         MOV RCX, [R13+48]              ; thread.alien-stack-pointer
; 5BDC:       B810000000       MOV EAX, 16
; 5BE1:       490FC14510       XADD [R13+16], RAX             ; thread.binding-stack-pointer
; 5BE6:       4D8B4530         MOV R8, [R13+48]               ; thread.alien-stack-pointer
; 5BEA:       4C8900           MOV [RAX], R8
; 5BED:       C7400830000000   MOV DWORD PTR [RAX+8], 48
; 5BF4:       49894D30         MOV [R13+48], RCX              ; thread.alien-stack-pointer
; 5BF8:       49836D3010       SUB QWORD PTR [R13+48], 16     ; thread.alien-stack-pointer
; 5BFD:       498B4530         MOV RAX, [R13+48]              ; thread.alien-stack-pointer
; 5C01:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5C05:       498B5570         MOV RDX, [R13+112]             ; thread.mixed-tlab
; 5C09:       4883C210         ADD RDX, 16
; 5C0D:       493B5578         CMP RDX, [R13+120]
; 5C11:       0F87F3050000     JNBE L32
; 5C17:       49895570         MOV [R13+112], RDX             ; thread.mixed-tlab
; 5C1B:       48FFCA           DEC RDX
; 5C1E: L4:   66C742F13101     MOV WORD PTR [RDX-15], 305
; 5C24:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5C28:       7402             JEQ L5
; 5C2A:       CC09             INT3 9                         ; pending interrupt trap
; 5C2C: L5:   488942F9         MOV [RDX-7], RAX
; 5C30:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5C34:       498B4D70         MOV RCX, [R13+112]             ; thread.mixed-tlab
; 5C38:       488D4120         LEA RAX, [RCX+32]
; 5C3C:       493B4578         CMP RAX, [R13+120]
; 5C40:       0F87D4050000     JNBE L33
; 5C46:       49894570         MOV [R13+112], RAX             ; thread.mixed-tlab
; 5C4A: L6:   66C7013908       MOV WORD PTR [RCX], 2105
; 5C4F:       C7410443AC1050   MOV DWORD PTR [RCX+4], 1343269955
; 5C56:       80C903           OR CL, 3
; 5C59:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5C5D:       7402             JEQ L7
; 5C5F:       CC09             INT3 9                         ; pending interrupt trap
; 5C61: L7:   488BC1           MOV RAX, RCX
; 5C64:       48C1E80A         SHR RAX, 10
; 5C68:       25FFFF0F00       AND EAX, 1048575
; 5C6D:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 5C72:       48895105         MOV [RCX+5], RDX
; 5C76:       488B1523FEFFFF   MOV RDX, [RIP-477]             ; #<ALIEN-TYPE (ARRAY
                                                              ;               (UNSIGNED ..))>
; 5C7D:       4889510D         MOV [RCX+13], RDX
; 5C81:       4883EC10         SUB RSP, 16
; 5C85:       488BD1           MOV RDX, RCX
; 5C88:       B902000000       MOV ECX, 2
; 5C8D:       48892C24         MOV [RSP], RBP
; 5C91:       488BEC           MOV RBP, RSP
; 5C94:       E88935C1FC       CALL #x50269222                ; #<FDEFN ALIEN-SAP>
; 5C99:       488955D8         MOV [RBP-40], RDX
; 5C9D:       498B4D30         MOV RCX, [R13+48]              ; thread.alien-stack-pointer
; 5CA1:       B810000000       MOV EAX, 16
; 5CA6:       490FC14510       XADD [R13+16], RAX             ; thread.binding-stack-pointer
; 5CAB:       4D8B4530         MOV R8, [R13+48]               ; thread.alien-stack-pointer
; 5CAF:       4C8900           MOV [RAX], R8
; 5CB2:       C7400830000000   MOV DWORD PTR [RAX+8], 48
; 5CB9:       49894D30         MOV [R13+48], RCX              ; thread.alien-stack-pointer
; 5CBD:       49836D3008       SUB QWORD PTR [R13+48], 8      ; thread.alien-stack-pointer
; 5CC2:       498B4530         MOV RAX, [R13+48]              ; thread.alien-stack-pointer
; 5CC6:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5CCA:       498B5570         MOV RDX, [R13+112]             ; thread.mixed-tlab
; 5CCE:       4883C210         ADD RDX, 16
; 5CD2:       493B5578         CMP RDX, [R13+120]
; 5CD6:       0F874B050000     JNBE L34
; 5CDC:       49895570         MOV [R13+112], RDX             ; thread.mixed-tlab
; 5CE0:       48FFCA           DEC RDX
; 5CE3: L8:   66C742F13101     MOV WORD PTR [RDX-15], 305
; 5CE9:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5CED:       7402             JEQ L9
; 5CEF:       CC09             INT3 9                         ; pending interrupt trap
; 5CF1: L9:   488942F9         MOV [RDX-7], RAX
; 5CF5:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5CF9:       498B4D70         MOV RCX, [R13+112]             ; thread.mixed-tlab
; 5CFD:       488D4120         LEA RAX, [RCX+32]
; 5D01:       493B4578         CMP RAX, [R13+120]
; 5D05:       0F872C050000     JNBE L35
; 5D0B:       49894570         MOV [R13+112], RAX             ; thread.mixed-tlab
; 5D0F: L10:  66C7013908       MOV WORD PTR [RCX], 2105
; 5D14:       C7410443AC1050   MOV DWORD PTR [RCX+4], 1343269955
; 5D1B:       80C903           OR CL, 3
; 5D1E:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5D22:       7402             JEQ L11
; 5D24:       CC09             INT3 9                         ; pending interrupt trap
; 5D26: L11:  488BC1           MOV RAX, RCX
; 5D29:       48C1E80A         SHR RAX, 10
; 5D2D:       25FFFF0F00       AND EAX, 1048575
; 5D32:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 5D37:       48895105         MOV [RCX+5], RDX
; 5D3B:       488B1566FDFFFF   MOV RDX, [RIP-666]             ; #<ALIEN-TYPE (ARRAY
                                                              ;               (UNSIGNED ..))>
; 5D42:       4889510D         MOV [RCX+13], RDX
; 5D46:       4883EC10         SUB RSP, 16
; 5D4A:       488BD1           MOV RDX, RCX
; 5D4D:       B902000000       MOV ECX, 2
; 5D52:       48892C24         MOV [RSP], RBP
; 5D56:       488BEC           MOV RBP, RSP
; 5D59:       E8C434C1FC       CALL #x50269222                ; #<FDEFN ALIEN-SAP>
; 5D5E:       488955D0         MOV [RBP-48], RDX
; 5D62:       4883EC10         SUB RSP, 16
; 5D66:       488B55F8         MOV RDX, [RBP-8]
; 5D6A:       488B3D3FFDFFFF   MOV RDI, [RIP-705]             ; #<CFFI::FOREIGN-BUILT-IN-TYPE :UNSIGNED-CHAR>
; 5D71:       488B75D0         MOV RSI, [RBP-48]
; 5D75:       B906000000       MOV ECX, 6
; 5D7A:       48892C24         MOV [RSP], RBP
; 5D7E:       488BEC           MOV RBP, RSP
; 5D81:       E87CE7C9FC       CALL #x502F4502                ; #<FDEFN CFFI:TRANSLATE-INTO-FOREIGN-MEMORY>
; 5D86:       480F42E3         CMOVB RSP, RBX
; 5D8A:       498B4D30         MOV RCX, [R13+48]              ; thread.alien-stack-pointer
; 5D8E:       B810000000       MOV EAX, 16
; 5D93:       490FC14510       XADD [R13+16], RAX             ; thread.binding-stack-pointer
; 5D98:       4D8B4530         MOV R8, [R13+48]               ; thread.alien-stack-pointer
; 5D9C:       4C8900           MOV [RAX], R8
; 5D9F:       C7400830000000   MOV DWORD PTR [RAX+8], 48
; 5DA6:       49894D30         MOV [R13+48], RCX              ; thread.alien-stack-pointer
; 5DAA:       49836D3008       SUB QWORD PTR [R13+48], 8      ; thread.alien-stack-pointer
; 5DAF:       498B4530         MOV RAX, [R13+48]              ; thread.alien-stack-pointer
; 5DB3:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5DB7:       498B5570         MOV RDX, [R13+112]             ; thread.mixed-tlab
; 5DBB:       4883C210         ADD RDX, 16
; 5DBF:       493B5578         CMP RDX, [R13+120]
; 5DC3:       0F877B040000     JNBE L36
; 5DC9:       49895570         MOV [R13+112], RDX             ; thread.mixed-tlab
; 5DCD:       48FFCA           DEC RDX
; 5DD0: L12:  66C742F13101     MOV WORD PTR [RDX-15], 305
; 5DD6:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5DDA:       7402             JEQ L13
; 5DDC:       CC09             INT3 9                         ; pending interrupt trap
; 5DDE: L13:  488942F9         MOV [RDX-7], RAX
; 5DE2:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5DE6:       498B4D70         MOV RCX, [R13+112]             ; thread.mixed-tlab
; 5DEA:       488D4120         LEA RAX, [RCX+32]
; 5DEE:       493B4578         CMP RAX, [R13+120]
; 5DF2:       0F875C040000     JNBE L37
; 5DF8:       49894570         MOV [R13+112], RAX             ; thread.mixed-tlab
; 5DFC: L14:  66C7013908       MOV WORD PTR [RCX], 2105
; 5E01:       C7410443AC1050   MOV DWORD PTR [RCX+4], 1343269955
; 5E08:       80C903           OR CL, 3
; 5E0B:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5E0F:       7402             JEQ L15
; 5E11:       CC09             INT3 9                         ; pending interrupt trap
; 5E13: L15:  488BC1           MOV RAX, RCX
; 5E16:       48C1E80A         SHR RAX, 10
; 5E1A:       25FFFF0F00       AND EAX, 1048575
; 5E1F:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 5E24:       48895105         MOV [RCX+5], RDX
; 5E28:       488B1579FCFFFF   MOV RDX, [RIP-903]             ; #<ALIEN-TYPE (ARRAY
                                                              ;               (UNSIGNED ..))>
; 5E2F:       4889510D         MOV [RCX+13], RDX
; 5E33:       4883EC10         SUB RSP, 16
; 5E37:       488BD1           MOV RDX, RCX
; 5E3A:       B902000000       MOV ECX, 2
; 5E3F:       48892C24         MOV [RSP], RBP
; 5E43:       488BEC           MOV RBP, RSP
; 5E46:       E8D733C1FC       CALL #x50269222                ; #<FDEFN ALIEN-SAP>
; 5E4B:       488955F8         MOV [RBP-8], RDX
; 5E4F:       4883EC10         SUB RSP, 16
; 5E53:       488B55F0         MOV RDX, [RBP-16]
; 5E57:       488B3D52FCFFFF   MOV RDI, [RIP-942]             ; #<CFFI::FOREIGN-BUILT-IN-TYPE :UNSIGNED-CHAR>
; 5E5E:       488B75F8         MOV RSI, [RBP-8]
; 5E62:       B906000000       MOV ECX, 6
; 5E67:       48892C24         MOV [RSP], RBP
; 5E6B:       488BEC           MOV RBP, RSP
; 5E6E:       E88FE6C9FC       CALL #x502F4502                ; #<FDEFN CFFI:TRANSLATE-INTO-FOREIGN-MEMORY>
; 5E73:       480F42E3         CMOVB RSP, RBX
; 5E77:       498B4D30         MOV RCX, [R13+48]              ; thread.alien-stack-pointer
; 5E7B:       B810000000       MOV EAX, 16
; 5E80:       490FC14510       XADD [R13+16], RAX             ; thread.binding-stack-pointer
; 5E85:       4D8B4530         MOV R8, [R13+48]               ; thread.alien-stack-pointer
; 5E89:       4C8900           MOV [RAX], R8
; 5E8C:       C7400830000000   MOV DWORD PTR [RAX+8], 48
; 5E93:       49894D30         MOV [R13+48], RCX              ; thread.alien-stack-pointer
; 5E97:       49836D3008       SUB QWORD PTR [R13+48], 8      ; thread.alien-stack-pointer
; 5E9C:       498B4530         MOV RAX, [R13+48]              ; thread.alien-stack-pointer
; 5EA0:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5EA4:       498B5570         MOV RDX, [R13+112]             ; thread.mixed-tlab
; 5EA8:       4883C210         ADD RDX, 16
; 5EAC:       493B5578         CMP RDX, [R13+120]
; 5EB0:       0F87AB030000     JNBE L38
; 5EB6:       49895570         MOV [R13+112], RDX             ; thread.mixed-tlab
; 5EBA:       48FFCA           DEC RDX
; 5EBD: L16:  66C742F13101     MOV WORD PTR [RDX-15], 305
; 5EC3:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5EC7:       7402             JEQ L17
; 5EC9:       CC09             INT3 9                         ; pending interrupt trap
; 5ECB: L17:  488942F9         MOV [RDX-7], RAX
; 5ECF:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5ED3:       498B4D70         MOV RCX, [R13+112]             ; thread.mixed-tlab
; 5ED7:       488D4120         LEA RAX, [RCX+32]
; 5EDB:       493B4578         CMP RAX, [R13+120]
; 5EDF:       0F878C030000     JNBE L39
; 5EE5:       49894570         MOV [R13+112], RAX             ; thread.mixed-tlab
; 5EE9: L18:  66C7013908       MOV WORD PTR [RCX], 2105
; 5EEE:       C7410443AC1050   MOV DWORD PTR [RCX+4], 1343269955
; 5EF5:       80C903           OR CL, 3
; 5EF8:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5EFC:       7402             JEQ L19
; 5EFE:       CC09             INT3 9                         ; pending interrupt trap
; 5F00: L19:  488BC1           MOV RAX, RCX
; 5F03:       48C1E80A         SHR RAX, 10
; 5F07:       25FFFF0F00       AND EAX, 1048575
; 5F0C:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 5F11:       48895105         MOV [RCX+5], RDX
; 5F15:       488B158CFBFFFF   MOV RDX, [RIP-1140]            ; #<ALIEN-TYPE (ARRAY
                                                              ;               (UNSIGNED ..))>
; 5F1C:       4889510D         MOV [RCX+13], RDX
; 5F20:       4883EC10         SUB RSP, 16
; 5F24:       488BD1           MOV RDX, RCX
; 5F27:       B902000000       MOV ECX, 2
; 5F2C:       48892C24         MOV [RSP], RBP
; 5F30:       488BEC           MOV RBP, RSP
; 5F33:       E8EA32C1FC       CALL #x50269222                ; #<FDEFN ALIEN-SAP>
; 5F38:       4C8BD2           MOV R10, RDX
; 5F3B:       4C8955F0         MOV [RBP-16], R10
; 5F3F:       4883EC10         SUB RSP, 16
; 5F43:       488B55E8         MOV RDX, [RBP-24]
; 5F47:       488B3D62FBFFFF   MOV RDI, [RIP-1182]            ; #<CFFI::FOREIGN-BUILT-IN-TYPE :UNSIGNED-CHAR>
; 5F4E:       498BF2           MOV RSI, R10
; 5F51:       B906000000       MOV ECX, 6
; 5F56:       48892C24         MOV [RSP], RBP
; 5F5A:       488BEC           MOV RBP, RSP
; 5F5D:       E8A0E5C9FC       CALL #x502F4502                ; #<FDEFN CFFI:TRANSLATE-INTO-FOREIGN-MEMORY>
; 5F62:       480F42E3         CMOVB RSP, RBX
; 5F66:       4C8B55F0         MOV R10, [RBP-16]
; 5F6A:       4D896D28         MOV [R13+40], R13              ; thread.pseudo-atomic-bits
; 5F6E:       4D8B4D58         MOV R9, [R13+88]               ; thread.cons-tlab
; 5F72:       4D8D4130         LEA R8, [R9+48]
; 5F76:       4D3B4560         CMP R8, [R13+96]
; 5F7A:       0F87FE020000     JNBE L40
; 5F80:       4D894558         MOV [R13+88], R8               ; thread.cons-tlab
; 5F84: L20:  4180C907         OR R9B, 7
; 5F88:       498BC1           MOV RAX, R9
; 5F8B:       4C8B45D0         MOV R8, [RBP-48]
; 5F8F:       4C8940F9         MOV [RAX-7], R8
; 5F93:       4883C010         ADD RAX, 16
; 5F97:       488940F1         MOV [RAX-15], RAX
; 5F9B:       4C8B45F8         MOV R8, [RBP-8]
; 5F9F:       4C8940F9         MOV [RAX-7], R8
; 5FA3:       4883C010         ADD RAX, 16
; 5FA7:       488940F1         MOV [RAX-15], RAX
; 5FAB:       4C8950F9         MOV [RAX-7], R10
; 5FAF:       48C7400117010050 MOV QWORD PTR [RAX+1], #x50000117  ; NIL
; 5FB7:       4D316D28         XOR [R13+40], R13              ; thread.pseudo-atomic-bits
; 5FBB:       7402             JEQ L21
; 5FBD:       CC09             INT3 9                         ; pending interrupt trap
; 5FBF: L21:  41BA17010050     MOV R10D, #x50000117           ; NIL
; 5FC5:       498BF1           MOV RSI, R9
; 5FC8:       4531C0           XOR R8D, R8D
; 5FCB:       488B46F9         MOV RAX, [RSI-7]
; 5FCF:       4C8BD0           MOV R10, RAX
; 5FD2:       488B4601         MOV RAX, [RSI+1]
; 5FD6:       488BF0           MOV RSI, RAX
; 5FD9:       EB33             JMP L23
; 5FDB:       0F1F440000       NOP
; 5FE0: L22:  488B46F9         MOV RAX, [RSI-7]
; 5FE4:       4C8BD0           MOV R10, RAX
; 5FE7:       4C8955F8         MOV [RBP-8], R10
; 5FEB:       488B4601         MOV RAX, [RSI+1]
; 5FEF:       488BF0           MOV RSI, RAX
; 5FF2:       488975F0         MOV [RBP-16], RSI
; 5FF6:       BF02000000       MOV EDI, 2
; 5FFB:       498BD0           MOV RDX, R8
; 5FFE:       E8BDAD3AFF       CALL #x52A00DC0                ; SB-VM::GENERIC-+
; 6003:       488B75F0         MOV RSI, [RBP-16]
; 6007:       4C8B55F8         MOV R10, [RBP-8]
; 600B:       4C8BC2           MOV R8, RDX
; 600E: L23:  4C8955F8         MOV [RBP-8], R10
; 6012:       488975F0         MOV [RBP-16], RSI
; 6016:       4C8945E8         MOV [RBP-24], R8
; 601A:       498BD0           MOV RDX, R8
; 601D:       4883EC10         SUB RSP, 16
; 6021:       BF06000000       MOV EDI, 6
; 6026:       B904000000       MOV ECX, 4
; 602B:       48892C24         MOV [RSP], RBP
; 602F:       488BEC           MOV RBP, RSP
; 6032:       E8EB66BFFC       CALL #x5024C722                ; #<FDEFN ASH>
; 6037:       4C8B45E8         MOV R8, [RBP-24]
; 603B:       488B75F0         MOV RSI, [RBP-16]
; 603F:       4C8B55F8         MOV R10, [RBP-8]
; 6043:       498B4AF9         MOV RCX, [R10-7]
; 6047:       488B45E0         MOV RAX, [RBP-32]
; 604B:       488B58F9         MOV RBX, [RAX-7]
; 604F:       48D1FA           SAR RDX, 1
; 6052:       48890C13         MOV [RBX+RDX], RCX
; 6056:       4881FE17010050   CMP RSI, #x50000117            ; NIL
; 605D:       7581             JNE L22
; 605F:       488B057AFAFFFF   MOV RAX, [RIP-1414]            ; '(CFFI::LIBFFI-CIF-CACHE)
; 6066:       488B4801         MOV RCX, [RAX+1]
; 606A:       4881F917010050   CMP RCX, #x50000117            ; NIL
; 6071:       0F8415010000     JEQ L29
; 6077:       488BF1           MOV RSI, RCX
; 607A: L24:  488975F8         MOV [RBP-8], RSI
; 607E:       4883EC10         SUB RSP, 16
; 6082:       488B152FFAFFFF   MOV RDX, [RIP-1489]            ; "al_map_rgb"
; 6089:       B902000000       MOV ECX, 2
; 608E:       48892C24         MOV [RSP], RBP
; 6092:       488BEC           MOV RBP, RSP
; 6095:       E888C6C9FC       CALL #x502F2722                ; #<FDEFN CFFI:FOREIGN-SYMBOL-POINTER>
; 609A:       480F42E3         CMOVB RSP, RBX
; 609E:       488B75F8         MOV RSI, [RBP-8]
; 60A2:       488BFA           MOV RDI, RDX
; 60A5:       488D5C24F0       LEA RBX, [RSP-16]
; 60AA:       4883EC20         SUB RSP, 32
; 60AE:       488BD6           MOV RDX, RSI
; 60B1:       488B75D8         MOV RSI, [RBP-40]
; 60B5:       488B45E0         MOV RAX, [RBP-32]
; 60B9:       488943F0         MOV [RBX-16], RAX
; 60BD:       B908000000       MOV ECX, 8
; 60C2:       48892B           MOV [RBX], RBP
; 60C5:       488BEB           MOV RBP, RBX
; 60C8:       E8752DCEFC       CALL #x50338E42                ; #<FDEFN CFFI::LIBFFI/CALL>
; 60CD:       480F42E3         CMOVB RSP, RBX
; 60D1:       4883EC10         SUB RSP, 16
; 60D5:       488B55D8         MOV RDX, [RBP-40]
; 60D9:       488B3DE0F9FFFF   MOV RDI, [RIP-1568]            ; #<CL-LIBALLEGRO::COLOR-TCLASS CL-LIBALLEGRO:COLOR>
; 60E0:       B904000000       MOV ECX, 4
; 60E5:       48892C24         MOV [RSP], RBP
; 60E9:       488BEC           MOV RBP, RSP
; 60EC:       E851E4C9FC       CALL #x502F4542                ; #<FDEFN CFFI:TRANSLATE-FROM-FOREIGN>
; 60F1:       720B             JB L25
; 60F3:       488BF4           MOV RSI, RSP
; 60F6:       52               PUSH RDX
; 60F7:       B902000000       MOV ECX, 2
; 60FC:       EB1D             JMP L27
; 60FE: L25:  4883F906         CMP RCX, 6
; 6102:       7F08             JNLE L26
; 6104:       8BC1             MOV EAX, ECX
; 6106:       C1E002           SHL EAX, 2
; 6109:       4829C4           SUB RSP, RAX
; 610C: L26:  488953F8         MOV [RBX-8], RDX
; 6110:       48897BF0         MOV [RBX-16], RDI
; 6114:       488973E8         MOV [RBX-24], RSI
; 6118:       488BF3           MOV RSI, RBX
; 611B: L27:  4D8B4510         MOV R8, [R13+16]               ; thread.binding-stack-pointer
; 611F:       660F57C0         XORPD XMM0, XMM0
; 6123:       4983E810         SUB R8, 16
; 6127:       498B00           MOV RAX, [R8]
; 612A:       49894530         MOV [R13+48], RAX              ; thread.alien-stack-pointer
; 612E:       66410F2900       MOVAPD [R8], XMM0
; 6133:       4983E810         SUB R8, 16
; 6137:       498B00           MOV RAX, [R8]
; 613A:       49894530         MOV [R13+48], RAX              ; thread.alien-stack-pointer
; 613E:       66410F2900       MOVAPD [R8], XMM0
; 6143:       4983E810         SUB R8, 16
; 6147:       498B00           MOV RAX, [R8]
; 614A:       49894530         MOV [R13+48], RAX              ; thread.alien-stack-pointer
; 614E:       66410F2900       MOVAPD [R8], XMM0
; 6153:       4983E810         SUB R8, 16
; 6157:       498B00           MOV RAX, [R8]
; 615A:       49894530         MOV [R13+48], RAX              ; thread.alien-stack-pointer
; 615E:       66410F2900       MOVAPD [R8], XMM0
; 6163:       4983E810         SUB R8, 16
; 6167:       498B00           MOV RAX, [R8]
; 616A:       49894530         MOV [R13+48], RAX              ; thread.alien-stack-pointer
; 616E:       66410F2900       MOVAPD [R8], XMM0
; 6173:       4D894510         MOV [R13+16], R8               ; thread.binding-stack-pointer
; 6177:       4883F902         CMP RCX, 2
; 617B:       750A             JNE L28
; 617D:       488B56F8         MOV RDX, [RSI-8]
; 6181:       488BE5           MOV RSP, RBP
; 6184:       F8               CLC
; 6185:       5D               POP RBP
; 6186:       C3               RET
; 6187: L28:  E984A73AFF       JMP #x52A00910                 ; SB-C:RETURN-MULTIPLE
; 618C: L29:  488D5C24F0       LEA RBX, [RSP-16]
; 6191:       4883EC20         SUB RSP, 32
; 6195:       488B151CF9FFFF   MOV RDX, [RIP-1764]            ; "al_map_rgb"
; 619C:       488B3D25F9FFFF   MOV RDI, [RIP-1755]            ; '(:STRUCT
                                                              ;   CL-LIBALLEGRO:COLOR)
; 61A3:       488B3526F9FFFF   MOV RSI, [RIP-1754]            ; '(:UNSIGNED-CHAR
                                                              ;   :UNSIGNED-CHAR ..)
; 61AA:       488B0527F9FFFF   MOV RAX, [RIP-1753]            ; :DEFAULT-ABI
; 61B1:       488943F0         MOV [RBX-16], RAX
; 61B5:       B908000000       MOV ECX, 8
; 61BA:       48892B           MOV [RBX], RBP
; 61BD:       488BEB           MOV RBP, RBX
; 61C0:       E89D4ECEFC       CALL #x5033B062                ; #<FDEFN CFFI::MAKE-LIBFFI-CIF>
; 61C5:       480F42E3         CMOVB RSP, RBX
; 61C9:       488B0D10F9FFFF   MOV RCX, [RIP-1776]            ; '(CFFI::LIBFFI-CIF-CACHE)
; 61D0:       488BC1           MOV RAX, RCX
; 61D3:       48C1E80A         SHR RAX, 10
; 61D7:       25FFFF0F00       AND EAX, 1048575
; 61DC:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 61E1:       48895101         MOV [RCX+1], RDX
; 61E5:       488BF2           MOV RSI, RDX
; 61E8:       E98DFEFFFF       JMP L24
; 61ED: L30:  6A10             PUSH 16
; 61EF:       E88CA23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 61F4:       5A               POP RDX
; 61F5:       80CA0F           OR DL, 15
; 61F8:       E95CF9FFFF       JMP L0
; 61FD: L31:  6A20             PUSH 32
; 61FF:       E87CA23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 6204:       59               POP RCX
; 6205:       E97BF9FFFF       JMP L2
; 620A: L32:  6A10             PUSH 16
; 620C:       E86FA23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 6211:       5A               POP RDX
; 6212:       80CA0F           OR DL, 15
; 6215:       E904FAFFFF       JMP L4
; 621A: L33:  6A20             PUSH 32
; 621C:       E85FA23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 6221:       59               POP RCX
; 6222:       E923FAFFFF       JMP L6
; 6227: L34:  6A10             PUSH 16
; 6229:       E852A23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 622E:       5A               POP RDX
; 622F:       80CA0F           OR DL, 15
; 6232:       E9ACFAFFFF       JMP L8
; 6237: L35:  6A20             PUSH 32
; 6239:       E842A23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 623E:       59               POP RCX
; 623F:       E9CBFAFFFF       JMP L10
; 6244: L36:  6A10             PUSH 16
; 6246:       E835A23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 624B:       5A               POP RDX
; 624C:       80CA0F           OR DL, 15
; 624F:       E97CFBFFFF       JMP L12
; 6254: L37:  6A20             PUSH 32
; 6256:       E825A23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 625B:       59               POP RCX
; 625C:       E99BFBFFFF       JMP L14
; 6261: L38:  6A10             PUSH 16
; 6263:       E818A23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 6268:       5A               POP RDX
; 6269:       80CA0F           OR DL, 15
; 626C:       E94CFCFFFF       JMP L16
; 6271: L39:  6A20             PUSH 32
; 6273:       E808A23AFF       CALL #x52A00480                ; SB-VM::ALLOC-TRAMP
; 6278:       59               POP RCX
; 6279:       E96BFCFFFF       JMP L18
; 627E: L40:  6A30             PUSH 48
; 6280:       E89BA23AFF       CALL #x52A00520                ; SB-VM::LIST-ALLOC-TRAMP
; 6285:       4159             POP R9
; 6287:       E9F8FCFFFF       JMP L20
; disassembly for CL-LIBALLEGRO:CLEAR-TO-COLOR
; Size: 1055 bytes. Origin: #x5372950B                        ; CL-LIBALLEGRO:CLEAR-TO-COLOR
; 50B:       498B4D30         MOV RCX, [R13+48]               ; thread.alien-stack-pointer
; 50F:       B810000000       MOV EAX, 16
; 514:       490FC14510       XADD [R13+16], RAX              ; thread.binding-stack-pointer
; 519:       4D8B4530         MOV R8, [R13+48]                ; thread.alien-stack-pointer
; 51D:       4C8900           MOV [RAX], R8
; 520:       C7400830000000   MOV DWORD PTR [RAX+8], 48
; 527:       49894D30         MOV [R13+48], RCX               ; thread.alien-stack-pointer
; 52B:       49836D3008       SUB QWORD PTR [R13+48], 8       ; thread.alien-stack-pointer
; 530:       498B4530         MOV RAX, [R13+48]               ; thread.alien-stack-pointer
; 534:       4D896D28         MOV [R13+40], R13               ; thread.pseudo-atomic-bits
; 538:       498B5570         MOV RDX, [R13+112]              ; thread.mixed-tlab
; 53C:       4883C210         ADD RDX, 16
; 540:       493B5578         CMP RDX, [R13+120]
; 544:       0F8788030000     JNBE L16
; 54A:       49895570         MOV [R13+112], RDX              ; thread.mixed-tlab
; 54E:       48FFCA           DEC RDX
; 551: L0:   66C742F13101     MOV WORD PTR [RDX-15], 305
; 557:       4D316D28         XOR [R13+40], R13               ; thread.pseudo-atomic-bits
; 55B:       7402             JEQ L1
; 55D:       CC09             INT3 9                          ; pending interrupt trap
; 55F: L1:   488942F9         MOV [RDX-7], RAX
; 563:       4D896D28         MOV [R13+40], R13               ; thread.pseudo-atomic-bits
; 567:       498B4D70         MOV RCX, [R13+112]              ; thread.mixed-tlab
; 56B:       488D4120         LEA RAX, [RCX+32]
; 56F:       493B4578         CMP RAX, [R13+120]
; 573:       0F8769030000     JNBE L17
; 579:       49894570         MOV [R13+112], RAX              ; thread.mixed-tlab
; 57D: L2:   66C7013908       MOV WORD PTR [RCX], 2105
; 582:       C7410443AC1050   MOV DWORD PTR [RCX+4], 1343269955
; 589:       80C903           OR CL, 3
; 58C:       4D316D28         XOR [R13+40], R13               ; thread.pseudo-atomic-bits
; 590:       7402             JEQ L3
; 592:       CC09             INT3 9                          ; pending interrupt trap
; 594: L3:   488BC1           MOV RAX, RCX
; 597:       48C1E80A         SHR RAX, 10
; 59B:       25FFFF0F00       AND EAX, 1048575
; 5A0:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 5A5:       48895105         MOV [RCX+5], RDX
; 5A9:       488B15F0FEFFFF   MOV RDX, [RIP-272]              ; #<ALIEN-TYPE (ARRAY
                                                              ;               (UNSIGNED ..))>
; 5B0:       4889510D         MOV [RCX+13], RDX
; 5B4:       4883EC10         SUB RSP, 16
; 5B8:       488BD1           MOV RDX, RCX
; 5BB:       B902000000       MOV ECX, 2
; 5C0:       48892C24         MOV [RSP], RBP
; 5C4:       488BEC           MOV RBP, RSP
; 5C7:       E856FCB3FC       CALL #x50269222                 ; #<FDEFN ALIEN-SAP>
; 5CC:       488955F0         MOV [RBP-16], RDX
; 5D0:       498B4D30         MOV RCX, [R13+48]               ; thread.alien-stack-pointer
; 5D4:       B810000000       MOV EAX, 16
; 5D9:       490FC14510       XADD [R13+16], RAX              ; thread.binding-stack-pointer
; 5DE:       4D8B4530         MOV R8, [R13+48]                ; thread.alien-stack-pointer
; 5E2:       4C8900           MOV [RAX], R8
; 5E5:       C7400830000000   MOV DWORD PTR [RAX+8], 48
; 5EC:       49894D30         MOV [R13+48], RCX               ; thread.alien-stack-pointer
; 5F0:       49836D3010       SUB QWORD PTR [R13+48], 16      ; thread.alien-stack-pointer
; 5F5:       498B4530         MOV RAX, [R13+48]               ; thread.alien-stack-pointer
; 5F9:       4D896D28         MOV [R13+40], R13               ; thread.pseudo-atomic-bits
; 5FD:       498B5570         MOV RDX, [R13+112]              ; thread.mixed-tlab
; 601:       4883C210         ADD RDX, 16
; 605:       493B5578         CMP RDX, [R13+120]
; 609:       0F87E0020000     JNBE L18
; 60F:       49895570         MOV [R13+112], RDX              ; thread.mixed-tlab
; 613:       48FFCA           DEC RDX
; 616: L4:   66C742F13101     MOV WORD PTR [RDX-15], 305
; 61C:       4D316D28         XOR [R13+40], R13               ; thread.pseudo-atomic-bits
; 620:       7402             JEQ L5
; 622:       CC09             INT3 9                          ; pending interrupt trap
; 624: L5:   488942F9         MOV [RDX-7], RAX
; 628:       4D896D28         MOV [R13+40], R13               ; thread.pseudo-atomic-bits
; 62C:       498B4D70         MOV RCX, [R13+112]              ; thread.mixed-tlab
; 630:       488D4120         LEA RAX, [RCX+32]
; 634:       493B4578         CMP RAX, [R13+120]
; 638:       0F87C1020000     JNBE L19
; 63E:       49894570         MOV [R13+112], RAX              ; thread.mixed-tlab
; 642: L6:   66C7013908       MOV WORD PTR [RCX], 2105
; 647:       C7410443AC1050   MOV DWORD PTR [RCX+4], 1343269955
; 64E:       80C903           OR CL, 3
; 651:       4D316D28         XOR [R13+40], R13               ; thread.pseudo-atomic-bits
; 655:       7402             JEQ L7
; 657:       CC09             INT3 9                          ; pending interrupt trap
; 659: L7:   488BC1           MOV RAX, RCX
; 65C:       48C1E80A         SHR RAX, 10
; 660:       25FFFF0F00       AND EAX, 1048575
; 665:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 66A:       48895105         MOV [RCX+5], RDX
; 66E:       488B1533FEFFFF   MOV RDX, [RIP-461]              ; #<ALIEN-TYPE (ARRAY
                                                              ;               (UNSIGNED ..))>
; 675:       4889510D         MOV [RCX+13], RDX
; 679:       4883EC10         SUB RSP, 16
; 67D:       488BD1           MOV RDX, RCX
; 680:       B902000000       MOV ECX, 2
; 685:       48892C24         MOV [RSP], RBP
; 689:       488BEC           MOV RBP, RSP
; 68C:       E891FBB3FC       CALL #x50269222                 ; #<FDEFN ALIEN-SAP>
; 691:       4C8BCA           MOV R9, RDX
; 694:       4C894DE8         MOV [RBP-24], R9
; 698:       498BF1           MOV RSI, R9
; 69B:       4883EC10         SUB RSP, 16
; 69F:       488B55F8         MOV RDX, [RBP-8]
; 6A3:       488B3D06FEFFFF   MOV RDI, [RIP-506]              ; #<CL-LIBALLEGRO::COLOR-TCLASS CL-LIBALLEGRO:COLOR>
; 6AA:       B906000000       MOV ECX, 6
; 6AF:       48892C24         MOV [RSP], RBP
; 6B3:       488BEC           MOV RBP, RSP
; 6B6:       E847AEBCFC       CALL #x502F4502                 ; #<FDEFN CFFI:TRANSLATE-INTO-FOREIGN-MEMORY>
; 6BB:       480F42E3         CMOVB RSP, RBX
; 6BF:       4C8B4DE8         MOV R9, [RBP-24]
; 6C3:       4D896D28         MOV [R13+40], R13               ; thread.pseudo-atomic-bits
; 6C7:       498B4558         MOV RAX, [R13+88]               ; thread.cons-tlab
; 6CB:       4C8D4010         LEA R8, [RAX+16]
; 6CF:       4D3B4560         CMP R8, [R13+96]
; 6D3:       0F8733020000     JNBE L20
; 6D9:       4D894558         MOV [R13+88], R8                ; thread.cons-tlab
; 6DD: L8:   4C8908           MOV [RAX], R9
; 6E0:       48C7400817010050 MOV QWORD PTR [RAX+8], #x50000117  ; NIL
; 6E8:       0C07             OR AL, 7
; 6EA:       4D316D28         XOR [R13+40], R13               ; thread.pseudo-atomic-bits
; 6EE:       7402             JEQ L9
; 6F0:       CC09             INT3 9                          ; pending interrupt trap
; 6F2: L9:   41B917010050     MOV R9D, #x50000117             ; NIL
; 6F8:       488BF0           MOV RSI, RAX
; 6FB:       4531C0           XOR R8D, R8D
; 6FE:       488B46F9         MOV RAX, [RSI-7]
; 702:       4C8BC8           MOV R9, RAX
; 705:       488B4601         MOV RAX, [RSI+1]
; 709:       488BF0           MOV RSI, RAX
; 70C:       EB30             JMP L11
; 70E:       6690             NOP
; 710: L10:  488B46F9         MOV RAX, [RSI-7]
; 714:       4C8BC8           MOV R9, RAX
; 717:       4C894DF8         MOV [RBP-8], R9
; 71B:       488B4601         MOV RAX, [RSI+1]
; 71F:       488BF0           MOV RSI, RAX
; 722:       488975E8         MOV [RBP-24], RSI
; 726:       BF02000000       MOV EDI, 2
; 72B:       498BD0           MOV RDX, R8
; 72E:       E88D762DFF       CALL #x52A00DC0                 ; SB-VM::GENERIC-+
; 733:       488B75E8         MOV RSI, [RBP-24]
; 737:       4C8B4DF8         MOV R9, [RBP-8]
; 73B:       4C8BC2           MOV R8, RDX
; 73E: L11:  4C894DF8         MOV [RBP-8], R9
; 742:       488975E8         MOV [RBP-24], RSI
; 746:       4C8945E0         MOV [RBP-32], R8
; 74A:       498BD0           MOV RDX, R8
; 74D:       4883EC10         SUB RSP, 16
; 751:       BF06000000       MOV EDI, 6
; 756:       B904000000       MOV ECX, 4
; 75B:       48892C24         MOV [RSP], RBP
; 75F:       488BEC           MOV RBP, RSP
; 762:       E8BB2FB2FC       CALL #x5024C722                 ; #<FDEFN ASH>
; 767:       4C8B45E0         MOV R8, [RBP-32]
; 76B:       488B75E8         MOV RSI, [RBP-24]
; 76F:       4C8B4DF8         MOV R9, [RBP-8]
; 773:       498B49F9         MOV RCX, [R9-7]
; 777:       488B45F0         MOV RAX, [RBP-16]
; 77B:       488B58F9         MOV RBX, [RAX-7]
; 77F:       48D1FA           SAR RDX, 1
; 782:       48890C13         MOV [RBX+RDX], RCX
; 786:       4881FE17010050   CMP RSI, #x50000117             ; NIL
; 78D:       7581             JNE L10
; 78F:       488B0542FDFFFF   MOV RAX, [RIP-702]              ; '(CFFI::LIBFFI-CIF-CACHE)
; 796:       488B4801         MOV RCX, [RAX+1]
; 79A:       4881F917010050   CMP RCX, #x50000117             ; NIL
; 7A1:       0F84CA000000     JEQ L15
; 7A7:       4C8BC1           MOV R8, RCX
; 7AA: L12:  4C8945F8         MOV [RBP-8], R8
; 7AE:       4883EC10         SUB RSP, 16
; 7B2:       488B15FFFCFFFF   MOV RDX, [RIP-769]              ; "al_clear_to_color"
; 7B9:       B902000000       MOV ECX, 2
; 7BE:       48892C24         MOV [RSP], RBP
; 7C2:       488BEC           MOV RBP, RSP
; 7C5:       E8588FBCFC       CALL #x502F2722                 ; #<FDEFN CFFI:FOREIGN-SYMBOL-POINTER>
; 7CA:       480F42E3         CMOVB RSP, RBX
; 7CE:       4C8B45F8         MOV R8, [RBP-8]
; 7D2:       488BFA           MOV RDI, RDX
; 7D5:       31C0             XOR EAX, EAX
; 7D7:       488D5C24F0       LEA RBX, [RSP-16]
; 7DC:       4883EC20         SUB RSP, 32
; 7E0:       4D896D28         MOV [R13+40], R13               ; thread.pseudo-atomic-bits
; 7E4:       498B7570         MOV RSI, [R13+112]              ; thread.mixed-tlab
; 7E8:       4883C610         ADD RSI, 16
; 7EC:       493B7578         CMP RSI, [R13+120]
; 7F0:       0F8723010000     JNBE L21
; 7F6:       49897570         MOV [R13+112], RSI              ; thread.mixed-tlab
; 7FA:       48FFCE           DEC RSI
; 7FD: L13:  66C746F13101     MOV WORD PTR [RSI-15], 305
; 803:       4D316D28         XOR [R13+40], R13               ; thread.pseudo-atomic-bits
; 807:       7402             JEQ L14
; 809:       CC09             INT3 9                          ; pending interrupt trap
; 80B: L14:  488946F9         MOV [RSI-7], RAX
; 80F:       498BD0           MOV RDX, R8
; 812:       488B45F0         MOV RAX, [RBP-16]
; 816:       488943F0         MOV [RBX-16], RAX
; 81A:       B908000000       MOV ECX, 8
; 81F:       48892B           MOV [RBX], RBP
; 822:       488BEB           MOV RBP, RBX
; 825:       E818F6C0FC       CALL #x50338E42                 ; #<FDEFN CFFI::LIBFFI/CALL>
; 82A:       480F42E3         CMOVB RSP, RBX
; 82E:       4D8B4510         MOV R8, [R13+16]                ; thread.binding-stack-pointer
; 832:       660F57C0         XORPD XMM0, XMM0
; 836:       4983E810         SUB R8, 16
; 83A:       498B00           MOV RAX, [R8]
; 83D:       49894530         MOV [R13+48], RAX               ; thread.alien-stack-pointer
; 841:       66410F2900       MOVAPD [R8], XMM0
; 846:       4983E810         SUB R8, 16
; 84A:       498B00           MOV RAX, [R8]
; 84D:       49894530         MOV [R13+48], RAX               ; thread.alien-stack-pointer
; 851:       66410F2900       MOVAPD [R8], XMM0
; 856:       4D894510         MOV [R13+16], R8                ; thread.binding-stack-pointer
; 85A:       488D5D10         LEA RBX, [RBP+16]
; 85E:       31C9             XOR ECX, ECX
; 860:       BA17010050       MOV EDX, #x50000117             ; NIL
; 865:       488BFA           MOV RDI, RDX
; 868:       488BF2           MOV RSI, RDX
; 86B:       F9               STC
; 86C:       488BE5           MOV RSP, RBP
; 86F:       5D               POP RBP
; 870:       C3               RET
; 871: L15:  488D5C24F0       LEA RBX, [RSP-16]
; 876:       4883EC20         SUB RSP, 32
; 87A:       488B1537FCFFFF   MOV RDX, [RIP-969]              ; "al_clear_to_color"
; 881:       488B3D38FCFFFF   MOV RDI, [RIP-968]              ; :VOID
; 888:       488B3539FCFFFF   MOV RSI, [RIP-967]              ; '((:STRUCT
                                                              ;    CL-LIBALLEGRO:COLOR))
; 88F:       488B053AFCFFFF   MOV RAX, [RIP-966]              ; :DEFAULT-ABI
; 896:       488943F0         MOV [RBX-16], RAX
; 89A:       B908000000       MOV ECX, 8
; 89F:       48892B           MOV [RBX], RBP
; 8A2:       488BEB           MOV RBP, RBX
; 8A5:       E8B817C1FC       CALL #x5033B062                 ; #<FDEFN CFFI::MAKE-LIBFFI-CIF>
; 8AA:       480F42E3         CMOVB RSP, RBX
; 8AE:       488B0D23FCFFFF   MOV RCX, [RIP-989]              ; '(CFFI::LIBFFI-CIF-CACHE)
; 8B5:       488BC1           MOV RAX, RCX
; 8B8:       48C1E80A         SHR RAX, 10
; 8BC:       25FFFF0F00       AND EAX, 1048575
; 8C1:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 8C6:       48895101         MOV [RCX+1], RDX
; 8CA:       4C8BC2           MOV R8, RDX
; 8CD:       E9D8FEFFFF       JMP L12
; 8D2: L16:  6A10             PUSH 16
; 8D4:       E8A76B2DFF       CALL #x52A00480                 ; SB-VM::ALLOC-TRAMP
; 8D9:       5A               POP RDX
; 8DA:       80CA0F           OR DL, 15
; 8DD:       E96FFCFFFF       JMP L0
; 8E2: L17:  6A20             PUSH 32
; 8E4:       E8976B2DFF       CALL #x52A00480                 ; SB-VM::ALLOC-TRAMP
; 8E9:       59               POP RCX
; 8EA:       E98EFCFFFF       JMP L2
; 8EF: L18:  6A10             PUSH 16
; 8F1:       E88A6B2DFF       CALL #x52A00480                 ; SB-VM::ALLOC-TRAMP
; 8F6:       5A               POP RDX
; 8F7:       80CA0F           OR DL, 15
; 8FA:       E917FDFFFF       JMP L4
; 8FF: L19:  6A20             PUSH 32
; 901:       E87A6B2DFF       CALL #x52A00480                 ; SB-VM::ALLOC-TRAMP
; 906:       59               POP RCX
; 907:       E936FDFFFF       JMP L6
; 90C: L20:  6A10             PUSH 16
; 90E:       E80D6C2DFF       CALL #x52A00520                 ; SB-VM::LIST-ALLOC-TRAMP
; 913:       58               POP RAX
; 914:       E9C4FDFFFF       JMP L8
; 919: L21:  6A10             PUSH 16
; 91B:       E8606B2DFF       CALL #x52A00480                 ; SB-VM::ALLOC-TRAMP
; 920:       5E               POP RSI
; 921:       4080CE0F         OR SIL, 15
; 925:       E9D3FEFFFF       JMP L13
SDL2
; disassembly for SDL2:SET-RENDER-DRAW-COLOR
; Size: 153 bytes. Origin: #x538644CF                         ; SDL2:SET-RENDER-DRAW-COLOR
; 4CF:       488D5C24F0       LEA RBX, [RSP-16]
; 4D4:       4883EC28         SUB RSP, 40
; 4D8:       488943F0         MOV [RBX-16], RAX
; 4DC:       48894BE8         MOV [RBX-24], RCX
; 4E0:       B90A000000       MOV ECX, 10
; 4E5:       48892B           MOV [RBX], RBP
; 4E8:       488BEB           MOV RBP, RBX
; 4EB:       E872F6ACFC       CALL #x50333B62                 ; #<FDEFN SDL2-FFI.FUNCTIONS:SDL-SET-RENDER-DRAW-COLOR>
; 4F0:       480F42E3         CMOVB RSP, RBX
; 4F4:       488BC2           MOV RAX, RDX
; 4F7:       488945F0         MOV [RBP-16], RAX
; 4FB:       488945F8         MOV [RBP-8], RAX
; 4FF:       31FF             XOR EDI, EDI
; 501:       488BD0           MOV RDX, RAX
; 504:       E887CA19FF       CALL #x52A00F90                 ; SB-VM::GENERIC-<
; 509:       488B45F0         MOV RAX, [RBP-16]
; 50D:       7C09             JL L0
; 50F:       488BD0           MOV RDX, RAX
; 512:       488BE5           MOV RSP, RBP
; 515:       F8               CLC
; 516:       5D               POP RBP
; 517:       C3               RET
; 518: L0:   4883EC10         SUB RSP, 16
; 51C:       31C9             XOR ECX, ECX
; 51E:       48892C24         MOV [RSP], RBP
; 522:       488BEC           MOV RBP, RSP
; 525:       E898ACACFC       CALL #x5032F1C2                 ; #<FDEFN SDL2-FFI.FUNCTIONS:SDL-GET-ERROR>
; 52A:       480F42E3         CMOVB RSP, RBX
; 52E:       488BCA           MOV RCX, RDX
; 531:       488D5C24F0       LEA RBX, [RSP-16]
; 536:       4883EC28         SUB RSP, 40
; 53A:       488B154FFFFFFF   MOV RDX, [RIP-177]              ; 'SDL2::SDL-RC-ERROR
; 541:       488B3D50FFFFFF   MOV RDI, [RIP-176]              ; :RC
; 548:       488B75F8         MOV RSI, [RBP-8]
; 54C:       48C743F00F831350 MOV QWORD PTR [RBX-16], #x5013830F  ; ':STRING
; 554:       48894BE8         MOV [RBX-24], RCX
; 558:       B90A000000       MOV ECX, 10
; 55D:       48892B           MOV [RBX], RBP
; 560:       488BEB           MOV RBP, RBX
; 563:       E8686B1AFF       CALL #x52A0B0D0                 ; ERROR
; disassembly for SDL2-FFI.FUNCTIONS:SDL-SET-RENDER-DRAW-COLOR
; Size: 450 bytes. Origin: #x53846118                         ; SDL2-FFI.FUNCTIONS:SDL-SET-RENDER-DRAW-COLOR
; 118:       498D40F1         LEA RAX, [R8-15]
; 11C:       A80F             TEST AL, 15
; 11E:       7503             JNE L0
; 120:       803831           CMP BYTE PTR [RAX], 49
; 123: L0:   0F847E010000     JEQ L11
; 129:       418D40FD         LEA EAX, [R8-3]
; 12D:       A80F             TEST AL, 15
; 12F:       0F8533010000     JNE L7
; 135:       418B4001         MOV EAX, [R8+1]
; 139:       817845BE030000   CMP DWORD PTR [RAX+69], 958
; 140:       0F8522010000     JNE L7
; 146:       4C8945F8         MOV [RBP-8], R8
; 14A:       4C8975E0         MOV [RBP-32], R14
; 14E:       4C895DE8         MOV [RBP-24], R11
; 152:       4C8955F0         MOV [RBP-16], R10
; 156:       4C894DD8         MOV [RBP-40], R9
; 15A:       4883EC10         SUB RSP, 16
; 15E:       498BD0           MOV RDX, R8
; 161:       B902000000       MOV ECX, 2
; 166:       48892C24         MOV [RSP], RBP
; 16A:       488BEC           MOV RBP, RSP
; 16D:       E8B0ACABFC       CALL #x50300E22                 ; #<FDEFN AUTOWRAP:WRAPPER-VALID-P>
; 172:       480F42E3         CMOVB RSP, RBX
; 176:       4C8B4DD8         MOV R9, [RBP-40]
; 17A:       4C8B55F0         MOV R10, [RBP-16]
; 17E:       4C8B5DE8         MOV R11, [RBP-24]
; 182:       4C8B75E0         MOV R14, [RBP-32]
; 186:       4C8B45F8         MOV R8, [RBP-8]
; 18A:       4881FA17010050   CMP RDX, #x50000117             ; NIL
; 191:       0F84AA000000     JEQ L6
; 197:       498B7805         MOV RDI, [R8+5]
; 19B: L1:   488D155EE00BFF   LEA RDX, [RIP-15998882]         ; = #x52904200
; 1A2:       4D896D28         MOV [R13+40], R13               ; thread.pseudo-atomic-bits
; 1A6:       498B4D70         MOV RCX, [R13+112]              ; thread.mixed-tlab
; 1AA:       488D4120         LEA RAX, [RCX+32]
; 1AE:       493B4578         CMP RAX, [R13+120]
; 1B2:       0F87F7000000     JNBE L12
; 1B8:       49894570         MOV [R13+112], RAX              ; thread.mixed-tlab
; 1BC: L2:   66C7013908       MOV WORD PTR [RCX], 2105
; 1C1:       C7410443AC1050   MOV DWORD PTR [RCX+4], 1343269955
; 1C8:       80C903           OR CL, 3
; 1CB:       4D316D28         XOR [R13+40], R13               ; thread.pseudo-atomic-bits
; 1CF:       7402             JEQ L3
; 1D1:       CC09             INT3 9                          ; pending interrupt trap
; 1D3: L3:   4D896D28         MOV [R13+40], R13               ; thread.pseudo-atomic-bits
; 1D7:       498B5D70         MOV RBX, [R13+112]              ; thread.mixed-tlab
; 1DB:       4883C310         ADD RBX, 16
; 1DF:       493B5D78         CMP RBX, [R13+120]
; 1E3:       0F87D3000000     JNBE L13
; 1E9:       49895D70         MOV [R13+112], RBX              ; thread.mixed-tlab
; 1ED:       48FFCB           DEC RBX
; 1F0: L4:   66C743F13101     MOV WORD PTR [RBX-15], 305
; 1F6:       4D316D28         XOR [R13+40], R13               ; thread.pseudo-atomic-bits
; 1FA:       7402             JEQ L5
; 1FC:       CC09             INT3 9                          ; pending interrupt trap
; 1FE: L5:   488953F9         MOV [RBX-7], RDX
; 202:       488BC1           MOV RAX, RCX
; 205:       48C1E80A         SHR RAX, 10
; 209:       25FFFF0F00       AND EAX, 1048575
; 20E:       41C6040400       MOV BYTE PTR [R12+RAX], 0
; 213:       48895905         MOV [RCX+5], RBX
; 217:       488B15AAFEFFFF   MOV RDX, [RIP-342]              ; #<ALIEN-TYPE (FUNCTION
                                                              ;               (SIGNED ..))>
; 21E:       4889510D         MOV [RCX+13], RDX
; 222:       488BD1           MOV RDX, RCX
; 225:       498BF1           MOV RSI, R9
; 228:       4C8955F0         MOV [RBP-16], R10
; 22C:       4C895DE8         MOV [RBP-24], R11
; 230:       4C8975E0         MOV [RBP-32], R14
; 234:       B90C000000       MOV ECX, 12
; 239:       FF7508           PUSH QWORD PTR [RBP+8]
; 23C:       E98134A2FC       JMP #x502696C2                  ; #<FDEFN ALIEN-FUNCALL>
; 241: L6:   4883EC10         SUB RSP, 16
; 245:       498BD8           MOV RBX, R8
; 248:       488B1581FEFFFF   MOV RDX, [RIP-383]              ; 'AUTOWRAP:INVALID-WRAPPER
; 24F:       BF7F3E1250       MOV EDI, #x50123E7F             ; ':OBJECT
; 254:       488BF3           MOV RSI, RBX
; 257:       B906000000       MOV ECX, 6
; 25C:       48892C24         MOV [RSP], RBP
; 260:       488BEC           MOV RBP, RSP
; 263:       E8684E1CFF       CALL #x52A0B0D0                 ; ERROR
; 268: L7:   4981F817010050   CMP R8, #x50000117              ; NIL
; 26F:       7532             JNE L10
; 271:       31C0             XOR EAX, EAX
; 273:       4D896D28         MOV [R13+40], R13               ; thread.pseudo-atomic-bits
; 277:       498B7D70         MOV RDI, [R13+112]              ; thread.mixed-tlab
; 27B:       4883C710         ADD RDI, 16
; 27F:       493B7D78         CMP RDI, [R13+120]
; 283:       7747             JNBE L14
; 285:       49897D70         MOV [R13+112], RDI              ; thread.mixed-tlab
; 289:       48FFCF           DEC RDI
; 28C: L8:   66C747F13101     MOV WORD PTR [RDI-15], 305
; 292:       4D316D28         XOR [R13+40], R13               ; thread.pseudo-atomic-bits
; 296:       7402             JEQ L9
; 298:       CC09             INT3 9                          ; pending interrupt trap
; 29A: L9:   488947F9         MOV [RDI-7], RAX
; 29E:       E9F8FEFFFF       JMP L1
; 2A3: L10:  CC20             INT3 32                         ; ETYPECASE-FAILURE-ERROR
; 2A5:       20               BYTE #X20                       ; R8(d)
; 2A6:       3B               BYTE #X3B                       ; '(CFFI-SYS:FOREIGN-POINTER
                                                              ;   AUTOWRAP:WRAPPER ..)
; 2A7: L11:  498BF8           MOV RDI, R8
; 2AA:       E9ECFEFFFF       JMP L1
; 2AF: L12:  6A20             PUSH 32
; 2B1:       E8CAA11BFF       CALL #x52A00480                 ; SB-VM::ALLOC-TRAMP
; 2B6:       59               POP RCX
; 2B7:       E900FFFFFF       JMP L2
; 2BC: L13:  6A10             PUSH 16
; 2BE:       E8BDA11BFF       CALL #x52A00480                 ; SB-VM::ALLOC-TRAMP
; 2C3:       5B               POP RBX
; 2C4:       80CB0F           OR BL, 15
; 2C7:       E924FFFFFF       JMP L4
; 2CC: L14:  6A10             PUSH 16
; 2CE:       E8ADA11BFF       CALL #x52A00480                 ; SB-VM::ALLOC-TRAMP
; 2D3:       5F               POP RDI
; 2D4:       4080CF0F         OR DIL, 15
; 2D8:       EBB2             JMP L8

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment