Kai Tang

114 papers A* 1A 1C 3Misc 2Journal 96Unranked 11
YearRankTypeTitle / Venue / Authors
2026 J jnl
Robotics Comput. Integr. Manuf.
Bin Zi, Kai Tang, Yuan Li, Kai Feng, Yongkui Liu, Lihui Wang
2026 J jnl
Int. J. Comput. Integr. Manuf.
Yuanzhi Chen, Dong He, Jiancheng Hao, Xiaoke Deng, Wenze Zhang, Zichuan Fu, Yichen Wang, Li Chen, Pengcheng Hu, Kai Tang
2025 J jnl
Comput. Aided Des.
Xiangyu Li, Dong He, Jiancheng Hao, Zhaoyu Li, Xifan Zhang, Takyu Lau, Ziyuan Zhao, Xuehan Wang, Junxue Ren, Kai Tang
2025 J jnl
IEEE Trans Autom. Sci. Eng.
Yuzhu Ding, Zhaoyu Li, Dong He, Kai Tang, Pengcheng Hu
2025 conf
RCAR
Xiangyu Wang, Haokun Chen, Kai Tang, Pengcheng Hu
2025 conf
RCAR
Haokun Chen, Dong He, Jiancheng Hao, Pengcheng Hu, Kai Tang
2025 J jnl
Graph. Model.
Tak Yu Lau, Dong He, Yamin Li, Yihe Wang, Danjie Bi, Lulu Huang, Pengcheng Hu, Kai Tang
2024 J jnl
Robotics Comput. Integr. Manuf.
Zhaoyu Li, Dong He, Xiangyu Li, Xiaoke Deng, Pengcheng Hu, Jiancheng Hao, Yue Hou, Hongyu Yu, Kai Tang
2024 J jnl
CoRR
Kangcheng Liu, Xinhu Zheng, Chaoqun Wang, Hesheng Wang, Ming Liu, Kai Tang
2023 J jnl
Comput. Aided Des.
Dong He, Zhaoyu Li, Xiangyu Li, Yamin Li, Kai Tang
2023 J jnl
IEEE Trans Autom. Sci. Eng.
Zhaoyu Li, Kai Tang, Pengcheng Hu, Lihua Huang
2023 J jnl
CoRR
Kangcheng Liu, Yong-Jin Liu, Kai Tang, Ming Liu, Baoquan Chen
2023 J jnl
Comput. Aided Des.
Tak Yu Lau, Li Chen, Dong He, Zhaoyu Li, Kai Tang
2022 J jnl
J. Comput. Des. Eng.
Jiancheng Hao, Zhaoyu Li, Xiangyu Li, Fubao Xie, Dong He, Kai Tang
2022 J jnl
Vis. Comput. Ind. Biomed. Art
Yujie Zhao, Changqing Liu, Zhiwei Zhao, Kai Tang, Dong He
2022 J jnl
Robotics Comput. Integr. Manuf.
Yamin Li, Dong He, Shangqin Yuan, Kai Tang, Jihong Zhu
2022 J jnl
Comput. Aided Des.
Fubao Xie, Xishuang Jing, Chengyang Zhang, Siyu Chen, Danjie Bi, Zhaoyu Li, Dong He, Kai Tang
2021 J jnl
Robotics Comput. Integr. Manuf.
Zhaoyu Li, Pengcheng Hu, Fubao Xie, Kai Tang
2021 J jnl
Robotics Comput. Integr. Manuf.
Yaoan Lu, Kai Tang, Chengyong Wang
2021 J jnl
Comput. Aided Des.
Yamin Li, Kai Tang, Dong He, Xiangyu Wang
2021 J jnl
Comput. Aided Des.
Dong He, Zhaoyu Li, Yamin Li, Kai Tang
2020 J jnl
J. Comput. Inf. Sci. Eng.
Yamin Li, Kai Tang, Long Zeng
2020 J jnl
Int. J. Comput. Integr. Manuf.
Fubao Xie, Danjie Bi, Kai Tang
2020 J jnl
Comput. Aided Des.
Lufeng Chen, Rong Zhang, Kai Tang, Pengcheng Hu, Pengyu Zhao, Zhaoyu Li, Zhenwei Han
2020 J jnl
Comput. Aided Des.
Zhaoyu Li, Lufeng Chen, Ke Xu, Yongsheng Gao, Kai Tang
2020 J jnl
CoRR
Yamin Li, Dong He, Xiangyu Wang, Kai Tang
2020 J jnl
Multim. Tools Appl.
Fengting Yan, Yonghao Hu, Jinyuan Jia, Zihao Ai, Kai Tang, Zhicai Shi, Xiang Liu
2020 J jnl
Comput. Aided Des.
Li Chen, Tak Yu Lau, Kai Tang
2020 J jnl
CoRR
Yamin Li, Kai Tang, Dong He, Xiangyu Wang
2020 J jnl
Robotics Comput. Integr. Manuf.
Yamin Li, Long Zeng, Kai Tang, Chun Xie
2020 J jnl
Robotics Comput. Integr. Manuf.
Fubao Xie, Lufeng Chen, Zhaoyu Li, Kai Tang
2019 J jnl
Comput. Aided Des.
Xiangyu Li, Junxue Ren, Kai Tang, Yuke Zhou
2019 J jnl
IEEE Trans Autom. Sci. Eng.
Yang Zhang, Kai Tang
2019 J jnl
Comput. Aided Des.
Ke Xu, Yingguang Li, Lufeng Chen, Kai Tang
2019 J jnl
IEEE Trans Autom. Sci. Eng.
Ke Xu, Lufeng Chen, Kai Tang
2018 J jnl
Comput. Aided Des.
Pengcheng Hu, Huicheng Zhou, Jihong Chen, Chen-Han Lee, Kai Tang, Jianzhong Yang, Shuyu Shen
2018 J jnl
IEEE Trans Autom. Sci. Eng.
Lulin Quan, Yang Zhang, Kai Tang
2018 J jnl
Comput. Aided Des.
Qianhang Yan, Ming Luo, Kai Tang
2018 J jnl
Comput. Graph.
Li Chen, Ke Xu, Kai Tang
2018 J jnl
World Wide Web
Wen Zhou, Kai Tang, Jinyuan Jia
2017 J jnl
IEEE Trans Autom. Sci. Eng.
Pengcheng Hu, Rong Zhang, Kai Tang
2017 J jnl
J. Comput. Des. Eng.
Ke Xu, Jiarui Wang, Chih-Hsing Chu, Kai Tang
2017 J jnl
Comput. Aided Des.
Pengcheng Hu, Lufeng Chen, Kai Tang
2017 conf
Edutainment
Fengting Yan, Yonghao Hu, Qinghua Guo, Kai Tang, Jinyuan Jia, HeHua Zhu
2016 J jnl
IEEE Trans. Vis. Comput. Graph.
Yong-Jin Liu, Cheng-Chi Yu, Minjing Yu, Kai Tang, Deok-Soo Kim
2016 J jnl
Int. J. Comput. Integr. Manuf.
Pengcheng Hu, Kai Tang
2016 J jnl
Graph. Model.
Xiaojun Liu, Ning Xie, Kai Tang, Jinyuan Jia
2016 J jnl
IEEE Trans. Vis. Comput. Graph.
Tsz-Ho Kwok, Yanqiu Zhang, Charlie C. L. Wang, Yong-Jin Liu, Kai Tang
2016 J jnl
Comput. Aided Des.
Zi Zhou, Yang Zhang, Kai Tang
2015 A* conf
ICRA
Feng Ni, Daniel Rojas, Kai Tang, Lilong Cai, Tamim Asfour
2015 J jnl
IEEE Trans Autom. Sci. Eng.
Xiangzhi Wei, Ajay Joneja, Kai Tang
2015 J jnl
J. Comput. Appl. Math.
Wen-Yong Gong, Yong-Jin Liu, Kai Tang, Tie-Ru Wu
2015 conf
CAD/Graphics
Pengcheng Hu, Lufeng Chen, Jiarui Wang, Kai Tang
2015 J jnl
J. Comput. Des. Eng.
Li Chen, Ke Xu, Kai Tang
2015 J jnl
J. Comput. Des. Eng.
Rong Zhang, Pengcheng Hu, Kai Tang
2015 J jnl
Comput. Aided Des.
Lulin Quan, Kai Tang
2014 J jnl
J. Comput. Inf. Sci. Eng.
Wen-Yong Gong, Yong-Jin Liu, Kai Tang, Tie-Ru Wu
2013 J jnl
Comput. Aided Des.
Ming Chen, Kai Tang
2013 J jnl
Comput. Aided Des.
Pengcheng Hu, Kai Tang, Chen-Han Lee
2013 J jnl
Comput. Graph.
Ming Chen, Kai Tang
2013 J jnl
Inf. Process. Lett.
Yong-Jin Liu, Kai Tang
2011 conf
ISVD
Wen-Yong Gong, Yong-Jin Liu, Kai Tang, Tie-Ru Wu
2011 J jnl
IEEE Trans. Pattern Anal. Mach. Intell.
Yong-Jin Liu, Zhanqing Chen, Kai Tang
2011 J jnl
Comput. Aided Des.
Pengcheng Hu, Kai Tang
2011 J jnl
Comput. Aided Des.
Yong-Jin Liu, Kai Tang, Wen-Yong Gong, Tie-Ru Wu
2010 J jnl
J. Comput. Inf. Sci. Eng.
Zhanqing Chen, Kai Tang
2010 J jnl
Vis. Comput.
Ming Chen, Kai Tang
2010 J jnl
Comput. Aided Des.
Charlie C. L. Wang, Kai Tang
2010 J jnl
Vis. Comput.
Yong-Jin Liu, Wen-Qi Zhang, Kai Tang
2009 J jnl
Vis. Comput.
Huawei Wang, Kai Tang
2009 conf
CAD/Graphics
Yong-Jin Liu, Wen-Qi Zhang, Kai Tang
2009 J jnl
IEEE Trans. Vis. Comput. Graph.
Kai Tang, Ming Chen
2008 J jnl
Comput. Aided Geom. Des.
Huawei Wang, Kai Tang, Kaihuai Qin
2008 J jnl
Comput. Aided Des.
Nan Wang, Kai Tang
2008 J jnl
J. Comput. Inf. Sci. Eng.
Kun Chen, Kai Tang
2008 conf
Symposium on Solid and Physical Modeling
Charlie C. L. Wang, Kai Tang
2008 A conf
ESA
Pankaj K. Agarwal, Danny Z. Chen, Shashidhara K. Ganjugunte, Ewa Misiolek, Micha Sharir, Kai Tang
2007 J jnl
Comput. Aided Des.
Nan Wang, Kai Tang
2007 J jnl
Comput. Aided Des.
Hongwei Lin, Kai Tang, Ajay Joneja, Hujun Bao
2007 J jnl
Comput. Aided Des.
Yong-Jin Liu, Kai Tang, Ajay Joneja
2007 conf
CGVR
Jinyuan Jia, Jiasi Song, Ajay Joneja, Kai Tang
2007 conf
CGVR
Jinyuan Jia, Sijia Song, Ajay Joneja, Kai Tang
2007 J jnl
Comput. Aided Des.
Charlie C. L. Wang, Kai Tang
2006 C conf
GMP
Yong-Jin Liu, Kai Tang, Ajay Joneja
2006 C conf
Computer Graphics International
Kai Tang, Yong-Jin Liu
2006 J jnl
Vis. Comput.
Huawei Wang, Kaihuai Qin, Kai Tang
2006 J jnl
Int. J. Comput. Geom. Appl.
Kai Tang, Charlie C. L. Wang, Danny Z. Chen
2006 Misc conf
International Conference on Computational Science (2)
Jinyuan Jia, Ajay Joneja, Kai Tang
2005 J jnl
Graph. Model.
Kai Tang, Yong-Jin Liu
2005 J jnl
Comput. Aided Des.
Charlie C. L. Wang, Kai Tang, Benjamin M. L. Yeung
2005 J jnl
J. Comput. Inf. Sci. Eng.
Kai Tang, Charlie C. L. Wang
2005 J jnl
Comput. Aided Des.
Fu Jing, Ajay Joneja, Kai Tang
2005 J jnl
Int. J. Image Graph.
Yong-Jin Liu, Kai Tang, Ajay Joneja, Matthew Ming-Fai Yuen
2005 J jnl
Comput. Aided Des.
Charlie C. L. Wang, Kai Tang
2005 J jnl
J. Comput. Inf. Sci. Eng.
Charlie C. L. Wang, Kai Tang
2005 Misc conf
International Conference on Computational Science (2)
Jinyuan Jia, Ajay Joneja, Kai Tang
2005 J jnl
Comput. Graph.
Yong-Jin Liu, Kai Tang, Ajay Joneja
2004 J jnl
IEEE Trans. Robotics
Kai Tang, Yong-Jin Liu
2004 J jnl
Vis. Comput.
Charlie C. L. Wang, Kai Tang
2004 J jnl
Vis. Comput.
Jinyuan Jia, Kai Tang, Ajay Joneja
2004 conf
SMI
Jinyuan Jia, Kai Tang, Ajay Joneja, Ki-Wan Kwok
2004 conf
Symposium on Solid Modeling and Applications
Charlie C. L. Wang, Kai Tang
2004 C conf
GMP
Yong-Jin Liu, Kai Tang, Matthew Ming-Fai Yuen
2004 J jnl
J. Comput. Sci. Technol.
Yong-Jin Liu, Kai Tang, Matthew Ming-Fai Yuen
2004 J jnl
Comput. Aided Des.
Guo-Jin Wang, Kai Tang, Chiew-Lan Tai
2004 J jnl
Comput. Aided Des.
Charlie C. L. Wang, Yu Wang, Kai Tang, Matthew M. F. Yuen
2003 J jnl
Vis. Comput.
Yong-Jin Liu, Matthew Ming-Fai Yuen, Kai Tang
2003 J jnl
Comput. Aided Des.
Kai Tang, Yong-Jin Liu
2003 J jnl
Comput. Aided Des.
Kai Tang, Anthony Pang
2003 J jnl
Comput. Aided Des.
Kai Tang, Ajay Joneja
1999 J jnl
Graph. Model. Image Process.
Kai Tang
1998 J jnl
Comput. Aided Des.
Kai Tang, Shuo-Yan Chou, Lin-Lin Chen
1997 J jnl
Comput. Aided Des.
Kai Tang, Ming-En Wang, Lin-Lin Chen, Shuo-Yan Chou, Tony C. Woo, Ravi Janardan
1994 J jnl
Comput. Aided Des.
Shuo-Yan Chou, Tony C. Woo, Lin-Lin Chen, Kai Tang, Sung Yong Shin
tests/unit/conftest_binja_stubs.py
← Index tests/unit/conftest_binja_stubs.py python
"""Stubs for binaryninja module so decompiler unit tests can import
without a Binary Ninja license."""

