Kanako Harada

94 papers A* 13A 4Journal 48Unranked 29
YearRankTypeTitle / Venue / Authors
2026 J jnl
IEEE Robotics Autom. Lett.
Enduo Zhao, Xiaofeng Lin, Yifan Wang, Kanako Harada
2025 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Saúl Alexis Heredia Pérez, Tze Lun Lok, Enduo Zhao, Kanako Harada
2025 J jnl
CoRR
Andrew I. Cooper, Patrick Courtney, Kourosh Darvish, Moritz Eckhoff, Hatem Fakhruldeen, Andrea Gabrielli, Animesh Garg, Sami Haddadin, Kanako Harada, Jason Hein, Maria Hübner, Dennis Knobbe, Gabriella Pizzuto, Florian Shkurti, Ruja Shrestha, Kerstin Thurow, Rafael Vescovi, Birgit Vogel-Heuser, Ádám Wolf, Naruki Yoshikawa, Yan Zeng, Zhengxue Zhou, Henning Zwirnmann
2025 J jnl
Sci. Robotics
Andrew I. Cooper, Patrick Courtney, Kourosh Darvish, Moritz Eckhoff, Hatem Fakhruldeen, Andrea Gabrielli, Animesh Garg, Sami Haddadin, Kanako Harada, Jason Hein, Maria Hübner, Dennis Knobbe, Gabriella Pizzuto, Florian Shkurti, Ruja Shrestha, Kerstin Thurow, Rafael Vescovi, Birgit Vogel-Heuser, Ádám Wolf, Naruki Yoshikawa, Yan Zeng, Zhengxue Zhou, Henning Zwirnmann
2025 J jnl
CoRR
Enduo Zhao, Xiaofeng Lin, Yifan Wang, Kanako Harada
2025 J jnl
IEEE Trans Autom. Sci. Eng.
Enduo Zhao, Murilo M. Marinho, Kanako Harada
2025 conf
VR Workshops
Saúl Alexis Heredia Pérez, Hung-Ching Lin, Kanako Harada
2025 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Yifan Wang, Saúl Alexis Heredia Pérez, Kanako Harada
2025 J jnl
CoRR
Xiaofeng Lin, Enduo Zhao, Saúl Alexis Heredia Pérez, Kanako Harada
2025 J jnl
IEEE Robotics Autom. Lett.
Xiaofeng Lin, Enduo Zhao, Saúl Alexis Heredia Pérez, Kanako Harada
2024 J jnl
CoRR
Xiaofeng Lin, Saúl Alexis Heredia Pérez, Kanako Harada
2024 J jnl
IEEE Robotics Autom. Mag.
Murilo Marques Marinho, Juan José Quiroz-Omaña, Kanako Harada
2024 J jnl
Adv. Robotics
Xiaofeng Lin, Saúl Alexis Heredia Pérez, Kanako Harada
2024 A* conf
ICRA
Hung-Ching Lin, Murilo Marques Marinho, Kanako Harada
2024 J jnl
CoRR
Enduo Zhao, Murilo M. Marinho, Kanako Harada
2023 J jnl
Adv. Robotics
D. S. V. Bandara, Ryu Nakadate, Murilo M. Marinho, Kanako Harada, Mamoru Mitsuishi, Jumpei Arata
2023 J jnl
CoRR
Hung-Ching Lin, Murilo Marques Marinho, Kanako Harada
2023 A conf
IROS
Enduo Zhao, Murilo M. Marinho, Kanako Harada
2023 J jnl
CoRR
Enduo Zhao, Murilo M. Marinho, Kanako Harada
2023 J jnl
Comput. Methods Programs Biomed.
Arnaud Huaulmé, Kanako Harada, Quang-Minh Nguyen, Bogyu Park, Seungbum Hong, Min-Kook Choi, Michael Peven, Yunshuang Li, Yonghao Long, Qi Dou, Satyadwyoom Kumar, Seenivasan Lalithkumar, Hongliang Ren, Hiroki Matsuzaki, Yuto Ishikawa, Yuriko Harai, Satoshi Kondo, Manoru Mitsuishi, Pierre Jannin
2023 A* conf
ICRA
Yuki Koyama, Murilo M. Marinho, Kanako Harada
2023 J jnl
CoRR
Yuki Koyama, Murilo Marques Marinho, Kanako Harada
2023 A* conf
CVPR
Matthias Eisenmann, Annika Reinke, Vivienn Weru, Minu Dietlinde Tizabi, Fabian Isensee, Tim J. Adler, Sharib Ali, Vincent Andrearczyk, Marc Aubreville, Ujjwal Baid, Spyridon Bakas, Niranjan Balu, Sophia Bano, Jorge Bernal, Sebastian Bodenstedt, Alessandro Casella, Veronika Cheplygina, Marie Daum, Marleen de Bruijne, Adrien Depeursinge, Reuben Dorent, Jan Egger, David G. Ellis, Sandy Engelhardt, Melanie Ganz, Noha M. Ghatwary, Gabriel Girard, Patrick Godau, Anubha Gupta, Lasse Hansen, Kanako Harada, Mattias P. Heinrich, Nicholas Heller, Alessa Hering, Arnaud Huaulmé, Pierre Jannin, A. Emre Kavur, Oldrich Kodym, Michal Kozubek, Jianning Li, Hongwei Bran Li, Jun Ma, Carlos Martín-Isla, Bjoern H. Menze, J. Alison Noble, Valentin Oreiller, Nicolas Padoy, Sarthak Pati, Kelly Payette, Tim Rädsch, Jonathan Rafael-Patino, Vivek Singh Bawa, Stefanie Speidel, Carole H. Sudre, Kimberlin M. H. van Wijnen, Martin Wagner, D. Wei, Amine Yamlahi, Moi Hoon Yap, C. Yuan, Maximilian Zenk, A. Zia, David Zimmerer, Dogu Baran Aydogan, Binod Bhattarai, Louise Bloch, Raphael Brüngel, J. Cho, C. Choi, Q. Dou, Ivan Ezhov, Christoph M. Friedrich, C. Fuller, Rebati Raman Gaire, Adrian Galdran, Álvaro García-Faura, Maria Grammatikopoulou, S. Hong, Mostafa Jahanifar, I. Jang, Abdolrahim Kadkhodamohammadi, I. Kang, Florian Kofler, S. Kondo, Hugo Jaco Kuijf, M. Li, M. Luu, Tomaz Martincic, Pedro Morais, Mohamed A. Naser, Bruno Oliveira, David Owen, S. Pang, J. Park, S. Park, Szymon Plotka, Élodie Puybareau, Nasir M. Rajpoot, K. Ryu, Numan Saeed, Adam Shephard, Pengcheng Shi, Dejan Stepec, Ronast Subedi, Guillaume Tochon, Helena R. Torres, Hélène Urien, João L. Vilaça, Kareem A. Wahid, H. Wang, J. Wang, L. Wang, X. Wang, Benedikt Wiestler, Marek Wodzinski, F. Xia, J. Xie, Z. Xiong, Sen Yang, Y. Yang, Zixuan Zhao, Klaus H. Maier-Hein, Paul F. Jäger, Annette Kopp-Schneider, Lena Maier-Hein
2023 J jnl
CoRR
Matthias Eisenmann, Annika Reinke, Vivienn Weru, Minu Dietlinde Tizabi, Fabian Isensee, Tim J. Adler, Sharib Ali, Vincent Andrearczyk, Marc Aubreville, Ujjwal Baid, Spyridon Bakas, Niranjan Balu, Sophia Bano, Jorge Bernal, Sebastian Bodenstedt, Alessandro Casella, Veronika Cheplygina, Marie Daum, Marleen de Bruijne, Adrien Depeursinge, Reuben Dorent, Jan Egger, David G. Ellis, Sandy Engelhardt, Melanie Ganz, Noha M. Ghatwary, Gabriel Girard, Patrick Godau, Anubha Gupta, Lasse Hansen, Kanako Harada, Mattias P. Heinrich, Nicholas Heller, Alessa Hering, Arnaud Huaulmé, Pierre Jannin, Ali Emre Kavur, Oldrich Kodym, Michal Kozubek, Jianning Li, Hongwei Bran Li, Jun Ma, Carlos Martín-Isla, Bjoern H. Menze, J. Alison Noble, Valentin Oreiller, Nicolas Padoy, Sarthak Pati, Kelly Payette, Tim Rädsch, et al.
2022 J jnl
CoRR
Murilo Marques Marinho, Juan José Quiroz-Omaña, Kanako Harada
2022 J jnl
CoRR
Arnaud Huaulmé, Kanako Harada, Quang-Minh Nguyen, Bogyu Park, Seungbum Hong, Min-Kook Choi, Michael Peven, Yunshuang Li, Yonghao Long, Qi Dou, Satyadwyoom Kumar, Seenivasan Lalithkumar, Hongliang Ren, Hiroki Matsuzaki, Yuto Ishikawa, Yuriko Harai, Satoshi Kondo, Mamoru Mitsuishi, Pierre Jannin
2022 J jnl
J. Robotics Mechatronics
Kyotaro Horio, Kanako Harada, Jun Muto, Hirofumi Nakatomi, Nobuhito Saito, Akio Morita, Eiju Watanabe, Mamoru Mitsuishi
2022 J jnl
J. Robotics Mechatronics
Kenji Kawashima, Jumpei Arata, Kanako Harada, Kotaro Tadano
2021 J jnl
CoRR
Yuki Koyama, Murilo M. Marinho, Mamoru Mitsuishi, Kanako Harada
2021 A conf
IROS
Masakazu Yoshimura, Murilo M. Marinho, Kanako Harada, Mamoru Mitsuishi
2021 J jnl
CoRR
Masakazu Yoshimura, Murilo Marques Marinho, Kanako Harada, Mamoru Mitsuishi
2021 J jnl
CoRR
Arnaud Huaulmé, Duygu Sarikaya, Kévin Le Mut, Fabien Despinoy, Yonghao Long, Qi Dou, Chin-Boon Chng, Wenjun Lin, Satoshi Kondo, Laura Bravo Sánchez, Pablo Arbeláez, Wolfgang Reiter, Mamoru Mitsuishi, Kanako Harada, Pierre Jannin
2021 J jnl
Comput. Methods Programs Biomed.
Arnaud Huaulmé, Duygu Sarikaya, Kévin Le Mut, Fabien Despinoy, Yonghao Long, Qi Dou, Chin-Boon Chng, Wenjun Lin, Satoshi Kondo, Laura Bravo Sánchez, Pablo Arbeláez, Wolfgang Reiter, Manoru Mitsuishi, Kanako Harada, Pierre Jannin
2021 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Alan Kawarai Lefor, Kanako Harada, Aristotelis Dosis, Mamoru Mitsuishi
2021 J jnl
CoRR
Murilo M. Marinho, Kanako Harada, Kyoichi Deie, Tetsuya Ishimaru, Mamoru Mitsuishi
2020 conf
SII
Seiji Omata, Fumiyuki Araki, Muneyuki Takao, Makoto Aihara, Fumihito Arai, Takumi Kani, Eishun Kohno, Yuichi Murozaki, Kanako Harada, Mamoru Mitsuishi, Koichiro Sugimoto, Takashi Ueta, Kiyohito Totsuka
2020 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Alan Kawarai Lefor, Kanako Harada, Aristotelis Dosis, Mamoru Mitsuishi
2020 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Atsushi Nakazawa, Kanako Harada, Mamoru Mitsuishi, Pierre Jannin
2020 A* conf
ICRA
Masakazu Yoshimura, Murilo M. Marinho, Kanako Harada, Mamoru Mitsuishi
2020 J jnl
CoRR
Masakazu Yoshimura, Murilo M. Marinho, Kanako Harada, Mamoru Mitsuishi
2020 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Saúl Alexis Heredia Pérez, Murilo Marques Marinho, Kanako Harada, Mamoru Mitsuishi
2020 J jnl
IEEE Robotics Autom. Lett.
Murilo M. Marinho, Hisashi Ishida, Kanako Harada, Kyoichi Deie, Mamoru Mitsuishi
2020 conf
SII
Hisashi Ishida, Murilo M. Marinho, Kanako Harada, Jian Gao, Mamoru Mitsuishi
2019 A* conf
ICRA
Murilo M. Marinho, Bruno Vilhena Adorno, Kanako Harada, Kyoichi Deie, Anton Deguet, Peter Kazanzides, Russell H. Taylor, Mamoru Mitsuishi
2019 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Arnaud Huaulmé, Fabien Despinoy, Saúl Alexis Heredia Pérez, Kanako Harada, Mamoru Mitsuishi, Pierre Jannin
2019 A* conf
ICRA
Jumpei Arata, Yosuke Fujisawa, Ryu Nakadate, Kazuo Kiguchi, Kanako Harada, Mamoru Mitsuishi, Makoto Hashizume
2019 J jnl
IEEE Trans. Robotics
Murilo Marques Marinho, Bruno Vilhena Adorno, Kanako Harada, Mamoru Mitsuishi
2019 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Elvis C. S. Chen, Kanako Harada, Raphael Sznitman
2019 conf
CBS
Masakazu Yoshimura, Murilo M. Marinho, Atsushi Nakazawa, Kanako Harada, Mamoru Mitsuishi, Takuya Maekawa, Yasuo Namioka
2019 J jnl
CoRR
Murilo Marques Marinho, Hisashi Ishida, Kanako Harada, Kyoichi Deie, Mamoru Mitsuishi
2018 J jnl
CoRR
Murilo M. Marinho, Bruno Vilhena Adorno, Kanako Harada, Kyoichi Deie, Anton Deguet, Peter Kazanzides, Russell H. Taylor, Mamoru Mitsuishi
2018 A* conf
ICRA
Murilo M. Marinho, Bruno Vilhena Adorno, Kanako Harada, Mamoru Mitsuishi
2018 J jnl
CoRR
Murilo M. Marinho, Bruno Vilhena Adorno, Kanako Harada, Mamoru Mitsuishi
2018 J jnl
CoRR
Murilo M. Marinho, Bruno Vilhena Adorno, Kanako Harada, Mamoru Mitsuishi
2018 conf
MHS
Seiji Omata, Makoto Aihara, Fumihito Arai, Kazuki Ohashi, Kanako Harada, Mamoru Mitsuishi, Koichiro Sugimoto, Takashi Ueta, Kiyoto Totsuka, Fumiyuki Araki, Muneyuki Takao
2018 conf
CBS
Seiji Omata, Mahmoud Gallab, Kanako Harada, Mamoru Mitsuishi, K. Sugimoto, Takashi Ueta, Kiyoto Totsuka, Fumiyuki Araki, M. Takao, Makoto Aihara, Fumihito Arai
2018 conf
MHS
Saúl Alexis Heredia Pérez, Kanako Harada, Mamoru Mitsuishi
2018 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Jumpei Arata, Kazunari Fukami, Susumu Oguri, Shinya Onogi, Tetsuo Ikeda, Ryu Nakadate, Masamichi Sakaguchi, Tomohiko Akahoshi, Kanako Harada, Mamoru Mitsuishi, Makoto Hashizume
2018 conf
MHS
Taisuke Masuda, Kanako Harada, Shun'ya Adachi, Fumihito Arai, Seiji Omata, Akio Morita, Taichi Kin, Nobuhito Saito, Juli Yamashita, Kiyoyuki Chinzei, Akiyuki Hasegawa, Toshio Fukuda
2018 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Arnaud Huaulmé, Kanako Harada, Germain Forestier, Mamoru Mitsuishi, Pierre Jannin
2018 conf
Image-Guided Procedures
Yujun Chen, Murilo M. Marinho, Yusuke Kurose, Atsushi Nakazawa, Kyoichi Deie, Kanako Harada, Mamoru Mitsuishi
2017 conf
MHS
Seiji Omata, Yusei Someya, Shun'ya Adachi, Kanako Harada, Mamoru Mitsuishi, Kiyoto Totsuka, Fumiyuki Araki, Muneyuki Takao, Makoto Aihara, Fumihito Arai
2017 conf
MHS
Yosuke Fujisawa, Kazuo Kiguchi, Kanako Harada, Mamoru Mitsuishi, Makoto Hashizume, Jumpei Arata
2017 conf
SII
Murilo M. Marinho, Kanako Harada, Mamoru Mitsuishi
2017 conf
CBS
Seiji Omata, Yusei Someya, Shun'ya Adachi, Taisuke Masuda, Fumihito Arai, Kanako Harada, Mamoru Mitsuishi, Kiyoto Totsuka, Fumiyuki Araki, Muneyuki Takao, Makoto Aihara
2017 conf
URAI
Yushiro Tomiki, Murilo M. Marinho, Yusuke Kurose, Kanako Harada, Mamoru Mitsuishi
2016 conf
MHS
Murilo M. Marinho, Atsushi Nakazawa, Jun Nakanishi, Tsuyoshi Ueyama, Yasuhisa Hasegawa, Jumpei Arata, Mamoru Mitsuishi, Kanako Harada
2016 conf
BioRob
Peter Plötner, K. Yoshikawa, Kanako Harada, Ko Yamamoto, Naohiko Sugita, Mamoru Mitsuishi
2016 conf
MHS
Saúl Alexis Heredia Pérez, Murilo M. Marinho, T. Ikemoto, Kanako Harada, Mamoru Mitsuishi, Miguel A. Padilla Castañeda, Jorge A. Márquez-Flores
2016 conf
BioRob
Atsushi Nakazawa, Kodai Nanri, Kanako Harada, Shinichi Tanaka, Hiroshi Nukariya, Yusuke Kurose, Naoyuki Shono, Hirohumi Nakatomi, Akio Morita, Eiju Watanabe, Naohiko Sugita, Mamoru Mitsuishi
2016 conf
BioRob
Murilo M. Marinho, Kanako Harada, Naohiko Sugita, Mamoru Mitsuishi
2016 conf
MHS
Yusei Someya, Seiji Omata, Takeshi Hayakawa, Mamoru Mitsuishi, Naohiko Sugita, Kanako Harada, Yasuo Noda, Takashi Ueta, Kiyoto Totsuka, Fumiyuki Araki, Hajime Aihara, Fumihito Arai
2014 conf
EMBC
Tomoya Sakai, Kanako Harada, Shinichi Tanaka, Takashi Ueta, Yasuo Noda, Naohiko Sugita, Mamoru Mitsuishi
2014 conf
MHS
Ippei Kato, Mamoru Mitsuishi, Naohiko Sugita, Kanako Harada, Shinichi Tanaka, Yasuo Noda, Takashi Ueta, Fumihito Arai
2014 conf
EMBC
Takuro Okubo, Kanako Harada, Masahiro Fujii, Shinichi Tanaka, Tetsuya Ishimaru, Tadashi Iwanaka, Hirohumi Nakatomi, Shigeo Sora, Akio Morita, Naohiko Sugita, Mamoru Mitsuishi
2014 conf
BioRob
Masahiro Fujii, Shinya Takazawa, Kanako Harada, Naohiko Sugita, Tetsuya Ishimaru, Tadashi Iwanaka, Mamoru Mitsuishi
2014 A conf
IROS
Shinichi Tanaka, Young Min Baek, Kanako Harada, Naohiko Sugita, Akio Morita, Shigeo Sora, Hirofumi Nakatomi, Nobuhito Saito, Mamoru Mitsuishi
2014 conf
EMBC
Peter Plötner, Kanako Harada, Naohiko Sugita, Mamoru Mitsuishi
2014 A* conf
ICRA
Takayuki Osa, Kanako Harada, Naohiko Sugita, Mamoru Mitsuishi
2013 conf
MHS
Ippei Kato, Mamoru Mitsuishi, Naohiko Sugita, Kanako Harada, Shinichi Tanaka, Yasuo Noda, Takashi Ueta, Fumihito Arai
2013 A conf
IROS
Takayuki Osa, Takuto Haniu, Kanako Harada, Naohiko Sugita, Mamoru Mitsuishi
2012 A* conf
ICRA
Young Min Baek, Shinichi Tanaka, Kanako Harada, Naohiko Sugita, Akio Morita, Shigeo Sora, Ryo Mochizuki, Mamoru Mitsuishi
2011 conf
MHS
Kanako Harada, Sheila Russo, Tommaso Ranzani, Arianna Menciassi, Paolo Dario
2011 conf
EMBC
S. Nakamura, Kanako Harada, Naohiko Sugita, Mamoru Mitsuishi, M. Kaneko
2011 J jnl
Int. J. Comput. Assist. Radiol. Surg.
Kanako Harada, Shin Enosawa, Bo Zhang, Wenji Yuan, Toshio Chiba, Masakatsu G. Fujie
2011 conf
EMBC
Kanako Harada, Y. Minakawa, Young Min Baek, Yasuhide Kozuka, Shigeo Sora, Akio Morita, Naohiko Sugita, Mamoru Mitsuishi
2011 J jnl
CoRR
Serge Kernbach, Oliver Scholz, Kanako Harada, Sergej Popesku, Jens Liedke, Raja Humza, Wenguo Liu, Fabio Caparrelli, Jaouhar Jemai, Jiri Havlik, Eugen Meister, Paul Levi
2010 J jnl
Robotica
Kanako Harada, Denny Oetomo, Ekawahyu Susilo, Arianna Menciassi, David Daney, Jean-Pierre Merlet, Paolo Dario
2009 A* conf
ICRA
Denny Oetomo, David Daney, Kanako Harada, Jean-Pierre Merlet, Arianna Menciassi, Paolo Dario
2009 A* conf
ICRA
Kanako Harada, Ekawahyu Susilo, Arianna Menciassi, Paolo Dario
2007 A* conf
ICRA
Kanako Harada, Bo Zhang, Shin Enosawa, Toshio Chiba, Masakatsu G. Fujie
2006 J jnl
IEEE Trans. Biomed. Eng.
Pietro Valdastri, Kanako Harada, Arianna Menciassi, Lucia Beccai, Cesare Stefanini, Masakatsu G. Fujie, Paolo Dario
2006 J jnl
J. Robotics Mechatronics
Kanako Harada, Kentaro Iwase, Kota Tsubouchi, Kousuke Kishi, Tetsuya Nakamura, Toshio Chiba, Masakatsu G. Fujie
2005 A* conf
ICRA
Kanako Harada, Kota Tsubouchi, Toshio Chiba, Masakatsu G. Fujie
docs/new-code-binja-schema.md
← Index docs/new-code-binja-schema.md markdown
#################################
###### CODE RELATED TABLES ######
#################################

