Ignacio E. Grossmann

241 papers B 2C 1Misc 1Journal 230Unranked 1
YearRankTypeTitle / Venue / Authors
2026 J jnl
Eur. J. Oper. Res.
Jan Kronqvist, David E. Bernal Neira, Ignacio E. Grossmann
2025 J jnl
Comput. Chem. Eng.
Sergio G. Bonino, Luis J. Zeballos, Akash Moolya, José M. Laínez-Aguirre, José Mauricio Pinto, Ignacio E. Grossmann, Carlos A. Méndez
2025 J jnl
Comput. Chem. Eng.
Diego J. Trucco, Demian J. Presser, Diego C. Cafaro, Ignacio E. Grossmann, Saurabh Shenvi Usgaonkar, Qi Zhang, Pratik Misra, Heather Binagia, Wayne Rowe, Sanjay Mehta
2025 J jnl
CoRR
Daniel Ovalle, Lorenz T. Biegler, Ignacio E. Grossmann, Carl D. Laird, Mateo Dulce Rubio
2025 J jnl
CoRR
Daniel Ovalle, Stefan Mazzadi, Carl D. Laird, Ignacio E. Grossmann, Joshua L. Pulsipher
2025 J jnl
Comput. Chem. Eng.
Daniel Ovalle, Stefan Mazzadi, Carl D. Laird, Ignacio E. Grossmann, Joshua L. Pulsipher
2025 J jnl
Eur. J. Oper. Res.
Hongyu Zhang, Ignacio E. Grossmann, Ken McKinnon, Brage Rugstad Knudsen, Rodrigo Garcia Nava, Asgeir Tomasgard
2025 J jnl
Comput. Chem. Eng.
Daniel Ovalle, David A. Liñán, Albert Lee, Jorge M. Gómez, Luis A. Ricardez-Sandoval, Ignacio E. Grossmann, David E. Bernal Neira
2024 J jnl
Comput. Chem. Eng.
Valentina Negri, Daniel Vázquez, Ignacio E. Grossmann, Gonzalo Guillén-Gosálbez
2024 J jnl
Comput. Optim. Appl.
David Esteban Bernal Neira, Ignacio E. Grossmann
2024 J jnl
Comput. Manag. Sci.
Hongyu Zhang, Ignacio E. Grossmann, Asgeir Tomasgard
2024 J jnl
Comput. Chem. Eng.
Victoria G. Achkar, Braulio Brunaud, Rami Musa, Ignacio E. Grossmann
2024 J jnl
Eur. J. Oper. Res.
Victoria G. Achkar, Braulio Brunaud, Hector D. Perez, Rami Musa, Carlos A. Méndez, Ignacio E. Grossmann
2024 J jnl
Comput. Chem. Eng.
Robert E. Franzoi, Brenno C. Menezes, Jeffrey Dean Kelly, Jorge A. W. Gut, Ignacio E. Grossmann
2024 J jnl
Comput. Chem. Eng.
Demian J. Presser, Diego C. Cafaro, Ignacio E. Grossmann, Pratik Misra, Sanjay Mehta
2023 J jnl
Comput. Chem. Eng.
Carolina Tristán, Marcos Fallanza, Raquel Ibáñez, Inmaculada Ortiz, Ignacio E. Grossmann
2023 J jnl
Comput. Chem. Eng.
Sitoshna Jatty, Niharika Singh, Ignacio E. Grossmann, Leonardo Salsano de Assis, Christos Galanopoulos, Pablo García-Herreros, Bianca Springub, Nga Tran
2023 J jnl
Comput. Chem. Eng.
Seolhee Cho, Javier Tovar-Facio, Ignacio E. Grossmann
2023 J jnl
CoRR
Hector D. Perez, Shivank Joshi, Ignacio E. Grossmann
2023 J jnl
Comput. Chem. Eng.
Hector D. Perez, Kyle C. Harshbarger, John M. Wassick, Ignacio E. Grossmann
2023 J jnl
Comput. Chem. Eng.
Markus Drouven, Diego C. Cafaro, Ignacio E. Grossmann
2022 J jnl
Algorithms
Juan José Torres Figueroa, Can Li, Robert M. Apap, Ignacio E. Grossmann
2022 J jnl
Comput. Chem. Eng.
Hector D. Perez, John M. Wassick, Ignacio E. Grossmann
2022 J jnl
J. Glob. Optim.
David E. Bernal, Zedong Peng, Jan Kronqvist, Ignacio E. Grossmann
2022 J jnl
Comput. Chem. Eng.
Ying Chen, Yixin Ye, Zhihong Yuan, Ignacio E. Grossmann, Bingzhen Chen
2022 J jnl
Eur. J. Oper. Res.
Can Li, Antonio J. Conejo, Peng Liu, Benjamin P. Omell, John D. Siirola, Ignacio E. Grossmann
2022 J jnl
Comput. Chem. Eng.
Fei Zhao, Maria Paz Ochoa, Ignacio E. Grossmann, Salvador García Muñoz, Stephen Stamatis
2022 J jnl
Comput. Chem. Eng.
Akash Moolya, Alejandro Rodríguez-Martínez, Ignacio E. Grossmann
2022 J jnl
Comput. Chem. Eng.
Seolhee Cho, Can Li, Ignacio E. Grossmann
2021 J jnl
Comput. Chem. Eng.
Leonardo Salsano de Assis, Eduardo Camponogara, Ignacio E. Grossmann
2021 J jnl
Comput. Chem. Eng.
Hector Alejandro Pedrozo, Sabrina Belen Rodriguez Reartes, David E. Bernal, Aldo R. Vecchietti, María Soledad Díaz, Ignacio E. Grossmann
2021 J jnl
CoRR
Hongyu Zhang, Asgeir Tomasgard, Brage Rugstad Knudsen, Harald G. Svendsen, Steffen J. Bakker, Ignacio E. Grossmann
2021 J jnl
Comput. Chem. Eng.
Cristina Elsido, Emanuele Martelli, Ignacio E. Grossmann
2021 J jnl
Comput. Chem. Eng.
Maria Paz Ochoa, Salvador García Muñoz, Stephen Stamatis, Ignacio E. Grossmann
2021 J jnl
Comput. Chem. Eng.
Hector Alejandro Pedrozo, Sabrina Belen Rodriguez Reartes, Aldo R. Vecchietti, María Soledad Díaz, Ignacio E. Grossmann
2021 J jnl
Comput. Chem. Eng.
Hector D. Perez, Satyajith Amaran, Esra Erisen, John M. Wassick, Ignacio E. Grossmann
2021 J jnl
Comput. Chem. Eng.
Qi Chen, Yunshan Liu, Grant Seastream, John D. Siirola, Ignacio E. Grossmann
2020 J jnl
Comput. Optim. Appl.
Kevin C. Furman, Nicolas W. Sawaya, Ignacio E. Grossmann
2020 J jnl
Comput. Chem. Eng.
Christian D. Hubbs, Can Li, Nikolaos V. Sahinidis, Ignacio E. Grossmann, John M. Wassick
2020 J jnl
Comput. Chem. Eng.
Luca Mencarelli, Qi Chen, Alexandre Pagot, Ignacio E. Grossmann
2020 J jnl
Comput. Chem. Eng.
Braulio Brunaud, Hector D. Perez, Satyajith Amaran, Scott J. Bury, John M. Wassick, Ignacio E. Grossmann
2020 J jnl
Comput. Chem. Eng.
Yixin Ye, Ignacio E. Grossmann, José Mauricio Pinto, Sivaraman Ramaswamy
2020 J jnl
Optim. Methods Softw.
David E. Bernal, Stefan Vigerske, Francisco Trespalacios, Ignacio E. Grossmann
2020 J jnl
Comput. Chem. Eng.
Yixin Ye, Ignacio E. Grossmann, José Mauricio Pinto, Sivaraman Ramaswamy
2020 J jnl
Comput. Chem. Eng.
Haokun Yang, David E. Bernal, Robert E. Franzoi, Faramroze G. Engineer, Kysang Kwon, Sechan Lee, Ignacio E. Grossmann
2020 J jnl
Comput. Chem. Eng.
Teemu J. Ikonen, Hossein Mostafaei, Yixin Ye, David E. Bernal, Ignacio E. Grossmann, Iiro Harjunkoski
2020 J jnl
Comput. Chem. Eng.
Maria Paz Ochoa, Ignacio E. Grossmann
2020 J jnl
CoRR
Christian D. Hubbs, Hector D. Perez, Owais Sarwar, Nikolaos V. Sahinidis, Ignacio E. Grossmann, John M. Wassick
2020 J jnl
Comput. Chem. Eng.
Nadir N. Ziyatdinov, Ilya I. Emel'yanov, Qi Chen, Ignacio E. Grossmann
2020 J jnl
Comput. Chem. Eng.
Pengfei Cheng, Pablo García-Herreros, Mangalam Lalpuria, Ignacio E. Grossmann
2020 J jnl
Comput. Chem. Eng.
Diego C. Cafaro, Ignacio E. Grossmann
2020 J jnl
Comput. Chem. Eng.
Hector Alejandro Pedrozo, Sabrina Belen Rodriguez Reartes, Qi Chen, María Soledad Díaz, Ignacio E. Grossmann
2020 J jnl
Math. Program.
Jan Kronqvist, David E. Bernal, Ignacio E. Grossmann
2019 J jnl
Comput. Chem. Eng.
Cristina Elsido, Emanuele Martelli, Ignacio E. Grossmann
2019 J jnl
J. Glob. Optim.
Can Li, Ignacio E. Grossmann
2019 J jnl
J. Glob. Optim.
Can Li, Ignacio E. Grossmann
2019 J jnl
Comput. Chem. Eng.
Leonardo Salsano de Assis, Eduardo Camponogara, Brenno C. Menezes, Ignacio E. Grossmann
2019 J jnl
Eur. J. Oper. Res.
Pedro M. Castro, Iiro Harjunkoski, Ignacio E. Grossmann
2019 J jnl
Comput. Chem. Eng.
Ian T. Cameron, Sebastian Engell, Christos Georgakis, Norbert Asprion, Dominique Bonvin, Furong Gao, Dimitrios I. Gerogiorgis, Ignacio E. Grossmann, Sandro Macchietto, Heinz A. Preisig, Brent R. Young
2019 J jnl
Comput. Chem. Eng.
Cristiana L. Lara, David E. Bernal, Can Li, Ignacio E. Grossmann
2019 J jnl
Comput. Chem. Eng.
Qi Zhang, Mariano Martín, Ignacio E. Grossmann
2019 J jnl
Comput. Chem. Eng.
Edna Soraya Rawlings, Qi Chen, Ignacio E. Grossmann, José Antonio Caballero
2019 J jnl
Comput. Chem. Eng.
Yixin Ye, Ignacio E. Grossmann, José Mauricio Pinto, Sivaraman Ramaswamy
2019 J jnl
Comput. Chem. Eng.
Abigail Ondeck, Markus Drouven, Nathan Blandino, Ignacio E. Grossmann
2019 J jnl
Comput. Chem. Eng.
Abigail Ondeck, Markus Drouven, Nathan Blandino, Ignacio E. Grossmann
2019 J jnl
Optim. Methods Softw.
Ignacio E. Grossmann
2019 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Iiro Harjunkoski
2018 J jnl
Comput. Chem. Eng.
Can Li, Ignacio E. Grossmann
2018 J jnl
Eur. J. Oper. Res.
Cristiana L. Lara, Dharik S. Mallapragada, Dimitri J. Papageorgiou, Aranya Venkatesh, Ignacio E. Grossmann
2018 J jnl
Comput. Chem. Eng.
Natalia Quirante, Ignacio E. Grossmann, José Antonio Caballero
2018 J jnl
Comput. Chem. Eng.
Braulio Brunaud, Matthew H. Bassett, Anshul Agarwal, John M. Wassick, Ignacio E. Grossmann
2018 J jnl
Comput. Chem. Eng.
Pedro M. Castro, Ignacio E. Grossmann, Qi Zhang
2018 J jnl
J. Glob. Optim.
Cristiana L. Lara, Francisco Trespalacios, Ignacio E. Grossmann
2018 J jnl
Comput. Chem. Eng.
Lijie Su, Lixin Tang, David E. Bernal, Ignacio E. Grossmann
2018 J jnl
Comput. Chem. Eng.
Shengnan Zhao, Ignacio E. Grossmann, Lixin Tang
2018 J jnl
Comput. Chem. Eng.
Yixin Ye, Ignacio E. Grossmann, José Mauricio Pinto
2018 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Efstratios N. Pistikopoulos
2017 J jnl
Comput. Chem. Eng.
Natalia Quirante, José Antonio Caballero, Ignacio E. Grossmann
2017 J jnl
Comput. Chem. Eng.
Leonardo Salsano de Assis, Eduardo Camponogara, Bernardo Zimberg, Enrique D. Ferreira, Ignacio E. Grossmann
2017 J jnl
Eur. J. Oper. Res.
Carlos Florensa, Pablo García-Herreros, Pratik Misra, Erdem Arslan, Sanjay Mehta, Ignacio E. Grossmann
2017 J jnl
J. Glob. Optim.
Juan P. Ruiz, Ignacio E. Grossmann
2017 J jnl
Comput. Chem. Eng.
Robert M. Apap, Ignacio E. Grossmann
2017 J jnl
Comput. Oper. Res.
Qi Zhang, Arul Sundaramoorthy, Ignacio E. Grossmann, José Mauricio Pinto
2017 J jnl
Comput. Optim. Appl.
Ricardo M. Lima, Ignacio E. Grossmann
2017 J jnl
Comput. Chem. Eng.
Zhi Qian, Qi Chen, Ignacio E. Grossmann
2017 J jnl
Ann. Oper. Res.
Francisco Trespalacios, Ignacio E. Grossmann
2017 J jnl
Comput. Chem. Eng.
Mariano Martín, Ignacio E. Grossmann
2016 J jnl
Math. Program.
Sumit Mitra, Pablo García-Herreros, Ignacio E. Grossmann
2016 J jnl
Comput. Chem. Eng.
Qi Zhang, Arul Sundaramoorthy, Ignacio E. Grossmann, José Mauricio Pinto
2016 J jnl
Comput. Chem. Eng.
Miguel Angel Gutiérrez-Limón, Antonio Flores-Tlacuahuac, Ignacio E. Grossmann
2016 J jnl
Comput. Chem. Eng.
Irene Lotero, Francisco Trespalacios, Ignacio E. Grossmann, Dimitri J. Papageorgiou, Myun-Seok Cheon
2016 J jnl
Comput. Chem. Eng.
Qi Zhang, Michael F. Morari, Ignacio E. Grossmann, Arul Sundaramoorthy, José Mauricio Pinto
2016 J jnl
INFORMS J. Comput.
Francisco Trespalacios, Ignacio E. Grossmann
2016 J jnl
Comput. Chem. Eng.
Francisco Trespalacios, Ignacio E. Grossmann
2016 J jnl
Eur. J. Oper. Res.
Francisco Trespalacios, Ignacio E. Grossmann
2016 J jnl
Comput. Chem. Eng.
Pablo García-Herreros, Lei Zhang, Pratik Misra, Erdem Arslan, Sanjay Mehta, Ignacio E. Grossmann
2016 J jnl
Comput. Chem. Eng.
Pablo A. Marchetti, Miguel A. Zamarripa, Juan A. Reyes-Labarta, Ignacio E. Grossmann, Wiley Bucey, Rita A. Majewski
2016 J jnl
Comput. Chem. Eng.
Pablo García-Herreros, Anshul Agarwal, John M. Wassick, Ignacio E. Grossmann
2016 J jnl
Comput. Chem. Eng.
Michele Corbetta, Ignacio E. Grossmann, Flavio Manenti
2016 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Robert M. Apap, Bruno A. Calfa, Pablo García-Herreros, Qi Zhang
2016 J jnl
Comput. Chem. Eng.
Qi Zhang, Jochen L. Cremer, Ignacio E. Grossmann, Arul Sundaramoorthy, José Mauricio Pinto
2016 J jnl
Comput. Chem. Eng.
Lijie Su, Lixin Tang, Ignacio E. Grossmann
2016 J jnl
Comput. Chem. Eng.
David M. Thierry, Antonio Flores-Tlacuahuac, Ignacio E. Grossmann
2016 J jnl
Eur. J. Oper. Res.
Pedro Amorim, Eduardo Curcio, Bernardo Almada-Lobo, Ana Paula F. D. Barbosa-Póvoa, Ignacio E. Grossmann
2015 J jnl
INFORMS J. Comput.
Francisco Trespalacios, Ignacio E. Grossmann
2015 J jnl
Comput. Chem. Eng.
Yongheng Jiang, Ignacio E. Grossmann
2015 J jnl
Comput. Chem. Eng.
Lijie Su, Lixin Tang, Ignacio E. Grossmann
2015 J jnl
Comput. Chem. Eng.
Yang Chen, Ignacio E. Grossmann, David C. Miller
2015 J jnl
Comput. Chem. Eng.
Bruno A. Calfa, Ignacio E. Grossmann, Anshul Agarwal, Scott J. Bury, John M. Wassick
2015 J jnl
Comput. Chem. Eng.
Brenno C. Menezes, Jeffrey Dean Kelly, Ignacio E. Grossmann, Alkis Vazacopoulos
2015 J jnl
Comput. Chem. Eng.
Francisco Trespalacios, Ignacio E. Grossmann
2015 J jnl
Comput. Chem. Eng.
Bruno A. Calfa, Ignacio E. Grossmann
2015 J jnl
Comput. Chem. Eng.
Hubert Hadera, Iiro Harjunkoski, Guido Sand, Ignacio E. Grossmann, Sebastian Engell
2015 J jnl
Comput. Chem. Eng.
Yang Chen, John C. Eslick, Ignacio E. Grossmann, David C. Miller
2015 J jnl
Comput. Chem. Eng.
Elvis Ahmetovic, Nidret Ibric, Zdravko Kravanja, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
Nancy Medina-Herrera, Arturo Jiménez-Gutiérrez, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
Vijay Gupta, Ignacio E. Grossmann
2014 J jnl
Comput. Oper. Res.
Fabricio Oliveira, Ignacio E. Grossmann, Silvio Hamacher
2014 J jnl
Comput. Chem. Eng.
Diego C. Cafaro, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
M. A. H. van Elzakker, Edwin Zondervan, N. B. Raikar, Hans Hoogland, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
Bruno A. Calfa, Anshul Agarwal, Ignacio E. Grossmann, John M. Wassick
2014 J jnl
Comput. Chem. Eng.
Marian Gabriela Marcovecchio, Augusto Q. Novais, Ignacio E. Grossmann
2014 Misc conf
WSC
Pablo García-Herreros, Ignacio E. Grossmann, Bikram Sharda, Anshul Agarwal, John M. Wassick
2014 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Bruno A. Calfa, Pablo García-Herreros
2014 J jnl
Interfaces
Xuan Chen, Simin Huang, Dejing Chen, Zhi-Hai Zhang, Li Zheng, Ignacio E. Grossmann, Shihui Chen
2014 J jnl
Comput. Chem. Eng.
Brage Rugstad Knudsen, Ignacio E. Grossmann, Bjarne A. Foss, Andrew R. Conn
2014 J jnl
Comput. Chem. Eng.
Lidija Cucek, Mariano Martín, Ignacio E. Grossmann, Zdravko Kravanja
2014 J jnl
Comput. Chem. Eng.
Sumit Mitra, José Mauricio Pinto, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
Sumit Mitra, José Mauricio Pinto, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
María Analía Rodríguez, Aldo R. Vecchietti, Iiro Harjunkoski, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
Yongheng Jiang, María Analía Rodríguez, Iiro Harjunkoski, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
José Antonio Caballero, Ignacio E. Grossmann
2014 J jnl
J. Glob. Optim.
Pedro M. Castro, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
M. A. H. van Elzakker, Edwin Zondervan, N. B. Raikar, Hans Hoogland, Ignacio E. Grossmann
2014 J jnl
Comput. Chem. Eng.
Iiro Harjunkoski, Christos T. Maravelias, Peter Bongers, Pedro M. Castro, Sebastian Engell, Ignacio E. Grossmann, John N. Hooker, Carlos A. Méndez, Guido Sand, John M. Wassick
2014 J jnl
Comput. Chem. Eng.
Pablo A. Marchetti, Vijay Gupta, Ignacio E. Grossmann, Lauren Cook, Pierre-Marie Valton, Tejinder Pal Singh, Tong Li, Jean André
2013 J jnl
Comput. Chem. Eng.
Fabricio Oliveira, Vijay Gupta, Silvio Hamacher, Ignacio E. Grossmann
2013 J jnl
Comput. Chem. Eng.
Scott P. Kolodziej, Ignacio E. Grossmann, Kevin C. Furman, Nicolas W. Sawaya
2013 J jnl
Comput. Chem. Eng.
Lincoln F. Lautenschlager Moro, Ignacio E. Grossmann
2013 J jnl
Comput. Chem. Eng.
Miguel A. Navarro-Amorós, José Antonio Caballero, Rubén Ruiz-Femenia, Ignacio E. Grossmann
2013 J jnl
Ann. Oper. Res.
Roger Rocha, Ignacio E. Grossmann, Marcus Poggi de Aragão
2013 J jnl
Ann. Oper. Res.
Bora Tarhan, Ignacio E. Grossmann, Vikas Goel
2013 J jnl
J. Glob. Optim.
Scott P. Kolodziej, Pedro M. Castro, Ignacio E. Grossmann
2013 J jnl
Ann. Oper. Res.
Fengqi You, Ignacio E. Grossmann
2013 J jnl
Comput. Chem. Eng.
Marcelo Escobar, Jorge O. Trierweiler, Ignacio E. Grossmann
2013 J jnl
Comput. Chem. Eng.
Juan P. Ruiz, Ignacio E. Grossmann
2012 J jnl
Comput. Chem. Eng.
Xuan Chen, Ignacio E. Grossmann, Li Zheng
2012 J jnl
Eur. J. Oper. Res.
Nicolas W. Sawaya, Ignacio E. Grossmann
2012 J jnl
Eur. J. Oper. Res.
Juan P. Ruiz, Ignacio E. Grossmann
2012 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann
2012 J jnl
Comput. Chem. Eng.
Sebastian Terrazas-Moreno, Ignacio E. Grossmann, John M. Wassick, Scott J. Bury, Naoko Akiya
2012 J jnl
Comput. Chem. Eng.
Pedro M. Castro, Ignacio E. Grossmann
2012 J jnl
Comput. Chem. Eng.
Sumit Mitra, Ignacio E. Grossmann, José Mauricio Pinto, Nikhil Arora
2012 J jnl
Comput. Chem. Eng.
Miguel A. Navarro-Amorós, Juan Javaloyes-Anton, José Antonio Caballero, Ignacio E. Grossmann
2011 J jnl
Comput. Oper. Res.
Tatsushi Nishi, Yuichiro Hiranaka, Ignacio E. Grossmann
2011 J jnl
Comput. Chem. Eng.
Sylvain Mouret, Ignacio E. Grossmann, Pierre Pestiaux
2011 J jnl
Comput. Chem. Eng.
Mariano Martín, Ignacio E. Grossmann
2011 J jnl
Comput. Chem. Eng.
Lidija Cucek, Mariano Martín, Ignacio E. Grossmann, Zdravko Kravanja
2011 J jnl
Optim. Lett.
Juan P. Ruiz, Ignacio E. Grossmann
2011 J jnl
Comput. Chem. Eng.
Ricardo M. Lima, Ignacio E. Grossmann, Yu Jiao
2011 J jnl
Comput. Chem. Eng.
Pedro M. Castro, Iiro Harjunkoski, Ignacio E. Grossmann
2011 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Jeffrey J. Siirola
2011 J jnl
Comput. Chem. Eng.
Li-Juan Li, Rui-Jie Zhou, Hong-Guang Dong, Ignacio E. Grossmann
2011 J jnl
Comput. Chem. Eng.
Vijay Gupta, Ignacio E. Grossmann
2011 J jnl
Comput. Chem. Eng.
Sebastian Terrazas-Moreno, Philipp A. Trotter, Ignacio E. Grossmann
2011 J jnl
Comput. Chem. Eng.
Sylvain Mouret, Ignacio E. Grossmann, Pierre Pestiaux
2011 J jnl
Comput. Chem. Eng.
Juan P. Ruiz, Ignacio E. Grossmann
2010 J jnl
Comput. Chem. Eng.
Gonzalo Guillén-Gosálbez, Ignacio E. Grossmann
2010 J jnl
Comput. Chem. Eng.
Ramkumar Karuppiah, Mariano Martín, Ignacio E. Grossmann
2010 J jnl
Comput. Chem. Eng.
Ravindra S. Kamath, Ignacio E. Grossmann, Lorenz T. Biegler
2010 J jnl
Comput. Chem. Eng.
Ravindra S. Kamath, Lorenz T. Biegler, Ignacio E. Grossmann
2010 C conf
PADL
Ashish Agarwal, Sooraj Bhat, Alexander G. Gray, Ignacio E. Grossmann
2010 J jnl
Comput. Chem. Eng.
Sebastian Terrazas-Moreno, Ignacio E. Grossmann, John M. Wassick, Scott J. Bury
2010 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Gonzalo Guillén-Gosálbez
2010 J jnl
Comput. Chem. Eng.
Juan P. Ruiz, Ignacio E. Grossmann
2009 J jnl
Comput. Chem. Eng.
Fengqi You, Pedro M. Castro, Ignacio E. Grossmann
2009 ch.
Encyclopedia of Optimization
Ignacio E. Grossmann
2009 ch.
Encyclopedia of Optimization
Juan M. Zamora, Ignacio E. Grossmann
2009 J jnl
Comput. Chem. Eng.
Ashish Agarwal, Ignacio E. Grossmann
2009 ch.
Encyclopedia of Optimization
Ignacio E. Grossmann
2009 ch.
Encyclopedia of Optimization
Ignacio E. Grossmann
2009 ch.
Encyclopedia of Optimization
Ignacio E. Grossmann
2009 ch.
Encyclopedia of Optimization
Ignacio E. Grossmann, Susara Van den Heever
2009 J jnl
Comput. Chem. Eng.
Roger Rocha, Ignacio E. Grossmann, Marcus Poggi de Aragão
2009 B conf
CPAIOR
Sylvain Mouret, Ignacio E. Grossmann, Pierre Pestiaux
2008 J jnl
J. Glob. Optim.
Ramkumar Karuppiah, Ignacio E. Grossmann
2008 J jnl
Comput. Chem. Eng.
Bora Tarhan, Ignacio E. Grossmann
2008 J jnl
Discret. Optim.
Pierre Bonami, Lorenz T. Biegler, Andrew R. Conn, Gérard Cornuéjols, Ignacio E. Grossmann, Carl D. Laird, Jon Lee, Andrea Lodi, François Margot, Nicolas W. Sawaya, Andreas Wächter
2008 J jnl
Comput. Chem. Eng.
María Lorena Bergamini, Ignacio E. Grossmann, Nicolás J. Scenna, Pio Antonio Aguirre
2008 J jnl
Comput. Chem. Eng.
Fengqi You, Ignacio E. Grossmann
2008 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Kevin C. Furman
2008 J jnl
Comput. Chem. Eng.
Ramkumar Karuppiah, Kevin C. Furman, Ignacio E. Grossmann
2008 J jnl
Comput. Chem. Eng.
Ramkumar Karuppiah, Ignacio E. Grossmann
2008 J jnl
Comput. Chem. Eng.
José María Ponce-Ortega, Arturo Jiménez-Gutiérrez, Ignacio E. Grossmann
2008 J jnl
Autom.
Ignacio E. Grossmann, Muge Erdirik-Dogan, Ramkumar Karuppiah
2008 J jnl
Comput. Chem. Eng.
Venkat Venkatasubramanian, Ignacio E. Grossmann, Rafiqul Gani
2008 J jnl
Comput. Chem. Eng.
Muge Erdirik-Dogan, Ignacio E. Grossmann
2007 conf
CASE
Tatsushi Nishi, Yuichiro Hiranaka, Masahiro Inuiguchi, Ignacio E. Grossmann
2007 J jnl
Comput. Chem. Eng.
Nicolas W. Sawaya, Ignacio E. Grossmann
2007 J jnl
Comput. Chem. Eng.
María Fresnedo San Román, Eugenio Bringas, Inmaculada Ortiz, Ignacio E. Grossmann
2006 J jnl
Math. Program.
Vikas Goel, Ignacio E. Grossmann
2006 J jnl
Comput. Chem. Eng.
Vikas Goel, Ignacio E. Grossmann, Amr S. El-Bakry, Eric L. Mulkay
2006 J jnl
Comput. Chem. Eng.
Carlos A. Méndez, Ignacio E. Grossmann, Iiro Harjunkoski, Pousga Kaboré
2006 J jnl
Comput. Chem. Eng.
Pedro M. Castro, Ignacio E. Grossmann
2006 J jnl
Comput. Chem. Eng.
Ramkumar Karuppiah, Ignacio E. Grossmann
2006 J jnl
Comput. Chem. Eng.
Carlos A. Méndez, Jaime Cerdá, Ignacio E. Grossmann, Iiro Harjunkoski, Marco Fahl
2005 J jnl
Comput. Chem. Eng.
Nicolas W. Sawaya, Ignacio E. Grossmann
2005 J jnl
Comput. Chem. Eng.
Soumitra Ghosh, T. Zhu, Ignacio E. Grossmann, Mohammad M. Ataai, Michael M. Domach
2005 J jnl
Ann. Oper. Res.
Sangbum Lee, Ignacio E. Grossmann
2005 J jnl
Comput. Chem. Eng.
María Lorena Bergamini, Pio Antonio Aguirre, Ignacio E. Grossmann
2005 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Pio Antonio Aguirre, Mariana Barttfeld
2004 J jnl
Comput. Chem. Eng.
Mariana Barttfeld, Pio Antonio Aguirre, Ignacio E. Grossmann
2004 J jnl
Comput. Chem. Eng.
Christos T. Maravelias, Ignacio E. Grossmann
2004 J jnl
Comput. Chem. Eng.
Vikas Goel, Ignacio E. Grossmann
2004 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann
2004 J jnl
Comput. Chem. Eng.
José Antonio Caballero, Ignacio E. Grossmann
2004 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Conor M. McDonald
2004 J jnl
Comput. Chem. Eng.
Christos T. Maravelias, Ignacio E. Grossmann
2004 J jnl
Comput. Chem. Eng.
Ignacio E. Grossmann, Lorenz T. Biegler
2004 J jnl
Comput. Chem. Eng.
Lorenz T. Biegler, Ignacio E. Grossmann
2004 B conf
CPAIOR
Christos T. Maravelias, Ignacio E. Grossmann
2003 J jnl
Comput. Chem. Eng.
Edgar Perea-López, B. Erik Ydstie, Ignacio E. Grossmann
2003 J jnl
Comput. Chem. Eng.
Susara Van den Heever, Ignacio E. Grossmann
2003 J jnl
Comput. Chem. Eng.
Mariana Barttfeld, Pio Antonio Aguirre, Ignacio E. Grossmann
2003 J jnl
Comput. Optim. Appl.
Ignacio E. Grossmann, Sangbum Lee
2003 J jnl
Comput. Chem. Eng.
Sangbum Lee, Ignacio E. Grossmann
2003 J jnl
Comput. Chem. Eng.
Aldo R. Vecchietti, Sangbum Lee, Ignacio E. Grossmann
2003 J jnl
Comput. Chem. Eng.
J. Balasubramanian, Ignacio E. Grossmann
2001 J jnl
INFORMS J. Comput.
Vipul Jain, Ignacio E. Grossmann
2000 J jnl
Eur. J. Oper. Res.
Craig W. Schmidt, Ignacio E. Grossmann
1999 J jnl
J. Glob. Optim.
Juan M. Zamora, Ignacio E. Grossmann
1998 J jnl
Ann. Oper. Res.
José Mauricio Pinto, Ignacio E. Grossmann
1995 J jnl
J. Glob. Optim.
Ignacio Quesada, Ignacio E. Grossmann
1994 J jnl
Comput. Oper. Res.
John N. Hooker, Hong Yan, Ignacio E. Grossmann, Ramesh Raman
1993 J jnl
Ann. Oper. Res.
Ramesh Raman, Ignacio E. Grossmann
1993 J jnl
Proc. IEEE
Georgette H. Demes, Steven J. Fenves, Ignacio E. Grossmann, Chris T. Hendrickson, Tom M. Mitchell, Friedrich B. Prinz, Daniel P. Siewiorek, Eswaran Subrahmanian, Sarosh Talukdar, Arthur Westerberg
1992 J jnl
J. Glob. Optim.
Ignacio E. Grossmann
1992 J jnl
Oper. Res.
Nikolaos V. Sahinidis, Ignacio E. Grossmann
1990 J jnl
Artif. Intell. Eng.
Arthur Westerberg, Ignacio E. Grossmann, Sarosh Talukdar, Friedrich Prinz, Steven J. Fenves, Mary Lou Maher
1987 J jnl
Math. Program.
Marco A. Duran, Ignacio E. Grossmann
1986 J jnl
Math. Program.
Marco A. Duran, Ignacio E. Grossmann
redb/ext/spoof_check.py
← Index redb/ext/spoof_check.py python
import copy
import struct
from enum import Enum

