Xiaohong Chen

125 papers A* 4B 1Misc 1Journal 92Unranked 27
YearRankTypeTitle / Venue / Authors
2026 J jnl
Biomed. Signal Process. Control.
Jie Zhou, Li Wang, Fengji Li, Shaochuan Zhang, Fei Shen, Fan Fan, Tao Liu, Xiaohong Chen, Haijun Niu
2026 J jnl
CoRR
Zhiyi Xue, Xiaohong Chen, Min Zhang
2026 J jnl
Inf. Fusion
Wenrun Fu, Xiaohong Chen, Chaoming Liu, Zhiliang Hu, Dongbin Hu
2026 J jnl
Reliab. Eng. Syst. Saf.
Xiaohong Chen, Daipeng Ma, Jian Guan
2026 J jnl
Eur. J. Oper. Res.
Xiaohong Chen, Jitong Tan, Fuqiang Wang, Xiaolong Guo
2026 J jnl
Eng. Appl. Artif. Intell.
Yuanxi Sun, Chuan Tang, Xin Zhong, Xiaohong Chen, Jia Zheng, Long Bai
2025 J jnl
CoRR
Dongming Jin, Zhi Jin, Xiaohong Chen, Zheng Fang, Linyu Li, Yuanpeng He, Jia Li, Yirang Zhang, Yingtao Fang
2025 J jnl
Comput. Ind. Eng.
Xiaohong Chen, Cheng Zhang
2025 J jnl
Expert Syst. Appl.
Long Bai, Lan Qiu, Jia Zheng, Yulin Zhang, Xiaohong Chen, Yuanxi Sun
2025 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Boyan Wan, Yifei Shi, Xiaohong Chen, Kai Xu
2025 J jnl
IEEE Open J. Comput. Soc.
Xin Yuan, Chenhui Wang, Xiaohong Chen, Mingxuan Wang, Ning Li, Changli Yu
2025 Misc conf
ICASSP
Ali Mehrabian, Ehsan Hoseinzade, Mahdi Mazloum, Xiaohong Chen
2025 J jnl
Int. J. Digit. Earth
Jihao Deng, Quan Yuan, Baoze Liu, Xiaohong Chen
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xiaohong Chen, Guanying Xu, Xuesong Xu, Haichong Jiang, Zhiping Tian, Tao Ma
2025 J jnl
Syst.
Xiaohong Chen, Yuan Zhou
2025 J jnl
Syst.
Xiaohong Chen, Qigang Zhu, Yuntao Long
2025 J jnl
Electron. Commer. Res.
Jie Zhang, Yanju Zhou, Xiaohong Chen, Maggie Wenjing Liu
2025 J jnl
CoRR
Zhongren Chen, Siyu Chen, Zhengling Qi, Xiaohong Chen, Zhuoran Yang
2025 J jnl
Int. J. Prod. Res.
Qiaofeng Li, Qiman Yuan, Lu Wang, Zhi-Hai Zhang, Xiaohong Chen
2025 J jnl
Internet Res.
Zhihui Yang, Dongbin Hu, Xiaohong Chen
2025 B conf
ICECCS
Yiran Zhang, Weisong Sun, Yuqiang Sun, Chengwei Liu, Xiaohong Chen, Yang Liu
2025 J jnl
Environ. Model. Softw.
Lidan Zhang, Yuming Wang, Xiaohong Chen
2025 J jnl
CoRR
Dongming Jin, Zhi Jin, Yiran Zhang, Zheng Fang, Linyu Li, Yuanpeng He, Xiaohong Chen, Weisong Sun
2025 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xiaohong Chen, Yuhang Zhang, Xuesong Xu, Dongbin Hu, Guanying Xu
2024 J jnl
CoRR
Yuchen Zhu, Yufeng Zhang, Zhaoran Wang, Zhuoran Yang, Xiaohong Chen
2024 conf
RE Workshops
Shi Chen, Xiaohong Chen, Zhi Jin
2024 A* conf
NeurIPS
Xiaohong Chen, Canran Xiao, Yongmei Liu
2024 J jnl
IEEE Trans. Engineering Management
Xiaohong Chen, Xin Li, Wen Shi
2024 J jnl
Comput. Medical Imaging Graph.
Yuanxi Sun, Huiqin Zhang, Xiaohong Chen, Shandeng Huang, Long Bai
2024 conf
RE Workshops
Chunhui Wang, Jiaqi Zhao, Xiaohong Chen, Zhi Jin
2024 J jnl
CoRR
Ali Mehrabian, Ehsan Hoseinzade, Mahdi Mazloum, Xiaohong Chen
2024 conf
EMBC
Fengji Li, Fei Shen, Ding Ma, Shaochuan Zhang, Jie Zhou, Li Wang, Fan Fan, Tao Liu, Xiaohong Chen, Tomoki Toda, Haijun Niu
2024 A* conf
NeurIPS
Zhen Zhang, Xiaohong Chen, Limei Liu, Jie Chen, Junyu Huang, Qilong Feng
2024 J jnl
Electron. Commer. Res. Appl.
Hongzhen Lai, Yanju Zhou, Xiaohong Chen, Guiping Li
2024 conf
EMBC
Jie Zhou, Li Wang, Fengji Li, Shaochuan Zhang, Tao Liu, Xiaohong Chen, Haijun Niu
2024 J jnl
Ind. Manag. Data Syst.
Xiaoyu Yan, Xiaohong Chen, Chunfang Lu, Weihua Liu, Xiaoran Shi, Yu Gong
2024 A* conf
ICRA
Wenhao Li, Shishun Zhang, Sisi Dai, Hui Huang, Ruizhen Hu, Xiaohong Chen, Kai Xu
2024 J jnl
CoRR
Wenhao Li, Shishun Zhang, Sisi Dai, Hui Huang, Ruizhen Hu, Xiaohong Chen, Kai Xu
2024 J jnl
Eur. J. Oper. Res.
Liqun Wei, Libin Zhang, Wanying Wei, Xiaohong Chen, Kai Wang
2023 conf
ITSC
Ailing Yin, Xiaohong Chen, Guojian Zou
2023 conf
REW
Xiao Yang, Xiaohong Chen, Jiangtao Wang
2023 J jnl
Neurocomputing
Xingliang Mao, Youran Shan, Fangfang Li, Xiaohong Chen, Shichao Zhang
2023 conf
ISSSR
Xiaohong Chen, Kun Ruan, Zhi Jin, Junhu Li, Lingling Zheng
2023 J jnl
Comput. Commun.
Wei Liang, Xiaohong Chen, Suzhen Huang, Guanghao Xiong, Ke Yan, Xiaokang Zhou
2023 J jnl
Appl. Math. Comput.
Xiaohong Chen
2023 J jnl
Neural Process. Lett.
Heng Zhang, Xiaohong Chen, Enhao Zhang, Liping Wang
2023 J jnl
CoRR
Xiaohong Chen, Yuan Liao, Weichen Wang
2023 conf
ITSC
Quan Yuan, Ruixu Pan, Jihao Deng, Tianhao Li, Xiaohong Chen
2023 conf
REW
Kun Ruan, Xiaohong Chen, Zhi Jin
2023 conf
CSAE
Changhong Dong, Lu Zhang, Yurong You, Xiaohong Chen
2023 J jnl
CoRR
Xiaohong Chen, Sokbae Lee, Yuan Liao, Myung Hwan Seo, Youngki Shin, Myunghyun Song
2023 J jnl
CoRR
Xiaohong Chen, Zhengling Qi, Runzhe Wan
2023 J jnl
IEEE Geosci. Remote. Sens. Lett.
Xiaohong Chen, Yongshan Zhang, Xuxiang Feng, Xinwei Jiang, Zhihua Cai
2023 J jnl
Int. J. Digit. Earth
Jihao Deng, Yiqing Cui, Xiaohong Chen, Chris Bachmann, Quan Yuan
2022 J jnl
CoRR
Heng Zhang, Xiaohong Chen
2022 J jnl
J. Circuits Syst. Comput.
Bin Yin, Xiaohong Chen, Wanyu Li, Jinyue Tian
2022 J jnl
Artif. Intell. Medicine
Ming Kong, Qing Guo, Shuowen Zhou, Mengze Li, Kun Kuang, Zhengxing Huang, Fei Wu, Xiaohong Chen, Qiang Zhu
2022 J jnl
Remote. Sens.
Guang Zhu, Xiaohong Chen, Jingye Li, Kangkang Guo
2022 J jnl
J. Chem. Inf. Model.
Jiao Zhou, Wei Li, Shanyue Guan, Xiaohong Chen, Xiang Liu, Weiyan Shao
2022 J jnl
AKCE Int. J. Graphs Comb.
Xiaohong Chen, Baoyindureng Wu
2022 conf
RE Workshops
Chunhui Wang, Lu Hou, Xiaohong Chen
2022 J jnl
Annu. Rev. Control.
Yuanxi Sun, Yuntao Tang, Jia Zheng, Dianbiao Dong, Xiaohong Chen, Long Bai
2022 J jnl
IEEE Wirel. Commun. Lett.
Xiaohong Chen, Changxing Deng, Binggui Zhou, Huan Zhang, Guanghua Yang, Shaodan Ma
2022 conf
ITSC
Xiaohong Chen, Yiqing Cui, Hua Zhang
2022 conf
ITSC
Qian Ye, Xiaohong Chen, Kaan Ozbay, Tanfeng Li
2022 J jnl
IEEE Intell. Transp. Syst. Mag.
Songhua Hu, Hangfei Lin, Xiaohong Chen, Kun Xie, Xiaonian Shan
2022 A* conf
ICML
Xiaohong Chen, Zhengling Qi
2022 J jnl
CoRR
Xiaohong Chen, Zhengling Qi
2022 J jnl
J. Intell. Robotic Syst.
Xiaohong Chen, Zhipeng Huang, Yuanxi Sun, Yuanhong Zhong, Rui Gu, Long Bai
2022 J jnl
Environ. Model. Softw.
Zexin Chen, Tongtiegang Zhao, Tongbi Tu, Xinjun Tu, Xiaohong Chen
2022 conf
RE Workshops
Xiaoqi Wang, Xiaohong Chen, Xiao Yang, Bo Yang
2022 J jnl
Quantum Inf. Process.
Ping Wang, Xiaohong Chen, Zhiwei Sun
2022 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Yongshan Zhang, Yang Wang, Xiaohong Chen, Xinwei Jiang, Yicong Zhou
2022 J jnl
Multim. Tools Appl.
Huanghao Yin, Jiacheng Liu, Xiaohong Chen, Guoqiang Li
2021 J jnl
Sensors
Yixin Zhang, Jingxiao Liu, Fei Xiong, Xuping Zhang, Xiaohong Chen, Zhewen Ding, Yunyin Zheng, Feng Wang, Mengmeng Chen
2021 J jnl
IEEE Geosci. Remote. Sens. Lett.
Xiao-Gang Wang, Qing Kang, Xiaohong Chen, Qinghua Fu, Peng Wang
2021 J jnl
CoRR
Jiafeng Chen, Xiaohong Chen, Elie Tamer
2021 conf
RE Workshops
Qianqian Liu, Xiaohong Chen, Zhi Jin
2021 J jnl
IEEE Trans. Netw. Sci. Eng.
Mengsi Cai, Ge Huang, Mirjam E. Kretzschmar, Xiaohong Chen, Xin Lu
2021 conf
ACAI
Xiaohong Chen, Youchen Fan, Zhao Ma
2021 J jnl
Inf. Process. Manag.
Chen Yang, Xiaohong Chen, Lei Liu, Penny Sweetser
2021 J jnl
IEEE Access
Qingrou Yang, Luping Wu, Chenjun Shi, Xu Wu, Xiaohong Chen, Wanwan Wu, Huinan Yang, Zijie Wang, Linggao Zeng, Yan Peng
2020 J jnl
Neural Process. Lett.
Enhao Zhang, Xiaohong Chen, Liping Wang
2020 J jnl
Comput. Methods Programs Biomed.
Yakui Chu, Heng Li, Xu Li, Yuan Ding, Xilin Yang, Danni Ai, Xiaohong Chen, Yongtian Wang, Jian Yang
2020 J jnl
Int. J. Wirel. Mob. Comput.
Xiaohong Chen, Ruohan Chen
2020 J jnl
Int. J. Pattern Recognit. Artif. Intell.
Xingrui Zhang, Yulian Zhu, Xiaohong Chen
2020 J jnl
Scientometrics
Chen Yang, Tingting Liu, Xiaohong Chen, Yiyang Bian, Yuewen Liu
2020 conf
BIBM
Mengze Li, Kun Kuang, Qiang Zhu, Xiaohong Chen, Qing Guo, Fei Wu
2020 J jnl
Appl. Soft Comput.
Chen Yang, Tingting Liu, Wenjie Yi, Xiaohong Chen, Ben Niu
2020 J jnl
Int. J. Comput. Sci. Math.
Xiaohong Chen
2020 J jnl
Int. J. Prod. Res.
Wuhua Chen, Zhe George Zhang, Xiaohong Chen
2020 J jnl
Int. J. Wirel. Mob. Comput.
Xiaohong Chen
2020 J jnl
CoRR
Qian Ye, Xiaohong Chen, Onur Kalan, Kaan Ozbay
2019 J jnl
Comput. Oper. Res.
Jinlin Li, Xiaohong Chen, Zhanguo Zhu, Caijun Yang, Chengbin Chu
2019 J jnl
Sensors
Long Bai, Hao Hu, Xiaohong Chen, Yuanxi Sun, Chaoyang Ma, Yuanhong Zhong
2019 conf
ICSI (2)
Zhiyong Hao, Tingting Liu, Chen Yang, Xiaohong Chen
2019 J jnl
Sensors
Yuanxi Sun, Rui Huang, Jia Zheng, Dianbiao Dong, Xiaohong Chen, Long Bai, Wenjie Ge
2019 J jnl
Entropy
Jingrui Niu, Wei Li, Ping Liu, Ke Zhang, Fengcang Ma, Xiaohong Chen, Rui Feng, Peter K. Liaw
2019 J jnl
Int. J. Intell. Syst.
Donghai Liu, Yuanyuan Liu, Xiaohong Chen
2019 J jnl
IEEE Access
Zhiyong Hao, Junfeng Wu, Tingting Liu, Xiaohong Chen
2019 J jnl
Sensors
Long Bai, Jianxing Yang, Xiaohong Chen, Yuanxi Sun, Xingyu Li
2019 J jnl
IEEE Access
Yuanxi Sun, Pei Tang, Jia Zheng, Dianbiao Dong, Xiaohong Chen, Long Bai, Wenjie Ge
2019 conf
ITSC
Qian Ye, Xiaohong Chen, Hua Zhang, Kaan Ozbay, Fan Zuo
2019 conf
QRS Companion
Linbo Wu, Yunqiang Yan, Feng Gao, Xiaohong Chen, Changhai Nie
2019 J jnl
Int. J. Intell. Syst.
Donghai Liu, Xiaohong Chen, Dan Peng
2019 J jnl
J. Intell. Fuzzy Syst.
Donghai Liu, Yuanyuan Liu, Xiaohong Chen
2018 conf
ICSI (2)
Lei Liu, Chen Yang, Tingting Liu, Xiaohong Chen, Sung-Shun Weng
2018 conf
ICSI (2)
Chen Yang, Xiaohong Chen, Lei Liu, Tingting Liu, Shuang Geng
2018 conf
ICSI (2)
Chen Yang, Tingting Liu, Lei Liu, Xiaohong Chen, Zhiyong Hao
2018 J jnl
Robotics Auton. Syst.
Long Bai, Jian Guan, Xiaohong Chen, Junzhan Hou, Wenbo Duan
2018 J jnl
Symmetry
Donghai Liu, Xiaohong Chen, Dan Peng
2018 J jnl
Comput. Math. Methods Medicine
Donghai Liu, Xiaohong Chen, Dan Peng
2018 J jnl
Int. J. Fuzzy Syst.
Donghai Liu, Xiaohong Chen, Dan Peng
2018 conf
ITSC
Songhua Hu, Hangfei Lin, Kun Xie, Xiaohong Chen, Hongjie Shi
2018 J jnl
Complex.
Donghai Liu, Xiaohong Chen, Dan Peng
2018 J jnl
Symmetry
Donghai Liu, Yuanyuan Liu, Xiaohong Chen
2017 J jnl
Complex.
Donghai Liu, Xiaohong Chen, Dan Peng
2014 J jnl
Int. J. Simul. Process. Model.
Jiang-hong Zeng, Lin-ping Tan, Xiaohong Chen
2014 J jnl
J. Networks
Xiaohong Chen, Xueli Fang
2013 conf
WHICEB
Xiaohong Chen, Sha Chen
2011 conf
AICI (1)
Yue Hou, Jinyun Pu, Xiaohong Chen
2008 conf
IWAAPF@ICSE
Xiaohong Chen, Zhi Jin
2007 J jnl
Appl. Math. Comput.
Changfeng Ma, Jia Tang, Xiaohong Chen
2001 J jnl
IEEE Trans. Neural Networks
Xiaohong Chen, Jeffrey S. Racine, Norman R. Swanson
1999 J jnl
IEEE Trans. Inf. Theory
Xiaohong Chen, Halbert White
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)