import sys
from unittest.mock import MagicMock
from enum import IntEnum


# Stub binaryninja.enums
class BranchType(IntEnum):
    UnconditionalBranch = 0
    FalseBranch = 1
    TrueBranch = 2
    CallDestination = 3
    FunctionReturn = 4
    SystemCall = 5
    IndirectBranch = 6
    ExceptionBranch = 7
    UnresolvedBranch = 8
    UserDefinedBranch = 9


class InstructionTextTokenType(IntEnum):
    TextToken = 0
    InstructionToken = 1
    RegisterToken = 2
    IntegerToken = 3
    PossibleAddressToken = 4
    BeginMemoryOperandToken = 10
    EndMemoryOperandToken = 11
    FloatingPointToken = 12
    AnnotationToken = 13
    CodeRelativeAddressToken = 14
    ArgumentNameToken = 15
    HexDumpByteValueToken = 16
    HexDumpSkippedByteToken = 17
    HexDumpInvalidByteToken = 18
    HexDumpTextToken = 19
    OpcodeToken = 20
    StringToken = 21
    CharacterConstantToken = 22
    KeywordToken = 23
    TypeNameToken = 24
    FieldNameToken = 25
    NameSpaceToken = 26
    NameSpaceSeparatorToken = 27
    TagToken = 28
    StructOffsetToken = 29
    StructOffsetByteValueToken = 30
    StructureHexDumpTextToken = 31
    GotoLabelToken = 32
    CommentToken = 33
    PossibleValueToken = 34
    PossibleValueTypeToken = 35
    ArrayIndexToken = 36
    IndentationToken = 37
    UnknownMemoryToken = 38
    EnumerationMemberToken = 39
    OperationToken = 40
    BaseStructureOffsetToken = 41
    BaseStructureSeparatorToken = 42
    BraceToken = 43
    PlainTextToken = 44
    CollapsedInformationToken = 45