"""
Checks that the metadata within a file's Rich header does not contradict the
other metadata contained within it.

References:
    https://gist.github.com/skochinsky/07c8e95e33d9429d81a75622b5d24c8b
    https://www.sec.in.tum.de/i20/publications/finding-the-needle-a-study-of-
    the-pe32-rich-header-and-respective-malware-triage
"""

KNOWN_PRODUCT_IDS = {
    0: "Unknown",
    1: "Import0",
    2: "Linker510",
    3: "Cvtomf510",
    4: "Linker600",
    5: "Cvtomf600",
    6: "Cvtres500",
    7: "Utc11_Basic",
    8: "Utc11_C",
    9: "Utc12_Basic",
    10: "Utc12_C",
    11: "Utc12_CPP",
    12: "AliasObj60",
    13: "VisualBasic60",
    14: "Masm613",
    15: "Masm710",
    16: "Linker511",
    17: "Cvtomf511",
    18: "Masm614",
    19: "Linker512",
    20: "Cvtomf512",
    21: "Utc12_C_Std",
    22: "Utc12_CPP_Std",
    23: "Utc12_C_Book",
    24: "Utc12_CPP_Book",
    25: "Implib700",
    26: "Cvtomf700",
    27: "Utc13_Basic",
    28: "Utc13_C",
    29: "Utc13_CPP",
    30: "Linker610",
    31: "Cvtomf610",
    32: "Linker601",
    33: "Cvtomf601",
    34: "Utc12_1_Basic",
    35: "Utc12_1_C",
    36: "Utc12_1_CPP",
    37: "Linker620",
    38: "Cvtomf620",
    39: "AliasObj70",
    40: "Linker621",
    41: "Cvtomf621",
    42: "Masm615",
    43: "Utc13_LTCG_C",
    44: "Utc13_LTCG_CPP",
    45: "Masm620",
    46: "ILAsm100",
    47: "Utc12_2_Basic",
    48: "Utc12_2_C",
    49: "Utc12_2_CPP",
    50: "Utc12_2_C_Std",
    51: "Utc12_2_CPP_Std",
    52: "Utc12_2_C_Book",
    53: "Utc12_2_CPP_Book",
    54: "Implib622",
    55: "Cvtomf622",
    56: "Cvtres501",
    57: "Utc13_C_Std",
    58: "Utc13_CPP_Std",
    59: "Cvtpgd1300",
    60: "Linker622",
    61: "Linker700",
    62: "Export622",
    63: "Export700",
    64: "Masm700",
    65: "Utc13_POGO_I_C",
    66: "Utc13_POGO_I_CPP",
    67: "Utc13_POGO_O_C",
    68: "Utc13_POGO_O_CPP",
    69: "Cvtres700",
    70: "Cvtres710p",
    71: "Linker710p",
    72: "Cvtomf710p",
    73: "Export710p",
    74: "Implib710p",
    75: "Masm710p",
    76: "Utc1310p_C",
    77: "Utc1310p_CPP",
    78: "Utc1310p_C_Std",
    79: "Utc1310p_CPP_Std",
    80: "Utc1310p_LTCG_C",
    81: "Utc1310p_LTCG_CPP",
    82: "Utc1310p_POGO_I_C",
    83: "Utc1310p_POGO_I_CPP",
    84: "Utc1310p_POGO_O_C",
    85: "Utc1310p_POGO_O_CPP",
    86: "Linker624",
    87: "Cvtomf624",
    88: "Export624",
    89: "Implib624",
    90: "Linker710",
    91: "Cvtomf710",
    92: "Export710",
    93: "Implib710",
    94: "Cvtres710",
    95: "Utc1310_C",
    96: "Utc1310_CPP",
    97: "Utc1310_C_Std",
    98: "Utc1310_CPP_Std",
    99: "Utc1310_LTCG_C",
    100: "Utc1310_LTCG_CPP",
    101: "Utc1310_POGO_I_C",
    102: "Utc1310_POGO_I_CPP",
    103: "Utc1310_POGO_O_C",
    104: "Utc1310_POGO_O_CPP",
    105: "AliasObj710",
    106: "AliasObj710p",
    107: "Cvtpgd1310",
    108: "Cvtpgd1310p",
    109: "Utc1400_C",
    110: "Utc1400_CPP",
    111: "Utc1400_C_Std",
    112: "Utc1400_CPP_Std",
    113: "Utc1400_LTCG_C",
    114: "Utc1400_LTCG_CPP",
    115: "Utc1400_POGO_I_C",
    116: "Utc1400_POGO_I_CPP",
    117: "Utc1400_POGO_O_C",
    118: "Utc1400_POGO_O_CPP",
    119: "Cvtpgd1400",
    120: "Linker800",
    121: "Cvtomf800",
    122: "Export800",
    123: "Implib800",
    124: "Cvtres800",
    125: "Masm800",
    126: "AliasObj800",
    127: "PhoenixPrerelease",
    128: "Utc1400_CVTCIL_C",
    129: "Utc1400_CVTCIL_CPP",
    130: "Utc1400_LTCG_MSIL",
    131: "Utc1500_C",
    132: "Utc1500_CPP",
    133: "Utc1500_C_Std",
    134: "Utc1500_CPP_Std",
    135: "Utc1500_CVTCIL_C",
    136: "Utc1500_CVTCIL_CPP",
    137: "Utc1500_LTCG_C",
    138: "Utc1500_LTCG_CPP",
    139: "Utc1500_LTCG_MSIL",
    140: "Utc1500_POGO_I_C",
    141: "Utc1500_POGO_I_CPP",
    142: "Utc1500_POGO_O_C",
    143: "Utc1500_POGO_O_CPP",
    144: "Cvtpgd1500",
    145: "Linker900",
    146: "Export900",
    147: "Implib900",
    148: "Cvtres900",
    149: "Masm900",
    150: "AliasObj900",
    151: "Resource900",
    152: "AliasObj1000",
    154: "Cvtres1000",
    155: "Export1000",
    156: "Implib1000",
    157: "Linker1000",
    158: "Masm1000",
    170: "Utc1600_C",
    171: "Utc1600_CPP",
    172: "Utc1600_CVTCIL_C",
    173: "Utc1600_CVTCIL_CPP",
    174: "Utc1600_LTCG_C ",
    175: "Utc1600_LTCG_CPP",
    176: "Utc1600_LTCG_MSIL",
    177: "Utc1600_POGO_I_C",
    178: "Utc1600_POGO_I_CPP",
    179: "Utc1600_POGO_O_C",
    180: "Utc1600_POGO_O_CPP",
    183: "Linker1010",
    184: "Export1010",
    185: "Implib1010",
    186: "Cvtres1010",
    187: "Masm1010",
    188: "AliasObj1010",
    199: "AliasObj1100",
    201: "Cvtres1100",
    202: "Export1100",
    203: "Implib1100",
    204: "Linker1100",
    205: "Masm1100",
    206: "Utc1700_C",
    207: "Utc1700_CPP",
    208: "Utc1700_CVTCIL_C",
    209: "Utc1700_CVTCIL_CPP",
    210: "Utc1700_LTCG_C ",
    211: "Utc1700_LTCG_CPP",
    212: "Utc1700_LTCG_MSIL",
    213: "Utc1700_POGO_I_C",
    214: "Utc1700_POGO_I_CPP",
    215: "Utc1700_POGO_O_C",
    216: "Utc1700_POGO_O_CPP",
    219: "Cvtres1200",
    220: "Export1200",
    221: "Implib1200",
    222: "Linker1200",
    223: "Masm1200",
    # Speculation
    224: "AliasObj1200",
    237: "Cvtres1210",
    238: "Export1210",
    239: "Implib1210",
    240: "Linker1210",
    241: "Masm1210",
    # Speculation
    242: "Utc1810_C",
    243: "Utc1810_CPP",
    244: "Utc1810_CVTCIL_C",
    245: "Utc1810_CVTCIL_CPP",
    246: "Utc1810_LTCG_C ",
    247: "Utc1810_LTCG_CPP",
    248: "Utc1810_LTCG_MSIL",
    249: "Utc1810_POGO_I_C",
    250: "Utc1810_POGO_I_CPP",
    251: "Utc1810_POGO_O_C",
    252: "Utc1810_POGO_O_CPP",
    255: "Cvtres1400",
    256: "Export1400",
    257: "Implib1400",
    258: "Linker1400",
    259: "Masm1400",
    260: "Utc1900_C",
    261: "Utc1900_CPP",
    # Speculation
    262: "Utc1900_CVTCIL_C",
    263: "Utc1900_CVTCIL_CPP",
    264: "Utc1900_LTCG_C ",
    265: "Utc1900_LTCG_CPP",
    266: "Utc1900_LTCG_MSIL",
    267: "Utc1900_POGO_I_C",
    268: "Utc1900_POGO_I_CPP",
    269: "Utc1900_POGO_O_C",
    270: "Utc1900_POGO_O_CPP",
}


