Inderpal S. Bhandari

20 papers A* 3A 3B 1Journal 11Unranked 2
YearRankTypeTitle / Venue / Authors
1998 J jnl
IBM Syst. J.
Manoel G. Mendonça, Victor R. Basili, Inderpal S. Bhandari, Jack Dawson
1997 J jnl
Data Min. Knowl. Discov.
Inderpal S. Bhandari, Edward Colet, Jennifer Parker, Zachary Pines, Rajiv Pratap, Krishnakumar Ramanujam
1997 J jnl
J. Parallel Distributed Comput.
Bülent Yener, Inderpal S. Bhandari, Yoram Ofek, Moti Yung
1995 J jnl
IEEE Trans. Syst. Man Cybern.
Inderpal S. Bhandari, Herbert A. Simon, Daniel P. Siewiorek
1995 conf
CASCON
Inderpal S. Bhandari, Manoel G. Mendonça, Jack Dawson
1994 J jnl
J. Syst. Softw.
Michael J. Halliday, Inderpal S. Bhandari, Jarir K. Chaar, Ram Chillarege
1994 B conf
ICNP
Bülent Yener, Inderpal S. Bhandari, Yoram Ofek, Moti Yung
1994 J jnl
IBM Syst. J.
Inderpal S. Bhandari, Michael J. Halliday, Jarir K. Chaar, Ram Chillarege, K. Jones, J. S. Atkinson, Cleo Lepori-Costello, P. Y. Jasper, E. D. Tarver, C. C. Lewis, M. Yonezawa
1994 conf
KDD Workshop
Inderpal S. Bhandari, Shriram Biyani
1993 J jnl
IEEE Trans. Software Eng.
Inderpal S. Bhandari, Michael J. Halliday, Eric Tarver, David Brown, Jarir K. Chaar, Ram Chillarege
1993 J jnl
IEEE Trans. Software Eng.
Jarir K. Chaar, Michael J. Halliday, Inderpal S. Bhandari, Ram Chillarege
1993 A conf
ITC
Jarir K. Chaar, Michael J. Halliday, Inderpal S. Bhandari, Ram Chillarege
1993 A* conf
ICSE
Inderpal S. Bhandari, Norman Roth
1992 J jnl
IEEE Trans. Software Eng.
Ram Chillarege, Inderpal S. Bhandari, Jarir K. Chaar, Michael J. Halliday, Diane S. Moebus, Bonnie K. Ray, Man-Yuen Wong
1990 J jnl
IEEE Trans. Syst. Man Cybern.
Inderpal S. Bhandari, Herbert A. Simon, Daniel P. Siewiorek
1988 A conf
ICDCS
Inderpal S. Bhandari, C. Mani Krishna, Daniel P. Siewiorek
1988 A* conf
AAAI
Yumi Iwasaki, Inderpal S. Bhandari
1988 A conf
RTSS
C. Mani Krishna, Inderpal S. Bhandari
1988 A* conf
DAC
Inderpal S. Bhandari, Mark Hirsch, Daniel P. Siewiorek
1987 J jnl
IEEE Trans. Computers
C. Mani Krishna, Kang G. Shin, Inderpal S. Bhandari
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