undefined4 DO_RACFG_CMD_IO_WRITE(int param_1,undefined4 param_2,int param_3)

{
  uint local_20;
  uint local_1c [2];
  
  memcpy(&local_20,(void *)(param_3 + 0xc),4)   //possible issue identified - semgrep
  memcpy(local_1c,(void *)(param_3 + 0x10),4)   //possible issue identified - semgrep
  local_20 = ((local_20 >> 0x10) << 0x18 | (local_20 >> 0x18) << 0x10) >> 0x10;
  local_1c[0] = (((local_1c[0] >> 0x10) << 0x18 | (local_1c[0] >> 0x18) << 0x10) >> 0x10) +
                ((local_1c[0] & 0xff) << 8 | local_1c[0] >> 8 & 0xff) * 0x10000;
  if (2 < RTDebugLevel) {
    printk("RACFG_CMD_IO_WRITE: offset = %x, value = %x\n");
  }
  if (*(char *)(param_1 + 0xec) == '\0') {
    *(uint *)(*(int *)(param_1 + 0xdc) + local_20) = local_1c[0];
  }
  ResponseToGUI(param_3,param_2,2,0);
  return 0;
}