NAME=arj x86 16 bits
FILE=malloc://0x100
CMDS=<<EOF
e asm.arch=x86
e analysis.arch=x86
e asm.bits=16
arj
EOF
EXPECT=<<EOF
{"ip":0,"ax":0,"bx":0,"cx":0,"dx":0,"sp":0,"bp":0,"si":0,"di":0,"flags":0}
EOF
RUN

NAME=lcall offset (#12284)
FILE==
CMDS=<<EOF
e asm.arch=x86
e asm.bits=16
wx 9a34002001
%v $j
EOF
EXPECT=<<EOF
0x1234
EOF
RUN

NAME=ljmp offset (#12284)
FILE==
CMDS=<<EOF
e asm.arch=x86
e asm.bits=16
wx ea34002001
%v $j
EOF
EXPECT=<<EOF
0x1234
EOF1
RUN

NAME=aoj pushf
FILE==
CMDS=<<EOF
e asm.arch=x86
e asm.bits=16
wx 9c
aoj~{}
EOF
EXPECT=<<EOF
[
  {
    "opcode": "pushf",
    "disasm": "pushf",
    "pseudo": "pushf ",
    "description": "push flags register onto the stack",
    "mnemonic": "pushf",
    "mask": "ff",
    "esil": "2,sp,-=,eflags,sp,=[2]",
    "rzil": {
      "opcode": "seq",
      "x": {
        "opcode": "set",
        "dst": "final",
        "src": {
          "opcode": "-",
          "x": {
            "opcode": "var",
            "value": "sp"
          },
          "y": {
            "opcode": "bitv",
            "bits": "0x2",
            "len": 16
          }
        }
      },
      "y": {
        "opcode": "seq",
        "x": {
          "opcode": "storew",
          "mem": 0,
          "key": {
            "opcode": "var",
            "value": "final"
          },
          "value": {
            "opcode": "cast",
            "value": {
              "opcode": "|",
              "x": {
                "opcode": "<<",
                "x": {
                  "opcode": "|",
                  "x": {
                    "opcode": "<<",
                    "x": {
                      "opcode": "|",
                      "x": {
                        "opcode": "<<",
                        "x": {
                          "opcode": "|",
                          "x": {
                            "opcode": "<<",
                            "x": {
                              "opcode": "|",
                              "x": {
                                "opcode": "<<",
                                "x": {
                                  "opcode": "|",
                                  "x": {
                                    "opcode": "<<",
                                    "x": {
                                      "opcode": "|",
                                      "x": {
                                        "opcode": "<<",
                                        "x": {
                                          "opcode": "|",
                                          "x": {
                                            "opcode": "<<",
                                            "x": {
                                              "opcode": "|",
                                              "x": {
                                                "opcode": "<<",
                                                "x": {
                                                  "opcode": "|",
                                                  "x": {
                                                    "opcode": "<<",
                                                    "x": {
                                                      "opcode": "|",
                                                      "x": {
                                                        "opcode": "<<",
                                                        "x": {
                                                          "opcode": "|",
                                                          "x": {
                                                            "opcode": "<<",
                                                            "x": {
                                                              "opcode": "ite",
                                                              "condition": {
                                                                "opcode": "bool",
                                                                "value": false
                                                              },
                                                              "x": {
                                                                "opcode": "bitv",
                                                                "bits": "0x1",
                                                                "len": 16
                                                              },
                                                              "y": {
                                                                "opcode": "bitv",
                                                                "bits": "0x0",
                                                                "len": 16
                                                              }
                                                            },
                                                            "y": {
                                                              "opcode": "bitv",
                                                              "bits": "0x1",
                                                              "len": 16
                                                            },
                                                            "fill_bit": {
                                                              "opcode": "bool",
                                                              "value": false
                                                            }
                                                          },
                                                          "y": {
                                                            "opcode": "ite",
                                                            "condition": {
                                                              "opcode": "var",
                                                              "value": "nt"
                                                            },
                                                            "x": {
                                                              "opcode": "bitv",
                                                              "bits": "0x1",
                                                              "len": 16
                                                            },
                                                            "y": {
                                                              "opcode": "bitv",
                                                              "bits": "0x0",
                                                              "len": 16
                                                            }
                                                          }
                                                        },
                                                        "y": {
                                                          "opcode": "bitv",
                                                          "bits": "0x2",
                                                          "len": 16
                                                        },
                                                        "fill_bit": {
                                                          "opcode": "bool",
                                                          "value": false
                                                        }
                                                      },
                                                      "y": {
                                                        "opcode": "bitv",
                                                        "bits": "0x3",
                                                        "len": 16
                                                      }
                                                    },
                                                    "y": {
                                                      "opcode": "bitv",
                                                      "bits": "0x1",
                                                      "len": 16
                                                    },
                                                    "fill_bit": {
                                                      "opcode": "bool",
                                                      "value": false
                                                    }
                                                  },
                                                  "y": {
                                                    "opcode": "ite",
                                                    "condition": {
                                                      "opcode": "var",
                                                      "value": "of"
                                                    },
                                                    "x": {
                                                      "opcode": "bitv",
                                                      "bits": "0x1",
                                                      "len": 16
                                                    },
                                                    "y": {
                                                      "opcode": "bitv",
                                                      "bits": "0x0",
                                                      "len": 16
                                                    }
                                                  }
                                                },
                                                "y": {
                                                  "opcode": "bitv",
                                                  "bits": "0x1",
                                                  "len": 16
                                                },
                                                "fill_bit": {
                                                  "opcode": "bool",
                                                  "value": false
                                                }
                                              },
                                              "y": {
                                                "opcode": "ite",
                                                "condition": {
                                                  "opcode": "var",
                                                  "value": "df"
                                                },
                                                "x": {
                                                  "opcode": "bitv",
                                                  "bits": "0x1",
                                                  "len": 16
                                                },
                                                "y": {
                                                  "opcode": "bitv",
                                                  "bits": "0x0",
                                                  "len": 16
                                                }
                                              }
                                            },
                                            "y": {
                                              "opcode": "bitv",
                                              "bits": "0x1",
                                              "len": 16
                                            },
                                            "fill_bit": {
                                              "opcode": "bool",
                                              "value": false
                                            }
                                          },
                                          "y": {
                                            "opcode": "ite",
                                            "condition": {
                                              "opcode": "var",
                                              "value": "if"
                                            },
                                            "x": {
                                              "opcode": "bitv",
                                              "bits": "0x1",
                                              "len": 16
                                            },
                                            "y": {
                                              "opcode": "bitv",
                                              "bits": "0x0",
                                              "len": 16
                                            }
                                          }
                                        },
                                        "y": {
                                          "opcode": "bitv",
                                          "bits": "0x1",
                                          "len": 16
                                        },
                                        "fill_bit": {
                                          "opcode": "bool",
                                          "value": false
                                        }
                                      },
                                      "y": {
                                        "opcode": "ite",
                                        "condition": {
                                          "opcode": "var",
                                          "value": "tf"
                                        },
                                        "x": {
                                          "opcode": "bitv",
                                          "bits": "0x1",
                                          "len": 16
                                        },
                                        "y": {
                                          "opcode": "bitv",
                                          "bits": "0x0",
                                          "len": 16
                                        }
                                      }
                                    },
                                    "y": {
                                      "opcode": "bitv",
                                      "bits": "0x1",
                                      "len": 16
                                    },
                                    "fill_bit": {
                                      "opcode": "bool",
                                      "value": false
                                    }
                                  },
                                  "y": {
                                    "opcode": "ite",
                                    "condition": {
                                      "opcode": "var",
                                      "value": "zf"
                                    },
                                    "x": {
                                      "opcode": "bitv",
                                      "bits": "0x1",
                                      "len": 16
                                    },
                                    "y": {
                                      "opcode": "bitv",
                                      "bits": "0x0",
                                      "len": 16
                                    }
                                  }
                                },
                                "y": {
                                  "opcode": "bitv",
                                  "bits": "0x1",
                                  "len": 16
                                },
                                "fill_bit": {
                                  "opcode": "bool",
                                  "value": false
                                }
                              },
                              "y": {
                                "opcode": "ite",
                                "condition": {
                                  "opcode": "var",
                                  "value": "zf"
                                },
                                "x": {
                                  "opcode": "bitv",
                                  "bits": "0x1",
                                  "len": 16
                                },
                                "y": {
                                  "opcode": "bitv",
                                  "bits": "0x0",
                                  "len": 16
                                }
                              }
                            },
                            "y": {
                              "opcode": "bitv",
                              "bits": "0x2",
                              "len": 16
                            },
                            "fill_bit": {
                              "opcode": "bool",
                              "value": false
                            }
                          },
                          "y": {
                            "opcode": "ite",
                            "condition": {
                              "opcode": "var",
                              "value": "af"
                            },
                            "x": {
                              "opcode": "bitv",
                              "bits": "0x1",
                              "len": 16
                            },
                            "y": {
                              "opcode": "bitv",
                              "bits": "0x0",
                              "len": 16
                            }
                          }
                        },
                        "y": {
                          "opcode": "bitv",
                          "bits": "0x2",
                          "len": 16
                        },
                        "fill_bit": {
                          "opcode": "bool",
                          "value": false
                        }
                      },
                      "y": {
                        "opcode": "ite",
                        "condition": {
                          "opcode": "var",
                          "value": "pf"
                        },
                        "x": {
                          "opcode": "bitv",
                          "bits": "0x1",
                          "len": 16
                        },
                        "y": {
                          "opcode": "bitv",
                          "bits": "0x0",
                          "len": 16
                        }
                      }
                    },
                    "y": {
                      "opcode": "bitv",
                      "bits": "0x1",
                      "len": 16
                    },
                    "fill_bit": {
                      "opcode": "bool",
                      "value": false
                    }
                  },
                  "y": {
                    "opcode": "bitv",
                    "bits": "0x1",
                    "len": 16
                  }
                },
                "y": {
                  "opcode": "bitv",
                  "bits": "0x1",
                  "len": 16
                },
                "fill_bit": {
                  "opcode": "bool",
                  "value": false
                }
              },
              "y": {
                "opcode": "ite",
                "condition": {
                  "opcode": "var",
                  "value": "cf"
                },
                "x": {
                  "opcode": "bitv",
                  "bits": "0x1",
                  "len": 16
                },
                "y": {
                  "opcode": "bitv",
                  "bits": "0x0",
                  "len": 16
                }
              }
            },
            "length": 16,
            "fill": {
              "opcode": "bool",
              "value": false
            }
          }
        },
        "y": {
          "opcode": "set",
          "dst": "sp",
          "src": {
            "opcode": "var",
            "value": "final"
          }
        }
      }
    },
    "sign": false,
    "prefix": 0,
    "id": 612,
    "opex": {
      "operands": [
        {
          "size": 2,
          "rw": 1,
          "type": "reg",
          "value": "flags"
        }
      ]
    },
    "addr": 0,
    "bytes": "9c",
    "size": 1,
    "type": "upush",
    "esilcost": 0,
    "scale": 0,
    "refptr": 0,
    "cycles": 2,
    "failcycles": 0,
    "delay": 0,
    "stack": "inc",
    "stackptr": 2,
    "family": "cpu"
  }
]
EOF
RUN
