Ozgur Sinanoglu

359 papers A* 11A 46B 13C 27Misc 14Journal 191Unranked 56
YearRankTypeTitle / Venue / Authors
2026 conf
ASP-DAC
Rupesh Raj Karn, Johann Knechtel, Ozgur Sinanoglu
2026 J jnl
CoRR
Buddhi Perera, Zeng Wang, Weihua Xiao, Mohammed Nabeel, Ozgur Sinanoglu, Johann Knechtel, Ramesh Karri
2026 J jnl
CoRR
Weihua Xiao, Jason Blocklove, Matthew DeLorenzo, Johann Knechtel, Ozgur Sinanoglu, Kanad Basu, Jeyavijayan Rajendran, Siddharth Garg, Ramesh Karri
2026 J jnl
ACM Comput. Surv.
Ziad El Sayed, Zeng Wang, Hana Selmani, Johann Knechtel, Ozgur Sinanoglu, Lilas Alrahis
2026 conf
ICISSP (2)
Rupesh Raj Karn, Johann Knechtel, Siddharth Garg, Ramesh Karri, Ozgur Sinanoglu
2026 conf
ICISSP (2)
Rupesh Raj Karn, Paul R. Genssler, Hussam Amrouch, Ozgur Sinanoglu
2026 J jnl
CoRR
Weimin Fu, Zeng Wang, Minghao Shao, Ramesh Karri, Muhammad Shafique, Johann Knechtel, Ozgur Sinanoglu, Xiaolong Guo
2026 J jnl
J. Hardw. Syst. Secur.
Fangzhou Wang, Qijing Wang, Lilas Alrahis, Bangqi Fu, Shui Jiang, Xiaopeng Zhang, Ozgur Sinanoglu, Tsung-Yi Ho, Evangeline F. Y. Young, Johann Knechtel
2026 J jnl
CoRR
Saideep Sreekumar, Zeng Wang, Akashdeep Saha, Weihua Xiao, Minghao Shao, Muhammad Shafique, Ozgur Sinanoglu, Ramesh Karri, Johann Knechtel
2025 conf
CAI
Rupesh Raj Karn, Johann Knechtel, Ozgur Sinanoglu
2025 J jnl
IEEE Trans. Inf. Forensics Secur.
Jitendra Bhandari, Jayanth Gopinath, Mohammed Ashraf, Johann Knechtel, Ozgur Sinanoglu, Ramesh Karri
2025 C conf
ISCAS
Rupesh Raj Karn, Prithwish Basu Roy, Johann Knechtel, Ozgur Sinanoglu
2025 Misc conf
VTS
Akashdeep Saha, Prithwish Basu Roy, Johann Knechtel, Ramesh Karri, Ozgur Sinanoglu, Lilas Alrahis
2025 A* conf
USENIX Security Symposium
Lakshmi Likhitha Mankali, Mohammed Nabeel, Faiq Raees, Michail Maniatakos, Ozgur Sinanoglu, Johann Knechtel
2025 C conf
ICCD
Rupesh Raj Karn, Johann Knechtel, Ramesh Karri, Ozgur Sinanoglu
2025 conf
SOCC
Kangwei Xu, Denis Schwachhofer, Jason Blocklove, Ilia Polian, Peter Domanski, Dirk Pflüger, Siddharth Garg, Ramesh Karri, Ozgur Sinanoglu, Johann Knechtel, Zhuorui Zhao, Ulf Schlichtmann, Bing Li
2025 J jnl
CoRR
Kangwei Xu, Denis Schwachhofer, Jason Blocklove, Ilia Polian, Peter Domanski, Dirk Pflüger, Siddharth Garg, Ramesh Karri, Ozgur Sinanoglu, Johann Knechtel, Zhuorui Zhao, Ulf Schlichtmann, Bing Li
2025 C conf
ISCAS
Jitendra Bhandari, Mohammed Nabeel, Likhitha Mankali, Ozgur Sinanoglu, Ramesh Karri, Johann Knechtel
2025 J jnl
CoRR
Akashdeep Saha, Zeng Wang, Prithwish Basu Roy, Johann Knechtel, Ozgur Sinanoglu, Ramesh Karri
2025 J jnl
CoRR
Rupesh Raj Karn, Lakshmi Likhitha Mankali, Zeng Wang, Saideep Sreekumar, Prithwish Basu Roy, Ozgur Sinanoglu, Lilas Alrahis, Johann Knechtel
2025 conf
ICISSP (2)
Rupesh Raj Karn, Johann Knechtel, Ozgur Sinanoglu
2025 J jnl
CoRR
Zeng Wang, Minghao Shao, Akashdeep Saha, Ramesh Karri, Johann Knechtel, Muhammad Shafique, Ozgur Sinanoglu
2025 J jnl
J. Cryptogr. Eng.
Prithwish Basu Roy, Madhav Nair, Rajat Sadhukhan, Manaar Alam, Johann Knechtel, Hammond Pearce, Debdeep Mukhopadhyay, Ozgur Sinanoglu, Ramesh Karri
2025 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Brunno Alves de Abreu, Guilherme Paim, Lilas Alrahis, Paulo F. Flores, Ozgur Sinanoglu, Sergio Bampi, Hussam Amrouch
2025 J jnl
IEEE Access
Zeng Wang, Lilas Alrahis, Animesh Basak Chowdhury, Dominik Germek, Ramesh Karri, Ozgur Sinanoglu
2025 A conf
DATE
Lakshmi Likhitha Mankali, Jitendra Bhandari, Manaar Alam, Ramesh Karri, Michail Maniatakos, Ozgur Sinanoglu, Johann Knechtel
2025 J jnl
CoRR
Zeng Wang, Minghao Shao, Rupesh Raj Karn, Likhitha Mankali, Jitendra Bhandari, Ramesh Karri, Ozgur Sinanoglu, Muhammad Shafique, Johann Knechtel
2025 conf
MLCAD
Zeng Wang, Minghao Shao, Rupesh Raj Karn, Likhitha Mankali, Jitendra Bhandari, Ramesh Karri, Ozgur Sinanoglu, Muhammad Shafique, Johann Knechtel
2025 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Likhitha Mankali, Ozgur Sinanoglu, Satwik Patnaik
2025 J jnl
CoRR
Joshua Mashburn, Johann Knechtel, Florian Klemme, Hussam Amrouch, Ozgur Sinanoglu, Paul V. Gratz
2025 C conf
VLSI-SoC
Rupesh Raj Karn, Ozgur Sinanoglu
2025 J jnl
IACR Trans. Cryptogr. Hardw. Embed. Syst.
Johann Knechtel, Mohammad Eslami, Peng Zou, Min Wei, Xingyu Tong, Binggang Qiu, Zhijie Cai, Guohao Chen, Benchao Zhu, Jiawei Li, Jun Yu, Jianli Chen, Chun-Wei Chiu, Min-Feng Hsieh, Chia-Hsiu Ou, Ting-Chi Wang, Bangqi Fu, Qijing Wang, Yang Sun, Qin Luo, Anthony W. H. Lau, Fangzhou Wang, Evangeline F. Y. Young, Shunyang Bi, Guangxin Guo, Haonan Wu, Zhengguang Tang, Hailong You, Cong Li, Ramesh Karri, Ozgur Sinanoglu, Samuel Pagliarini
2025 J jnl
CoRR
Weihua Xiao, Zeng Wang, Minghao Shao, Raghu Vamshi Hemadri, Ozgur Sinanoglu, Muhammad Shafique, Johann Knechtel, Siddharth Garg, Ramesh Karri
2025 conf
CAI
Rupesh Raj Karn, Prithwish Basu Roy, Johann Knechtel, Ozgur Sinanoglu
2025 J jnl
CoRR
Zeng Wang, Minghao Shao, Jitendra Bhandari, Likhitha Mankali, Ramesh Karri, Ozgur Sinanoglu, Muhammad Shafique, Johann Knechtel
2025 J jnl
CoRR
Zeng Wang, Weihua Xiao, Minghao Shao, Raghu Vamshi Hemadri, Ozgur Sinanoglu, Muhammed Shafique, Ramesh Karri
2025 J jnl
CoRR
Zeng Wang, Minghao Shao, Mohammed Nabeel, Prithwish Basu Roy, Likhitha Mankali, Jitendra Bhandari, Ramesh Karri, Ozgur Sinanoglu, Muhammed Shafique, Johann Knechtel
2025 J jnl
CoRR
Prithwish Basu Roy, Akashdeep Saha, Manaar Alam, Johann Knechtel, Michail Maniatakos, Ozgur Sinanoglu, Ramesh Karri
2024 A conf
ICCAD
Jitendra Bhandari, Animesh Basak Chowdhury, Ozgur Sinanoglu, Siddharth Garg, Ramesh Karri, Johann Knechtel
2024 J jnl
CoRR
Jitendra Bhandari, Animesh Basak Chowdhury, Mohammed Nabeel, Ozgur Sinanoglu, Siddharth Garg, Ramesh Karri, Johann Knechtel
2024 conf
ISQED
Zhengyao Gu, Diego Troy Lopez, Lilas Alrahis, Ozgur Sinanoglu
2024 J jnl
CoRR
Zhengyao Gu, Diego Troy Lopez, Lilas Alrahis, Ozgur Sinanoglu
2024 conf
SPACE
Rupesh Raj Karn, Ozgur Sinanoglu
2024 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Jitendra Bhandari, Likhitha Mankali, Mohammed Nabeel, Ozgur Sinanoglu, Ramesh Karri, Johann Knechtel
2024 C conf
IOLTS
Mahya Morid Ahmadi, Lilas Alrahis, Ozgur Sinanoglu, Muhammad Shafique
2024 J jnl
IEEE Access
Paul R. Genssler, Lilas Alrahis, Ozgur Sinanoglu, Hussam Amrouch
2024 conf
ISQED
Rupesh Raj Karn, Johann Knechtel, Ozgur Sinanoglu
2024 J jnl
ACM Trans. Archit. Code Optim.
Gino A. Chacon, Charles Williams, Johann Knechtel, Ozgur Sinanoglu, Paul V. Gratz, Vassos Soteriou
2024 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Tarek Mohamed, Victor M. van Santen, Lilas Alrahis, Ozgur Sinanoglu, Hussam Amrouch
2024 A conf
DATE
Paul R. Genssler, Lilas Alrahis, Ozgur Sinanoglu, Hussam Amrouch
2024 A* conf
USENIX Security Symposium
Lakshmi Likhitha Mankali, Ozgur Sinanoglu, Satwik Patnaik
2024 conf
ISVLSI
Zeng Wang, Lilas Alrahis, Likhitha Mankali, Johann Knechtel, Ozgur Sinanoglu
2024 J jnl
CoRR
Zeng Wang, Lilas Alrahis, Likhitha Mankali, Johann Knechtel, Ozgur Sinanoglu
2024 J jnl
CoRR
Jitendra Bhandari, Mohammed Thari Nabeel, Likhitha Mankali, Ozgur Sinanoglu, Ramesh Karri, Johann Knechtel
2024 conf
NewCAS
Rupesh Raj Karn, Ozgur Sinanoglu
2024 J jnl
IACR Cryptol. ePrint Arch.
Prithwish Basu Roy, Johann Knechtel, Akashdeep Saha, Saideep Sreekumar, Likhitha Mankali, Mohammed Thari Nabeel, Debdeep Mukhopadhyay, Ramesh Karri, Ozgur Sinanoglu
2024 C conf
ISCAS
Rupesh Raj Karn, Johann Knechtel, Ozgur Sinanoglu
2024 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Rupesh Raj Karn, Johann Knechtel, Ozgur Sinanoglu
2024 J jnl
CoRR
Lakshmi Likhitha Mankali, Jitendra Bhandari, Manaar Alam, Ramesh Karri, Michail Maniatakos, Ozgur Sinanoglu, Johann Knechtel
2024 conf
APCCAS
Jitendra Bhandari, Jayanth Gopinath, Mohammed Ashraf, Johann Knechtel, Ozgur Sinanoglu, Ramesh Karri
2024 Misc conf
ICMLC
Rupesh Raj Karn, Johann Knechtel, Ozgur Sinanoglu
2024 C conf
VLSI-SoC
Lilas Alrahis, Mohammed Thari Nabeel, Johann Knechtel, Ozgur Sinanoglu
2024 J jnl
CoRR
Fangzhou Wang, Qijing Wang, Lilas Alrahis, Bangqi Fu, Shui Jiang, Xiaopeng Zhang, Ozgur Sinanoglu, Tsung-Yi Ho, Evangeline F. Y. Young, Johann Knechtel
2024 J jnl
IACR Cryptol. ePrint Arch.
Johann Knechtel, Mohammad Eslami, Peng Zou, Min Wei, Xingyu Tong, Binggang Qiu, Zhijie Cai, Guohao Chen, Benchao Zhu, Jiawei Li, Jun Yu, Jianli Chen, Chun-Wei Chiu, Min-Feng Hsieh, Chia-Hsiu Ou, Ting-Chi Wang, Bangqi Fu, Qijing Wang, Yang Sun, Qin Luo, Anthony W. H. Lau, Fangzhou Wang, Evangeline F. Y. Young, Shunyang Bi, Guangxin Guo, Haonan Wu, Zhengguang Tang, Hailong You, Cong Li, Ramesh Karri, Ozgur Sinanoglu, Samuel Pagliarini
2023 J jnl
IEEE Trans. Computers
Lilas Alrahis, Satwik Patnaik, Muhammad Abdullah Hanif, Muhammad Shafique, Ozgur Sinanoglu
2023 A* conf
DAC
Animesh Basak Chowdhury, Lilas Alrahis, Luca Collini, Johann Knechtel, Ramesh Karri, Siddharth Garg, Ozgur Sinanoglu, Benjamin Tan
2023 J jnl
CoRR
Animesh Basak Chowdhury, Lilas Alrahis, Luca Collini, Johann Knechtel, Ramesh Karri, Siddharth Garg, Ozgur Sinanoglu, Benjamin Tan
2023 conf
DSN-S
Zeng Wang, Lilas Alrahis, Dominik Sisejkovic, Ozgur Sinanoglu
2023 J jnl
CoRR
Zeng Wang, Lilas Alrahis, Dominik Sisejkovic, Ozgur Sinanoglu
2023 conf
ISPD
Mohammad Eslami, Johann Knechtel, Ozgur Sinanoglu, Ramesh Karri, Samuel Pagliarini
2023 J jnl
IACR Cryptol. ePrint Arch.
Jitendra Bhandari, Likhitha Mankali, Mohammed Nabeel, Ozgur Sinanoglu, Ramesh Karri, Johann Knechtel
2023 J jnl
CoRR
Mahya Morid Ahmadi, Lilas Alrahis, Ozgur Sinanoglu, Muhammad Shafique
2023 A conf
ISLPED
Mahya Morid Ahmadi, Lilas Alrahis, Ozgur Sinanoglu, Muhammad Shafique
2023 J jnl
CoRR
Mahya Morid Ahmadi, Lilas Alrahis, Ozgur Sinanoglu, Muhammad Shafique
2023 J jnl
IEEE Trans. Emerg. Top. Comput.
Swetaki Chatterjee, Nikhil Rangarajan, Satwik Patnaik, Dinesh Rajasekharan, Ozgur Sinanoglu, Yogesh Singh Chauhan
2023 Misc conf
VTS
Lilas Alrahis, Ozgur Sinanoglu
2023 J jnl
CoRR
Lilas Alrahis, Ozgur Sinanoglu
2023 conf
ASP-DAC
Lilas Alrahis, Johann Knechtel, Ozgur Sinanoglu
2023 J jnl
CoRR
Lilas Alrahis, Satwik Patnaik, Muhammad Abdullah Hanif, Muhammad Shafique, Ozgur Sinanoglu
2023 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Nimisha Limaye, Ozgur Sinanoglu
2023 J jnl
IEEE Trans. Neural Networks Learn. Syst.
Dinesh Rajasekharan, Nikhil Rangarajan, Satwik Patnaik, Ozgur Sinanoglu, Yogesh Singh Chauhan
2023 conf
ISPD
Fangzhou Wang, Qijing Wang, Bangqi Fu, Shui Jiang, Xiaopeng Zhang, Lilas Alrahis, Ozgur Sinanoglu, Johann Knechtel, Tsung-Yi Ho, Evangeline F. Y. Young
2023 conf
HCS
Luca Valente, Asif Veeran, Mattia Sinigaglia, Yvan Tortorella, Alessandro Nadalini, Nils Wistoff, Bruno Sá, Angelo Garofalo, Rafail Psiakis, M. Tolba, Ari Kulmala, Nimisha Limaye, Ozgur Sinanoglu, Sandro Pinto, Daniele Palossi, Luca Benini, Baker Mohammad, Davide Rossi
2023 C conf
IOLTS
Mahya Morid Ahmadi, Lilas Alrahis, Ozgur Sinanoglu, Muhammad Shafique
2023 J jnl
IEEE Trans. Inf. Forensics Secur.
Likhitha Mankali, Lilas Alrahis, Satwik Patnaik, Johann Knechtel, Ozgur Sinanoglu
2023 C conf
ISCAS
Hazem Lashen, Lilas Alrahis, Johann Knechtel, Ozgur Sinanoglu
2023 J jnl
CoRR
Hazem Lashen, Lilas Alrahis, Johann Knechtel, Ozgur Sinanoglu
2023 conf
SPACE
Lilas Alrahis, Likhitha Mankali, Satwik Patnaik, Abhrajit Sengupta, Johann Knechtel, Ozgur Sinanoglu
2023 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Likhitha Mankali, Satwik Patnaik, Nimisha Limaye, Johann Knechtel, Ozgur Sinanoglu
2023 conf
ISPD
Saideep Sreekumar, Mohammed Ashraf, Mohammed Thari Nabeel, Ozgur Sinanoglu, Johann Knechtel
2022 J jnl
Cryptogr.
Abhrajit Sengupta, Mohammed Nabeel, Mohammed Ashraf, Johann Knechtel, Ozgur Sinanoglu
2022 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Nikhil Rangarajan, Johann Knechtel, Nimisha Limaye, Ozgur Sinanoglu, Hussam Amrouch
2022 J jnl
IEEE Trans. Emerg. Top. Comput.
Nimisha Limaye, Christian Wachsmann, Mohammed Nabeel, Mohammed Ashraf, Arun K. Kanuparthi, Ozgur Sinanoglu
2022 A conf
ICCAD
Tim Bücher, Lilas Alrahis, Guilherme Paim, Sergio Bampi, Ozgur Sinanoglu, Hussam Amrouch
2022 J jnl
CoRR
Tim Bücher, Lilas Alrahis, Guilherme Paim, Sergio Bampi, Ozgur Sinanoglu, Hussam Amrouch
2022 conf
ISPD
Johann Knechtel, Jayanth Gopinath, Mohammed Ashraf, Jitendra Bhandari, Ozgur Sinanoglu, Ramesh Karri
2022 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Satwik Patnaik, Mohammed Ashraf, Haocheng Li, Johann Knechtel, Ozgur Sinanoglu
2022 J jnl
Integr.
Johann Knechtel, Tarek Ashraf, Natascha Fernengel, Satwik Patnaik, Mohammed Nabeel, Mohammed Ashraf, Ozgur Sinanoglu, Hussam Amrouch
2022 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Julian Leonhard, Nimisha Limaye, Shadi Turk, Alhassan Sayed, Alán Rodrigo Díaz Rizo, Hassan Aboushady, Ozgur Sinanoglu, Haralampos-G. Stratigopoulos
2022 J jnl
CoRR
Lilas Alrahis, Satwik Patnaik, Muhammad Shafique, Ozgur Sinanoglu
2022 A conf
ICCAD
Lilas Alrahis, Satwik Patnaik, Muhammad Shafique, Ozgur Sinanoglu
2022 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Lilas Alrahis, Abhrajit Sengupta, Johann Knechtel, Satwik Patnaik, Hani Saleh, Baker Mohammad, Mahmoud Al-Qutayri, Ozgur Sinanoglu
2022 J jnl
CoRR
Lilas Alrahis, Johann Knechtel, Florian Klemme, Hussam Amrouch, Ozgur Sinanoglu
2022 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Lilas Alrahis, Johann Knechtel, Florian Klemme, Hussam Amrouch, Ozgur Sinanoglu
2022 J jnl
IEEE Trans. Emerg. Top. Comput.
Lilas Alrahis, Satwik Patnaik, Muhammad Abdullah Hanif, Hani Saleh, Muhammad Shafique, Ozgur Sinanoglu
2022 J jnl
CoRR
Lilas Alrahis, Johann Knechtel, Ozgur Sinanoglu
2022 J jnl
IEEE Comput. Archit. Lett.
Gino A. Chacon, Charles Williams, Johann Knechtel, Ozgur Sinanoglu, Paul V. Gratz
2022 J jnl
CoRR
Gino A. Chacon, Charles Williams, Johann Knechtel, Ozgur Sinanoglu, Paul V. Gratz
2022 J jnl
CoRR
Satwik Patnaik, Nimisha Limaye, Ozgur Sinanoglu
2022 J jnl
IEEE Trans. Inf. Forensics Secur.
Satwik Patnaik, Nimisha Limaye, Ozgur Sinanoglu
2022 J jnl
IACR Cryptol. ePrint Arch.
Shaza Elsharief, Lilas Alrahis, Johann Knechtel, Ozgur Sinanoglu
2022 A conf
DATE
Lilas Alrahis, Satwik Patnaik, Muhammad Shafique, Ozgur Sinanoglu
2022 B conf
IJCNN
Mahya Morid Ahmadi, Lilas Alrahis, Alessio Colucci, Ozgur Sinanoglu, Muhammad Shafique
2022 J jnl
CoRR
Mahya Morid Ahmadi, Lilas Alrahis, Alessio Colucci, Ozgur Sinanoglu, Muhammad Shafique
2022 J jnl
IEEE Trans. Circuits Syst. II Express Briefs
Lilas Alrahis, Satwik Patnaik, Muhammad Shafique, Ozgur Sinanoglu
2022 J jnl
IEEE Trans. Emerg. Top. Comput.
Nikhil Rangarajan, Satwik Patnaik, Johann Knechtel, Ramesh Karri, Ozgur Sinanoglu, Shaloo Rakheja
2022 J jnl
IEEE Trans. Emerg. Top. Comput.
Nimisha Limaye, Nikhil Rangarajan, Satwik Patnaik, Ozgur Sinanoglu, Kanad Basu
2022 conf
ISVLSI
Nikhil Rangarajan, Satwik Patnaik, Mohammed Nabeel, Mohammed Ashraf, Shubham Rai, Gopal Raut, Heba Abunahla, Baker Mohammad, Santosh Kumar Vishvakarma, Akash Kumar, Johann Knechtel, Ozgur Sinanoglu
2022 J jnl
CoRR
Fangzhou Wang, Qijing Wang, Bangqi Fu, Shui Jiang, Xiaopeng Zhang, Lilas Alrahis, Ozgur Sinanoglu, Johann Knechtel, Tsung-Yi Ho, Evangeline F. Y. Young
2022 J jnl
IEEE Trans. Emerg. Top. Comput.
Shubham Rai, Satwik Patnaik, Ansh Rupani, Johann Knechtel, Ozgur Sinanoglu, Akash Kumar
2022 J jnl
IEEE Embed. Syst. Lett.
Nikhil Rangarajan, Johann Knechtel, Dinesh Rajasekharan, Ozgur Sinanoglu
2022 J jnl
IEEE Trans. Inf. Forensics Secur.
Nimisha Limaye, Satwik Patnaik, Ozgur Sinanoglu
2022 J jnl
CoRR
Saideep Sreekumar, Mohammed Ashraf, Mohammed Nabeel, Ozgur Sinanoglu, Johann Knechtel
2021 J jnl
IEEE Trans. Emerg. Top. Comput.
Satwik Patnaik, Mohammed Ashraf, Ozgur Sinanoglu, Johann Knechtel
2021 J jnl
IACR Cryptol. ePrint Arch.
Abhrajit Sengupta, Nimisha Limaye, Ozgur Sinanoglu
2021 J jnl
IACR Trans. Cryptogr. Hardw. Embed. Syst.
Abhrajit Sengupta, Nimisha Limaye, Ozgur Sinanoglu
2021 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Haocheng Li, Satwik Patnaik, Mohammed Ashraf, Haoyu Yang, Johann Knechtel, Bei Yu, Ozgur Sinanoglu, Evangeline F. Y. Young
2021 A conf
DATE
Nimisha Limaye, Satwik Patnaik, Ozgur Sinanoglu
2021 A* conf
DAC
Nimisha Limaye, Animesh Basak Chowdhury, Christian Pilato, Mohammed Thari Nabeel, Ozgur Sinanoglu, Siddharth Garg, Ramesh Karri
2021 A conf
DATE
Lilas Alrahis, Satwik Patnaik, Faiq Khalid, Muhammad Abdullah Hanif, Hani Saleh, Muhammad Shafique, Ozgur Sinanoglu
2021 J jnl
IEEE Trans. Emerg. Top. Comput.
Ozgur Sinanoglu, Ümit Y. Ogras
2021 J jnl
CoRR
Tapojyoti Mandal, Gino Chacon, Johann Knechtel, Ozgur Sinanoglu, Paul Gratz, Vassos Soteriou
2021 J jnl
CoRR
Lilas Alrahis, Satwik Patnaik, Muhammad Shafique, Ozgur Sinanoglu
2021 J jnl
IEEE Trans. Emerg. Top. Comput.
Lilas Alrahis, Muhammad Yasin, Nimisha Limaye, Hani Saleh, Baker Mohammad, Mahmoud Al-Qutayri, Ozgur Sinanoglu
2021 A conf
ICCAD
Johann Knechtel, Jayanth Gopinath, Jitendra Bhandari, Mohammed Ashraf, Hussam Amrouch, Shekhar Borkar, Sung Kyu Lim, Ozgur Sinanoglu, Ramesh Karri
2021 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Nimisha Limaye, Emmanouil Kalligeros, Nikolaos Karousos, Irene G. Karybali, Ozgur Sinanoglu
2021 A conf
ICCAD
Jens Lienig, Susann Rothe, Matthias Thiele, Nikhil Rangarajan, Mohammed Ashraf, Mohammed Nabeel, Hussam Amrouch, Ozgur Sinanoglu, Johann Knechtel
2021 J jnl
IEEE Trans. Inf. Forensics Secur.
Lilas Alrahis, Satwik Patnaik, Johann Knechtel, Hani Saleh, Baker Mohammad, Mahmoud Al-Qutayri, Ozgur Sinanoglu
2021 A conf
ICCAD
Lilas Alrahis, Satwik Patnaik, Muhammad Abdullah Hanif, Muhammad Shafique, Ozgur Sinanoglu
2021 J jnl
CoRR
Lilas Alrahis, Satwik Patnaik, Muhammad Abdullah Hanif, Muhammad Shafique, Ozgur Sinanoglu
2020 J jnl
CoRR
Mohammed Nabeel, Mohammed Ashraf, Satwik Patnaik, Vassos Soteriou, Ozgur Sinanoglu, Johann Knechtel
2020 J jnl
IEEE Trans. Computers
Mohammed Nabeel, Mohammed Ashraf, Satwik Patnaik, Vassos Soteriou, Ozgur Sinanoglu, Johann Knechtel
2020 J jnl
CoRR
Haocheng Li, Satwik Patnaik, Abhrajit Sengupta, Haoyu Yang, Johann Knechtel, Bei Yu, Evangeline F. Y. Young, Ozgur Sinanoglu
2020 J jnl
CoRR
Benjamin Tan, Ramesh Karri, Nimisha Limaye, Abhrajit Sengupta, Ozgur Sinanoglu, Md. Moshiur Rahman, Swarup Bhunia, Danielle Duvalsaint, Ronald D. Blanton, Amin Rezaei, Yuanqi Shen, Hai Zhou, Leon Li, Alex Orailoglu, Zhaokun Han, Austin Benedetti, Luciano Brignone, Muhammad Yasin, Jeyavijayan Rajendran, Michael Zuzak, Ankur Srivastava, Ujjwal Guin, Chandan Karfa, Kanad Basu, Vivek V. Menon, Matthew French, Peilin Song, Franco Stellari, Gi-Joon Nam, Peter Gadfort, Alric Althoff, Joseph Tostenrude, Saverio Fazzari, Eric Breckenfeld, Kenneth Plaks
2020 B conf
ETS
Farimah Farahmandi, Ozgur Sinanoglu, Ronald D. Blanton, Samuel Pagliarini
2020 A conf
DATE
Nimisha Limaye, Ozgur Sinanoglu
2020 J jnl
CoRR
Nimisha Limaye, Ozgur Sinanoglu
2020 J jnl
CoRR
Lilas Alrahis, Satwik Patnaik, Faiq Khalid, Muhammad Abdullah Hanif, Hani Saleh, Muhammad Shafique, Ozgur Sinanoglu
2020 J jnl
IEEE Trans. Emerg. Top. Comput.
Ozgur Sinanoglu, Ümit Y. Ogras
2020 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Abhishek Chakraborty, Nithyashankari Gummidipoondi Jayasankaran, Yuntao Liu, Jeyavijayan Rajendran, Ozgur Sinanoglu, Ankur Srivastava, Yang Xie, Muhammad Yasin, Michael Zuzak
2020 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Abhrajit Sengupta, Bodhisatwa Mazumdar, Muhammad Yasin, Ozgur Sinanoglu
2020 J jnl
CoRR
Satwik Patnaik, Mohammed Ashraf, Ozgur Sinanoglu, Johann Knechtel
2020 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Satwik Patnaik, Mohammed Ashraf, Ozgur Sinanoglu, Johann Knechtel
2020 J jnl
CoRR
Johann Knechtel, Satwik Patnaik, Mohammed Nabeel, Mohammed Ashraf, Yogesh Singh Chauhan, Jörg Henkel, Ozgur Sinanoglu, Hussam Amrouch
2020 J jnl
IEEE Micro
Johann Knechtel, Satwik Patnaik, Mohammed Nabeel, Mohammed Ashraf, Yogesh Singh Chauhan, Jörg Henkel, Ozgur Sinanoglu, Hussam Amrouch
2020 J jnl
IEEE Trans. Emerg. Top. Comput.
Muhammad Yasin, Bodhisatwa Mazumdar, Ozgur Sinanoglu, Jeyavijayan Rajendran
2020 J jnl
IEEE Access
Nikhil Rangarajan, Satwik Patnaik, Johann Knechtel, Ozgur Sinanoglu, Shaloo Rakheja
2020 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Satwik Patnaik, Nikhil Rangarajan, Johann Knechtel, Ozgur Sinanoglu, Shaloo Rakheja
2020 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Abhrajit Sengupta, Mohammed Nabeel, Nimisha Limaye, Mohammed Ashraf, Ozgur Sinanoglu
2020 book
Muhammad Yasin, Jeyavijayan Rajendran, Ozgur Sinanoglu
2020 J jnl
CoRR
Lilas Alrahis, Satwik Patnaik, Johann Knechtel, Hani Saleh, Baker Mohammad, Mahmoud Al-Qutayri, Ozgur Sinanoglu
2019 C conf
IOLTS
Johann Knechtel, Satwik Patnaik, Ozgur Sinanoglu
2019 J jnl
CoRR
Johann Knechtel, Satwik Patnaik, Ozgur Sinanoglu
2019 J jnl
CoRR
Satwik Patnaik, Mohammed Ashraf, Ozgur Sinanoglu, Johann Knechtel
2019 A conf
DATE
Abhrajit Sengupta, Mohammed Nabeel, Johann Knechtel, Ozgur Sinanoglu
2019 J jnl
CoRR
Abhrajit Sengupta, Mohammed Thari Nabeel, Johann Knechtel, Ozgur Sinanoglu
2019 J jnl
CoRR
Mohammed Nabeel, Mohammed Ashraf, Satwik Patnaik, Vassos Soteriou, Ozgur Sinanoglu, Johann Knechtel
2019 A* conf
DAC
Haocheng Li, Satwik Patnaik, Abhrajit Sengupta, Haoyu Yang, Johann Knechtel, Bei Yu, Evangeline F. Y. Young, Ozgur Sinanoglu
2019 J jnl
IACR Cryptol. ePrint Arch.
Abhrajit Sengupta, Ozgur Sinanoglu
2019 J jnl
IEEE Trans. Emerg. Top. Comput.
Ozgur Sinanoglu, Omer Khan
2019 A conf
ICCAD
Nimisha Limaye, Abhrajit Sengupta, Mohammed Nabeel, Ozgur Sinanoglu
2019 J jnl
CoRR
Nimisha Limaye, Abhrajit Sengupta, Mohammed Nabeel, Ozgur Sinanoglu
2019 conf
SECITC
Giovanni Di Crescenzo, Abhrajit Sengupta, Ozgur Sinanoglu, Muhammad Yasin
2019 A conf
DATE
Julian Leonhard, Muhammad Yasin, Shadi Turk, Mohammed Thari Nabeel, Marie-Minerve Louërat, Roselyne Chotin-Avot, Hassan Aboushady, Ozgur Sinanoglu, Haralampos-G. D. Stratigopoulos
2019 conf
SMACD
Julian Leonhard, Marie-Minerve Louërat, Hassan Aboushady, Ozgur Sinanoglu, Haralampos-G. D. Stratigopoulos
2019 conf
COINS
Johann Knechtel, Satwik Patnaik, Ozgur Sinanoglu
2019 J jnl
CoRR
Johann Knechtel, Satwik Patnaik, Ozgur Sinanoglu
2019 B conf
ETS
Nimisha Limaye, Muhammad Yasin, Ozgur Sinanoglu
2019 J jnl
CoRR
Nikhil Rangarajan, Satwik Patnaik, Johann Knechtel, Ozgur Sinanoglu, Shaloo Rakheja
2019 J jnl
IACR Cryptol. ePrint Arch.
Lilas Alrahis, Muhammad Yasin, Hani Saleh, Baker Mohammad, Mahmoud Al-Qutayri, Ozgur Sinanoglu
2019 J jnl
CoRR
Lilas Alrahis, Muhammad Yasin, Nimisha Limaye, Hani Saleh, Baker Mohammad, Mahmoud Al-Qutayri, Ozgur Sinanoglu
2019 conf
ASP-DAC
Lilas Alrahis, Muhammad Yasin, Hani Saleh, Baker Mohammad, Mahmoud Al-Qutayri, Ozgur Sinanoglu
2019 J jnl
IEEE Des. Test
Nikhil Rangarajan, Satwik Patnaik, Johann Knechtel, Ozgur Sinanoglu, Shaloo Rakheja
2019 J jnl
CoRR
Satwik Patnaik, Nikhil Rangarajan, Johann Knechtel, Ozgur Sinanoglu, Shaloo Rakheja
2019 J jnl
IEEE Trans. Inf. Forensics Secur.
Fangfei Yang, Ming Tang, Ozgur Sinanoglu
2019 J jnl
CoRR
Johann Knechtel, Jacek Gosciniak, Alabi Bojesomo, Satwik Patnaik, Ozgur Sinanoglu, Mahmoud Rasras
2018 Misc conf
VTS
Abhrajit Sengupta, Mohammed Thari Nabeel, Muhammad Yasin, Ozgur Sinanoglu
2018 J jnl
CoRR
Satwik Patnaik, Nikhil Rangarajan, Johann Knechtel, Ozgur Sinanoglu, Shaloo Rakheja
2018 A conf
DATE
Satwik Patnaik, Nikhil Rangarajan, Johann Knechtel, Ozgur Sinanoglu, Shaloo Rakheja
2018 J jnl
CoRR
Satwik Patnaik, Mohammed Ashraf, Ozgur Sinanoglu, Johann Knechtel
2018 A conf
ICCAD
Satwik Patnaik, Mohammed Ashraf, Ozgur Sinanoglu, Johann Knechtel
2018 J jnl
CoRR
Satwik Patnaik, Johann Knechtel, Mohammed Ashraf, Ozgur Sinanoglu
2018 conf
ASP-DAC
Satwik Patnaik, Johann Knechtel, Mohammed Ashraf, Ozgur Sinanoglu
2018 A conf
ICCAD
Abhrajit Sengupta, Mohammed Thari Nabeel, Mohammed Ashraf, Ozgur Sinanoglu
2018 J jnl
CoRR
Nikhil Rangarajan, Satwik Patnaik, Johann Knechtel, Ramesh Karri, Ozgur Sinanoglu, Shaloo Rakheja
2018 J jnl
CoRR
Satwik Patnaik, Mohammed Ashraf, Johann Knechtel, Ozgur Sinanoglu
2018 A* conf
DAC
Satwik Patnaik, Mohammed Ashraf, Johann Knechtel, Ozgur Sinanoglu
2018 A conf
ITC
Muhammad Yasin, Ozgur Sinanoglu
2018 A conf
DATE
Monir Zaman, Abhrajit Sengupta, Danqing Liu, Ozgur Sinanoglu, Yiorgos Makris, Jeyavijayan (JV) Rajendran
2017 J jnl
IEEE Des. Test
Samah Mohamed Saeed, Ozgur Sinanoglu
2017 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Chandra K. H. Suresh, Sule Ozev, Ozgur Sinanoglu
2017 C conf
VLSI-SoC
Muhammad Yasin, Ozgur Sinanoglu
2017 J jnl
IEEE Trans. Emerg. Top. Comput.
Swarup Bhunia, An Chen, Ozgur Sinanoglu, Jason M. Fung
2017 J jnl
IPSJ Trans. Syst. LSI Des. Methodol.
Johann Knechtel, Ozgur Sinanoglu, Ibrahim Abe M. Elfadel, Jens Lienig, Cliff C. N. Sze
2017 J jnl
CoRR
Satwik Patnaik, Mohammed Ashraf, Johann Knechtel, Ozgur Sinanoglu
2017 A conf
ICCAD
Satwik Patnaik, Mohammed Ashraf, Johann Knechtel, Ozgur Sinanoglu
2017 A* conf
DAC
Johann Knechtel, Ozgur Sinanoglu
2017 J jnl
CoRR
Johann Knechtel, Ozgur Sinanoglu
2017 A ed.
AsiaCCS
Ramesh Karri, Ozgur Sinanoglu, Ahmad-Reza Sadeghi, Xun Yi
2017 A* conf
CCS
Muhammad Yasin, Abhrajit Sengupta, Mohammed Thari Nabeel, Mohammed Ashraf, Jeyavijayan Rajendran, Ozgur Sinanoglu
2017 J jnl
IACR Cryptol. ePrint Arch.
Muhammad Yasin, Bodhisatwa Mazumdar, Ozgur Sinanoglu, Jeyavijayan Rajendran
2017 J jnl
CoRR
Abhrajit Sengupta, Satwik Patnaik, Johann Knechtel, Mohammed Ashraf, Siddharth Garg, Ozgur Sinanoglu
2017 A conf
ICCAD
Abhrajit Sengupta, Satwik Patnaik, Johann Knechtel, Mohammed Ashraf, Siddharth Garg, Ozgur Sinanoglu
2017 conf
ASP-DAC
Muhammad Yasin, Bodhisatwa Mazumdar, Ozgur Sinanoglu, Jeyavijayan Rajendran
2017 conf
HOST
Muhammad Yasin, Bodhisatwa Mazumdar, Jeyavijayan (JV) Rajendran, Ozgur Sinanoglu
2017 J jnl
IEEE Trans. Inf. Forensics Secur.
Muhammad Yasin, Ozgur Sinanoglu, Jeyavijayan Rajendran
2017 J jnl
IEEE Trans. Emerg. Top. Comput.
Bodhisatwa Mazumdar, Samah Mohamed Saeed, Sk Subidh Ali, Ozgur Sinanoglu
2017 J jnl
IEEE Trans. Circuits Syst. I Regul. Pap.
Muhammad Yasin, Temesghen Tekeste, Hani Saleh, Baker Mohammad, Ozgur Sinanoglu, Mohammed Ismail
2017 conf
ACM Great Lakes Symposium on VLSI
Muhammad Yasin, Abhrajit Sengupta, Benjamin Carrión Schäfer, Yiorgos Makris, Ozgur Sinanoglu, Jeyavijayan Rajendran
2016 J jnl
ACM Trans. Design Autom. Electr. Syst.
Bodhisatwa Mazumdar, Sk Subidh Ali, Ozgur Sinanoglu
2016 J jnl
IEEE Micro
Chandra K. H. Suresh, Bodhisatwa Mazumdar, Sk Subidh Ali, Ozgur Sinanoglu
2016 A conf
DATE
Muhammad Yasin, Samah Mohamed Saeed, Jeyavijayan Rajendran, Ozgur Sinanoglu
2016 J jnl
ACM Trans. Design Autom. Electr. Syst.
Chandra K. H. Suresh, Ozgur Sinanoglu, Sule Ozev
2016 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Jeyavijayan (JV) Rajendran, Ozgur Sinanoglu, Ramesh Karri
2016 A conf
ICCAD
Muhammad Yasin, Bodhisatwa Mazumdar, Ozgur Sinanoglu, Jeyavijayan Rajendran
2016 conf
DTIS
Ozgur Sinanoglu
2016 J jnl
ACM J. Emerg. Technol. Comput. Syst.
Ozgur Sinanoglu, Ramesh Karri
2016 conf
BioCAS
Sk Subidh Ali, Mohamed Ibrahim, Ozgur Sinanoglu, Krishnendu Chakrabarty, Ramesh Karri
2016 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Muhammad Yasin, Jeyavijayan (JV) Rajendran, Ozgur Sinanoglu, Ramesh Karri
2016 C conf
IOLTS
Chandra K. H. Suresh, Bodhisatwa Mazumdar, Sk Subidh Ali, Ozgur Sinanoglu
2016 conf
HOST
Muhammad Yasin, Bodhisatwa Mazumdar, Jeyavijayan (JV) Rajendran, Ozgur Sinanoglu
2016 J jnl
IACR Cryptol. ePrint Arch.
Muhammad Yasin, Bodhisatwa Mazumdar, Ozgur Sinanoglu, Jeyavijayan Rajendran
2016 J jnl
IEEE ACM Trans. Comput. Biol. Bioinform.
Sk Subidh Ali, Mohamed Ibrahim, Ozgur Sinanoglu, Krishnendu Chakrabarty, Ramesh Karri
2016 J jnl
Computer
Sk Subidh Ali, Mohamed Ibrahim, Jeyavijayan Rajendran, Ozgur Sinanoglu, Krishnendu Chakrabarty
2016 J jnl
IACR Cryptol. ePrint Arch.
Muhammad Yasin, Ozgur Sinanoglu, Jeyavijayan Rajendran
2016 Misc conf
VTS
Bodhisatwa Mazumdar, Samah Mohamed Saeed, Sk Subidh Ali, Ozgur Sinanoglu
2015 C conf
ISCAS
Jerry Backer, Sk Subidh Ali, Kurt Rosenfeld, David Hély, Ozgur Sinanoglu, Ramesh Karri
2015 J jnl
ACM Trans. Design Autom. Electr. Syst.
Chandra K. H. Suresh, Sule Ozev, Ozgur Sinanoglu
2015 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Jeyavijayan Rajendran, Aman Ali, Ozgur Sinanoglu, Ramesh Karri
2015 J jnl
IEEE Trans. Computers
Jeyavijayan Rajendran, Huan Zhang, Chi Zhang, Garrett S. Rose, Youngok K. Pino, Ozgur Sinanoglu, Ramesh Karri
2015 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Ramesh Karri, Farinaz Koushanfar, Ozgur Sinanoglu, Yiorgos Makris, Ken Mai, Ahmad-Reza Sadeghi, Swarup Bhunia
2015 J jnl
ACM Trans. Archit. Code Optim.
Naghmeh Karimi, Arun Karthik Kanuparthi, Xueyang Wang, Ozgur Sinanoglu, Ramesh Karri
2015 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Sachhidh Kannan, Naghmeh Karimi, Ramesh Karri, Ozgur Sinanoglu
2015 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Sk Subidh Ali, Samah Mohamed Saeed, Ozgur Sinanoglu, Ramesh Karri
2015 C conf
IOLTS
Bodhisatwa Mazumdar, Sk Subidh Ali, Ozgur Sinanoglu
2015 conf
DFTS
Sk Subidh Ali, Ozgur Sinanoglu
2015 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Sachhidh Kannan, Naghmeh Karimi, Ozgur Sinanoglu, Ramesh Karri
2015 conf
DFTS
Muhammad Yasin, Bodhisatwa Mazumdar, Sk Subidh Ali, Ozgur Sinanoglu
2015 C conf
ICCD
Sk Subidh Ali, Mohamed Ibrahim, Ozgur Sinanoglu, Krishnendu Chakrabarty, Ramesh Karri
2015 Misc conf
VTS
Sk Subidh Ali, Ozgur Sinanoglu
2015 C conf
VLSI-SoC
Samah Mohamed Saeed, Bodhisatwa Mazumdar, Sk Subidh Ali, Ozgur Sinanoglu
2015 conf
IDT
Muhammad Yasin, Ozgur Sinanoglu
2014 C conf
VLSI-SoC
Sk Subidh Ali, Ozgur Sinanoglu, Ramesh Karri
2014 A conf
DATE
Doohwang Chang, Sule Ozev, Ozgur Sinanoglu, Ramesh Karri
2014 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Samah Mohamed Saeed, Ozgur Sinanoglu
2014 Misc conf
VTS
Sachhidh Kannan, Naghmeh Karimi, Ramesh Karri, Ozgur Sinanoglu
2014 conf
HOST
Sk Subidh Ali, Ozgur Sinanoglu, Samah Mohamed Saeed, Ramesh Karri
2014 J jnl
Proc. IEEE
Jeyavijayan Rajendran, Ozgur Sinanoglu, Ramesh Karri
2014 A* conf
DAC
Sachhidh Kannan, Naghmeh Karimi, Ozgur Sinanoglu
2014 conf
DTIS
Abishek Ramdas, Samah Mohamed Saeed, Ozgur Sinanoglu
2014 A conf
ITC
Samah Mohamed Saeed, Sk Subidh Ali, Ozgur Sinanoglu, Ramesh Karri
2014 B conf
ETS
Sk Subidh Ali, Ozgur Sinanoglu, Ramesh Karri
2013 A conf
DATE
Chandra K. H. Suresh, Ender Yilmaz, Sule Ozev, Ozgur Sinanoglu
2013 J jnl
J. Electron. Test.
Ozgur Sinanoglu, Vishwani D. Agrawal
2013 conf
LATW
Ozgur Sinanoglu
2013 J jnl
IEEE Des. Test
Samah Mohamed Saeed, Ozgur Sinanoglu
2013 C conf
IOLTS
Jeyavijayan Rajendran, Huan Zhang, Ozgur Sinanoglu, Ramesh Karri
2013 A conf
DATE
Jeyavijayan Rajendran, Ozgur Sinanoglu, Ramesh Karri
2013 conf
VLSI-SoC (Selected Papers)
Sk Subidh Ali, Samah Mohamed Saeed, Ozgur Sinanoglu, Ramesh Karri
2013 C conf
VLSI-SoC
Sk Subidh Ali, Ozgur Sinanoglu, Samah Mohamed Saeed, Ramesh Karri
2013 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Samah Mohamed Saeed, Ozgur Sinanoglu, Sobeeh Almukhaizim
2013 B conf
ETS
Ozgur Sinanoglu, Naghmeh Karimi, Jeyavijayan Rajendran, Ramesh Karri, Yier Jin, Ke Huang, Yiorgos Makris
2013 J jnl
J. Electron. Test.
Sobeeh Almukhaizim, Sara Bunian, Ozgur Sinanoglu
2013 C conf
IOLTS
Sk Subidh Ali, Samah Mohamed Saeed, Ozgur Sinanoglu, Ramesh Karri
2013 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Ozgur Sinanoglu
2013 A* conf
CCS
Jeyavijayan Rajendran, Michael Sam, Ozgur Sinanoglu, Ramesh Karri
2013 C conf
ICCD
Sachhidh Kannan, Ramesh Karri, Ozgur Sinanoglu
2013 Misc conf
VLSI Design
Sachhidh Kannan, Jeyavijayan Rajendran, Ramesh Karri, Ozgur Sinanoglu
2013 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Abishek Ramdas, Ozgur Sinanoglu
2013 A conf
ITC
Jeyavijayan Rajendran, Ozgur Sinanoglu, Ramesh Karri
2012 B conf
ETS
Chandra K. H. Suresh, Ozgur Sinanoglu, Sule Ozev
2012 B conf
ETS
Ender Yilmaz, Sule Ozev, Ozgur Sinanoglu, Peter C. Maxwell
2012 J jnl
Comput. J.
Mehmet Hakan Karaata, Ozgur Sinanoglu, Bader F. AlBdaiwi
2012 B conf
ETS
Samah Mohamed Saeed, Ozgur Sinanoglu
2012 Misc conf
VLSI Design
Ozgur Sinanoglu
2012 C conf
ICCD
Sachhidh Kannan, Jeyavijayan Rajendran, Ramesh Karri, Ozgur Sinanoglu
2012 J jnl
Comput. J.
Ozgur Sinanoglu
2012 A conf
DATE
Jeyavijayan Rajendran, Youngok K. Pino, Ozgur Sinanoglu, Ramesh Karri
2012 J jnl
IET Comput. Digit. Tech.
Samah Mohamed Saeed, Ozgur Sinanoglu
2012 conf
LATW
Ozgur Sinanoglu, Vishwani D. Agrawal
2012 A* conf
DAC
Jeyavijayan Rajendran, Youngok K. Pino, Ozgur Sinanoglu, Ramesh Karri
2012 C conf
IOLTS
Ozgur Sinanoglu
2012 B conf
ETS
Abishek Ramdas, Ozgur Sinanoglu
2011 Misc conf
VTS
Jeyavijayan Rajendran, Vinayaka Jyothi, Ozgur Sinanoglu, Ramesh Karri
2011 J jnl
Sci. China Inf. Sci.
Nader Alawadhi, Ozgur Sinanoglu, Mohammed Al-Mulla
2011 conf
LATW
Sobeeh Almukhaizim, Ozgur Sinanoglu
2011 Misc conf
VTS
Samah Mohamed Saeed, Ozgur Sinanoglu
2011 J jnl
IET Comput. Digit. Tech.
Sobeeh Almukhaizim, Ozgur Sinanoglu
2011 Misc conf
VTS
Nader Alawadhi, Ozgur Sinanoglu
2011 conf
Asian Test Symposium
Ozgur Sinanoglu
2011 J jnl
J. Low Power Electron.
Sobeeh Almukhaizim, Eman AlQuraishi, Ozgur Sinanoglu
2011 conf
LATW
Sobeeh Almukhaizim, Eman AlQuraishi, Ozgur Sinanoglu
2011 B conf
ETS
Ozgur Sinanoglu
2011 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Ozgur Sinanoglu, Sobeeh Almukhaizim
2010 B conf
ETS
Nader Alawadhi, Ozgur Sinanoglu, Mohammed Al-Mulla
2010 J jnl
IEEE Trans. Computers
Ozgur Sinanoglu, Mehmet Hakan Karaata, Bader F. AlBdaiwi
2010 conf
IDT
Junxia Ma, Mohammad Tehranipoor, Ozgur Sinanoglu, Sobeeh Almukhaizim
2010 J jnl
J. Electron. Test.
Sobeeh Almukhaizim, Shouq Alsubaihi, Ozgur Sinanoglu
2010 conf
Asian Test Symposium
Nader Alawadhi, Ozgur Sinanoglu, Mohammed Al-Mulla
2010 A conf
ITC
Ozgur Sinanoglu, Sobeeh Almukhaizim
2010 B conf
ETS
Sobeeh Almukhaizim, Sara Bunian, Ozgur Sinanoglu
2010 conf
IDT
Sobeeh Almukhaizim, Sara Bunian, Ozgur Sinanoglu
2010 C conf
IOLTS
Sobeeh Almukhaizim, Sara Bunian, Ozgur Sinanoglu
2010 conf
Asian Test Symposium
Samah Mohamed Saeed, Ozgur Sinanoglu
2009 J jnl
J. Interconnect. Networks
Mohammed Al-Mulla, Ozgur Sinanoglu, Mohammed Nael Taha, Nader Alawadhi
2009 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Sobeeh Almukhaizim, Ozgur Sinanoglu
2009 conf
DFT
Nader Alawadhi, Ozgur Sinanoglu
2009 J jnl
J. Comput. Sci. Technol.
Ozgur Sinanoglu, Mohammed Al-Mulla, Noora A. Shunaiber, Alex Orailoglu
2009 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Ozgur Sinanoglu, Philip Schremmer
2009 J jnl
IEEE Des. Test Comput.
Ozgur Sinanoglu, Erik Jan Marinissen, Anuja Sehgal, Jeff Fitzgerald, Jeff Rearick
2009 J jnl
IET Comput. Digit. Tech.
Ozgur Sinanoglu, Mohammed Al-Mulla, Mohammed Nael Taha
2009 J jnl
IEEE Trans. Very Large Scale Integr. Syst.
Ozgur Sinanoglu, Sobeeh Almukhaizim
2009 A conf
ITC
Ozgur Sinanoglu, Sobeeh Almukhaizim
2008 A conf
ITC
Ozgur Sinanoglu
2008 A conf
DATE
Ozgur Sinanoglu, Erik Jan Marinissen
2008 J jnl
IET Comput. Digit. Tech.
Ozgur Sinanoglu
2008 J jnl
J. Electron. Test.
Ozgur Sinanoglu
2008 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Ozgur Sinanoglu, Tsvetomir Petrov
2008 A conf
ITC
Sobeeh Almukhaizim, Ozgur Sinanoglu
2008 J jnl
IEEE Trans. Comput. Aided Des. Integr. Circuits Syst.
Ozgur Sinanoglu
2008 J jnl
J. Electron. Test.
Ozgur Sinanoglu
2007 A conf
DATE
Ozgur Sinanoglu, Tsvetomir Petrov
2007 A conf
DATE
Ozgur Sinanoglu, Philip Schremmer
2007 J jnl
J. Comput. Sci. Technol.
Ozgur Sinanoglu
2005 J jnl
J. Comput. Sci. Technol.
Ozgur Sinanoglu, Alex Orailoglu
2005 J jnl
IEEE Trans. Reliab.
Ozgur Sinanoglu, Alex Orailoglu
2004 A conf
ITC
Ozgur Sinanoglu, Alex Orailoglu
2004 conf
ASP-DAC
Ozgur Sinanoglu, Alex Orailoglu
2004 C conf
ICCD
Baris Arslan, Ozgur Sinanoglu, Alex Orailoglu
2004 J jnl
J. Syst. Archit.
Ozgur Sinanoglu, Alex Orailoglu
2004 B conf
ETS
Ozgur Sinanoglu, Alex Orailoglu
2004 A conf
DATE
Ozgur Sinanoglu, Alex Orailoglu
2003 C conf
ICCD
Ozgur Sinanoglu, Alex Orailoglu
2003 J jnl
IEEE Des. Test Comput.
Ozgur Sinanoglu, Alex Orailoglu
2003 C conf
DSD
Ozgur Sinanoglu, Alex Orailoglu
2003 A conf
ITC
Ozgur Sinanoglu, Alex Orailoglu
2003 conf
ETW
Ozgur Sinanoglu, Alex Orailoglu
2003 A conf
ICCAD
Ozgur Sinanoglu, Alex Orailoglu
2003 J jnl
J. Electron. Test.
Ozgur Sinanoglu, Ismet Bayraktaroglu, Alex Orailoglu
2003 conf
Asian Test Symposium
Ozgur Sinanoglu, Alex Orailoglu
2002 A conf
ICCAD
Ozgur Sinanoglu, Alex Orailoglu
2002 conf
ETW
Ozgur Sinanoglu, Ismet Bayraktaroglu, Alex Orailoglu
2002 J jnl
IEEE Micro
Ozgur Sinanoglu, Alex Orailoglu
2002 conf
DFT
Ozgur Sinanoglu, Alex Orailoglu
2002 A conf
ITC
Ozgur Sinanoglu, Ismet Bayraktaroglu, Alex Orailoglu
2002 Misc conf
VTS
Ozgur Sinanoglu, Ismet Bayraktaroglu, Alex Orailoglu
2001 conf
Asian Test Symposium
Ozgur Sinanoglu, Alex Orailoglu
2001 Misc conf
VTS
Ozgur Sinanoglu, Alex Orailoglu
2001 A conf
ITC
Ozgur Sinanoglu, Alex Orailoglu
redb/ingestor.py
← Index redb/ingestor.py python
"""
REDB Ingestor - Core ingestion orchestration.

This module contains the Ingestor class which orchestrates the entire
sample processing pipeline: querying catalogs, downloading from S3,
dispatching to workers, and collecting results.

The actual implementation is split across focused modules:
- redb.queries: Database query and deduplication functions
- redb.s3_utils: S3/MinIO client and file operations
- redb.workers: File processing and worker functions
- redb.logging_utils: Logging setup and ImportResult enum

For backward compatibility, all public names from these modules are
re-exported here so that `from redb.ingestor import *` continues to work.
"""
import multiprocessing
from multiprocessing import Pool
from datetime import datetime
import os
import sys
import gc
import psutil
import time
import json
import tempfile
import warnings
from urllib3.exceptions import InsecureRequestWarning
from dotenv import load_dotenv

