Xiang Yuan

64 papers A* 5A 4B 2C 3Misc 3Journal 36Unranked 11
YearRankTypeTitle / Venue / Authors
2026 conf
CHI Extended Abstracts
Han Nan, Yujia Han, Yu Peng, Xiang Yuan, Xuanyu Pan
2026 J jnl
Biomed. Signal Process. Control.
Shujin Zhu, Lei Wei, Yue Li, Xiang Yuan, Can Wang, Tianyi Mao, Xiubin Dai, Yidan Yan, Junyan Chen
2026 J jnl
CoRR
Xiang Yuan, Xu Chu, Xinrong Chen, Haochen Li, Zonghong Dai, Hongcheng Fan, Xiaoyue Yuan, Weiping Li, Tong Mo
2026 J jnl
IEEE Trans. Image Process.
Xiang Yuan, Gong Cheng, Jiacheng Cheng, Ruixiang Yao, Junwei Han
2026 A* conf
AAAI
Peng Zhang, Xiang Yuan, Gong Cheng
2026 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Xuan Xie, Xiang Yuan, Gong Cheng
2025 A conf
Conference on Designing Interactive Systems
Xiaojing Yuan, Xiang Yuan, Yuxiao He, Zixi Wang, Jia Ren, Nick Bryan-Kinns
2025 J jnl
Trans. Mach. Learn. Res.
Gaoqin Chang, Jun Shu, Xiang Yuan, Deyu Meng
2025 J jnl
CoRR
Xiang Yuan, Jun Shu, Deyu Meng, Zongben Xu
2025 Misc conf
ICASSP
Tuoyu Feng, Weiping Li, Zhijie Tan, Liwen Zhang, Xiang Yuan, Xu Chu
2025 conf
PRCV (5)
Chengsong Sun, Weiping Li, Xiang Yuan, Yuankun Liu
2025 J jnl
CoRR
Junshu Tang, Jiacheng Liu, Jiaqi Li, Longhuang Wu, Haoyu Yang, Penghao Zhao, Siruis Gong, Xiang Yuan, Shuai Shao, Qinglin Lu
2025 J jnl
CoRR
Team Hunyuan3D, Shuhui Yang, Mingxin Yang, Yifei Feng, Xin Huang, Sheng Zhang, Zebin He, Di Luo, Haolin Liu, Yunfei Zhao, Qingxiang Lin, Zeqiang Lai, Xianghui Yang, Huiwen Shi, Zibo Zhao, Bowen Zhang, Hongyu Yan, Lifu Wang, Sicong Liu, Jihong Zhang, Meng Chen, Liang Dong, Yiwen Jia, Yulin Cai, Jiaao Yu, Yixuan Tang, Dongyuan Guo, Junlin Yu, Hao Zhang, Zheng Ye, Peng He, Runzhou Wu, Shida Wei, Chao Zhang, Yonghao Tan, Yifu Sun, Lin Niu, Shirui Huang, Bojian Zheng, Shu Liu, Shilin Chen, Xiang Yuan, Xiaofeng Yang, Kai Liu, Jianchen Zhu, Peng Chen, Tian Liu, Di Wang, Yuhong Liu, Linus, Jie Jiang, Jingwei Huang, Chunchao Guo
2025 J jnl
CoRR
HunyuanWorld Team, Zhenwei Wang, Yuhao Liu, Junta Wu, Zixiao Gu, Haoyuan Wang, Xuhui Zuo, Tianyu Huang, Wenhuan Li, Sheng Zhang, Yihang Lian, Yulin Tsai, Lifu Wang, Sicong Liu, Puhua Jiang, Xianghui Yang, Dongyuan Guo, Yixuan Tang, Xinyue Mao, Jiaao Yu, Junlin Yu, Jihong Zhang, Meng Chen, Liang Dong, Yiwen Jia, Chao Zhang, Yonghao Tan, Hao Zhang, Zheng Ye, Peng He, Runzhou Wu, Minghui Chen, Zhan Li, Wangchen Qin, Lei Wang, Yifu Sun, Lin Niu, Xiang Yuan, Xiaofeng Yang, Yingping He, Jie Xiao, Yangyu Tao, Jianchen Zhu, Jinbao Xue, Kai Liu, Chongqing Zhao, Xinming Wu, Tian Liu, Peng Chen, Di Wang, Yuhong Liu, Linus, Jie Jiang, Tengfei Wang, Chunchao Guo
2025 A* conf
CHI
Xinhui Chen, Xiang Yuan, Hui Zhang, Ruixiao Zheng, Wanyi Wei
2025 Misc conf
ICASSP
Zhijie Tan, Yuzhi Li, Shengwei Meng, Xiang Yuan, Weiping Li, Tong Mo, Bingce Wang, Xu Chu
2025 J jnl
CoRR
Zhijie Tan, Yuzhi Li, Shengwei Meng, Xiang Yuan, Weiping Li, Tong Mo, Bingce Wang, Xu Chu
2025 A* conf
ICML
Jiacheng Cheng, Xiwen Yao, Xiang Yuan, Junwei Han
2025 J jnl
CoRR
Dezheng Bao, Yueci Yang, Xin Chen, Zhengxuan Jiang, Zeguo Fei, Daoze Zhang, Xuanwen Huang, Junru Chen, Chutian Yu, Xiang Yuan, Yang Yang
2025 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Xiang Yuan, Gong Cheng, Ruixiang Yao, Junwei Han
2025 A conf
ICME
Xiang Yuan, Xinrong Chen, Haochen Li, Hang Yang, Guanyu Wang, Weiping Li, Tong Mo
2025 J jnl
CoRR
Xiang Yuan, Xinrong Chen, Haochen Li, Hang Yang, Guanyu Wang, Weiping Li, Tong Mo
2024 conf
ICCBD
Xiang Yuan, Chutian Yu, Junjie Sun, Xiaojian Jiang
2024 J jnl
IEEE Trans. Geosci. Remote. Sens.
Jiacheng Cheng, Xiwen Yao, Xuguang Yang, Xiang Yuan, Xiaoxu Feng, Gong Cheng, Xiankai Huang, Junwei Han
2024 J jnl
Eng. Appl. Artif. Intell.
Song Wu, Xiang Yuan, Guoqiang Xiao, Michael S. Lew, Xinbo Gao
2024 J jnl
IEEE Trans. Circuits Syst. Video Technol.
Yanqing Yao, Gong Cheng, Chunbo Lang, Xiang Yuan, Xingxing Xie, Junwei Han
2024 A conf
ICWS
Zhijie Tan, Yuzhi Li, Xiang Yuan, Shengwei Meng, Weiping Li, Tong Mo
2024 J jnl
Int. J. Comput. Math.
Xue-Qin Long, Nai-Min Zhang, Xiang Yuan
2024 J jnl
ACM Trans. Multim. Comput. Commun. Appl.
Yuankun Liu, Xiang Yuan, Haochen Li, Zhijie Tan, Jinsong Huang, Jingjie Xiao, Weiping Li, Tong Mo
2024 J jnl
Int. J. Multim. Inf. Retr.
Xiang Yuan, Shihao Shan, Yuwen Huo, Junkai Jiang, Song Wu
2024 J jnl
CoRR
Jinhui Ouyang, Yijie Zhu, Xiang Yuan, Di Wu
2023 conf
ICSS
Zhijie Tan, Xiang Yuan, Siying Cui, Yuzhi Li, Zhonghai Wu, Tong Mo, Weiping Li
2023 J jnl
IEEE CAA J. Autom. Sinica
Qian Xu, Chutian Yu, Xiang Yuan, Zao Fu, Hongzhe Liu
2023 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Qian Zhao, Jun Shu, Xiang Yuan, Ziming Liu, Deyu Meng
2023 J jnl
CoRR
Zhijie Tan, Xiang Yuan, Shengwei Meng, Yakun Huang, Weiping Li, Zhonghai Wu, Tong Mo
2023 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Jun Shu, Xiang Yuan, Deyu Meng, Zongben Xu
2023 J jnl
CoRR
Jun Shu, Xiang Yuan, Deyu Meng, Zongben Xu
2023 J jnl
Frontiers Inf. Technol. Electron. Eng.
Qian Xu, Chutian Yu, Xiang Yuan, Mengli Wei, Hongzhe Liu
2023 conf
HCI (38)
Shuo Li, Xiang Yuan, Xinyuan Zhao, Shirao Yang
2023 J jnl
BMC Medical Imaging
Xiang Yuan, Xin Quan, Xiao-ling Che, Lu-Lu Xu, Chun-mei Yang, Xiaodi Zhang, Jian Shu
2023 A* conf
ICCV
Xiang Yuan, Gong Cheng, Kebing Yan, Qinghua Zeng, Junwei Han
2023 J jnl
CoRR
Xiang Yuan, Gong Cheng, Kebing Yan, Qinghua Zeng, Junwei Han
2023 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Gong Cheng, Xiang Yuan, Xiwen Yao, Kebing Yan, Qinghua Zeng, Xingxing Xie, Junwei Han
2022 conf
ICANN (1)
Shihao Shan, Enyuan Xiong, Xiang Yuan, Song Wu
2022 J jnl
CoRR
Jun Shu, Xiang Yuan, Deyu Meng, Zongben Xu
2022 J jnl
CoRR
Gong Cheng, Xiang Yuan, Xiwen Yao, Kebing Yan, Qinghua Zeng, Junwei Han
2021 conf
AHFE (3)
Peng Su, Xiang Yuan
2021 J jnl
Appl. Math. Lett.
Xiang Yuan, Nai-Min Zhang
2020 J jnl
New Rev. Hypermedia Multim.
Xiang Yuan, Hongwei Wang
2020 J jnl
Adv. Robotics
Hao Tan, Ying Zhao, Shiyan Li, Wei Wang, Ming Zhu, Jie Hong, Xiang Yuan
2018 conf
WHICEB
Xiang Yuan, Hongwei Wang, Yuan Meng
2018 J jnl
IEEE Trans. Software Eng.
Zhe Wang, Chenggang Wu, Xiang Yuan, Zhenjiang Wang, Jianjun Li, Pen-Chung Yew, Jeff Huang, Xiaobing Feng, Yanyan Lan, Yunji Chen, Yuanming Lai, Yong Guan
2017 C conf
CollaborateCom
Xiang Yuan, Qibo Sun, Jinglin Li
2016 conf
DASC/PiCom/DataCom/CyberSciTech
Guoyu Yang, Qibo Sun, Ao Zhou, Jinglin Li, Xiang Yuan, Hanyi Tang
2015 conf
ICSE (1)
Xiang Yuan, Chenggang Wu, Zhenjiang Wang, Jianjun Li, Pen-Chung Yew, Jeff Huang, Xiaobing Feng, Yanyan Lan, Yunji Chen, Yong Guan
2014 B conf
PPoPP
Wenwen Wang, Chenggang Wu, Pen-Chung Yew, Xiang Yuan, Zhenjiang Wang, Jianjun Li, Xiaobing Feng
2014 A* conf
ASE
Wenwen Wang, Zhenjiang Wang, Chenggang Wu, Pen-Chung Yew, Xipeng Shen, Xiang Yuan, Jianjun Li, Xiaobing Feng, Yong Guan
2013 C conf
IGARSS
Xiaoqing Wang, Aixia Dou, Guoqing Sun, Xiang Ding, Xiang Yuan
2013 conf
Euro-Par
Xiang Yuan, Zhenjiang Wang, Chenggang Wu, Pen-Chung Yew, Wenwen Wang, Jianjun Li, Di Xu
2008 Misc conf
ICASSP
Xiang Yuan, Chang-Tsun Li
2006 B conf
AVSS
Xiang Yuan, Chang-Tsun Li
2005 J jnl
Comput. Animat. Virtual Worlds
Xiang Yuan, Yam San Chee
2005 A conf
AAMAS
Jun Zheng, Xiang Yuan, Yam San Chee
2003 C conf
CW
Xiang Yuan, Yam San Chee
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)