Haluk Derin

26 papers B 1Misc 8Journal 15Unranked 2
YearRankTypeTitle / Venue / Authors
1997 conf
ICIP (2)
Yuling Qu, Patrick A. Kelly, Haluk Derin, Weibo Gong
1997 J jnl
J. Vis. Commun. Image Represent.
Wei-Lien Hsu, Haluk Derin
1996 J jnl
IEEE Trans. Signal Process.
Wen-Jyi Hwang, Haluk Derin
1995 B conf
ICIP
Wei-Lien Hsu, Haluk Derin
1995 J jnl
IEEE Trans. Image Process.
Wen-Jyi Hwang, Haluk Derin
1994 conf
ICIP (2)
Sadiye Guler, Haluk Derin
1993 J jnl
IEEE Trans. Signal Process.
Sridhar Lakshmanan, Haluk Derin
1993 J jnl
IEEE Trans. Inf. Theory
Sridhar Lakshmanan, Haluk Derin
1992 J jnl
IEEE Trans. Signal Process.
Sridhar Lakshmanan, Haluk Derin
1992 J jnl
CVGIP Graph. Model. Image Process.
Chee Sun Won, Haluk Derin
1990 Misc conf
ICASSP
Haluk Derin, Sadiye Guler
1989 J jnl
Proc. IEEE
Haluk Derin, Patrick A. Kelly
1989 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Sridhar Lakshmanan, Haluk Derin
1988 J jnl
IEEE Trans. Acoust. Speech Signal Process.
Patrick A. Kelly, Haluk Derin, Keith D. Hartt
1988 Misc conf
ICASSP
Chee Sun Won, Haluk Derin
1988 Misc conf
ICASSP
Haluk Derin, Patrick A. Kelly, Steven G. Labitt
1987 J jnl
Comput. Vis. Graph. Image Process.
Haluk Derin, Chee Sun Won
1987 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Haluk Derin
1987 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Haluk Derin, Howard Elliott
1987 Misc conf
ICASSP
Chee Sun Won, Haluk Derin
1987 Misc conf
ICASSP
Keith D. Hartt, Patrick A. Kelly, Haluk Derin
1985 Misc conf
ICASSP
Haluk Derin, Howard Elliott, J. Kuang
1984 Misc conf
ICASSP
Howard Elliott, Haluk Derin, Roberto Cristi, Donald Geman
1984 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Haluk Derin, Howard Elliott, Roberto Cristi, Donald Geman
1984 Misc conf
ICASSP
Haluk Derin, Howard Elliott, Roberto Cristi, Donald Geman
1978 J jnl
IEEE Trans. Commun.
Nazif Tepedelenlioglu, Haluk Derin
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