Wai-Chung Kwan

24 papers A* 1B 1Journal 14Unranked 8
YearRankTypeTitle / Venue / Authors
2026 conf
EACL (Findings)
Xiaotang Du, Giwon Hong, Wai-Chung Kwan, Rohit Saxena, Ivan Titov, Pasquale Minervini, Emily Allaway
2026 J jnl
CoRR
Xiaotang Du, Giwon Hong, Wai-Chung Kwan, Rohit Saxena, Ivan Titov, Pasquale Minervini, Emily Allaway
2026 J jnl
CoRR
Farooq Ahmad Wani, Alessandro Suglia, Rohit Saxena, Aryo Pradipta Gema, Wai-Chung Kwan, Fazl Barez, Maria Sofia Bucarelli, Fabrizio Silvestri, Pasquale Minervini
2025 J jnl
CoRR
Wai-Chung Kwan, Joshua Ong Jun Leang, Pavlos Vougiouklis, Jeff Z. Pan, Marco Valentino, Pasquale Minervini
2024 conf
LREC/COLING
Wai-Chung Kwan, Huimin Wang, Hongru Wang, Zezhong Wang, Bin Liang, Xian Wu, Yefeng Zheng, Kam-Fai Wong
2024 J jnl
Comput. Speech Lang.
Hongru Wang, Wai-Chung Kwan, Min Li, Zimo Zhou, Kam-Fai Wong
2024 conf
ACL (1)
Wai-Chung Kwan, Xingshan Zeng, Yufei Wang, Yusen Sun, Liangyou Li, Yuxin Jiang, Lifeng Shang, Qun Liu, Kam-Fai Wong
2024 A* conf
EMNLP
Wai-Chung Kwan, Xingshan Zeng, Yuxin Jiang, Yufei Wang, Liangyou Li, Lifeng Shang, Xin Jiang, Qun Liu, Kam-Fai Wong
2024 J jnl
CoRR
Wai-Chung Kwan, Xingshan Zeng, Yuxin Jiang, Yufei Wang, Liangyou Li, Lifeng Shang, Xin Jiang, Qun Liu, Kam-Fai Wong
2023 J jnl
Int. J. Autom. Comput.
Wai-Chung Kwan, Hongru Wang, Huimin Wang, Kam-Fai Wong
2023 conf
ACL (1)
Huimin Wang, Wai-Chung Kwan, Kam-Fai Wong, Yefeng Zheng
2023 J jnl
CoRR
Huimin Wang, Wai-Chung Kwan, Kam-Fai Wong, Yefeng Zheng
2023 B conf
SIGDIAL
Huimin Wang, Wai-Chung Kwan, Kam-Fai Wong
2023 J jnl
CoRR
Huimin Wang, Wai-Chung Kwan, Kam-Fai Wong
2023 J jnl
CoRR
Wai-Chung Kwan, Huimin Wang, Hongru Wang, Zezhong Wang, Xian Wu, Yefeng Zheng, Kam-Fai Wong
2023 J jnl
CoRR
Hongru Wang, Minda Hu, Yang Deng, Rui Wang, Fei Mi, Weichao Wang, Yasheng Wang, Wai-Chung Kwan, Irwin King, Kam-Fai Wong
2023 conf
EMNLP (Findings)
Hongru Wang, Minda Hu, Yang Deng, Rui Wang, Fei Mi, Weichao Wang, Yasheng Wang, Wai-Chung Kwan, Irwin King, Kam-Fai Wong
2023 J jnl
CoRR
Wai-Chung Kwan, Xingshan Zeng, Yufei Wang, Yusen Sun, Liangyou Li, Lifeng Shang, Qun Liu, Kam-Fai Wong
2023 conf
EMNLP (Findings)
Zezhong Wang, Luyao Ye, Hongru Wang, Wai-Chung Kwan, David Ho, Kam-Fai Wong
2023 conf
ACL (Findings)
Liang Chen, Hongru Wang, Yang Deng, Wai-Chung Kwan, Zezhong Wang, Kam-Fai Wong
2023 J jnl
CoRR
Liang Chen, Hongru Wang, Yang Deng, Wai-Chung Kwan, Zezhong Wang, Kam-Fai Wong
2022 J jnl
CoRR
Wai-Chung Kwan, Hongru Wang, Huimin Wang, Kam-Fai Wong
2022 conf
ICNLSP
Zezhong Wang, Hongru Wang, Wai-Chung Kwan, Kam-Fai Wong
2021 J jnl
CoRR
Zezhong Wang, Hongru Wang, Wai-Chung Kwan, Jia Zhu, Gabriel Pui Cheong Fung, Kam-Fai Wong
redb/extractors/decompiler/bninja/analysis/low_level_normalization.py
← Index redb/extractors/decompiler/bninja/analysis/low_level_normalization.py python
from binaryninja import (
    ILRegister, ILRegisterStack, ILFlag,
    ILIntrinsic, ILSemanticFlagGroup,
)

class LowLevelNormalization:
    def __init__(self):
        return

    def _collect_ops(self, il, ops):
        if il is None:
            return
        ops.append(int(il.operation))
        operands = getattr(il, "operands", None)
        if not operands:
            return
        for op in operands:
            if hasattr(op, "operation"):
                self._collect_ops(op, ops)
            elif isinstance(op, (list, tuple)):
                for sub in op:
                    if hasattr(sub, "operation"):
                        self._collect_ops(sub, ops)

    def normalize_instruction_all_levels(self, instr_il):
        ops = []
        self._collect_ops(instr_il, ops)

        return ops

    def _leaf_type(self, val):
        if isinstance(val, ILRegister):
            return "REG"
        if isinstance(val, ILRegisterStack):
            return "REG_STACK"
        if isinstance(val, ILFlag):
            return "FLAG"
        if isinstance(val, ILSemanticFlagGroup):
            return "FLAG_GROUP"
        if isinstance(val, ILIntrinsic):
            return "INTRINSIC"
        if isinstance(val, bool):
            return "BOOL"
        if isinstance(val, int):
            return "CONST"
        return type(val).__name__.upper()

    def _collect(self, il, out):
        if il is None:
            return
        out.append(int(il.operation))
        operands = getattr(il, "operands", None)
        if not operands:
            return
        for op in operands:
            if hasattr(op, "operation"):
                self._collect(op, out)
            elif isinstance(op, (list, tuple)):
                for sub in op:
                    if hasattr(sub, "operation"):
                        self._collect(sub, out)
                    else:
                        out.append(self._leaf_type(sub))
            else:
                out.append(self._leaf_type(op))

    def normalize_instr_with_operands(self, instr_il):
        ops = []
        self._collect(instr_il, ops)
        return ops