NAME=v850 preludes
FILE=bins/v850/hello-v850e
CMDS=<<EOF
aap
afl
EOF
EXPECT=<<EOF
0x00100000    3 108          entry0
0x0010006c    1 36           sym._compute
0x00100090    1 64           main
0x001000d0    5 74           sym.___main
0x0010011a    3 34           sym._exit
0x0010013c    1 24           sym.__printf_r
0x00100154    1 28           sym._printf
0x00100170  329 6958 -> 5454 sym.__vfprintf_r
0x00101cb8    1 24           sym._vfprintf
0x00101cd0    5 146          sym.___sbprintf
0x00101d64   27 264          sym.___swsetup_r
0x00101e6c   20 170          sym.___call_exitprocs
0x00101f16    3 64           sym.__exit
0x00101f58   21 332          sym._quorem
0x001020a4  245 5164 -> 5018 sym.__dtoa_r
0x001034d0   40 428          sym.___sflush_r
0x0010367c    6 68           sym.__fflush_r
0x001036c0    3 40           sym._fflush
0x001036ec    1 106          sym._std
0x00103756    1 18           sym.__cleanup_r
0x00103768    1 88           sym.___sinit.part___0
0x001037c4    3 60           sym.___sfmoreglue
0x00103800   13 180          sym.___sfp
0x001038b4    1 22           sym.__cleanup
0x001038ca    3 20           sym.___sinit
0x001038e6    1 22           sym.___fp_lock_all
0x001038fc    1 22           sym.___fp_unlock_all
0x00103912    7 196          sym.__malloc_trim_r
0x001039d6   41 668          sym.__free_r
0x00103c72    8 72           sym.__fwalk
0x00103cba    8 76           sym.__fwalk_reent
0x00103d1c    6 122          sym.___swhatbuf_r
0x00103d96   10 204          sym.___smakebuf_r
0x00103e62  119 1806         sym.__malloc_r
0x00104590    4 28           sym._memcpy
0x001045ac    4 24           sym._memset
0x001045c4    1 2            sym.___malloc_lock
0x001045c6    1 2            sym.___malloc_unlock
0x001045c8   12 136          sym.__Balloc
0x00104650    9 198          sym.___multadd
0x00104716   15 194          sym.___s2b
0x001047d8   12 86           sym.___hi0bits
0x0010482e   19 134          sym.___lo0bits
0x001048b4    3 52           sym.___i2b
0x001048e8   22 392          sym.___multiply
0x00104a70   15 188          sym.___pow5mult
0x00104b2c   21 342          sym.___lshift
0x00104c82   28 470          sym.___mdiff
0x00104e58   14 180          sym.___b2d
0x00104f0c   12 272          sym.___d2b
0x0010501c    4 148          sym.___ratio
0x001050b0    5 114          sym.__mprec_log10
0x001051c2    4 46           sym.__sbrk_r
0x001051f0    3 50           sym.___sread
0x00105226    3 70           sym.___swrite
0x0010526c    3 52           sym.___sseek
0x001052a0    1 16           sym.___sclose
0x001052cc    3 18           loc.___trap0
0x001052e0   12 132          sym.___sprint_r.part___0
0x00105364    3 28           sym.___sprint_r
0x00105380  145 3942 -> 2252 sym.__vfiprintf_r
0x00106300    1 24           sym._vfiprintf
0x00106318    5 146          sym.___sbprintf_0x106318
0x001063ac    4 52           sym.__write_r
0x001063e0    5 90           sym.___assert_func
0x0010643a   12 132          sym.__calloc_r
0x001064be    4 46           sym.__close_r
0x001064ec   18 172          sym.__fclose_r
0x00106598    1 18           sym._fclose
0x001065aa    1 20           sym.__fiprintf_r
0x001065be    1 26           sym._fiprintf
0x001065d8   17 198          sym.___fputwc
0x0010669e    3 44           sym.__fputwc_r
0x001066ca    6 94           sym._fputwc
0x00106728    4 50           sym.__fstat_r
0x0010675a   64 1032         sym.___sfvwrite_r
0x00106b62    4 46           sym.__isatty_r
0x00106b90    8 90           sym.__setlocale_r
0x00106bea    1 22           sym._setlocale
0x00106c00    4 52           sym.__lseek_r
0x00106c34    1 34           sym.__mbtowc_r
0x00106c56   18 120          sym.___ascii_mbtowc
0x00106cce    4 52           sym.__read_r
0x00106d02   73 1322         sym.__realloc_r
0x0010722c   12 150          sym.__sbrk
0x001072c2   19 248          sym.___swbuf_r
0x001073ba    1 22           sym.___swbuf
0x001073d0    5 70           sym.__wcrtomb_r
0x00107416    1 24           sym._wcrtomb
0x0010742e    1 22           sym.__wctomb_r
0x00107468    1 22           sym.__write
0x0010747e    1 16           sym._abort
0x0010748e    1 20           sym.__close
0x001074a2    1 22           sym.__fstat
0x001074b8    1 4            sym.__isatty
0x001074bc    1 24           sym.__lseek
0x001074d4    1 22           sym.__read
0x001074ea    6 46           sym.__init_signal_r.part___0
0x00107518    3 26           sym.__init_signal_r
0x00107532    8 92           sym.__signal_r
0x0010758e   11 126          sym.__raise_r
0x0010760c   13 110          sym.___sigtramp_r
0x0010767a    1 18           sym._raise
0x0010768c    1 22           sym._signal
0x001076a2    3 30           sym.__init_signal
0x001076c0    1 18           sym.___sigtramp
0x001076d2    4 50           sym.__kill_r
0x00107704    1 12           sym.__getpid_r
0x00107710    1 4            sym.__getpid
0x00107714    1 24           sym.__kill
0x0010772c    3 92           sym.___unorddf2
EOF
RUN