class SymbolType(IntEnum):
    FunctionSymbol = 0
    ImportAddressSymbol = 1
    ImportedFunctionSymbol = 2
    DataSymbol = 3
    ImportedDataSymbol = 4
    ExternalSymbol = 5
    LibraryFunctionSymbol = 6
    SymbolicFunctionSymbol = 7
    LocalLabelSymbol = 8


class HighLevelILOperation(IntEnum):
    HLIL_NOP = 0
    HLIL_ADD = 1
    HLIL_SUB = 2
    HLIL_MUL = 3
    HLIL_DIVS = 4
    HLIL_NEG = 5
    HLIL_NOT = 6
    HLIL_AND = 7
    HLIL_OR = 8
    HLIL_XOR = 9
    HLIL_LSR = 10
    HLIL_LSL = 11
    HLIL_MODS = 12
    HLIL_IF = 13
    HLIL_GOTO = 14
    HLIL_RET = 15
    HLIL_ASSIGN = 16
    HLIL_CALL = 17
    HLIL_VAR = 18
    HLIL_CONST = 19
    HLIL_BLOCK = 20


class LowLevelILOperation(IntEnum):
    LLIL_NOP = 0
    LLIL_SET_REG = 1
    LLIL_SET_REG_SPLIT = 2
    LLIL_SET_FLAG = 3
    LLIL_LOAD = 4
    LLIL_STORE = 5
    LLIL_PUSH = 6
    LLIL_POP = 7
    LLIL_REG = 8
    LLIL_CONST = 9
    LLIL_CONST_PTR = 10
    LLIL_FLAG = 11
    LLIL_FLAG_BIT = 12
    LLIL_ADD = 13
    LLIL_ADC = 14
    LLIL_SUB = 15
    LLIL_SBB = 16
    LLIL_AND = 17
    LLIL_OR = 18
    LLIL_XOR = 19
    LLIL_LSL = 20
    LLIL_LSR = 21
    LLIL_ASR = 22
    LLIL_ROL = 23
    LLIL_RLC = 24
    LLIL_ROR = 25
    LLIL_RRC = 26
    LLIL_MUL = 27
    LLIL_MULU_DP = 28
    LLIL_MULS_DP = 29
    LLIL_DIVU = 30
    LLIL_DIVU_DP = 31
    LLIL_DIVS = 32
    LLIL_DIVS_DP = 33
    LLIL_MODU = 34
    LLIL_MODS = 35
    LLIL_NEG = 36
    LLIL_NOT = 37
    LLIL_SX = 38
    LLIL_ZX = 39
    LLIL_LOW_PART = 40
    LLIL_JUMP = 41
    LLIL_JUMP_TO = 42
    LLIL_CALL = 43
    LLIL_CALL_SSA = 44
    LLIL_RET = 45
    LLIL_NORET = 46
    LLIL_IF = 47
    LLIL_GOTO = 48
    LLIL_FLAG_COND = 49
    LLIL_CMP_E = 50
    LLIL_CMP_NE = 51
    LLIL_CMP_SLT = 52
    LLIL_CMP_ULT = 53
    LLIL_CMP_SLE = 54
    LLIL_CMP_ULE = 55
    LLIL_CMP_SGE = 56
    LLIL_CMP_UGE = 57
    LLIL_CMP_SGT = 58
    LLIL_CMP_UGT = 59
    LLIL_TEST_BIT = 60
    LLIL_BOOL_TO_INT = 61
    LLIL_TAILCALL = 62
    LLIL_SYSCALL = 63
    LLIL_BP = 64
    LLIL_TRAP = 65
    LLIL_UNDEF = 66
    LLIL_UNIMPL = 67
    LLIL_UNIMPL_MEM = 68


