NAME=ooi java class file
FILE=malloc://1024
CMDS=<<EOF
e asm.cmt.calls=false
e asm.comments=false
e asm.cmt.flgrefs=false
e scr.color=false
e asm.lines.jmp=false
e asm.xrefs=false
wx cafebabe00000032003a070002010014546573745661726961626c6553776974636855700700040100106a6176612f6c616e672f4f626a6563740100063c696e69743e010003282956010004436f64650a000300090c0005000601000f4c696e654e756d6265725461626c650100124c6f63616c5661726961626c655461626c65010004746869730100164c546573745661726961626c6553776974636855703b010014546573744d756c7469706c655661726961626c650a001000120700110100116a6176612f6c616e672f496e74656765720c0013001401000776616c75654f660100162849294c6a6176612f6c616e672f496e74656765723b0800160100067472796f6e65090018001a0700190100106a6176612f6c616e672f53797374656d0c001b001c0100036f75740100154c6a6176612f696f2f5072696e7453747265616d3b07001e0100176a6176612f6c616e672f537472696e674275696c646572080020010011417474656d7074696e67207072696e74200a001d00220c00050023010015284c6a6176612f6c616e672f537472696e673b29560a001d00250c00260027010006617070656e6401002d284c6a6176612f6c616e672f537472696e673b294c6a6176612f6c616e672f537472696e674275696c6465723b0a001d00290c002a002b010008746f537472696e6701001428294c6a6176612f6c616e672f537472696e673b0a002d002f07002e0100136a6176612f696f2f5072696e7453747265616d0c003000230100057072696e74010001690100134c6a6176612f6c616e672f496e74656765723b01000170010001490100016b0100124c6a6176612f6c616e672f537472696e673b0100016a01000a536f7572636546696c65010019546573745661726961626c6553776974636855702e6a617661002100010003000000000002000100050006000100070000002f00010001000000052ab70008b100000002000a00000006000100000002000b0000000c000100000005000c000d00000008000e0006000100070000008100040004000000251064b8000f4b10643c12154d033eb20017bb001d59121fb700212cb60024b60028b6002cb100000002000a0000001a0006000000040006000500090006000c0007000e000800240009000b0000002a00040006001f0031003200000009001c003300340001000c0019003500360002000e001700370034000300010038000000020039
ooi
i
af
pdf
EOF
EXPECT=<<EOF
fd       3
file     malloc://1024
size     0x400
humansz  1K
mode     rwx
format   java
iorw     true
block    0x100
type     JAVA CLASS
arch     java
baddr    0x0
binsz    1024
bintype  class
bits     32
canary   false
injprot  false
retguard false
class    0x3200 0x0000
crypto   false
endian   little
havecode true
laddr    0x0
lang     java 6
linenum  true
lsyms    true
machine  jvm
nx       false
os       any
pic      false
relocs   false
sanitize false
static   false
stripped false
subsys   any
va       false
  ;-- entry1:
  ;-- sym.TestVariableSwitchUp.TestMultipleVariable:
/ (fcn) method.TestVariableSwitchUp.TestMultipleVariable 37
| 0x000002fd      1064           bipush 100
| 0x000002ff      b8000f         invokestatic java/lang/Integer/valueOf(I)Ljava/lang/Integer;
| 0x00000302      4b             astore_0
| 0x00000303      1064           bipush 100
| 0x00000305      3c             istore_1
| 0x00000306      1215           ldc "tryone"
| 0x00000308      4d             astore_2
| 0x00000309      03             iconst_0
| 0x0000030a      3e             istore_3
| 0x0000030b      b20017         getstatic java/lang/System/out Ljava/io/PrintStream;
| 0x0000030e      bb001d         new java/lang/StringBuilder
| 0x00000311      59             dup
| 0x00000312      121f           ldc "Attempting print "
| 0x00000314      b70021         invokespecial java/lang/StringBuilder/<init>(Ljava/lang/String;)V
| 0x00000317      2c             aload_2
| 0x00000318      b60024         invokevirtual java/lang/StringBuilder/append(Ljava/lang/String;)Ljava/lang/StringBuilder;
| 0x0000031b      b60028         invokevirtual java/lang/StringBuilder/toString()Ljava/lang/String;
| 0x0000031e      b6002c         invokevirtual java/io/PrintStream/print(Ljava/lang/String;)V
\ 0x00000321      b1             return
EOF

RUN
NAME=ooi
FILE=bins/elf/analysis/main
CMDS=<<EOF
e bin.baddr=0
e asm.cmt.calls=false
ooi
op 3
e io.va=0
s entry0
pi 1
?p
EOF
EXPECT=<<EOF
xor ebp, ebp
0x00000410
EOF
RUN

NAME=ooiooi
FILE=bins/elf/analysis/main
CMDS=<<EOF
?e works
ooi;ooi
EOF
EXPECT=<<EOF
works
EOF
RUN

NAME=ooiooi2
FILE=bins/elf/analysis/main
CMDS=<<EOF
ooi;ooi
?e works
EOF
EXPECT=<<EOF
works
EOF
RUN

NAME=ioioio
FILE=bins/mach0/ls-m1
ARGS=-n
CMDS=<<EOF
o
ob
?e --
io bins/mach0/hello-puts
o
ob
ii
EOF
EXPECT=<<EOF
 3 * r-x 0x0002daa0 bins/mach0/ls-m1
--
 3 * r-x 0x0002daa0 bins/mach0/ls-m1
 5 - rw- 0x00000008 null://8
* 0 4 x86-64 ba:0x00000000 sz:14705 bins/mach0/hello-puts
[Imports]
nth vaddr      bind   type   lib name
-------------------------------------
1   ---------- WEAK   NOTYPE     _ITM_deregisterTMCloneTable
2   0x00001050 GLOBAL FUNC       puts
3   ---------- GLOBAL FUNC       __libc_start_main
4   ---------- WEAK   NOTYPE     __gmon_start__
5   ---------- WEAK   NOTYPE     _ITM_registerTMCloneTable
6   ---------- WEAK   FUNC       __cxa_finalize

EOF
RUN