NAME=v850 preludes
FILE=bins/v850/ired_v850
CMDS=<<EOF
aap
afl
EOF
EXPECT=<<EOF
0x00100000    3 108          entry0
0x0010006c    3 130          sym._io_open
0x001000ee   22 484          sym._hexdump
0x001002d2   19 1970 -> 318  sym._print_fmt
0x00100a84   19 608          sym._str2ut64
0x00100ce4   12 228          sym._hex2byte
0x00100dc8   13 236          sym._hexstr2raw
0x00100eb4    9 280          sym._getcurblk
0x00100fcc    4 272          sym._Nset
0x001010dc    1 120          sym._Nsetf
0x00101154    4 392          sym._Naddi
0x001012dc    4 392          sym._Nsubi
0x00101464    1 240          sym._Nadd
0x00101554    1 240          sym._Nsub
0x00101644    1 224          sym._Nmul
0x00101724    7 340          sym._Ndiv
0x00101878    1 68           sym._error
0x001018bc    6 408          sym._expr
0x00101a54    9 514          sym._term
0x00101c56    5 1324 -> 170  sym._prim
0x00102182    1 50           sym._cin_putback
0x001021b4    6 120          sym._r_num_calc_index
0x0010222c    9 172          sym._cin_get
0x001022d8   16 518          sym._cin_get_num
0x001024de   36 1522 -> 866  sym._get_token
0x00102ad0    1 72           sym._load_token
0x00102b18   21 804          sym._r_num_calc
0x00102e3c    5 132          sym._cmd_hexdump
0x00102ec0    7 158          sym._cmd_print
0x00102f5e    7 180          sym._cmd_bytedump
0x00103012   17 810          sym._cmd_search
0x0010333c   10 318          sym._cmd_bsize
0x0010347a    8 506          sym._cmd_seek
0x00103674   10 244          sym._cmd_dump
0x00103768   13 356          sym._cmd_load
0x001038cc   13 342          sym._cmd_write
0x00103a22    4 152          sym._cmd_help
0x00103aba   29 984          sym._cmd_resize
0x00103e92   14 562          sym._cmd_system
0x001040c4    4 262          sym._red_slurpin
0x001041ca    7 238          sym._red_interpret
0x001042b8    9 796  -> 186  sym._red_cmd
0x001045d4   17 790          sym._red_prompt
0x001048ea   18 454          sym._red_open
0x00104ab0    1 44           sym._red_help
0x00104adc   21 748  -> 464  main
0x00104e48    2 1166 -> 150  fcn.00104e48
0x00104ec4   84 986          sym.___udivdi3
0x001052d8    5 74           sym.___main
0x00105322    3 34           sym._exit
0x00105344   18 172          sym.__fclose_r
0x001053f0    1 18           sym._fclose
0x00105402   40 428          sym.___sflush_r
0x001055ae    6 68           sym.__fflush_r
0x001055f2    3 40           sym._fflush
0x0010561a   15 304          sym.__fgets_r
0x0010574a    1 24           sym._fgets
0x00105766    1 106          sym._std
0x001057d0    1 18           sym.__cleanup_r
0x001057e2    1 88           sym.___sinit.part___0
0x0010583e    3 60           sym.___sfmoreglue
0x0010587a   13 180          sym.___sfp
0x0010592e    1 22           sym.__cleanup
0x00105944    3 20           sym.___sinit
0x00105958    1 2            sym.___sfp_lock_acquire
0x0010595a    1 2            sym.___sfp_lock_release
0x00105960    1 22           sym.___fp_lock_all
0x00105976    1 22           sym.___fp_unlock_all
0x0010598c    8 174          sym.__fopen_r
0x00105a3a    1 22           sym._fopen
0x00105a50    1 20           sym.__fprintf_r
0x00105a64    1 26           sym._fprintf
0x00105a7e   16 318          sym.__fread_r
0x00105bbc    1 36           sym._fread
0x00105be0    7 196          sym.__malloc_trim_r
0x00105ca4   41 668          sym.__free_r
0x00105f40    1 12           sym.__fseek_r
0x00105f4c    1 24           sym._fseek
0x00105f64   65 784          sym.__fseeko_r
0x00106274    1 24           sym._fseeko
0x0010628c    1 2            sym.__fstat_r
0x0010628e    4 48           fcn.0010628e
0x001062be   22 198          sym.__ftello_r
0x00106384    1 18           sym._ftello
0x00106396    8 72           sym.__fwalk
0x001063de    8 76           sym.__fwalk_reent
0x0010642a    8 144          sym.__fwrite_r
0x001064ba    1 36           sym._fwrite
0x001064de    1 4            sym.__getpid
0x001064e2    6 122          sym.___swhatbuf_r
0x0010655c   10 204          sym.___smakebuf_r
0x00106628    1 18           sym._malloc
0x0010663a    1 18           sym._free
0x0010664c  119 1806         sym.__malloc_r
0x00106d7a    4 28           sym._memcpy
0x00106d96    4 24           sym._memset
0x00106dae    1 2            sym.___malloc_lock
0x00106db0    1 2            sym.___malloc_unlock
0x00106db2    4 52           sym.__open_r
0x00106de6   24 354          sym.__perror_r
0x00106f48    1 18           sym._perror
0x00106f5a    1 24           sym.__printf_r
0x00106f72    1 28           sym._printf
0x00106f8e    1 16           sym.__putchar_r
0x00106f9e    1 24           sym._putchar
0x00106fb6    5 152          sym.__puts_r
0x0010704e    1 18           sym._puts
0x00107060    3 30           sym._lflush
0x0010707e   29 356          sym.___srefill_r
0x001071e2    4 46           sym.__sbrk_r
0x00107210    1 24           sym._setenv
0x00107228    1 18           sym._unsetenv
0x0010723a   37 494          sym.__setenv_r
0x00107428   11 152          sym.__unsetenv_r
0x001074c0    1 72           sym.__sprintf_r
0x00107508    1 76           sym._sprintf
0x00107554    1 86           sym._sscanf
0x001075aa    1 88           sym.__sscanf_r
0x00107602    3 50           sym.___sread
0x00107638    3 70           sym.___swrite
0x0010767e    3 52           sym.___sseek
0x001076b2    1 16           sym.___sclose
0x001076ea    1 18           sym._strdup
0x001076fc    3 48           sym.__strdup_r
0x0010772c    5 1442 -> 68   sym.__strerror_r
0x00107cce    1 22           sym._strerror
0x00107ce4    1 22           sym._strerror_l
0x00107cfc    5 28           sym._strlen
0x00107d64  316 6824 -> 5268 sym.__svfprintf_r
0x0010980c   30 5436 -> 512  sym.___ssvfscanf_r
0x00109fce   55 3600 -> 844  fcn.00109fce
0x0010ade0    1 18           sym._close
0x0010adf2    1 24           sym._lseek
0x0010ae0a    1 26           sym._open
0x0010ae24    1 24           sym._read
0x0010ae3c    3 32           sym.__system_r
0x0010ae5c    3 32           sym._system
0x0010ae7c    1 18           sym._unlink
0x0010ae8e    1 24           sym._write
0x0010aea6    1 4            sym.__user_strerror
0x0010aeaa    4 46           sym.__unlink_r
0x0010aed8  329 6958 -> 5454 sym.__vfprintf_r
0x0010ca20    1 24           sym._vfprintf
0x0010ca38    5 146          sym.___sbprintf
0x0010cacc    4 52           sym.__write_r
0x0010cb00   27 264          sym.___swsetup_r
0x0010cc08   20 170          sym.___call_exitprocs
0x0010ccb2    3 64           sym.__exit
0x0010ccf2    4 46           sym.__close_r
0x0010cd20   21 332          sym._quorem
0x0010ce6c  245 5166 -> 5020 sym.__dtoa_r
0x0010e29c    1 6            sym.___errno
0x0010e2a2    7 60           sym._fileno
0x0010e2de   15 146          sym.___sflags
0x0010e370    1 22           sym.__fstat
0x0010e386   64 1032         sym.___sfvwrite_r
0x0010e78e   15 160          sym.__findenv_r
0x0010e82e    1 18           sym.__getenv_r
0x0010e840    4 46           sym.__isatty_r
0x0010e86e    1 14           sym._iswspace
0x0010e87c    3 30           sym._iswspace_l
0x0010e89a    8 90           sym.__setlocale_r
0x0010e8f4    1 22           sym._setlocale
0x0010e920    4 52           sym.__lseek_r
0x0010e954    5 92           sym.__mbrtowc_r
0x0010e9b0    1 36           sym._mbrtowc
0x0010e9d4    1 34           sym.__mbtowc_r
0x0010e9f6   18 120          sym.___ascii_mbtowc
0x0010ea6e   12 136          sym.__Balloc
0x0010eaf6    9 198          sym.___multadd
0x0010ebbc   15 194          sym.___s2b
0x0010ec7e   12 86           sym.___hi0bits
0x0010ecd4   19 134          sym.___lo0bits
0x0010ed5a    3 52           sym.___i2b
0x0010ed8e   22 392          sym.___multiply
0x0010ef16   15 188          sym.___pow5mult
0x0010efd2   21 342          sym.___lshift
0x0010f128   22 396          sym.___mdiff
0x0010f2b4    7 74           sym.___ulp
0x0010f2fe   14 180          sym.___b2d
0x0010f3b2   12 272          sym.___d2b
0x0010f4c2    4 148          sym.___ratio
0x0010f556    5 114          sym.__mprec_log10
0x0010f668    1 20           sym.__open
0x0010f67c    8 108          sym.__putc_r
0x0010f6e8    1 22           sym._putc
0x0010f6fe    4 52           sym.__read_r
0x0010f732   21 1058 -> 342  sym.__realloc_r
0x0010fae0    6 348  -> 100  fcn.0010fae0
0x0010fb30    1 8            fcn.0010fb30
0x0010fb5a   40 1076 -> 674  fcn.0010fb5a
0x0010fb84    4 900  -> 62   fcn.0010fb84
0x0010fbd6    1 2            fcn.0010fbd6
0x0010fbfe    6 1036 -> 134  fcn.0010fbfe
0x0010fc5c   27 274          sym.__sbrk
0x0010fde4    4 98           sym._sulp
0x0010fe46  279 5280 -> 4792 sym.__strtod_l
0x00111036    6 4152 -> 148  fcn.00111036
0x001112e6    1 18           sym.__strtod_r
0x001112f8    1 24           sym._strtod_l
0x00111310    1 28           sym._strtod
0x0011132c   10 222          sym._strtof_l
0x0011140a   10 226          sym._strtof
0x001114ec   47 376          sym.__strtol_l.isra___0
0x00111664    1 12           sym.__strtol_r
0x00111670    1 24           sym._strtol_l
0x00111688    1 24           sym._strtol
0x001116a0   42 350          sym.__strtoul_l.isra___0
0x001117fe    1 12           sym.__strtoul_r
0x0011180a    1 24           sym._strtoul_l
0x00111822    1 24           sym._strtoul
0x0011183c   18 402          sym.___ssprint_r
0x001119ce  151 3464 -> 2318 sym.__svfiprintf_r
0x00111bba    2 6            fcn.00111bba
0x00111f24    1 4            fcn.00111f24
0x00112758   12 182          sym.__sungetc_r
0x0011280e    7 84           sym.___ssrefill_r
0x00112862    8 242          sym.__sfread_r
0x00112954   30 3974 -> 502  sym.___ssvfiscanf_r
0x00112cf0    1 4            fcn.00112cf0
0x001138e8    3 18           loc.___trap0
0x001138fa    7 134          sym.___submore
0x00113980   24 306          sym.__ungetc_r
0x00113ab2    1 22           sym._ungetc
0x00113ac8    1 20           sym.__unlink
0x00113adc   12 132          sym.___sprint_r.part___0
0x00113b60    3 28           sym.___sprint_r
0x00113b7c  145 3942 -> 2252 sym.__vfiprintf_r
0x00114afc    1 24           sym._vfiprintf
0x00114b14    5 146          sym.___sbprintf_0x114b14
0x00114ba8   19 248          sym.___swbuf_r
0x00114ca0    1 22           sym.___swbuf
0x00114cb6    1 22           sym.__wctomb_r
0x00114cf0    1 22           sym.__write
0x00114d06    1 16           sym._abort
0x00114d16    5 90           sym.___assert_func
0x00114d70   12 132          sym.__calloc_r
0x00114df4    1 20           sym.__close
0x00114e08    1 20           sym.__fiprintf_r
0x00114e1c    1 26           sym._fiprintf
0x00114e36   17 198          sym.___fputwc
0x00114efc    3 44           sym.__fputwc_r
0x00114f28   21 270          sym._fputwc
0x00115072   19 1448 -> 356  sym.___gethex
0x00115172    1 12           fcn.00115172
0x0011517e    1 2            fcn.0011517e
0x0011518c    1 8            fcn.0011518c
0x0011557e    2 16           fcn.0011557e
0x0011559e    1 2            fcn.0011559e
0x001155d4  113 1728 -> 1602 fcn.001155d4
0x00115840   44 612          sym.___hexnan
0x00115aa4    1 4            sym.__isatty
0x00115aac    1 24           sym.__lseek
0x00115ac4    1 22           sym.__read
0x00115ae2    6 46           sym.__init_signal_r.part___0
0x00115b10    3 26           sym.__init_signal_r
0x00115b2a    8 92           sym.__signal_r
0x00115b86   11 126          sym.__raise_r
0x00115c04   13 110          sym.___sigtramp_r
0x00115c72    1 18           sym._raise
0x00115c84    1 22           sym._signal
0x00115c9a    3 30           sym.__init_signal
0x00115cb8    1 18           sym.___sigtramp
0x00115cca    4 50           sym.__kill_r
0x00115cfc    1 12           sym.__getpid_r
0x00115d08    5 70           sym.__wcrtomb_r
0x00115d4e    1 24           sym._wcrtomb
0x00115d66    1 24           sym.__kill
0x00115d7e    3 84           sym.___unordsf2
0x00115dd2    3 92           sym.___unorddf2
EOF
RUN

