@Kaphotics
I didn't find the exact source code, but I have a reasonable theory now.
So basically the level of crabrawler only depends on the pile size. Big pile has 2 level higher crabrawler than the small one.
RAM address 0x32DE3208 for berry piles status.
+ 0x25 is the bit flag for Crabrawler existence
+ 0x26 is the Crabrawler level
+ 0x28 is the regular berries table (6 x WORD)
Several tests via debugger gives following results: https://github.com/wwwwwwzx/3DSRNGTool/blob/master/Data/BerryTrees.md
And compare with the SuMo level range for Crabrawler, they are just the third highest level and the highest level.
(For example, SuMo Route 10 level range: 24-27, scripted Crabrawler level is 25 for small pile size, 27 for big size)
So I guess they didn't update this with USUM.
To summarize, the level of first encounter was scripted inside the SuMo SOS encounter level ranges. But in USUM, they are out of range because the encounter table changes.
A solution is adding following static encounter:
new EncounterStatic { Species = 739, Level = 25, Location = 106, }, // Route 10
new EncounterStatic { Species = 739, Level = 28, Location = 110, }, // Ula'ula Beach
new EncounterStatic { Species = 739, Level = 31, Location = 118, }, // Route 16
new EncounterStatic { Species = 739, Level = 32, Location = 120, }, // Route 17