Naresh R. Shanbhag

258 papers A* 11A 31B 5C 19Misc 26Journal 112Unranked 52
YearRankTypeTitle / Venue / Authors
2026 J jnl
CoRR
Deming Chen, Jason Cong, Azalia Mirhoseini, Christos Kozyrakis, Subhasish Mitra, Jinjun Xiong, Cliff Young, Anima Anandkumar, Michael L. Littman, Aron Kirschen, Sophia Shao, Serge Leef, Naresh R. Shanbhag, Dejan S. Milojicic, Michael Schulte, Gert Cauwenberghs, Jerry M. Chow, Tri Dao, Kailash Gopalakrishnan, Richard Ho, Hoshik Kim, Kunle Olukotun, David Z. Pan, Mark Ren, Dan Roth, Aarti Singh, Yizhou Sun, Yusu Wang, Yann LeCun, Ruchir Puri
2026 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Shuo Li, Chihun Song, Hyungyo Kim, Nam Sung Kim, Naresh R. Shanbhag
2026 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Mihir Kavishwar, Naresh R. Shanbhag
2025 J jnl
IEEE J. Solid State Circuits
Saion K. Roy, Han-Mo Ou, Mostafa Gamal Ahmed, Peter Deaville, Bonan Zhang, Naveen Verma, Pavan Kumar Hanumolu, Naresh R. Shanbhag
2024 J jnl
IEEE Trans. Signal Process.
Hyungyo Kim, Naresh R. Shanbhag
2024 A conf
ICCAD
Saion K. Roy, Naresh R. Shanbhag
2023 Misc conf
ICASSP
Hyungyo Kim, Naresh R. Shanbhag
2023 conf
ESSCIRC
Saion K. Roy, Han-Mo Ou, Mostafa Gamal Ahmed, Peter Deaville, Bonan Zhang, Naveen Verma, Pavan Kumar Hanumolu, Naresh R. Shanbhag
2023 Misc conf
ICASSP
Han-Mo Ou, Naresh R. Shanbhag
2023 A* conf
ICML
Hassan Dbouk, Naresh R. Shanbhag
2023 J jnl
CoRR
Hassan Dbouk, Naresh R. Shanbhag
2023 A conf
DATE
Wangxin He, Jian Meng, Sujan Kumar Gonugondla, Shimeng Yu, Naresh R. Shanbhag, Jae-sun Seo
2022 A* conf
ICML
Hassan Dbouk, Naresh R. Shanbhag
2022 J jnl
CoRR
Hassan Dbouk, Naresh R. Shanbhag
2022 conf
CICC
Naresh R. Shanbhag, Saion K. Roy
2022 J jnl
CoRR
Klara Nahrstedt, Naresh R. Shanbhag, Vikram S. Adve, Nancy M. Amato, Romit Roy Choudhury, Carl A. Gunter, Nam Sung Kim, Olgica Milenkovic, Sayan Mitra, Lav R. Varshney, Yurii Vlasov, Sarita V. Adve, Rashid Bashir, Andreas Cangellaris, James DiCarlo, Katie Driggs-Campbell, Nick Feamster, Mattia Gazzola, Karrie Karahalios, Sanmi Koyejo, Paul G. Kwiat, Bo Li, Negar Mehr, Ravish Mehra, Andrew Miller, Daniela Rus, Alexander G. Schwing, Anshumali Shrivastava
2022 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Sujan K. Gonugondla, Charbel Sakr, Hassan Dbouk, Naresh R. Shanbhag
2022 C conf
ISCAS
Saion K. Roy, Ameya Patil, Naresh R. Shanbhag
2022 Misc conf
ICASSP
Sujan Kumar Gonugondla, Naresh R. Shanbhag
2021 J jnl
IEEE J. Solid State Circuits
Hassan Dbouk, Sujan K. Gonugondla, Charbel Sakr, Naresh R. Shanbhag
2021 A* conf
NeurIPS
Hassan Dbouk, Naresh R. Shanbhag
2021 J jnl
CoRR
Hassan Dbouk, Naresh R. Shanbhag
2021 A conf
ISSRE
Abdulrahman Mahmoud, Siva Kumar Sastry Hari, Christopher W. Fletcher, Sarita V. Adve, Charbel Sakr, Naresh R. Shanbhag, Pavlo Molchanov, Michael B. Sullivan, Timothy Tsai, Stephen W. Keckler
2021 J jnl
CoRR
Ameya D. Patil, Michael Tuttle, Alexander G. Schwing, Naresh R. Shanbhag
2021 conf
ISSCC
Hugh Mair, Shinichiro Shiratake, Eric Karl, Thomas Burd, Jonathan Chang, Debbie Marr, Samuel Naffziger, Henk Corporaal, Ken Takeuchi, Naresh R. Shanbhag
2021 J jnl
IEEE Trans. Signal Process.
Charbel Sakr, Naresh R. Shanbhag
2020 conf
ECCV (27)
Hassan Dbouk, Hetul Sanghvi, Mahesh Mehendale, Naresh R. Shanbhag
2020 J jnl
CoRR
Hassan Dbouk, Hetul Sanghvi, Mahesh Mehendale, Naresh R. Shanbhag
2020 J jnl
IEEE Trans. Circuits Syst. I Fundam. Theory Appl.
Mingu Kang, Yongjune Kim, Ameya D. Patil, Naresh R. Shanbhag
2020 J jnl
Proc. IEEE
Mingu Kang, Sujan K. Gonugondla, Naresh R. Shanbhag
2020 J jnl
CoRR
Sujan Kumar Gonugondla, Charbel Sakr, Hassan Dbouk, Naresh R. Shanbhag
2020 A conf
ICCAD
Sujan K. Gonugondla, Charbel Sakr, Hassan Dbouk, Naresh R. Shanbhag
2020 J jnl
CoRR
Abdulrahman Mahmoud, Siva Kumar Sastry Hari, Christopher W. Fletcher, Sarita V. Adve, Charbel Sakr, Naresh R. Shanbhag, Pavlo Molchanov, Michael B. Sullivan, Timothy Tsai, Stephen W. Keckler
2020 conf
CICC
Hassan Dbouk, Sujan K. Gonugondla, Charbel Sakr, Naresh R. Shanbhag
2020 Misc conf
ICASSP
Hassan Dbouk, Hanfei Geng, Craig M. Vineyard, Naresh R. Shanbhag
2020 J jnl
CoRR
Randy Bryant, Mark D. Hill, Tom Kazior, Daniel Lee, Jie Liu, Klara Nahrstedt, Vijay Narayanan, Jan M. Rabaey, Hava T. Siegelmann, Naresh R. Shanbhag, Naveen Verma, H.-S. Philip Wong
2020 A conf
ICCAD
Sujan K. Gonugondla, Ameya D. Patil, Naresh R. Shanbhag
2019 conf
ICLR (Poster)
Charbel Sakr, Naigang Wang, Chia-Yu Chen, Jungwook Choi, Ankur Agrawal, Naresh R. Shanbhag, Kailash Gopalakrishnan
2019 J jnl
CoRR
Charbel Sakr, Naigang Wang, Chia-Yu Chen, Jungwook Choi, Ankur Agrawal, Naresh R. Shanbhag, Kailash Gopalakrishnan
2019 C conf
ISCAS
Ameya D. Patil, Sasikanth Manipatruni, Dmitri E. Nikonov, Ian A. Young, Naresh R. Shanbhag
2019 J jnl
IEEE Micro
Mingu Kang, Prakalp Srivastava, Vikram S. Adve, Nam Sung Kim, Naresh R. Shanbhag
2019 C conf
ISCAS
Ameya D. Patil, Haocheng Hua, Sujan K. Gonugondla, Mingu Kang, Naresh R. Shanbhag
2019 J jnl
IEEE Commun. Lett.
Yongjune Kim, Ravi Kiran Raman, Young-Sik Kim, Lav R. Varshney, Naresh R. Shanbhag
2019 J jnl
IEEE J. Emerg. Sel. Topics Circuits Syst.
Charbel Sakr, Yongjune Kim, Naresh R. Shanbhag
2019 conf
ICLR (Poster)
Charbel Sakr, Naresh R. Shanbhag
2019 J jnl
Proc. IEEE
Naresh R. Shanbhag, Naveen Verma, Yongjune Kim, Ameya D. Patil, Lav R. Varshney
2018 J jnl
IEEE J. Solid State Circuits
Mingu Kang, Sujan K. Gonugondla, Sungmin Lim, Naresh R. Shanbhag
2018 conf
ISSCC
Sujan Kumar Gonugondla, Mingu Kang, Naresh R. Shanbhag
2018 J jnl
IEEE J. Solid State Circuits
Mingu Kang, Sujan K. Gonugondla, Ameya Patil, Naresh R. Shanbhag
2018 J jnl
J. Signal Process. Syst.
Yingyan Lin, Sai Zhang, Naresh R. Shanbhag
2018 J jnl
IEEE J. Solid State Circuits
Sujan K. Gonugondla, Mingu Kang, Naresh R. Shanbhag
2018 Misc conf
ICASSP
Charbel Sakr, Naresh R. Shanbhag
2018 J jnl
IEEE J. Emerg. Sel. Topics Circuits Syst.
Mingu Kang, Sungmin Lim, Sujan K. Gonugondla, Naresh R. Shanbhag
2018 C conf
ISCAS
Sujan K. Gonugondla, Mingu Kang, Yongjune Kim, Mark Helm, Sean Eilert, Naresh R. Shanbhag
2018 J jnl
IEEE Trans. Commun.
Yongjune Kim, Mingu Kang, Lav R. Varshney, Naresh R. Shanbhag
2018 conf
BioCAS
Charbel Sakr, Naresh R. Shanbhag
2018 A* conf
ISCA
Prakalp Srivastava, Mingu Kang, Sujan K. Gonugondla, Sungmin Lim, Jungwook Choi, Vikram S. Adve, Nam Sung Kim, Naresh R. Shanbhag
2018 J jnl
CoRR
Charbel Sakr, Naresh R. Shanbhag
2018 B conf
ISIT
Yongjune Kim, Mingu Kang, Lav R. Varshney, Naresh R. Shanbhag
2018 Misc conf
ICASSP
Charbel Sakr, Jungwook Choi, Zhuo Wang, Kailash Gopalakrishnan, Naresh R. Shanbhag
2017 conf
ESSCIRC
Mingu Kang, Sujan K. Gonugondla, Naresh R. Shanbhag
2017 A* conf
DAC
Ameya Patil, Naresh R. Shanbhag, Lav R. Varshney, Eric Pop, H.-S. Philip Wong, Subhasish Mitra, Jan M. Rabaey, Jeffrey A. Weldon, Larry T. Pileggi, Sasikanth Manipatruni, Dmitri E. Nikonov, Ian A. Young
2017 A* conf
ICML
Charbel Sakr, Yongjune Kim, Naresh R. Shanbhag
2017 J jnl
CoRR
Yongjune Kim, Mingu Kang, Lav R. Varshney, Naresh R. Shanbhag
2017 Misc conf
ICASSP
Charbel Sakr, Ameya Patil, Sai Zhang, Yongjune Kim, Naresh R. Shanbhag
2017 C conf
ISCAS
Yingyan Lin, Charbel Sakr, Yongjune Kim, Naresh R. Shanbhag
2017 J jnl
CoRR
Ameya D. Patil, Sasikanth Manipatruni, Dmitri E. Nikonov, Ian A. Young, Naresh R. Shanbhag
2017 J jnl
IEEE Trans. Commun.
Aseem Wadhwa, Upamanyu Madhow, Naresh R. Shanbhag
2016 J jnl
CoRR
Mingu Kang, Sujan K. Gonugondla, Ameya Patil, Naresh R. Shanbhag
2016 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Yingyan Lin, Min-Sun Keel, Adam C. Faust, Aolin Xu, Naresh R. Shanbhag, Elyse Rosenbaum, Andrew C. Singer
2016 Misc conf
ICASSP
Jungwook Choi, Ameya D. Patil, Rob A. Rutenbar, Naresh R. Shanbhag
2016 J jnl
IEEE J. Solid State Circuits
Rami A. Abdallah, Naresh R. Shanbhag
2016 J jnl
IEEE Trans. Signal Process.
Sai Zhang, Naresh R. Shanbhag
2016 J jnl
CoRR
Naresh R. Shanbhag
2016 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Eric P. Kim, Jungwook Choi, Naresh R. Shanbhag, Rob A. Rutenbar
2016 J jnl
CoRR
Sai Zhang, Naresh R. Shanbhag
2016 J jnl
IEEE Trans. Biomed. Circuits Syst.
Mingu Kang, Naresh R. Shanbhag
2016 Misc conf
ICASSP
Sujan K. Gonugondla, Byonghyo Shim, Naresh R. Shanbhag
2016 A conf
DATE
Sai Zhang, Naresh R. Shanbhag
2016 J jnl
CoRR
Sai Zhang, Mingu Kang, Charbel Sakr, Naresh R. Shanbhag
2016 J jnl
CoRR
Charbel Sakr, Ameya Patil, Sai Zhang, Naresh R. Shanbhag
2016 conf
SiPS
Yingyan Lin, Sai Zhang, Naresh R. Shanbhag
2015 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Eric P. Kim, Daniel J. Baker, Sriram Narayanan, Naresh R. Shanbhag, Douglas L. Jones
2015 Misc conf
ICASSP
Mingu Kang, Sujan K. Gonugondla, Min-Sun Keel, Naresh R. Shanbhag
2015 C conf
ISCAS
Mingu Kang, Eric P. Kim, Min-Sun Keel, Naresh R. Shanbhag
2015 A conf
ICCAD
Sai Zhang, Naresh R. Shanbhag
2015 A conf
ISLPED
Naresh R. Shanbhag
2014 J jnl
IEEE J. Solid State Circuits
Sai Zhang, Jane S. Tu, Naresh R. Shanbhag, Philip T. Krein
2014 Misc conf
ICASSP
Eric P. Kim, Jungwook Choi, Naresh R. Shanbhag, Rob A. Rutenbar
2014 Misc conf
ICASSP
Mingu Kong, Min-Sun Keel, Naresh R. Shanbhag, Sean Eilert, Ken Curewitz
2014 conf
GlobalSIP
Sai Zhang, Naresh R. Shanbhag
2014 conf
GlobalSIP
Eric P. Kim, Naresh R. Shanbhag
2014 A conf
ISLPED
Ihab Nahlus, Eric P. Kim, Naresh R. Shanbhag, David T. Blaauw
2014 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Rami A. Abdallah, Naresh R. Shanbhag
2014 conf
ICC
Aseem Wadhwa, Upamanyu Madhow, Naresh R. Shanbhag
2014 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Sai Zhang, Naresh R. Shanbhag, Philip T. Krein
2013 J jnl
IEEE J. Solid State Circuits
Rami A. Abdallah, Naresh R. Shanbhag
2013 conf
SiPS
Jungwook Choi, Eric P. Kim, Rob A. Rutenbar, Naresh R. Shanbhag
2013 conf
SiPS
Rami A. Abdallah, Naresh R. Shanbhag
2013 J jnl
IEEE Trans. Multim.
Rami A. Abdallah, Naresh R. Shanbhag
2013 ch.
Handbook of Signal Processing Systems
Naresh R. Shanbhag, Andrew C. Singer, Hyeon-Min Bae
2013 Misc conf
ICASSP
Eric P. Kim, Naresh R. Shanbhag
2012 conf
CICC
Rami A. Abdallah, Naresh R. Shanbhag
2012 Misc conf
ICASSP
Aadithya V. Karthik, Yingyan Lin, Chenjie Gu, Aolin Xu, Jaijeet S. Roychowdhury, Naresh R. Shanbhag
2012 conf
ACSCC
Peter Kairouz, Aolin Xu, Naresh R. Shanbhag, Andrew C. Singer
2012 J jnl
IEEE Trans. Signal Process.
Rajan Narasimha, Minwei Lu, Naresh R. Shanbhag, Andrew C. Singer
2012 conf
SiPS
Eric P. Kim, Naresh R. Shanbhag
2012 conf
CICC
Adam C. Faust, Rajan Narasimha, Karan S. Bhatia, Ankit Srivastava, Chhay Kong, Hyeon-Min Bae, Elyse Rosenbaum, Naresh R. Shanbhag
2012 A ed.
ISLPED
Naresh R. Shanbhag, Massimo Poncino, Pai H. Chou, Ajith Amerasekera
2012 J jnl
IEEE Trans. Computers
Eric P. Kim, Naresh R. Shanbhag
2012 Misc conf
ICASSP
Rajan Narasimha, Georg Zeitler, Naresh R. Shanbhag, Andrew C. Singer, Gerhard Kramer
2011 conf
SiPS
Eric P. Kim, Naresh R. Shanbhag
2011 Misc conf
ICASSP
Aditya Gupta, Andrew C. Singer, Naresh R. Shanbhag
2011 conf
CICC
Eric P. Kim, Daniel J. Baker, Sriram Narayanan, Douglas L. Jones, Naresh R. Shanbhag
2011 A conf
ISLPED
Rami A. Abdallah, Pradeep S. Shenoy, Naresh R. Shanbhag, Philip T. Krein
2011 A conf
DATE
Naresh R. Shanbhag, Andrew C. Singer
2011 A conf
DATE
Rami A. Abdallah, Yu-Hung Lee, Naresh R. Shanbhag
2011 J jnl
IEEE Trans. Inf. Theory
Arshad Ahmed, Ralf Koetter, Naresh R. Shanbhag
2010 C conf
ISCAS
Minwei Lu, Naresh R. Shanbhag, Andrew C. Singer
2010 J jnl
IEEE Trans. Signal Process.
Sriram Narayanan, Girish Varatkar, Douglas L. Jones, Naresh R. Shanbhag
2010 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Rajan Narasimha, Naresh R. Shanbhag
2010 conf
ISSCC
Naresh R. Shanbhag, Koichi Yamaguchi, Robert Payne
2010 J jnl
IEEE Embed. Syst. Lett.
Rami A. Abdallah, Naresh R. Shanbhag
2010 A ed.
ISLPED
Vojin G. Oklobdzija, Barry Pangle, Naehyuck Chang, Naresh R. Shanbhag, Chris H. Kim
2010 C conf
ICCD
Rami A. Abdallah, Naresh R. Shanbhag
2010 ch.
Handbook of Signal Processing Systems
Naresh R. Shanbhag, Andrew C. Singer, Hyeon-Min Bae
2010 Misc conf
ICASSP
Eric P. Kim, Naresh R. Shanbhag
2010 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Girish Varatkar, Shrikanth S. Narayanan, Naresh R. Shanbhag, Douglas L. Jones
2010 A* conf
DAC
Naresh R. Shanbhag, Rami A. Abdallah, Rakesh Kumar, Douglas L. Jones
2010 conf
ISSCC
Yuriy M. Greshishchev, Franz Dielacher, Michael Flynn, Donhee Ham, Naresh R. Shanbhag, Takuji Yamamoto
2009 J jnl
IEEE Trans. Signal Process.
Rami A. Abdallah, Naresh R. Shanbhag
2009 B conf
GLOBECOM
Rajan Narasimha, Nirmal Warke, Naresh R. Shanbhag
2009 conf
SiPS
Junho Cho, Naresh R. Shanbhag, Wonyong Sung
2009 conf
SiPS
Rami A. Abdallah, Seok-Jun Lee, Manish Goel, Naresh R. Shanbhag
2009 conf
SoC
Eric P. Kim, Rami A. Abdallah, Naresh R. Shanbhag
2008 conf
ISSCC
Hyeon-Min Bae, Andrew C. Singer, Jonathan B. Ashbrook, Naresh R. Shanbhag
2008 Misc conf
ICASSP
Shrikanth S. Narayanan, Girish Varatkar, Douglas L. Jones, Naresh R. Shanbhag
2008 J jnl
IEEE Signal Process. Mag.
Andrew C. Singer, Naresh R. Shanbhag, Hyeon-Min Bae
2008 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Girish Varatkar, Naresh R. Shanbhag
2008 conf
SiPS
Rami A. Abdallah, Naresh R. Shanbhag
2008 A conf
ISLPED
Rami A. Abdallah, Naresh R. Shanbhag
2008 J jnl
IEEE J. Solid State Circuits
Hyeon-Min Bae, Jonathan B. Ashbrook, Naresh R. Shanbhag, Andrew C. Singer
2008 conf
ACSCC
Rajan Lakshmi Narasimha, Naresh R. Shanbhag
2008 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Srinivasa R. Sridhara, Ganesh Balamurugan, Naresh R. Shanbhag
2008 J jnl
IEEE Des. Test Comput.
Naresh R. Shanbhag, Subhasish Mitra, Gustavo de Veciana, Michael Orshansky, Radu Marculescu, Jaijeet S. Roychowdhury, Douglas L. Jones, Jan M. Rabaey
2008 conf
ISSCC
Yuriy M. Greshishchev, Takuji Yamamoto, Naresh R. Shanbhag
2008 conf
ACM Great Lakes Symposium on VLSI
Girish Varatkar, Sriram Narayanan, Naresh R. Shanbhag, Douglas L. Jones
2008 C conf
ISCAS
Girish Varatkar, Sriram Narayanan, Naresh R. Shanbhag, Douglas L. Jones
2007 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Srinivasa R. Sridhara, Naresh R. Shanbhag
2007 conf
SoC
Girish Varatkar, Sriram Narayanan, Naresh R. Shanbhag, Douglas L. Jones
2007 conf
SiPS
Girish Varatkar, Naresh R. Shanbhag
2006 J jnl
IEEE J. Solid State Circuits
Mohammad M. Mansour, Naresh R. Shanbhag
2006 J jnl
IEEE J. Solid State Circuits
Hyeon-Min Bae, Jonathan B. Ashbrook, Jinki Park, Naresh R. Shanbhag, Andrew C. Singer, Sanjiv Chopra
2006 conf
ISSCC
Hyeon-Min Bae, Jonathan B. Ashbrook, Jinki Park, Naresh R. Shanbhag, Andrew C. Singer, Sanjiv Chopra
2006 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Ming Zhang, Naresh R. Shanbhag
2006 A conf
ISLPED
Girish Varatkar, Naresh R. Shanbhag
2006 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Byonghyo Shim, Naresh R. Shanbhag
2006 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Ming Zhang, Subhasish Mitra, T. M. Mak, Norbert Seifert, Nicholas J. Wang, Quan Shi, Kee Sup Kim, Naresh R. Shanbhag, Sanjay J. Patel
2006 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Ming Zhang, Naresh R. Shanbhag
2005 J jnl
IEEE J. Solid State Circuits
James E. Jaussi, Ganesh Balamurugan, David R. Johnson, Bryan Casper, Aaron Martin, Joseph T. Kennedy, Naresh R. Shanbhag, Randy Mooney
2005 J jnl
IEEE J. Solid State Circuits
Seok-Jun Lee, Naresh R. Shanbhag, Andrew C. Singer
2005 J jnl
J. VLSI Signal Process.
Mohammad M. Mansour, Naresh R. Shanbhag
2005 A conf
ISLPED
Srinivasa R. Sridhara, Naresh R. Shanbhag
2005 conf
ISCAS (1)
Ming Zhang, Naresh R. Shanbhag
2005 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Seok-Jun Lee, Naresh R. Shanbhag, Andrew C. Singer
2005 Misc conf
VLSI Design
Srinivasa R. Sridhara, Naresh R. Shanbhag
2005 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Srinivasa R. Sridhara, Naresh R. Shanbhag
2005 J jnl
J. VLSI Signal Process.
Seok-Jun Lee, Naresh R. Shanbhag, Andrew C. Singer
2005 J jnl
J. VLSI Signal Process.
Naresh R. Shanbhag, Keshab K. Parhi
2005 conf
ISQED
Srinivasa R. Sridhara, Naresh R. Shanbhag, Ganesh Balamurugan
2005 J jnl
IEEE Trans. Signal Process.
Seok-Jun Lee, Andrew C. Singer, Naresh R. Shanbhag
2004 A* conf
DAC
Naresh R. Shanbhag
2004 A conf
ICCAD
Ming Zhang, Naresh R. Shanbhag
2004 J jnl
IEEE J. Solid State Circuits
Rajamohana Hegde, Naresh R. Shanbhag
2004 C conf
ICCD
Srinivasa R. Sridhara, Arshad Ahmed, Naresh R. Shanbhag
2004 A* conf
DAC
Srinivasa R. Sridhara, Naresh R. Shanbhag
2004 B conf
ISIT
Arshad Ahmed, Ralf Koetter, Naresh R. Shanbhag
2004 J jnl
Computer
Naresh R. Shanbhag
2004 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Byonghyo Shim, Srinivasa R. Sridhara, Naresh R. Shanbhag
2004 conf
ICASSP (4)
Seok-Jun Lee, Andrew C. Singer, Naresh R. Shanbhag
2004 conf
ISCAS (3)
Seok-Jun Lee, Naresh R. Shanbhag, Andrew C. Singer
2004 conf
ICC
Arshad Ahmed, Ralf Koetter, Naresh R. Shanbhag
2003 A conf
ISLPED
Seok-Jun Lee, Naresh R. Shanbhag, Andrew C. Singer
2003 B conf
GLOBECOM
Seok-Jun Lee, Andrew C. Singer, Naresh R. Shanbhag
2003 conf
ISCAS (2)
Mohammad M. Mansour, Naresh R. Shanbhag
2003 J jnl
IEEE Trans. Signal Process.
Byonghyo Shim, Naresh R. Shanbhag
2003 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Lei Wang, Naresh R. Shanbhag
2003 conf
ISCAS (1)
Hyeon-Min Bae, Naresh R. Shanbhag
2003 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Mohammad M. Mansour, Naresh R. Shanbhag
2003 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Lei Wang, Naresh R. Shanbhag
2003 J jnl
IEEE Trans. Signal Process.
Lei Wang, Naresh R. Shanbhag
2003 C conf
ICCD
Ganesh Balamurugan, Naresh R. Shanbhag
2003 conf
ISCAS (4)
Byonghyo Shim, Naresh R. Shanbhag
2003 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Mohammad M. Mansour, Naresh R. Shanbhag
2002 J jnl
IEEE J. Solid State Circuits
Ram K. Krishnamurthy, Atila Alvandpour, Ganesh Balamurugan, Naresh R. Shanbhag, Krishnamurthy Soumyanath, Shekhar Y. Borkar
2002 Misc conf
ICASSP
Mohammad M. Mansour, Naresh R. Shanbhag
2002 A conf
ISLPED
Mohammad M. Mansour, Naresh R. Shanbhag
2002 A* conf
DAC
Naresh R. Shanbhag
2002 conf
ISCAS (5)
Mohammad M. Mansour, Naresh R. Shanbhag
2002 B conf
GLOBECOM
Mohammad M. Mansour, Naresh R. Shanbhag
2001 conf
CICC
Rajamohana Hegde, Naresh R. Shanbhag
2001 J jnl
J. VLSI Signal Process.
Wayne P. Burleson, Naresh R. Shanbhag
2001 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Dilip V. Sarwate, Naresh R. Shanbhag
2001 conf
CICC
Jonathan B. Ashbrook, Naresh R. Shanbhag, Ralf Koetter, Richard E. Blahut
2001 A conf
ISLPED
Lei Wang, Naresh R. Shanbhag
2001 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Rajamohana Hegde, Naresh R. Shanbhag
2001 J jnl
IEEE J. Solid State Circuits
Ganesh Balamurugan, Naresh R. Shanbhag
2001 J jnl
J. VLSI Signal Process.
Swaroop Appadwedula, Manish Goel, Naresh R. Shanbhag, Douglas L. Jones, Kannan Ramchandran
2000 conf
CICC
Ganesh Balamurugan, Naresh R. Shanbhag
2000 conf
EUSIPCO
Rajamohana Hegde, Naresh R. Shanbhag
2000 C conf
ISCAS
Manish Sharma, Naresh R. Shanbhag
2000 A conf
ICCAD
Ki-Wook Kim, Kwang-Hyun Baek, Naresh R. Shanbhag, C. L. Liu, Sung-Mo Kang
2000 C conf
ISCAS
Naresh R. Shanbhag, Lei Wang
2000 conf
ICECS
Mohammad M. Mansour, Makram M. Mansour, Ibrahim N. Hajj, Naresh R. Shanbhag
2000 C conf
ISCAS
Dongwon Seo, Naresh R. Shanbhag, Milton Feng
2000 Misc conf
ICASSP
Rajamohana Hegde, Naresh R. Shanbhag
2000 A conf
ISLPED
Naresh R. Shanbhag, Krishnamurthy Soumyanath, Samuel Martin
2000 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Rajamohana Hegde, Naresh R. Shanbhag
1999 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Sumant Ramprasad, Naresh R. Shanbhag, Ibrahim N. Hajj
1999 C conf
MMSP
Jayanto Minocha, Naresh R. Shanbhag
1999 J jnl
IEEE Trans. Signal Process.
Rajamohana Hegde, Naresh R. Shanbhag
1999 Misc conf
VLSI Design
Sudhakar Bobba, Ibrahim N. Hajj, Naresh R. Shanbhag
1999 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Manish Goel, Naresh R. Shanbhag
1999 J jnl
IEEE Trans. Signal Process.
Manish Goel, Naresh R. Shanbhag
1999 A conf
ISLPED
Ganesh Balamurugan, Naresh R. Shanbhag
1999 A conf
ISLPED
Rajamohana Hegde, Naresh R. Shanbhag
1999 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Sumant Ramprasad, Naresh R. Shanbhag, Ibrahim N. Hajj
1999 Misc conf
ICASSP
Manish Goel, Naresh R. Shanbhag
1999 conf
ISCAS (3)
Sumant Ramprasad, Naresh R. Shanbhag, Ibrahim N. Hajj
1999 conf
ISCAS (6)
Rajamohana Hegde, Naresh R. Shanbhag
1999 conf
ISCAS (1)
Lei Wang, Naresh R. Shanbhag
1998 J jnl
IEEE Trans. Signal Process.
Gi-Hong Im, Naresh R. Shanbhag
1998 J jnl
Int. J. Wirel. Inf. Networks
Naresh R. Shanbhag
1998 Misc conf
VLSI Design
Sumant Ramprasad, Naresh R. Shanbhag, Ibrahim N. Hajj
1998 A conf
ISLPED
Sumant Ramprasad, Naresh R. Shanbhag, Ibrahim N. Hajj
1998 C conf
MMSP
Swaroop Appadwedula, Manish Goel, Douglas L. Jones, Kannan Ramchandran, Naresh R. Shanbhag
1998 A conf
ICCAD
Rajamohana Hegde, Naresh R. Shanbhag
1998 J jnl
IEEE Trans. Signal Process.
Manish Goel, Naresh R. Shanbhag
1998 Misc conf
ICASSP
Manoj Aggarwal, Naresh R. Shanbhag, Narendra Ahuja
1998 Misc conf
ICASSP
Manish Goel, Naresh R. Shanbhag
1998 J jnl
IEEE Trans. Signal Process.
Naresh R. Shanbhag, Gi-Hong Im
1997 A conf
ICCAD
Sumant Ramprasad, Naresh R. Shanbhag, Ibrahim N. Hajj
1997 A* conf
DAC
Sumant Ramprasad, Naresh R. Shanbhag, Ibrahim N. Hajj
1997 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Sumant Ramprasad, Naresh R. Shanbhag, Ibrahim N. Hajj
1997 A conf
ISLPED
Manish Goel, Naresh R. Shanbhag
1997 J jnl
IEEE Trans. Signal Process.
Naresh R. Shanbhag, Manish Goel
1996 A conf
ISLPED
Manish Goel, Naresh R. Shanbhag
1996 A conf
ISLPED
Naresh R. Shanbhag
1996 J jnl
IEEE Trans. Signal Process.
Naresh R. Shanbhag, Gi-Hong Im
1995 C conf
ISCAS
Naresh R. Shanbhag, Gi-Hong Im
1995 J jnl
IEEE Trans. Signal Process.
Naresh R. Shanbhag, Keshab K. Parhi
1993 C conf
ISCAS
Naresh R. Shanbhag, Keshab K. Parhi
1993 J jnl
IEEE Trans. Signal Process.
Naresh R. Shanbhag, Keshab K. Parhi
1993 C conf
ISCAS
Naresh R. Shanbhag, Keshab K. Parhi
1991 J jnl
IEEE J. Solid State Circuits
Naresh R. Shanbhag, Raymond E. Siferd
1991 J jnl
IEEE Trans. Signal Process.
Naresh R. Shanbhag
1990 J jnl
IEEE J. Solid State Circuits
Naresh R. Shanbhag, Dipankar Nagchoudhuri, Raymond E. Siferd, Gangaikondan S. Visweswaran
1988 J jnl
IEEE J. Solid State Circuits
Naresh R. Shanbhag, Pushkal Juneja
start.py
← Index start.py python
"""
# By repository (existing behavior, now uses repository_upload_sessions)
python start.py --s3 --repo bazaar --index_prefix redb

# By repository with notes filter
python start.py --s3 --repo vx-itw --s3-notes "ITW.0138" --index_prefix redb

# By single date (all repo samples first seen on Jan 15, 2025)
python start.py --date 2025-01-15 --index_prefix redb

# By date with repository filter
python start.py --date 2025-01-15 --repo bazaar --index_prefix redb

# By date range (inclusive)
python start.py --range 2025-01-01 2025-01-31 --index_prefix redb

# By date range with repository and notes filters
python start.py --range 2025-01-01 2025-01-31 --repo malshare --s3-notes "batch1" --index_prefix redb

# By filetype (magika) standalone - process all ELF samples across all repos
python start.py --s3 --magika elf --index_prefix redb

# By filetype with repository filter
python start.py --s3 --repo bazaar --magika elf --index_prefix redb

# By filetype with date range - process only PE samples in date range
python start.py --range 2025-01-01 2025-01-31 --magika pebin --index_prefix redb
"""