NAME=v850 random pseudo
FILE=bins/elf/ld-2.27.so
CMDS=<<EOF
sd +128
e asm.arch=v850
e asm.pseudo=true
b 64
pi 64~=
EOF
EXPECT=<<EOF
*(r8 + 4167) = (byte) r24
r9 = ~lp
r1 = ~gp
r13 = 8
r13 = 0
r9 = r2
r17 = r13 | 904
lp = 0
r9 = r0
sp = ~gp
r11 = (34120 << XX) + r26
r6 = r18 | 0
r9 = r16
r10 = sp | 0
r9 = r8
r9 = r16
r22 = tp | 0
gp == -1
r17 = r8 & 0
r0 = ~r2
r25 = (byte) *(tp + 8805)
r9 = r0
r9 = ~lp
r9 = r8
r24 += r7
lp = (unsigned half) *(lp - 1)
r6 *= lp
r0 -= ep
EOF
RUN

NAME=v850 plf @@F functions hello-v850e
FILE=bins/v850/hello-v850e
CMDS=<<EOF
aaa
pdf @@F~:..33
plf @@F~:..33
EOF
EXPECT=<<EOF
            ;-- section..text:
            ;-- segment.LOAD0:
            ;-- segment.ehdr:
            ;-- .text:
            ;-- _start:
            ;-- pc:
