undefined4 RTMPSoftDecryptWEP(undefined4 param_1,int param_2,byte *param_3,ushort *param_4)
{
byte bVar1;
ushort uVar2;
uint uVar3;
char *pcVar4;
uint uVar5;
int local_20;
uint local_1c [2];
local_20 = 0;
os_alloc_mem(0,&local_20,0x108);
if (local_20 == 0) {
if (RTDebugLevel == 0) {
return 0;
}
pcVar4 = "%s: ARC4_CTX Allocate memory fail!!!\n";
}
else {
if (*(char *)(param_2 + 0x41) != '\0') {
RTMPInitWepEngine(param_3,param_2);
uVar2 = *param_4;
ARC4_Compute(local_20,param_3 + 4,uVar2 - 4,param_3);
memmove(local_1c,param_3 + (ushort)(uVar2 - 8),4) //possible issue identified - semgrep
uVar3 = 0xffffffff;
for (uVar5 = 0; (ushort)(uVar2 - 8) != uVar5; uVar5 = uVar5 + 1) {
bVar1 = *param_3;
param_3 = param_3 + 1;
uVar3 = *(uint *)(FCSTAB_32 + ((uVar3 ^ bVar1) & 0xff) * 4) ^ uVar3 >> 8;
}
if (~uVar3 != local_1c[0]) {
if (RTDebugLevel == 0) {
return 0;
}
printk("! WEP Data CRC Error !\n");
return 0;
}
*param_4 = uVar2 - 8;
if (local_20 == 0) {
return 1;
}
os_free_mem(0);
return 1;
}
if (RTDebugLevel == 0) {
return 0;
}
pcVar4 = "%s : The key is not available !\n";
}
printk(pcVar4,"RTMPSoftDecryptWEP");
return 0;
}