Haitao Li

162 papers Journal 157Unranked 5
YearRankTypeTitle / Venue / Authors
2026 J jnl
Neurocomputing
Yalu Li, Haitao Li, Changle Sun, Zhongsheng Hou
2026 J jnl
Appl. Math. Comput.
Aixin Liu, Haitao Li, Lin Wang, Guanrong Chen
2026 J jnl
Inf. Sci.
Hongpeng Li, Haitao Li, Wenrong Li
2026 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Zhipeng Zhang, Leihao Du, Haitao Li, Yang Liu, Zengqiang Chen
2026 J jnl
Int. J. Syst. Sci.
Mengyuan Qin, Haitao Li, Guodong Zhao
2026 J jnl
Neural Networks
Xinrong Yang, Haitao Li
2025 J jnl
Fuzzy Sets Syst.
Changle Sun, Haitao Li, Jun-e Feng
2025 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Yifeng Li, Ying Cheng, Haitao Li, Zhichun Yang, Tingwen Huang
2025 J jnl
J. Frankl. Inst.
Jiayi Xu, Shihua Fu, Xueying Nie, Haitao Li
2025 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Wenrong Li, Haitao Li, Lingling Wu
2025 J jnl
Appl. Math. Comput.
Yuanhua Wang, Ying Wang, Haitao Li, Wenke Zang
2025 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Yalu Li, Haitao Li, Gaoxi Xiao
2025 J jnl
Int. J. Control
Yalu Li, Haitao Li, Gaoxi Xiao
2025 J jnl
IEEE Trans. Comput. Biol. Bioinform.
Xinrong Yang, Haitao Li
2025 J jnl
SIAM J. Control. Optim.
Xinrong Yang, Haitao Li
2025 J jnl
Syst. Control. Lett.
Wenrong Li, Haitao Li
2025 J jnl
Games
Haitao Li, Zhenping Geng, Mengyuan Qin
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Xiaojun Pang, Haitao Li
2024 J jnl
IEEE Trans Autom. Sci. Eng.
Wen-Di Chen, Ben Niu, Huan-Qing Wang, Haitao Li, Ding Wang
2024 J jnl
IEEE Trans Autom. Sci. Eng.
Zihao Shang, Yuqiang Jiang, Ben Niu, Guangdeng Zong, Xudong Zhao, Haitao Li
2024 J jnl
IEEE Trans. Autom. Control.
Haitao Li, Shuling Wang, Wenrong Li
2024 J jnl
Sci. China Inf. Sci.
Yongyi Yan, Penglei Hao, Jumei Yue, Haitao Li, Jun-e Feng
2024 J jnl
Syst. Control. Lett.
Yalu Li, Gaoxi Xiao, Haitao Li
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Guodong Zhao, Xiaofan Ma, Haitao Li
2024 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Wenrong Li, Haitao Li
2024 J jnl
Appl. Math. Comput.
Aixin Liu, Haitao Li, Lin Wang
2024 J jnl
J. Frankl. Inst.
Wenrong Li, Haitao Li, Xinrong Yang
2024 J jnl
Syst. Control. Lett.
Xinrong Yang, Haitao Li
2024 J jnl
Int. J. Control
Xiangshan Kong, Haitao Li, Enguo Gu
2024 J jnl
Inf. Sci.
Yalu Li, Haitao Li
2024 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Wenrong Li, Haitao Li, Xinrong Yang
2024 J jnl
Inf. Sci.
Xinrong Yang, Haitao Li
2024 J jnl
IEEE Trans. Autom. Control.
Haitao Li, Yalu Li, Wenrong Li, Yansheng Liu
2024 J jnl
Syst. Control. Lett.
Haitao Li, Lingling Wu
2023 J jnl
Sci. China Inf. Sci.
Shuling Wang, Haitao Li
2023 J jnl
IEEE Trans. Fuzzy Syst.
Changle Sun, Haitao Li
2023 conf
CDC
Haitao Li, Xinrong Yang, Wenrong Li
2023 J jnl
IEEE Syst. J.
Rui Mu, Airong Wei, Haitao Li, Xianfu Zhang, Yanan Qi
2023 J jnl
IEEE Trans. Fuzzy Syst.
Changle Sun, Haitao Li
2023 J jnl
Int. J. Syst. Sci.
Rui Mu, Airong Wei, Haitao Li, Zi-Ming Wang
2023 J jnl
Syst. Control. Lett.
Wenrong Li, Haitao Li, Xinrong Yang
2023 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Yalu Li, Haitao Li
2023 J jnl
J. Frankl. Inst.
Zhaoqi Liu, Haitao Li
2023 J jnl
J. Frankl. Inst.
Qilong Sun, Haitao Li, Huanbing Gao
2023 J jnl
IEEE Trans. Autom. Control.
Yalu Li, Haitao Li, Gaoxi Xiao
2023 J jnl
Games
Xinrong Yang, Zhenping Geng, Haitao Li
2023 J jnl
IEEE Trans. Syst. Man Cybern. Syst.
Xinrong Yang, Haitao Li
2023 J jnl
Int. J. Syst. Sci.
Xueying Ding, Jianquan Lu, Haitao Li, Yang Liu
2023 J jnl
Inf. Sci.
Xinrong Yang, Haitao Li
2023 J jnl
Autom.
Haitao Li, Xinrong Yang
2023 J jnl
Appl. Math. Comput.
Xinrong Yang, Qilong Sun, Haitao Li, Xiangshan Kong
2023 J jnl
IEEE Trans. Autom. Control.
Xinrong Yang, Haitao Li
2023 J jnl
Int. J. Syst. Sci.
Changle Sun, Haitao Li
2023 J jnl
Sci. China Inf. Sci.
Yongyi Yan, Daizhan Cheng, Jun-e Feng, Haitao Li, Jumei Yue
2023 J jnl
IEEE Trans. Cybern.
Qi Chen, Haitao Li, Xinrong Yang
2022 J jnl
Int. J. Control
Xinrong Yang, Haitao Li
2022 J jnl
IEEE Trans. Control. Netw. Syst.
Xiaodong Lu, Haitao Li
2022 J jnl
Int. J. Control
Xiaodong Lu, Haitao Li
2022 J jnl
Int. J. Syst. Sci.
Xiangshan Kong, Haitao Li
2022 J jnl
J. Frankl. Inst.
Aixin Liu, Haitao Li
2022 J jnl
Int. J. Syst. Sci.
Wenhui Dou, Guodong Zhao, Haitao Li, Qi Chen
2022 J jnl
J. Syst. Sci. Complex.
Aixin Liu, Haitao Li, Ping Li, Xinrong Yang
2022 J jnl
Syst. Control. Lett.
Xinrong Yang, Haitao Li
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Tao Sun, Xiang Wu, Shengli Du, Haitao Li
2022 J jnl
IEEE Trans. Cybern.
Xueying Ding, Haitao Li, Jianquan Lu, Shuling Wang
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Yuanhua Wang, Haitao Li
2022 J jnl
Fuzzy Sets Syst.
Changle Sun, Haitao Li
2022 J jnl
Sci. China Inf. Sci.
Xiaodong Lu, Haitao Li, Xianfu Zhang
2022 J jnl
IEEE Trans. Control. Netw. Syst.
Shuling Wang, Haitao Li
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Qi Chen, Haitao Li
2022 J jnl
J. Frankl. Inst.
Xiangshan Kong, Haitao Li, Xiaodong Lu
2022 J jnl
Int. J. Control
Xueying Ding, Haitao Li
2022 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Xueying Ding, Jianquan Lu, Haitao Li
2021 J jnl
IEEE Trans. Autom. Control.
Xiaodong Lu, Haitao Li
2021 J jnl
Appl. Math. Comput.
Yalu Li, Haitao Li, YuanYuan Li
2021 J jnl
Appl. Math. Comput.
Yansheng Liu, Mengjin Song, Haitao Li, Yalu Li, Wenying Hou
2021 J jnl
IEEE Access
Wenrong Li, Wenhui Dou, Xiangshan Kong, Haitao Li
2021 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Shuling Wang, Haitao Li
2021 conf
ICCAIS
Qilong Sun, Aixin Liu, Haitao Li
2021 J jnl
J. Control. Decis.
Xiaodong Lu, Haitao Li
2021 J jnl
J. Frankl. Inst.
Rui Mu, Airong Wei, Haitao Li, Lu Yue
2021 J jnl
Syst. Control. Lett.
Yuna Liu, Haitao Li
2021 J jnl
IEEE Control. Syst. Lett.
Shuling Wang, Haitao Li
2021 J jnl
Int. J. Control
Xueying Ding, Haitao Li
2021 J jnl
IEEE Trans. Cybern.
Haitao Li, Xinrong Yang, Shuling Wang
2021 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Xiaodong Lu, Haitao Li
2021 J jnl
IEEE Trans. Autom. Control.
Haitao Li, Xinrong Yang, Shuling Wang
2021 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Aixin Liu, Haitao Li
2021 J jnl
IEEE Trans. Autom. Control.
Haitao Li, Yuna Liu, Shuling Wang, Ben Niu
2021 J jnl
Sci. China Inf. Sci.
Yating Zheng, Haitao Li, Jun-e Feng
2020 J jnl
IEEE Trans. Circuits Syst.
Xiaodong Lu, Haitao Li
2020 J jnl
Neural Process. Lett.
Xiaodong Lu, Haitao Li
2020 J jnl
J. Frankl. Inst.
Shuling Wang, Haitao Li, Yalu Li, Weiwei Sun
2020 J jnl
IEEE Trans. Circuits Syst.
Yalu Li, Haitao Li, Shuling Wang
2020 J jnl
IEEE Access
Jing Wang, Yansheng Liu, Haitao Li
2020 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Xueying Ding, Haitao Li
2020 J jnl
J. Frankl. Inst.
Xinrong Yang, Haitao Li
2020 J jnl
Math. Comput. Simul.
Xiaodong Li, Haitao Li, Yalu Li, Xinrong Yang
2020 J jnl
IEEE Access
Yuna Liu, Xiangshan Kong, Shuling Wang, Xiaojuan Yang, Haitao Li
2020 J jnl
IEEE Trans. Cybern.
Ben Niu, Yan-Jun Liu, Wanlu Zhou, Haitao Li, Peiyong Duan, Junqing Li
2020 J jnl
Frontiers Inf. Technol. Electron. Eng.
Xiang-shan Kong, Shuling Wang, Haitao Li, Fuad E. Alsaadi
2020 J jnl
Sci. China Inf. Sci.
Aixin Liu, Haitao Li
2020 J jnl
Syst. Control. Lett.
Haitao Li, Wenhui Dou
2020 J jnl
Neurocomputing
Yalu Li, Haitao Li, Guodong Zhao
2020 J jnl
SIAM J. Control. Optim.
Haitao Li, Shuling Wang, Xiaodong Li, Guodong Zhao
2020 J jnl
J. Frankl. Inst.
Guodong Zhao, Haitao Li
2020 J jnl
Autom.
Yalu Li, Haitao Li, Xueying Ding
2020 J jnl
Sci. China Inf. Sci.
Shuang Liang, Haitao Li, Shuling Wang
2020 conf
ICCA
Yuna Liu, Shuling Wang, Haitao Li
2019 J jnl
SIAM J. Control. Optim.
Haitao Li, Xueying Ding
2019 J jnl
J. Comput. Appl. Math.
Haitao Li, Yating Zheng, Fuad E. Alsaadi
2019 J jnl
J. Frankl. Inst.
Shuling Wang, Haitao Li
2019 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Yalu Li, Haitao Li, Shuling Wang
2019 J jnl
Appl. Math. Comput.
Haitao Li, Xiaojing Xu, Xueying Ding
2019 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Xiaodong Li, Haitao Li, Guodong Zhao
2019 J jnl
IEEE Trans. Cybern.
Yalu Li, Haitao Li, Xueying Ding, Guodong Zhao
2019 conf
ASCC
Biao Wang, Jun-e Feng, Haitao Li
2019 J jnl
IEEE Access
Xueying Ding, Haitao Li, Xiaodong Li, Weiwei Sun
2018 J jnl
IEEE CAA J. Autom. Sinica
Guodong Zhao, Yuzhen Wang, Haitao Li
2018 J jnl
Sci. China Inf. Sci.
Haitao Li, Guodong Zhao, Min Meng, Jun-e Feng
2018 J jnl
Dyn. Games Appl.
Haitao Li, Xueying Ding, Qiqi Yang, Yingrui Zhou
2018 J jnl
J. Comput. Appl. Math.
Yansheng Liu, Yating Zheng, Haitao Li, Fuad E. Alsaadi, Bashir Ahmad
2018 J jnl
Autom.
Yalu Li, Haitao Li, Weiwei Sun
2018 J jnl
Circuits Syst. Signal Process.
Shihua Fu, Guodong Zhao, Haitao Li, Ahmed Alsaedi, Fuad E. Alsaadi
2018 J jnl
Int. J. Syst. Sci.
Guodong Zhao, Haitao Li, Weiwei Sun, Fuad E. Alsaadi
2018 J jnl
Int. J. Control
Shihua Fu, Haitao Li, Guodong Zhao
2018 J jnl
Entropy
Yalu Li, Xueying Ding, Haitao Li
2018 J jnl
J. Frankl. Inst.
Xueying Ding, Haitao Li, Shuling Wang
2018 J jnl
Sci. China Inf. Sci.
Haitao Li, Tielong Shen, Jianquan Lu
2018 J jnl
J. Frankl. Inst.
Yalu Li, Haitao Li, Peiyong Duan
2017 J jnl
Autom.
Haitao Li, Yuzhen Wang
2017 J jnl
SIAM J. Control. Optim.
Haitao Li, Yuzhen Wang
2017 J jnl
IEEE Trans. Autom. Control.
Haitao Li, Lihua Xie, Yuzhen Wang
2017 conf
CASE
Xueying Ding, Shuling Wang, Haitao Li
2017 J jnl
Sci. China Inf. Sci.
Haitao Li, Yuzhen Wang, Peilian Guo
2017 J jnl
J. Frankl. Inst.
Haitao Li, Pingping Song, Qiqi Yang
2017 J jnl
Int. J. Syst. Sci.
Haitao Li, Yuzhen Wang
2017 J jnl
J. Frankl. Inst.
Yating Zheng, Haitao Li, Xueying Ding, Yansheng Liu
2017 J jnl
Appl. Math. Comput.
Xueying Ding, Haitao Li, Qiqi Yang, Yingrui Zhou, Ahmed Alsaedi, Fuad E. Alsaadi
2016 J jnl
Appl. Math. Comput.
Guodong Zhao, Yuzhen Wang, Haitao Li
2016 J jnl
J. Frankl. Inst.
Guodong Zhao, Yuzhen Wang, Haitao Li
2016 J jnl
Autom.
Haitao Li, Lihua Xie, Yuzhen Wang
2016 J jnl
Sci. China Inf. Sci.
Peilian Guo, Yuzhen Wang, Haitao Li
2016 J jnl
Inf. Sci.
Haitao Li, Yuzhen Wang, Peilian Guo
2015 J jnl
SIAM J. Control. Optim.
Haitao Li, Yuzhen Wang
2015 J jnl
IEEE Trans. Autom. Control.
Haitao Li, Yuzhen Wang
2015 J jnl
Autom.
Haitao Li, Yuzhen Wang, Lihua Xie
2014 J jnl
Syst. Control. Lett.
Haitao Li, Yuzhen Wang, Lihua Xie, Daizhan Cheng
2014 J jnl
J. Syst. Sci. Complex.
Haitao Li, Yuzhen Wang, Zhenbin Liu
2014 J jnl
IEEE Trans. Autom. Control.
Haitao Li, Yuzhen Wang, Zhenbin Liu
2014 J jnl
Sci. China Inf. Sci.
Zhenbin Liu, Yuzhen Wang, Haitao Li
2013 J jnl
IEEE Trans. Fuzzy Syst.
Haitao Li, Yuzhen Wang
2013 J jnl
Autom.
Peilian Guo, Yuzhen Wang, Haitao Li
2013 J jnl
Neural Networks
Haitao Li, Yuzhen Wang
2013 J jnl
Autom.
Haitao Li, Yuzhen Wang
2013 J jnl
Syst. Control. Lett.
Haitao Li, Yuzhen Wang, Zhenbin Liu
2012 J jnl
Autom.
Haitao Li, Yuzhen Wang
2012 J jnl
Appl. Math. Lett.
Haitao Li, Yuzhen Wang, Zhenbin Liu
2012 J jnl
Autom.
Haitao Li, Yuzhen Wang
2012 J jnl
Int. J. Math. Math. Sci.
Haitao Li, Yansheng Liu
2011 J jnl
Comput. Math. Appl.
Haitao Li, Yansheng Liu
2011 J jnl
Appl. Math. Lett.
Haitao Li, Yansheng Liu
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