Casey J. Zampella

12 papers A* 2B 1Journal 3Unranked 6
YearRankTypeTitle / Venue / Authors
2025 J jnl
CoRR
Evangelos Sariyanidi, Gokul Nair, Lisa Yankowitz, Casey J. Zampella, Mohan Kashyap Pargi, Aashvi Manakiwala, Maya McNealis, John D. Herrington, Jeffrey Cohn, Robert T. Schultz, Birkan Tunç
2025 J jnl
CoRR
Evangelos Sariyanidi, John D. Herrington, Lisa Yankowitz, Pratik Chaudhari, Theodore D. Satterthwaite, Casey J. Zampella, Jeffrey S. Morris, Edward Gunning, Robert T. Schultz, Russell T. Shinohara, Birkan Tunç
2024 B conf
ICMI
Muhittin Gokmen, Evangelos Sariyanidi, Lisa Yankowitz, Casey J. Zampella, Robert T. Schultz, Birkan Tunç
2024 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Evangelos Sariyanidi, Casey J. Zampella, Robert T. Schultz, Birkan Tunç
2023 conf
IUI Workshops
Evangelos Sariyanidi, Casey J. Zampella, Ellis DeJardin, John D. Herrington, Robert T. Schultz, Birkan Tunç
2023 conf
ICMHI
Denisa Qori McDonald, Evangelos Sariyanidi, Casey J. Zampella, Ellis DeJardin, John D. Herrington, Robert T. Schultz, Birkan Tunç
2022 conf
ICMI Companion
Denisa Qori McDonald, Casey J. Zampella, Evangelos Sariyanidi, Aashvi Manakiwala, Ellis DeJardin, John D. Herrington, Robert T. Schultz, Birkan Tunç
2022 conf
3DOR (Short Papers)
Evangelos Sariyanidi, Casey J. Zampella, Madison N. Drye, Madison L. Fecher, Grace Magginson, Laura Soskey Cubit, Robert T. Schultz, Whitney Guthrie, Birkan Tunç
2021 conf
ICMI Companion
Casey J. Zampella, Evangelos Sariyanidi, Anne G. Hutchinson, G. Keith Bartley, Robert T. Schultz, Birkan Tunç
2020 A* conf
CVPR
Evangelos Sariyanidi, Casey J. Zampella, Robert T. Schultz, Birkan Tunç
2020 A* conf
CVPR
Evangelos Sariyanidi, Casey J. Zampella, G. Keith Bartley, John D. Herrington, Theodore D. Satterthwaite, Robert T. Schultz, Birkan Tunç
2020 conf
ECCV (9)
Evangelos Sariyanidi, Casey J. Zampella, Robert T. Schultz, Birkan Tunç
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