Kan Xu

86 papers A* 7A 3C 5Journal 51Unranked 20
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Hongrui Xie, Junyu Cao, Kan Xu
2026 J jnl
CoRR
Zhiyuan Tang, Wanning Chen, Kan Xu
2026 J jnl
Adv. Eng. Informatics
Hanbei Zhang, Christian Ankerstjerne Thilker, Linda Fu Xiao, Henrik Madsen, Rongling Li, Tianyou Ma, Kan Xu
2026 J jnl
CoRR
Xinzhuo Wu, Hongbo Wang, Yuan Lin, Kan Xu, Liang Yang, Hongfei Lin
2025 conf
NLPCC (2)
Huayang Li, Jingjie Zeng, Shaowu Zhang, Liang Yang, Yuanyuan Sun, Kan Xu, Hongfei Lin
2025 J jnl
CoRR
Qiyao Wang, Guhong Chen, Hongbo Wang, Huaren Liu, Minghui Zhu, Zhifei Qin, Linwei Li, Yilin Yue, Shiqiang Wang, Jiayan Li, Yihang Wu, Ziqiang Liu, Longze Chen, Run Luo, Liyang Fan, Jiaming Li, Lei Zhang, Kan Xu, Hongfei Lin, Hamid Alinejad-Rokny, Shiwen Ni, Yuan Lin, Min Yang
2025 A* conf
EC
Zhiyuan Tang, Wanning Chen, Kan Xu
2025 J jnl
Manag. Sci.
Kan Xu, Hamsa Bastani
2024 J jnl
Remote. Sens.
Kan Xu, Jun Tao, Xiao-Ting Lei, Jie Zhang, Chengyi Liu, Liang Chen
2024 J jnl
Sensors
Zhengjiang Guo, Yingkai Xia, Jiawei Li, Jiajun Liu, Kan Xu
2024 J jnl
CoRR
Qiyao Wang, Jianguo Huang, Shule Lu, Yuan Lin, Kan Xu, Liang Yang, Hongfei Lin
2024 A* conf
ICML
Kan Xu, Hamsa Bastani, Surbhi Goel, Osbert Bastani
2024 J jnl
CoRR
Kan Xu, Hamsa Bastani, Surbhi Goel, Osbert Bastani
2023 J jnl
CoRR
Qian Shao, Ye Dai, Haochao Ying, Kan Xu, Jinhong Wang, Wei Chi, Jian Wu
2023 J jnl
CoRR
Xinmeng Huang, Kan Xu, Donghwan Lee, Hamed Hassani, Hamsa Bastani, Edgar Dobriban
2023 conf
EI.A
Jing Zhang, Tianyou Ma, Kan Xu, Zhe Chen, Linda Fu Xiao, Jeremy Ho, Calvin Leung, Sammy Yeung
2023 A conf
AISTATS
Wanqiao Xu, Yecheng Jason Ma, Kan Xu, Hamsa Bastani, Osbert Bastani
2022 J jnl
Cogn. Comput.
Bo Xu, Hongfei Lin, Liang Yang, Yuan Lin, Kan Xu
2022 J jnl
Soft Comput.
Bo Xu, Hongfei Lin, Yuan Lin, Kan Xu
2022 C conf
ISCAS
Nurzhan Zhuldassov, Kan Xu, Eby G. Friedman
2021 J jnl
Soft Comput.
Yufeng Diao, Hongfei Lin, Liang Yang, Xiaochao Fan, Yonghe Chu, Di Wu, Kan Xu
2021 A* conf
ICML
Kan Xu, Xuanyi Zhao, Hamsa Bastani, Osbert Bastani
2021 J jnl
CoRR
Kan Xu, Xuanyi Zhao, Hamsa Bastani, Osbert Bastani
2021 A* conf
SIGIR
Yuan Lin, Zhang Xie, Bo Xu, Kan Xu, Hongfei Lin
2021 J jnl
Knowl. Based Syst.
Yuan Lin, Bo Xu, Jiaojiao Feng, Hongfei Lin, Kan Xu
2021 J jnl
CoRR
Kan Xu, Hamsa Bastani
2021 J jnl
CoRR
Kan Xu, Hamsa Bastani, Osbert Bastani
2021 J jnl
CoRR
Wanqiao Xu, Kan Xu, Hamsa Bastani, Osbert Bastani
2021 J jnl
Knowl. Based Syst.
Bo Xu, Hongfei Lin, Yuan Lin, Kan Xu
2020 J jnl
IEEE Access
Yufeng Diao, Hongfei Lin, Liang Yang, Xiaochao Fan, Yonghe Chu, Kan Xu, Di Wu
2020 J jnl
Knowl. Based Syst.
Yufeng Diao, Hongfei Lin, Liang Yang, Xiaochao Fan, Di Wu, Kan Xu
2020 J jnl
Neural Comput. Appl.
Yufeng Diao, Hongfei Lin, Liang Yang, Xiaochao Fan, Yonghe Chu, Di Wu, Dongyu Zhang, Kan Xu
2020 C conf
ISCAS
Kan Xu, Eby G. Friedman
2020 C conf
ISCAS
Kan Xu, Eby G. Friedman, Mikhail Popovich, Gregory Sizikov
2020 J jnl
Neurocomputing
Yufeng Diao, Hongfei Lin, Liang Yang, Xiaochao Fan, Di Wu, Zhihao Yang, Jian Wang, Kan Xu
2020 J jnl
Soft Comput.
Yufeng Diao, Hongfei Lin, Liang Yang, Xiaochao Fan, Di Wu, Kan Xu
2020 J jnl
Neural Comput. Appl.
Yufeng Diao, Hongfei Lin, Liang Yang, Xiaochao Fan, Yonghe Chu, Di Wu, Kan Xu, Bo Xu
2020 conf
CIRCLE
Donzhen Wen, Liang Yang, Yingying Zhang, Yuan Lin, Kan Xu, Hongfei Lin
2020 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Rassul Bairamkulov, Kan Xu, Mikhail Popovich, Juan Ochoa, Vaishnav Srinivas, Eby G. Friedman
2020 J jnl
IEEE Access
Yuan Lin, Jiaping Li, Liang Yang, Kan Xu, Hongfei Lin
2019 J jnl
BMC Bioinform.
Bo Xu, Hongfei Lin, Liang Yang, Kan Xu, Yi-Jia Zhang, Dongyu Zhang, Zhihao Yang, Jian Wang, Yuan Lin, Fuliang Yin
2019 J jnl
IEEE Access
Yingkai Xia, Kan Xu, Ye Li, Guohua Xu, Xianbo Xiang
2019 J jnl
Int. J. Data Min. Bioinform.
Cong Sun, Zhihao Yang, Lei Wang, Yin Zhang, Hongfei Lin, Jian Wang, Liang Yang, Kan Xu, Yijia Zhang
2019 J jnl
Neural Comput. Appl.
Chen Shen, Hongfei Lin, Kai Guo, Kan Xu, Zhihao Yang, Jian Wang
2019 J jnl
IEEE Access
Bo Xu, Hongfei Lin, Yuan Lin, Yufeng Diao, Liang Yang, Kan Xu
2019 J jnl
Expert Syst. Appl.
Yuan Lin, Bo Xu, Hongfei Lin, Kan Xu, Ping Zhang
2019 conf
RICAI
Kan Xu, Kun Zhang, Jianguo Wu
2019 A* conf
WWW
Yufeng Diao, Hongfei Lin, Liang Yang, Xiaochao Fan, Di Wu, Dongyu Zhang, Kan Xu
2019 J jnl
Inf. Technol. Control.
Bo Xu, Hongfei Lin, Yuan Lin, Kan Xu, Lin Wang, Jiping Gao
2019 J jnl
Neurocomputing
Bo Xu, Hongfei Lin, Yuan Lin, Kan Xu
2019 J jnl
Int. J. Mach. Learn. Cybern.
Yuan Lin, Jiajin Wu, Bo Xu, Kan Xu, Hongfei Lin
2018 conf
BIBM
Shengtian Sang, Zhihao Yang, Xiaoxia Liu, Lei Wang, Yin Zhang, Hongfei Lin, Jian Wang, Liang Yang, Kan Xu, Yijia Zhang
2018 conf
BIBM
Zhizheng Wang, Yuanyuan Sun, Yawen Guan, Yibin Zhang, Liang Yang, Kan Xu, Yijia Zhang, Hongfei Lin
2018 conf
BIBM
Qingqing Li, Zhihao Yang, Ling Luo, Lei Wang, Yin Zhang, Hongfei Lin, Jian Wang, Liang Yang, Kan Xu, Yijia Zhang
2018 J jnl
Integr.
Kan Xu, Ravi Patel, Praveen Raghavan, Eby G. Friedman
2018 conf
BIBM
Cong Sun, Zhihao Yang, Lei Wang, Yin Zhang, Hongfei Lin, Jian Wang, Liang Yang, Kan Xu, Yijia Zhang
2018 conf
BIBM
Bo Xu, Hongfei Lin, Liang Yang, Kan Xu, Yijia Zhang, Dongyu Zhang, Zhihao Yang, Jian Wang, Yuan Lin, Fuliang Yin
2018 J jnl
IEEE Access
Bo Xu, Hongfei Lin, Yuan Lin, Liang Yang, Kan Xu
2018 J jnl
IEEE Access
Yingkai Xia, Kan Xu, Ye Li, Guohua Xu, Xianbo Xiang
2018 conf
BIBM
Xiaoxia Liu, Zhihao Yang, Shengtian Sang, Lei Wang, Yin Zhang, Hongfei Lin, Bo Xu, Yijia Zhang, Liang Yang, Kan Xu, Jian Wang
2018 conf
BIBM
Ling Luo, Zhihao Yang, Lei Wang, Yin Zhang, Hongfei Lin, Jian Wang, Liang Yang, Kan Xu, Yijia Zhang
2018 C conf
ISCAS
Rassul Bairamkulov, Kan Xu, Eby G. Friedman, Mikhail Popovich, Juan Ochoa, Vaishnav Srinivas
2018 A* conf
EMNLP
Yufeng Diao, Hongfei Lin, Di Wu, Liang Yang, Kan Xu, Zhihao Yang, Jian Wang, Shaowu Zhang, Bo Xu, Dongyu Zhang
2017 J jnl
BMC Medical Informatics Decis. Mak.
Anran Wang, Jian Wang, Hongfei Lin, Jianhai Zhang, Zhihao Yang, Kan Xu
2017 conf
ISBRA
Kai Guo, Hongfei Lin, Bo Xu, Zhihao Yang, Jian Wang, Yuanyuan Sun, Kan Xu
2017 A conf
CIKM
Bo Xu, Hongfei Lin, Yuan Lin, Kan Xu
2017 conf
ICSRS
Yanan Bai, Ning Huang, Kan Xu, Xin Zhang
2017 conf
SMP
Yuan Lin, Bo Xu, Luying Li, Hongfei Lin, Kan Xu
2017 conf
CCIR
Bo Xu, Hongfei Lin, Lin Wang, Yuan Lin, Kan Xu, Xiaocong Wei, Dong Huang
2016 conf
BIBM
Anran Wang, Jian Wang, Hongfei Lin, Jianhai Zhang, Zhihao Yang, Kan Xu
2016 conf
ACM Great Lakes Symposium on VLSI
Ravi Patel, Kan Xu, Eby G. Friedman, Praveen Raghavan
2016 J jnl
Remote. Sens.
Fan Hu, Gui-Song Xia, Jingwen Hu, Yanfei Zhong, Kan Xu
2016 conf
AIRS
Yuan Lin, Liang Yang, Bo Xu, Hongfei Lin, Kan Xu
2016 conf
AIRS
Kan Xu, Hongfei Lin, Yuan Lin, Bo Xu, Liang Yang, Shaowu Zhang
2015 J jnl
Expert Syst. Appl.
Xiaoling Sun, Hongfei Lin, Kan Xu
2015 J jnl
Int. J. Geogr. Inf. Sci.
Bingbo Gao, Jinfeng Wang, Hai-Mei Fan, Kan Xu, Mao-Gui Hu, Zi-Yue Chen
2015 J jnl
Neurocomputing
Yuan Lin, Hongfei Lin, Kan Xu, Ajith Abraham, Hongbo Liu
2015 J jnl
Scientometrics
Xiaoling Sun, Hongfei Lin, Kan Xu, Kun Ding
2015 C conf
ISCAS
Kan Xu, Eby G. Friedman
2015 J jnl
Integr.
Kan Xu, Eby G. Friedman
2014 J jnl
Scientometrics
Shengbo Liu, Chaomei Chen, Kun Ding, Bo Wang, Kan Xu, Yuan Lin
2013 J jnl
J. Assoc. Inf. Sci. Technol.
Yuan Lin, Hongfei Lin, Kan Xu, Xiaoling Sun
2013 J jnl
IEEE Geosci. Remote. Sens. Lett.
Kan Xu, Wen Yang, Gang Liu, Hong Sun
2011 conf
JURSE
Lijun Chen, Wen Yang, Kan Xu, Tao Xu
2011 A* conf
SIGIR
Jiajin Wu, Zhihao Yang, Yuan Lin, Hongfei Lin, Zheng Ye, Kan Xu
2011 A conf
CIKM
Yuan Lin, Hongfei Lin, Jiajin Wu, Kan Xu
redb/extractors/decompiler/bninja/analysis/cfg.py
← Index redb/extractors/decompiler/bninja/analysis/cfg.py python
from binaryninja.enums import LowLevelILOperation as LLIL_OP

