K. R. Sahasranand

24 papers B 3Journal 14Unranked 7
YearRankTypeTitle / Venue / Authors
2025 B conf
ISIT
Malhar Managoli, K. R. Sahasranand, Vinod M. Prabhakaran
2025 J jnl
CoRR
Malhar A. Managoli, K. R. Sahasranand, Vinod M. Prabhakaran
2024 J jnl
IEEE Trans. Inf. Theory
K. R. Sahasranand, Aslan Tchamkerten
2023 J jnl
CoRR
K. R. Sahasranand, Aslan Tchamkerten
2023 B conf
ISIT
K. R. Sahasranand, Aslan Tchamkerten
2022 J jnl
IEEE Trans. Smart Grid
K. R. Sahasranand, Francis C. Joseph, Himanshu Tyagi, Gurunath Gurrala, Ashish Joglekar
2022 J jnl
IEEE Signal Process. Lett.
K. R. Sahasranand
2021 J jnl
IEEE Trans. Inf. Theory
K. R. Sahasranand, Himanshu Tyagi
2021 J jnl
IEEE Trans. Instrum. Meas.
Ashish Joglekar, Gurunath Gurrala, Puneet Kumar, Francis C. Joseph, T. S. Kiran, K. R. Sahasranand, Himanshu Tyagi
2020 J jnl
CoRR
K. R. Sahasranand, Himanshu Tyagi
2019 conf
e-Energy
K. R. Sahasranand, Biswajeet Rout, Ashish Joglekar, Gurunath Gurrala, Himanshu Tyagi
2018 B conf
ISIT
K. R. Sahasranand, Himanshu Tyagi
2017 J jnl
CoRR
Deekshith P. K., K. R. Sahasranand
2017 conf
ISWCS
Deekshith P. K., K. R. Sahasranand
2016 J jnl
CoRR
Nithin Nagaraj, K. R. Sahasranand
2016 conf
SPCOM
Nithin Nagaraj, K. R. Sahasranand
2015 conf
ICC
K. R. Sahasranand, Vinod Sharma
2015 conf
NCC
K. R. Sahasranand, Vinod Sharma
2014 conf
ICC
Shouvik Ganguly, K. R. Sahasranand, Vinod Sharma
2014 conf
NCC
Shouvik Ganguly, K. R. Sahasranand, Vinod Sharma
2014 J jnl
CoRR
K. R. Sahasranand, Vinod Sharma
2013 J jnl
CoRR
Shouvik Ganguly, K. R. Sahasranand, Vinod Sharma
2010 J jnl
CoRR
K. R. Sahasranand, Nithin Nagaraj, S. Rajan
2010 J jnl
CoRR
K. R. Sahasranand, Nithin Nagaraj
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