class AnalysisState(IntEnum):
    IdleState = 0
    DisassembleState = 1
    AnalyzeState = 2


def install_binja_stubs():
    """Install binaryninja module stubs into sys.modules.
    Call this BEFORE importing any decompiler modules.
    Idempotent — returns the existing mock if already installed.
    """
    if "binaryninja" in sys.modules and not isinstance(sys.modules["binaryninja"], MagicMock):
        return sys.modules["binaryninja"]
    if "binaryninja" in sys.modules and hasattr(sys.modules["binaryninja"], "_redb_stub"):
        return sys.modules["binaryninja"]

    # Create the main mock
    bn_mock = MagicMock()
    bn_mock._redb_stub = True

    # Wire up enums as real enums (not mocks)
    enums_mod = MagicMock()
    enums_mod.BranchType = BranchType
    enums_mod.InstructionTextTokenType = InstructionTextTokenType
    enums_mod.SymbolType = SymbolType
    enums_mod.HighLevelILOperation = HighLevelILOperation
    enums_mod.LowLevelILOperation = LowLevelILOperation
    enums_mod.AnalysisState = AnalysisState

    bn_mock.enums = enums_mod
    bn_mock.enums.BranchType = BranchType
    bn_mock.enums.InstructionTextTokenType = InstructionTextTokenType
    bn_mock.enums.SymbolType = SymbolType
    bn_mock.enums.HighLevelILOperation = HighLevelILOperation
    bn_mock.enums.LowLevelILOperation = LowLevelILOperation
    bn_mock.enums.AnalysisState = AnalysisState

    # LowLevelILOperation on the top-level module
    bn_mock.LowLevelILOperation = LowLevelILOperation
    bn_mock.LowLevelILInstruction = MagicMock

    # highlevelil sub-module
    hlil_mod = MagicMock()
    hlil_mod.HighLevelILInstruction = type("HighLevelILInstruction", (), {})
    bn_mock.highlevelil = hlil_mod

    # lowlevelil sub-module
    llil_mod = MagicMock()
    llil_mod.LowLevelILAdd = type("LowLevelILAdd", (), {})
    llil_mod.LowLevelILConst = type("LowLevelILConst", (), {})
    llil_mod.LowLevelILConstPtr = type("LowLevelILConstPtr", (), {})
    llil_mod.LowLevelILLoad = type("LowLevelILLoad", (), {})
    llil_mod.LowLevelILLsl = type("LowLevelILLsl", (), {})
    llil_mod.LowLevelILMul = type("LowLevelILMul", (), {})
    llil_mod.LowLevelILPop = type("LowLevelILPop", (), {})
    llil_mod.LowLevelILPush = type("LowLevelILPush", (), {})
    llil_mod.LowLevelILReg = type("LowLevelILReg", (), {})
    llil_mod.LowLevelILStore = type("LowLevelILStore", (), {})
    llil_mod.LowLevelILSub = type("LowLevelILSub", (), {})
    bn_mock.lowlevelil = llil_mod

    # mediumlevelil sub-module
    mlil_mod = MagicMock()
    mlil_mod.MediumLevelILConst = type("MediumLevelILConst", (), {})
    mlil_mod.MediumLevelILConstPtr = type("MediumLevelILConstPtr", (), {})
    bn_mock.mediumlevelil = mlil_mod

    sys.modules["binaryninja"] = bn_mock
    sys.modules["binaryninja.enums"] = enums_mod
    sys.modules["binaryninja.lowlevelil"] = llil_mod
    sys.modules["binaryninja.highlevelil"] = hlil_mod
    sys.modules["binaryninja.mediumlevelil"] = mlil_mod

    return bn_mock