### CREATE FULL REDB DATABASE
def create_decompiled_binja_with_all_tables(client):
    create_phase1_decompiled_binja_tables(client)

#### CREATE FULL TABLES
def create_phase1_decompiled_binja_tables(client):
    create_function_analysis_error_dbtable(client)
    create_binja_decompiled_dbtable(client)
    create_binja_disassembly_dbtable(client)
    create_binja_cfg_dbtable(client)

#################################
### DECOMPILED BINJA INDIVIDUAL TABLES
#################################
def create_function_analysis_error_dbtable(client):
    client.command("""
    CREATE TABLE IF NOT EXISTS function_analysis_errors_binja (
        sha256 FixedString(64),
        function_name Nullable(String) CODEC(ZSTD(3)),
        function_address UInt64,
        error_location LowCardinality(String) CODEC(ZSTD(3)),
        error_message Nullable(String) CODEC(ZSTD(3)),
        error_details Nullable(String) CODEC(ZSTD(3)),
        error_type Nullable(String) CODEC(ZSTD(3)),
        error_hash FixedString(32), -- MD5, To help identify duplicate errors
        status Enum8('new' = 1, 'investigating' = 2, 'fixed' = 3, 'wontfix' = 4) DEFAULT 'new',
        analysis_date DateTime64(3, 'UTC'),
        PRIMARY KEY (sha256, function_address, error_location)
    )
    ENGINE = MergeTree()
    ORDER BY (sha256, function_address, error_location);
    """)

