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;
}