NAME=pxr4
FILE=malloc://1024
CMDS=<<EOF
e asm.arch=x86
e asm.bits=64
woe 1 255
s+11
?e vuit
b 8
pxr8
pxr4
pxr2
pxr1
?e quatre
b 4
pxr8
pxr4
pxr2
pxr1
?e dos
b 2
pxr8
pxr4
pxr2
pxr1
pxr2
?e u
b 1
pxr8
pxr4
pxr2
pxr1
EOF
EXPECT=<<EOF
vuit
0x0000000b 0x0101010101010101   ........
0x0000000b 0x01010101  .... 16843009
0x0000000f 0x01010101  .... 16843009
0x0000000b 0101  .. 257 R W X 'add byte [rax], al'
0x0000000d 0101  .. 257 R W X 'add byte [rax], al'
0x0000000f 0101  .. 257 R W X 'add byte [rax], al'
0x00000011 0101  .. 257 R W X 'add byte [rax], al'
- offset -    B B
0x0000000b 001 .
0x0000000c 001 .
0x0000000d 001 .
0x0000000e 001 .
0x0000000f 001 .
0x00000010 001 .
0x00000011 001 .
0x00000012 001 .
quatre
0x0000000b 0x0000000001010101   ....
0x0000000b 0x01010101  .... 16843009
0x0000000b 0101  .. 257 R W X 'add byte [rax], al'
0x0000000d 0101  .. 257 R W X 'add byte [rax], al'
- offset -    B B
0x0000000b 001 .
0x0000000c 001 .
0x0000000d 001 .
0x0000000e 001 .
dos
0x0000000b 0x0000000000000101   ..
0x0000000b 0x00000101  ..
0x0000000b 0101  .. 257 R W X 'add byte [rax], al'
- offset -    B B
0x0000000b 001 .
0x0000000c 001 .
0x0000000b 0101  .. 257 R W X 'add byte [rax], al'
u
0x0000000b 0x0000000000000001   .
0x0000000b 0x00000001  .
0x0000000b 01    .
- offset -    B B
0x0000000b 001 .
EOF
RUN

NAME=px 10
FILE=malloc://1024
CMDS=wx 90909090909090909090 ; px 10
EXPECT=<<EOF
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000000  9090 9090 9090 9090 9090                 ..........
EOF
RUN

NAME=px -10
FILE=malloc://1024
CMDS=wx 90909090909090909090 ; s 10 ; px -10
EXPECT=<<EOF
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000000  9090 9090 9090 9090 9090                 ..........
EOF
RUN

NAME=pxd 16
FILE=malloc://1024
CMDS=<<EOF
wx 1020ffff30400000
pxd 16
EOF
EXPECT=<<EOF
- offset -    0  1   2  3   4  5   6  7   8  9   A  B   C  D   E  F  0123456789ABCDEF
0x00000000         -57328         16432             0             0  . ..0@..........
EOF
RUN

NAME=pxd 8
FILE=malloc://1024
CMDS=<<EOF
wx 1020ffff30400000
pxd 8
EOF
EXPECT=<<EOF
- offset -    0  1   2  3   4  5   6  7   8  9   A  B   C  D   E  F  0123456789ABCDEF
0x00000000         -57328         16432                              . ..0@..
EOF
RUN

