void FUN_004053e0(int param_1,int param_2,uint param_3)
{
byte *pbVar1;
char cVar2;
int iVar3;
uint uVar4;
undefined4 uVar5;
char *pcVar6;
param_3 = param_3 & 0xffff;
if (*(char *)(param_2 + 0x18) != -1) {
return;
}
iVar3 = memcmp((void *)(param_2 + 8),(void *)(param_1 + 0x34),0x10);
if (iVar3 != 0) {
iVar3 = memcmp((void *)(param_2 + 8),(void *)(param_1 + 0x44),0x10);
pcVar6 = (char *)(param_2 + 0x28);
if (iVar3 != 0) {
cVar2 = *(char *)(param_2 + 6) //possible issue identified - semgrep
uVar4 = (*(ushort *)(param_2 + 4) & 0xff) << 8 | (uint)(*(ushort *)(param_2 + 4) >> 8);
uVar5 = 0;
while( true ) {
if ((((cVar2 != '\0') && (cVar2 != '+')) && (cVar2 != '<')) && (cVar2 != '3')) {
if (cVar2 == ':') {
FUN_00404e0c(param_1,param_2,param_3,pcVar6,uVar4,uVar5);
return;
}
cVar2 = *(char *)(param_2 + 7) //possible issue identified - semgrep
if (cVar2 != '\0') {
*(char *)(param_2 + 7) = cVar2 + -1;
cVar2 = *(char *)(param_2 + 7) //possible issue identified - semgrep
}
iVar3 = g_conf;
if (cVar2 == '\0') {
uVar4 = *(uint *)(g_conf + 0x80) + 1;
*(uint *)(g_conf + 0x84) =
(uint)(uVar4 < *(uint *)(g_conf + 0x80)) + *(int *)(g_conf + 0x84);
*(uint *)(iVar3 + 0x80) = uVar4;
return;
}
FUN_00402e60(param_1,param_2,param_3);
return;
}
pbVar1 = (byte *)(pcVar6 + 1);
cVar2 = *pcVar6;
pcVar6 = pcVar6 + (*pbVar1 + 1) * 8;
uVar4 = uVar4 + (*pbVar1 + 1) * -8 & 0xffff;
if ((char *)(param_2 + param_3) < pcVar6) break;
uVar5 = 1;
}
pcVar6 = "CORRUPT->DROP (%s): Header chain beyond packet data\n";
uVar5 = 4;
goto LAB_004054e0;
}
}
pcVar6 = "Skipping packet from own host on %s\n";
uVar5 = 7;
LAB_004054e0:
dolog(uVar5,pcVar6,param_1 + 4);
return;
}