Naoko Tosa

92 papers A* 4B 3C 22Journal 9Unranked 52
YearRankTypeTitle / Venue / Authors
2025 conf
HCI (36)
Ryohei Nakatsu, Naoko Tosa, Go Kazawa, Yasuyuki Uraoka, Akane Kitagawa, Koichi Murata, Tatsuya Munaka, Yoshiyuki Ueda, Masafumi Furuta, Michio Nomura
2025 conf
HCI (36)
Ryohei Nakatsu, Go Kazawa, Shun Kanai, Kazuyoshi Kitabayashi, Hirotaka Kawata, Manae Miyata, Naoko Tosa
2024 conf
HCI (34)
Go Kazawa, Naoko Tosa, Ryohei Nakatsu
2024 conf
HCI (34)
Ryohei Nakatsu, Naoko Tosa, Yunian Pang, Satoshi Niiyama, Yasuyuki Uraoka, Akane Kitagawa, Koichi Murata, Tatsuya Munaka, Yoshiyuki Ueda, Masafumi Furuta, Michio Nomura
2024 conf
HCI (58)
Minori Jonoo, Miwa Rokudo, Harumi Kawamura, Naoko Tosa, Ryohei Nakatsu
2023 conf
HCI (43)
Ryohei Nakatsu, Naoko Tosa, Satoru Okagaki, Muneharu Kuwata, Takashi Kusumi
2023 conf
ArtsIT (2)
Ryohei Nakatsu, Naoko Tosa, Yunian Pang, Satoshi Niiyama, Yasuyuki Uraoka, Akane Kitagawa, Koichi Murata, Tatsuya Munaka, Yoshiyuki Ueda, Masafumi Furuta, Michio Nomura
2023 conf
ArtsIT (2)
Go Kazawa, Naoko Tosa, Manae Miyata, Ryohei Nakatsu
2023 conf
HCI (43)
Ryohei Nakatsu, Manae Miyata, Hirotaka Kawata, Naoko Tosa, Takashi Kusumi
2022 C conf
ArtsIT
Mai Cong Hung, Trang Mai Xuan, Akihiro Yamada, Takashi Suzuki, Naoko Tosa, Ryohei Nakatsu
2022 C conf
ICEC
Naoko Tosa, Shigetaka Toba, Yunian Pang, Akihiro Yamada, Takashi Suzuki, Ryohei Nakatsu
2022 conf
HCI (23)
Naoko Tosa, Yunian Pang, Shigetaka Toba, Akihiro Yamada, Takashi Suzuki, Ryohei Nakatsu
2022 C conf
ArtsIT
Yuya Amo, Minori Jonoo, Miwa Rokudo, Harumi Kawamura, Saeko Maruyama, Akiko Kozai, Naoko Tosa, Ryohei Nakatsu
2022 C conf
ICEC
Mai Cong Hung, Trang Mai Xuan, Akihiro Yamada, Naoko Tosa, Ryohei Nakatsu
2022 conf
HCI (23)
Mai Cong Hung, Naoko Tosa, Takashi Kusumi, Ryohei Nakatsu
2022 C conf
ArtsIT
Mai Cong Hung, Naoko Tosa, Takashi Kusumi, Ryohei Nakatsu
2022 J jnl
Int. J. Arts Technol.
Mai Cong Hung, Ryohei Nakatsu, Naoko Tosa, Takashi Kusumi
2021 C conf
ICEC
Ryohei Nakatsu, Naoko Tosa, Hiroyuki Takada, Takashi Kusumi
2021 conf
HCI (33)
Mai Cong Hung, Trang Mai Xuan, Naoko Tosa, Ryohei Nakatsu
2021 J jnl
Entertain. Comput.
Naoko Tosa, Ryohei Nakatsu, Makoto Nagao, Naoko Iwasaki, Tsumiki Wada, Futoshi Saegusa, Tsuyoshi Kishigami, Katsunori Ishikawa, Masato Takaba, Kohei Nishino
2021 conf
HCI (34)
Mai Cong Hung, Trang Mai Xuan, Naoko Tosa, Ryohei Nakatsu
2021 C conf
ArtsIT
Mai Cong Hung, Trang Mai Xuan, Ryohei Nakatsu, Naoko Tosa
2020 C conf
ICEC
Naoko Tosa, Yunian Pang, Ryohei Nakatsu, Akihiro Yamada, Takashi Suzuki, Kazuya Yamamoto
2020 C conf
ICEC
Mai Cong Hung, Ryohei Nakatsu, Naoko Tosa
2020 conf
HCI (35)
Naoko Tosa, Ryohei Nakatsu, Makoto Nagao, Naoko Iwasaki, Tsumiki Wada, Futoshi Saegusa, Tsuyoshi Kishigami, Katsunori Ishikawa, Masato Takaba, Kohei Nishino
2020 C conf
ICEC
Mai Cong Hung, Ryohei Nakatsu, Naoko Tosa, Takashi Kusumi, Koji Koyamada
2020 J jnl
CoRR
Mai Cong Hung, Ryohei Nakatsu, Naoko Tosa, Takashi Kusumi, Koji Koyamada
2020 C conf
ICEC
Ryohei Nakatsu, Naoko Tosa, Takashi Kusumi, Hiroyuki Takada
2018 C conf
ICEC
Ryohei Nakatsu, Ningfeng Yang, Hirokazu Takata, Takashi Nakanishi, Makoto Kitaguchi, Naoko Tosa
2017 conf
Culture Computing
Yunian Pang, Liang Zhao, Ryohei Nakatsu, Naoko Tosa
2017 conf
Culture Computing
Naoko Tosa, Ryohei Nakatsu, Yunian Pang, Liang Zhao
2017 C conf
ICEC
Naoko Tosa, Yunian Pang, Liang Zhao, Ryohei Nakatsu
2017 conf
Culture Computing
Song Tong, Xuefeng Liang, Takatsune Kumada, Sunao Iwaki, Naoko Tosa
2016 book
Naoko Tosa
2015 conf
Culture Computing
Yunian Pang, Naoko Tosa
2015 conf
Culture Computing
Naoko Tosa, Ryohei Nakatsu, Yunian Pang, Kosuke Ogata
2013 conf
Culture and Computing
Naoko Tosa, Jong-Il Park, Ryohei Nakatsu
2013 conf
Culture and Computing
Feng Chen, Tomoji Sawada, Naoko Tosa
2011 conf
Culture and Computing
Naoko Tosa, Ryotaro Konoike, Ryohei Nakatsu, Alistair Swale
2011 conf
Culture and Computing
Kunihisa Ohno, Ryotaro Konoike, Naoko Tosa
2011 conf
Culture and Computing
Naoki Nishikawa, Naoko Tosa
2011 conf
Culture and Computing
Makoto Watanabe, Naoko Tosa, Tatsuya Kawahara
2011 conf
Culture and Computing
Naoko Tosa, Ryotaro Konoike, Ryohei Nakatsu
2011 conf
Culture and Computing
Owen Noel Newton Fernando, Saipang Chan, Naoko Tosa, Ryohei Nakatsu, Adrian David Cheok, Ajith P. Madurapperuma
2010 conf
Culture and Computing
Naoko Tosa
2010 conf
ECS
Naoko Tosa
2010 C conf
ICEC
Naoko Tosa
2010 ed.
ECS
Ryohei Nakatsu, Naoko Tosa, Fazel Naghdy, Kok Wai Wong, Philippe Codognet
2009 C conf
ICEC
Xiaofeng Wu, Naoko Tosa, Ryohei Nakatsu
2008 J jnl
Adv. Hum. Comput. Interact.
Adrian David Cheok, Owen Noel Newton Fernando, Imiyage Janaka Prasad Wijesena, Abd-ur-Rehman Mustafa, Ramkumar Shankar, Anne-Katrin Barthoff, Naoko Tosa, Yongsoon Choi, Mayank Agarwal
2008 conf
ECS
Naoko Tosa, Seigo Matsuoka, Ryohei Nakatsu
2008 C conf
ICEC
Naoko Tosa, Hideto Obara, Michihiko Minoh
2007 conf
Mobile HCI
Adrian David Cheok, Owen Noel Newton Fernando, Imiyage Janaka Prasad Wijesena, Abd-ur-Rehman Mustafa, Anne-Katrin Barthoff, Naoko Tosa
2007 conf
Mobile HCI
Adrian David Cheok, Abd-ur-Rehman Mustafa, Owen Noel Newton Fernando, Anne-Katrin Barthoff, Imiyage Janaka Prasad Wijesena, Naoko Tosa
2007 conf
DIMEA
Owen Noel Newton Fernando, Imiyage Janaka Prasad Wijesena, Adrian David Cheok, Wei Liu, Naoko Tosa
2007 conf
DIMEA
Naoko Tosa, Hideto Obara, Michihiko Minoh, Seigo Matsuoka
2007 conf
Advances in Computer Entertainment Technology
Hideto Obara, Naoko Tosa, Michihiko Minoh
2007 conf
SIGGRAPH Art Gallery
Naoko Tosa
2005 conf
SIGGRAPH Emerging Technologies
Naoko Tosa, Armando Rubio Torroella, Brad Ellis, Seigo Matsuoka, Ryohei Nakatsu
2005 C conf
ICEC
Naoko Tosa, Seigo Matsuoka, Brad Ellis, Hirotada Ueda, Ryohei Nakatsu
2005 conf
SIGGRAPH Electronic Art and Animation Catalog
Seigo Matsuoka, Naoko Tosa
2004 conf
SIGGRAPH Emerging Technologies
Naoko Tosa, Seigo Matsuoka, Henry Thomas
2004 conf
IFIP Congress Topical Sessions
Naoko Tosa
2003 A* conf
ACM Multimedia
Naoko Tosa, Seigo Matsuoka, Koji Miyazaki
2003 B conf
INTERACT
Naoko Tosa, Seigo Matsuoka
2003 C conf
IV
Naoko Tosa, Seigo Matsuoka
2003 conf
International Conference on Virtual Storytelling
Naoko Tosa, Koji Miyazaki, Hideki Murasato, Seigo Matsuoka
2001 J jnl
J. VLSI Signal Process.
Ryohei Nakatsu, Naoko Tosa, Takeshi Ochi
2000 B conf
KES
Ryohei Nakatsu, Naoko Tosa
2000 J jnl
Syst. Comput. Jpn.
Ryohei Nakatsu, Naoko Tosa, Takeshi Ochi, Hideaki Suzuki
2000 J jnl
Knowl. Based Syst.
Ryohei Nakatsu, Joy Nicholson, Naoko Tosa
2000 C conf
IV
Naoko Tosa, Ryohei Nakatsu
1999 J jnl
Artif. Life Robotics
Naoko Tosa
1999 conf
ICMCS, Vol. 2
Ryohei Nakatsu, Alexandre Solomides, Naoko Tosa
1999 B conf
Creativity & Cognition
Ryohei Nakatsu, Joy Nicholson, Naoko Tosa
1999 conf
HCI (2)
Ryohei Nakatsu, Joy Nicholson, Naoko Tosa
1999 A* conf
ACM Multimedia (1)
Ryohei Nakatsu, Joy Nicholson, Naoko Tosa
1999 C conf
MMSP
Ryohei Nakatsu, Joy Nicholson, Naoko Tosa
1999 conf
Eurographics (Short Presentations)
Naoko Tosa, Ryohei Nakatsu
1999 conf
SIGGRAPH Electronic Art and Animation Catalog
Naoko Tosa
1998 J jnl
Digit. Creativity
Naoko Tosa, Ryohei Nakatsu
1998 conf
ICMCS
Ryohei Nakatsu, Naoko Tosa, Takeshi Ochi
1998 A* conf
ACM Multimedia
Ryohei Nakatsu, Naoko Tosa, Takeshi Ochi
1998 conf
Virtual Worlds
Ryohei Nakatsu, Naoko Tosa, Takeshi Ochi
1998 A* conf
ACM Multimedia
Naoko Tosa, Ryohei Nakatsu
1998 conf
ACM Multimedia: Technologies for Interactive Movies
Ryohei Nakatsu, Naoko Tosa, Takeshi Ochi
1998 conf
SIGGRAPH Abstracts and Applications
Naoko Tosa
1998 C conf
MMSP
Ryohei Nakatsu, Naoko Tosa
1998 conf
ACM Multimedia: Technologies for Interactive Movies
Naoko Tosa
1997 C conf
MMSP
Ryohei Nakatsu, Naoko Tosa
1997 conf
ICMCS
Ryohei Nakatsu, Naoko Tosa
1996 conf
ICMCS
Naoko Tosa, Ryohei Nakatsu
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)