# ============================================================================
# Mock Factories
# ============================================================================

class MockToken:
    """Mock for instruction text tokens."""
    def __init__(self, text, token_type=None):
        self.text = text
        if token_type is None:
            self.type = InstructionTextTokenType.TextToken
        else:
            self.type = token_type

    def __str__(self):
        return self.text


class MockDisassemblyLine:
    """Mock for a disassembly text line."""
    def __init__(self, tokens=None):
        self.tokens = tokens or []

    def __str__(self):
        return "".join(t.text for t in self.tokens)


class MockEdge:
    """Mock for a basic block edge."""
    def __init__(self, source=None, target=None, edge_type=None):
        self.source = source
        self.target = target
        self.type = edge_type


class MockBasicBlock:
    """Mock for a basic block."""
    def __init__(
        self,
        start=0,
        end=0,
        disassembly_text=None,
        outgoing_edges=None,
        incoming_edges=None,
        dominators=None,
        post_dominators=None,
        dominance_frontier=None,
        dominator_tree_children=None,
        instruction_count=None,
    ):
        self.start = start
        self.end = end
        self.disassembly_text = disassembly_text or []
        self.outgoing_edges = outgoing_edges or []
        self.incoming_edges = incoming_edges or []
        self.dominators = dominators if dominators is not None else [self]
        self.post_dominators = post_dominators if post_dominators is not None else [self]
        self.dominance_frontier = dominance_frontier if dominance_frontier is not None else set()
        self.dominator_tree_children = dominator_tree_children or []
        self.instruction_count = instruction_count if instruction_count is not None else len(self.disassembly_text)

    def __iter__(self):
        return iter(self.disassembly_text)