class Result(Enum):
    VALID = 0
    INVALID = 1
    UNABLE_TO_PARSE = 2


def _rol(val, num):
    """Rotates val to the left by num bits."""
    return ((val << (num % 32)) & 0xFFFFFFFF) | (val >> (32 - (num % 32)))


def checksum_test(pe, rich_header):
    """Tests that the Rich header checksum is valid.

    Computes what the Rich header checksum should be. If the Rich header
    contains a different checksum value, this function returns INVALID
    This indicates that either the Rich header or MS-DOS stub has been modified

    The Rich header checksum is computed from the following:
        Length of the MS-DOS stub
        Contents of the MS-DOS stub, with e_lfanew zeroed out
        Rich header @Comp.IDs and lowest 5 bits of each count
    """
    if rich_header is None:
        rich_header = {}
    # Checksum stored in Rich header
    rich_checksum = rich_header.get("checksum", None)

    # Get DOS header data
    if pe.DOS_HEADER.e_lfanew > len(pe.__data__):
        return Result.UNABLE_TO_PARSE
    data = pe.__data__[: pe.DOS_HEADER.e_lfanew]

    # Get start marker
    mask = 0x536E6144  # DanS (little-endian)
    start_marker = struct.pack(
        "<LLLL", rich_checksum ^ mask, rich_checksum, rich_checksum, rich_checksum
    )
    if not len(start_marker):
        return Result.UNABLE_TO_PARSE

    # Get index of start marker
    start_index = data.find(start_marker)
    if start_index == -1:
        return Result.UNABLE_TO_PARSE

    # Get list of @Comp.IDs and counts from Rich header
    # Elements in rich_fields at even indices are @Comp.IDs
    # Elements in rich_fields at odd indices are counts
    rich_fields = copy.deepcopy(rich_header.get("values", None))
    if len(rich_fields) % 2 != 0:
        return Result.UNABLE_TO_PARSE

    # Compute cd as MS-DOS stub portion of checksum
    # Zero out e_lfanew from 0x3c to 0x3f
    cd = 0
    for i in range(start_index):
        if i >= 0x3C and i <= 0x3F:
            cd += _rol(0, i)
        else:
            cd += _rol(data[i], i)

    # Compute cd as Rich header portion of checksum
    cr = 0
    while len(rich_fields):
        compid = rich_fields.pop(0)
        count = rich_fields.pop(0)
        cr += _rol(compid, count & 0x1F)

    # Compute checksum from MS-DOS stub start index, cd, cr
    # Only keep lowest 32 bits
    checksum = (start_index + cd + cr) & 0xFFFFFFFF

    # Compare computed checksum with the checksum in the Rich header
    if checksum != rich_checksum:
        return Result.INVALID
    else:
        return Result.VALID