def create_binja_decompiled_dbtable(client):
    # Create decompiled_functions_content table
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_decompiled_functions_content (
        decompiled_function_hash FixedString(64),
        decompiled_function String CODEC(ZSTD(3)),
        decompiled_function_lower String MATERIALIZED lower(decompiled_function) CODEC(ZSTD(3)),
        function_type Enum8('USER'=1, 'LIBRARY'=2, 'THUNK'=3, 'EXTERNAL'=4, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',  -- NOT NULL TODO: remove THUNK and EXTERNAL
        flattened_score Nullable(Float64),
        mba_score Nullable(Float64),
        analysis_date DateTime64(3, 'UTC'),

        INDEX idx_function_content_token lower(decompiled_function) TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
        --- INDEX idx_text_decompiled_function decompiled_function TYPE text(tokenizer = 'splitByNonAlpha', preprocessor = lower(decompiled_function)) GRANULARITY 64,
        INDEX idx_func_hash decompiled_function_hash TYPE bloom_filter GRANULARITY 1,
    ) ENGINE = ReplacingMergeTree(analysis_date)
    PRIMARY KEY decompiled_function_hash -- TODO: remove is redundant
    ORDER BY decompiled_function_hash;
    """)

    # Create decompiled_functions_references table
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_decompiled_functions_references (
        sha256 FixedString(64),
        sha1 FixedString(40),
        md5 FixedString(32),
        decompiled_function_hash FixedString(64),
        disassembled_function_hash Nullable(FixedString(64)),
        decompiled_function_name LowCardinality(String),
        decompiled_function_prototype LowCardinality(String),
        decompiled_function_address UInt64,
        functions_caller Array(String),
        functions_call Array(String),

        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_hash decompiled_function_hash TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_name decompiled_function_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
        INDEX idx_func_addr decompiled_function_address TYPE minmax GRANULARITY 1,
        analysis_date DateTime64(3, 'UTC')
    ) ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY (sha256, decompiled_function_hash);
    """)