class MockFunction:
    """Mock for a Binary Ninja function."""
    def __init__(
        self,
        name="sub_1000",
        start=0x1000,
        basic_blocks=None,
        instructions=None,
        hlil=None,
        llil=None,
        mlil=None,
        symbol=None,
        is_thunk=False,
        stack_adjustment=0,
        call_sites=None,
        caller_sites=None,
        low_level_il=None,
    ):
        self.name = name
        self.start = start
        self.basic_blocks = basic_blocks or []
        self._instructions = instructions or []
        self.hlil = hlil
        self.llil = llil
        self.mlil = mlil
        self.symbol = symbol
        self.is_thunk = is_thunk
        self.stack_adjustment = stack_adjustment
        self.call_sites = call_sites or []
        self.caller_sites = caller_sites or []
        self.low_level_il = low_level_il

    @property
    def instructions(self):
        return iter(self._instructions)

    def get_basic_block_at(self, addr):
        for bb in self.basic_blocks:
            if bb.start <= addr < bb.end or bb.start == addr:
                return bb
        return self.basic_blocks[0] if self.basic_blocks else None

    def get_regs_read_by(self, addr, arch):
        return []

    def get_regs_written_by(self, addr, arch):
        return []

    def __str__(self):
        return f"uint64_t {self.name}()"


