Не совсем понял, как оно могло полностью восстановить сорцы - имена-то наверняка можно было при компиляции в slim binaries обфурскировать? А JS разве не позволяет декомпилировать? Он вообще в открытом текстовом виде идет - но там такие методы обфурскации проработаны - понять этот код просто нереально.