Jack Dowie

38 papers Unranked 38
YearRankTypeTitle / Venue / Authors
2024 conf
MIE
Vije Kumar Rajput, Mette Kjer Kaltoft, Jack Dowie
2024 conf
pHealth
Jack Dowie, Mette Kjer Kaltoft, Vije Kumar Rajput
2024 conf
pHealth
Jack Dowie, Mette Kjer Kaltoft, Vije Kumar Rajput
2024 conf
pHealth
Jack Dowie, Mette Kjer Kaltoft
2024 conf
dHealth
Jack Dowie, Mette Kjer Kaltoft, Vije Kumar Rajput
2023 conf
EFMI-STC
Vije Kumar Rajput, Mette Kjer Kaltoft, Jack Dowie
2022 conf
EFMI-STC
Vije Kumar Rajput, Jack Dowie, Mette Kjer Kaltoft
2022 conf
pHealth
Vije Kumar Rajput, Mette Kjer Kaltoft, Jack Dowie
2021 conf
pHealth
Jack Dowie, Mette Kjer Kaltoft, Vije Kumar Rajput
2020 conf
MIE
Vije Kumar Rajput, Jack Dowie, Mette Kjer Kaltoft
2020 conf
pHealth
Jack Dowie
2020 conf
MIE
Jack Dowie, Mette Kjer Kaltoft
2020 conf
pHealth
Jack Dowie, Mette Kjer Kaltoft, Vije Kumar Rajput
2020 conf
EFMI-STC
Jack Dowie, Mette Kjer Kaltoft, Vije Kumar Rajput
2020 conf
EFMI-STC
Jack Dowie, Mette Kjer Kaltoft, Vije Kumar Rajput
2020 conf
EFMI-STC
Vije Kumar Rajput, Jack Dowie, Mette Kjer Kaltoft
2020 conf
pHealth
Vije Kumar Rajput, Jack Dowie, Mette Kjer Kaltoft
2019 conf
MedInfo
Jack Dowie, Vije Kumar Rajput, Mette Kjer Kaltoft
2019 conf
pHealth
Vije Kumar Rajput, Mette Kjer Kaltoft, Jack Dowie
2019 conf
ICIMTH
Mette Kjer Kaltoft, Jack Dowie
2019 conf
pHealth
Mette Kjer Kaltoft, Jack Dowie
2019 conf
ICIMTH
Jack Dowie, Mette Kjer Kaltoft
2019 conf
CSHI
Jack Dowie, Mette Kjer Kaltoft
2019 conf
pHealth
Jack Dowie, Mette Kjer Kaltoft
2019 conf
EFMI-STC
Jack Dowie, Mette Kjer Kaltoft
2019 conf
ICIMTH
Jack Dowie, Mette Kjer Kaltoft
2018 conf
EFMI-STC
Mette Kjer Kaltoft, Jesper Bo Nielsen, Jack Dowie
2018 conf
EFMI-STC
Mette Kjer Kaltoft, Jesper Bo Nielsen, Jack Dowie
2018 conf
ICIMTH
Mette Kjer Kaltoft, Jesper Bo Nielsen, Jack Dowie
2018 conf
ICIMTH
Mette Kjer Kaltoft, Jesper Bo Nielsen, Jack Dowie
2018 conf
MIE
Mette Kjer Kaltoft, Jesper Bo Nielsen, Jack Dowie
2016 conf
Nursing Informatics
Mette Kjer Kaltoft, Glenn Salkeld, Jack Dowie
2016 conf
Nursing Informatics
Mette Kjer Kaltoft, Jesper Bo Nielsen, Glenn Salkeld, Jack Dowie
2015 conf
MedInfo
Glenn Salkeld, Sally Wortley, David Hunter, Hema Umapathy, Jack Dowie
2015 conf
CSHI
Mette Kjer Kaltoft, Jesper Bo Nielsen, Glenn Salkeld, Jack Dowie
2015 conf
CSHI
Mette Kjer Kaltoft, Jesper Bo Nielsen, Glenn Salkeld, Jack Dowie
2014 conf
MIE
Mette Kjer Kaltoft, Jesper Bo Nielsen, Glenn Salkeld, Jack Dowie
2013 conf
MedInfo
Jack Dowie
redb/extractors/decompiler/bninja/analysis/medium_level_normalization.py
← Index redb/extractors/decompiler/bninja/analysis/medium_level_normalization.py python
from binaryninja import (
    MediumLevelILInstruction,
    Variable, SSAVariable,
    ILIntrinsic,
)


class MediumLevelNormalization:
    def __init__(self):
        return

    def _collect_ops(self, il, ops):
        if il is None:
            return
        ops.append(int(il.operation))
        operands = getattr(il, "operands", None)
        if not operands:
            return
        for op in operands:
            if isinstance(op, MediumLevelILInstruction):
                self._collect_ops(op, ops)
            elif isinstance(op, (list, tuple)):
                for sub in op:
                    if isinstance(sub, MediumLevelILInstruction):
                        self._collect_ops(sub, ops)

    def normalize_instruction_all_levels(self, instr_il):
        ops = []
        self._collect_ops(instr_il, ops)
        return ops

    def _leaf_type(self, val):
        if isinstance(val, SSAVariable):
            return "SSA_VAR"
        if isinstance(val, Variable):
            return "VAR"
        if isinstance(val, ILIntrinsic):
            return "INTRINSIC"
        if isinstance(val, bool):
            return "BOOL"
        if isinstance(val, float):
            return "FLOAT_CONST"
        if isinstance(val, int):
            return "CONST"
        if isinstance(val, str):
            return "STR"
        return type(val).__name__.upper()

    def _collect(self, il, out_op):
        if il is None:
            return
        out_op.append(int(il.operation))
        operands = getattr(il, "operands", None)
        if not operands:
            return
        for op in operands:
            if isinstance(op, MediumLevelILInstruction):
                self._collect(op, out_op)
            elif isinstance(op, (list, tuple)):
                for sub in op:
                    if isinstance(sub, MediumLevelILInstruction):
                        self._collect(sub, out_op)
                    else:
                        out_op.append(self._leaf_type(sub))
            else:
                out_op.append(self._leaf_type(op))

    def normalize_instr_with_operands(self, instr_il):
        ops = []
        self._collect(instr_il, ops)
        return ops