/* WARNING: Removing unreachable block (ram,0x004127d8) */

undefined4 configure_pool(int *param_1)

{
  byte *pbVar1;
  byte bVar2;
  undefined4 uVar3;
  undefined4 uVar4;
  undefined4 *__ptr;
  int *piVar5;
  int iVar6;
  byte *pbVar7;
  undefined4 uVar8;
  char *pcVar9;
  byte *pbVar10;
  
  dprintf(7,"configure_pool","called");
  if (param_1 != (int *)0x0) {
    do {
      piVar5 = (int *)param_1[3];
      if (piVar5 == (int *)0x0) {
LAB_004127ac:
        iVar6 = param_1[2];
        pcVar9 = "%s:%d pool \'%s\' has no range declaration";
LAB_00412598:
        dprintf(3,"configure_pool",pcVar9,configfilename,iVar6);
        return 0xffffffff;
      }
      do {
        if (piVar5[2] != 10) {
          iVar6 = piVar5[3];
          pcVar9 = "%s:%d invalid pool configuration";
          goto LAB_00412598;
        }
        pbVar10 = (byte *)piVar5[7];
        piVar5 = (int *)*piVar5;
      } while (piVar5 != (int *)0x0);
      if (pbVar10 == (byte *)0x0) goto LAB_004127ac;
      pcVar9 = (char *)param_1[1];
      if (pcVar9 == (char *)0x0) {
LAB_00412604:
        dprintf(3,"configure_pool","faled to craete pool \'%s\'",pcVar9);
        return 0xffffffff;
      }
      uVar3 = in6addr2str(pbVar10,0);
      uVar4 = in6addr2str(pbVar10 + 0x10,0);
      dprintf(7,"create_pool","name=%s, range=%s->%s",pcVar9,uVar3,uVar4);
      iVar6 = 0;
      pbVar7 = pbVar10;
      do {
        bVar2 = *pbVar7;
        pbVar1 = pbVar7 + 0x10;
        iVar6 = iVar6 + 1;
        pbVar7 = pbVar7 + 1;
        if (bVar2 != *pbVar1) {
          if (*pbVar1 < bVar2) {
            uVar3 = in6addr2str(pbVar10,0);
            uVar8 = in6addr2str(pbVar10 + 0x10,0);
            dprintf(3,"create_pool","invalid address range %s->%s",uVar3,uVar8,uVar4);
            pcVar9 = (char *)param_1[1];
            goto LAB_00412604;
          }
          break;
        }
      } while (iVar6 != 0x10);
      __ptr = (undefined4 *)malloc(0x28)   //possible issue identified - semgrep
      if (__ptr == (undefined4 *)0x0) {
        dprintf(3,"create_pool","memory allocation failed");
        pcVar9 = (char *)param_1[1];
        goto LAB_00412604;
      }
      pcVar9 = strdup(pcVar9);
      __ptr[1] = pcVar9;
      if (pcVar9 == (char *)0x0) {
        dprintf(3,"create_pool","memory allocation failed");
        free(__ptr);
        pcVar9 = (char *)param_1[1];
        goto LAB_00412604;
      }
      uVar3 = *(undefined4 *)(pbVar10 + 4);
      uVar4 = *(undefined4 *)(pbVar10 + 8);
      uVar8 = *(undefined4 *)(pbVar10 + 0xc);
      __ptr[2] = *(undefined4 *)pbVar10;
      __ptr[3] = uVar3;
      __ptr[4] = uVar4;
      __ptr[5] = uVar8;
      uVar8 = *(undefined4 *)(pbVar10 + 0x1c);
      uVar3 = *(undefined4 *)(pbVar10 + 0x14);
      uVar4 = *(undefined4 *)(pbVar10 + 0x18);
      __ptr[6] = *(undefined4 *)(pbVar10 + 0x10);
      __ptr[7] = uVar3;
      __ptr[8] = uVar4;
      __ptr[9] = uVar8;
      param_1 = (int *)*param_1;
      *__ptr = DAT_0043cd9c;
      DAT_0043cd9c = __ptr;
    } while (param_1 != (int *)0x0);
  }
  return 0;
}