def duplicate_test(pe, rich_header):
    """Checks for duplicate @Comp.IDs in the Rich header.

    If the Rich header contains duplicate entries, returns INVALID
    This indicates that the Rich header has been modified
    """
    if rich_header is None:
        rich_header = {}

    # Get list of @Comp.IDs and counts from Rich header
    # Elements in rich_fields at even indices are @Comp.IDs
    # Elements in rich_fields at odd indices are counts
    rich_fields = copy.deepcopy(rich_header.get("values", None))
    if len(rich_fields) % 2 != 0:
        return Result.UNABLE_TO_PARSE

    # Get a list of @Comp.IDs in rich_fields
    compids = []
    for i in range(len(rich_fields)):
        if i % 2 == 0:
            compids.append(rich_fields[i])

    # Check if any @Comp.IDs are duplicates
    if len(compids) != len(set(compids)):
        return Result.INVALID

    return Result.VALID


def linker_test(pe, rich_header):
    """Checks that the Rich and PE header linker versions do not conflict.

    Certain Rich Header ProdIDs correspond to linker versions
    Although they are undocumented, we have used prior research as well as our
    own to determine many of them
    There are likely more linker version ProdIDs that we have not identified

    If the linker versions conflict, this function returns INVALID
    This indicates that the Rich header or PE header has been modified
    """
    if rich_header is None:
        rich_header = {}

    # Get list of @Comp.IDs and counts from Rich header
    # Elements in rich_fields at even indices are @Comp.IDs
    # Elements in rich_fields at odd indices are counts
    rich_fields = copy.deepcopy(rich_header.get("values", None))
    if len(rich_fields) % 2 != 0:
        return Result.UNABLE_TO_PARSE

    # Get list of ProdIDs from rich_fields
    prodids = []
    for i in range(len(rich_fields)):
        if i % 2 == 0:
            prodids.append(rich_fields[i] >> 16)

    # Parse major and minor linker versions from PE header
    pe_major = pe.OPTIONAL_HEADER.MajorLinkerVersion
    pe_minor = pe.OPTIONAL_HEADER.MinorLinkerVersion

    # Iterate over Rich header ProdIDs
    found_linker = False
    for prodid in prodids:

        # Only interested in ProdIDs that correspond to linker versions
        if KNOWN_PRODUCT_IDS.get(prodid) is None:
            continue
        prodid_name = KNOWN_PRODUCT_IDS[prodid]
        if not prodid_name.startswith("Linker"):
            continue

        found_linker = True

        # Parse major and minor linker version from ProdID
        prodid_name = prodid_name[6:]
        if prodid_name.endswith("p"):
            prodid_name = prodid_name[:-1]
        rich_major = int(prodid_name[:-2])
        rich_minor = int(prodid_name[-2:])

        # Check whether the Rich and PE linker versions match
        if pe_major == rich_major and pe_minor == rich_minor:
            return Result.VALID

    if not found_linker:
        return Result.UNABLE_TO_PARSE

    return Result.INVALID


