@@ -40,18 +40,35 @@ bool Core::find_functions()
4040{
4141 bool failed = false ;
4242#ifdef _WIN32
43- FIND_OR_DIE (ToString, " 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 83 EC ?? 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 ?? 64 A3 ?? ?? ?? ?? 8B 1D ?? ?? ?? ??" );
43+ if ( ByondBuild > 1589 )
44+ {
45+ FIND_OR_DIE (ToString, " 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 83 EC 3C 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 ?? ?? ?? ?? 8B 75 ??" );
46+ FIND_OR_DIE (SetVariable, " 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 83 EC 08 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 ?? ?? ?? ?? 8B 4D ??" );
47+ FIND_OR_DIE (GetVariable, " 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 83 EC 0C 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 ?? ?? ?? ?? 8B 4D ??" );
48+ FIND_OR_DIE (GetAssocElement, " 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 83 EC 10 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 ?? ?? ?? ?? 8B 4D ??" );
49+ FIND_OR_DIE (SetAssocElement1, " 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 83 EC 14 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 64 A3 ?? ?? ?? ?? 8B 4D ??" );
50+ FIND_OR_DIE (IsInContainer, " 55 8B EC 8B 4D 10 83 EC 38 0F B6 C1 56 57 83 F8 ??" );
51+ FIND_OR_DIE (DestroyDatum, " 55 8B EC B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? 84 C0 74 09 80 3D BC ?? ?? ?? ?? 74 1B FF 75 14 B9 D4 40 ??" );
52+ }
53+ else
54+ {
55+ FIND_OR_DIE (ToString, " 55 8B EC 6A FF 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 83 EC ?? 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 ?? 64 A3 ?? ?? ?? ?? 8B 1D ?? ?? ?? ??" );
56+ FIND_OR_DIE (SetVariable, " 55 8B EC 8B 4D 08 0F B6 C1 48 57 8B 7D 10 83 F8 53 0F ?? ?? ?? ?? ?? 0F B6 80 ?? ?? ?? ?? FF 24 85 ?? ?? ?? ?? FF 75 18 FF 75 14 57 FF 75 0C E8 ?? ?? ?? ?? 83 C4 10 5F 5D C3" );
57+ FIND_OR_DIE (GetVariable, " 55 8B EC 8B 4D ?? 0F B6 C1 48 83 F8 ?? 0F 87 ?? ?? ?? ?? 0F B6 80 ?? ?? ?? ?? FF 24 85 ?? ?? ?? ?? FF 75 ?? FF 75 ?? E8 ?? ?? ?? ??" );
58+ FIND_OR_DIE (GetAssocElement, " 55 8B EC 51 8B 4D 08 C6 45 FF 00 80 F9 05 76 11 80 F9 21 74 10 80 F9 0D 74 0B 80 F9 0E 75 65 EB 04 84 C9 74 5F 6A 00 8D 45 FF 50 FF 75 0C 51 6A 00 6A 7B" );
59+ FIND_OR_DIE (SetAssocElement1, " 55 8B EC 83 EC 14 8B 4D 08 C6 45 FF 00 80 F9 05 76 15 80 F9 21 74 14 80 F9 0D 74 0F 80 F9 0E 0F 85 ?? ?? ?? ?? EB 04 84 C9 74 7A 6A 00 8D 45 FF 50 FF 75 0C 51 6A 00 6A 7C" );
60+ FIND_OR_DIE (IsInContainer, " 55 8B EC 8B 4D 10 83 EC 38 0F B6 C1 56 57 83 F8 53 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? 53 6A 0F FF 75 14 51 E8" );
61+ FIND_OR_DIE (DestroyDatum, " 55 8B EC 8B 55 10 0F B6 C2 83 C0 FE 83 F8 1F 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? 8B 4D 14 3B ?? ?? ?? ?? ?? 0F 83 ?? ?? ?? ?? A1 ?? ?? ?? ?? 8B 04 88 85 C0 0F 84" );
62+ }
4463 FIND_OR_DIE (TopicFloodCheck, " 55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 83 EC 2C 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? FF 75 08 E8 ?? ?? ?? ??" );
4564 FIND_OR_DIE (DelDatum, " 55 8B EC 8B 4D 08 3B 0D ?? ?? ?? ?? 73 55 A1 ?? ?? ?? ?? 8B 04 88 85 C0 74 49 8B 50 18 81 FA 00 00 00 70" );
4665 FIND_OR_DIE (Suspend, " 55 8B EC 53 56 57 8B 7D 08 57 E8 ?? ?? ?? ?? 8B 1F 8B F0 8A 4F 69 83 C4 04 8B 56 18 88 4A 69 8B 4B 20 89 4E 20 8B 43 24 89 46 24 8B 45 0C C6 47 69 00 C7 43 ?? ?? ?? ?? ?? C7 43 ?? ?? ?? ?? ?? 8B 4E 18 89 41 04 F6 43 04 10" );
4766 FIND_OR_DIE (StartTiming, " 55 8B EC 56 8B 75 ?? 56 80 4E ?? ??" );
48- FIND_OR_DIE (SetVariable, " 55 8B EC 8B 4D 08 0F B6 C1 48 57 8B 7D 10 83 F8 53 0F ?? ?? ?? ?? ?? 0F B6 80 ?? ?? ?? ?? FF 24 85 ?? ?? ?? ?? FF 75 18 FF 75 14 57 FF 75 0C E8 ?? ?? ?? ?? 83 C4 10 5F 5D C3" );
4967 FIND_OR_DIE (GetProcArrayEntry, " 55 8B EC 8B 45 08 3B 05 ?? ?? ?? ?? 72 04 33 C0 5D C3 8D 0C C0 A1 ?? ?? ?? ?? 8D 04 88 5D C3" );
5068 FIND_OR_DIE (GetStringTableEntry, " 55 8B EC 8B 4D 08 3B 0D ?? ?? ?? ?? 73 10 A1" );
5169 FIND_OR_DIE (GetProfileInfo, " 55 8B EC A1 ?? ?? ?? ?? 56 8B 75 08 3B F0 73 30 8B ?? ?? ?? ?? ?? 85 C9 75 36 8D 04 80 C1 E0 03 50 FF 15 ?? ?? ?? ?? 83 C4 04 A3 ?? ?? ?? ?? 85 C0 75 12 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 04 33 C0 5E 5D C3 E8 ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? 8D 04 B6 8D 04 C1 5E 5D C3" );
5270 FIND_OR_DIE (CallGlobalProc, " 55 8B EC 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 ?? 8B 55 ?? 8B 45 ??" );
5371 FIND_OR_DIE (CrashProc, " 55 8B EC 6A ?? 68 ?? ?? ?? ?? 64 A1 ?? ?? ?? ?? 50 A1 ?? ?? ?? ?? 33 C5 50 8D 45 ?? 64 A3 ?? ?? ?? ?? A1 ?? ?? ?? ?? A8 ?? 75 ?? 83 C8 ?? A3 ?? ?? ?? ?? B9 ?? ?? ?? ?? C7 45 ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 ?? C7 45 ?? ?? ?? ?? ?? B9 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8D 45 ??" )
54- FIND_OR_DIE (GetVariable, " 55 8B EC 8B 4D ?? 0F B6 C1 48 83 F8 ?? 0F 87 ?? ?? ?? ?? 0F B6 80 ?? ?? ?? ?? FF 24 85 ?? ?? ?? ?? FF 75 ?? FF 75 ?? E8 ?? ?? ?? ??" );
5572 FIND_OR_DIE (ProcCleanup, " 55 8B EC 53 8B ?? ?? ?? ?? ?? 56 8B 75 08 57 8B 7E 44 85 FF 74 2A 8B 47 20 89 46 44 FF 77 08 FF 37 E8 ?? ?? ?? ?? 8D 47 10 50 E8 ?? ?? ?? ?? FF 37 FF D3 57 FF D3 8B 7E 44 83 C4 14 85 FF 75 D6 FF 76 50 FF 76 48 E8" );
5673 FIND_OR_DIE (CreateContext, " 55 8B EC 83 EC 64 56 57 8B 7D 08 8B 4F 18 85 C9 0F 84 ?? ?? ?? ?? A1 ?? ?? ?? ?? 89 41 04 8B 4F 18 89 ?? ?? ?? ?? ?? 80 79 6B 00" );
5774 FIND_OR_DIE (GetTypeById, " 55 8B EC 8B 45 08 3B 05 ?? ?? ?? ?? 72 04 33 C0 5D C3 ?? ?? ?? 03 05 ?? ?? ?? ?? 5D C3" );
@@ -60,11 +77,8 @@ bool Core::find_functions()
6077 FIND_OR_DIE (GetTurf, " 55 8B EC 8B 45 08 0F BF ?? ?? ?? ?? ?? 53 56 0F B7 F0 57 3B F2 7D 3A 8B 45 0C 0F BF ?? ?? ?? ?? ?? 0F B7 D8 3B DF 7D 29" );
6178 FIND_OR_DIE (AppendToContainer, " 55 8B EC 8B 4D 08 0F B6 C1 48 56 83 F8 53 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? FF 75 0C E8 ?? ?? ?? ?? 8B F0 83 C4 04 85 F6 0F 84 ?? ?? ?? ?? 8B 46 0C 40 50 56 E8 ?? ?? ?? ?? 8B 56 0C 83 C4 08 85 D2" );
6279 FIND_OR_DIE (RemoveFromContainer, " 55 8B EC 8B 4D 08 83 EC 0C 0F B6 C1 48 53 83 F8 53 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? 8B 55 10 FF 24 ?? ?? ?? ?? ?? 6A 0F FF 75 0C 51 E8 ?? ?? ?? ?? 50 E8 ?? ?? ?? ?? 83 C4 10 85 C0 0F 84 ?? ?? ?? ?? 8B 48 0C 8B 10 85 C9 0F 84 ?? ?? ?? ?? 8B 45 14 8B 5D 10" );
63- FIND_OR_DIE (GetAssocElement, " 55 8B EC 51 8B 4D 08 C6 45 FF 00 80 F9 05 76 11 80 F9 21 74 10 80 F9 0D 74 0B 80 F9 0E 75 65 EB 04 84 C9 74 5F 6A 00 8D 45 FF 50 FF 75 0C 51 6A 00 6A 7B" );
64- FIND_OR_DIE (SetAssocElement1, " 55 8B EC 83 EC 14 8B 4D 08 C6 45 FF 00 80 F9 05 76 15 80 F9 21 74 14 80 F9 0D 74 0F 80 F9 0E 0F 85 ?? ?? ?? ?? EB 04 84 C9 74 7A 6A 00 8D 45 FF 50 FF 75 0C 51 6A 00 6A 7C" );
6580 FIND_OR_DIE (CreateList, " 55 8B EC 8B ?? ?? ?? ?? ?? 56 85 C9 74 1B A1 ?? ?? ?? ?? 49 89 ?? ?? ?? ?? ?? 8B 34 88 81 FE ?? ?? ?? ?? 0F 85 ?? ?? ?? ?? 8B ?? ?? ?? ?? ?? 8B F1 81 F9 ?? ?? ?? ?? 75 1B 51 68 ?? ?? ?? ?? 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 0C B8 ?? ?? ?? ?? 5E 5D C3" );
6681 FIND_OR_DIE (Length, " 55 8B EC 8B 4D 08 83 EC 18 0F B6 C1 48 53 56 57 83 F8 53 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? FF 75 0C" );
67- FIND_OR_DIE (IsInContainer, " 55 8B EC 8B 4D 10 83 EC 38 0F B6 C1 56 57 83 F8 53 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? 53 6A 0F FF 75 14 51 E8" );
6882 FIND_OR_DIE (PrintToDD, " 55 8B EC 56 8B ?? ?? ?? ?? ?? 85 F6 74 30 8B 46 0C 8B 40 04 85 C0 74 1C 50 FF 75 08 FF 15" );
6983 FIND_OR_DIE (DisconnectClient1, " 55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 81 EC ?? ?? ?? ?? A1 ?? ?? ?? ?? 33 C5 89 45 F0 56 50 8D 45 F4 ?? ?? ?? ?? ?? ?? 6A 00 8D" );
7084 FIND_OR_DIE (DisconnectClient2, " 55 8B EC 6A FF 68 ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 50 51 53 56 57 A1 ?? ?? ?? ?? 33 C5 50 8D 45 F4 ?? ?? ?? ?? ?? ?? 8B 5D 08 ?? ?? ?? ?? ?? ?? ?? 0F 83" );
@@ -75,7 +89,6 @@ bool Core::find_functions()
7589 FIND_OR_DIE (GetRBTreeMemoryUsage, " 55 8B EC 56 8B 75 08 57 33 FF 85 F6 74 19 8B FF" );
7690 FIND_OR_DIE (InitializeListFromContext, " 55 8B EC 56 FF 75 08 E8 ?? ?? ?? ?? 8B F0 83 C4 04 85 F6 74 2A 8B ?? ?? ?? ?? ?? 0F B7 4E 0C 66 29 4A 42 8B 46 0C" );
7791 FIND_OR_DIE (DestroyList, " 55 8B EC A1 ?? ?? ?? ?? 56 57 8B 7D 08 8B 34 B8 85 F6 0F 84 ?? ?? ?? ?? 83 7E 10 00 74 1A 6A 0F 57" );
78- FIND_OR_DIE (DestroyDatum, " 55 8B EC 8B 55 10 0F B6 C2 83 C0 FE 83 F8 1F 0F 87 ?? ?? ?? ?? 0F B6 ?? ?? ?? ?? ?? FF 24 ?? ?? ?? ?? ?? 8B 4D 14 3B ?? ?? ?? ?? ?? 0F 83 ?? ?? ?? ?? A1 ?? ?? ?? ?? 8B 04 88 85 C0 0F 84" );
7992 FIND_OR_DIE (GetStringTableIndexUTF8, " 55 8B EC 8B 45 ?? 83 EC ?? 53 56 8B 35 ?? ?? ?? ??" );
8093 if (failed) return false ;
8194 int offset = *(int *)((char *)TopicFloodCheck + 0x2C );
@@ -101,6 +114,32 @@ bool Core::find_functions()
101114 current_execution_context_ptr = *(ExecutionContext * **)Pocket::Sigscan::FindPattern (BYONDCORE, " A1 ?? ?? ?? ?? 8D ?? ?? ?? ?? ?? 83 C4 08 89 48 28 8D ?? ?? ?? ?? ?? 89 48 2C 83 3D ?? ?? ?? ?? ?? 74 25 8B 00 FF 30 E8 ?? ?? ?? ?? 83 C4 04 FF 30 E8 ?? ?? ?? ?? 83 C4 04 FF 30 68 ?? ?? ?? ?? E8 ?? ?? ?? ?? 83 C4 08 66 ?? ?? ?? ?? ?? ?? A1 ?? ?? ?? ?? 75 28 A8 02 75 24 E8 ?? ?? ?? ?? 85 C0 75 09 50" , 1 );
102115 misc_entry_table = **(MiscEntry * ***)Pocket::Sigscan::FindPattern (BYONDCORE, " A1 ?? ?? ?? ?? FF 34 B8 FF D6 47 83 C4 04 3B ?? ?? ?? ?? ?? 72 EA FF 35 ?? ?? ?? ?? FF D6 33 FF 83 C4 04 39 ?? ?? ?? ?? ?? 76 1E" , 1 );
103116#else
117+ if ( ByondBuild > 1589 )
118+ {
119+ FIND_OR_DIE (ProcCleanup, " 55 89 E5 57 56 53 89 C3 83 EC 5C 8B 40 ??" );
120+ FIND_OR_DIE (Runtime, " 55 89 E5 57 56 53 83 EC 3C 8B 15 D8 0E 6E 00 85 D2 0F 84 D9 02 00 00 0F B6 42 6D 3C 01 0F 86 85 ??" );
121+ FIND_OR_DIE (ToString, " 55 89 E5 83 EC 68 89 5D F4 8D 5D C8 89 75 F8 89 ??" );
122+ FIND_OR_DIE (GetTurf, " 55 89 E5 83 EC 38 0F BF 0D C0 D7 6D 00 0F ??" );
123+ FIND_OR_DIE (SetAssocElement2, " 55 89 E5 83 EC 68 89 75 F8 8B 75 08 89 5D F4 89 C3 8B 45 0C 89 7D FC 80 FB 3C 89 D7 88 5D BF 89 ??" );
124+ FIND_OR_DIE (CallProcByName, " 55 89 E5 57 56 89 CE 53 89 D3 83 EC 6C 0F B6 55 08 89 45 B4 8B 45 14 8B 7D 10 C6 45 E7 00 0F B6 ??" );
125+ FIND_OR_DIE (DecRefCount, " 55 89 E5 83 EC 38 8B 55 08 89 5D F8 8B 5D 0C 89 75 FC 80 FA 54 89 D0 76 6F 88 C2 89 5C 24 04 8D ??" );
126+ FIND_OR_DIE (IncRefCount, " 55 89 E5 53 83 EC 34 8B 4D 08 8B 45 0C 80 F9 54 89 CA 76 64 88 D1 8D 5D F4 89 44 24 04 C7 44 24 ??" );
127+ FIND_OR_DIE (GetAssocElement, " 55 89 E5 83 EC 78 80 FA 3C 89 5D F4 89 D3 89 75 F8 89 D6 89 7D FC 89 CF 89 45 B4 0F 84 B7 00 00 ??" ); // regparm3
128+ FIND_OR_DIE (SetVariable, " 55 89 E5 81 EC D8 00 00 00 89 5D F4 8B 5D 08 8B 45 0C 89 75 F8 8B 55 18 89 7D FC 8B 75 10 80 FB ??" );
129+ }
130+ else
131+ {
132+ FIND_OR_DIE (ProcCleanup, " 55 89 E5 56 89 C6 53 83 EC ?? 8B 58 ??" );
133+ FIND_OR_DIE (Runtime, " 55 89 E5 57 56 53 83 EC ?? A1 ?? ?? ?? ?? 85 C0 0F 84 ?? ?? ?? ?? 0F B6 48 ??" );
134+ FIND_OR_DIE (ToString, " 55 89 E5 83 EC 68 ?? ?? ?? ?? 5D 08 ?? ?? ?? 8B" );
135+ FIND_OR_DIE (GetTurf, " 55 89 E5 83 EC ?? 0F BF 0D ?? ?? ?? ??" );
136+ FIND_OR_DIE (SetAssocElement2, " 55 B9 ?? ?? ?? ?? 89 E5 83 EC ?? 89 7D ??" );
137+ FIND_OR_DIE(CallProcByName, "55 89 E5 83 EC ?? 89 5D ?? 89 D3 8B 55 ?? 89 45 ?? 0F B6 45 ?? 89 75 ?? 89 CE 8B 4D ?? 89 7D ?? 89 14 24 8B 55 ?? 88 45 ?? 0F B6 F8 8D 45 ?? 89 44 24 ?? 89 F8 89 4C 24 ?? 31 C9 C6 45 ?? ?? C7 44 24 ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 7D ?? ?? 0F 84 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 ?? 8B 4D ?? 8B 55 ?? 89 44 24 ?? 8D 45 ?? C7 44 24 ?? ?? ?? ?? ?? 89 4C 24 ?? 8B 4D ?? 89 54 24 ?? 8B 55 ?? 89 3C 24 89 4C 24 ?? 89 F1 89 54 24 ?? 89 DA E8 ?? ?? ?? ?? 8B 45 ?? 8B 55 ?? 8B 4D ?? 89 01 89 51 ?? 8D B6 ?? ?? ?? ?? 8B 45 ?? 8B 5D ?? 8B 75 ?? 8B 7D ?? 89 EC 5D C3 F7 C7 ?? ?? ?? ?? 74 ?? 80 7D ?? ?? 0F 84 ?? ?? ?? ?? 8B 4D ?? C7 01 ?? ?? ?? ?? C7 41 ?? ?? ?? ?? ?? 8B 45 ?? 8B 55 ?? 89 44 24 ?? 89 14 24 E8 ?? ?? ?? ?? 80 7D ?? ?? 74 ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 ?? 8B 55 ?? C7 44 24 ?? ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? 89 04 24 89 54 24 ?? E8 ?? ?? ?? ?? 8B 55 ?? 89 14 24 E8 ?? ?? ?? ?? 8B 18 C7 44 24 ?? ?? ?? ?? ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 5C 24 ?? 89 04 24 E8 ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? 89 04 24 E8 ?? ?? ?? ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 89 04 24 E8 ?? ?? ?? ??"); // OH DEAR GOD
138+ FIND_OR_DIE (DecRefCount, " 55 89 E5 83 EC ?? 8B 45 08 89 5D ?? 8B 5D 0C 89 75 ?? 3C 54" );
139+ FIND_OR_DIE (IncRefCount, " 55 89 E5 83 EC ?? 8B 55 08 8b 45 0C 80 FA 54 76 07 c9 c3 90" );
140+ FIND_OR_DIE (GetAssocElement, " 55 89 E5 83 EC ?? 89 4D C4 B9 7B 00 00 00 89 5D F4 89 D3 89 75 F8 89 C6 89 D0 8B 55 C4 89 7D FC C7 44 24 04 00 00 00 00 C7 04 24 00 00 00 00 E8 ?? ?? ?? ?? 3D FF FF 00 00" ); // regparm3
141+ FIND_OR_DIE (SetVariable, " 55 89 E5 81 EC A8 00 00 00 8B 55 ?? 8B 45 ?? 89 5D ?? 8b 5D ?? 89 7D ??" );
142+ }
104143 FIND_OR_DIE (Suspend, " 55 89 E5 57 31 FF 56 89 C6 53 83 EC ?? 89 F0" ); // regparm3
105144 FIND_OR_DIE (CrashProc, " 55 89 E5 53 83 EC ?? 80 3D ?? ?? ?? ?? ?? 75 ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? 85 C0 75 ?? C7 04 24 ?? ?? ?? ?? 8D 5D ?? E8 ?? ?? ?? ?? 8B 45 ?? 89 5C 24 ?? C7 04 24 ?? ?? ?? ?? 89 44 24 ?? E8 ?? ?? ?? ?? C7 04 24 ?? ?? ?? ??" );
106145 FIND_OR_DIE (StartTiming, " 55 89 E5 83 EC ?? 85 C0 89 5D ?? 89 C3 89 75 ?? 89 7D ?? 74 ?? 8B 50 ??" ); // regparm3
@@ -109,34 +148,24 @@ bool Core::find_functions()
109148 FIND_OR_DIE (GetStringTableEntry, " 55 89 E5 83 EC 18 8B 45 ?? 39 05 ?? ?? ?? ?? 76 ?? 8B 15 ?? ?? ?? ?? 8B 04 ??" );
110149 FIND_OR_DIE (GetProfileInfo, " 55 31 C0 89 E5 53 83 EC ?? 8B 5D ?? 8B 15 ?? ?? ?? ??" );
111150 FIND_OR_DIE (CallGlobalProc, " 55 89 E5 81 EC ?? ?? ?? ?? 89 5D ?? 89 C3 0F B6 45" );
112- FIND_OR_DIE (ProcCleanup, " 55 89 E5 56 89 C6 53 83 EC ?? 8B 58 ??" );
113151 FIND_OR_DIE (CreateContext, " 55 89 E5 57 56 89 C6 53 89 D3 83 EC ?? 80 3D ?? ?? ?? ?? ??" );
114- FIND_OR_DIE (Runtime, " 55 89 E5 57 56 53 83 EC ?? A1 ?? ?? ?? ?? 85 C0 0F 84 ?? ?? ?? ?? 0F B6 48 ??" );
115152 FIND_OR_DIE (DisconnectClient2, " 55 89 E5 57 56 53 83 EC ?? 0F B7 7D ?? 66 3B 3D ?? ?? ?? ??" );
116153 FIND_OR_DIE (CreateList, " 55 89 E5 57 56 53 83 EC ?? A1 ?? ?? ?? ?? 8B 75 ?? 85 C0 0F 84 ?? ?? ?? ??" );
117154 FIND_OR_DIE (SendMaps, " 55 89 E5 57 56 53 81 EC ?? ?? ?? ?? 80 3D ?? ?? ?? ?? ?? 0F 85 ?? ?? ?? ??" );
118- FIND_OR_DIE (ToString, " 55 89 E5 83 EC 68 ?? ?? ?? ?? 5D 08 ?? ?? ?? 8B" );
119155 FIND_OR_DIE (Length, " 55 89 E5 57 56 53 83 EC ?? 8B 45 ?? 8B 5D ?? 3C ??" );
120156 FIND_OR_DIE (PrintToDD, " 55 89 E5 53 83 EC ?? 8B 1D ?? ?? ?? ?? 8B 55 ?? 85 DB" );
121157 FIND_OR_DIE (TopicFloodCheck, " 55 89 E5 57 56 53 83 EC ?? 0F B7 45 ?? 89 04 24 E8 ?? ?? ?? ?? BA ?? ?? ?? ??" );
122- FIND_OR_DIE (GetTurf, " 55 89 E5 83 EC ?? 0F BF 0D ?? ?? ?? ??" );
123158 FIND_OR_DIE (GetTypeById, " 55 31 C0 89 E5 8B 55 ?? 39 15 ?? ?? ?? ?? 76 ?? 6B C2 ??" );
124159 FIND_OR_DIE (MobTableIndexToGlobalTableIndex, " 55 31 C0 89 E5 8B 55 ?? 39 15 ?? ?? ?? ?? 76 ?? 89 D0" );
125160 FIND_OR_DIE (AppendToContainer, " 55 89 E5 83 EC ?? 3C ?? 89 5D ?? 8B 5D ?? 89 75 ?? 8B 75 ?? 89 7D ?? 76 ??" );
126161 FIND_OR_DIE (DisconnectClient1, " 55 89 E5 81 EC ?? ?? ?? ?? 89 75 ?? 8D B5 ?? ?? ?? ?? 89 5D ?? 89 D3" );
127162 FIND_OR_DIE (GetListPointerById, " 55 89 E5 83 EC ?? 89 04 24 E8 ?? ?? ?? ??" );
128- FIND_OR_DIE (SetAssocElement2, " 55 B9 ?? ?? ?? ?? 89 E5 83 EC ?? 89 7D ??" );
129- FIND_OR_DIE(CallProcByName, "55 89 E5 83 EC ?? 89 5D ?? 89 D3 8B 55 ?? 89 45 ?? 0F B6 45 ?? 89 75 ?? 89 CE 8B 4D ?? 89 7D ?? 89 14 24 8B 55 ?? 88 45 ?? 0F B6 F8 8D 45 ?? 89 44 24 ?? 89 F8 89 4C 24 ?? 31 C9 C6 45 ?? ?? C7 44 24 ?? ?? ?? ?? ?? E8 ?? ?? ?? ?? 80 7D ?? ?? 0F 84 ?? ?? ?? ?? 3D ?? ?? ?? ?? 74 ?? 8B 4D ?? 8B 55 ?? 89 44 24 ?? 8D 45 ?? C7 44 24 ?? ?? ?? ?? ?? 89 4C 24 ?? 8B 4D ?? 89 54 24 ?? 8B 55 ?? 89 3C 24 89 4C 24 ?? 89 F1 89 54 24 ?? 89 DA E8 ?? ?? ?? ?? 8B 45 ?? 8B 55 ?? 8B 4D ?? 89 01 89 51 ?? 8D B6 ?? ?? ?? ?? 8B 45 ?? 8B 5D ?? 8B 75 ?? 8B 7D ?? 89 EC 5D C3 F7 C7 ?? ?? ?? ?? 74 ?? 80 7D ?? ?? 0F 84 ?? ?? ?? ?? 8B 4D ?? C7 01 ?? ?? ?? ?? C7 41 ?? ?? ?? ?? ?? 8B 45 ?? 8B 55 ?? 89 44 24 ?? 89 14 24 E8 ?? ?? ?? ?? 80 7D ?? ?? 74 ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? 8B 45 ?? 8B 55 ?? C7 44 24 ?? ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? 89 04 24 89 54 24 ?? E8 ?? ?? ?? ?? 8B 55 ?? 89 14 24 E8 ?? ?? ?? ?? 8B 18 C7 44 24 ?? ?? ?? ?? ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? 89 5C 24 ?? 89 04 24 E8 ?? ?? ?? ?? C7 44 24 ?? ?? ?? ?? ?? 89 04 24 E8 ?? ?? ?? ?? C7 04 24 ?? ?? ?? ?? E8 ?? ?? ?? ?? A1 ?? ?? ?? ?? 89 04 24 E8 ?? ?? ?? ??"); // OH DEAR GOD
130163 FIND_OR_DIE (DelDatum, " 55 89 E5 53 83 EC 44 8B 45 08 3B 05 ?? ?? ?? ?? 73 2C 8B 15 ?? ?? ?? ?? 8B 0C 82 85 C9 74 1F 8B 51 ??" );
131- FIND_OR_DIE (DecRefCount, " 55 89 E5 83 EC ?? 8B 45 08 89 5D ?? 8B 5D 0C 89 75 ?? 3C 54" );
132- FIND_OR_DIE (IncRefCount, " 55 89 E5 83 EC ?? 8B 55 08 8b 45 0C 80 FA 54 76 07 c9 c3 90" );
133- FIND_OR_DIE (GetAssocElement, " 55 89 E5 83 EC ?? 89 4D C4 B9 7B 00 00 00 89 5D F4 89 D3 89 75 F8 89 C6 89 D0 8B 55 C4 89 7D FC C7 44 24 04 00 00 00 00 C7 04 24 00 00 00 00 E8 ?? ?? ?? ?? 3D FF FF 00 00" ); // regparm3
134- FIND_OR_DIE (SetVariable, " 55 89 E5 81 EC A8 00 00 00 8B 55 ?? 8B 45 ?? 89 5D ?? 8b 5D ?? 89 7D ??" );
135164 FIND_OR_DIE (GetStringTableIndexUTF8, " 55 89 E5 57 56 89 CE 53 89 D3 83 EC ?? 8B 55 ?? 85 C0" ) // regparm3
136165 if (failed) return false ;
137166
138167 // De-inlines DelDatum, very hackily.
139- char *datum_dec_function_deinline = (char *)Pocket::Sigscan::FindPattern (BYONDCORE, " 55 89 e5 53 83 ec 44 8b 45 08 3b 05 ?? ?? ?? ?? 72 46" , 114 );
168+ char *datum_dec_function_deinline = (char *)Pocket::Sigscan::FindPattern (BYONDCORE, " 55 89 E5 53 83 EC 44 8B 45 08 3B 05 ?? ?? ?? ?? 72 46" , 114 );
140169 subhook_unprotect (datum_dec_function_deinline, 3 +5 +2 );
141170 // mov [esp], eax
142171 datum_dec_function_deinline[0 ] = 0x89 ;
@@ -151,7 +180,14 @@ bool Core::find_functions()
151180 datum_pointer_table_length = *(unsigned int **)((char *)DelDatum + 12 );
152181 datum_pointer_table = *(RawDatum****)((char *)DelDatum + 20 );
153182
154- current_execution_context_ptr = *(ExecutionContext * **)Pocket::Sigscan::FindPattern (BYONDCORE, " A1 ?? ?? ?? ?? 8D 7D ?? 89 78 ??" , 1 );
183+ if ( ByondBuild > 1589 )
184+ {
185+ current_execution_context_ptr = *(ExecutionContext * **)Pocket::Sigscan::FindPattern (BYONDCORE, " A1 ?? ?? ?? ?? 85 C0 0F 84 ?? ?? ?? ?? 8B 00 85 C0 0F 84 ?? ?? ?? ?? 8B 00" , 1 );
186+ }
187+ else
188+ {
189+ current_execution_context_ptr = *(ExecutionContext * **)Pocket::Sigscan::FindPattern (BYONDCORE, " A1 ?? ?? ?? ?? 8D 7D ?? 89 78 ??" , 1 );
190+ }
155191 misc_entry_table = **(MiscEntry * ***)Pocket::Sigscan::FindPattern (BYONDCORE, " A1 ?? ?? ?? ?? 8B 04 98 85 C0 74 ?? 89 04 24 E8 ?? ?? ?? ?? 8B 15 ?? ?? ?? ??" , 1 );
156192#endif
157193 return !failed;
0 commit comments