def create_binja_disassembly_dbtable(client):
    # Create disassembly_functions_content table
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_disassembled_functions_content (
        -- Content hashes for each normalization level
        disassembled_function_hash FixedString(64),             -- This is the hash of the disassembled function without addresses
        
        -- The actual function content at different normalization levels
        disassembled_function String CODEC(ZSTD(3)),
        disassembled_function_no_addresses String CODEC(ZSTD(3)),

        -- Function 
        function_type Enum8('USER'=1, 'LIBRARY'=2, 'THUNK'=3, 'EXTERNAL'=4, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',  -- NOT NULL TODO: remove THUNK and EXTERNAL

        -- Analysis fields
        instructions_count UInt32,
        instructions_types Array(LowCardinality(String)), -- Types of instructions used
        control_flow_count UInt32,                      -- Number of control flow instructions
        memory_access_pattern Array(LowCardinality(String)),  -- Patterns of memory access
        register_usage Array(LowCardinality(String)),         -- Types of registers used
        data_references_count UInt32,                   -- Number of data references
        opcode_frequency_vector Array(Float32),-- Not computed yet
        api_calls_vector Array(Float32),-- Not computed yet
        minhash_signature Array(UInt64),-- Not computed yet
        max_block_size Nullable(UInt32),
        num_calls Nullable(UInt32),
        stack_size Nullable(Int32),
        instruction_type_ratios Array(Float32), -- Not computed yet
        instruction_embedding Array(Float32), -- Not computed yet
        analysis_date DateTime64(3, 'UTC'),

        -- Indexes for each normalization level
        INDEX idx_disasm_ngram disassembled_function TYPE ngrambf_v1(3, 32768, 3, 0) GRANULARITY 1,
        INDEX idx_function_type function_type TYPE set(10) GRANULARITY 1,
        INDEX idx_instr_count instructions_count TYPE minmax GRANULARITY 4

    ) ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY (disassembled_function_hash);
    """)

    client.command("""
    CREATE TABLE code_binja_disassembled_functions_references
    (
        -- Original fields
        sha256 FixedString(64),
        sha1 FixedString(40),
        md5 FixedString(32),
        disassembled_function_hash FixedString(64),
        decompiled_function_hash Nullable(FixedString(64)),

        disassembled_function_name LowCardinality(String),
        disassembled_function_address UInt64,
        analysis_date DateTime64(3, 'UTC'),
        
        -- New hash fields moved from content table
        ssdeep_disassembly Nullable(String),
        tlsh_disassembly Nullable(FixedString(72)),
        ssdeep_llil Nullable(String),
        tlsh_llil Nullable(FixedString(72)),
        
        -- OPTIMIZED INDEXES for all search patterns
        INDEX idx_func_addr disassembled_function_address TYPE minmax GRANULARITY 1,
        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_disasm tlsh_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_disasm ssdeep_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_llil tlsh_llil TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_norm ssdeep_llil TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_name disassembled_function_name TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 2
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    -- OPTIMIZED ORDER BY: Primary query pattern first, then hash fields for locality
    ORDER BY (sha256, disassembled_function_hash)
    SETTINGS index_granularity = 8192
    """)

def create_binja_llil_dbtable(client):
    # Create llil_functions_content table
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_llil_functions_content (
        -- Content hashes for each normalization level
        llil_function_hash FixedString(64),             -- sha256_llil This is the hash of the disassembled function without addresses

        -- Function 
        function_type Enum8('USER'=1, 'LIBRARY'=2, 'THUNK'=3, 'EXTERNAL'=4, 'UNKNOWN'=5) DEFAULT 'UNKNOWN',  -- NOT NULL TODO: remove THUNK and EXTERNAL

        -- Analysis fields
        instructions_types_llil Array(LowCardinality(String)), -- Types of instructions used
        control_flow_count_llil UInt32,                      -- Number of control flow instructions
        memory_access_pattern_llil Array(LowCardinality(String)),  -- Patterns of memory access
        register_usage_llil Map(LowCardinality(String), Tuple(UInt32, UInt32)),         -- Types of registers used
        total_reg_reads UInt32,
        total_reg_written UInt32,
        data_references_count UInt32,                   -- Number of data references
        max_block_size Nullable(UInt32),
        num_calls Nullable(UInt32),
        stack_size Nullable(Int32),
        body_llil_vector Array(Tuple(UInt32, Array(UInt16))),
        analysis_date DateTime64(3, 'UTC'),

        -- Indexes for each normalization level
        INDEX function_type_idx function_type TYPE set(10) GRANULARITY 1,
        INDEX idx_reg_usage mapKeys(register_usage_llil) TYPE bloom_filter(0.01) GRANULARITY 1

    ) ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY llil_function_hash;
    """)

    client.command("""
    CREATE TABLE code_binja_llil_functions_references
    (
        -- Original fields
        sha256 FixedString(64),
        sha1 FixedString(40),
        md5 FixedString(32),
        llil_function_hash Nullable(FixedString(64)),
        disassembled_function_hash FixedString(64),
        
        -- New hash fields moved from content table
        ssdeep_disassembly Nullable(String),
        tlsh_disassembly Nullable(FixedString(72)),
        ssdeep_llil Nullable(String),
        tlsh_llil Nullable(FixedString(72)),

        analysis_date DateTime64(3, 'UTC'),
        
        -- OPTIMIZED INDEXES for all search patterns
        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_disasm tlsh_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_disasm ssdeep_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_llil tlsh_llil TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_llil ssdeep_llil TYPE bloom_filter GRANULARITY 1,
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    -- OPTIMIZED ORDER BY: Primary query pattern first, then hash fields for locality
    ORDER BY (sha256, function_address)
    SETTINGS index_granularity = 8192
    """)

def create_binja_cfg_dbtable(client):
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_cfg_blocks_content (
        block_instructions_hash FixedString(64), -- PK
        block_size UInt32,
        instructions_count UInt16,
        branch_type Enum8('DIRECT'=1, 'CONDITIONAL'=2, 'CALL'=3, 'RETURN'=4, 'FALLTHROUGH'=5, 'INDIRECT'=6, 'UNKNOWN'=7),
        block_type Enum8('CODE'=1, 'DATA'=2, 'THUNK'=3),
        flags Array(String),
        analysis_date DateTime64(3, 'UTC'),

        -- Indexes for filtering/analysis
        INDEX idx_branch_type branch_type TYPE set(10) GRANULARITY 4,
        INDEX idx_block_type block_type TYPE set(5) GRANULARITY 4,
        INDEX idx_instr_count instructions_count TYPE minmax GRANULARITY 4,
        INDEX idx_block_size block_size TYPE minmax GRANULARITY 4
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY (block_instructions_hash);
    """)
  
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_cfg_blocks_references (
        sha256 FixedString(64),
        sha1 FixedString(40),
        md5 FixedString(32),
        block_instructions_hash FixedString(64),
        disassembled_function_hash FixedString(64),
        
        -- Address information (for CFG traversal and debugging)
        function_address UInt64,
        block_start_address UInt64,
        block_end_address UInt64,
        
        -- CFG structure (addresses refer to block_start_address)
        predecessor_blocks Array(UInt64),
        successor_blocks Array(UInt64),
        depth UInt16,
        position UInt32,
        
        -- Dominator analysis
        dominators Array(UInt16),
        post_dominators Array(UInt16),
        
        analysis_date DateTime64(3, 'UTC'),
        
        -- OPTIMIZED INDEXES based on query patterns
        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_block_hash block_instructions_hash TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_hash disassembled_function_hash TYPE bloom_filter GRANULARITY 1,
        INDEX idx_func_addr function_address TYPE minmax GRANULARITY 1,
        INDEX idx_block_start block_start_address TYPE minmax GRANULARITY 1,
        INDEX idx_depth depth TYPE minmax GRANULARITY 4,
        INDEX idx_position position TYPE minmax GRANULARITY 4
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY (sha256, function_address, block_start_address)
    SETTINGS index_granularity = 8192;
    """)

def create_binja_strings_dbtable(client):
    # 1. Raw table - INSERT target
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_strings_raw (
        sha256 FixedString(64),
        string String CODEC(ZSTD(3)),              -- Decoded UTF-8 string (for searching)
        string_raw String CODEC(ZSTD(3)),          -- Raw bytes from binary (ground truth)
        string_encoding LowCardinality(String),    -- Detected/guessed encoding by binja
        string_offset UInt64,
        string_length UInt32,                      -- Length of decoded string
        string_raw_length UInt32,                  -- Length of raw bytes
        string_entropy Float32
    )
    ENGINE = Null;
    """)
   
    # 3a. Target table for reverse lookup (with indexes)
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_strings_by_binary (
        sha256 FixedString(64),
        string_offset UInt64,
        string String CODEC(ZSTD(3)),
        string_raw String CODEC(ZSTD(3)),
        string_encoding LowCardinality(String),
        string_length UInt32,
        string_raw_length UInt32,
        string_entropy Float32,
        
        INDEX idx_sha256 sha256 TYPE bloom_filter GRANULARITY 1,
        INDEX idx_string_ngram lower(string) TYPE ngrambf_v1(3, 32768, 3, 0) GRANULARITY 1,
        --- INDEX idx_string string TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
        --- INDEX idx_string_raw string_raw TYPE tokenbf_v1(32768, 3, 0) GRANULARITY 1,
        INDEX idx_entropy string_entropy TYPE minmax GRANULARITY 4
    )
    ENGINE = ReplacingMergeTree()
    ORDER BY (sha256, string_offset);
    """)
    
    # 3b. Materialized view -> target table
    client.command("""
    CREATE MATERIALIZED VIEW IF NOT EXISTS code_binja_strings_by_binary_mv
    TO code_binja_strings_by_binary
    AS SELECT
        sha256,
        string_offset,
        string,
        string_raw,
        string_encoding,
        string_length,
        string_raw_length,
        string_entropy
    FROM code_binja_strings_raw;
    """)

    client.command("""
    -- 1. Create the new public-only popularity table
    CREATE TABLE mv_string_popularity_public_table (
        string_xxhash64 UInt64,
        sample_count AggregateFunction(uniq, FixedString(64))
    ) ENGINE = AggregatingMergeTree()
    ORDER BY string_xxhash64;
    """)

    client.command("""
    -- 2. Create the MV for new data going forward
    CREATE MATERIALIZED VIEW mv_string_popularity_public
    TO mv_string_popularity_public_table AS
    SELECT
        xxHash64(s.string) AS string_xxhash64,
        uniqState(s.sha256) AS sample_count
    FROM code_binja_strings_raw s
    INNER JOIN catalog_visibility_lookup_v2 v 
        ON s.sha256 = v.sha256 AND v.visibility_scope = 'public'
    GROUP BY string_xxhash64;
    """)

    # client.command("""
    # INSERT INTO mv_string_popularity_public_table
    # SELECT
    #     xxHash64(s.string) AS string_xxhash64,
    #     uniqState(s.sha256) AS sample_count
    # FROM code_binja_strings_by_binary s
    # INNER JOIN catalog_visibility_lookup_v2 v 
    #     ON s.sha256 = v.sha256 AND v.visibility_scope = 'public'
    # GROUP BY string_xxhash64;
    # """)