def import_count_test(pe, rich_header):
    """Checks that import0 does not conflict with the IAT import count.

    The Rich header contains a ProdID called import0
    It is related to the number of imports in the IAT, but we are unsure how
    It is never less than the number of imports in the IAT

    If import0 is less than IAT import count, this function returns INVALID
    This indicates that the Rich header or IAT has been modified
    """
    if rich_header is None:
        rich_header = {}

    # Check whether the file has an IAT
    if not hasattr(pe, "DIRECTORY_ENTRY_IMPORT"):
        return Result.UNABLE_TO_PARSE

    # Get the number of imports in the IAT
    iat_count = 0
    for entry in pe.DIRECTORY_ENTRY_IMPORT:
        for imported_function in entry.imports:
            iat_count += 1

    # Get list of @Comp.IDs and counts from Rich header
    # Elements in rich_fields at even indices are @Comp.IDs
    # Elements in rich_fields at odd indices are counts
    rich_fields = copy.deepcopy(rich_header.get("values", None))
    if len(rich_fields) % 2 != 0:
        return Result.INVALID

    # Get @Comp.ID 65536 (ProdID Import0)
    import0_count = None
    while len(rich_fields):
        compid = rich_fields.pop(0)
        count = rich_fields.pop(0)
        if compid == 65536:
            import0_count = count

    # Legitimate files never have import0_count < iat_count
    if import0_count is None:
        return Result.VALID

    if import0_count < iat_count:
        return Result.INVALID

    return Result.VALID