Xiaoguang Tu

74 papers A* 1A 1B 1Journal 52Unranked 19
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Wirel. Commun. Lett.
Jianhua Liu, Bo Tang, Jiajia Liu, Xiaoguang Tu
2026 J jnl
Comput. Commun.
Jianhua Liu, Bo Tang, Jiajia Liu, Xia Lei, Xiaoguang Tu, Xiaofan Wang
2026 J jnl
Int. J. Web Inf. Syst.
Jianhua Liu, Xudong Zhang, Xia Lei, Houqiang Hua, Xiaoguang Tu
2026 J jnl
Pattern Recognit.
Xiaoguang Tu, Zhiyi Niu, Juhang Yin, Yanyan Zhang, Ming Yang, Lin Wei, Yu Wang, Zhaoxin Fan, Jian Zhao
2026 J jnl
Pattern Recognit.
Xiaoguang Tu, Zeng Gao, Lin Wei, Yanyan Zhang, Jianhua Liu, Ming Yang, Rubin He, Tianle Zhang, Xuelong Li
2026 J jnl
CCF Trans. Pervasive Comput. Interact.
Jianhua Liu, Guilin Yuan, Bo Tang, Jiajia Liu, Xiaoguang Tu, Xia Lei
2025 J jnl
J. Imaging
Yuan Gao, Yu Wang, Xiaoguang Tu, Jiaqing Shen
2025 J jnl
J. Imaging
Huazhong Zhang, Jiaozhuo Wang, Xiaoguang Tu, Zhiyi Niu, Yu Wang
2025 J jnl
J. Electronic Imaging
Gui Fu, Hongyu Chu, Xiaoguang Tu
2025 J jnl
IEICE Trans. Inf. Syst.
Xiaoguang Tu, Zhi He, Gui Fu, Jianhua Liu, Mian Zhong, Chao Zhou, Xia Lei, Juhang Yin, Yi Huang, Yu Wang
2025 J jnl
IEICE Trans. Inf. Syst.
Xiaoguang Tu, Zhi He, Gui Fu, Jianhua Liu, Mian Zhong, Chao Zhou, Xia Lei, Juhang Yin, Yi Huang, Yu Wang
2025 J jnl
Neural Comput. Appl.
Jianhua Liu, Peng Xie, Kemeng Lin, Xiaoguang Tu, Rong Fan
2024 J jnl
Vis. Intell.
Xiaoguang Tu, Zhi He, Yi Huang, Zhi-Hao Zhang, Ming Yang, Jian Zhao
2024 J jnl
Comput. Mater. Continua
Jianhua Liu, Jincheng Wei, Rongxin Luo, Guilin Yuan, Jiajia Liu, Xiaoguang Tu
2024 J jnl
Int. J. Web Inf. Syst.
Jiaqing Shen, Xu Bai, Xiaoguang Tu, Jianhua Liu
2024 J jnl
Digit. Signal Process.
Yi Huang, Gui Fu, Wanchun Ren, Xiaoguang Tu, Ziliang Feng, Bokai Liu, Jianhua Liu, Chao Zhou, Yuang Liu, Xiaoqiang Zhang
2024 J jnl
J. Electronic Imaging
Xiaoguang Tu, Yuang Liu, Mengjie Zhao, Bokai Liu, Jianhua Liu, Xia Lei, Luopeng Xu, Xinyu Zhu, Yu Wang, Yi Huang
2023 A conf
ICME
Yi Huang, Xiaoguang Tu, Gui Fu, Tingting Liu, Bokai Liu, Ming Yang, Ziliang Feng
2023 J jnl
CoRR
Yi Huang, Xiaoguang Tu, Gui Fu, Tingting Liu, Bokai Liu, Ming Yang, Ziliang Feng
2023 J jnl
J. Electronic Imaging
Yi Huang, Xiaoguang Tu, Gui Fu, Wanchun Ren, Bokai Liu, Ming Yang, Jianhua Liu, Xiaoqiang Zhang
2023 J jnl
J. Electronic Imaging
Yi Huang, Xiaoguang Tu, Gui Fu, Wanchun Ren, Bokai Liu, Ming Yang, Jianhua Liu, Xiaoqiang Zhang
2022 J jnl
IEEE Access
Jianhua Liu, Zibo Wu, Jiajia Liu, Xiaoguang Tu
2022 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Xiaoguang Tu, Yingtian Zou, Jian Zhao, Wenjie Ai, Jian Dong, Yuan Yao, Zhikang Wang, Guodong Guo, Zhifeng Li, Wei Liu, Jiashi Feng
2022 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Xiaoguang Tu, Jian Zhao, Qiankun Liu, Wenjie Ai, Guodong Guo, Zhifeng Li, Wei Liu, Jiashi Feng
2022 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Zhikang Wang, Lihuo He, Xiaoguang Tu, Jian Zhao, Xinbo Gao, Shengmei Shen, Jiashi Feng
2021 J jnl
IEEE Trans. Multim.
Xiaoguang Tu, Jian Zhao, Mei Xie, Zihang Jiang, Akshaya Balamurugan, Yao Luo, Yang Zhao, Lingxiao He, Zheng Ma, Jiashi Feng
2021 J jnl
CoRR
Xiaoguang Tu, Yingtian Zou, Jian Zhao, Wenjie Ai, Jian Dong, Yuan Yao, Zhikang Wang, Guodong Guo, Zhifeng Li, Wei Liu, Jiashi Feng
2021 J jnl
CoRR
Xiaoguang Tu, Jian Zhao, Qiankun Liu, Wenjie Ai, Guodong Guo, Zhifeng Li, Wei Liu, Jiashi Feng
2021 J jnl
IEEE Access
Junhui Li, Wei Jia, Yan Hu, Shouqing Li, Xiaoguang Tu
2020 J jnl
CoRR
Xiaoguang Tu, Yao Luo, Hengsheng Zhang, Wenjie Ai, Zheng Ma, Mei Xie
2020 J jnl
ACM Trans. Intell. Syst. Technol.
Xiaoguang Tu, Zheng Ma, Jian Zhao, Guodong Du, Mei Xie, Jiashi Feng
2020 B conf
ICIP
Wenjie Ai, Xiaoguang Tu, Shilei Cheng, Mei Xie
2020 J jnl
CoRR
Wenjie Ai, Xiaoguang Tu, Shilei Cheng, Mei Xie
2020 J jnl
CoRR
Hao Ge, Xiaoguang Tu, Yanxiang Gong, Mei Xie, Zheng Ma
2019 J jnl
J. Electronic Imaging
Hao Ge, Xiaoguang Tu, Mei Xie, Zheng Ma
2019 J jnl
CoRR
Hanyang Kong, Jian Zhao, Xiaoguang Tu, Junliang Xing, Shengmei Shen, Jiashi Feng
2019 J jnl
CoRR
Xiaoguang Tu, Hengsheng Zhang, Mei Xie, Yao Luo, Yuefei Zhang, Zheng Ma
2019 J jnl
J. Electronic Imaging
Xiaoguang Tu, Hengsheng Zhang, Mei Xie, Yao Luo, Yuefei Zhang, Zheng Ma
2019 J jnl
CoRR
Hao Ge, Xiaoguang Tu, Mei Xie, Zheng Ma
2019 J jnl
Neurocomputing
Linjie Deng, Yanxiang Gong, Yi Lin, Jingwen Shuai, Xiaoguang Tu, Yuefei Zhang, Zheng Ma, Mei Xie
2019 J jnl
CoRR
Xiaoguang Tu, Hengsheng Zhang, Mei Xie, Yao Luo, Yuefei Zhang, Zheng Ma
2019 J jnl
CoRR
Xiaoguang Tu, Jian Zhao, Zihang Jiang, Yao Luo, Mei Xie, Yang Zhao, Linxiao He, Zheng Ma, Jiashi Feng
2019 J jnl
CoRR
Xiaoguang Tu, Jian Zhao, Mei Xie, Guodong Du, Hengsheng Zhang, Jianshu Li, Zheng Ma, Jiashi Feng
2019 J jnl
CoRR
Yao Luo, Xiaoguang Tu, Mei Xie
2019 A* conf
IJCAI
Jian Zhao, Jianshu Li, Xiaoguang Tu, Fang Zhao, Yuan Xin, Junliang Xing, Hengzhu Liu, Shuicheng Yan, Jiashi Feng
2019 J jnl
CoRR
Jian Zhao, Jianshu Li, Xiaoguang Tu, Fang Zhao, Yuan Xin, Junliang Xing, Hengzhu Liu, Shuicheng Yan, Jiashi Feng
2018 J jnl
CoRR
Linjie Deng, Yanxiang Gong, Yi Lin, Jingwen Shuai, Xiaoguang Tu, Yuefei Zhang, Zheng Ma, Mei Xie
2018 J jnl
Neural Process. Lett.
Jingjing Gao, Xin Dai, Chongjin Zhu, Jie-Zhi Cheng, Xiaoguang Tu, Daiqiang Chen, Bin Sun, Yachun Gao, Mei Xie
2018 conf
ISCID (1)
Hao Ge, Xiaoguang Tu, Mei Xie, Zheng Ma
2017 conf
OFC
Lianxi Jia, Tsung-Yang Liow, Chao Li, Xianshu Luo, Xiaoguang Tu, Ying Huang, Haifeng Zhou, Mingbin Yu, Patrick Lo
2017 J jnl
IEICE Trans. Inf. Syst.
Xiaoguang Tu, Feng Yang, Mei Xie, Zheng Ma
2017 J jnl
Neurocomputing
Xiaoguang Tu, Jingjing Gao, Mei Xie, Jin Qi, Zheng Ma
2017 J jnl
IEICE Trans. Inf. Syst.
Hao Ge, Feng Yang, Xiaoguang Tu, Mei Xie, Zheng Ma
2016 conf
OFC
Mingbin Yu, Yan Yang, Qing Fang, Xiaoguang Tu, Junfeng Song, King-Jien Chui, Rusli, Guo-Qiang Lo
2016 conf
OFC
Haifeng Zhou, Tsung-Yang Liow, Xiaoguang Tu, Eujin Lim, Chao Li, Lianxi Jia, Ying Huang, Lianwee Luo, Xianshu Luo, Junfeng Song, Qing Fang, Mingbin Yu, Guo-Qiang Lo
2016 conf
OFC
Kazuhiro Goi, Norihiro Ishikura, Hiroki Ishihara, Shinichi Sakamoto, Kensuke Ogawa, Tsung-Yang Liow, Xiaoguang Tu, Guo-Qiang Lo, Dim-Lee Kwong
2016 J jnl
Medical Biol. Eng. Comput.
Xiaoguang Tu, Jingjing Gao, Chongjin Zhu, Jie-Zhi Cheng, Zheng Ma, Xin Dai, Mei Xie
2015 conf
OFC
Yan Yang, Qing Fang, Mingbin Yu, Xiaoguang Tu, Junfeng Song, Rusli, Guo-Qiang Lo
2015 conf
OFC
Ying Huang, Xiaoguang Tu, Andy Eu-Jin Lim, Junfeng Song, Tsung-Yang Liow, Guo-Qiang Lo
2014 conf
OFC
Kazuhiro Goi, Hiroyuki Kusaka, Akira Oka, Kensuke Ogawa, Tsung-Yang Liow, Xiaoguang Tu, Guo-Qiang Lo, Dim-Lee Kwong
2014 conf
ECOC
Kazuhiro Goi, Kenji Oda, Yasuhiro Mashiko, Kensuke Ogawa, Tsung-Yang Liow, Xiaoguang Tu, Guo-Qiang Lo, Dim-Lee Kwong
2014 conf
OFC
Matthew Streshinsky, Ran Ding, Ari Novack, Yang Liu, Xiaoguang Tu, Andy Eu-Jin Lim, Edward Koh Sing Chen, Patrick Guo-Qiang Lo, Tom Baehr Jones, Michael Hochberg
2014 conf
OFC
Xianshu Luo, Junfeng Song, Qing Fang, Xiaoguang Tu, Lianxi Jia, Tsung-Yang Liow, Mingbin Yu, Guo-Qiang Lo
2014 J jnl
IEICE Electron. Express
Kensuke Ogawa, Hiroki Ishihara, Kazuhiro Goi, Yasuhiro Mashiko, Soon Thor Lim, Min Jie Sun, Sean Seah, Ching Eng Png, Tsung-Yang Liow, Xiaoguang Tu, Guo-Qiang Lo, Dim-Lee Kwong
2014 conf
OFC
Huijuan Zhang, Chao Li, Xiaoguang Tu, Haifeng Zhou, Xianshu Luo, Mingbin Yu, Guo-Qiang Lo
2014 conf
OFC
Lianxi Jia, Junfeng Song, Tsung-Yang Liow, Xianshu Luo, Xiaoguang Tu, Qing Fang, Sing-Chee Koh, Mingbin Yu, Guo-Qiang Lo
2014 conf
OFC
Andy Eu-Jin Lim, Tsung-Yang Liow, Junfeng Song, Chao Li, Qing Fang, Xiaoguang Tu, Ning Duan, Kok Kiong Chen, Roger Poh Cher Tern, Chuan Peng, Bong Woong Mun, Mohd Nurul Islam, Jae Soo Park, Chivukula Subbu, Guo-Qiang Lo
2014 conf
OFC
Tsung-Yang Liow, Ning Duan, Andy Eu-Jin Lim, Xiaoguang Tu, Mingbin Yu, Guo-Qiang Lo
2013 conf
OFC/NFOEC
Kazuhiro Goi, Hiroyuki Kusaka, Akira Oka, Yoshihiro Terada, Kensuke Ogawa, Tsung-Yang Liow, Xiaoguang Tu, Guo-Qiang Lo, Dim-Lee Kwong
2013 conf
OFC/NFOEC
Qing Fang, Junfeng Song, Xiaoguang Tu, Lianxi Jia, Xianshu Luo, Mingbin Yu, Guo-Qiang Lo
2013 J jnl
IEICE Trans. Electron.
Kazuhiro Goi, Kenji Oda, Hiroyuki Kusaka, Akira Oka, Yoshihiro Terada, Kensuke Ogawa, Tsung-Yang Liow, Xiaoguang Tu, Guo-Qiang Lo, Dim-Lee Kwong
2013 conf
OFC/NFOEC
Kazuhiro Goi, Hiroyuki Kusaka, Akira Oka, Yoshihiro Terada, Kensuke Ogawa, Tsung-Yang Liow, Xiaoguang Tu, Guo-Qiang Lo, Dim-Lee Kwong
2013 J jnl
IEICE Electron. Express
Kazuhiro Goi, Kensuke Ogawa, Yong Tsong Tan, Vivek Dixit, Soon Thor Lim, Ching Eng Png, Tsung-Yang Liow, Xiaoguang Tu, Guo-Qiang Lo, Dim-Lee Kwong
2013 conf
OFC/NFOEC
Junfeng Song, Xianshu Luo, Jack Sheng Kee, Chao Li, Xiaoguang Tu, Qing Fang, Huijuan Zhang, Lianxi Jia, Mi Kyoung Park, Tsung-Yang Liow, Mingbin Yu, Guo-Qiang Lo
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)