Announcement

Collapse

Forum Guidelines

This forum is for finished source code that is working properly. If you have questions about this or any other source code, please post it in one of the Discussion Forums, not here.
See more
See less

LDE64 - x86 & x64 instruction-length disassembler engine

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • PBWin/PBCC LDE64 - x86 & x64 instruction-length disassembler engine

    LDE64 is a compact (only ~7kb and isnt compressed), fast, inline asm, easy-to-use instruction-length disassembler engine, written in assembly, and supports the instruction disassembly of both x86 and x64 machine code.

    Example: The x86 assembly instruction "sub esp, 4" compiles to 83 EC 04 (3 bytes length) - LDE64 therefore returns 3 (in eax) when you point it at the first byte of that instruction.
    You also therefore know the offset of the next instruction (CurOffset + InstructLen), so you can continue linear disassembling instruction-after-instruction.

    Note: This is the 32-bit version of the engine (as PB is a 32-bit compiler).
    A 64-bit version is also available, but both versions support disassembly of both x86 & x64 instructions.

    Credit: LDE64 engine is Copyright (C) BeatriX. Freeware. GPL/LGPL license

    --

    LDE-TEST.BAS
    Code:
    #COMPILE EXE
     
    FUNCTION PBMAIN () AS LONG
    #REGISTER NONE
    
    LOCAL sCode AS STRING, bPtr AS BYTE PTR, lLen AS LONG
    sCode = CHR$([B][COLOR="DarkSlateBlue"]&h55, &h8B,&hEC, &h53, &h56, &h57, &hBB,&h00,&h00,&h40,&h00[/COLOR][/B])  '// code to disassemble
    [COLOR="DarkGreen"]'  [U]RAW BYTES:[/U]       [U]DISASSEMBLY:[/U]          [U][B]LENGTH:[/B][/U]
    '   [COLOR="DarkSlateBlue"]55[/COLOR]               push ebp              1
    '   [COLOR="DarkSlateBlue"]8BEC[/COLOR]             mov ebp, esp          2
    '   [COLOR="DarkSlateBlue"]53[/COLOR]               push ebx              1
    '   [COLOR="DarkSlateBlue"]56[/COLOR]               push esi              1
    '   [COLOR="DarkSlateBlue"]57[/COLOR]               push edi              1
    '   [COLOR="DarkSlateBlue"]BB 00004000[/COLOR]      mov ebx, 00400000     5
    '[I]Expected disassembly output:[/I] 1, 2, 1, 1, 1, 5[/COLOR]
    
    
    bPtr = STRPTR(sCode)
    DO WHILE bPtr < (STRPTR(sCode) + LEN(sCode))
     ! push 0                   [COLOR="DarkGreen"];Disassembly mode (0=x86, 64=x64)[/COLOR]
     ! push bPtr                [COLOR="DarkGreen"];Offset to disassemble from[/COLOR]
     ! call LDE                 [COLOR="DarkGreen"];Call disassembly engine[/COLOR]
     ! mov lLen, eax            [COLOR="DarkGreen"];Resulting instruction length = eax[/COLOR]
     ? "Len=" & STR$(lLen)      [COLOR="DarkGreen"]'Display result[/COLOR]
     IF lLen = -1 THEN EXIT DO  [COLOR="DarkGreen"]'Exit disassembly if last disasm failed[/COLOR]
     bPtr = bPtr + lLen         [COLOR="DarkGreen"]'Skip to the next instruction[/COLOR]
    LOOP
     
    ? "Finished disassembly."
    WAITKEY$
    EXIT FUNCTION
    
    #INCLUDE "lde64.inc"
    
    END FUNCTION
    LDE64.INC
    Code:
    [COLOR="DarkSlateGray"]'// LDE64: x86/x64 Length Disassembly Engine, by BeatriX [url=http://www.beaengine.org/licence]http://www.beaengine.org/licence[/url]
    '// Disassembly of the following engine code: [url=http://pastebin.com/9XKaWjAW]http://pastebin.com/9XKaWjAW[/url][/COLOR]
    [B]LDE:[/B]
    !db &h55,&h83,&hEC,&h27,&h89,&hE5,&h51,&h52,&h56,&hE8,&h80,&h10,&h00,&h00,&h60,&h11
    !db &h00,&h00,&h5C,&h11,&h00,&h00,&h58,&h11,&h00,&h00,&h54,&h11,&h00,&h00,&h64,&h11
    !db &h00,&h00,&h9C,&h11,&h00,&h00,&h88,&h11,&h00,&h00,&h84,&h11,&h00,&h00,&h40,&h11
    !db &h00,&h00,&h3C,&h11,&h00,&h00,&h38,&h11,&h00,&h00,&h34,&h11,&h00,&h00,&h44,&h11
    !db &h00,&h00,&h7C,&h11,&h00,&h00,&h68,&h11,&h00,&h00,&h39,&h1A,&h00,&h00,&h20,&h11
    !db &h00,&h00,&h1C,&h11,&h00,&h00,&h18,&h11,&h00,&h00,&h14,&h11,&h00,&h00,&h24,&h11
    !db &h00,&h00,&h5C,&h11,&h00,&h00,&h48,&h11,&h00,&h00,&h44,&h11,&h00,&h00,&h00,&h11
    !db &h00,&h00,&hFC,&h10,&h00,&h00,&hF8,&h10,&h00,&h00,&hF4,&h10,&h00,&h00,&h04,&h11
    !db &h00,&h00,&h3C,&h11,&h00,&h00,&h28,&h11,&h00,&h00,&h24,&h11,&h00,&h00,&hE0,&h10
    !db &h00,&h00,&hDC,&h10,&h00,&h00,&hD8,&h10,&h00,&h00,&hD4,&h10,&h00,&h00,&hE4,&h10
    !db &h00,&h00,&h1C,&h11,&h00,&h00,&hA6,&h11,&h00,&h00,&h04,&h11,&h00,&h00,&hC0,&h10
    !db &h00,&h00,&hBC,&h10,&h00,&h00,&hB8,&h10,&h00,&h00,&hB4,&h10,&h00,&h00,&hC4,&h10
    !db &h00,&h00,&hFC,&h10,&h00,&h00,&h86,&h11,&h00,&h00,&hE4,&h10,&h00,&h00,&hA0,&h10
    !db &h00,&h00,&h9C,&h10,&h00,&h00,&h98,&h10,&h00,&h00,&h94,&h10,&h00,&h00,&hA4,&h10
    !db &h00,&h00,&hDC,&h10,&h00,&h00,&h66,&h11,&h00,&h00,&hC4,&h10,&h00,&h00,&h80,&h10
    !db &h00,&h00,&h7C,&h10,&h00,&h00,&h78,&h10,&h00,&h00,&h74,&h10,&h00,&h00,&h84,&h10
    !db &h00,&h00,&hBC,&h10,&h00,&h00,&h46,&h11,&h00,&h00,&hA4,&h10,&h00,&h00,&h10,&h11
    !db &h00,&h00,&h0C,&h11,&h00,&h00,&h08,&h11,&h00,&h00,&h04,&h11,&h00,&h00,&h00,&h11
    !db &h00,&h00,&hFC,&h10,&h00,&h00,&hF8,&h10,&h00,&h00,&hF4,&h10,&h00,&h00,&hC4,&h10
    !db &h00,&h00,&hC0,&h10,&h00,&h00,&hBC,&h10,&h00,&h00,&hB8,&h10,&h00,&h00,&hB4,&h10
    !db &h00,&h00,&hB0,&h10,&h00,&h00,&hAC,&h10,&h00,&h00,&hA8,&h10,&h00,&h00,&h30,&h10
    !db &h00,&h00,&h2C,&h10,&h00,&h00,&h28,&h10,&h00,&h00,&h24,&h10,&h00,&h00,&h20,&h10
    !db &h00,&h00,&h1C,&h10,&h00,&h00,&h18,&h10,&h00,&h00,&h14,&h10,&h00,&h00,&h10,&h10
    !db &h00,&h00,&h0C,&h10,&h00,&h00,&h08,&h10,&h00,&h00,&h04,&h10,&h00,&h00,&h00,&h10
    !db &h00,&h00,&hFC,&h0F,&h00,&h00,&hF8,&h0F,&h00,&h00,&hF4,&h0F,&h00,&h00,&hF0,&h0F
    !db &h00,&h00,&hEC,&h0F,&h00,&h00,&h0E,&h11,&h00,&h00,&hD4,&h0F,&h00,&h00,&hAE,&h10
    !db &h00,&h00,&hAA,&h10,&h00,&h00,&hBF,&h17,&h00,&h00,&hEC,&h17,&h00,&h00,&h01,&h12
    !db &h00,&h00,&hA4,&h11,&h00,&h00,&hCC,&h0F,&h00,&h00,&h2F,&h10,&h00,&h00,&hC0,&h0F
    !db &h00,&h00,&hBC,&h0F,&h00,&h00,&hB8,&h0F,&h00,&h00,&hB4,&h0F,&h00,&h00,&hB4,&h0F
    !db &h00,&h00,&hB0,&h0F,&h00,&h00,&hAC,&h0F,&h00,&h00,&hA8,&h0F,&h00,&h00,&hA4,&h0F
    !db &h00,&h00,&hA0,&h0F,&h00,&h00,&h9C,&h0F,&h00,&h00,&h98,&h0F,&h00,&h00,&h94,&h0F
    !db &h00,&h00,&h90,&h0F,&h00,&h00,&h8C,&h0F,&h00,&h00,&h88,&h0F,&h00,&h00,&h84,&h0F
    !db &h00,&h00,&h80,&h0F,&h00,&h00,&h7C,&h0F,&h00,&h00,&h78,&h0F,&h00,&h00,&hDB,&h0F
    !db &h00,&h00,&hE6,&h11,&h00,&h00,&hCC,&h11,&h00,&h00,&hCF,&h0F,&h00,&h00,&h50,&h0F
    !db &h00,&h00,&h4C,&h0F,&h00,&h00,&h48,&h0F,&h00,&h00,&h44,&h0F,&h00,&h00,&h40,&h0F
    !db &h00,&h00,&h3C,&h0F,&h00,&h00,&h38,&h0F,&h00,&h00,&h34,&h0F,&h00,&h00,&h30,&h0F
    !db &h00,&h00,&h2C,&h0F,&h00,&h00,&h28,&h0F,&h00,&h00,&h4E,&h11,&h00,&h00,&h30,&h0F
    !db &h00,&h00,&h2C,&h0F,&h00,&h00,&h28,&h0F,&h00,&h00,&h24,&h0F,&h00,&h00,&h20,&h0F
    !db &h00,&h00,&h1C,&h0F,&h00,&h00,&h18,&h0F,&h00,&h00,&h14,&h0F,&h00,&h00,&h10,&h0F
    !db &h00,&h00,&h0C,&h0F,&h00,&h00,&hC3,&h10,&h00,&h00,&h04,&h0F,&h00,&h00,&h00,&h0F
    !db &h00,&h00,&hFC,&h0E,&h00,&h00,&hF8,&h0E,&h00,&h00,&hF4,&h0E,&h00,&h00,&h44,&h10
    !db &h00,&h00,&h50,&h10,&h00,&h00,&h3C,&h10,&h00,&h00,&h48,&h10,&h00,&h00,&hE0,&h0E
    !db &h00,&h00,&hDC,&h0E,&h00,&h00,&hD8,&h0E,&h00,&h00,&hD4,&h0E,&h00,&h00,&hD4,&h0E
    !db &h00,&h00,&h0C,&h0F,&h00,&h00,&hC8,&h0E,&h00,&h00,&hC4,&h0E,&h00,&h00,&hC0,&h0E
    !db &h00,&h00,&hBC,&h0E,&h00,&h00,&hB8,&h0E,&h00,&h00,&hB4,&h0E,&h00,&h00,&hB4,&h0E
    !db &h00,&h00,&hB0,&h0E,&h00,&h00,&hAC,&h0E,&h00,&h00,&hA8,&h0E,&h00,&h00,&hA4,&h0E
    !db &h00,&h00,&hA0,&h0E,&h00,&h00,&h9C,&h0E,&h00,&h00,&h98,&h0E,&h00,&h00,&hE0,&h0E
    !db &h00,&h00,&hDC,&h0E,&h00,&h00,&hD8,&h0E,&h00,&h00,&hD4,&h0E,&h00,&h00,&hD0,&h0E
    !db &h00,&h00,&hCC,&h0E,&h00,&h00,&hC8,&h0E,&h00,&h00,&hC4,&h0E,&h00,&h00,&hDB,&h0E
    !db &h00,&h00,&hD7,&h0E,&h00,&h00,&hB7,&h0F,&h00,&h00,&h64,&h0E,&h00,&h00,&h86,&h0F
    !db &h00,&h00,&h82,&h0F,&h00,&h00,&hC3,&h0E,&h00,&h00,&h45,&h0F,&h00,&h00,&h6C,&h0F
    !db &h00,&h00,&h4C,&h0E,&h00,&h00,&h97,&h0F,&h00,&h00,&h44,&h0E,&h00,&h00,&h40,&h0E
    !db &h00,&h00,&h40,&h0E,&h00,&h00,&h68,&h0E,&h00,&h00,&h34,&h0E,&h00,&h00,&h20,&h0E
    !db &h00,&h00,&h1C,&h0E,&h00,&h00,&h18,&h0E,&h00,&h00,&h14,&h0E,&h00,&h00,&h2B,&h0F
    !db &h00,&h00,&h27,&h0F,&h00,&h00,&h18,&h0E,&h00,&h00,&h14,&h0E,&h00,&h00,&h8A,&h17
    !db &h00,&h00,&hBC,&h17,&h00,&h00,&h51,&h18,&h00,&h00,&hAF,&h18,&h00,&h00,&h2A,&h19
    !db &h00,&h00,&h78,&h19,&h00,&h00,&hDE,&h19,&h00,&h00,&h31,&h1A,&h00,&h00,&hF4,&h0D
    !db &h00,&h00,&hF0,&h0D,&h00,&h00,&hEC,&h0D,&h00,&h00,&hE8,&h0D,&h00,&h00,&hE4,&h0D
    !db &h00,&h00,&hE0,&h0D,&h00,&h00,&hDC,&h0D,&h00,&h00,&hD8,&h0D,&h00,&h00,&h10,&h0E
    !db &h00,&h00,&h0C,&h0E,&h00,&h00,&hC6,&h0F,&h00,&h00,&hC8,&h0D,&h00,&h00,&hC0,&h0D
    !db &h00,&h00,&hBC,&h0D,&h00,&h00,&hB8,&h0D,&h00,&h00,&hB4,&h0D,&h00,&h00,&h7E,&h0E
    !db &h00,&h00,&hAC,&h0D,&h00,&h00,&hF3,&h15,&h00,&h00,&h36,&h16,&h00,&h00,&hA0,&h0D
    !db &h00,&h00,&h9C,&h0D,&h00,&h00,&h2C,&h10,&h00,&h00,&h5A,&h10,&h00,&h00,&h90,&h0D
    !db &h00,&h00,&h8C,&h0D,&h00,&h00,&h88,&h0D,&h00,&h00,&h84,&h0D,&h00,&h00,&h80,&h0D
    !db &h00,&h00,&h7C,&h0D,&h00,&h00,&hA8,&h10,&h00,&h00,&hC5,&h10,&h00,&h00,&hE2,&h10
    !db &h00,&h00,&hFF,&h10,&h00,&h00,&h58,&h0D,&h00,&h00,&h54,&h0D,&h00,&h00,&hBE,&h0F
    !db &h00,&h00,&h5C,&h0D,&h00,&h00,&h58,&h0D,&h00,&h00,&h54,&h0D,&h00,&h00,&h50,&h0D
    !db &h00,&h00,&h4C,&h0D,&h00,&h00,&hA6,&h0F,&h00,&h00,&h44,&h0D,&h00,&h00,&h9E,&h0F
    !db &h00,&h00,&h2C,&h0D,&h00,&h00,&h38,&h0D,&h00,&h00,&h92,&h0F,&h00,&h00,&h20,&h0D
    !db &h00,&h00,&h1C,&h0D,&h00,&h00,&h18,&h0D,&h00,&h00,&h14,&h0D,&h00,&h00,&h10,&h0D
    !db &h00,&h00,&h0C,&h0D,&h00,&h00,&h08,&h0D,&h00,&h00,&h04,&h0D,&h00,&h00,&h85,&h14
    !db &h00,&h00,&hFC,&h0C,&h00,&h00,&hF8,&h0C,&h00,&h00,&hF4,&h0C,&h00,&h00,&hF0,&h0C
    !db &h00,&h00,&hEC,&h0C,&h00,&h00,&hE8,&h0C,&h00,&h00,&hE4,&h0C,&h00,&h00,&h28,&h0E
    !db &h00,&h00,&h24,&h0E,&h00,&h00,&h20,&h0E,&h00,&h00,&h1C,&h0E,&h00,&h00,&h3E,&h0F
    !db &h00,&h00,&h3A,&h0F,&h00,&h00,&h36,&h0F,&h00,&h00,&h32,&h0F,&h00,&h00,&hC0,&h0C
    !db &h00,&h00,&hBC,&h0C,&h00,&h00,&hB8,&h0C,&h00,&h00,&hB4,&h0C,&h00,&h00,&hB0,&h0C
    !db &h00,&h00,&hAC,&h0C,&h00,&h00,&hA8,&h0C,&h00,&h00,&hA4,&h0C,&h00,&h00,&hB0,&h0C
    !db &h00,&h00,&hAC,&h0C,&h00,&h00,&hA8,&h0C,&h00,&h00,&hA4,&h0C,&h00,&h00,&hA0,&h0C
    !db &h00,&h00,&h9C,&h0C,&h00,&h00,&hF6,&h0E,&h00,&h00,&hF2,&h0E,&h00,&h00,&hBC,&h15
    !db &h00,&h00,&hEA,&h0E,&h00,&h00,&hDB,&h15,&h00,&h00,&hE2,&h0E,&h00,&h00,&hDE,&h0E
    !db &h00,&h00,&hDA,&h0E,&h00,&h00,&hD6,&h0E,&h00,&h00,&hD2,&h0E,&h00,&h00,&h60,&h0C
    !db &h00,&h00,&h5C,&h0C,&h00,&h00,&h58,&h0C,&h00,&h00,&h54,&h0C,&h00,&h00,&h50,&h0C
    !db &h00,&h00,&h4C,&h0C,&h00,&h00,&h48,&h0C,&h00,&h00,&h44,&h0C,&h00,&h00,&h40,&h0C
    !db &h00,&h00,&h3C,&h0C,&h00,&h00,&h38,&h0C,&h00,&h00,&h34,&h0C,&h00,&h00,&h30,&h0C
    !db &h00,&h00,&h2C,&h0C,&h00,&h00,&h28,&h0C,&h00,&h00,&h24,&h0C,&h00,&h00,&h20,&h0C
    !db &h00,&h00,&h1C,&h0C,&h00,&h00,&h18,&h0C,&h00,&h00,&h14,&h0C,&h00,&h00,&h10,&h0C
    !db &h00,&h00,&h0C,&h0C,&h00,&h00,&h08,&h0C,&h00,&h00,&h04,&h0C,&h00,&h00,&h00,&h0C
    !db &h00,&h00,&hFC,&h0B,&h00,&h00,&hF8,&h0B,&h00,&h00,&hF4,&h0B,&h00,&h00,&hF0,&h0B
    !db &h00,&h00,&hEC,&h0B,&h00,&h00,&hE8,&h0B,&h00,&h00,&hE4,&h0B,&h00,&h00,&hE0,&h0B
    !db &h00,&h00,&hDC,&h0B,&h00,&h00,&hD8,&h0B,&h00,&h00,&hD4,&h0B,&h00,&h00,&hD0,&h0B
    !db &h00,&h00,&hCC,&h0B,&h00,&h00,&hC8,&h0B,&h00,&h00,&hC4,&h0B,&h00,&h00,&hC0,&h0B
    !db &h00,&h00,&hBC,&h0B,&h00,&h00,&hB8,&h0B,&h00,&h00,&hB4,&h0B,&h00,&h00,&hC9,&h0B
    !db &h00,&h00,&hC5,&h0B,&h00,&h00,&hA8,&h0B,&h00,&h00,&hA4,&h0B,&h00,&h00,&h1B,&h0C
    !db &h00,&h00,&h8E,&h10,&h00,&h00,&h15,&h11,&h00,&h00,&h9C,&h11,&h00,&h00,&h90,&h0B
    !db &h00,&h00,&h8C,&h0B,&h00,&h00,&h88,&h0B,&h00,&h00,&h94,&h0B,&h00,&h00,&h80,&h0B
    !db &h00,&h00,&h7C,&h0B,&h00,&h00,&hE6,&h0D,&h00,&h00,&hE2,&h0D,&h00,&h00,&h70,&h0B
    !db &h00,&h00,&h6C,&h0B,&h00,&h00,&h68,&h0B,&h00,&h00,&h64,&h0B,&h00,&h00,&hB0,&h0B
    !db &h00,&h00,&hAC,&h0B,&h00,&h00,&h89,&h0C,&h00,&h00,&h85,&h0C,&h00,&h00,&h81,&h0C
    !db &h00,&h00,&h7D,&h0C,&h00,&h00,&h98,&h0B,&h00,&h00,&h94,&h0B,&h00,&h00,&h90,&h0B
    !db &h00,&h00,&h8C,&h0B,&h00,&h00,&h88,&h0B,&h00,&h00,&h84,&h0B,&h00,&h00,&h80,&h0B
    !db &h00,&h00,&h7C,&h0B,&h00,&h00,&h78,&h0B,&h00,&h00,&h74,&h0B,&h00,&h00,&h20,&h0B
    !db &h00,&h00,&h1C,&h0B,&h00,&h00,&h18,&h0B,&h00,&h00,&h14,&h0B,&h00,&h00,&h10,&h0B
    !db &h00,&h00,&h0C,&h0B,&h00,&h00,&h08,&h0B,&h00,&h00,&h04,&h0B,&h00,&h00,&h00,&h0B
    !db &h00,&h00,&hFC,&h0A,&h00,&h00,&hF8,&h0A,&h00,&h00,&hF4,&h0A,&h00,&h00,&hF0,&h0A
    !db &h00,&h00,&hEC,&h0A,&h00,&h00,&hE8,&h0A,&h00,&h00,&hE4,&h0A,&h00,&h00,&hF0,&h0A
    !db &h00,&h00,&hEC,&h0A,&h00,&h00,&hE8,&h0A,&h00,&h00,&hD4,&h0A,&h00,&h00,&h4B,&h0B
    !db &h00,&h00,&hCC,&h0A,&h00,&h00,&h36,&h0D,&h00,&h00,&h32,&h0D,&h00,&h00,&hD0,&h0A
    !db &h00,&h00,&hCC,&h0A,&h00,&h00,&hC8,&h0A,&h00,&h00,&hB4,&h0A,&h00,&h00,&h2B,&h0B
    !db &h00,&h00,&hAC,&h0A,&h00,&h00,&h68,&h11,&h00,&h00,&hA4,&h0A,&h00,&h00,&hA0,&h0A
    !db &h00,&h00,&h9C,&h0A,&h00,&h00,&h98,&h0A,&h00,&h00,&h94,&h0A,&h00,&h00,&h90,&h0A
    !db &h00,&h00,&h8C,&h0A,&h00,&h00,&h88,&h0A,&h00,&h00,&h84,&h0A,&h00,&h00,&h80,&h0A
    !db &h00,&h00,&h8C,&h0A,&h00,&h00,&hEC,&h0E,&h00,&h00,&h74,&h0A,&h00,&h00,&h70,&h0A
    !db &h00,&h00,&h6C,&h0A,&h00,&h00,&h68,&h0A,&h00,&h00,&h64,&h0A,&h00,&h00,&h60,&h0A
    !db &h00,&h00,&h5C,&h0A,&h00,&h00,&h58,&h0A,&h00,&h00,&h54,&h0A,&h00,&h00,&h50,&h0A
    !db &h00,&h00,&h4C,&h0A,&h00,&h00,&h48,&h0A,&h00,&h00,&hD9,&h0E,&h00,&h00,&h50,&h0A
    !db &h00,&h00,&h4C,&h0A,&h00,&h00,&h48,&h0A,&h00,&h00,&h44,&h0A,&h00,&h00,&h40,&h0A
    !db &h00,&h00,&h3C,&h0A,&h00,&h00,&h38,&h0A,&h00,&h00,&h34,&h0A,&h00,&h00,&h20,&h0A
    !db &h00,&h00,&h1C,&h0A,&h00,&h00,&h18,&h0A,&h00,&h00,&h14,&h0A,&h00,&h00,&h10,&h0A
    !db &h00,&h00,&h0C,&h0A,&h00,&h00,&hA9,&h0B,&h00,&h00,&h04,&h0A,&h00,&h00,&h00,&h0A
    !db &h00,&h00,&hFC,&h09,&h00,&h00,&hF8,&h09,&h00,&h00,&hF4,&h09,&h00,&h00,&hF0,&h09
    !db &h00,&h00,&hEC,&h09,&h00,&h00,&hE8,&h09,&h00,&h00,&hE4,&h09,&h00,&h00,&hE0,&h09
    !db &h00,&h00,&hDC,&h09,&h00,&h00,&hD8,&h09,&h00,&h00,&hD4,&h09,&h00,&h00,&hD0,&h09
    !db &h00,&h00,&hCC,&h09,&h00,&h00,&h69,&h0B,&h00,&h00,&hC4,&h09,&h00,&h00,&hC0,&h09
    !db &h00,&h00,&hBC,&h09,&h00,&h00,&hB8,&h09,&h00,&h00,&hB4,&h09,&h00,&h00,&hB0,&h09
    !db &h00,&h00,&hAC,&h09,&h00,&h00,&hA8,&h09,&h00,&h00,&hA4,&h09,&h00,&h00,&hFC,&h0B
    !db &h00,&h00,&h9C,&h09,&h00,&h00,&h98,&h09,&h00,&h00,&h94,&h09,&h00,&h00,&h90,&h09
    !db &h00,&h00,&h8C,&h09,&h00,&h00,&h88,&h09,&h00,&h00,&h84,&h09,&h00,&h00,&h80,&h09
    !db &h00,&h00,&h7C,&h09,&h00,&h00,&h78,&h09,&h00,&h00,&h74,&h09,&h00,&h00,&h70,&h09
    !db &h00,&h00,&h6C,&h09,&h00,&h00,&h68,&h09,&h00,&h00,&hD2,&h0B,&h00,&h00,&h60,&h09
    !db &h00,&h00,&h5C,&h09,&h00,&h00,&h58,&h09,&h00,&h00,&h54,&h09,&h00,&h00,&h50,&h09
    !db &h00,&h00,&h4C,&h09,&h00,&h00,&h48,&h09,&h00,&h00,&h44,&h09,&h00,&h00,&h40,&h09
    !db &h00,&h00,&h3C,&h09,&h00,&h00,&h38,&h09,&h00,&h00,&h34,&h09,&h00,&h00,&h9E,&h0B
    !db &h00,&h00,&h9A,&h0B,&h00,&h00,&h96,&h0B,&h00,&h00,&h92,&h0B,&h00,&h00,&h39,&h09
    !db &h00,&h00,&h8A,&h0B,&h00,&h00,&h86,&h0B,&h00,&h00,&h82,&h0B,&h00,&h00,&h29,&h09
    !db &h00,&h00,&h25,&h09,&h00,&h00,&h76,&h0B,&h00,&h00,&h1D,&h09,&h00,&h00,&h6E,&h0B
    !db &h00,&h00,&h6A,&h0B,&h00,&h00,&h66,&h0B,&h00,&h00,&h62,&h0B,&h00,&h00,&hF0,&h08
    !db &h00,&h00,&hEC,&h08,&h00,&h00,&hE8,&h08,&h00,&h00,&h52,&h0B,&h00,&h00,&hF9,&h08
    !db &h00,&h00,&hF5,&h08,&h00,&h00,&hF1,&h08,&h00,&h00,&hED,&h08,&h00,&h00,&hE9,&h08
    !db &h00,&h00,&hE5,&h08,&h00,&h00,&h36,&h0B,&h00,&h00,&h32,&h0B,&h00,&h00,&hD9,&h08
    !db &h00,&h00,&hD5,&h08,&h00,&h00,&hD1,&h08,&h00,&h00,&hCD,&h08,&h00,&h00,&h1E,&h0B
    !db &h00,&h00,&h1A,&h0B,&h00,&h00,&h16,&h0B,&h00,&h00,&h12,&h0B,&h00,&h00,&hB9,&h08
    !db &h00,&h00,&hB5,&h08,&h00,&h00,&hB1,&h08,&h00,&h00,&hAD,&h08,&h00,&h00,&hA9,&h08
    !db &h00,&h00,&hA5,&h08,&h00,&h00,&hF6,&h0A,&h00,&h00,&h9D,&h08,&h00,&h00,&h99,&h08
    !db &h00,&h00,&h95,&h08,&h00,&h00,&h91,&h08,&h00,&h00,&h8D,&h08,&h00,&h00,&h89,&h08
    !db &h00,&h00,&h85,&h08,&h00,&h00,&h81,&h08,&h00,&h00,&h7D,&h08,&h00,&h00,&h79,&h08
    !db &h00,&h00,&h75,&h08,&h00,&h00,&hC6,&h0A,&h00,&h00,&hC2,&h0A,&h00,&h00,&hBE,&h0A
    !db &h00,&h00,&hBA,&h0A,&h00,&h00,&hB6,&h0A,&h00,&h00,&hB2,&h0A,&h00,&h00,&hAE,&h0A
    !db &h00,&h00,&hAA,&h0A,&h00,&h00,&hA6,&h0A,&h00,&h00,&hA2,&h0A,&h00,&h00,&h9E,&h0A
    !db &h00,&h00,&h9A,&h0A,&h00,&h00,&h96,&h0A,&h00,&h00,&h92,&h0A,&h00,&h00,&h8E,&h0A
    !db &h00,&h00,&h8A,&h0A,&h00,&h00,&h86,&h0A,&h00,&h00,&h82,&h0A,&h00,&h00,&h7E,&h0A
    !db &h00,&h00,&h7A,&h0A,&h00,&h00,&h76,&h0A,&h00,&h00,&h72,&h0A,&h00,&h00,&h6E,&h0A
    !db &h00,&h00,&h6A,&h0A,&h00,&h00,&h66,&h0A,&h00,&h00,&h62,&h0A,&h00,&h00,&h5E,&h0A
    !db &h00,&h00,&h5A,&h0A,&h00,&h00,&h56,&h0A,&h00,&h00,&h52,&h0A,&h00,&h00,&h4E,&h0A
    !db &h00,&h00,&h4A,&h0A,&h00,&h00,&h46,&h0A,&h00,&h00,&h42,&h0A,&h00,&h00,&h3E,&h0A
    !db &h00,&h00,&h3A,&h0A,&h00,&h00,&h36,&h0A,&h00,&h00,&h32,&h0A,&h00,&h00,&h2E,&h0A
    !db &h00,&h00,&h2A,&h0A,&h00,&h00,&h26,&h0A,&h00,&h00,&h22,&h0A,&h00,&h00,&h1E,&h0A
    !db &h00,&h00,&h1A,&h0A,&h00,&h00,&h16,&h0A,&h00,&h00,&h12,&h0A,&h00,&h00,&h0E,&h0A
    !db &h00,&h00,&h0A,&h0A,&h00,&h00,&h06,&h0A,&h00,&h00,&h02,&h0A,&h00,&h00,&hFE,&h09
    !db &h00,&h00,&hFA,&h09,&h00,&h00,&hF6,&h09,&h00,&h00,&hF2,&h09,&h00,&h00,&hEE,&h09
    !db &h00,&h00,&hEA,&h09,&h00,&h00,&hE6,&h09,&h00,&h00,&hE2,&h09,&h00,&h00,&hDE,&h09
    !db &h00,&h00,&hDA,&h09,&h00,&h00,&hD6,&h09,&h00,&h00,&hD2,&h09,&h00,&h00,&hCE,&h09
    !db &h00,&h00,&hCA,&h09,&h00,&h00,&hC6,&h09,&h00,&h00,&hC2,&h09,&h00,&h00,&hBE,&h09
    !db &h00,&h00,&hBA,&h09,&h00,&h00,&hB6,&h09,&h00,&h00,&hB2,&h09,&h00,&h00,&hAE,&h09
    !db &h00,&h00,&hAA,&h09,&h00,&h00,&hA6,&h09,&h00,&h00,&hA2,&h09,&h00,&h00,&h9E,&h09
    !db &h00,&h00,&h9A,&h09,&h00,&h00,&h96,&h09,&h00,&h00,&h92,&h09,&h00,&h00,&h8E,&h09
    !db &h00,&h00,&h8A,&h09,&h00,&h00,&h86,&h09,&h00,&h00,&h82,&h09,&h00,&h00,&h7E,&h09
    !db &h00,&h00,&h7A,&h09,&h00,&h00,&h76,&h09,&h00,&h00,&h72,&h09,&h00,&h00,&h6E,&h09
    !db &h00,&h00,&h6A,&h09,&h00,&h00,&h66,&h09,&h00,&h00,&h62,&h09,&h00,&h00,&h5E,&h09
    !db &h00,&h00,&h5A,&h09,&h00,&h00,&h56,&h09,&h00,&h00,&h52,&h09,&h00,&h00,&h4E,&h09
    !db &h00,&h00,&h4A,&h09,&h00,&h00,&h46,&h09,&h00,&h00,&h42,&h09,&h00,&h00,&h3E,&h09
    !db &h00,&h00,&h3A,&h09,&h00,&h00,&h36,&h09,&h00,&h00,&h32,&h09,&h00,&h00,&h2E,&h09
    !db &h00,&h00,&h2A,&h09,&h00,&h00,&h26,&h09,&h00,&h00,&h22,&h09,&h00,&h00,&h1E,&h09
    !db &h00,&h00,&h1A,&h09,&h00,&h00,&h16,&h09,&h00,&h00,&h12,&h09,&h00,&h00,&h0E,&h09
    !db &h00,&h00,&h0A,&h09,&h00,&h00,&h06,&h09,&h00,&h00,&h02,&h09,&h00,&h00,&hFE,&h08
    !db &h00,&h00,&hFA,&h08,&h00,&h00,&hF6,&h08,&h00,&h00,&hF2,&h08,&h00,&h00,&hEE,&h08
    !db &h00,&h00,&hEA,&h08,&h00,&h00,&hE6,&h08,&h00,&h00,&hE2,&h08,&h00,&h00,&hDE,&h08
    !db &h00,&h00,&hDA,&h08,&h00,&h00,&hD6,&h08,&h00,&h00,&hD2,&h08,&h00,&h00,&hCE,&h08
    !db &h00,&h00,&hCA,&h08,&h00,&h00,&hC6,&h08,&h00,&h00,&hC2,&h08,&h00,&h00,&hBE,&h08
    !db &h00,&h00,&hBA,&h08,&h00,&h00,&hB6,&h08,&h00,&h00,&hB2,&h08,&h00,&h00,&hAE,&h08
    !db &h00,&h00,&hAA,&h08,&h00,&h00,&hA6,&h08,&h00,&h00,&hA2,&h08,&h00,&h00,&h9E,&h08
    !db &h00,&h00,&h9A,&h08,&h00,&h00,&h96,&h08,&h00,&h00,&h92,&h08,&h00,&h00,&h8E,&h08
    !db &h00,&h00,&h8A,&h08,&h00,&h00,&h86,&h08,&h00,&h00,&h82,&h08,&h00,&h00,&h7E,&h08
    !db &h00,&h00,&h7A,&h08,&h00,&h00,&h76,&h08,&h00,&h00,&h72,&h08,&h00,&h00,&h6E,&h08
    !db &h00,&h00,&h6A,&h08,&h00,&h00,&h66,&h08,&h00,&h00,&h62,&h08,&h00,&h00,&h5E,&h08
    !db &h00,&h00,&h5A,&h08,&h00,&h00,&h56,&h08,&h00,&h00,&h52,&h08,&h00,&h00,&h4E,&h08
    !db &h00,&h00,&h4A,&h08,&h00,&h00,&h46,&h08,&h00,&h00,&h42,&h08,&h00,&h00,&h3E,&h08
    !db &h00,&h00,&h3A,&h08,&h00,&h00,&h36,&h08,&h00,&h00,&h32,&h08,&h00,&h00,&h2E,&h08
    !db &h00,&h00,&h2A,&h08,&h00,&h00,&h26,&h08,&h00,&h00,&h22,&h08,&h00,&h00,&h1E,&h08
    !db &h00,&h00,&h1A,&h08,&h00,&h00,&h16,&h08,&h00,&h00,&h12,&h08,&h00,&h00,&h2F,&h07
    !db &h00,&h00,&h2B,&h07,&h00,&h00,&h06,&h08,&h00,&h00,&h02,&h08,&h00,&h00,&hFE,&h07
    !db &h00,&h00,&hFA,&h07,&h00,&h00,&hF6,&h07,&h00,&h00,&hF2,&h07,&h00,&h00,&hEE,&h07
    !db &h00,&h00,&hEA,&h07,&h00,&h00,&hE6,&h07,&h00,&h00,&hE2,&h07,&h00,&h00,&hDE,&h07
    !db &h00,&h00,&hDA,&h07,&h00,&h00,&hD6,&h07,&h00,&h00,&hD2,&h07,&h00,&h00,&hCE,&h07
    !db &h00,&h00,&hCA,&h07,&h00,&h00,&hC6,&h07,&h00,&h00,&hC2,&h07,&h00,&h00,&hBE,&h07
    !db &h00,&h00,&hBA,&h07,&h00,&h00,&hB6,&h07,&h00,&h00,&hB2,&h07,&h00,&h00,&h6B,&h05
    !db &h00,&h00,&h67,&h05,&h00,&h00,&h63,&h05,&h00,&h00,&h5F,&h05,&h00,&h00,&h5B,&h05
    !db &h00,&h00,&h57,&h05,&h00,&h00,&h53,&h05,&h00,&h00,&h24,&h05,&h00,&h00,&h8E,&h07
    !db &h00,&h00,&h8A,&h07,&h00,&h00,&h86,&h07,&h00,&h00,&h82,&h07,&h00,&h00,&h3B,&h05
    !db &h00,&h00,&h37,&h05,&h00,&h00,&h33,&h05,&h00,&h00,&h2F,&h05,&h00,&h00,&h6E,&h07
    !db &h00,&h00,&h6A,&h07,&h00,&h00,&h66,&h07,&h00,&h00,&h62,&h07,&h00,&h00,&h5E,&h07
    !db &h00,&h00,&h5A,&h07,&h00,&h00,&h56,&h07,&h00,&h00,&h52,&h07,&h00,&h00,&h0B,&h05
    !db &h00,&h00,&h07,&h05,&h00,&h00,&h03,&h05,&h00,&h00,&h42,&h07,&h00,&h00,&h3E,&h07
    !db &h00,&h00,&h3A,&h07,&h00,&h00,&h36,&h07,&h00,&h00,&h32,&h07,&h00,&h00,&h2E,&h07
    !db &h00,&h00,&h2A,&h07,&h00,&h00,&h26,&h07,&h00,&h00,&h22,&h07,&h00,&h00,&h1E,&h07
    !db &h00,&h00,&h1A,&h07,&h00,&h00,&h16,&h07,&h00,&h00,&h12,&h07,&h00,&h00,&h0E,&h07
    !db &h00,&h00,&h0A,&h07,&h00,&h00,&h06,&h07,&h00,&h00,&h02,&h07,&h00,&h00,&hFE,&h06
    !db &h00,&h00,&hFA,&h06,&h00,&h00,&hF6,&h06,&h00,&h00,&hF2,&h06,&h00,&h00,&hEE,&h06
    !db &h00,&h00,&hEA,&h06,&h00,&h00,&hE6,&h06,&h00,&h00,&hE2,&h06,&h00,&h00,&hDE,&h06
    !db &h00,&h00,&hDA,&h06,&h00,&h00,&hD6,&h06,&h00,&h00,&hD2,&h06,&h00,&h00,&h8B,&h04
    !db &h00,&h00,&h87,&h04,&h00,&h00,&h83,&h04,&h00,&h00,&hC2,&h06,&h00,&h00,&hBE,&h06
    !db &h00,&h00,&hBA,&h06,&h00,&h00,&hB6,&h06,&h00,&h00,&hB2,&h06,&h00,&h00,&hAE,&h06
    !db &h00,&h00,&hAA,&h06,&h00,&h00,&hA6,&h06,&h00,&h00,&hA2,&h06,&h00,&h00,&h9E,&h06
    !db &h00,&h00,&h9A,&h06,&h00,&h00,&h96,&h06,&h00,&h00,&h92,&h06,&h00,&h00,&h8E,&h06
    !db &h00,&h00,&h8A,&h06,&h00,&h00,&h86,&h06,&h00,&h00,&h82,&h06,&h00,&h00,&h7E,&h06
    !db &h00,&h00,&h7A,&h06,&h00,&h00,&h76,&h06,&h00,&h00,&h72,&h06,&h00,&h00,&h6E,&h06
    !db &h00,&h00,&h6A,&h06,&h00,&h00,&h66,&h06,&h00,&h00,&h62,&h06,&h00,&h00,&h5E,&h06
    !db &h00,&h00,&h5A,&h06,&h00,&h00,&h56,&h06,&h00,&h00,&h52,&h06,&h00,&h00,&h0B,&h04
    !db &h00,&h00,&h07,&h04,&h00,&h00,&h03,&h04,&h00,&h00,&hFF,&h03,&h00,&h00,&h3E,&h06
    !db &h00,&h00,&h3A,&h06,&h00,&h00,&h36,&h06,&h00,&h00,&h32,&h06,&h00,&h00,&h2E,&h06
    !db &h00,&h00,&h2A,&h06,&h00,&h00,&h26,&h06,&h00,&h00,&h22,&h06,&h00,&h00,&h1E,&h06
    !db &h00,&h00,&h1A,&h06,&h00,&h00,&h16,&h06,&h00,&h00,&h12,&h06,&h00,&h00,&h0E,&h06
    !db &h00,&h00,&h0A,&h06,&h00,&h00,&h06,&h06,&h00,&h00,&h02,&h06,&h00,&h00,&hFE,&h05
    !db &h00,&h00,&hFA,&h05,&h00,&h00,&hF6,&h05,&h00,&h00,&hF2,&h05,&h00,&h00,&hEE,&h05
    !db &h00,&h00,&hEA,&h05,&h00,&h00,&hE6,&h05,&h00,&h00,&hE2,&h05,&h00,&h00,&hDE,&h05
    !db &h00,&h00,&hDA,&h05,&h00,&h00,&hD6,&h05,&h00,&h00,&hD2,&h05,&h00,&h00,&hCE,&h05
    !db &h00,&h00,&hCA,&h05,&h00,&h00,&hC6,&h05,&h00,&h00,&hC2,&h05,&h00,&h00,&hBE,&h05
    !db &h00,&h00,&hBA,&h05,&h00,&h00,&hB6,&h05,&h00,&h00,&hB2,&h05,&h00,&h00,&hAE,&h05
    !db &h00,&h00,&hAA,&h05,&h00,&h00,&hA6,&h05,&h00,&h00,&hA2,&h05,&h00,&h00,&h9E,&h05
    !db &h00,&h00,&h9A,&h05,&h00,&h00,&h96,&h05,&h00,&h00,&h92,&h05,&h00,&h00,&h8E,&h05
    !db &h00,&h00,&h8A,&h05,&h00,&h00,&h86,&h05,&h00,&h00,&h82,&h05,&h00,&h00,&h7E,&h05
    !db &h00,&h00,&h7A,&h05,&h00,&h00,&h76,&h05,&h00,&h00,&h72,&h05,&h00,&h00,&h6E,&h05
    !db &h00,&h00,&h6A,&h05,&h00,&h00,&h66,&h05,&h00,&h00,&h62,&h05,&h00,&h00,&h5E,&h05
    !db &h00,&h00,&h5A,&h05,&h00,&h00,&h56,&h05,&h00,&h00,&h52,&h05,&h00,&h00,&h4E,&h05
    !db &h00,&h00,&h4A,&h05,&h00,&h00,&h46,&h05,&h00,&h00,&h42,&h05,&h00,&h00,&h3E,&h05
    !db &h00,&h00,&h3A,&h05,&h00,&h00,&h36,&h05,&h00,&h00,&h32,&h05,&h00,&h00,&h2E,&h05
    !db &h00,&h00,&h2A,&h05,&h00,&h00,&h26,&h05,&h00,&h00,&h22,&h05,&h00,&h00,&h1E,&h05
    !db &h00,&h00,&h1A,&h05,&h00,&h00,&h16,&h05,&h00,&h00,&h12,&h05,&h00,&h00,&h0E,&h05
    !db &h00,&h00,&h0A,&h05,&h00,&h00,&h06,&h05,&h00,&h00,&h02,&h05,&h00,&h00,&hFE,&h04
    !db &h00,&h00,&hFA,&h04,&h00,&h00,&hF6,&h04,&h00,&h00,&hF2,&h04,&h00,&h00,&hEE,&h04
    !db &h00,&h00,&hEA,&h04,&h00,&h00,&hE6,&h04,&h00,&h00,&hE2,&h04,&h00,&h00,&hDE,&h04
    !db &h00,&h00,&hDA,&h04,&h00,&h00,&hD6,&h04,&h00,&h00,&hD2,&h04,&h00,&h00,&hCE,&h04
    !db &h00,&h00,&hCA,&h04,&h00,&h00,&hC6,&h04,&h00,&h00,&hC2,&h04,&h00,&h00,&hBE,&h04
    !db &h00,&h00,&hBA,&h04,&h00,&h00,&hB6,&h04,&h00,&h00,&hB2,&h04,&h00,&h00,&hAE,&h04
    !db &h00,&h00,&hAA,&h04,&h00,&h00,&hA6,&h04,&h00,&h00,&hA2,&h04,&h00,&h00,&h9E,&h04
    !db &h00,&h00,&h9A,&h04,&h00,&h00,&h96,&h04,&h00,&h00,&h92,&h04,&h00,&h00,&h8E,&h04
    !db &h00,&h00,&h8A,&h04,&h00,&h00,&h86,&h04,&h00,&h00,&h82,&h04,&h00,&h00,&h7E,&h04
    !db &h00,&h00,&h7A,&h04,&h00,&h00,&h76,&h04,&h00,&h00,&h72,&h04,&h00,&h00,&h6E,&h04
    !db &h00,&h00,&h6A,&h04,&h00,&h00,&h66,&h04,&h00,&h00,&h62,&h04,&h00,&h00,&h5E,&h04
    !db &h00,&h00,&h5A,&h04,&h00,&h00,&h56,&h04,&h00,&h00,&h52,&h04,&h00,&h00,&h4E,&h04
    !db &h00,&h00,&h4A,&h04,&h00,&h00,&h46,&h04,&h00,&h00,&h42,&h04,&h00,&h00,&h3E,&h04
    !db &h00,&h00,&h3A,&h04,&h00,&h00,&h36,&h04,&h00,&h00,&h32,&h04,&h00,&h00,&h2E,&h04
    !db &h00,&h00,&h2A,&h04,&h00,&h00,&h26,&h04,&h00,&h00,&h22,&h04,&h00,&h00,&h1E,&h04
    !db &h00,&h00,&h1A,&h04,&h00,&h00,&h16,&h04,&h00,&h00,&h12,&h04,&h00,&h00,&h0E,&h04
    !db &h00,&h00,&h0A,&h04,&h00,&h00,&h06,&h04,&h00,&h00,&h02,&h04,&h00,&h00,&hFE,&h03
    !db &h00,&h00,&hFA,&h03,&h00,&h00,&hF6,&h03,&h00,&h00,&hF2,&h03,&h00,&h00,&hEE,&h03
    !db &h00,&h00,&hEA,&h03,&h00,&h00,&hE6,&h03,&h00,&h00,&hE2,&h03,&h00,&h00,&hDE,&h03
    !db &h00,&h00,&hDA,&h03,&h00,&h00,&hD6,&h03,&h00,&h00,&hD2,&h03,&h00,&h00,&h21,&h01
    !db &h00,&h00,&h1D,&h01,&h00,&h00,&h19,&h01,&h00,&h00,&h15,&h01,&h00,&h00,&h12,&h01
    !db &h00,&h00,&h36,&h01,&h00,&h00,&h3D,&h01,&h00,&h00,&h05,&h01,&h00,&h00,&h01,&h01
    !db &h00,&h00,&hFD,&h00,&h00,&h00,&hF9,&h00,&h00,&h00,&hF5,&h00,&h00,&h00,&hF2,&h00
    !db &h00,&h00,&hED,&h00,&h00,&h00,&hE9,&h00,&h00,&h00,&hE5,&h00,&h00,&h00,&hE1,&h00
    !db &h00,&h00,&hDD,&h00,&h00,&h00,&hD9,&h00,&h00,&h00,&hD5,&h00,&h00,&h00,&hD2,&h00
    !db &h00,&h00,&hCD,&h00,&h00,&h00,&hC9,&h00,&h00,&h00,&hC5,&h00,&h00,&h00,&hC1,&h00
    !db &h00,&h00,&hBD,&h00,&h00,&h00,&hB9,&h00,&h00,&h00,&hB5,&h00,&h00,&h00,&hB1,&h00
    !db &h00,&h00,&hAD,&h00,&h00,&h00,&hA9,&h00,&h00,&h00,&hA5,&h00,&h00,&h00,&h5E,&hFF
    !db &h75,&h2F,&h8F,&h45,&h23,&hC6,&h45,&h22,&h00,&hC7,&h45,&h02,&h20,&h00,&h00,&h00
    !db &hC7,&h45,&h06,&h20,&h00,&h00,&h00,&h83,&h7D,&h33,&h40,&h75,&h07,&hC7,&h45,&h06
    !db &h40,&h00,&h00,&h00,&h8B,&h45,&h23,&h0F,&hB6,&h08,&h8D,&h04,&h8E,&h03,&h00,&h83
    !db &hC0,&h04,&hFF,&hD0,&h83,&hF8,&hFF,&h74,&h06,&h8B,&h45,&h23,&h2B,&h45,&h2F,&h5E
    !db &h5A,&h59,&h83,&hC4,&h27,&h5D,&hC2,&h08,&h00,&hC7,&h45,&h1A,&h00,&h00,&h00,&h00
    !db &h8B,&h45,&h23,&h0F,&hB6,&h40,&h01,&h25,&hC7,&h00,&h00,&h00,&hB9,&h40,&h00,&h00
    !db &h00,&h31,&hD2,&hF7,&hF1,&h89,&h45,&h0A,&h83,&hF8,&h01,&h75,&h04,&h83,&h45,&h1A
    !db &h01,&h83,&hF8,&h02,&h75,&h04,&h83,&h45,&h1A,&h04,&h89,&h55,&h0E,&hC1,&hE0,&h05
    !db &h01,&hF0,&h05,&h00,&h10,&h00,&h00,&h8D,&h04,&h90,&h03,&h00,&h83,&hC0,&h04,&hFF
    !db &hD0,&hC3,&h8B,&h45,&h23,&h0F,&hB6,&h40,&h01,&h83,&hE0,&h38,&hC1,&hE8,&h03,&h89
    !db &h45,&h16,&hC3,&hC3,&h83,&h7D,&h06,&h20,&h7C,&h21,&h83,&h45,&h1A,&h01,&h8B,&h45
    !db &h23,&h0F,&hB6,&h40,&h02,&h83,&hE0,&h07,&h89,&h45,&h12,&h83,&h7D,&h12,&h05,&h75
    !db &h0A,&h83,&h7D,&h0A,&h00,&h75,&h04,&h83,&h45,&h1A,&h04,&hC3,&h83,&h7D,&h06,&h20
    !db &h7C,&h04,&h83,&h45,&h1A,&h04,&hC3,&h83,&h7D,&h06,&h10,&h75,&h04,&h83,&h45,&h1A
    !db &h02,&hC3,&hE8,&h62,&hFF,&hFF,&hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23
    !db &h02,&hC3,&hFF,&h45,&h23,&hC3,&h83,&h45,&h23,&h02,&hC3,&h83,&h7D,&h02,&h10,&h75
    !db &h06,&hE8,&hDC,&hFF,&hFF,&hFF,&hC3,&hE8,&h44,&h02,&h00,&h00,&hC3,&h83,&h7D,&h02
    !db &h10,&h75,&h09,&hE8,&hCA,&hFF,&hFF,&hFF,&hFF,&h45,&h23,&hC3,&hE8,&h2F,&h02,&h00
    !db &h00,&hC3,&h83,&h7D,&h33,&h40,&h75,&h06,&hE8,&h23,&h02,&h00,&h00,&hC3,&hFF,&h45
    !db &h23,&hC3,&h83,&h7D,&h02,&h20,&h7C,&h05,&h83,&h45,&h23,&h05,&hC3,&h83,&h45,&h23
    !db &h03,&hC3,&h83,&h7D,&h02,&h40,&h75,&h05,&h83,&h45,&h23,&h09,&hC3,&h83,&h7D,&h02
    !db &h20,&h75,&h05,&h83,&h45,&h23,&h05,&hC3,&h83,&h45,&h23,&h03,&hC3,&hE8,&h80,&hFF
    !db &hFF,&hFF,&hFF,&h45,&h23,&hC3,&h83,&h7D,&h33,&h40,&h75,&h22,&hC7,&h45,&h02,&h40
    !db &h00,&h00,&h00,&hFF,&h45,&h23,&h8B,&h45,&h23,&h0F,&hB6,&h08,&h8D,&h04,&h8E,&h03
    !db &h00,&h83,&hC0,&h04,&hFF,&hD0,&hC7,&h45,&h02,&h20,&h00,&h00,&h00,&hC3,&hFF,&h45
    !db &h23,&hC3,&h83,&h7D,&h33,&h40,&h75,&h23,&hFF,&h45,&h23,&hFE,&h45,&h22,&h80,&h7D
    !db &h22,&h0F,&h75,&h06,&hE8,&hA7,&h01,&h00,&h00,&hC3,&h8B,&h45,&h23,&h0F,&hB6,&h08
    !db &h8D,&h04,&h8E,&h03,&h00,&h83,&hC0,&h04,&hFF,&hD0,&hC3,&h83,&h45,&h23,&h01,&hC3
    !db &hFF,&h45,&h23,&hFE,&h45,&h22,&h80,&h7D,&h22,&h0F,&h75,&h06,&hE8,&h7F,&h01,&h00
    !db &h00,&hC3,&h8B,&h45,&h23,&h0F,&hB6,&h08,&h8D,&h04,&h8E,&h03,&h00,&h83,&hC0,&h04
    !db &hFF,&hD0,&hC3,&h83,&h7D,&h02,&h20,&h7C,&h0A,&hE8,&hF4,&hFE,&hFF,&hFF,&h83,&h45
    !db &h23,&h04,&hC3,&hE8,&hEA,&hFE,&hFF,&hFF,&h83,&h45,&h23,&h02,&hC3,&h83,&h7D,&h33
    !db &h40,&h75,&h06,&hE8,&h48,&h01,&h00,&h00,&hC3,&h83,&h45,&h23,&h02,&hC3,&h83,&h45
    !db &h23,&h04,&hC3,&h83,&h45,&h23,&h05,&hC3,&h83,&h7D,&h33,&h40,&h75,&h06,&hE8,&h2D
    !db &h01,&h00,&h00,&hC3,&hE8,&hB9,&hFE,&hFF,&hFF,&hC3,&hE8,&h1A,&hFE,&hFF,&hFF,&h83
    !db &h7D,&h0A,&h03,&h75,&h06,&hE8,&hA8,&hFE,&hFF,&hFF,&hC3,&hE8,&h10,&h01,&h00,&h00
    !db &hC3,&h83,&h45,&h23,&h03,&hC3,&h83,&h7D,&h06,&h40,&h75,&h05,&h83,&h45,&h23,&h09
    !db &hC3,&h83,&h45,&h23,&h05,&hC3,&h83,&h7D,&h06,&h10,&h75,&h05,&h83,&h45,&h23,&h03
    !db &hC3,&h83,&h7D,&h06,&h20,&h75,&h05,&h83,&h45,&h23,&h05,&hC3,&h83,&h45,&h23,&h09
    !db &hC3,&h80,&h7D,&h00,&h01,&h75,&h06,&hE8,&h66,&hFE,&hFF,&hFF,&hC3,&hE8,&hCE,&h00
    !db &h00,&h00,&hC3,&h80,&h7D,&h00,&h01,&h75,&h06,&hE8,&h54,&hFE,&hFF,&hFF,&hC3,&h80
    !db &h7D,&h01,&h01,&h75,&h06,&hE8,&h48,&hFE,&hFF,&hFF,&hC3,&h83,&h7D,&h02,&h10,&h75
    !db &h06,&hE8,&h3C,&hFE,&hFF,&hFF,&hC3,&hE8,&hA4,&h00,&h00,&h00,&hC3,&h83,&h7D,&h33
    !db &h40,&h75,&h06,&hE8,&h98,&h00,&h00,&h00,&hC3,&h83,&h7D,&h02,&h20,&h75,&h05,&h83
    !db &h45,&h23,&h07,&hC3,&h83,&h45,&h23,&h05,&hC3,&hC3,&h83,&h7D,&h02,&h10,&h74,&h10
    !db &hE8,&h74,&hFD,&hFF,&hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h06,&hC3
    !db &hE8,&h64,&hFD,&hFF,&hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h04,&hC3
    !db &h83,&h7D,&h33,&h40,&h75,&h06,&hE8,&h55,&h00,&h00,&h00,&hC3,&h83,&h7D,&h02,&h20
    !db &h75,&h05,&h83,&h45,&h23,&h07,&hC3,&h83,&h45,&h23,&h05,&hC3,&hE8,&h81,&hFD,&hFF
    !db &hFF,&h83,&h7D,&h16,&h00,&h75,&h06,&hE8,&hC6,&hFD,&hFF,&hFF,&hC3,&hE8,&h2E,&h00
    !db &h00,&h00,&hC3,&h83,&h7D,&h33,&h40,&h75,&h05,&h83,&h45,&h23,&h05,&hC3,&h83,&h7D
    !db &h02,&h20,&h75,&h05,&h83,&h45,&h23,&h05,&hC3,&h83,&h45,&h23,&h03,&hC3,&h80,&h7D
    !db &h00,&h01,&h75,&h06,&hE8,&h99,&hFD,&hFF,&hFF,&hC3,&hE8,&h01,&h00,&h00,&h00,&hC3
    !db &hB8,&hFF,&hFF,&hFF,&hFF,&hC3,&h83,&h7D,&h33,&h40,&h75,&h06,&hE8,&hEF,&hFF,&hFF
    !db &hFF,&hC3,&hE8,&h7B,&hFD,&hFF,&hFF,&h83,&h45,&h23,&h01,&hC3,&h83,&h7D,&h02,&h20
    !db &h7C,&h0A,&hE8,&h6B,&hFD,&hFF,&hFF,&h83,&h45,&h23,&h04,&hC3,&hE8,&h61,&hFD,&hFF
    !db &hFF,&h83,&h45,&h23,&h02,&hC3,&hE8,&hBE,&hFC,&hFF,&hFF,&hE8,&h02,&hFD,&hFF,&hFF
    !db &h83,&h7D,&h16,&h00,&h75,&h0B,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h03
    !db &hC3,&h83,&h7D,&h16,&h01,&h75,&h06,&hE8,&hA4,&hFF,&hFF,&hFF,&hC3,&h8B,&h45,&h1A
    !db &h01,&h45,&h23,&h83,&h45,&h23,&h02,&hC3,&h83,&h7D,&h02,&h20,&h7C,&h32,&hE8,&h86
    !db &hFC,&hFF,&hFF,&hE8,&hCA,&hFC,&hFF,&hFF,&h83,&h7D,&h16,&h00,&h75,&h0B,&h8B,&h45
    !db &h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h06,&hC3,&h83,&h7D,&h16,&h01,&h75,&h06,&hE8
    !db &h6C,&hFF,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h02,&hC3
    !db &hE8,&h54,&hFC,&hFF,&hFF,&hE8,&h98,&hFC,&hFF,&hFF,&h83,&h7D,&h16,&h00,&h75,&h0B
    !db &h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h04,&hC3,&h83,&h7D,&h16,&h01,&h75
    !db &h06,&hE8,&h3A,&hFF,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23
    !db &h02,&hC3,&hE8,&h22,&hFC,&hFF,&hFF,&hE8,&h66,&hFC,&hFF,&hFF,&h83,&h7D,&h16,&h01
    !db &h7E,&h06,&hE8,&h19,&hFF,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45
    !db &h23,&h02,&hC3,&hE8,&h4A,&hFC,&hFF,&hFF,&h83,&h7D,&h16,&h06,&h7E,&h06,&hE8,&hFD
    !db &hFE,&hFF,&hFF,&hC3,&hE8,&hF0,&hFB,&hFF,&hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83
    !db &h45,&h23,&h02,&hC3,&hE8,&hE0,&hFB,&hFF,&hFF,&hE8,&h24,&hFC,&hFF,&hFF,&h83,&h7D
    !db &h16,&h05,&h7E,&h06,&hE8,&hD7,&hFE,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01,&h45,&h23
    !db &h83,&h45,&h23,&h02,&hC3,&hE8,&hBF,&hFB,&hFF,&hFF,&hE8,&h03,&hFC,&hFF,&hFF,&h83
    !db &h7D,&h16,&h00,&h75,&h1A,&h83,&h7D,&h0A,&h03,&h0F,&h85,&hAC,&h00,&h00,&h00,&h83
    !db &h7D,&h0E,&h04,&h0F,&h8E,&hA2,&h00,&h00,&h00,&hE8,&hA2,&hFE,&hFF,&hFF,&hC3,&h83
    !db &h7D,&h16,&h01,&h75,&h1A,&h83,&h7D,&h0A,&h03,&h0F,&h85,&h8C,&h00,&h00,&h00,&h83
    !db &h7D,&h0E,&h01,&h0F,&h8E,&h82,&h00,&h00,&h00,&hE8,&h82,&hFE,&hFF,&hFF,&hC3,&h83
    !db &h7D,&h16,&h02,&h75,&h10,&h83,&h7D,&h0A,&h03,&h0F,&h85,&h6C,&h00,&h00,&h00,&hE8
    !db &h6C,&hFE,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h03,&h75,&h0C,&h83,&h7D,&h0A,&h03,&h75
    !db &h5A,&hE8,&h5A,&hFE,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h04,&h75,&h0C,&h83,&h7D,&h0A
    !db &h03,&h75,&h48,&hE8,&h48,&hFE,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h05,&h75,&h06,&hE8
    !db &h3C,&hFE,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h06,&h75,&h0C,&h83,&h7D,&h0A,&h03,&h75
    !db &h2A,&hE8,&h2A,&hFE,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h07,&h75,&h1E,&h83,&h7D,&h0A
    !db &h03,&h75,&h18,&h83,&h7D,&h33,&h40,&h75,&h0C,&h83,&h7D,&h0E,&h00,&h74,&h0C,&hE8
    !db &h0C,&hFE,&hFF,&hFF,&hC3,&hE8,&h06,&hFE,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01,&h45
    !db &h23,&h83,&h45,&h23,&h02,&hC3,&hE8,&hEE,&hFA,&hFF,&hFF,&hE8,&h32,&hFB,&hFF,&hFF
    !db &h83,&h7D,&h16,&h04,&h7D,&h06,&hE8,&hE5,&hFD,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01
    !db &h45,&h23,&h83,&h45,&h23,&h03,&hC3,&hE8,&hCD,&hFA,&hFF,&hFF,&hE8,&h11,&hFB,&hFF
    !db &hFF,&h83,&h7D,&h16,&h00,&h75,&h06,&hE8,&hC4,&hFD,&hFF,&hFF,&hC3,&h83,&h7D,&h16
    !db &h02,&h75,&h06,&hE8,&hB8,&hFD,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h03,&h75,&h06,&hE8
    !db &hAC,&hFD,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h04,&h75,&h06,&hE8,&hA0,&hFD,&hFF,&hFF
    !db &hC3,&h83,&h7D,&h16,&h05,&h75,&h06,&hE8,&h94,&hFD,&hFF,&hFF,&hC3,&h83,&h7D,&h16
    !db &h07,&h7E,&h06,&hE8,&h88,&hFD,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83
    !db &h45,&h23,&h02,&hC3,&hE8,&hB9,&hFA,&hFF,&hFF,&h83,&h7D,&h16,&h00,&h75,&h06,&hE8
    !db &h6C,&hFD,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h01,&h75,&h06,&hE8,&h60,&hFD,&hFF,&hFF
    !db &hC3,&h83,&h7D,&h16,&h02,&h75,&h11,&hE8,&h4D,&hFA,&hFF,&hFF,&h83,&h7D,&h0A,&h03
    !db &h74,&h52,&hE8,&h49,&hFD,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h03,&h75,&h06,&hE8,&h3D
    !db &hFD,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h04,&h75,&h11,&hE8,&h2A,&hFA,&hFF,&hFF,&h83
    !db &h7D,&h0A,&h03,&h74,&h2F,&hE8,&h26,&hFD,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h05,&h75
    !db &h06,&hE8,&h1A,&hFD,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h06,&h75,&h11,&hE8,&h07,&hFA
    !db &hFF,&hFF,&h83,&h7D,&h0A,&h03,&h74,&h0C,&hE8,&h03,&hFD,&hFF,&hFF,&hC3,&hE8,&hFD
    !db &hFC,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h03,&hC3,&hE8
    !db &h2E,&hFA,&hFF,&hFF,&h83,&h7D,&h16,&h00,&h75,&h06,&hE8,&hE1,&hFC,&hFF,&hFF,&hC3
    !db &h83,&h7D,&h16,&h01,&h75,&h06,&hE8,&hD5,&hFC,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h02
    !db &h75,&h11,&hE8,&hC2,&hF9,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h74,&h52,&hE8,&hBE,&hFC
    !db &hFF,&hFF,&hC3,&h83,&h7D,&h16,&h03,&h75,&h06,&hE8,&hB2,&hFC,&hFF,&hFF,&hC3,&h83
    !db &h7D,&h16,&h04,&h75,&h11,&hE8,&h9F,&hF9,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h74,&h2F
    !db &hE8,&h9B,&hFC,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h05,&h75,&h06,&hE8,&h8F,&hFC,&hFF
    !db &hFF,&hC3,&h83,&h7D,&h16,&h06,&h75,&h11,&hE8,&h7C,&hF9,&hFF,&hFF,&h83,&h7D,&h0A
    !db &h03,&h74,&h0C,&hE8,&h78,&hFC,&hFF,&hFF,&hC3,&hE8,&h72,&hFC,&hFF,&hFF,&hC3,&h8B
    !db &h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h03,&hC3,&hE8,&hA3,&hF9,&hFF,&hFF,&h83
    !db &h7D,&h16,&h00,&h75,&h06,&hE8,&h56,&hFC,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h01,&h75
    !db &h06,&hE8,&h4A,&hFC,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h02,&h75,&h15,&hE8,&h37,&hF9
    !db &hFF,&hFF,&h83,&h7D,&h0A,&h03,&h0F,&h84,&h7B,&h00,&h00,&h00,&hE8,&h2F,&hFC,&hFF
    !db &hFF,&hC3,&h83,&h7D,&h16,&h03,&h75,&h1D,&h83,&h7D,&h02,&h10,&h75,&h11,&hE8,&h16
    !db &hF9,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h74,&h5E,&hE8,&h12,&hFC,&hFF,&hFF,&hC3,&hE8
    !db &h0C,&hFC,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h04,&h75,&h06,&hE8,&h00,&hFC,&hFF,&hFF
    !db &hC3,&h83,&h7D,&h16,&h05,&h75,&h06,&hE8,&hF4,&hFB,&hFF,&hFF,&hC3,&h83,&h7D,&h16
    !db &h06,&h75,&h11,&hE8,&hE1,&hF8,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h74,&h29,&hE8,&hDD
    !db &hFB,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h07,&h75,&h17,&h83,&h7D,&h02,&h10,&h75,&h11
    !db &hE8,&hC4,&hF8,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h74,&h0C,&hE8,&hC0,&hFB,&hFF,&hFF
    !db &hC3,&hE8,&hBA,&hFB,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23
    !db &h03,&hC3,&hE8,&hEB,&hF8,&hFF,&hFF,&h83,&h7D,&h16,&h00,&h75,&h15,&hE8,&h97,&hF8
    !db &hFF,&hFF,&h83,&h7D,&h0A,&h03,&h0F,&h85,&hA0,&h00,&h00,&h00,&hE8,&h8F,&hFB,&hFF
    !db &hFF,&hC3,&h83,&h7D,&h16,&h01,&h75,&h15,&hE8,&h7C,&hF8,&hFF,&hFF,&h83,&h7D,&h0A
    !db &h03,&h0F,&h85,&h85,&h00,&h00,&h00,&hE8,&h74,&hFB,&hFF,&hFF,&hC3,&h83,&h7D,&h16
    !db &h02,&h75,&h15,&hE8,&h61,&hF8,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h0F,&h85,&h6A,&h00
    !db &h00,&h00,&hE8,&h59,&hFB,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h03,&h75,&h11,&hE8,&h46
    !db &hF8,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h75,&h53,&hE8,&h42,&hFB,&hFF,&hFF,&hC3,&h83
    !db &h7D,&h16,&h04,&h75,&h06,&hE8,&h36,&hFB,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h05,&h75
    !db &h11,&hE8,&h23,&hF8,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h75,&h30,&hE8,&h1F,&hFB,&hFF
    !db &hFF,&hC3,&h83,&h7D,&h16,&h06,&h75,&h11,&hE8,&h0C,&hF8,&hFF,&hFF,&h83,&h7D,&h0A
    !db &h03,&h75,&h19,&hE8,&h08,&hFB,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h07,&h7F,&h07,&hE8
    !db &hF5,&hF7,&hFF,&hFF,&hEB,&h06,&hE8,&hF5,&hFA,&hFF,&hFF,&hC3,&h8B,&h45,&h1A,&h01
    !db &h45,&h23,&h83,&h45,&h23,&h02,&hC3,&hE8,&h26,&hF8,&hFF,&hFF,&h83,&h7D,&h16,&h00
    !db &h75,&h11,&hE8,&hD2,&hF7,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h75,&h51,&hE8,&hCE,&hFA
    !db &hFF,&hFF,&hC3,&h83,&h7D,&h16,&h01,&h75,&h11,&hE8,&hBB,&hF7,&hFF,&hFF,&h83,&h7D
    !db &h0A,&h03,&h75,&h3A,&hE8,&hB7,&hFA,&hFF,&hFF,&hC3,&h83,&h7D,&h16,&h02,&h75,&h11
    !db &hE8,&hA4,&hF7,&hFF,&hFF,&h83,&h7D,&h0A,&h03,&h75,&h23,&hE8,&hA0,&hFA,&hFF,&hFF
    !db &hC3,&h83,&h7D,&h16,&h03,&h75,&h11,&hE8,&h8D,&hF7,&hFF,&hFF,&h83,&h7D,&h0A,&h03
    !db &h75,&h0C,&hE8,&h89,&hFA,&hFF,&hFF,&hC3,&hE8,&h83,&hFA,&hFF,&hFF,&hC3,&h8B,&h45
    !db &h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h02,&hC3,&hFF,&h45,&h23,&hC7,&h45,&h02,&h10
    !db &h00,&h00,&h00,&hFE,&h45,&h22,&h80,&h7D,&h22,&h0F,&h75,&h06,&hE8,&h5F,&hFA,&hFF
    !db &hFF,&hC3,&h8B,&h45,&h23,&h0F,&hB6,&h08,&h8D,&h04,&h8E,&h03,&h00,&h83,&hC0,&h04
    !db &hFF,&hD0,&hC7,&h45,&h02,&h20,&h00,&h00,&h00,&hC3,&hFF,&h45,&h23,&hFE,&h45,&h22
    !db &h80,&h7D,&h22,&h0F,&h75,&h06,&hE8,&h35,&hFA,&hFF,&hFF,&hC3,&h8B,&h4D,&h06,&hD1
    !db &hE9,&h89,&h5D,&h06,&h8B,&h45,&h23,&h0F,&hB6,&h08,&h8D,&h04,&h8E,&h03,&h00,&h83
    !db &hC0,&h04,&hFF,&hD0,&h8B,&h5D,&h06,&hD1,&hE1,&h89,&h4D,&h06,&hC3,&hFF,&h45,&h23
    !db &hFE,&h45,&h22,&h80,&h7D,&h22,&h0F,&h75,&h06,&hE8,&h02,&hFA,&hFF,&hFF,&hC3,&h8B
    !db &h45,&h23,&h0F,&hB6,&h00,&h3C,&hA4,&h74,&h12,&h3C,&hA7,&h74,&h0E,&h3C,&hAE,&h74
    !db &h0A,&h3C,&hAF,&h74,&h06,&h3C,&h0F,&h74,&h02,&hEB,&h04,&hC6,&h45,&h00,&h01,&h8B
    !db &h45,&h23,&h0F,&hB6,&h08,&h8D,&h04,&h8E,&h03,&h00,&h83,&hC0,&h04,&hFF,&hD0,&hC6
    !db &h45,&h00,&h00,&hC3,&hFF,&h45,&h23,&hFE,&h45,&h22,&h80,&h7D,&h22,&h0F,&h75,&h06
    !db &hE8,&hBB,&hF9,&hFF,&hFF,&hC3,&h8B,&h45,&h23,&h0F,&hB6,&h00,&h3C,&h90,&h74,&h3E
    !db &h3C,&hA4,&h74,&h3A,&h3C,&hA5,&h74,&h36,&h3C,&hA6,&h74,&h32,&h3C,&hA7,&h74,&h2E
    !db &h3C,&hAA,&h74,&h2A,&h3C,&hAB,&h74,&h26,&h3C,&hAC,&h74,&h22,&h3C,&hAD,&h74,&h1E
    !db &h3C,&hAE,&h74,&h1A,&h3C,&hAF,&h74,&h16,&h3C,&h6C,&h74,&h12,&h3C,&h6D,&h74,&h0E
    !db &h3C,&h6E,&h74,&h0A,&h3C,&h6F,&h74,&h06,&h3C,&h0F,&h74,&h02,&hEB,&h04,&hC6,&h45
    !db &h01,&h01,&h8B,&h45,&h23,&h0F,&hB6,&h08,&h8D,&h04,&h8E,&h03,&h00,&h83,&hC0,&h04
    !db &hFF,&hD0,&hC6,&h45,&h01,&h00,&hC3,&hFF,&h45,&h23,&hFE,&h45,&h22,&h80,&h7D,&h22
    !db &h0F,&h75,&h06,&hE8,&h48,&hF9,&hFF,&hFF,&hC3,&h8B,&h45,&h23,&h0F,&hB6,&h08,&h8D
    !db &h84,&h8E,&h00,&h04,&h00,&h00,&h03,&h00,&h83,&hC0,&h04,&hFF,&hD0,&hC3,&hFF,&h45
    !db &h23,&hFE,&h45,&h22,&h80,&h7D,&h22,&h0F,&h75,&h06,&hE8,&h21,&hF9,&hFF,&hFF,&hC3
    !db &h8B,&h45,&h23,&h0F,&hB6,&h08,&h8D,&h84,&h8E,&h00,&h08,&h00,&h00,&h03,&h00,&h83
    !db &hC0,&h04,&hFF,&hD0,&hC3,&hFF,&h45,&h23,&hFE,&h45,&h22,&h80,&h7D,&h22,&h0F,&h75
    !db &h06,&hE8,&hFA,&hF8,&hFF,&hFF,&hC3,&h8B,&h45,&h23,&h0F,&hB6,&h08,&h8D,&h84,&h8E
    !db &h00,&h0C,&h00,&h00,&h03,&h00,&h83,&hC0,&h04,&hFF,&hD0,&hC3,&hC7,&h45,&h1A,&h00
    !db &h00,&h00,&h00,&h8B,&h45,&h23,&h0F,&hB6,&h40,&h01,&h3D,&hBF,&h00,&h00,&h00,&h7F
    !db &h11,&hE8,&h0C,&hF6,&hFF,&hFF,&h83,&h7D,&h16,&h07,&h7E,&h06,&hE8,&hBF,&hF8,&hFF
    !db &hFF,&hC3,&hE8,&hB2,&hF5,&hFF,&hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23
    !db &h02,&hC3,&hC7,&h45,&h1A,&h00,&h00,&h00,&h00,&h8B,&h45,&h23,&h0F,&hB6,&h40,&h01
    !db &h3D,&hBF,&h00,&h00,&h00,&h7F,&h17,&hE8,&hD6,&hF5,&hFF,&hFF,&h83,&h7D,&h16,&h01
    !db &h75,&h69,&h83,&h7D,&h16,&h07,&h7E,&h63,&hE8,&h83,&hF8,&hFF,&hFF,&hC3,&h3D,&hC0
    !db &h00,&h00,&h00,&h7C,&h56,&h89,&hC2,&hC1,&hEA,&h04,&h89,&hC1,&h83,&hE1,&h0F,&h83
    !db &hFA,&h0D,&h75,&h0B,&h83,&hF9,&h00,&h74,&h42,&hE8,&h62,&hF8,&hFF,&hFF,&hC3,&h83
    !db &hFA,&h0E,&h75,&h37,&h83,&hF9,&h02,&h75,&h06,&hE8,&h52,&hF8,&hFF,&hFF,&hC3,&h83
    !db &hF9,&h03,&h75,&h06,&hE8,&h47,&hF8,&hFF,&hFF,&hC3,&h83,&hF9,&h06,&h75,&h06,&hE8
    !db &h3C,&hF8,&hFF,&hFF,&hC3,&h83,&hF9,&h07,&h75,&h06,&hE8,&h31,&hF8,&hFF,&hFF,&hC3
    !db &h83,&hF9,&h0F,&h75,&h06,&hE8,&h26,&hF8,&hFF,&hFF,&hC3,&hE8,&h19,&hF5,&hFF,&hFF
    !db &h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h02,&hC3,&hC7,&h45,&h1A,&h00,&h00
    !db &h00,&h00,&h8B,&h45,&h23,&h0F,&hB6,&h40,&h01,&h3D,&hBF,&h00,&h00,&h00,&h7F,&h11
    !db &hE8,&h3D,&hF5,&hFF,&hFF,&h83,&h7D,&h16,&h07,&h7E,&h32,&hE8,&hF0,&hF7,&hFF,&hFF
    !db &hC3,&h3D,&hC0,&h00,&h00,&h00,&h7C,&h25,&h89,&hC2,&hC1,&hEA,&h04,&h89,&hC1,&h83
    !db &hE1,&h0F,&h83,&hFA,&h0E,&h75,&h0B,&h83,&hF9,&h09,&h74,&h11,&hE8,&hCF,&hF7,&hFF
    !db &hFF,&hC3,&h83,&hFA,&h0F,&h75,&h06,&hE8,&hC4,&hF7,&hFF,&hFF,&hC3,&hE8,&hB7,&hF4
    !db &hFF,&hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h02,&hC3,&hC7,&h45,&h1A
    !db &h00,&h00,&h00,&h00,&h8B,&h45,&h23,&h0F,&hB6,&h40,&h01,&h3D,&hBF,&h00,&h00,&h00
    !db &h7F,&h1F,&hE8,&hDB,&hF4,&hFF,&hFF,&h83,&h7D,&h16,&h04,&h74,&h0E,&h83,&h7D,&h16
    !db &h06,&h74,&h08,&h83,&h7D,&h16,&h07,&h7F,&h02,&hEB,&h41,&hE8,&h80,&hF7,&hFF,&hFF
    !db &hC3,&h3D,&hC0,&h00,&h00,&h00,&h7C,&h34,&h89,&hC2,&hC1,&hEA,&h04,&h89,&hC1,&h83
    !db &hE1,&h0F,&h83,&hFA,&h0E,&h75,&h15,&h83,&hF9,&h08,&h7D,&h20,&h83,&hF9,&h03,&h74
    !db &h1B,&h83,&hF9,&h02,&h74,&h16,&hE8,&h55,&hF7,&hFF,&hFF,&hC3,&h83,&hFA,&h0F,&h75
    !db &h0B,&h83,&hF9,&h08,&h7C,&h06,&hE8,&h45,&hF7,&hFF,&hFF,&hC3,&hE8,&h38,&hF4,&hFF
    !db &hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h02,&hC3,&hC7,&h45,&h1A,&h00
    !db &h00,&h00,&h00,&h8B,&h45,&h23,&h0F,&hB6,&h40,&h01,&h3D,&hBF,&h00,&h00,&h00,&h7F
    !db &h11,&hE8,&h5C,&hF4,&hFF,&hFF,&h83,&h7D,&h16,&h07,&h7E,&h22,&hE8,&h0F,&hF7,&hFF
    !db &hFF,&hC3,&h3D,&hC0,&h00,&h00,&h00,&h7C,&h15,&h89,&hC2,&hC1,&hEA,&h04,&h89,&hC1
    !db &h83,&hE1,&h0F,&h83,&hFA,&h0D,&h75,&h06,&hE8,&hF3,&hF6,&hFF,&hFF,&hC3,&hE8,&hE6
    !db &hF3,&hFF,&hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h02,&hC3,&hC7,&h45
    !db &h1A,&h00,&h00,&h00,&h00,&h8B,&h45,&h23,&h0F,&hB6,&h40,&h01,&h3D,&hBF,&h00,&h00
    !db &h00,&h7F,&h19,&hE8,&h0A,&hF4,&hFF,&hFF,&h83,&h7D,&h16,&h05,&h74,&h08,&h83,&h7D
    !db &h16,&h07,&h7F,&h02,&hEB,&h32,&hE8,&hB5,&hF6,&hFF,&hFF,&hC3,&h3D,&hC0,&h00,&h00
    !db &h00,&h7C,&h25,&h89,&hC2,&hC1,&hEA,&h04,&h89,&hC1,&h83,&hE1,&h0F,&h83,&hFA,&h0C
    !db &h75,&h0B,&h83,&hF9,&h08,&h7C,&h11,&hE8,&h94,&hF6,&hFF,&hFF,&hC3,&h83,&hFA,&h0F
    !db &h75,&h06,&hE8,&h89,&hF6,&hFF,&hFF,&hC3,&hE8,&h7C,&hF3,&hFF,&hFF,&h8B,&h45,&h1A
    !db &h01,&h45,&h23,&h83,&h45,&h23,&h02,&hC3,&hC7,&h45,&h1A,&h00,&h00,&h00,&h00,&h8B
    !db &h45,&h23,&h0F,&hB6,&h40,&h01,&h3D,&hBF,&h00,&h00,&h00,&h7F,&h11,&hE8,&hA0,&hF3
    !db &hFF,&hFF,&h83,&h7D,&h16,&h07,&h7E,&h27,&hE8,&h53,&hF6,&hFF,&hFF,&hC3,&h3D,&hC0
    !db &h00,&h00,&h00,&h7C,&h1A,&h89,&hC2,&hC1,&hEA,&h04,&h89,&hC1,&h83,&hE1,&h0F,&h83
    !db &hFA,&h0D,&h75,&h0B,&h83,&hF9,&h09,&h74,&h06,&hE8,&h32,&hF6,&hFF,&hFF,&hC3,&hE8
    !db &h25,&hF3,&hFF,&hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h02,&hC3,&hC7
    !db &h45,&h1A,&h00,&h00,&h00,&h00,&h8B,&h45,&h23,&h0F,&hB6,&h40,&h01,&h3D,&hBF,&h00
    !db &h00,&h00,&h7F,&h11,&hE8,&h49,&hF3,&hFF,&hFF,&h83,&h7D,&h16,&h07,&h7E,&h52,&hE8
    !db &hFC,&hF5,&hFF,&hFF,&hC3,&h3D,&hC0,&h00,&h00,&h00,&h7C,&h45,&h89,&hC2,&hC1,&hEA
    !db &h04,&h89,&hC1,&h83,&hE1,&h0F,&h83,&hFA,&h0C,&h75,&h06,&hE8,&hE0,&hF5,&hFF,&hFF
    !db &hC3,&h83,&hFA,&h0D,&h75,&h06,&hE8,&hD5,&hF5,&hFF,&hFF,&hC3,&h83,&hFA,&h0E,&h75
    !db &h10,&h83,&hF9,&h00,&h74,&h1B,&h83,&hF9,&h08,&h7D,&h16,&hE8,&hC0,&hF5,&hFF,&hFF
    !db &hC3,&h83,&hFA,&h0F,&h75,&h0B,&h83,&hF9,&h08,&h7C,&h06,&hE8,&hB0,&hF5,&hFF,&hFF
    !db &hC3,&hE8,&hA3,&hF2,&hFF,&hFF,&h8B,&h45,&h1A,&h01,&h45,&h23,&h83,&h45,&h23,&h02
    !db &hC3  [COLOR="DarkGreen"][I]'// retn following our "call LDE"[/I][/COLOR]
    Last edited by Wayne Diamond; 23 Aug 2014, 08:46 AM.
    -

  • #2
    This demo disassembles one of its own subprocedures ...
    Code:
    #COMPILE EXE
    
    
    SUB Test                [COLOR="DarkGreen"]'// Simple dummy subprocedure to disassemble[/COLOR]
    [COLOR="Red"] ! db &h90   ;nop
     ! db &h90   ;nop
    [/COLOR]END SUB
           
    
    [COLOR="DimGray"]FUNCTION HexDump(BYVAL sBuf AS BYTE PTR, BYVAL dwLen AS DWORD) AS STRING    '// just a helper for this demo
    LOCAL i AS LONG, sOut AS STRING
    FOR i = 1 TO dwLen
        sOut = sOut & HEX$(@sBuf,2):   INCR sBuf
    NEXT i
    FUNCTION = sOut
    END FUNCTION
    [/COLOR]
    
    FUNCTION PBMAIN () AS LONG
    #REGISTER NONE
    
    LOCAL sCode AS STRING, bPtr AS BYTE PTR, lLen AS LONG
    
    bPtr = CODEPTR(Test)
    DO
     ! push 0                           [COLOR="DarkGreen"];Disassembly mode (0=x86, 64=x64)[/COLOR]
     ! push bPtr                        [COLOR="DarkGreen"];Offset to disassemble from[/COLOR]
     ! call LDE                         [COLOR="DarkGreen"];Call disassembly engine[/COLOR]
     ! mov lLen, eax                    [COLOR="DarkGreen"];Instruction length = eax[/COLOR]
     IF lLen = -1 THEN EXIT DO          [COLOR="DarkGreen"]'Exit disassembly if last disasm failed[/COLOR]
     ? HexDump(BYVAL bPtr, BYVAL lLen)  [COLOR="DarkGreen"]'Display raw bytes[/COLOR]
     IF @bPtr = &hC3 THEN EXIT DO       [COLOR="DarkGreen"]'Exit disassembly if last instruction = C3 (retn)[/COLOR]
     bPtr = bPtr + lLen                 [COLOR="DarkGreen"]'Skip to the next instruction[/COLOR]
    LOOP
    
    ? "Finished disassembly."
    WAITKEY$
    EXIT FUNCTION
    
    #INCLUDE "lde64.inc"
    
    END FUNCTION
    Here is a screenshot of the resulting console output LDE64 disassembly of the Test() subproc (left), merged with a screenshot of an Ollydbg disassembly of the Test() subproc (right) for comparison (theyre identical):
    Last edited by Wayne Diamond; 23 Aug 2014, 08:06 AM.
    -

    Comment

    Working...
    X