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

{
  uint *puVar1;
  uint local_18;
  uint local_14;
  
  memcpy(&local_18,(void *)(param_3 + 0xc),4)   //possible issue identified - semgrep
  local_18 = (((local_18 >> 0x10) << 0x18 | (local_18 >> 0x18) << 0x10) >> 0x10) +
             ((local_18 & 0xff) << 8 | local_18 >> 8 & 0xff) * 0x10000;
  if ((local_18 & 0xffff0000) == 0x10000000) {
    puVar1 = (uint *)(local_18 | 0xa0000000);
  }
  else {
    local_18 = local_18 & 0xffff;
    if (*(char *)(param_1 + 0xec) != '\0') {
      local_14 = 0;
      goto LAB_000988ac;
    }
    puVar1 = (uint *)(*(int *)(param_1 + 0xdc) + local_18);
  }
  local_14 = *puVar1;
LAB_000988ac:
  local_14 = (((local_14 >> 0x10) << 0x18 | (local_14 >> 0x18) << 0x10) >> 0x10) +
             ((local_14 & 0xff) << 8 | local_14 >> 8 & 0xff) * 0x10000;
  memcpy((void *)(param_3 + 0xe),&local_14,4)   //possible issue identified - semgrep
  ResponseToGUI(param_3,param_2,6,0);
  return 0;
}