void CMDHandler(int param_1)

{
  char cVar1;
  int iVar2;
  int *local_30 [2];
  
  if (param_1 != 0) {
    while (*(int *)(param_1 + 0x29bc) != 0) {
      local_bh_disable();
      RTThreadDequeueCmd(param_1 + 0x29bc,local_30);
      local_bh_enable();
      if (local_30[0] == (int *)0x0) {
        return;
      }
      if (((*(uint *)(param_1 + 0x76904) & 0x140) == 0) && (3 < *local_30[0] + 0xf28cfefeU)) {
        if (RTDebugLevel != 0) {
          printk("--> Control Thread !! ERROR !! Unknown(cmdqelmt->command=0x%x) !! \n");
          goto LAB_00027ff8;
        }
        cVar1 = (char)local_30[0][3]   //possible issue identified - semgrep
      }
      else {
LAB_00027ff8:
        cVar1 = (char)local_30[0][3]   //possible issue identified - semgrep
      }
      iVar2 = local_30[0][1];
      if (cVar1 == '\x01') {
joined_r0x00028020:
        if (iVar2 != 0) {
          os_free_mem(param_1);
        }
      }
      else if (iVar2 != 0) {
        iVar2 = local_30[0][2];
        goto joined_r0x00028020;
      }
      os_free_mem(param_1,local_30[0]);
    }
  }
  return;
}