undefined4 qrec_process(undefined4 param_1,undefined4 param_2,undefined4 param_3,int param_4)

{
  ushort uVar1;
  ushort uVar2;
  char *__dest;
  size_t sVar3;
  uint uVar4;
  byte *pbVar5;
  byte *__src;
  undefined4 *puVar6;
  undefined4 uVar7;
  char *__s;
  int iVar8;
  int iVar9;
  size_t sVar10;
  byte *pbVar11;
  int iVar12;
  
  pbVar11 = (byte *)(param_4 + 0xc);
  iVar9 = 0;
  pbVar5 = pbVar11;
  while( true ) {
    uVar4 = (uint)*pbVar5;
    pbVar5 = pbVar5 + uVar4 + 1;
    if (uVar4 == 0) break;
    iVar9 = iVar9 + uVar4 + (uint)(*pbVar5 != 0);
  }
  sVar10 = iVar9 + 1   //possible issue identified - semgrep
  __dest = (char *)malloc(sVar10)   //possible issue identified - semgrep
  memset(__dest,0,sVar10);
  memset(__dest,0,sVar10);
  iVar8 = 0;
  pbVar5 = pbVar11;
  do {
    sVar3 = (size_t)*pbVar5;
    do {
      __src = pbVar5 + 1;
      pbVar5 = pbVar5 + sVar3 + 1;
      if (sVar3 == 0) {
        iVar12 = iVar8 + 1;
        verbose(">> %s: offset=%u, namestr=\"%s\", namesize=%u, memsize=%u\n","name_process",iVar12,
                __dest,iVar9,sVar10);
        uVar1 = *(ushort *)(pbVar11 + iVar12);
        uVar2 = *(ushort *)(pbVar11 + iVar8 + 3);
        verbose(">> %s: received query name=\"%s\" (%u), qtype=%#x, qclass=%#x \n","qrec_process",
                __dest,iVar9,(uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8),
                (uVar2 & 0xff) << 8 | (uint)(uVar2 >> 8));
        verbose(
               ">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n"
               );
        puVar6 = &o_name;
        sVar10 = strlen(__dest);
        goto LAB_004032b8;
      }
      iVar8 = iVar8 + sVar3 + 1   //possible issue identified - semgrep
      strncat(__dest,(char *)__src,sVar3)   //possible issue identified - semgrep
      sVar3 = (size_t)*pbVar5;
    } while (sVar3 == 0);
    strcat(__dest,".")   //possible issue identified - semgrep
  } while( true );
LAB_004032b8:
  do {
    __s = (char *)*puVar6;
    sVar3 = strlen(__s);
    puVar6 = puVar6 + 1;
    if (sVar10 == sVar3) {
      iVar9 = strncmp(__s,__dest,sVar10)   //possible issue identified - semgrep
      if (iVar9 == 0) {
        uVar1 = *(ushort *)(pbVar11 + iVar8 + 3);
        uVar7 = 0xffffffff;
        if ((((uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8)) == 1) &&
           (((uVar1 = *(ushort *)(pbVar11 + iVar12),
             uVar4 = (uVar1 & 0xff) << 8 | (uint)(uVar1 >> 8), uVar4 == 1 || (uVar4 == 0x1c)) ||
            (uVar4 == 0xff)))) {
          FUN_00402594(param_1,param_2,param_3,param_4,iVar12,uVar4);
          verbose("\n");
          uVar7 = 0;
        }
        goto LAB_00403398;
      }
    }
  } while (puVar6 != (undefined4 *)&_end);
  uVar7 = 0xffffffff;
LAB_00403398:
  if (__dest != (char *)0x0) {
    free(__dest);
  }
  return uVar7;
}