Ok so the crash is in the BG_IsWeaponValid, which is (i guess ) related to weapons. You proably need to check them out. And this function is small so why not just revere it, going to be a piece of cake, here we go:
PHP Code:
cracking_hook_function(0x080E97F0, (int)hook_BG_IsWeaponValid);
int hook_BG_IsWeaponValid(int a1, int a2) {
int v3;
char v4;
signed int (*sub_80E9758)(int a1);
*(int *)&sub_80E9758 = 0x80E9758;
int (*sub_80D9E84)(int a1, signed int a2);
*(int *)&sub_80D9E84 = 0x80D9E84;
int (*sub_80E9270)(int a1);
*(int *)&sub_80E9270 = 0x80E9270;
v4 = 1;
if ( !(unsigned int8_t)sub_80E9758(a2) )
v4 = 0;
if ( !(unsigned int8_t)sub_80D9E84(a1 + 1348, a2) )
v4 = 0;
v3 = sub_80E9270(a2);
if ( !*(long *)(v3 + 132) && *(char *)(a1 + 1365) != a2 && *(char *)(a1 + 1366) != a2 && *(long *)(v3 + 876) != a2 )
v4 = 0;
// printf("Testcall\n");
return (unsigned int8_t)v4;
}
I have no idea why it segfaults though, and it's called from a SV_UserMove (possibly every player's frame). Try playing with this code, it could be that v3 e.g weapon + its somewhat parameter is broken or something.