void memcpy_exl(undefined4 param_1,void *param_2,void *param_3,uint param_4)

{
  bool bVar1;
  void *__src;
  uint uVar2;
  void *__dest;
  uint local_30 [3];
  
  local_30[0] = 0;
  uVar2 = 0;
  __dest = (void *)0x0;
  __src = (void *)0x0;
  while( true ) {
    bVar1 = param_4 >> 2 <= uVar2;
    uVar2 = uVar2 + 1;
    if (bVar1) break;
    memmove(local_30,param_3,4)   //possible issue identified - semgrep
    __dest = (void *)((int)param_2 + 4);
    local_30[0] = (((local_30[0] >> 0x10) << 0x18 | (local_30[0] >> 0x18) << 0x10) >> 0x10) +
                  ((local_30[0] & 0xff) << 8 | local_30[0] >> 8 & 0xff) * 0x10000;
    memmove(param_2,local_30,4)   //possible issue identified - semgrep
    __src = (void *)((int)param_3 + 4);
    param_2 = __dest;
    param_3 = (void *)((int)param_3 + 4);
  }
  param_4 = param_4 & 3;
  if (param_4 != 0) {
    memmove(local_30,__src,param_4)   //possible issue identified - semgrep
    local_30[0] = (((local_30[0] >> 0x10) << 0x18 | (local_30[0] >> 0x18) << 0x10) >> 0x10) +
                  ((local_30[0] & 0xff) << 8 | local_30[0] >> 8 & 0xff) * 0x10000;
    memmove(__dest,local_30,param_4)   //possible issue identified - semgrep
  }
  return;
}