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": "sp",
        "src": {
          "opcode": "-",
          "x": {
            "opcode": "var",
            "value": "sp"
          },
          "y": {
            "opcode": "bitv",
            "bits": "0x2",
            "len": 16
          }
        }
      },
      "y": {
        "opcode": "storew",
        "mem": 0,
        "key": {
          "opcode": "+",
          "x": {
            "opcode": "+",
            "x": {
              "opcode": "cast",
              "value": {
                "opcode": "var",
                "value": "sp"
              },
              "length": 16,
              "fill": {
                "opcode": "bool",
                "value": false
              }
            },
            "y": {
              "opcode": "bitv",
              "bits": "0x0",
              "len": 16
            }
          },
          "y": {
            "opcode": "<<",
            "x": {
              "opcode": "cast",
              "value": {
                "opcode": "var",
                "value": "ss"
              },
              "length": 16,
              "fill": {
                "opcode": "bool",
                "value": false
              }
            },
            "y": {
              "opcode": "bitv",
              "bits": "0x4",
              "len": 8
            },
            "fill_bit": {
              "opcode": "bool",
              "value": false
            }
          }
        },
        "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
          }
        }
      }
    },
    "sign": false,
    "prefix": 0,
    "id": 591,
    "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
