void BssTableDeleteEntry(byte *param_1,void *param_2,byte param_3)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  void *__dest;
  
  uVar3 = 0;
  while( true ) {
    if (*param_1 <= uVar3) {
      return;
    }
    if ((param_1[uVar3 * 0x520 + 10] == param_3) &&
       (iVar1 = memcmp(param_1 + uVar3 * 0x520 + 4,param_2,6), iVar1 == 0)) break;
    uVar3 = uVar3 + 1 & 0xff;
  }
  while( true ) {
    iVar1 = uVar3 + 1;
    iVar2 = *param_1 - 1;
    if (iVar2 <= (int)uVar3) break;
    __dest = *(void **)(param_1 + uVar3 * 0x520 + 0x4dc);
    memmove(param_1 + uVar3 * 0x520 + 4,param_1 + iVar1 * 0x520 + 4,0x520)   //possible issue identified - semgrep
    if (__dest != (void *)0x0) {
      RTMPZeroMemory(__dest,0x400);
      memmove(__dest,*(void **)(param_1 + iVar1 * 0x520 + 0x4dc),
              (uint)*(ushort *)(param_1 + iVar1 * 0x520 + 0x4da))   //possible issue identified - semgrep
      *(void **)(param_1 + uVar3 * 0x520 + 0x4dc) = __dest;
    }
    uVar3 = uVar3 + 1 & 0xff;
  }
  iVar1 = *(int *)(param_1 + iVar2 * 0x520 + 0x4dc);
  memset(param_1 + (uint)*param_1 * 0x520 + -0x51c,0,0x520)   //possible issue identified - semgrep
  if (iVar1 != 0) {
    RTMPZeroMemory(iVar1,0x400);
    *(int *)(param_1 + (uint)*param_1 * 0x520 + -0x44) = iVar1;
  }
  *param_1 = *param_1 - 1;
  return;
}