int FUN_004651b4(int param_1,undefined4 *param_2,undefined4 param_3,char *param_4,int param_5,
                undefined4 param_6,char param_7,undefined1 *param_8)

{
  char *pcVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  char *pcVar5;
  int iVar6;
  char *pcVar7;
  char *pcVar8;
  char local_78;
  char local_77;
  char local_76;
  char local_75;
  int local_74;
  char *local_70;
  char *local_6c;
  int local_68;
  char *local_64;
  int local_60;
  char *local_5c;
  char *local_58;
  undefined4 local_54;
  uint local_50;
  int *local_4c;
  char *local_48;
  char **local_44;
  int *local_40;
  int *local_3c;
  char *local_38;
  char **local_34;
  char **local_30;
  
  local_76 = '\0';
  if (param_1 == 0) {
    FUN_00433604(0xd,0x6c,0x7d,"tasn_dec.c",0x305);
    return 0;
  }
  if (*param_4 == '\x05') {
    local_74 = param_5;
    param_5 = -1;
  }
  else {
    local_74 = *(int *)(param_4 + 4);
  }
  if (local_74 == -4) {
    if (-1 < param_5) {
      FUN_00433604(0xd,0x6c,0x7f,"tasn_dec.c",0x318);
      return 0;
    }
    if (param_7 != 0) {
      FUN_00433604(0xd,0x6c,0x7e,"tasn_dec.c",0x31e);
      return 0;
    }
    local_6c = (char *)*param_2;
    iVar2 = FUN_00464ecc(0,&local_74,&local_75,0,0,&local_6c,param_3,0xffffffff,0,0,param_8);
    if (iVar2 == 0) {
      uVar3 = 0x327;
      goto LAB_00465298;
    }
    if (local_75 != '\0') {
      local_74 = -3;
    }
  }
  if (param_5 == -1) {
    param_6 = 0;
    param_5 = local_74;
  }
  local_6c = (char *)*param_2;
  iVar2 = FUN_00464ecc(&local_70,0,0,&local_77,&local_78,&local_6c,param_3,param_5,param_6,
                       (int)param_7,param_8);
  if (iVar2 == 0) {
    uVar3 = 0x338;
LAB_00465298:
    FUN_00433604(0xd,0x6c,0x3a,"tasn_dec.c",uVar3);
    return 0;
  }
  if (iVar2 == -1) {
    return -1;
  }
  if (local_74 - 0x10U < 2) {
    if (local_74 == -3) goto LAB_0046564c;
    if (local_78 == '\0') {
      FUN_00433604(0xd,0x6c,0x9c,"tasn_dec.c",0x34c);
      return 0;
    }
LAB_004654f0:
    pcVar7 = (char *)*param_2;
    if (local_77 != '\0') {
      local_75 = local_77;
      local_64 = local_6c;
      if (0 < (int)local_70) {
        local_4c = &local_68;
        local_48 = &local_75;
        local_44 = &local_64;
        iVar4 = 1;
        pcVar8 = local_70;
        do {
          pcVar1 = local_64;
          if (((pcVar8 == (char *)0x1) || (*local_64 != '\0')) ||
             (pcVar5 = local_64 + 2, local_64[1] != '\0')) {
            iVar6 = FUN_00464ecc(local_4c,0,0,local_48,0,local_44,pcVar8,0xffffffff,0,0,0);
            if (iVar6 == 0) {
              FUN_00433604(0xd,0xbe,0x3a,"tasn_dec.c",0x448);
              goto LAB_00465490;
            }
            if (local_75 == '\0') {
              pcVar8 = pcVar1 + ((int)pcVar8 - (int)(local_64 + local_68));
              local_64 = local_64 + local_68;
            }
            else {
              iVar4 = iVar4 + 1;
              pcVar8 = pcVar1 + ((int)pcVar8 - (int)local_64)   //possible issue identified - semgrep
            }
          }
          else {
            iVar4 = iVar4 + -1;
            local_64 = pcVar5;
            if (iVar4 == 0) goto LAB_004655cc;
            pcVar8 = pcVar8 + -2;
          }
        } while (0 < (int)pcVar8);
        if (iVar4 == 0) {
LAB_004655cc:
          local_6c = local_64;
          local_70 = local_64 + -(int)pcVar7;
          goto LAB_00465460;
        }
      }
      FUN_00433604(0xd,0xbe,0x89,"tasn_dec.c",0x453);
      goto LAB_00465490;
    }
    local_58 = (char *)0x0;
    local_6c = local_6c + (int)local_70;
    local_70 = local_6c + -(int)pcVar7;
  }
  else {
    if (local_74 == -3) {
LAB_0046564c:
      if (param_8 != (undefined1 *)0x0) {
        *param_8 = 0;
      }
      goto LAB_004654f0;
    }
    if (local_78 == '\0') {
      pcVar7 = local_6c;
      local_6c = local_6c + (int)local_70;
    }
    else {
      local_50 = (int)local_77 & 1;
      local_5c = (char *)0x0;
      local_54 = 0;
      local_58 = (char *)0x0;
      local_64 = local_6c;
      if (0 < (int)local_70) {
        local_40 = &local_60;
        local_3c = &local_68;
        local_38 = &local_75;
        local_34 = &local_64;
        local_30 = &local_5c;
        pcVar7 = local_6c;
        pcVar8 = local_70;
        do {
          if (((pcVar8 != (char *)0x1) && (*pcVar7 == '\0')) &&
             (local_64 = pcVar7 + 2, pcVar7[1] == '\0')) {
            if (local_50 != 0) goto LAB_004657c0;
            FUN_00433604(0xd,0x6a,0x9f,"tasn_dec.c",0x479);
            goto LAB_00465490;
          }
          local_64 = pcVar7;
          iVar6 = FUN_00464ecc(local_40,0,0,local_3c,local_38,local_34,pcVar8,0xffffffff,0,0,0);
          pcVar1 = local_5c;
          iVar4 = local_60;
          if (iVar6 == 0) {
            FUN_00433604(0xd,0x6a,0x3a,"tasn_dec.c",0x483);
            goto LAB_00465490;
          }
          if (local_75 != '\0') {
            FUN_00433604(0xd,0x6a,0xc5,"tasn_dec.c",0x48e);
            goto LAB_00465490;
          }
          iVar6 = FUN_0045c090(local_30,local_5c + local_60);
          if (iVar6 == 0) {
            FUN_00433604(0xd,0x8c,0x41,"tasn_dec.c",0x4a7);
            goto LAB_00465490;
          }
          FUN_00483c90(local_58 + (int)pcVar1,local_64,iVar4);
          local_64 = local_64 + iVar4;
          pcVar8 = pcVar7 + ((int)pcVar8 - (int)local_64)   //possible issue identified - semgrep
          pcVar7 = local_64;
        } while (0 < (int)pcVar8);
      }
      if (local_50 != 0) {
        FUN_00433604(0xd,0x6a,0x89,"tasn_dec.c",0x498);
        goto LAB_00465490;
      }
LAB_004657c0:
      pcVar7 = local_5c;
      local_6c = local_64;
      iVar4 = FUN_0045c090(&local_5c,local_5c + 1);
      if (iVar4 == 0) {
        FUN_00433604(0xd,0x6c,0x41,"tasn_dec.c",0x371);
        return 0;
      }
      local_58[(int)pcVar7] = '\0';
      local_76 = '\x01';
      local_70 = pcVar7;
      pcVar7 = local_58;
    }
  }
LAB_00465460:
  iVar4 = FUN_00464afc(param_1,pcVar7,local_70,local_74,&local_76,param_4);
  if (iVar4 != 0) {
    iVar2 = 1;
    *param_2 = local_6c;
  }
LAB_00465490:
  if (local_76 == '\0') {
    return iVar2;
  }
  if (local_58 == (char *)0x0) {
    return iVar2;
  }
  FUN_0043a484();
  return iVar2;
}