Code:
static Offsets()
{
Base = 0x86ab68;
FileRoot = 0x86576c;
...
basePtrPattern = new Pattern(new byte[] {
100, 0xa1, 0, 0, 0, 0, 0x6a, 0xff, 0x68, 0, 0, 0, 0, 80, 100, 0x89,
0x25, 0, 0, 0, 0, 0xa1, 0, 0, 0, 0, 0x81, 0xec, 0x90, 0, 0, 0,
0x53, 0x55, 0x56, 0x57, 0x33, 0xff, 0x3b, 0xc7
}, "xxxxxxxxx????xxxxxxxxx????xxxxxxxxxxxxxx");
fileRootPattern = new Pattern(new byte[] {
0x6a, 0xff, 0x68, 0, 0, 0, 0, 100, 0xa1, 0, 0, 0, 0, 80, 100, 0x89,
0x25, 0, 0, 0, 0, 0x83, 0xec, 0x30, 0xff, 5, 0, 0, 0, 0, 0x53, 0x55,
0x8b, 0x2d, 0, 0, 0, 0, 0x56, 0xb8
}, "xxx????xxxxxxxxxxxxxxxxxxx????xxxx????xx");
}
Base = m.ReadInt((m.BaseAddress + numArray[3]) + 0x16) - m.BaseAddress;
FileRoot = m.ReadInt((m.BaseAddress + numArray[4]) + $28) - m.BaseAddress;
So I get: