NAME=Dalvik HelloWorld afl
FILE=bins/dex/HelloWorld.dex
CMDS=e io.va=0; aa; afl
EXPECT=<<EOF
0x0000025c    1     34 entry0
0x00000238    1     20 method.public.constructor.LHello.LHello.method._init___V
0x00000290    1     84 method.public.LHello.LHello.method.foo_I_V
0x000002f4    1     20 method.public.constructor.LWorld.LWorld.method._init___V
0x00000318    1     68 method.public.LWorld.LWorld.method.foo_I_V
EOF
RUN

NAME=dalvik signed const ESIL
FILE=malloc://16
CMDS=<<EOF
e asm.arch=dalvik
wx 12f1
ao~esil:
EOF
EXPECT=<<EOF
esil: -1,v1,=
EOF
RUN

NAME=dalvik ESIL uses VM result registers
FILE=malloc://16
CMDS=<<EOF
e asm.arch=dalvik
wx 0cc8
ao~esil:
wx 0fc8
ao~esil:
EOF
EXPECT=<<EOF
esil: result,v200,=
esil: v200,result,=,sp,[4],ip,=,4,sp,+=
EOF
RUN

NAME=dalvik standard memory access ESIL
FILE=malloc://16
CMDS=<<EOF
e asm.arch=dalvik
wx 44010203
ao~esil:
wx 4d010203
ao~esil:
wx 54346e03
ao~esil:
wx 5b346e03
ao~esil:
wx 62c86e03
ao~esil:
wx 69c86e03
ao~esil:
EOF
EXPECT=<<EOF
esil: 4,v3,*,4,+,v2,+,[4],v1,=
esil: v1,4,v3,*,4,+,v2,+,=[4]
esil: 878,v3,+,[4],v4,=
esil: v4,878,v3,+,=[4]
esil: 878,[4],v200,=
esil: v200,878,=[4]
EOF
RUN

NAME=dalvik signed conditional branch operands
FILE=malloc://0x2000
CMDS=<<EOF
e asm.arch=dalvik
s 0x1000
wx 3904fcff
ao~opcode:
ao~jump:
wx 3543fcff
ao~opcode:
ao~jump:
EOF
EXPECT=<<EOF
opcode: if-nez v4, 0x00000ff8
jump: 0x00000ff8
opcode: if-ge v3, v4, 0x00000ff8
jump: 0x00000ff8
EOF
RUN

NAME=dalvik non-void result calling convention
FILE=bins/dex/test.dex
CMDS=e io.va=0; af @ 0x21c; afij @ 0x21c~{0.calltype}; aoj 2 @ 0x21c~{1.esil}
EXPECT=<<EOF
dyncc:v1+2:result
v0,result,=,sp,[4],ip,=,4,sp,+=
EOF
RUN

NAME=Dalvik HelloWorld string xref
FILE=bins/dex/HelloWorld.dex
CMDS=aa; axt @ str.Findus
EXPECT=<<EOF
entry0 0x260 [DATA:r--] const-string v1, str.Findus
EOF
RUN

NAME=Dalvik HelloWorld func xref
FILE=bins/dex/HelloWorld.dex
CMDS=e io.va=0; aa; axt @ sym.LHello.method._init___V
EXPECT=<<EOF
entry0 0x26e [CALL:--x] invoke-direct {v0}, LHello.<init>()V ; 0x0
EOF
RUN

NAME=dalvik goto and goto/32 signed backward branch (op->jump)
FILE=malloc://0x2000
CMDS=<<EOF
e asm.arch=dalvik
s 0x1000
wx 28f8
ao~jump:
wx 2a00f0ffffff
ao~jump:
EOF
EXPECT=<<EOF
jump: 0x00000ff0
jump: 0x00000fe0
EOF
RUN