class MockBinaryView:
    """Mock for a Binary Ninja binary view."""
    def __init__(
        self,
        functions=None,
        strings=None,
        arch=None,
    ):
        self.functions = functions or []
        self.strings = strings or []
        self.arch = arch

    def get_segment_at(self, addr):
        return None

    def get_section_at(self, addr):
        return None

    def get_symbol_at(self, addr):
        return None

    def get_functions_at(self, addr):
        return []

    def get_string_at(self, addr):
        return None

    def get_data_var_at(self, addr):
        return None


class MockSymbol:
    """Mock for a Binary Ninja symbol."""
    def __init__(self, symbol_type=None, name="unknown"):
        self.type = symbol_type if symbol_type is not None else SymbolType.FunctionSymbol
        self.name = name
        self.full_name = name


class MockILInstruction:
    """Mock for an IL instruction (LLIL/HLIL)."""
    def __init__(self, operation, operands=None, address=0):
        self.operation = operation
        self.operands = operands or []
        self.address = address


class MockStringEntry:
    """Mock for a Binary Ninja string reference."""
    def __init__(self, value, raw=None, start=0, length=0, string_type=None):
        self.value = value
        self.raw = raw if raw is not None else value.encode("utf-8") if isinstance(value, str) else value
        self.start = start
        self.length = length if length else len(self.raw)
        self.type = string_type or MockStringType("Utf8String")


class MockStringType:
    """Mock for string type."""
    def __init__(self, name="Utf8String"):
        self.name = name