Manu Sood

12 papers Journal 8Unranked 3
YearRankTypeTitle / Venue / Authors
2026 J jnl
Comput. Sci. Rev.
Radhika Dhiman, Manu Sood, Jawahar Thakur
2026 J jnl
Veh. Commun.
Santosh Kumar, Amol Vasudeva, Manu Sood
2023 J jnl
Educ. Inf. Technol.
Pratiyush Guleria, Manu Sood
2022 J jnl
J. King Saud Univ. Comput. Inf. Sci.
Amol Vasudeva, Manu Sood
2021 ch.
Semantic IoT
Pratiyush Guleria, Manu Sood
2019 J jnl
Autom. Control. Comput. Sci.
Naveen Bindra, Manu Sood
2019 J jnl
Int. J. Secur. Networks
Naveen Bindra, Manu Sood
2018 J jnl
J. Netw. Comput. Appl.
Amol Vasudeva, Manu Sood
2011 J jnl
J. Softw. Eng. Appl.
Yashwant Singh, Manu Sood, Tarun Gupta, Atish Thakur
2011 conf
ACC (1)
Ritu Sharma, Manu Sood, Divya Sharma
2009 conf
CICSyN
Yashwant Singh, Manu Sood
2004 conf
CCCT (2)
Manu Sood, Sangeeta Sabharwal, Yogesh Singh
redb/extractors/decompiler/bninja/analysis/low_level_normalization.py
← Index redb/extractors/decompiler/bninja/analysis/low_level_normalization.py python
from binaryninja import (
    ILRegister, ILRegisterStack, ILFlag,
    ILIntrinsic, ILSemanticFlagGroup,
)

class LowLevelNormalization:
    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 hasattr(op, "operation"):
                self._collect_ops(op, ops)
            elif isinstance(op, (list, tuple)):
                for sub in op:
                    if hasattr(sub, "operation"):
                        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, ILRegister):
            return "REG"
        if isinstance(val, ILRegisterStack):
            return "REG_STACK"
        if isinstance(val, ILFlag):
            return "FLAG"
        if isinstance(val, ILSemanticFlagGroup):
            return "FLAG_GROUP"
        if isinstance(val, ILIntrinsic):
            return "INTRINSIC"
        if isinstance(val, bool):
            return "BOOL"
        if isinstance(val, int):
            return "CONST"
        return type(val).__name__.upper()

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

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