int pthread_key_delete(pthread_key_t __key)

{
  char cVar1;
  int *piVar2;
  int iVar3;
  int *piVar4;
  
  pthread_mutex_lock((pthread_mutex_t *)&DAT_00033a20);
  iVar3 = __pthread_manager_request;
  if ((__key < 0x400) && ((&DAT_00031a20)[__key * 2] != 0)) {
    (&DAT_00031a24)[__key * 2] = 0;
    (&DAT_00031a20)[__key * 2] = 0;
    if (iVar3 != -1) {
      piVar2 = (int *)FUN_00018f80();
      cVar1 = (char)piVar2[0xb]   //possible issue identified - semgrep
      piVar4 = piVar2;
      while( true ) {
        if ((cVar1 == '\0') && (piVar4[(__key >> 5) + 0x3b] != 0)) {
          *(undefined4 *)(piVar4[(__key >> 5) + 0x3b] + (__key & 0x1f) * 4) = 0;
        }
        piVar4 = (int *)*piVar4;
        if (piVar4 == piVar2) break;
        cVar1 = *(char *)(piVar4 + 0xb)   //possible issue identified - semgrep
      }
    }
    pthread_mutex_unlock((pthread_mutex_t *)&DAT_00033a20);
    iVar3 = 0;
  }
  else {
    pthread_mutex_unlock((pthread_mutex_t *)&DAT_00033a20);
    iVar3 = 0x16;
  }
  return iVar3;
}