# Support both package and standalone imports
try:
    from . import cfg_features
except ImportError:
    from redb.extractors.decompiler.bninja.analysis import cfg_features


# ---------------------------------------------------------------------------
# Task 2.2: Build LLIL operation maps at import time using real enum values
# ---------------------------------------------------------------------------

# Prime product map: LLIL operation integer value -> small prime
cfg_features.LLIL_OP_PRIMES = {
    # SET_REG, SET_REG_SPLIT
    LLIL_OP.LLIL_SET_REG.value: 2,
    LLIL_OP.LLIL_SET_REG_SPLIT.value: 2,
    # SET_FLAG
    LLIL_OP.LLIL_SET_FLAG.value: 3,
    # LOAD
    LLIL_OP.LLIL_LOAD.value: 5,
    # STORE
    LLIL_OP.LLIL_STORE.value: 7,
    # PUSH, POP
    LLIL_OP.LLIL_PUSH.value: 11,
    LLIL_OP.LLIL_POP.value: 13,
    # CALL, TAILCALL, SYSCALL
    LLIL_OP.LLIL_CALL.value: 17,
    LLIL_OP.LLIL_TAILCALL.value: 17,
    LLIL_OP.LLIL_SYSCALL.value: 19,
    # RET, NORET
    LLIL_OP.LLIL_RET.value: 23,
    LLIL_OP.LLIL_NORET.value: 23,
    # IF, GOTO
    LLIL_OP.LLIL_IF.value: 29,
    LLIL_OP.LLIL_GOTO.value: 31,
    # ADD, SUB
    LLIL_OP.LLIL_ADD.value: 37,
    LLIL_OP.LLIL_SUB.value: 41,
    # AND, OR, XOR
    LLIL_OP.LLIL_AND.value: 43,
    LLIL_OP.LLIL_OR.value: 47,
    LLIL_OP.LLIL_XOR.value: 53,
    # LSL, LSR, ASR, ROL, ROR
    LLIL_OP.LLIL_LSL.value: 59,
    LLIL_OP.LLIL_LSR.value: 61,
    LLIL_OP.LLIL_ASR.value: 67,
    LLIL_OP.LLIL_ROL.value: 71,
    LLIL_OP.LLIL_ROR.value: 73,
    # MUL, DIVU, DIVS, MODU, MODS
    LLIL_OP.LLIL_MUL.value: 79,
    LLIL_OP.LLIL_DIVU.value: 83,
    LLIL_OP.LLIL_DIVS.value: 83,
    LLIL_OP.LLIL_MODU.value: 89,
    LLIL_OP.LLIL_MODS.value: 89,
    # NEG, NOT
    LLIL_OP.LLIL_NEG.value: 97,
    LLIL_OP.LLIL_NOT.value: 101,
    # CMP_E, CMP_NE, CMP_SLT, CMP_ULT, CMP_SLE, CMP_ULE
    # CMP_SGT, CMP_UGT, CMP_SGE, CMP_UGE
    LLIL_OP.LLIL_CMP_E.value: 103,
    LLIL_OP.LLIL_CMP_NE.value: 103,
    LLIL_OP.LLIL_CMP_SLT.value: 107,
    LLIL_OP.LLIL_CMP_ULT.value: 107,
    LLIL_OP.LLIL_CMP_SLE.value: 109,
    LLIL_OP.LLIL_CMP_ULE.value: 109,
    LLIL_OP.LLIL_CMP_SGT.value: 113,
    LLIL_OP.LLIL_CMP_UGT.value: 113,
    LLIL_OP.LLIL_CMP_SGE.value: 127,
    LLIL_OP.LLIL_CMP_UGE.value: 127,
    # NOP
    LLIL_OP.LLIL_NOP.value: 1,
    # SX, ZX, LOW_PART, BOOL_TO_INT
    LLIL_OP.LLIL_SX.value: 131,
    LLIL_OP.LLIL_ZX.value: 137,
    LLIL_OP.LLIL_LOW_PART.value: 139,
    LLIL_OP.LLIL_BOOL_TO_INT.value: 149,
    # JUMP, JUMP_TO
    LLIL_OP.LLIL_JUMP.value: 151,
    LLIL_OP.LLIL_JUMP_TO.value: 151,
}

