void FUN_004044e0(undefined4 *param_1,void *param_2,void *param_3,int param_4)
{
uint uVar1;
int iVar2;
undefined1 local_78 [4];
ushort local_74;
undefined1 local_72;
undefined1 local_71;
undefined1 auStack_70 [16];
undefined1 local_60;
undefined1 local_5f;
undefined1 local_51;
undefined1 local_50;
undefined1 local_4f;
undefined1 local_4e;
undefined1 local_4d;
undefined2 local_4c;
undefined1 local_4a;
undefined1 local_49;
undefined1 local_48 [2];
undefined2 local_46;
undefined2 local_44;
undefined1 auStack_40 [16];
undefined4 local_30;
undefined1 auStack_2c [20];
if (param_1[0x22] == 0) {
memset(local_78,0,0x5c) //possible issue identified - semgrep
local_78[0] = 0x60;
local_72 = 0;
local_71 = 1;
memcpy(auStack_70,param_1 + 0xd,0x10) //possible issue identified - semgrep
local_60 = 0xff;
local_50 = 0x3a;
local_4e = 5;
local_48[0] = 0x82;
local_4d = 2;
local_4a = 1;
local_44 = 0xd007;
local_5f = 2;
local_51 = 1;
local_4f = 0;
local_4c = 0;
local_49 = 0;
memcpy(auStack_40,param_2,0x10) //possible issue identified - semgrep
iVar2 = 0x48;
if (*(int *)(g_conf + 0x2c) == 0) {
if (param_3 == (void *)0x0) {
local_30 = local_30 & 0xffff;
iVar2 = 0x4c;
}
else {
local_30 = CONCAT22(0x100,(undefined2)local_30);
memcpy(auStack_2c,param_3,0x10) //possible issue identified - semgrep
iVar2 = 0x5c;
}
uVar1 = local_30 & 0xfffffff0;
local_30._2_2_ = (ushort)(uVar1 >> 0x10);
local_30._0_2_ = CONCAT11(0x7d,(byte)uVar1 | (param_4 != 0) << 3 | 2);
}
uVar1 = iVar2 - 0x28U & 0xffff;
local_74 = (ushort)(uVar1 << 8) | (ushort)(uVar1 >> 8);
local_46 = FUN_004011e0(local_78,0x3a,local_48,iVar2 - 0x30U & 0xfffc);
if (*(int *)(g_conf + 0x2c) == 0) {
dolog(7,"Sending MLDv2 Query on %s/%u with %u sources\n",param_1 + 1,*param_1,
(local_30._2_2_ & 0xff) << 8 | (uint)(local_30._2_2_ >> 8));
}
else {
dolog(7,"Sending MLDv1 Query on %s/%u\n");
}
FUN_00402b0c(0,param_1,local_78,iVar2);
iVar2 = g_conf;
uVar1 = *(uint *)(g_conf + 0x78) + 1;
*(uint *)(g_conf + 0x7c) = (uint)(uVar1 < *(uint *)(g_conf + 0x78)) + *(int *)(g_conf + 0x7c);
*(uint *)(iVar2 + 0x78) = uVar1;
uVar1 = param_1[0x20] + 1;
param_1[0x21] = (uint)(uVar1 < (uint)param_1[0x20]) + param_1[0x21];
param_1[0x20] = uVar1;
}
return;
}