size_t get_raw_packet(void *param_1,int param_2) //possible issue identified - semgrep
{
ssize_t sVar1;
uint uVar2;
uint uVar3;
uint uVar4;
undefined4 local_258;
undefined4 local_254;
undefined4 local_250;
short local_242;
ushort local_240;
ushort local_23e;
undefined1 auStack_23c [548];
memset(&local_258,0,0x240) //possible issue identified - semgrep
sVar1 = read(param_2,&local_258,0x240) //possible issue identified - semgrep
if (sVar1 < 0) {
usleep(500000);
return 0xffffffff;
}
if (0x1b < sVar1) {
uVar4 = (local_258._2_2_ & 0xff) << 8 | (uint)(local_258._2_2_ >> 8);
if (sVar1 < (int)uVar4) {
return 0xfffffffe;
}
if (local_250._1_1_ != '\x11') {
return 0xfffffffe;
}
if ((char)local_258 != 'E') {
return 0xfffffffe;
}
if (local_242 != 0x4400) {
return 0xfffffffe;
}
if (0x240 < uVar4) {
return 0xfffffffe;
}
if (((local_240 & 0xff) << 8 | (uint)(local_240 >> 8)) != (uVar4 - 0x14 & 0xffff)) {
return 0xfffffffe;
}
uVar3 = local_250 >> 0x10;
local_250 = local_250 & 0xffff;
uVar2 = checksum(&local_258,0x14);
if (uVar2 != uVar3) {
return 0xffffffff;
}
uVar3 = (uint)local_23e;
local_258 = (uint)local_240 << 0x10;
local_250 = 0x1100;
local_23e = 0;
local_254 = 0;
if ((uVar3 != 0) && (uVar2 = checksum(&local_258,uVar4), uVar2 != uVar3)) {
return 0xfffffffe;
}
memcpy(param_1,auStack_23c,uVar4 - 0x1c) //possible issue identified - semgrep
uVar3 = *(uint *)((int)param_1 + 0xec);
if ((uVar3 << 0x18 | uVar3 >> 0x18 | uVar3 >> 8 & 0xff00 | (uVar3 & 0xff00) << 8) == 0x63825363)
{
return uVar4 - 0x1c;
}
}
return 0xfffffffe;
}