# Category map: LLIL operation integer value -> category index
_ARITHMETIC = {
    LLIL_OP.LLIL_ADD, LLIL_OP.LLIL_ADC, LLIL_OP.LLIL_SUB, LLIL_OP.LLIL_SBB,
    LLIL_OP.LLIL_MUL, LLIL_OP.LLIL_MULU_DP, LLIL_OP.LLIL_MULS_DP,
    LLIL_OP.LLIL_DIVU, LLIL_OP.LLIL_DIVU_DP, LLIL_OP.LLIL_DIVS,
    LLIL_OP.LLIL_DIVS_DP, LLIL_OP.LLIL_MODU, LLIL_OP.LLIL_MODS,
    LLIL_OP.LLIL_NEG,
}
_LOGIC = {
    LLIL_OP.LLIL_AND, LLIL_OP.LLIL_OR, LLIL_OP.LLIL_XOR, LLIL_OP.LLIL_NOT,
    LLIL_OP.LLIL_LSL, LLIL_OP.LLIL_LSR, LLIL_OP.LLIL_ASR,
    LLIL_OP.LLIL_ROL, LLIL_OP.LLIL_RLC, LLIL_OP.LLIL_ROR, LLIL_OP.LLIL_RRC,
}
_TRANSFER = {
    LLIL_OP.LLIL_SET_REG, LLIL_OP.LLIL_SET_REG_SPLIT, LLIL_OP.LLIL_SET_FLAG,
    LLIL_OP.LLIL_GOTO, LLIL_OP.LLIL_IF, LLIL_OP.LLIL_JUMP, LLIL_OP.LLIL_JUMP_TO,
    LLIL_OP.LLIL_RET, LLIL_OP.LLIL_NORET, LLIL_OP.LLIL_PUSH, LLIL_OP.LLIL_POP,
}
_CALL = {
    LLIL_OP.LLIL_CALL, LLIL_OP.LLIL_TAILCALL, LLIL_OP.LLIL_SYSCALL,
}
_COMPARISON = {
    LLIL_OP.LLIL_CMP_E, LLIL_OP.LLIL_CMP_NE,
    LLIL_OP.LLIL_CMP_SLT, LLIL_OP.LLIL_CMP_ULT,
    LLIL_OP.LLIL_CMP_SLE, LLIL_OP.LLIL_CMP_ULE,
    LLIL_OP.LLIL_CMP_SGE, LLIL_OP.LLIL_CMP_UGE,
    LLIL_OP.LLIL_CMP_SGT, LLIL_OP.LLIL_CMP_UGT,
    LLIL_OP.LLIL_TEST_BIT, LLIL_OP.LLIL_FLAG_COND,
}
_MEMORY = {
    LLIL_OP.LLIL_LOAD, LLIL_OP.LLIL_STORE,
}

