undefined4 GetPacketFromRxRing(undefined4 *param_1,void *param_2,undefined4 param_3,int *param_4)

{
  int iVar1;
  uint uVar2;
  uint uVar3;
  bool bVar4;
  int iVar5;
  undefined4 uVar6;
  undefined4 *__src;
  undefined4 local_30;
  undefined4 local_2c [2];
  
  local_bh_disable();
  if (*param_4 == 0) {
    if (*(char *)(param_1 + 0x3b) == '\0') {
      param_1[0x12a3] = *(undefined4 *)(param_1[0x37] + 0x1000);
      param_1[0x12a3] = *(undefined4 *)(param_1[0x37] + 0x29c);
    }
    else {
      param_1[0x12a3] = 0;
    }
    uVar3 = param_1[0x12a4];
    uVar2 = param_1[0x12a3];
    if (uVar3 == uVar2) {
      uVar6 = 0;
      bVar4 = false;
      goto LAB_000567ac;
    }
    if (uVar3 < uVar2) {
      iVar5 = uVar2 - uVar3;
    }
    else {
      iVar5 = (uVar2 + 0x80) - uVar3;
    }
    *param_4 = iVar5;
    iVar5 = param_1[0x12a4];
  }
  else {
    iVar5 = param_1[0x12a4];
  }
  __src = (undefined4 *)param_1[iVar5 * 8 + 0xea3];
  if ((*(byte *)((int)__src + 7) & 0x80) == 0) {
    *param_4 = 0;
    uVar6 = 0;
    bVar4 = true;
  }
  else {
    memmove(param_2,__src,0x10)   //possible issue identified - semgrep
    iVar1 = RTMP_AllocateRxPacketBuffer(param_1,*(undefined4 *)*param_1,0xf00,0,&local_30,local_2c);
    if (iVar1 != 0) {
      linux_pci_unmap_single
                (*(undefined4 *)*param_1,param_1[(iVar5 + 0x1d5) * 8 + 1],param_1[iVar5 * 8 + 0xea7]
                 ,0xff01);
      param_1[iVar5 * 8 + 0xea8] = local_30;
      param_1[iVar5 * 8 + 0xea7] = 0xf00;
      param_1[(iVar5 + 0x1d5) * 8 + 1] = local_2c[0];
      uVar6 = param_1[iVar5 * 8 + 0xea5];
      param_1[iVar5 * 8 + 0xea5] = iVar1;
      *__src = local_2c[0];
    }
    else {
      uVar6 = 0;
    }
    bVar4 = iVar1 == 0;
    *(byte *)((int)__src + 7) = *(byte *)((int)__src + 7) & 0x7f;
    *param_4 = *param_4 + -1;
    iVar1 = (param_1[0x12a4] + 1) % 0x80;
    iVar5 = 0x7f;
    if (iVar1 != 0) {
      iVar5 = iVar1 + -1;
    }
    param_1[0x12a4] = iVar1;
    param_1[0x12a2] = iVar5;
    if (*(char *)(param_1 + 0x3b) == '\0') {
      *(int *)(param_1[0x37] + 0x298) = iVar5;
    }
  }
LAB_000567ac:
  local_bh_enable();
  *(bool *)param_3 = bVar4;
  return uVar6;
}