#pragma once #include <vector> #ifdef _DEBUG(X) #define DEBUG(X) X #else #define DEBUG(X) #endif struct Function { struct Block { size_t base{}; size_t size{}; DEBUG(size_t parent{}); // scratch size_t projectedSize{ static_cast<size_t>(-1) }; }; size_t base{}; size_t size{}; std::vector<Block> blocks{}; size_t SearchBlock(size_t address) const; static Function Analyze(const void* code, size_t size, size_t base); };