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