def create_binja_function_similarity_metrics_dbtable(client):
    client.command("""
    CREATE TABLE IF NOT EXISTS code_binja_function_similarity_metrics (
        disassembled_function_hash FixedString(64),
        
        -- Complexity metrics
        cyclomatic_complexity Nullable(UInt16),
        
        -- Fuzzy hashes (duplicated from reference tables for performance)
        ssdeep_disassembly Nullable(String),
        tlsh_disassembly Nullable(FixedString(72)),
        ssdeep_llil Nullable(String),
        tlsh_llil Nullable(FixedString(72)),
        
        -- Similarity hashes
        minhash Array(UInt8),
        
        analysis_date DateTime64(3, 'UTC'),
        
        -- Indexes
        INDEX idx_complexity cyclomatic_complexity TYPE minmax GRANULARITY 4,
        INDEX idx_ssdeep_disasm ssdeep_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_disasm tlsh_disassembly TYPE bloom_filter GRANULARITY 1,
        INDEX idx_ssdeep_llil ssdeep_llil TYPE bloom_filter GRANULARITY 1,
        INDEX idx_tlsh_llil tlsh_llil TYPE bloom_filter GRANULARITY 1
    )
    ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY disassembled_function_hash;
    """)

def create_golang_metadata_dbtable(client):
    client.command("""
    CREATE TABLE IF NOT EXISTS redb_golang_metadata (
        sha256 FixedString(64),
        goresym JSON,
        analysis_date DateTime64(3, 'UTC')
    ) ENGINE = ReplacingMergeTree(analysis_date)
    ORDER BY sha256
    """)