load_dotenv(override=True)

warnings.filterwarnings("ignore", category=InsecureRequestWarning, module="urllib3")
warnings.filterwarnings("ignore", category=UserWarning, module="elasticsearch")

# =============================================================================
# Re-exports for backward compatibility
# =============================================================================
# These imports ensure that `from redb.ingestor import X` and
# `@patch('redb.ingestor.X')` continue to work after the refactor.

from redb.logging_utils import (  # noqa: F401
    ImportResult,
    FileNameFormatter,
    setup_logger,
    logger_thread,
    setup_direct_logger,
)

from redb.queries import (  # noqa: F401
    get_supported_formats,
    get_db_catalog_connection,
    fetch_s3_objects_by_repository,
    fetch_s3_objects_by_date_range,
    fetch_analyzed_samples,
    is_in_db,
    is_in_code_db,
    is_in_db_bulk,
)

from redb.s3_utils import (  # noqa: F401
    get_minio_client,
    generate_s3_key_from_hash,
    download_s3_object,
    extract_fat_slices,
)

from redb.workers import (  # noqa: F401
    process_s3_file,
    process_file,
    _process_file_internal,
    process_zip_file,
    process_7zip_file,
    process_binary_file,
    worker,
    direct_s3_worker,
    is_binary_file,
    check_dotnet,
    check_high_swap,
    get_module_by_name,
    filter_selected_modules,
    _is_packed,
)

