Как разобраться? Для начала освоить ассемблер, хотя бы на базовом уровне, чтобы понимать смысл команд. Затем определить стандарт передачи данных в подпрограммы для варианта компиляции вашей программы. Потом изучать все эти подпрограммы sub_XXXX и пытаться понять, что они делают. По ходу изучения переименовывать подпрограммы и адреса данных в удобочитаемую форму. Когда смысл всех подпрограмм станет ясен, можно будет понять, что в целом делает программа.