cfg_features.LLIL_OP_CATEGORIES = {}
for _op in _ARITHMETIC:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_ARITHMETIC
for _op in _LOGIC:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_LOGIC
for _op in _TRANSFER:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_TRANSFER
for _op in _CALL:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_CALL
for _op in _COMPARISON:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_COMPARISON
for _op in _MEMORY:
    cfg_features.LLIL_OP_CATEGORIES[_op.value] = cfg_features.CAT_MEMORY

# Set of CALL operation values for counting
_CALL_OPS = {op.value for op in _CALL}


# ---------------------------------------------------------------------------
# Task 2.1 + 2.3: Rewritten CFGAnalysis
# ---------------------------------------------------------------------------

class CFGAnalysis:
    def __init__(self, function, llil_function=None):
        self.function = function
        self.llil_function = llil_function

    def extract_function_cfg(self):
        """Extract function-level CFG features as a flat dictionary."""

        if self.function is None:
            return None

        blocks = list(self.function.basic_blocks)
        if not blocks:
            return None

        n = len(blocks)

        # 1. Build index-based adjacency from Binary Ninja blocks
        addr_to_idx = {b.start: i for i, b in enumerate(blocks)}
        successors = [[] for _ in range(n)]
        predecessors = [[] for _ in range(n)]
        for i, block in enumerate(blocks):
            for edge in block.outgoing_edges:
                if edge.target is None:
                    continue
                target_idx = addr_to_idx.get(edge.target.start)
                if target_idx is not None:
                    successors[i].append(target_idx)
                    predecessors[target_idx].append(i)

        # 2. BFS order (reusable across multiple features)
        bfs = cfg_features.bfs_order(successors, n)

        # 3. Collect per-block LLIL operations (for prime product + ACFG features)
        block_llil_ops = self._collect_block_llil_ops(blocks, addr_to_idx, n)
        all_llil_ops = [op for block_ops in block_llil_ops for op in block_ops]

        # 4. Structural counts
        edge_count = sum(len(s) for s in successors)
        total_llil = sum(len(ops) for ops in block_llil_ops)
        call_count = sum(
            1 for ops in block_llil_ops for op in ops
            if op in _CALL_OPS
        )

        # 5. Compute all features
        bb_features = cfg_features.build_block_features(block_llil_ops, successors, n)

        return {
            "cfg_topology_hash": cfg_features.compute_topology_hash(successors, bfs, n),
            "block_count": n,
            "edge_count": edge_count,
            "llil_total_operations": total_llil,
            "call_count": call_count,
            "cyclomatic_complexity": edge_count - n + 2,
            "loop_count": cfg_features.count_back_edges(successors, n),
            "max_depth": cfg_features.bfs_max_depth(successors, n),
            "max_fan_out": max((len(s) for s in successors), default=0),
            "md_index_topdown": cfg_features.compute_md_index_topdown(successors, predecessors, bfs),
            "md_index_bottomup": cfg_features.compute_md_index_bottomup(successors, predecessors, n),
            "prime_product_llil": cfg_features.compute_prime_product(all_llil_ops),
            "cfg_feature_tlsh": cfg_features.compute_cfg_feature_tlsh(bb_features, bfs),
            "wl_minhash": cfg_features.compute_wl_minhash(successors, predecessors, bb_features, n),
            "bb_features": bb_features,
            "cfg_adjacency": cfg_features.pack_adjacency(successors),
        }

    def _collect_block_llil_ops(self, blocks, addr_to_idx, n):
        """
        Collect LLIL operation integers per native basic block.
        Walks the full expression tree of each instruction so that
        nested operations (e.g. ADD inside SET_REG) are captured.
        Returns list of n lists, one per block.
        """
        block_ops = [[] for _ in range(n)]

        if self.llil_function is None:
            return block_ops

        try:
            for llil_block in self.llil_function.basic_blocks:
                # Map LLIL block to native block via source_block
                if llil_block.source_block is not None:
                    native_idx = addr_to_idx.get(llil_block.source_block.start)
                    if native_idx is not None:
                        for instr in llil_block:
                            self._walk_llil_ops(instr, block_ops[native_idx])
        except Exception:
            pass  # Return empty ops — LLIL-dependent fields will be 0/null

        return block_ops

    @staticmethod
    def _walk_llil_ops(expr, ops_list):
        """Collect operation values from an LLIL expression tree iteratively."""
        stack = [expr]
        while stack:
            node = stack.pop()
            if hasattr(node, 'operation'):
                ops_list.append(node.operation.value)
            if hasattr(node, 'operands'):
                for operand in node.operands:
                    if hasattr(operand, 'operation'):
                        stack.append(operand)