/ entry0();
|           0x00100000      movea 0xff, r0, r20                        ; [00] -r-x section size 30816 named .text
|           0x00100004      mov   0xffff, r21
|           0x0010000a      mov   loc._stack, sp
|           0x00100010      mov   loc.___dtors, ep
|           0x00100016      mov   loc.__gp, gp
|           0x0010001c      mov   loc._etext, r6
|           0x00100022      ldsr  r6, CTBP, 0
|           0x00100026      stsr  PSW, r6, 0
|           0x0010002a      movhi 1, r0, r7
|           0x0010002e      or    r7, r6
|           0x00100030      ldsr  r6, PSW, 0
|           0x00100034      movhi 2, r0, r6
|           0x00100038      ldsr  r6, FPSR, 0
|           0x0010003c      mov   obj._initialized___901, r6
|           0x00100042      mov   loc._heap_start, r7
|       .-> 0x00100048      st.w  r0, 0[r6]
|       :   0x0010004c      addi  4, r6, r6
|       :   0x00100050      cmp   r7, r6
|       `=< 0x00100052      bl    0x100048
|           0x00100054      jarl  dbg.__main, lp                       ;  __main(void)
|           0x00100058      addi  -16, sp, sp
|           0x0010005c      mov   0, r6
|           0x0010005e      mov   0, r7
|           0x00100060      mov   0, r8
|           0x00100062      jarl  main, lp                             ; int main(int argc, char **argv, char **envp)
|           0x00100066      mov   r10, r6
0x100000 (set r20 (+ (var r0) (bv 32 0xff)))
0x100004 (set r21 (bv 32 0xffff))
0x10000a (set sp (bv 32 0x200000))
0x100010 (set ep (bv 32 0x108788))
0x100016 (set gp (bv 32 0x110788))
0x10001c (set r6 (bv 32 0x107860))
0x100022 (set CTBP (var r6))
0x100026 (set r6 (var PSW))
0x10002a (set r7 (+ (var r0) (bv 32 0x10000)))
0x10002e (seq (set result (| (var r6) (var r7))) (set PSW (| (| (<< (ite false (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))) (set r6 (var result)))
0x100030 (set PSW (var r6))
0x100034 (set r6 (+ (var r0) (bv 32 0x20000)))
0x100038 (set FPSR (var r6))
0x10003c (set r6 (bv 32 0x108790))
0x100042 (set r7 (bv 32 0x1087d4))
0x100048 (seq (set _adr (+ (var r6) (bv 32 0x0))) (storew 0 (var _adr) (var r0)))
0x10004c (seq (set result (+ (var r6) (bv 32 0x4))) (set PSW (| (| (| (<< (ite (|| (&& (sle (var result) (var r6)) (! (== (var result) (var r6)))) (&& (sle (var result) (bv 32 0x4)) (! (== (var result) (bv 32 0x4))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x3) false) (<< (ite (let _x (var result) (|| (! (sle (var _x) (bv 32 0x7fffffff))) (&& (sle (var _x) (bv 32 0x80000000)) (! (== (var _x) (bv 32 0x80000000)))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false)) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))) (set r6 (var result)))
0x100050 (seq (set result (- (var r6) (var r7))) (set PSW (| (| (| (<< (ite (&& (sle (var r7) (var r6)) (! (== (var r7) (var r6)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x3) false) (<< (ite (let _x (var result) (|| (! (sle (var _x) (bv 32 0x7fffffff))) (&& (sle (var _x) (bv 32 0x80000000)) (! (== (var _x) (bv 32 0x80000000)))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false)) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))))
0x100052 (branch (! (is_zero (& (>> (var PSW) (bv 32 0x3) false) (bv 32 0x1)))) (seq (set _pc (+ (bv 32 0x100052) (bv 32 0xfffffff6))) (jmp (var _pc))) nop)
0x100054 (seq (set lp (+ (bv 32 0x100054) (bv 32 0x4))) (set _pc (+ (bv 32 0x100054) (bv 32 0x7c))) (jmp (var _pc)))
0x100058 (seq (set result (+ (var sp) (bv 32 0xfffffff0))) (set PSW (| (| (| (<< (ite (|| (&& (sle (var result) (var sp)) (! (== (var result) (var sp)))) (&& (sle (var result) (bv 32 0xfffffff0)) (! (== (var result) (bv 32 0xfffffff0))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x3) false) (<< (ite (let _x (var result) (|| (! (sle (var _x) (bv 32 0x7fffffff))) (&& (sle (var _x) (bv 32 0x80000000)) (! (== (var _x) (bv 32 0x80000000)))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false)) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))) (set sp (var result)))
0x10005c (set r6 (bv 32 0x0))
0x10005e (set r7 (bv 32 0x0))
0x100060 (set r8 (bv 32 0x0))
0x100062 (seq (set lp (+ (bv 32 0x100062) (bv 32 0x4))) (set _pc (+ (bv 32 0x100062) (bv 32 0x2e))) (jmp (var _pc)))
0x100066 (set r6 (var r10))
0x100068 (seq (set lp (+ (bv 32 0x100068) (bv 32 0x4))) (set _pc (+ (bv 32 0x100068) (bv 32 0xb2))) (jmp (var _pc)))
0x1000d0 (seq (set _tmp (var sp)) (set _tmp (- (var _tmp) (bv 32 0x4))) (set _adr (& (var _tmp) (bv 32 0xfffffffc))) (storew 0 (var _adr) (var r28)) (set _tmp (- (var _tmp) (bv 32 0x4))) (set _adr (& (var _tmp) (bv 32 0xfffffffc))) (storew 0 (var _adr) (var r29)) (set _tmp (- (var _tmp) (bv 32 0x4))) (set _adr (& (var _tmp) (bv 32 0xfffffffc))) (storew 0 (var _adr) (var lp)) (set sp (- (var _tmp) (<< (bv 32 0x0) (bv 32 0x2) false))))
0x1000d4 (set r10 (bv 32 0x108790))
0x1000da (seq (set _adr (+ (var r10) (bv 32 0x0))) (set r11 (loadw 0 32 (var _adr))))
0x1000de (seq (set result (- (var r11) (bv 32 0x0))) (set PSW (| (| (| (<< (ite (&& (sle (bv 32 0x0) (var r11)) (! (== (bv 32 0x0) (var r11)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x3) false) (<< (ite (let _x (var result) (|| (! (sle (var _x) (bv 32 0x7fffffff))) (&& (sle (var _x) (bv 32 0x80000000)) (! (== (var _x) (bv 32 0x80000000)))))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x2) false)) (<< (ite (&& (sle (var result) (bv 32 0x0)) (! (== (var result) (bv 32 0x0)))) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x1) false)) (<< (ite (is_zero (var result)) (bv 32 0x1) (bv 32 0x0)) (bv 32 0x0) false))))
0x1000e0 (branch (! (! (is_zero (& (>> (var PSW) (bv 32 0x0) false) (bv 32 0x1))))) (seq (set _pc (+ (bv 32 0x1000e0) (bv 32 0x36))) (jmp (var _pc))) nop)
0x1000e2 (set r29 (bv 32 0x108788))
EOF
RUN

NAME=v850 s main hello-v850e
FILE=bins/v850/hello-v850e
CMDS=<<EOF
s main
s
EOF
EXPECT=<<EOF
0x100090
EOF
RUN

NAME=v850 disassembly hello-v850e
FILE=bins/v850/hello-v850e
CMDS=<<EOF
pd 10 @ 0x1005e8
pd 10 @ 0x1006da
pd 10 @ 0x100eb8
EOF
EXPECT=<<EOF
            0x001005e8      mov   0, r27                               ; vfprintf.c:1064
            0x001005ea      addi  -48, r23, r12
            0x001005ee      mov   r27, r10                             ; vfprintf.c:1082
            0x001005f0      ld.b  0[r21], r23                          ; vfprintf.c:1084
            0x001005f4      shl   2, r10                               ; vfprintf.c:1083
            0x001005f6      add   1, r21                               ; vfprintf.c:1084
            0x001005f8      add   r10, r27                             ; vfprintf.c:1083
            0x001005fa      add   r27, r27
            0x001005fc      add   r12, r27
            0x001005fe      addi  -48, r23, r12                        ; vfprintf.c:1084
            0x001006da      cmpf.d ge, r12, r14, 0
            0x001006de      trfsr 0
        ,=< 0x001006e2      be    0x101336
        |   0x001006e6      ld.dw 32[sp], r10                          ; vfprintf.c:1230
        |   0x001006ec      st.w  r0, 20[sp]
        |   0x001006f0      st.w  r0, 24[sp]
        |   0x001006f4      ld.dw 20[sp], r12
        |   0x001006fa      cmpf.d p, r10, r12, 0
        |   0x001006fe      trfsr 0
       ,==< 0x00100702      be    0x1018d4
            0x00100eb8      addi  8, r13, r29
            0x00100ebc      cmpf.d e, r14, r6, 0
            0x00100ec0      trfsr 0
        ,=< 0x00100ec4      be    0x101246
        |   0x00100ec8      addi  1, r22, r16                          ; vfprintf.c:1751
        |   0x00100ecc      add   r23, r10                             ; vfprintf.c:1754
        |   0x00100ece      cmp   7, r17
        |   0x00100ed0      st.w  r16, 0[r13]
        |   0x00100ed4      st.w  r23, 4[r13]
        |   0x00100ed8      st.w  r10, 124[sp]
EOF
RUN

NAME=v850 disassembly ired_v850
FILE=bins/v850/ired_v850
CMDS=<<EOF
pd 10 @ 0x0010101e
EOF
EXPECT=<<EOF
            0x0010101e      ld.w  28[r29], r10
            0x00101022      and   r0, r10
            0x00101024      st.w  r10, 12[r29]
            0x00101028      ld.w  28[r29], r10
            0x0010102c      shl   31, r10
            0x0010102e      ld.w  24[r29], r11
            0x00101032      shr   1, r11
            0x00101034      st.w  r11, 16[r29]
            0x00101038      ld.w  16[r29], r11
            0x0010103c      or    r10, r11
EOF
RUN

NAME=v850 s main hello-v850e_stripped
FILE=bins/v850/hello-v850e_stripped
CMDS=<<EOF
s main
s
EOF
EXPECT=<<EOF
0x100090
EOF
RUN

NAME=v850 s main ired_v850
FILE=bins/v850/ired_v850
CMDS=<<EOF
s main
s
EOF
EXPECT=<<EOF
0x104adc
EOF
RUN

NAME=v850 local variables
FILE=bins/v850/emulateme.v850
CMDS=<<EOF
aaa
pdf @ main
EOF
EXPECT=<<EOF
            ; CALL XREF from entry0 @ 0x100062
            ;-- _main:
/ int main(int argc, char **argv, char **envp);
|           ; arg char **envp @ stack + 0x8
|           ; arg int32_t arg_ch @ stack + 0xc
|           ; arg int32_t arg_18h @ stack + 0x18
|           ; arg int32_t arg_1ch @ stack + 0x1c
|           0x0010016a      add   -8, sp
|           0x0010016c      st.w  lp, 4[sp]
|           0x00100170      st.w  r29, 0[sp]
|           0x00100174      add   -8, sp
|           0x00100176      mov   sp, r29
|           0x00100178      st.w  r6, 4[r29]
|           0x0010017c      st.w  r7, 0[r29]
|           0x00100180      mov   sym._decrypt, r10
|           0x00100186      jarl  [r10], lp
|           0x0010018a      mov   0, r10
|           0x0010018c      mov   r29, sp
|           0x0010018e      ld.w  12[sp], lp
|           0x00100192      ld.w  8[sp], r29
|           0x00100196      addi  16, sp, sp
\           0x0010019a      jmp   [lp]
EOF
RUN
