Refactoring. Запилил функции в отдельный файл. Переделал по максимуму в чистый Си, где возможно. Добавил передачу по ссылке.