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;
}