NAME=io.unalloc, io.unalloc.ch and pxc
FILE=bins/elf/analysis/tiny.elf
CMDS=<<EOF
. scripts/palette.r2
e io.unalloc=true
(dump; xc 0x00010060-0x0000ffd0 @ 0x0000ffd0-6)
e scr.color=3
e hex.comments=true
.(dump)
?e
e scr.color=0
.(dump)
?e
e hex.comments=false
e io.unalloc.ch=?
.(dump)
?e
e io.unalloc.ch=
.(dump)
EOF
EXPECT=<<EOF
[38;2;19;161;14m- offset -  CACB CCCD CECF D0D1 D2D3 D4D5 D6D7 D8D9  ABCDEF0123456789  comment
[0m[38;2;19;161;14m0x0000ffca[0m  .... .... .... .... .... .... .... ....  [38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m
[38;2;19;161;14m0x0000ffda[0m  .... .... .... .... .... .... .... ....  [38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m
[38;2;19;161;14m0x0000ffea[0m  .... .... .... .... .... .... .... ....  [38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m
[38;2;19;161;14m0x0000fffa[0m  .... .... .... [38;2;58;150;221m7f[0m[38;2;193;156;0m45[0m [38;2;193;156;0m4c[0m[38;2;193;156;0m46[0m [38;2;204;204;204m01[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m  [38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;193;156;0m [0m[38;2;58;150;221m.[0m[38;2;193;156;0mE[0m[38;2;193;156;0mL[0m[38;2;193;156;0mF[0m[38;2;204;204;204m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m  ; segment.ehdr[0m[38;2;19;161;14m ; [01] -rw- segment size 45 named ehdr
[38;2;19;161;14m0x0001000a[0m  [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;204;204;204m01[0m[38;2;19;161;14m00[0m [38;2;204;204;204m02[0m[38;2;19;161;14m00[0m [38;2;204;204;204m03[0m[38;2;19;161;14m00[0m [38;2;193;156;0m20[0m[38;2;19;161;14m00[0m [38;2;204;204;204m01[0m[38;2;19;161;14m00[0m [38;2;193;156;0m20[0m[38;2;19;161;14m00[0m  [38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;204;204;204m.[0m[38;2;19;161;14m.[0m[38;2;204;204;204m.[0m[38;2;19;161;14m.[0m[38;2;204;204;204m.[0m[38;2;19;161;14m.[0m[38;2;193;156;0m [0m[38;2;19;161;14m.[0m[38;2;204;204;204m.[0m[38;2;19;161;14m.[0m[38;2;193;156;0m [0m[38;2;19;161;14m.[0m
[38;2;19;161;14m0x0001001a[0m  [38;2;204;204;204m01[0m[38;2;19;161;14m00[0m [38;2;204;204;204m04[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;204;204;204mb3[0m[38;2;193;156;0m2a[0m [38;2;193;156;0m31[0m[38;2;204;204;204mc0[0m [38;2;193;156;0m40[0m[38;2;204;204;204mcd[0m [38;2;204;204;204m80[0m[38;2;19;161;14m00[0m [38;2;193;156;0m34[0m[38;2;19;161;14m00[0m  [38;2;204;204;204m.[0m[38;2;19;161;14m.[0m[38;2;204;204;204m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;204;204;204m.[0m[38;2;193;156;0m*[0m[38;2;193;156;0m1[0m[38;2;204;204;204m.[0m[38;2;193;156;0m@[0m[38;2;204;204;204m.[0m[38;2;204;204;204m.[0m[38;2;19;161;14m.[0m[38;2;193;156;0m4[0m[38;2;19;161;14m.[0m[38;2;19;161;14m  ; entry0[0m
[38;2;19;161;14m0x0001002a[0m  [38;2;193;156;0m20[0m[38;2;19;161;14m00[0m [38;2;204;204;204m01[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m  [38;2;193;156;0m [0m[38;2;19;161;14m.[0m[38;2;204;204;204m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m
[38;2;19;161;14m0x0001003a[0m  [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m  [38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m
[38;2;19;161;14m0x0001004a[0m  [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m [38;2;19;161;14m00[0m[38;2;19;161;14m00[0m  [38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m

- offset -  CACB CCCD CECF D0D1 D2D3 D4D5 D6D7 D8D9  ABCDEF0123456789  comment
0x0000ffca  .... .... .... .... .... .... .... ....                  
0x0000ffda  .... .... .... .... .... .... .... ....                  
0x0000ffea  .... .... .... .... .... .... .... ....                  
0x0000fffa  .... .... .... 7f45 4c46 0100 0000 0000        .ELF......  ; segment.ehdr ; [01] -rw- segment size 45 named ehdr
0x0001000a  0000 0000 0100 0200 0300 2000 0100 2000  .......... ... .
0x0001001a  0100 0400 0000 b32a 31c0 40cd 8000 3400  .......*1.@...4.  ; entry0
0x0001002a  2000 0100 0000 0000 0000 0000 0000 0000   ...............
0x0001003a  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0001004a  0000 0000 0000 0000 0000 0000 0000 0000  ................

- offset -  CACB CCCD CECF D0D1 D2D3 D4D5 D6D7 D8D9  ABCDEF0123456789
0x0000ffca  ???? ???? ???? ???? ???? ???? ???? ????                  
0x0000ffda  ???? ???? ???? ???? ???? ???? ???? ????                  
0x0000ffea  ???? ???? ???? ???? ???? ???? ???? ????                  
0x0000fffa  ???? ???? ???? 7f45 4c46 0100 0000 0000        .ELF......
0x0001000a  0000 0000 0100 0200 0300 2000 0100 2000  .......... ... .
0x0001001a  0100 0400 0000 b32a 31c0 40cd 8000 3400  .......*1.@...4.
0x0001002a  2000 0100 0000 0000 0000 0000 0000 0000   ...............
0x0001003a  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0001004a  0000 0000 0000 0000 0000 0000 0000 0000  ................

- offset -  CACB CCCD CECF D0D1 D2D3 D4D5 D6D7 D8D9  ABCDEF0123456789
0x0000ffca                                                           
0x0000ffda                                                           
0x0000ffea                                                           
0x0000fffa                 7f45 4c46 0100 0000 0000        .ELF......
0x0001000a  0000 0000 0100 0200 0300 2000 0100 2000  .......... ... .
0x0001001a  0100 0400 0000 b32a 31c0 40cd 8000 3400  .......*1.@...4.
0x0001002a  2000 0100 0000 0000 0000 0000 0000 0000   ...............
0x0001003a  0000 0000 0000 0000 0000 0000 0000 0000  ................
0x0001004a  0000 0000 0000 0000 0000 0000 0000 0000  ................
EOF
RUN

NAME=pxr
FILE=bins/elf/crackme
CMDS=<<EOF
pxr 48 @ 0x00600ae0
?e ===
pxr 24 @ 0x00600ae0+32
EOF
EXPECT=<<EOF
0x00600ae0 0x000000000040055e   ^.@..... @ reloc.printf 4195678 .plt R X 'push 0'
0x00600ae8 0x000000000040056e   n.@..... @ reloc.puts 4195694 .plt R X 'push 1'
0x00600af0 0x000000000040057e   ~.@..... @ reloc.__libc_start_main 4195710 .plt R X 'push 2'
0x00600af8 0x000000000040058e   ..@..... @ reloc.fgets 4195726 .plt R X 'push 3'
0x00600b00 0x000000000040059e   ..@..... @ reloc.strcmp 4195742 .plt R X 'push 4'
0x00600b08 0x00000000004005ae   ..@..... @ reloc.fflush 4195758 .plt R X 'push 5'
===
0x00600b00 0x000000000040059e   ..@..... @ reloc.strcmp 4195742 .plt R X 'push 4'
0x00600b08 0x00000000004005ae   ..@..... @ reloc.fflush 4195758 .plt R X 'push 5'
0x00600b10 ..[ null bytes ]..   00000000 loc.__data_start
EOF
RUN

NAME=pxr1248
FILE=bins/elf/crackme
ARGS=-e bin.types=true
CMDS=<<EOF
pxr4 32@0x00600ae0
pxr8 32@0x00600ae0
pxr2 32@0x00600ae0
e asm.bits=32
pxr 32@0x00600ae0
pxr2j 16@0x00600ae0~{}
EOF
EXPECT=<<EOF
0x00600ae0 0x0040055e  ^.@. @ reloc.printf 4195678 .plt R X 'push 0'
0x00600ae4 ..[ null bytes ]..   00000000 
0x00600ae8 0x0040056e  n.@. @ reloc.puts 4195694 .plt R X 'push 1'
0x00600aec ..[ null bytes ]..   00000000 
0x00600af0 0x0040057e  ~.@. @ reloc.__libc_start_main 4195710 .plt R X 'push 2'
0x00600af4 ..[ null bytes ]..   00000000 
0x00600af8 0x0040058e  ..@. @ reloc.fgets 4195726 .plt R X 'push 3'
0x00600afc ..[ null bytes ]..   00000000 
0x00600ae0 0x000000000040055e   ^.@..... @ reloc.printf 4195678 .plt R X 'push 0'
0x00600ae8 0x000000000040056e   n.@..... @ reloc.puts 4195694 .plt R X 'push 1'
0x00600af0 0x000000000040057e   ~.@..... @ reloc.__libc_start_main 4195710 .plt R X 'push 2'
0x00600af8 0x000000000040058e   ..@..... @ reloc.fgets 4195726 .plt R X 'push 3'
0x00600ae0 5e05  ^. @ reloc.printf 1374 .symtab
0x00600ae2 4000  @. 64 .shstrtab elf_phdr ascii ('@')
0x00600ae4 0000  ..
0x00600ae6 0000  ..
0x00600ae8 6e05  n. @ reloc.puts 1390 .symtab
0x00600aea 4000  @. 64 .shstrtab elf_phdr ascii ('@')
0x00600aec 0000  ..
0x00600aee 0000  ..
0x00600af0 7e05  ~. @ reloc.__libc_start_main 1406 .symtab
0x00600af2 4000  @. 64 .shstrtab elf_phdr ascii ('@')
0x00600af4 0000  ..
0x00600af6 0000  ..
0x00600af8 8e05  .. @ reloc.fgets 1422 .symtab
0x00600afa 4000  @. 64 .shstrtab elf_phdr ascii ('@')
0x00600afc 0000  ..
0x00600afe 0000  ..
0x00600ae0 0x0040055e  ^.@. @ reloc.printf .plt R X 'push 0'
0x00600ae4 ..[ null bytes ]..   00000000 
0x00600ae8 0x0040056e  n.@. @ reloc.puts .plt R X 'push 1'
0x00600aec ..[ null bytes ]..   00000000 
0x00600af0 0x0040057e  ~.@. @ reloc.__libc_start_main .plt R X 'push 2'
0x00600af4 ..[ null bytes ]..   00000000 
0x00600af8 0x0040058e  ..@. @ reloc.fgets .plt R X 'push 3'
0x00600afc ..[ null bytes ]..   00000000 
[
  {
    "addr": 6294240,
    "value": 1374,
    "refstr": "1374 .symtab",
    "ref": {
      "addr": 1374,
      "value": "1374",
      "section": ".symtab"
    }
  },
  {
    "addr": 6294242,
    "value": 64,
    "refstr": "64 .shstrtab elf_phdr ascii ('@')",
    "ref": {
      "addr": 64,
      "value": "64",
      "section": ".shstrtab",
      "flags": [
        "elf_phdr"
      ],
      "attr": [
        "ascii"
      ]
    }
  },
  {
    "addr": 6294244,
    "value": 0,
    "refstr": "0",
    "ref": {
      "addr": 0,
      "value": "0",
      "attr": [
        
      ]
    }
  },
  {
    "addr": 6294246,
    "value": 0,
    "refstr": "0",
    "ref": {
      "addr": 0,
      "value": "0",
      "attr": [
        
      ]
    }
  },
  {
    "addr": 6294248,
    "value": 1390,
    "refstr": "1390 .symtab",
    "ref": {
      "addr": 1390,
      "value": "1390",
      "section": ".symtab"
    }
  },
  {
    "addr": 6294250,
    "value": 64,
    "refstr": "64 .shstrtab elf_phdr ascii ('@')",
    "ref": {
      "addr": 64,
      "value": "64",
      "section": ".shstrtab",
      "flags": [
        "elf_phdr"
      ],
      "attr": [
        "ascii"
      ]
    }
  },
  {
    "addr": 6294252,
    "value": 0,
    "refstr": "0",
    "ref": {
      "addr": 0,
      "value": "0",
      "attr": [
        
      ]
    }
  }
]
EOF
RUN

NAME=pxe
FILE=-
CMDS=<<EOF
woe 0 0xff 1
pxe 256
EOF
EXPECT=<<EOF
0x00000000 🌀 🌂 🌅 🌈 🌙 🌞 🌟 🌠 🌰 🌱 🌲 🌳 🌴 🌵 🌷 🌸  ................
0x00000010 🌹 🌺 🌻 🌼 🌽 🌾 🌿 🍀 🍁 🍂 🍃 🍄 🍅 🍆 🍇 🍈  ................
0x00000020 🍉 🍊 🍋 🍌 🍍 🍎 🍏 🍐 🍑 🍒 🍓 🍔 🍕 🍖 🍗 🍘   !"#$%&'()*+,-./
0x00000030 🍜 🍝 🍞 🍟 🍠 🍡 🍢 🍣 🍤 🍥 🍦 🍧 🍨 🍩 🍪 🍫  0123456789:;<=>?
0x00000040 🍬 🍭 🍮 🍯 🍰 🍱 🍲 🍳 🍴 🍵 🍶 🍷 🍸 🍹 🍺 🍻  @ABCDEFGHIJKLMNO
0x00000050 🍼 🎀 🎁 🎂 🎃 🎄 🎅 🎈 🎉 🎊 🎋 🎌 🎍 🎎 🎏 🎒  PQRSTUVWXYZ[\]^_
0x00000060 🎓 🎠 🎡 🎢 🎣 🎤 🎥 🎦 🎧 🎨 🎩 🎪 🎫 🎬 🎭 🎮  `abcdefghijklmno
0x00000070 🎯 🎰 🎱 🎲 🎳 🎴 🎵 🎷 🎸 🎹 🎺 🎻 🎽 🎾 🎿 🏀  pqrstuvwxyz{|}~.
0x00000080 🏁 🏂 🏃 🏄 🏆 🏇 🏈 🏉 🏊 🐀 🐁 🐂 🐃 🐄 🐅 🐆  ................
0x00000090 🐇 🐈 🐉 🐊 🐋 🐌 🐍 🐎 🐏 🐐 🐑 🐒 🐓 🐔 🐕 🐖  ................
0x000000a0 🐗 🐘 🐙 🐚 🐛 🐜 🐝 🐞 🐟 🐠 🐡 🐢 🐣 🐤 🐥 🐦  ................
0x000000b0 🐧 🐨 🐩 🐪 🐫 🐬 🐭 🐮 🐯 🐰 🐱 🐲 🐳 🐴 🐵 🐶  ................
0x000000c0 🐷 🐸 🐹 🐺 🐻 🐼 🐽 🐾 👀 👂 👃 👄 👅 👆 👇 👈  ................
0x000000d0 👉 👊 👋 👌 👍 👎 👏 👐 👑 👒 👓 👔 👕 👖 👗 👘  ................
0x000000e0 👙 👚 👛 👜 👝 👞 👟 👠 👡 👢 👣 👤 👥 👦 👧 👨  ................
0x000000f0 👩 👪 👮 👯 👺 👻 👼 👽 👾 👿 💀 💁 💂 💃 💄 💅  ................
EOF
RUN

NAME=hexdump colorized by optype
FILE=bins/elf/ls
CMDS=<<EOF
e scr.color = 3
e scr.color.ophex=true
x 64
e anal.hasnext=true
afr
x 64
pD 65
EOF
EXPECT=<<EOF
[38;2;19;161;14m- offset -  E0E1 E2E3 E4E5 E6E7 E8E9 EAEB ECED EEEF  0123456789ABCDEF
[0m[38;2;19;161;14m0x00005ae0[0m  [38;2;58;150;221mf3[0m[38;2;58;150;221m0f[0m [38;2;58;150;221m1e[0m[38;2;58;150;221mfa[0m [38;2;193;156;0m31[0m[38;2;58;150;221med[0m [38;2;193;156;0m49[0m[38;2;58;150;221m89[0m [38;2;58;150;221md1[0m[38;2;193;156;0m5e[0m [38;2;193;156;0m48[0m[38;2;58;150;221m89[0m [38;2;58;150;221me2[0m[38;2;193;156;0m48[0m [38;2;58;150;221m83[0m[38;2;58;150;221me4[0m  [38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;193;156;0m1[0m[38;2;58;150;221m.[0m[38;2;193;156;0mI[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;193;156;0m^[0m[38;2;193;156;0mH[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;193;156;0mH[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m
[38;2;19;161;14m0x00005af0[0m  [38;2;58;150;221mf0[0m[38;2;193;156;0m50[0m [38;2;193;156;0m54[0m[38;2;193;156;0m4c[0m [38;2;58;150;221m8d[0m[38;2;58;150;221m05[0m [38;2;193;156;0m66[0m[38;2;58;150;221m0c[0m [38;2;58;150;221m01[0m[38;2;19;161;14m00[0m [38;2;193;156;0m48[0m[38;2;58;150;221m8d[0m [38;2;58;150;221m0d[0m[38;2;58;150;221mef[0m [38;2;58;150;221m0b[0m[38;2;58;150;221m01[0m  [38;2;58;150;221m.[0m[38;2;193;156;0mP[0m[38;2;193;156;0mT[0m[38;2;193;156;0mL[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;193;156;0mf[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;19;161;14m.[0m[38;2;193;156;0mH[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m
[38;2;19;161;14m0x00005b00[0m  [38;2;19;161;14m00[0m[38;2;193;156;0m48[0m [38;2;58;150;221m8d[0m[38;2;193;156;0m3d[0m [38;2;193;156;0m68[0m[38;2;58;150;221me5[0m [38;2;197;15;31mff[0m[38;2;197;15;31mff[0m [38;2;197;15;31mff[0m[38;2;58;150;221m15[0m [38;2;58;150;221m0a[0m[38;2;58;150;221mc3[0m [38;2;58;150;221m01[0m[38;2;19;161;14m00[0m [38;2;58;150;221mf4[0m[38;2;58;150;221m90[0m  [38;2;19;161;14m.[0m[38;2;193;156;0mH[0m[38;2;58;150;221m.[0m[38;2;193;156;0m=[0m[38;2;193;156;0mh[0m[38;2;58;150;221m.[0m[38;2;197;15;31m.[0m[38;2;197;15;31m.[0m[38;2;197;15;31m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;19;161;14m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m
[38;2;19;161;14m0x00005b10[0m  [38;2;193;156;0m48[0m[38;2;58;150;221m8d[0m [38;2;193;156;0m3d[0m[38;2;193;156;0m51[0m [38;2;58;150;221mc7[0m[38;2;58;150;221m01[0m [38;2;19;161;14m00[0m[38;2;193;156;0m48[0m [38;2;58;150;221m8d[0m[38;2;58;150;221m05[0m [38;2;193;156;0m4a[0m[38;2;58;150;221mc7[0m [38;2;58;150;221m01[0m[38;2;19;161;14m00[0m [38;2;193;156;0m48[0m[38;2;193;156;0m39[0m  [38;2;193;156;0mH[0m[38;2;58;150;221m.[0m[38;2;193;156;0m=[0m[38;2;193;156;0mQ[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;19;161;14m.[0m[38;2;193;156;0mH[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;193;156;0mJ[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;19;161;14m.[0m[38;2;193;156;0mH[0m[38;2;193;156;0m9[0m
[38;2;19;161;14m- offset -  E0E1 E2E3 E4E5 E6E7 E8E9 EAEB ECED EEEF  0123456789ABCDEF
[0m[38;2;19;161;14m0x00005ae0[0m  [38;2;58;150;221mf3[0m[38;2;58;150;221m0f[0m [38;2;58;150;221m1e[0m[38;2;58;150;221mfa[0m [38;2;193;156;0m31[0m[38;2;193;156;0med[0m [38;2;58;150;221m49[0m[38;2;58;150;221m89[0m [38;2;58;150;221md1[0m[38;2;136;23;152m5e[0m [38;2;58;150;221m48[0m[38;2;58;150;221m89[0m [38;2;58;150;221me2[0m[38;2;193;156;0m48[0m [38;2;193;156;0m83[0m[38;2;193;156;0me4[0m  [38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;193;156;0m1[0m[38;2;193;156;0m.[0m[38;2;58;150;221mI[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;136;23;152m^[0m[38;2;58;150;221mH[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;193;156;0mH[0m[38;2;193;156;0m.[0m[38;2;193;156;0m.[0m
[38;2;19;161;14m0x00005af0[0m  [38;2;193;156;0mf0[0m[38;2;136;23;152m50[0m [38;2;136;23;152m54[0m[38;2;58;150;221m4c[0m [38;2;58;150;221m8d[0m[38;2;58;150;221m05[0m [38;2;58;150;221m66[0m[38;2;58;150;221m0c[0m [38;2;58;150;221m01[0m[38;2;58;150;221m00[0m [38;2;58;150;221m48[0m[38;2;58;150;221m8d[0m [38;2;58;150;221m0d[0m[38;2;58;150;221mef[0m [38;2;58;150;221m0b[0m[38;2;58;150;221m01[0m  [38;2;193;156;0m.[0m[38;2;136;23;152mP[0m[38;2;136;23;152mT[0m[38;2;58;150;221mL[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221mf[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221mH[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m
[38;2;19;161;14m0x00005b00[0m  [38;2;58;150;221m00[0m[38;2;58;150;221m48[0m [38;2;58;150;221m8d[0m[38;2;58;150;221m3d[0m [38;2;58;150;221m68[0m[38;2;58;150;221me5[0m [38;2;58;150;221mff[0m[38;2;58;150;221mff[0m [38;2;19;161;14mff[0m[38;2;19;161;14m15[0m [38;2;19;161;14m0a[0m[38;2;19;161;14mc3[0m [38;2;19;161;14m01[0m[38;2;19;161;14m00[0m [38;2;58;150;221mf4[0m[38;2;58;150;221m90[0m  [38;2;58;150;221m.[0m[38;2;58;150;221mH[0m[38;2;58;150;221m.[0m[38;2;58;150;221m=[0m[38;2;58;150;221mh[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;19;161;14m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m
[38;2;19;161;14m0x00005b10[0m  [38;2;58;150;221m48[0m[38;2;58;150;221m8d[0m [38;2;58;150;221m3d[0m[38;2;58;150;221m51[0m [38;2;58;150;221mc7[0m[38;2;58;150;221m01[0m [38;2;58;150;221m00[0m[38;2;58;150;221m48[0m [38;2;58;150;221m8d[0m[38;2;58;150;221m05[0m [38;2;58;150;221m4a[0m[38;2;58;150;221mc7[0m [38;2;58;150;221m01[0m[38;2;58;150;221m00[0m [38;2;58;150;221m48[0m[38;2;58;150;221m39[0m  [38;2;58;150;221mH[0m[38;2;58;150;221m.[0m[38;2;58;150;221m=[0m[38;2;58;150;221mQ[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221mH[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221mJ[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221m.[0m[38;2;58;150;221mH[0m[38;2;58;150;221m9[0m
[38;2;58;150;221m/[0m 46: [38;2;193;156;0mentry0[0m (int64_t arg3);
[38;2;58;150;221m|[0m `- args(rdx)
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005ae0[0m      [38;2;58;150;221mf3[38;2;58;150;221m0f[38;2;58;150;221m1e[38;2;58;150;221mfa[0m       [38;2;58;150;221mendbr64[0m[0m[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005ae4[0m      [38;2;193;156;0m31[38;2;58;150;221med[0m           [38;2;193;156;0mxor[38;2;204;204;204m ebp[0m,[38;2;204;204;204m ebp[0m[0m[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005ae6[0m      [38;2;193;156;0m49[38;2;58;150;221m89[38;2;58;150;221md1[0m         [38;2;58;150;221mmov[38;2;204;204;204m r9[0m,[38;2;204;204;204m rdx[0m[0m[0m                 [38;2;204;204;204m; arg3[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005ae9[0m      [38;2;193;156;0m5e[0m             [38;2;136;23;152mpop[38;2;204;204;204m rsi[0m[0m[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005aea[0m      [38;2;193;156;0m48[38;2;58;150;221m89[38;2;58;150;221me2[0m         [38;2;58;150;221mmov[38;2;204;204;204m rdx[0m,[38;2;204;204;204m rsp[0m[0m[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005aed[0m      [38;2;193;156;0m48[38;2;58;150;221m83[38;2;58;150;221me4[38;2;58;150;221mf0[0m       [38;2;193;156;0mand[38;2;204;204;204m rsp[0m,[38;2;193;156;0m[38;2;193;156;0m [38;2;19;161;14m0xfffffffffffffff0[0m[0m[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005af1[0m      [38;2;193;156;0m50[0m             [38;2;136;23;152mpush[38;2;204;204;204m rax[0m[0m[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005af2[0m      [38;2;193;156;0m54[0m             [38;2;136;23;152mpush[38;2;204;204;204m rsp[0m[0m[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005af3[0m      [38;2;193;156;0m4c[38;2;58;150;221m8d[38;2;58;150;221m05[38;2;193;156;0m66[38;2;58;150;221m0c[38;2;58;150;221m..   [38;2;58;150;221mlea[38;2;204;204;204m r8[0m,[38;2;193;156;0m[38;2;193;156;0m [0m[[38;2;193;156;0mfcn.00016760[0m][38;2;204;204;204m[0m[0m[38;2;197;15;31m      [38;2;197;15;31m; 0x16760[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005afa[0m      [38;2;193;156;0m48[38;2;58;150;221m8d[38;2;58;150;221m0d[38;2;58;150;221mef[38;2;58;150;221m0b[38;2;58;150;221m..   [38;2;58;150;221mlea[38;2;204;204;204m rcx[0m,[38;2;193;156;0m[38;2;193;156;0m [0m[[38;2;193;156;0mfcn.000166f0[0m][38;2;204;204;204m[0m[0m[38;2;197;15;31m     [38;2;197;15;31m; 0x166f0[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005b01[0m      [38;2;193;156;0m48[38;2;58;150;221m8d[38;2;193;156;0m3d[38;2;193;156;0m68[38;2;58;150;221me5[38;2;197;15;31m..   [38;2;58;150;221mlea[38;2;204;204;204m rdi[0m,[38;2;193;156;0m[38;2;193;156;0m main[0m[0m[38;2;197;15;31m               [38;2;197;15;31m; 0x4070[38;2;197;15;31m [38;2;197;15;31m; "AWAVAUATU\x89\xfdSH\x89\xf3H\x83\xecXH\x8b>dH\x8b\x04%("[0m
[38;2;58;150;221m\[0m           [38;2;19;161;14m0x00005b08[0m      [38;2;197;15;31mff[38;2;58;150;221m15[38;2;58;150;221m0a[38;2;58;150;221mc3[38;2;58;150;221m01[38;2;19;161;14m00[0m   [38;2;19;161;14mcall qword[38;2;193;156;0m [0m[[38;2;193;156;0mreloc.__libc_start_main[0m][38;2;204;204;204m[0m[0m[38;2;197;15;31m [38;2;197;15;31m; [0x21e18:8]=0[0m
            [38;2;19;161;14m0x00005b0e[0m      [38;2;58;150;221mf4[0m             [1;38;2;197;15;31mhlt[0m[0m[0m
            [38;2;19;161;14m0x00005b0f[0m      [38;2;58;150;221m90[0m             [38;2;0;55;218mnop[0m[0m[0m
            [38;2;197;15;31m[38;2;197;15;31m; CALL XREF from entry.fini0 @ [38;2;197;15;31m0x5ba8(x)[38;2;197;15;31m[0m
[38;2;58;150;221m/[0m 34: [38;2;193;156;0mfcn.00005b10[0m ();
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005b10[0m      [38;2;193;156;0m48[38;2;58;150;221m8d[38;2;193;156;0m3d[38;2;193;156;0m51[38;2;58;150;221mc7[38;2;58;150;221m..   [38;2;58;150;221mlea[38;2;204;204;204m rdi[0m,[38;2;193;156;0m[38;2;193;156;0m loc._edata[0m[0m[38;2;197;15;31m         [38;2;197;15;31m; loc.__bss_start
[38;2;58;150;221m|[0m           [38;2;197;15;31m                                                           [38;2;197;15;31m; 0x22268[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005b17[0m      [38;2;193;156;0m48[38;2;58;150;221m8d[38;2;58;150;221m05[38;2;193;156;0m4a[38;2;58;150;221mc7[38;2;58;150;221m..   [38;2;58;150;221mlea[38;2;204;204;204m rax[0m,[38;2;193;156;0m[38;2;193;156;0m loc._edata[0m[0m[38;2;197;15;31m         [38;2;197;15;31m; loc.__bss_start
[38;2;58;150;221m|[0m           [38;2;197;15;31m                                                           [38;2;197;15;31m; 0x22268[0m
[38;2;58;150;221m|[0m           [38;2;19;161;14m0x00005b1e[0m      [38;2;193;156;0m48[38;2;193;156;0m39[38;2;58;150;221mf8[0m         [38;2;58;150;221mcmp[38;2;204;204;204m rax[0m,[38;2;204;204;204m rdi[0m[0m[0m
EOF
RUN

NAME=hex.addr
FILE=malloc://1024
CMDS=<<EOF
w hello world
b 32
px
e hex.addr=0
px
EOF
EXPECT=<<EOF
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000000  6865 6c6c 6f20 776f 726c 6400 0000 0000  hello world.....
0x00000010  0000 0000 0000 0000 0000 0000 0000 0000  ................
  0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
 6865 6c6c 6f20 776f 726c 6400 0000 0000  hello world.....
 0000 0000 0000 0000 0000 0000 0000 0000  ................
EOF
RUN

NAME=hex.pairs
FILE=malloc://1024
CMDS=<<EOF
woe 1
e hex.pairs=true
x 18
x 19
x 32
e hex.pairs=false
x 18
x 19
x 32
EOF
EXPECT=<<EOF
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000000  0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................
0x00000010  1011                                     ..
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000000  0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................
0x00000010  1011 12                                  ...
- offset -   0 1  2 3  4 5  6 7  8 9  A B  C D  E F  0123456789ABCDEF
0x00000000  0001 0203 0405 0607 0809 0a0b 0c0d 0e0f  ................
0x00000010  1011 1213 1415 1617 1819 1a1b 1c1d 1e1f  ................
- offset -   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
0x00000000  00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f  ................
0x00000010  10 11                                            ..
- offset -   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
0x00000000  00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f  ................
0x00000010  10 11 12                                         ...
- offset -   0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F  0123456789ABCDEF
0x00000000  00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f  ................
0x00000010  10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f  ................
EOF
RUN