import argparse
import os
import sys
from datetime import datetime, timedelta
from redb.ingestor import *

"""
        # General modules
        'BasicPropertiesExtractor': BasicPropertiesExtractor,
        'HashExtractor': HashExtractor,
        'DIEExtractor': DIEExtractor,
        'CAPAExtractor': CAPAExtractor,
        'StringsExtractor': StringsExtractor,
        # PE modules
        'PEFeaturesExtractor': PEFeaturesExtractor,
        'PEImportExtractor': PEImportExtractor,
        'PEResourceExtractor': PEResourceExtractor,
        'PEOverlayExtractor': PEOverlayExtractor,
        'PESectionExtractor': PESectionExtractor,
        'PESignatureExtractor': PESignatureExtractor,
        'PEExtraFindings': PEExtraFindings,
        'PEInconstistencyTestsExtractor': PEInconstistencyTestsExtractor,
        'PEDotNetExtractor': PEDotNetExtractor,
"""


def main():
    # # path = "/mnt/samples/consilience/malware/test/test-unzipped/0242d90dc48a8931bad72ddbdba34bdd568fd30610dfe049c84968d425088c71/"
    # path = "/Users/p4c0/_samples/test-unzipped/0242d90dc48a8931bad72ddbdba34bdd568fd30610dfe049c84968d425088c71" #Stuxnet
    # # path = "/Volumes/backup/consilience/malware/test/test-unzipped/rhpv-673f91a2085358e3266f466845366f30cf741060edeb31e9a93e2c92033bba28"
    # # path = "/mnt/samples/consilience/malware/test/test-redb/"
    # # path = "/mnt/samples/consilience/malware/malpedia-pe/9bc81280113473de9ebfe54f689b4440287c37fff562e070d3a28f5269cadcf0_dump7_0x00400000"
    # # path = "/mnt/samples/consilience/malware/test/test-unzipped/379251974ebcd5c397f92ca45bb9620d"
    # path = "0242d90dc48a8931bad72ddbdba34bdd568fd30610dfe049c84968d425088c71" # rich header, UPX packer
    # # #path = "d8637bdbcfc9112fcb1f0167b398e771" #dotnet
    # path = "/Users/p4c0/_samples/test-unzipped/sig-8e035beb02a411f8a9e92d4cf184ad34f52bbd0a81a50c222cdd4706e4e45104" #code signed, protector use case for sections
    # path = "/Users/p4c0/_samples/test-unzipped/vsinfo-39d8ad95b0323c37bd3134ab93ac4af44c66a1a8443a41c1ac02cec19bb2816a"
    # # path = "/Volumes/backup/consilience/malware/_sorted_samples/vx-apt/pebin/69e679daaaff3832c39671bf2b813b5530a70fb763d381f9a6e22e3bc493c8a9.7z"
    # # path = "test_files/hello"
    # path = "/Volumes/backup/consilience/malware/test/test-re2db/"
    # # path = "/Users/p4c0/_samples/HEUR-Trojan-PSW.MSIL.Maslog.gen-0c9ae5cd740c1da7060b92ddb33f3a3893e361aad45a2accc64d43bd9a1a4106"
    # # path = "/Users/p4c0/_samples/test-unzipped/"
    # # # path = "/Volumes/backup/consilience/malware/_sorted_samples/vx-apt/pebin/7156bd8056c4b6b4e179a64370067d3f7a7cce0044f1352d41f3c2c73038d273.7z"
    # decompile = False
    # repo = "test-fixing"
    # index_prefix = "test4"
    # selected_modules = "all"
    # exporter_types = ['ClickHouse']

    # parser = argparse.ArgumentParser(
    #     description="Process binary files in a given path."
    # )
    # parser.add_argument("path", 
    #     help="File path, directory path, or path to a .txt file containing a list of files to process (one per line)")
    # parser.add_argument(
    #     "--repo", help="Repository name for sample source, used for loggfile name"
    # )
    # parser.add_argument("--index_prefix", help="Index prefix for ElasticSearch")
    # parser.add_argument(
    #     "-d",
    #     "--decompile",
    #     action="store_true",
    #     help="Optional flag, if set it will run ONLY the decompiler on the binary files",
    # )
    # parser.add_argument(
    #     "-m",
    #     "--modules",
    #     help="Comma-separated list of modules to run (e.g., 'BasicPropertiesExtractor,HashExtractor') or 'all' for all modules",
    #     default="all",
    # )
    # args = parser.parse_args()
    # path = args.path
    # index_prefix = args.index_prefix
    # decompile = args.decompile
    # repo = args.repo
    # selected_modules = args.modules

    # print(f"Decompile flag: {decompile}")
    # print(f"Repo: {repo}")
    # print(f"Selected modules: {selected_modules}")
    
    # if path.endswith('.txt'):
    #     print(f"Reading file list from: {path}")

    # Ingestor(path, decompile, repo, index_prefix, selected_modules).ingest()

    parser = argparse.ArgumentParser(
        description="Process binary files from local paths or S3 storage."
    )
    
    # Create a mutually exclusive group for input sources
    # Not required because --analyzed can be used standalone
    input_group = parser.add_mutually_exclusive_group(required=False)
    input_group.add_argument(
        "--path", 
        help="File path, directory path, or path to a .txt file containing a list of files to process (one per line)")
    input_group.add_argument(
        "--s3",
        action="store_true",
        help="Use S3 mode to fetch files from repository specified by --repo")
    input_group.add_argument(
        "--s3-solo",
        metavar="S3_KEY",
        help="Process a single S3 file by providing the S3 key (e.g., 09/f7/09f7d02a....zip)")
    input_group.add_argument(
        "--nomad-job",
        action="store_true",
        help="Run as Nomad job using environment variables for job parameters")
    input_group.add_argument(
        "--date",
        metavar="YYYY-MM-DD",
        help="Process samples first seen on a specific date (from repository_upload_sessions only)")
    input_group.add_argument(
        "--range",
        nargs=2,
        metavar=("START_DATE", "END_DATE"),
        help="Process samples first seen in a date range (inclusive, from repository_upload_sessions only). Format: YYYY-MM-DD YYYY-MM-DD")
    parser.add_argument(
        "--analyzed",
        action="store_true",
        help="Filter to samples already in the database (from basic_properties). "
             "Can be used standalone or combined with --range/--date to partition large runs")

    parser.add_argument(
        "--repo",
        required=False,
        help="Repository name for sample source, used for logging and S3 filtering (optional for --date/--range modes)")
    
    parser.add_argument(
        "--s3-notes",
        help="Optional filter for S3 files based on notes field (S3 mode only)")

    parser.add_argument(
        "--magika",
        help="Filter by filetype_magika (e.g., 'elf', 'pebin'). Overrides SUPPORTED_FORMATS env var. Can combine with --repo, --date, --range")

    parser.add_argument(
        "--index_prefix", default="redb",
        help="Index prefix for database (default: redb)")
    
    parser.add_argument(
        "-d",
        "--decompile",
        action="store_true",
        help="Optional flag, if set it will run ONLY the decompiler on the binary files",
    )

    parser.add_argument(
        "-y",
        "--yara",
        action="store_true",
        help="Optional flag, if set it will run ONLY the YARA scanner on the binary files",
    )

    parser.add_argument(
        "--with-yara",
        action="store_true",
        help="Add YARA scanning to feature extraction (runs both features and YARA)",
    )

    parser.add_argument(
        "-m",
        "--modules",
        help="Comma-separated list of modules to run (e.g., 'BasicPropertiesExtractor,HashExtractor') or 'all' for all modules",
        default="all",
    )

    parser.add_argument(
        "--decompile-modules",
        help="Comma-separated list of decompiler sub-modules to run when using -d/--decompile. "
             "Available: decompilation, disassembly, cfg, llil, strings, or 'all' (default: all)",
        default="all",
    )
    
    parser.add_argument(
        "--force",
        action="store_true",
        help="Force reprocessing of samples already in the database (bypasses deduplication check)",
    )

    parser.add_argument(
        "--rerun",
        action="store_true",
        help="Re-run decompiler modules on already-disassembled samples only. "
             "Queries code_binja_disassembled_functions_references instead of basic_properties. "
             "Requires --analyzed and --decompile.",
    )

    parser.add_argument(
        "--dry-run",
        action="store_true",
        help="Print results instead of uploading to database (useful for testing)",
    )
    
    args = parser.parse_args()

    # Extract arguments
    path = args.path
    index_prefix = args.index_prefix
    decompile = args.decompile
    yara_scan = args.yara
    with_yara = args.with_yara
    repo = args.repo
    selected_modules = args.modules
    decompile_modules = args.decompile_modules
    s3_mode = args.s3
    s3_notes = args.s3_notes
    magika_filter = args.magika
    dry_run = args.dry_run
    force = args.force
    rerun = args.rerun
    s3_solo = args.s3_solo
    s3_key = args.s3_solo if args.s3_solo else None
    nomad_job = args.nomad_job
    analyzed = args.analyzed
    date_filter = args.date
    date_range = args.range

    # Validate that at least one input source is provided
    has_input = any([path, s3_mode, s3_solo, nomad_job, date_filter, date_range, analyzed])
    if not has_input:
        print("ERROR: Must specify an input source: --path, --s3, --s3-solo, --nomad-job, --date, --range, or --analyzed")
        sys.exit(1)

    # Validate --analyzed combinations
    if analyzed and any([path, s3_mode, s3_solo, nomad_job]):
        print("ERROR: --analyzed cannot be combined with --path, --s3, --s3-solo, or --nomad-job")
        sys.exit(1)

    # Validate flag combinations
    if yara_scan and with_yara:
        print("ERROR: Cannot use both --yara and --with-yara")
        sys.exit(1)
    if decompile and with_yara:
        print("ERROR: --with-yara only works with feature extraction, not decompile")
        sys.exit(1)

    # Parse and validate --decompile-modules
    VALID_DECOMPILE_MODULES = {"all", "decompilation", "disassembly", "cfg", "llil", "strings"}
    if decompile_modules == "all":
        decompile_modules_set = {"all"}
    else:
        decompile_modules_set = {m.strip() for m in decompile_modules.split(",")}
        invalid = decompile_modules_set - VALID_DECOMPILE_MODULES
        if invalid:
            print(f"ERROR: Invalid decompile module(s): {', '.join(sorted(invalid))}")
            print(f"Available: {', '.join(sorted(VALID_DECOMPILE_MODULES - {'all'}))}")
            sys.exit(1)

    if not decompile and decompile_modules != "all":
        print("ERROR: --decompile-modules requires -d/--decompile flag")
        sys.exit(1)

    if rerun and not analyzed:
        print("ERROR: --rerun requires --analyzed flag")
        sys.exit(1)
    if rerun and not decompile:
        print("ERROR: --rerun requires -d/--decompile flag")
        sys.exit(1)

    if rerun and force:
        print("ERROR: --rerun and --force are mutually exclusive. "
              "--rerun targets already-disassembled samples, --force targets all analyzed samples.")
        sys.exit(1)

    # Validate and parse date arguments
    start_date = None
    end_date = None

    if date_filter:
        # Single date mode: process samples from that day
        try:
            parsed_date = datetime.strptime(date_filter, "%Y-%m-%d")
            start_date = date_filter
            # End date is the next day (exclusive)
            end_date = (parsed_date + timedelta(days=1)).strftime("%Y-%m-%d")
        except ValueError:
            print(f"ERROR: Invalid date format '{date_filter}'. Use YYYY-MM-DD")
            sys.exit(1)

    if date_range:
        # Date range mode: process samples between start and end dates
        try:
            start_date = date_range[0]
            datetime.strptime(start_date, "%Y-%m-%d")  # Validate format
            parsed_end = datetime.strptime(date_range[1], "%Y-%m-%d")
            # End date is the day after the provided end date (to make it inclusive)
            end_date = (parsed_end + timedelta(days=1)).strftime("%Y-%m-%d")
        except ValueError:
            print(f"ERROR: Invalid date format in range '{date_range}'. Use YYYY-MM-DD YYYY-MM-DD")
            sys.exit(1)

    # Validate required parameters based on mode
    if nomad_job or s3_solo:
        # For nomad job and s3-solo modes, set default repo if not provided (used for log filename)
        if not repo:
            repo = "s3-solo" if s3_solo else "nomad-worker"
    elif analyzed:
        # For analyzed mode, repo is optional (used for logging only)
        if not repo:
            repo = "analyzed"
    elif date_filter or date_range:
        # For date/range modes, repo is optional (used for filtering within date range)
        # Set a default repo name for logging if not provided
        if not repo:
            repo = "date-range"
    elif s3_mode and magika_filter and not repo:
        # For S3 mode with magika filter, repo is optional (query all repos for that filetype)
        repo = "all-repos"
    elif not s3_mode and path:
        # For local mode, repo is required
        if not repo:
            print("ERROR: --repo is required for local mode")
            sys.exit(1)
    elif s3_mode and not repo:
        # For S3 mode without magika filter, repo is required
        print("ERROR: --repo is required for S3 catalog mode (or use --magika to query all repos)")
        sys.exit(1)

    print(f"Decompile flag: {decompile}")
    if decompile and decompile_modules != "all":
        print(f"Decompile modules: {', '.join(sorted(decompile_modules_set))}")
    print(f"YARA scan flag: {yara_scan}")
    print(f"With YARA flag: {with_yara}")
    print(f"Repo: {repo}")
    print(f"Selected modules: {selected_modules}")
    print(f"Dry run mode: {dry_run}")
    print(f"Force reprocessing: {force}")
    print(f"S3 solo mode: {s3_solo}")
    print(f"Nomad job mode: {nomad_job}")
    if magika_filter:
        print(f"Magika filter: {magika_filter}")
    if start_date:
        print(f"Date filter: {start_date} to {end_date}")
    if rerun:
        print(f"Rerun mode: targeting already-disassembled samples from code_binja_disassembled_functions_references")
    if analyzed:
        print(f"Analyzed mode: processing already-analyzed samples from basic_properties")

    if analyzed and not (date_filter or date_range):
        # Analyzed mode (standalone): process samples already in basic_properties via S3
        print(f"Processing already-analyzed samples from {index_prefix}_basic_properties")
        if magika_filter:
            print(f"Filetype filter: {magika_filter}")
        Ingestor(
            path=None,
            decompile=decompile,
            yara_scan=yara_scan,
            with_yara=with_yara,
            repository=repo or "analyzed",
            index_prefix=index_prefix,
            selected_modules=selected_modules,
            s3_mode=True,
            magika_filter=magika_filter,
            dry_run=dry_run,
            force=force,
            analyzed=True,
            decompile_modules=decompile_modules_set,
            rerun=rerun,
        ).ingest()

    elif date_filter or date_range:
        # Date-based S3 mode
        print(f"Date-based S3 mode enabled")
        if analyzed:
            print(f"Filtered to already-analyzed samples in {index_prefix}_basic_properties")
        if repo and repo != "date-range":
            print(f"Repository filter: {repo}")
        if s3_notes:
            print(f"Notes filter: {s3_notes}")
        Ingestor(
            path=None,
            decompile=decompile,
            yara_scan=yara_scan,
            with_yara=with_yara,
            repository=repo,
            index_prefix=index_prefix,
            selected_modules=selected_modules,
            s3_mode=True,
            s3_notes=s3_notes,
            magika_filter=magika_filter,
            dry_run=dry_run,
            force=force,
            start_date=start_date,
            end_date=end_date,
            analyzed=analyzed,
            decompile_modules=decompile_modules_set,
        ).ingest()

    elif s3_solo:
        # Process a single S3 file using S3 key provided as argument
        print(f"Starting S3 solo mode with S3 key: {s3_key}")

        # Override with environment variables if not provided via command line
        if not index_prefix:
            index_prefix = os.getenv('INDEX_PREFIX', 'redb')
        if not repo:
            repo = os.getenv('REPO', 's3-solo')

        # Validate required parameters
        if not s3_key:
            print("ERROR: S3 key is required for S3-solo mode")
            sys.exit(1)

        # Extract hash from S3 key by splitting and taking the last chunk
        # S3 key format examples:
        # - 09/f7/09f7d02a3c2382199458c98a62b045145ee54ab6aba86166aecf3d10c3c1444c.zip
        # - private/ab/cd/abcd1234567890abcdef1234567890abcdef1234567890abcdef123456.zip
        try:
            # Remove .zip extension and split by '/'
            sample_hash = s3_key.replace('.zip', '').split('/')[-1]
        except Exception as e:
            print(f"ERROR: Failed to extract hash from S3 key {s3_key}: {e}")
            sys.exit(1)

        print(f"S3 Key: {s3_key}")
        print(f"Extracted hash: {sample_hash}")
        print(f"Using index_prefix: {index_prefix}")
        print(f"Using repo: {repo}")
        print(f"Dry run mode: {dry_run}")
        print(f"Selected modules: {selected_modules}")

        # Use ingestor with S3-solo mode
        Ingestor(
            path=None,
            decompile=decompile,
            yara_scan=yara_scan,
            with_yara=with_yara,
            repository=repo,
            index_prefix=index_prefix or "s3_solo",
            selected_modules=selected_modules,
            s3_mode=True,
            s3_solo=True,
            s3_solo_hash=sample_hash,
            s3_solo_key=s3_key,
            dry_run=dry_run,
            force=force,
            decompile_modules=decompile_modules_set,
        ).ingest()

    elif nomad_job:
        # Run as Nomad job using environment variables - convert to S3-solo mode
        print("Starting Nomad job processor...")
        
        # Process Nomad environment variables
        job_id = os.getenv('JOB_ID')
        s3_key = os.getenv('S3_KEY')
        worker_type = os.getenv('WORKER_TYPE')
        callback_url = os.getenv('CALLBACK_URL')
        modules = os.getenv('ANALYSIS_MODULES', 'all')
        
        # Validate required parameters
        if not all([job_id, s3_key, worker_type, callback_url]):
            print("ERROR: Missing required Nomad job parameters")
            print("Required: JOB_ID, S3_KEY, WORKER_TYPE, CALLBACK_URL")
            sys.exit(1)
        
        print(f"Job ID: {job_id}")
        print(f"S3 Key: {s3_key}")
        print(f"Worker Type: {worker_type}")
        print(f"Callback URL: {callback_url}")
        print(f"Analysis Modules: {modules}")
        
        # Extract hash from S3 key (remove sharding structure and .zip extension)
        # S3 key format: 09/f7/09f7d02a3c2382199458c98a62b045145ee54ab6aba86166aecf3d10c3c1444c.zip
        # Extract: 09f7d02a3c2382199458c98a62b045145ee54ab6aba86166aecf3d10c3c1444c
        try:
            parts = s3_key.split('/')
            if len(parts) == 3:
                sample_hash = parts[2].replace('.zip', '')
            else:
                # Fallback for non-sharded keys
                sample_hash = s3_key.replace('.zip', '')
        except Exception as e:
            print(f"ERROR: Failed to extract hash from S3 key {s3_key}: {e}")
            sys.exit(1)
        
        print(f"Extracted hash: {sample_hash}")
        
        # Set decompile flag based on worker type
        decompile = worker_type == 'decompilation'
        
        # Override modules if specified
        if modules != 'all':
            selected_modules = modules
        
        # Use S3-solo mode with extracted hash
        Ingestor(
            path=None,
            decompile=decompile,
            yara_scan=yara_scan,
            with_yara=with_yara,
            repository=repo,
            index_prefix=index_prefix or "nomad",
            selected_modules=selected_modules,
            s3_mode=False,  # Not bulk S3 mode
            s3_solo=True,   # Use S3-solo mode
            s3_solo_hash=sample_hash,
            dry_run=dry_run,
            force=force,
            decompile_modules=decompile_modules_set,
        ).ingest()

        # TODO: Add callback to send results to callback_url
        print(f"[INFO] Nomad job {job_id} completed. Callback URL: {callback_url}")
    
    elif s3_mode:
        print(f"S3 mode enabled")
        if s3_notes:
            print(f"S3 notes filter: {s3_notes}")
        Ingestor(
            path=None,
            decompile=decompile,
            yara_scan=yara_scan,
            with_yara=with_yara,
            repository=repo,
            index_prefix=index_prefix,
            selected_modules=selected_modules,
            s3_mode=True,
            s3_notes=s3_notes,
            magika_filter=magika_filter,
            dry_run=dry_run,
            force=force,
            decompile_modules=decompile_modules_set,
        ).ingest()
    else:
        print(f"Local mode with path: {path}")
        if path.endswith('.txt'):
            print(f"Reading file list from: {path}")

        Ingestor(
            path=path,
            decompile=decompile,
            yara_scan=yara_scan,
            with_yara=with_yara,
            repository=repo,
            index_prefix=index_prefix,
            selected_modules=selected_modules,
            dry_run=dry_run,
            force=force,
            decompile_modules=decompile_modules_set,
        ).ingest()

if __name__ == "__main__":
    main()