# Re-export settings for patches like @patch('redb.ingestor.settings')
from redb import settings  # noqa: F401

# Re-export hashlib and Magika for patches like @patch('redb.ingestor.hashlib')
import hashlib  # noqa: F401
try:
    from magika import Magika  # noqa: F401
except ImportError:
    pass

# Re-export py7zr for patches like @patch('redb.ingestor.py7zr')
try:
    import py7zr  # noqa: F401
except ImportError:
    pass


class Ingestor:
    def __init__(
        self,
        path=None,
        decompile=False,
        yara_scan=False,
        with_yara=False,
        repository="",
        index_prefix="",
        selected_modules=None,
        s3_mode=False,
        s3_notes=None,
        magika_filter=None,
        s3_solo=False,
        s3_solo_hash=None,
        s3_solo_key=None,
        dry_run=False,
        force=False,
        job_id=None,
        start_date=None,
        end_date=None,
        analyzed=False,
        decompile_modules=None,
        rerun=False,
    ):

        # Set multiprocessing start method as early as possible
        try:
            multiprocessing.set_start_method('spawn', force=True)
        except RuntimeError:
            current_method = multiprocessing.get_start_method()
            if current_method != 'spawn':
                print(f"[WARNING] Multiprocessing start method is {current_method}, not 'spawn'. This may cause issues.")

        self.path = path
        self.decompile = decompile
        self.yara_scan = yara_scan
        self.with_yara = with_yara
        self.repository = repository
        self.index_prefix = index_prefix
        self.selected_modules = selected_modules
        self.s3_mode = s3_mode
        self.s3_notes = s3_notes
        self.magika_filter = magika_filter
        self.s3_solo = s3_solo
        self.s3_solo_hash = s3_solo_hash
        self.s3_solo_key = s3_solo_key
        self.dry_run = dry_run
        # --rerun implies force at the worker level: the query already selects
        # only already-disassembled samples, so the per-file is_in_code_db
        # dedup check must be skipped or every sample gets skipped.
        self.force = force or rerun
        self.job_id = job_id
        self.start_date = start_date
        self.end_date = end_date
        self.analyzed = analyzed
        self.decompile_modules = decompile_modules or {"all"}
        self.rerun = rerun

        self.manager = multiprocessing.Manager()
        self.file_type_stats = self.manager.dict()
        self.total_results = self.manager.dict({result: 0 for result in ImportResult})

        self.today = datetime.today().strftime("%Y%m%dT%H%M%S")
        log_base_path = os.getenv("LOG_FILE_PATH", "/app/logs/")
        if not log_base_path.endswith("/"):
            log_base_path += "/"
        index_suffix = self.index_prefix.upper() if self.index_prefix else "DEFAULT"
        self.log_file = log_base_path + f"{self.today}-{self.repository}-{index_suffix}.txt"

        with open(self.log_file, "a") as f:
            f.write(f"CMD: {' '.join(sys.argv)}\n")
            f.write(f"=== Ingestor started at {datetime.now()} ===\n")


    def restart_worker_pool(self):
        """Restart the worker pool to help address memory issues"""
        if hasattr(self, 'pool') and self.pool:
            try:
                print("[INFO] Restarting worker pool to address memory fragmentation")
                self.pool.close()
                self.pool.join()
                self.pool = None
            except:
                pass

        # Force garbage collection
        gc.collect(2)


    def _process_files_streaming(self, s3_files, temp_dir, total_files, parallel_proc, decompile=None):
        """Process files in a streaming fashion using direct process management."""
        import queue

        # Use the instance's decompile flag if not provided
        if decompile is None:
            decompile = self.decompile

        # Use local tracking for statistics
        completed_count = 0
        skipped_count = 0
        failed_count = 0
        correctly_processed = 0
        partially_processed = 0
        filetype_stats = {}

        # Create a result queue for workers to return their results
        result_queue = multiprocessing.Queue()

        # Create a process ID tracking dict
        active_processes = {}  # {proc_id: (process, start_time, s3_key)}

        mode_str = "decompile" if decompile else "analysis"
        print(f"[INFO] Starting streaming processing of {len(s3_files)} files with {parallel_proc} workers ({mode_str} mode)")

        # Process files
        file_index = 0
        # Use different timeouts based on mode
        if decompile:
            worker_timeout = int(os.getenv("DECOMPILE_WORKER_TIMEOUT", "2700"))
        else:
            worker_timeout = int(os.getenv("REDB_TIMEOUT", "1200"))

        # Main processing loop
        while file_index < len(s3_files) or active_processes:
            # Start new processes if we have capacity and files to process
            while len(active_processes) < parallel_proc and file_index < len(s3_files):
                s3_bucket, s3_key, first_seen = s3_files[file_index]
                file_number = file_index + 1

                # Create and start a new process
                p = multiprocessing.Process(
                    target=direct_s3_worker,
                    args=(
                        s3_bucket,
                        s3_key,
                        temp_dir,
                        decompile,  # Pass the actual decompile flag
                        self.index_prefix,
                        self.log_file,
                        file_number,
                        total_files,
                        self.selected_modules,
                        result_queue,
                        self.dry_run,
                        self.yara_scan,
                        self.with_yara,
                        self.force,
                        self.decompile_modules,
                        first_seen,
                    )
                )
                p.start()

                # Track the process
                active_processes[p.pid] = (p, time.time(), s3_key, file_number)
                file_index += 1

                # Small delay to avoid overloading
                time.sleep(0.05)

            # Check for completed processes
            try:
                # Poll the result queue with a timeout
                while True:
                    try:
                        result = result_queue.get(block=True, timeout=1)

                        # Process result
                        s3_key = result.get('s3_key')
                        status = result.get('status', 'FAILED')
                        filetype = result.get('filetype')
                        file_number = result.get('file_number')
                        worker_pid = result.get('worker_pid')

                        # Remove from active processes if present
                        if worker_pid in active_processes:
                            del active_processes[worker_pid]

                        # Update statistics
                        if status == 'CORRECTLY':
                            correctly_processed += 1
                        elif status == 'PARTIALLY':
                            partially_processed += 1
                        elif status == 'SKIPPED':
                            skipped_count += 1
                        else:  # Any other status is treated as failure
                            failed_count += 1

                        if filetype:
                            filetype_stats[filetype] = filetype_stats.get(filetype, 0) + 1

                        # Update progress
                        completed_count += 1
                        if completed_count % 50 == 0 or completed_count == 1:
                            print(f"[INFO] Completed {completed_count}/{total_files} files. Last: {s3_key}")
                            print(f"[INFO] Progress - OK: {correctly_processed}, Partial: {partially_processed}, Failed: {failed_count}, Skipped: {skipped_count}, Active: {len(active_processes)}")

                    except queue.Empty:
                        # No results in the queue, break and check for timeouts
                        break

                # Check for timed-out processes
                current_time = time.time()
                timed_out_pids = []

                for pid, (proc, start_time, s3_key, file_number) in active_processes.items():
                    runtime = current_time - start_time

                    # Check if process has exceeded timeout
                    if runtime > worker_timeout:
                        print(f"[WARNING] Process {pid} processing {s3_key} exceeded timeout ({runtime:.0f}s > {worker_timeout}s)")

                        # Terminate the process
                        try:
                            proc.terminate()
                            time.sleep(0.1)  # Give it a moment to terminate
                            if proc.is_alive():
                                # If still alive, force kill
                                proc.kill()
                        except:
                            pass

                        # Clean up any child processes
                        try:
                            parent = psutil.Process(pid)
                            for child in parent.children(recursive=True):
                                try:
                                    child.kill()
                                except:
                                    pass
                        except:
                            pass

                        # Mark as failed
                        failed_count += 1
                        completed_count += 1
                        timed_out_pids.append(pid)

                    # Check if process has terminated without returning a result
                    elif not proc.is_alive():
                        print(f"[WARNING] Process {pid} processing {s3_key} terminated without result")

                        # Mark as failed
                        failed_count += 1
                        completed_count += 1
                        timed_out_pids.append(pid)

                # Remove timed-out processes from tracking
                for pid in timed_out_pids:
                    if pid in active_processes:
                        del active_processes[pid]

                # Sleep briefly to avoid hogging CPU
                time.sleep(0.1)

            except Exception as e:
                print(f"[ERROR] Exception in main processing loop: {e}")
                time.sleep(1)  # Sleep to avoid tight loop on error

        # Set final results in the shared dictionaries
        self.total_results[ImportResult.CORRECTLY] = correctly_processed
        self.total_results[ImportResult.PARTIALLY] = partially_processed
        self.total_results[ImportResult.FAILED] = failed_count
        self.total_results[ImportResult.SKIPPED] = skipped_count

        for filetype, count in filetype_stats.items():
            self.file_type_stats[filetype] = count

        print(f"[INFO] Streaming processing completed. Processed {completed_count}/{total_files} files.")

        # Final cleanup
        killed = self._kill_all_python_processes()
        if killed > 0:
            print(f"[INFO] Killed {killed} lingering processes during final cleanup")


    def _kill_all_python_processes(self):
        """Kill all python worker processes."""
        killed_count = 0
        for proc in psutil.process_iter(['pid', 'name', 'cmdline']):
            try:
                if proc.info['name'] == 'python' and proc.info['cmdline']:
                    # Check if it's one of our processes
                    is_worker = False
                    for cmd in proc.info['cmdline']:
                        if 'deploy/redb/venv312bin/python' in cmd and 'multiprocessing' in cmd:
                            is_worker = True
                            break

                    if is_worker:
                        try:
                            proc.kill()
                            killed_count += 1
                        except Exception as e:
                            print(f"[ERROR] Failed to kill process {proc.info['pid']}: {e}")
            except (psutil.NoSuchProcess, psutil.AccessDenied, psutil.ZombieProcess):
                pass

        if killed_count > 0:
            print(f"[INFO] Killed {killed_count} python processes during cleanup")

        return killed_count


    def ingest(self):
        general_start_time = time.time()
        BATCH_SIZE = int(os.getenv("BATCH_SIZE", 1000))
        pool = None

        try:
            # Handle S3-solo mode
            if self.s3_solo:
                # Create a temporary directory for S3 downloads
                with tempfile.TemporaryDirectory() as temp_dir:
                    s3_bucket = os.getenv('S3_BUCKET')
                    if not s3_bucket:
                        print("[ERROR] S3_BUCKET environment variable is required for S3-solo mode")
                        return

                    # Use the provided S3 key directly (supports both sharded and private paths)
                    s3_key = self.s3_solo_key
                    print(f"[INFO] S3-solo mode: processing {s3_bucket}/{s3_key}")
                    print(f"[INFO] Extracted hash: {self.s3_solo_hash}")

                    # Fetch first_seen from catalog_samples
                    first_seen = None
                    try:
                        client = get_db_catalog_connection()
                        result = client.query(
                            "SELECT first_seen FROM catalog_samples WHERE sha256 = %(hash)s LIMIT 1",
                            parameters={"hash": self.s3_solo_hash}
                        )
                        if result.result_rows:
                            first_seen = result.result_rows[0][0]
                            print(f"[INFO] first_seen from catalog: {first_seen}")
                        else:
                            print(f"[INFO] No catalog entry found, first_seen will default to epoch zero")
                        client.close()
                    except Exception as e:
                        print(f"[WARNING] Could not fetch first_seen from catalog: {e}")

                    # Process single S3 file directly
                    result = process_s3_file(
                        s3_bucket,
                        s3_key,
                        temp_dir,
                        self.decompile,
                        self.index_prefix,
                        self.log_file,
                        1,  # file_number
                        1,  # total_files
                        selected_modules=self.selected_modules,
                        dry_run=self.dry_run,
                        yara_scan=self.yara_scan,
                        with_yara=self.with_yara,
                        force=self.force,
                        decompile_modules=self.decompile_modules,
                        first_seen=first_seen,
                    )

                    if result:
                        print(f"[INFO] S3-solo processing completed successfully")
                    else:
                        print(f"[ERROR] S3-solo processing failed")

                    return

            # Handle S3 bulk mode
            elif self.s3_mode:
                # Create a temporary directory for S3 downloads
                with tempfile.TemporaryDirectory() as temp_dir:
                    # Query catalog for S3 objects based on mode
                    if self.start_date and self.end_date:
                        # Date-based query: join catalog_samples with repository_upload_sessions
                        print(f"[INFO] Querying samples by date range: {self.start_date} to {self.end_date}")
                        # Pass repository as None if it's a default placeholder (not a real repo name)
                        repo_filter = self.repository if self.repository not in ("date-range", "analyzed") else None
                        catalog_entries = fetch_s3_objects_by_date_range(
                            index_prefix=self.index_prefix,
                            decompile=self.decompile,
                            start_date=self.start_date,
                            end_date=self.end_date,
                            repository=repo_filter,
                            notes=self.s3_notes,
                            magika_filter=self.magika_filter,
                            yara_scan=self.yara_scan,
                            force=self.force,
                            analyzed=self.analyzed
                        )
                        date_info = f" from {self.start_date} to {self.end_date}"
                    elif self.analyzed:
                        # Analyzed mode (standalone, no date filter): query basic_properties for already-analyzed samples
                        print(f"[INFO] Querying already-analyzed samples from {self.index_prefix}_basic_properties")
                        catalog_entries = fetch_analyzed_samples(
                            index_prefix=self.index_prefix,
                            decompile=self.decompile,
                            magika_filter=self.magika_filter,
                            yara_scan=self.yara_scan,
                            force=self.force,
                            rerun=self.rerun
                        )
                        date_info = ""
                    else:
                        # Repository-based query: direct query to repository_upload_sessions
                        catalog_entries = fetch_s3_objects_by_repository(
                            self.repository,
                            self.index_prefix,
                            self.decompile,
                            self.s3_notes,
                            self.magika_filter,
                            self.yara_scan,
                            self.force
                        )
                        date_info = ""

                    if not catalog_entries:
                        print(f"[INFO] No files found for repository: {self.repository}{date_info}" +
                              (f" with notes: {self.s3_notes}" if self.s3_notes else ""))
                        return

                    # Extract S3 bucket, keys, and first_seen
                    s3_files = []
                    for entry in catalog_entries:
                        s3_bucket = entry.get('s3_bucket')
                        s3_key = entry.get('s3_key')
                        first_seen = entry.get('first_seen')
                        if s3_bucket and s3_key:
                            s3_files.append((s3_bucket, s3_key, first_seen))

                    total_files = len(s3_files)
                    num_cores = multiprocessing.cpu_count()
                    parallel_proc = num_cores - 1

                    if self.decompile:
                        if self.magika_filter == 'apk':
                            parallel_proc = num_cores - 1
                            print(f"[INFO] Using decompile mode (APK) with {parallel_proc} parallel processes")
                        else:
                            parallel_proc = max(1, int((num_cores - 1) / 2))
                            print(f"[INFO] Using decompile mode with {parallel_proc} parallel processes")
                    else:
                        print(f"[INFO] Using analysis mode with {parallel_proc} parallel processes")

                    # Use streaming approach for both decompile and non-decompile cases
                    self._process_files_streaming(s3_files, temp_dir, total_files, parallel_proc, self.decompile)
            else:
                # Original file/directory processing logic
                if os.path.isfile(self.path):
                    # Check if it's a text file containing paths
                    if self.path.endswith('.txt'):
                        try:
                            with open(self.path, 'r') as f:
                                files = [line.strip() for line in f
                                    if line.strip() and not os.path.basename(line.strip()).startswith('.')]
                        except Exception as e:
                            print(f"[ERR] Failed to read file list from {self.path}: {str(e)}")
                            return
                    else:
                        files = [self.path]
                elif os.path.isdir(self.path):
                    files = [
                        os.path.join(root, file)
                        for root, dirs, files_list in os.walk(self.path)
                        for file in files_list
                        if not file.startswith('.')
                    ]
                else:
                    print(f"[ERR] Invalid path: {self.path}")
                    return

                total_files = len(files)
                num_cores = multiprocessing.cpu_count()
                parallel_proc = num_cores - 1
                if self.decompile:
                    if self.magika_filter == 'apk':
                        parallel_proc = num_cores - 1
                    else:
                        parallel_proc = int(num_cores/2)
                print(f"Number of CPU cores: {num_cores}")
                print(f"Number of parallel processes: {parallel_proc}")

                # Process files in batches
                for i in range(0, len(files), BATCH_SIZE):
                    batch_files = files[i:i + BATCH_SIZE]
                    batch_start = i
                    print(f"\nProcessing batch {i//BATCH_SIZE + 1}/{(len(files) + BATCH_SIZE - 1)//BATCH_SIZE}")
                    pool = None
                    try:
                        pool = Pool(processes=parallel_proc)
                        batch_results = pool.map(
                            worker,
                            [
                                (
                                    f,
                                    self.decompile,
                                    self.index_prefix,
                                    self.log_file,
                                    batch_start + idx + 1,
                                    total_files,
                                    self.selected_modules,
                                    self.dry_run,
                                    self.yara_scan,
                                    self.with_yara,
                                    self.force,
                                    self.decompile_modules,
                                )
                                for idx, f in enumerate(batch_files)
                            ],
                        )

                        # Update statistics for this batch
                        for result, filetype in batch_results:
                            if result is not None:
                                self.total_results[result] += 1
                            if filetype:
                                self.file_type_stats[filetype] = (
                                    self.file_type_stats.get(filetype, 0) + 1
                                )

                    finally:
                        # Properly close the pool after each batch
                        if pool:
                            try:
                                pool.close()
                                pool.join()
                                pool = None
                                gc.collect()
                            except Exception as e:
                                print(f"[ERROR] Error cleaning up pool: {e}")
                                try:
                                    pool.terminate()
                                    pool.join()
                                except:
                                    pass
                                pool = None
                                gc.collect()

                        if check_high_swap():
                            print("[INFO] High swap detected, restarting pool")
                            self.restart_worker_pool()

                            gc.collect(2)

                            # Create a fresh pool
                            self.pool = Pool(processes=parallel_proc)

                        # Export strings after each batch
            general_end_time = time.time()
            general_elapsed_time = general_end_time - general_start_time
            general_elapsed_time_pretty = time.strftime("%H:%M:%S", time.gmtime(general_elapsed_time))

            summary = (
                f"\n\nIngestion finished for {self.path}."
                f"\nTime required: {general_elapsed_time_pretty}"
                f"\nResults:"
                f"\n- Total analyzed: {sum(self.total_results.values())}"
                f"\n- Correctly imported: {self.total_results[ImportResult.CORRECTLY]}"
                f"\n- Partially imported: {self.total_results[ImportResult.PARTIALLY]}"
                f"\n- Failed: {self.total_results[ImportResult.FAILED]}"
                f"\n- Skipped: {self.total_results[ImportResult.SKIPPED]}"
                f"\n\nFiletype stats:\n{json.dumps(dict(self.file_type_stats))}\n"
            )

            with open(self.log_file, "a") as f:
                f.write(summary)

            print("Ingestion completed. Check the log file for details.")
            print(summary)

        finally:
            try:
                self._kill_all_python_processes()
            except Exception as e:
                print(f"[ERROR] Error in final cleanup: {e}")

            try:
                gc.collect(2)
            except Exception as e:
                print(f"[ERROR] Final garbage collection error: {e}")