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

{
  char cVar1;
  uint uVar2;
  uint uVar3;
  ushort local_38 [2];
  uint local_34;
  undefined4 local_30 [2];
  
  memcpy(&local_34,(void *)(param_3 + 0xc),4)   //possible issue identified - semgrep
  local_34 = (((local_34 >> 0x10) << 0x18 | (local_34 >> 0x18) << 0x10) >> 0x10) +
             ((local_34 & 0xff) << 8 | local_34 >> 8 & 0xff) * 0x10000;
  memcpy(local_38,(void *)(param_3 + 0x10),2)   //possible issue identified - semgrep
  local_38[0] = (ushort)((local_38[0] & 0xff) << 8) | local_38[0] >> 8;
  uVar2 = 0;
  while( true ) {
    uVar3 = uVar2;
    if (local_38[0] <= uVar3) break;
    memcpy_exl(param_1,local_30,param_3 + uVar3 + 0x12,4);
    if (RTDebugLevel < 3) {
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    else {
      printk("Write %x %x\n",uVar3 + local_34,local_30[0]);
      cVar1 = *(char *)(param_1 + 0xec)   //possible issue identified - semgrep
    }
    uVar2 = uVar3 + 4;
    if (cVar1 == '\0') {
      *(undefined4 *)(*(int *)(param_1 + 0xdc) + (uVar3 + local_34 & 0xffff)) = local_30[0];
    }
  }
  ResponseToGUI(param_3,param_2,2,0);
  return 0;
}